From 63c61caccc99873868f02ccf7875ae6f1ce1d4a8 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 11 Oct 2022 20:25:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20editor=E4=BD=BF=E7=94=A8tmagic-?= =?UTF-8?q?design?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #401 --- packages/design/src/Card.vue | 2 + packages/design/src/Collapse.vue | 30 +++++ packages/design/src/CollapseItem.vue | 34 +++++ packages/design/src/Dialog.vue | 1 + packages/design/src/Divider.vue | 21 +++ packages/design/src/Dropdown.vue | 41 ++++++ packages/design/src/DropdownItem.vue | 22 +++ packages/design/src/DropdownMenu.vue | 17 +++ packages/design/src/Form.vue | 4 +- packages/design/src/OptionGroup.vue | 6 +- packages/design/src/Popover.vue | 7 +- packages/design/src/Scrollbar.vue | 17 +++ packages/design/src/Select.vue | 2 +- packages/design/src/TabPane.vue | 4 + packages/design/src/Table.vue | 6 +- packages/design/src/Tooltip.vue | 3 + packages/design/src/Tree.vue | 127 ++++++++++++++++++ packages/design/src/Upload.vue | 2 +- packages/design/src/index.ts | 28 +++- packages/design/src/type.ts | 1 + packages/editor/package.json | 4 +- .../editor/src/components/ContentMenu.vue | 4 +- packages/editor/src/components/Icon.vue | 10 +- packages/editor/src/components/ToolButton.vue | 43 ++++-- packages/editor/src/fields/CodeSelect.vue | 12 +- packages/editor/src/fields/UISelect.vue | 15 ++- packages/editor/src/layouts/AddPageBox.vue | 3 +- packages/editor/src/layouts/Framework.vue | 5 +- packages/editor/src/layouts/PropsPanel.vue | 11 +- .../layouts/sidebar/ComponentListPanel.vue | 24 ++-- .../editor/src/layouts/sidebar/LayerPanel.vue | 20 +-- .../editor/src/layouts/sidebar/Sidebar.vue | 6 +- .../editor/src/layouts/sidebar/TabPane.vue | 6 +- .../sidebar/code-block/CodeBlockEditor.vue | 37 ++--- .../sidebar/code-block/CodeBlockList.vue | 38 +++--- .../editor/src/layouts/workspace/PageBar.vue | 21 +-- packages/element-plus-adapter/src/index.ts | 54 ++++++++ packages/table/package.json | 2 - pnpm-lock.yaml | 6 +- 39 files changed, 558 insertions(+), 138 deletions(-) create mode 100644 packages/design/src/Collapse.vue create mode 100644 packages/design/src/CollapseItem.vue create mode 100644 packages/design/src/Divider.vue create mode 100644 packages/design/src/Dropdown.vue create mode 100644 packages/design/src/DropdownItem.vue create mode 100644 packages/design/src/DropdownMenu.vue create mode 100644 packages/design/src/Scrollbar.vue create mode 100644 packages/design/src/Tree.vue diff --git a/packages/design/src/Card.vue b/packages/design/src/Card.vue index 59cf0d59..9503776e 100644 --- a/packages/design/src/Card.vue +++ b/packages/design/src/Card.vue @@ -15,6 +15,8 @@ import { getConfig } from './config'; const props = defineProps<{ bodyStyle?: Record; + shadow?: string; + header?: string; }>(); const uiComponent = getConfig('components').card; diff --git a/packages/design/src/Collapse.vue b/packages/design/src/Collapse.vue new file mode 100644 index 00000000..8a145d04 --- /dev/null +++ b/packages/design/src/Collapse.vue @@ -0,0 +1,30 @@ + + + diff --git a/packages/design/src/CollapseItem.vue b/packages/design/src/CollapseItem.vue new file mode 100644 index 00000000..f2b3b111 --- /dev/null +++ b/packages/design/src/CollapseItem.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/design/src/Dialog.vue b/packages/design/src/Dialog.vue index 67a82efe..09c246e0 100644 --- a/packages/design/src/Dialog.vue +++ b/packages/design/src/Dialog.vue @@ -16,6 +16,7 @@ import { getConfig } from './config'; const props = defineProps<{ modelValue?: boolean; appendToBody?: boolean; + beforeClose?: any; title?: string; width?: string | number; fullscreen?: boolean; diff --git a/packages/design/src/Divider.vue b/packages/design/src/Divider.vue new file mode 100644 index 00000000..0d3da3ff --- /dev/null +++ b/packages/design/src/Divider.vue @@ -0,0 +1,21 @@ + + + diff --git a/packages/design/src/Dropdown.vue b/packages/design/src/Dropdown.vue new file mode 100644 index 00000000..3e45f512 --- /dev/null +++ b/packages/design/src/Dropdown.vue @@ -0,0 +1,41 @@ + + + diff --git a/packages/design/src/DropdownItem.vue b/packages/design/src/DropdownItem.vue new file mode 100644 index 00000000..faf1b6b4 --- /dev/null +++ b/packages/design/src/DropdownItem.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/design/src/DropdownMenu.vue b/packages/design/src/DropdownMenu.vue new file mode 100644 index 00000000..18a22968 --- /dev/null +++ b/packages/design/src/DropdownMenu.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/design/src/Form.vue b/packages/design/src/Form.vue index df0c1f6c..3a1d0166 100644 --- a/packages/design/src/Form.vue +++ b/packages/design/src/Form.vue @@ -25,11 +25,11 @@ const uiProps = computed(() => uiComponent.props(props)); defineExpose({ validate() { - form.value?.validate(); + return form.value?.validate(); }, resetFields() { - form.value?.resetFields(); + return form.value?.resetFields(); }, }); diff --git a/packages/design/src/OptionGroup.vue b/packages/design/src/OptionGroup.vue index e49506bc..d8cf6467 100644 --- a/packages/design/src/OptionGroup.vue +++ b/packages/design/src/OptionGroup.vue @@ -5,7 +5,7 @@ diff --git a/packages/design/src/Popover.vue b/packages/design/src/Popover.vue index 60cb79d4..7d67e536 100644 --- a/packages/design/src/Popover.vue +++ b/packages/design/src/Popover.vue @@ -15,8 +15,13 @@ import { getConfig } from './config'; const props = defineProps<{ placement?: string; - width?: string; + width?: string | number; + title?: string; trigger?: string; + effect?: string; + content?: string; + disabled?: boolean; + popperClass?: string; }>(); const uiComponent = getConfig('components').popover; diff --git a/packages/design/src/Scrollbar.vue b/packages/design/src/Scrollbar.vue new file mode 100644 index 00000000..4c659237 --- /dev/null +++ b/packages/design/src/Scrollbar.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/design/src/Select.vue b/packages/design/src/Select.vue index 646491ee..7cea71c8 100644 --- a/packages/design/src/Select.vue +++ b/packages/design/src/Select.vue @@ -77,7 +77,7 @@ defineExpose({ setSelected() { if (!select.value) return; - select.value.setSelected(); + return select.value.setSelected(); }, }); diff --git a/packages/design/src/TabPane.vue b/packages/design/src/TabPane.vue index 36dfbfe8..818cbd95 100644 --- a/packages/design/src/TabPane.vue +++ b/packages/design/src/TabPane.vue @@ -3,6 +3,10 @@ + + diff --git a/packages/design/src/Table.vue b/packages/design/src/Table.vue index edf0bdd1..4fc1df45 100644 --- a/packages/design/src/Table.vue +++ b/packages/design/src/Table.vue @@ -47,15 +47,15 @@ defineExpose({ $el: table.value?.$el, clearSelection(...args: any[]) { - table.value?.clearSelection(...args); + return table.value?.clearSelection(...args); }, toggleRowSelection(...args: any[]) { - table.value?.toggleRowSelection(...args); + return table.value?.toggleRowSelection(...args); }, toggleRowExpansion(...args: any[]) { - table.value?.toggleRowExpansion(...args); + return table.value?.toggleRowExpansion(...args); }, }); diff --git a/packages/design/src/Tooltip.vue b/packages/design/src/Tooltip.vue index 7fd70149..7be593ad 100644 --- a/packages/design/src/Tooltip.vue +++ b/packages/design/src/Tooltip.vue @@ -16,6 +16,9 @@ const props = defineProps<{ placement?: string; disabled?: boolean; content?: string; + effect?: string; + transition?: string; + offset?: number; }>(); const uiComponent = getConfig('components').tooltip; diff --git a/packages/design/src/Tree.vue b/packages/design/src/Tree.vue new file mode 100644 index 00000000..861b3ec2 --- /dev/null +++ b/packages/design/src/Tree.vue @@ -0,0 +1,127 @@ + + + diff --git a/packages/design/src/Upload.vue b/packages/design/src/Upload.vue index 3a693a93..d9a4db84 100644 --- a/packages/design/src/Upload.vue +++ b/packages/design/src/Upload.vue @@ -25,7 +25,7 @@ const upload = ref(); defineExpose({ clearFiles(...args: any[]) { - upload.value?.clearFiles(...args); + return upload.value?.clearFiles(...args); }, }); diff --git a/packages/design/src/index.ts b/packages/design/src/index.ts index 6a14d84e..0bb502fc 100644 --- a/packages/design/src/index.ts +++ b/packages/design/src/index.ts @@ -1,6 +1,6 @@ import { App } from 'vue'; -import { getConfig, setConfig } from './config'; +import { setConfig } from './config'; import { PluginOptions, TMagicMessage, TMagicMessageBox } from './type'; export * from './type'; @@ -13,9 +13,15 @@ export { default as TMagicCascader } from './Cascader.vue'; export { default as TMagicCheckbox } from './Checkbox.vue'; export { default as TMagicCheckboxGroup } from './CheckboxGroup.vue'; export { default as TMagicCol } from './Col.vue'; +export { default as TMagicCollapse } from './Collapse.vue'; +export { default as TMagicCollapseItem } from './CollapseItem.vue'; export { default as TMagicColorPicker } from './ColorPicker.vue'; export { default as TMagicDatePicker } from './DatePicker.vue'; export { default as TMagicDialog } from './Dialog.vue'; +export { default as TMagicDivider } from './Divider.vue'; +export { default as TMagicDropdown } from './Dropdown.vue'; +export { default as TMagicDropdownItem } from './DropdownItem.vue'; +export { default as TMagicDropdownMenu } from './DropdownMenu.vue'; export { default as TMagicForm } from './Form.vue'; export { default as TMagicFormItem } from './FormItem.vue'; export { default as TMagicIcon } from './Icon.vue'; @@ -28,6 +34,7 @@ export { default as TMagicPopover } from './Popover.vue'; export { default as TMagicRadio } from './Radio.vue'; export { default as TMagicRadioGroup } from './RadioGroup.vue'; export { default as TMagicRow } from './Row.vue'; +export { default as TMagicScrollbar } from './Scrollbar.vue'; export { default as TMagicSelect } from './Select.vue'; export { default as TMagicStep } from './Step.vue'; export { default as TMagicSteps } from './Steps.vue'; @@ -39,13 +46,28 @@ export { default as TMagicTabs } from './Tabs.vue'; export { default as TMagicTag } from './Tag.vue'; export { default as TMagicTimePicker } from './TimePicker.vue'; export { default as TMagicTooltip } from './Tooltip.vue'; +export { default as TMagicTree } from './Tree.vue'; export { default as TMagicUpload } from './Upload.vue'; -export const tMagicMessage: TMagicMessage = getConfig('message') as TMagicMessage; -export const tMagicMessageBox: TMagicMessageBox = getConfig('messageBox') as TMagicMessageBox; +export const tMagicMessage = {} as unknown as TMagicMessage; +export const tMagicMessageBox = {} as unknown as TMagicMessageBox; export default { install(app: App, options: PluginOptions) { + if (options.message) { + tMagicMessage.error = options.message?.error; + tMagicMessage.success = options.message?.success; + tMagicMessage.warning = options.message?.warning; + tMagicMessage.info = options.message?.info; + tMagicMessage.closeAll = options.message?.closeAll; + } + + if (options.messageBox) { + tMagicMessageBox.alert = options.messageBox?.alert; + tMagicMessageBox.confirm = options.messageBox?.confirm; + tMagicMessageBox.prompt = options.messageBox?.prompt; + tMagicMessageBox.close = options.messageBox?.close; + } app.config.globalProperties.$MAGIC_DESIGN = options; setConfig(options); }, diff --git a/packages/design/src/type.ts b/packages/design/src/type.ts index 7ebc310a..2fc5c665 100644 --- a/packages/design/src/type.ts +++ b/packages/design/src/type.ts @@ -12,6 +12,7 @@ export interface TMagicMessage { warning: (msg: string) => void; info: (msg: string) => void; error: (msg: string) => void; + closeAll: () => void; } export type ElMessageBoxShortcutMethod = (( diff --git a/packages/editor/package.json b/packages/editor/package.json index b80931bc..76ad346e 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -46,13 +46,13 @@ "@babel/core": "^7.18.0", "@element-plus/icons-vue": "^2.0.9", "@tmagic/core": "1.2.0-beta.2", + "@tmagic/design": "1.2.0-beta.2", "@tmagic/form": "1.2.0-beta.2", "@tmagic/schema": "1.2.0-beta.2", "@tmagic/stage": "1.2.0-beta.2", "@tmagic/utils": "1.2.0-beta.2", "buffer": "^6.0.3", "color": "^3.1.3", - "element-plus": "^2.2.17", "events": "^3.3.0", "gesto": "^1.7.0", "keycon": "^1.1.2", @@ -62,8 +62,8 @@ "vue": "^3.2.37" }, "peerDependencies": { + "@tmagic/design": "1.2.0-beta.2", "@tmagic/form": "1.2.0-beta.2", - "element-plus": "^2.2.17", "monaco-editor": "^0.34.0", "vue": "^3.2.37" }, diff --git a/packages/editor/src/components/ContentMenu.vue b/packages/editor/src/components/ContentMenu.vue index ca53e4c7..50b6e39a 100644 --- a/packages/editor/src/components/ContentMenu.vue +++ b/packages/editor/src/components/ContentMenu.vue @@ -1,14 +1,14 @@