Commit 26985a0aba1f0df26856217799010976cc04650b
1 parent
27863bc3
feat(#35): fixed toolbar
Showing
3 changed files
with
107 additions
and
27 deletions
front-end/h5/package.json
front-end/h5/src/components/core/editor/index.js
| ... | ... | @@ -29,6 +29,53 @@ const sidebarMenus = [ |
| 29 | 29 | antIcon: 'appstore' |
| 30 | 30 | } |
| 31 | 31 | ] |
| 32 | + | |
| 33 | +const fixedTools = [ | |
| 34 | + { | |
| 35 | + 'tooltip': '撤消', // TODO 支持快捷键 | |
| 36 | + 'text': '撤消', | |
| 37 | + 'icon': 'mail-reply', | |
| 38 | + 'action': () => undoRedoHistory.undo() | |
| 39 | + }, | |
| 40 | + { | |
| 41 | + 'tooltip': '恢复', | |
| 42 | + 'text': '恢复', | |
| 43 | + 'icon': 'mail-forward', | |
| 44 | + 'action': () => undoRedoHistory.redo() | |
| 45 | + }, | |
| 46 | + { | |
| 47 | + 'tooltip': '刷新预览', | |
| 48 | + 'text': '刷新预览', | |
| 49 | + 'icon': 'eye', | |
| 50 | + 'action': function () { this.previewVisible = true } | |
| 51 | + }, | |
| 52 | + { | |
| 53 | + 'tooltip': '复制当前页', | |
| 54 | + 'text': '复制当前页', | |
| 55 | + 'icon': 'copy', | |
| 56 | + 'action': function () { this.pageManager({ type: 'copy' }) } | |
| 57 | + }, | |
| 58 | + { | |
| 59 | + 'tooltip': '导入PSD', | |
| 60 | + 'text': 'Ps', | |
| 61 | + 'icon': '', | |
| 62 | + 'action': '', | |
| 63 | + 'disabled': true | |
| 64 | + }, | |
| 65 | + { | |
| 66 | + 'tooltip': '放大画布', | |
| 67 | + 'text': '放大画布', | |
| 68 | + 'icon': 'plus', | |
| 69 | + 'action': function () { this.scaleRate += 0.25 } | |
| 70 | + }, | |
| 71 | + { | |
| 72 | + 'tooltip': '缩小画布', | |
| 73 | + 'text': '缩小画布', | |
| 74 | + 'icon': 'minus', | |
| 75 | + 'action': function () { this.scaleRate -= 0.25 } | |
| 76 | + } | |
| 77 | +] | |
| 78 | + | |
| 32 | 79 | export default { |
| 33 | 80 | name: 'Editor', |
| 34 | 81 | components: {}, |
| ... | ... | @@ -36,7 +83,8 @@ export default { |
| 36 | 83 | activeMenuKey: 'pluginList', |
| 37 | 84 | isPreviewMode: false, |
| 38 | 85 | activeTabKey: '属性', |
| 39 | - previewVisible: false | |
| 86 | + previewVisible: false, | |
| 87 | + scaleRate: 1 | |
| 40 | 88 | }), |
| 41 | 89 | computed: { |
| 42 | 90 | ...mapState('editor', { |
| ... | ... | @@ -145,16 +193,17 @@ export default { |
| 145 | 193 | <a-layout-content style={{ padding: '24px', margin: 0, minHeight: '280px' }}> |
| 146 | 194 | <div style="text-align: center;"> |
| 147 | 195 | <a-radio-group |
| 196 | + size="small" | |
| 148 | 197 | value={this.isPreviewMode} |
| 149 | 198 | onInput={value => { |
| 150 | 199 | this.isPreviewMode = value |
| 151 | 200 | }} |
| 152 | 201 | > |
| 153 | - <a-radio-button label={false} value={false}>Edit</a-radio-button> | |
| 154 | - <a-radio-button label={true} value={true}>Preview</a-radio-button> | |
| 202 | + <a-radio-button label={false} value={false}>编辑模式</a-radio-button> | |
| 203 | + <a-radio-button label={true} value={true}>预览模式</a-radio-button> | |
| 155 | 204 | </a-radio-group> |
| 156 | 205 | </div> |
| 157 | - <div class='canvas-wrapper'> | |
| 206 | + <div class='canvas-wrapper' style={{ transform: `scale(${this.scaleRate})` }}> | |
| 158 | 207 | {/* { this.isPreviewMode ? this.renderPreview(h, this.elements) : this.renderCanvas(h, this.elements) } */} |
| 159 | 208 | { this.isPreviewMode |
| 160 | 209 | ? <RenderPreviewCanvas elements={this.elements}/> |
| ... | ... | @@ -165,6 +214,23 @@ export default { |
| 165 | 214 | </div> |
| 166 | 215 | </a-layout-content> |
| 167 | 216 | </a-layout> |
| 217 | + <a-layout-sider width="40" theme='light' style={{ background: '#fff', border: '1px solid #eee' }}> | |
| 218 | + {/* <div> | |
| 219 | + <a-button shape="circle" icon="search" type="link" /> | |
| 220 | + </div> */} | |
| 221 | + <a-button-group style={{ display: 'flex', flexDirection: 'column' }}> | |
| 222 | + { | |
| 223 | + fixedTools.map(tool => ( | |
| 224 | + <a-tooltip effect="dark" placement="left" title={tool.tooltip}> | |
| 225 | + <a-button block class="transparent-bg" type="link" size="small" style={{ height: '40px', color: '#000' }} onClick={() => tool.action && tool.action.call(this) } disabled={!!tool.disabled}> | |
| 226 | + { tool.icon ? <i class={['shortcut-icon', 'fa', `fa-${tool.icon}`]} aria-hidden='true'/> : tool.text } | |
| 227 | + </a-button> | |
| 228 | + </a-tooltip> | |
| 229 | + )) | |
| 230 | + } | |
| 231 | + <div style={{ fontSize: '12px', textAlign: 'center' }}>{this.scaleRate * 100}%</div> | |
| 232 | + </a-button-group> | |
| 233 | + </a-layout-sider> | |
| 168 | 234 | <a-layout-sider width="340" theme='light' style={{ background: '#fff', padding: '0 12px' }}> |
| 169 | 235 | <a-tabs |
| 170 | 236 | style="height: 100%;" |
| ... | ... | @@ -190,6 +256,7 @@ export default { |
| 190 | 256 | <a-tab-pane label="脚本" key='脚本' tab='脚本'><RenderScriptEditor/></a-tab-pane> |
| 191 | 257 | </a-tabs> |
| 192 | 258 | </a-layout-sider> |
| 259 | + | |
| 193 | 260 | </a-layout> |
| 194 | 261 | { |
| 195 | 262 | this.previewVisible && <PreviewDialog work={this.work} visible={this.previewVisible} handleClose={() => { this.previewVisible = false }} /> | ... | ... |
front-end/h5/yarn.lock
| ... | ... | @@ -2,18 +2,25 @@ |
| 2 | 2 | # yarn lockfile v1 |
| 3 | 3 | |
| 4 | 4 | |
| 5 | -"@ant-design/icons-vue@^1.0.1": | |
| 6 | - version "1.0.1" | |
| 7 | - resolved "https://registry.npm.taobao.org/@ant-design/icons-vue/download/@ant-design/icons-vue-1.0.1.tgz#343579219c04190831c9ca3826aec7361bb8b4d4" | |
| 8 | - integrity sha1-NDV5IZwEGQgxyco4Jq7HNhu4tNQ= | |
| 5 | +"@ant-design/colors@^3.1.0": | |
| 6 | + version "3.1.0" | |
| 7 | + resolved "https://registry.npm.taobao.org/@ant-design/colors/download/@ant-design/colors-3.1.0.tgz#b7e2cc61a4e86d3d109494034acfb1222dacaa3c" | |
| 8 | + integrity sha1-t+LMYaTobT0QlJQDSs+xIi2sqjw= | |
| 9 | + dependencies: | |
| 10 | + tinycolor2 "^1.4.1" | |
| 11 | + | |
| 12 | +"@ant-design/icons-vue@^2.0.0": | |
| 13 | + version "2.0.0" | |
| 14 | + resolved "https://registry.npm.taobao.org/@ant-design/icons-vue/download/@ant-design/icons-vue-2.0.0.tgz#0357f5010a404e9f34a87a4b41b2a08df691dbce" | |
| 15 | + integrity sha1-A1f1AQpATp80qHpLQbKgjfaR284= | |
| 9 | 16 | dependencies: |
| 10 | - ant-design-palettes "^1.1.3" | |
| 17 | + "@ant-design/colors" "^3.1.0" | |
| 11 | 18 | babel-runtime "^6.26.0" |
| 12 | 19 | |
| 13 | -"@ant-design/icons@^1.1.15": | |
| 14 | - version "1.2.1" | |
| 15 | - resolved "https://registry.npm.taobao.org/@ant-design/icons/download/@ant-design/icons-1.2.1.tgz#8e19301b1433ec67d6bbd0e892782e2ade561ff9" | |
| 16 | - integrity sha1-jhkwGxQz7GfWu9DoknguKt5WH/k= | |
| 20 | +"@ant-design/icons@^2.1.1": | |
| 21 | + version "2.1.1" | |
| 22 | + resolved "https://registry.npm.taobao.org/@ant-design/icons/download/@ant-design/icons-2.1.1.tgz#7b9c08dffd4f5d41db667d9dbe5e0107d0bd9a4a" | |
| 23 | + integrity sha1-e5wI3/1PXUHbZn2dvl4BB9C9mko= | |
| 17 | 24 | |
| 18 | 25 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": |
| 19 | 26 | version "7.0.0" |
| ... | ... | @@ -1404,20 +1411,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: |
| 1404 | 1411 | dependencies: |
| 1405 | 1412 | color-convert "^1.9.0" |
| 1406 | 1413 | |
| 1407 | -ant-design-palettes@^1.1.3: | |
| 1408 | - version "1.1.3" | |
| 1409 | - resolved "https://registry.npm.taobao.org/ant-design-palettes/download/ant-design-palettes-1.1.3.tgz#84119b1a4d86363adc52a38d587e65336a0a27dd" | |
| 1410 | - integrity sha1-hBGbGk2GNjrcUqONWH5lM2oKJ90= | |
| 1411 | - dependencies: | |
| 1412 | - tinycolor2 "^1.4.1" | |
| 1413 | - | |
| 1414 | -ant-design-vue@^1.3.10: | |
| 1415 | - version "1.3.10" | |
| 1416 | - resolved "https://registry.npm.taobao.org/ant-design-vue/download/ant-design-vue-1.3.10.tgz#82813f90888f77dd0e56c8a71e14efa0f8d8e3da" | |
| 1417 | - integrity sha1-goE/kIiPd90OVsinHhTvoPjY49o= | |
| 1414 | +ant-design-vue@^1.3.14: | |
| 1415 | + version "1.3.14" | |
| 1416 | + resolved "https://registry.npm.taobao.org/ant-design-vue/download/ant-design-vue-1.3.14.tgz#4bef079ec7a74e79a20c5c4fab7b0ab7fb3568fc" | |
| 1417 | + integrity sha1-S+8HnsenTnmiDFxPq3sKt/s1aPw= | |
| 1418 | 1418 | dependencies: |
| 1419 | - "@ant-design/icons" "^1.1.15" | |
| 1420 | - "@ant-design/icons-vue" "^1.0.1" | |
| 1419 | + "@ant-design/icons" "^2.1.1" | |
| 1420 | + "@ant-design/icons-vue" "^2.0.0" | |
| 1421 | 1421 | add-dom-event-listener "^1.0.2" |
| 1422 | 1422 | array-tree-filter "^2.1.0" |
| 1423 | 1423 | async-validator "^1.8.2" |
| ... | ... | @@ -1436,6 +1436,7 @@ ant-design-vue@^1.3.10: |
| 1436 | 1436 | lodash "^4.17.5" |
| 1437 | 1437 | moment "^2.21.0" |
| 1438 | 1438 | mutationobserver-shim "^0.3.2" |
| 1439 | + node-emoji "^1.10.0" | |
| 1439 | 1440 | omit.js "^1.0.0" |
| 1440 | 1441 | raf "^3.4.0" |
| 1441 | 1442 | resize-observer-polyfill "^1.5.1" |
| ... | ... | @@ -6804,6 +6805,11 @@ lodash.templatesettings@^4.0.0: |
| 6804 | 6805 | dependencies: |
| 6805 | 6806 | lodash._reinterpolate "^3.0.0" |
| 6806 | 6807 | |
| 6808 | +lodash.toarray@^4.4.0: | |
| 6809 | + version "4.4.0" | |
| 6810 | + resolved "https://registry.npm.taobao.org/lodash.toarray/download/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" | |
| 6811 | + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= | |
| 6812 | + | |
| 6807 | 6813 | lodash.transform@^4.6.0: |
| 6808 | 6814 | version "4.6.0" |
| 6809 | 6815 | resolved "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" |
| ... | ... | @@ -7321,6 +7327,13 @@ node-cache@^4.1.1: |
| 7321 | 7327 | clone "2.x" |
| 7322 | 7328 | lodash "4.x" |
| 7323 | 7329 | |
| 7330 | +node-emoji@^1.10.0: | |
| 7331 | + version "1.10.0" | |
| 7332 | + resolved "https://registry.npm.taobao.org/node-emoji/download/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" | |
| 7333 | + integrity sha1-iIar0l2ce7YYAqZYUj0fjSqJsto= | |
| 7334 | + dependencies: | |
| 7335 | + lodash.toarray "^4.4.0" | |
| 7336 | + | |
| 7324 | 7337 | node-eta@^0.1.1: |
| 7325 | 7338 | version "0.1.1" |
| 7326 | 7339 | resolved "https://registry.npm.taobao.org/node-eta/download/node-eta-0.1.1.tgz#4066109b39371c761c72b7ebda9a9ea0a5de121f" | ... | ... |