@epxing/designer 0.0.0-stage → 5.3.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API.md +160 -0
- package/README.md +45 -2
- package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
- package/dist/_virtual/preload-helper.js +88 -0
- package/dist/assets/default-icon-2193FMjv.png +0 -0
- package/dist/assets/technology_bg-oWIS2awO.jpg +0 -0
- package/dist/assets/theme_black-Ctdygcr4.png +0 -0
- package/dist/assets/theme_technology-DJk-2e7g.png +0 -0
- package/dist/assets/theme_white-uMQ6JYml.png +0 -0
- package/dist/src/assets/images/dashboard/theme_black.png.js +4 -0
- package/dist/src/assets/images/dashboard/theme_technology.png.js +4 -0
- package/dist/src/assets/images/dashboard/theme_white.png.js +4 -0
- package/dist/src/assets/images/default-icon.png.js +4 -0
- package/dist/src/index.js +53 -0
- package/dist/src/page-designer/PageConfigPreview.js +102 -0
- package/dist/src/page-designer/PageDesigner.js +844 -0
- package/dist/src/page-designer/designer.js +1120 -0
- package/dist/src/page-designer/index.js +52 -0
- package/dist/src/page-designer/mixins/dragSourceMixin.js +95 -0
- package/dist/src/page-designer/page-variable-panel/JsonEditor.js +106 -0
- package/dist/src/page-designer/page-variable-panel/PageVariablePanel.js +939 -0
- package/dist/src/page-designer/page-variable-panel/index.js +7 -0
- package/dist/src/page-designer/page-variable-panel/jsonlint.js +230 -0
- package/dist/src/page-designer/previews/add-form/Preview.js +8 -0
- package/dist/src/page-designer/previews/add-form/Preview.vue.js +328 -0
- package/dist/src/page-designer/previews/add-form-item/Preview.js +194 -0
- package/dist/src/page-designer/previews/button/Preview.js +30 -0
- package/dist/src/page-designer/previews/card/Preview.js +87 -0
- package/dist/src/page-designer/previews/carousel/CarouselItemPreview.js +33 -0
- package/dist/src/page-designer/previews/carousel/Preview.js +61 -0
- package/dist/src/page-designer/previews/collapse/CollapseItemPreview.js +118 -0
- package/dist/src/page-designer/previews/collapse/Preview.js +35 -0
- package/dist/src/page-designer/previews/dropdown/Preview.js +68 -0
- package/dist/src/page-designer/previews/entity-list/Preview.js +522 -0
- package/dist/src/page-designer/previews/entity-sub-list/Preview.js +352 -0
- package/dist/src/page-designer/previews/entity-virtual-list/Preview.js +11 -0
- package/dist/src/page-designer/previews/form-field/preview/Checkbox.js +91 -0
- package/dist/src/page-designer/previews/form-field/preview/Date.js +77 -0
- package/dist/src/page-designer/previews/form-field/preview/Input.js +74 -0
- package/dist/src/page-designer/previews/form-field/preview/InputNumber.js +74 -0
- package/dist/src/page-designer/previews/form-field/preview/Object.js +77 -0
- package/dist/src/page-designer/previews/form-field/preview/Radio.js +146 -0
- package/dist/src/page-designer/previews/form-field/preview/Select.js +78 -0
- package/dist/src/page-designer/previews/form-field/preview/Textarea.js +78 -0
- package/dist/src/page-designer/previews/grid/Preview.js +139 -0
- package/dist/src/page-designer/previews/html/Preview.js +18 -0
- package/dist/src/page-designer/previews/icon/Preview.js +20 -0
- package/dist/src/page-designer/previews/image/Preview.js +36 -0
- package/dist/src/page-designer/previews/index.js +74 -0
- package/dist/src/page-designer/previews/layout/ColumnPreview.js +47 -0
- package/dist/src/page-designer/previews/layout/Preview.js +110 -0
- package/dist/src/page-designer/previews/num/Preview.js +132 -0
- package/dist/src/page-designer/previews/page-tabs/Preview.js +75 -0
- package/dist/src/page-designer/previews/step/Preview.js +207 -0
- package/dist/src/page-designer/previews/tabs/Preview.js +95 -0
- package/dist/src/page-designer/previews/tabs/tab-pane/Preview.js +33 -0
- package/dist/src/page-designer/previews/text/Preview.js +38 -0
- package/dist/src/page-designer/previews/text-editor/Preview.js +23 -0
- package/dist/src/page-designer/previews/video/Preview.js +10 -0
- package/dist/src/page-designer/setting-panel/Advance.js +281 -0
- package/dist/src/page-designer/setting-panel/CodeEditor.js +94 -0
- package/dist/src/page-designer/setting-panel/Property.js +165 -0
- package/dist/src/page-designer/setting-panel/Setting.js +296 -0
- package/dist/src/page-designer/setting-panel/Style.js +1591 -0
- package/dist/src/page-designer/setting-panel/css-editor/CssEditor.js +98 -0
- package/dist/src/page-designer/setting-panel/css-editor/css-hint.js +84 -0
- package/dist/src/page-designer/setting-panel/index.js +11 -0
- package/dist/src/page-designer/template-attribute-panel/TemplateAttributePanel.js +487 -0
- package/dist/src/page-designer/template-attribute-panel/index.js +5 -0
- package/dist/src/page-designer/template-library/Library.js +219 -0
- package/dist/src/page-designer/template-library/index.js +5 -0
- package/dist/src/page-designer/widget-library/Base.js +170 -0
- package/dist/src/page-designer/widget-library/Library.js +213 -0
- package/dist/src/page-designer/widget-library/index.js +7 -0
- package/dist/src/page-designer/widget-preview/Container.js +80 -0
- package/dist/src/page-designer/widget-preview/DragGhost.js +54 -0
- package/dist/src/page-designer/widget-preview/DropZoneOverlay.js +42 -0
- package/dist/src/page-designer/widget-preview/HoverOverlay.js +61 -0
- package/dist/src/page-designer/widget-preview/Mixin.js +260 -0
- package/dist/src/page-designer/widget-preview/Placeholder.js +28 -0
- package/dist/src/page-designer/widget-preview/Preview.js +277 -0
- package/dist/src/page-designer/widget-preview/PreviewItem.js +83 -0
- package/dist/src/page-designer/widget-preview/SelectedOverlay.js +332 -0
- package/dist/src/page-designer/widget-preview/Template.js +66 -0
- package/dist/src/page-designer/widget-preview/WidgetWrapper.js +170 -0
- package/dist/src/page-designer/widget-preview/directive.js +159 -0
- package/dist/src/page-designer/widget-preview/dropPosition.js +50 -0
- package/dist/src/page-designer/widget-preview/index.js +23 -0
- package/dist/src/page-designer/widget-preview/overlayPositionMixin.js +87 -0
- package/dist/src/page-designer/widget-preview/resolvePreviewName.js +32 -0
- package/dist/src/page-designer/widget-tree/Item.js +580 -0
- package/dist/src/page-designer/widget-tree/Tree.js +855 -0
- package/dist/src/page-designer/widget-tree/index.js +7 -0
- package/dist/src/visual/AddForm.js +172 -0
- package/dist/src/visual/AddFormItem.js +480 -0
- package/dist/src/visual/AppIndex.js +243 -0
- package/dist/src/visual/ApplyForm.js +135 -0
- package/dist/src/visual/AttributeList.js +344 -0
- package/dist/src/visual/BasePage.js +77 -0
- package/dist/src/visual/Button.js +5 -0
- package/dist/src/visual/Button.vue.js +89 -0
- package/dist/src/visual/CardNum.js +74 -0
- package/dist/src/visual/CategoryList.js +569 -0
- package/dist/src/visual/Chart.js +27 -0
- package/dist/src/visual/ChartNew.js +5 -0
- package/dist/src/visual/ChartNew.vue.js +54 -0
- package/dist/src/visual/CheckForm.js +110 -0
- package/dist/src/visual/ClientList.js +41 -0
- package/dist/src/visual/CodeManage.js +113 -0
- package/dist/src/visual/Component.js +6 -0
- package/dist/src/visual/Component.vue.js +1332 -0
- package/dist/src/visual/ComponentList.js +280 -0
- package/dist/src/visual/Config.js +8 -0
- package/dist/src/visual/Config.vue.js +862 -0
- package/dist/src/visual/ConfigItem.js +8 -0
- package/dist/src/visual/ConfigItem.vue.js +192 -0
- package/dist/src/visual/ConfigSelectItems.js +8 -0
- package/dist/src/visual/ConfigSelectItems.vue.js +260 -0
- package/dist/src/visual/CreatePage.js +389 -0
- package/dist/src/visual/DashboardDiv.js +58 -0
- package/dist/src/visual/DashboardTabs.js +9 -0
- package/dist/src/visual/DashboardTabs.vue.js +127 -0
- package/dist/src/visual/DashboardWidget.js +5 -0
- package/dist/src/visual/DashboardWidget.vue.js +62 -0
- package/dist/src/visual/DblogList.js +82 -0
- package/dist/src/visual/EntityAddPage.js +49 -0
- package/dist/src/visual/EntityApplyPage.js +54 -0
- package/dist/src/visual/EntityCardList.js +455 -0
- package/dist/src/visual/EntityCheckPage.js +66 -0
- package/dist/src/visual/EntityFindPage.js +45 -0
- package/dist/src/visual/EntityList.js +6 -0
- package/dist/src/visual/EntityList.vue.js +1221 -0
- package/dist/src/visual/EntityListPage.js +43 -0
- package/dist/src/visual/EntityNoSubmitSubList.js +267 -0
- package/dist/src/visual/EntityRightSubList.js +29 -0
- package/dist/src/visual/EntitySubAdd.js +10 -0
- package/dist/src/visual/EntitySubGridItem.js +66 -0
- package/dist/src/visual/EntitySubList.js +434 -0
- package/dist/src/visual/EntityTreeFindPage.js +32 -0
- package/dist/src/visual/EntityTreeManage.js +49 -0
- package/dist/src/visual/EntityTreePage.js +42 -0
- package/dist/src/visual/ExcelPreview.js +10 -0
- package/dist/src/visual/FormField.js +5 -0
- package/dist/src/visual/FormField.vue.js +121 -0
- package/dist/src/visual/HeaderNew.js +161 -0
- package/dist/src/visual/Html.js +8 -0
- package/dist/src/visual/Html.vue.js +109 -0
- package/dist/src/visual/Import.js +53 -0
- package/dist/src/visual/InterfaceSubList.js +21 -0
- package/dist/src/visual/ListFirst.js +704 -0
- package/dist/src/visual/MEntityAddPage.js +66 -0
- package/dist/src/visual/MEntityList.js +485 -0
- package/dist/src/visual/MEntityListPage.js +40 -0
- package/dist/src/visual/MEntitySubList.js +237 -0
- package/dist/src/visual/MetaList.js +23 -0
- package/dist/src/visual/ModuleIndexPage.js +67 -0
- package/dist/src/visual/ModuleList.js +47 -0
- package/dist/src/visual/NavAddForm.js +173 -0
- package/dist/src/visual/NavFormCatalogItem.js +44 -0
- package/dist/src/visual/NumItem.js +70 -0
- package/dist/src/visual/NumStatistic.js +6 -0
- package/dist/src/visual/NumStatistic.vue.js +81 -0
- package/dist/src/visual/OrgChart.js +107 -0
- package/dist/src/visual/PageCatalog.js +27 -0
- package/dist/src/visual/PageConfig.js +223 -0
- package/dist/src/visual/PageTabs.js +49 -0
- package/dist/src/visual/Progress.js +40 -0
- package/dist/src/visual/ProgressItem.js +44 -0
- package/dist/src/visual/SystemManager.js +77 -0
- package/dist/src/visual/Title.js +45 -0
- package/dist/src/visual/TodoList.js +14 -0
- package/dist/src/visual/UserFormItem.js +41 -0
- package/dist/src/visual/UserManage.js +35 -0
- package/dist/src/visual/chart/CircularPie.js +9 -0
- package/dist/src/visual/chart/Column.js +70 -0
- package/dist/src/visual/chart/HoriColumn.js +9 -0
- package/dist/src/visual/chart/Line.js +9 -0
- package/dist/src/visual/chart/Pie.js +9 -0
- package/dist/src/visual/config/Background.js +526 -0
- package/dist/src/visual/config/Chart.js +154 -0
- package/dist/src/visual/config/Checkbox.js +63 -0
- package/dist/src/visual/config/Color.js +41 -0
- package/dist/src/visual/config/DesignReport.js +24 -0
- package/dist/src/visual/config/Event.js +304 -0
- package/dist/src/visual/config/Field.js +520 -0
- package/dist/src/visual/config/Font.js +202 -0
- package/dist/src/visual/config/FormItem.js +23 -0
- package/dist/src/visual/config/Function.js +114 -0
- package/dist/src/visual/config/Html.js +111 -0
- package/dist/src/visual/config/Image.js +102 -0
- package/dist/src/visual/config/Input.js +177 -0
- package/dist/src/visual/config/Input.vue.js +479 -0
- package/dist/src/visual/config/LazyDialog.js +41 -0
- package/dist/src/visual/config/List.js +65 -0
- package/dist/src/visual/config/ListField.js +2080 -0
- package/dist/src/visual/config/MField.js +733 -0
- package/dist/src/visual/config/Number.js +37 -0
- package/dist/src/visual/config/Object.js +168 -0
- package/dist/src/visual/config/Operate.js +1109 -0
- package/dist/src/visual/config/OperateItem.js +1186 -0
- package/dist/src/visual/config/Options.js +8 -0
- package/dist/src/visual/config/Options.vue.js +278 -0
- package/dist/src/visual/config/OrderField.js +505 -0
- package/dist/src/visual/config/Page.js +76 -0
- package/dist/src/visual/config/Params.js +353 -0
- package/dist/src/visual/config/Radio.js +127 -0
- package/dist/src/visual/config/Row.js +104 -0
- package/dist/src/visual/config/Scope.js +350 -0
- package/dist/src/visual/config/Select.js +95 -0
- package/dist/src/visual/config/Switch.js +37 -0
- package/dist/src/visual/config/Textarea.js +175 -0
- package/dist/src/visual/config/Textarea.vue.js +507 -0
- package/dist/src/visual/config/Tree.js +138 -0
- package/dist/src/visual/config/remote-cache.js +30 -0
- package/dist/src/visual/config/show-condition.js +20 -0
- package/dist/src/visual/config/variable-sources.js +27 -0
- package/dist/src/visual/config/wait-ref.js +19 -0
- package/dist/src/visual/config-page/ComponentLibrary.js +170 -0
- package/dist/src/visual/config-page/ComponentLibraryDialog.js +250 -0
- package/dist/src/visual/config-page/ComponentList.js +9 -0
- package/dist/src/visual/config-page/ComponentList.vue.js +292 -0
- package/dist/src/visual/config-page/ComponentPreview.js +8 -0
- package/dist/src/visual/config-page/ComponentPreview.vue.js +151 -0
- package/dist/src/visual/config-page/ConfigOption.js +13 -0
- package/dist/src/visual/config-page/ConfigPanel.js +302 -0
- package/dist/src/visual/config-page/Dashboard.js +2160 -0
- package/dist/src/visual/config-page/DashboardDesign.js +606 -0
- package/dist/src/visual/config-page/DashboardGlobalConfig.js +6 -0
- package/dist/src/visual/config-page/DashboardGlobalConfig.vue.js +292 -0
- package/dist/src/visual/config-page/DashboardMobile.js +1115 -0
- package/dist/src/visual/config-page/DashboardSetting.js +86 -0
- package/dist/src/visual/config-page/PagePreview.js +8 -0
- package/dist/src/visual/config-page/PagePreview.vue.js +72 -0
- package/dist/src/visual/config-page/StyleConfig.js +979 -0
- package/dist/src/visual/config-page/VisualConfigPage.js +645 -0
- package/dist/src/visual/config-page/dashboard-theme-setting/Background.js +180 -0
- package/dist/src/visual/config-page/dashboard-theme-setting/Border.js +314 -0
- package/dist/src/visual/config-page/dashboard-theme-setting/Font.js +192 -0
- package/dist/src/visual/config-page/dashboard-theme-setting/Index.js +545 -0
- package/dist/src/visual/config-page/dashboard-theme-setting/Shadow.js +174 -0
- package/dist/src/visual/config-page/index.js +90 -0
- package/dist/src/visual/index.js +151 -0
- package/dist/src/visual/mixins/innerGridMixin.js +122 -0
- package/dist/src/visual/search/Filter.js +49 -0
- package/dist/src/visual/step/Index.js +8 -0
- package/dist/src/visual/step/Index.vue.js +485 -0
- package/dist/src/visual/step/Item.js +139 -0
- package/dist/src/visual/widgets/CardFormItemVisual.js +45 -0
- package/dist/src/visual/widgets/CarouselVisual.js +8 -0
- package/dist/src/visual/widgets/CarouselVisual.vue.js +303 -0
- package/dist/src/visual/widgets/CollapseVisual.js +8 -0
- package/dist/src/visual/widgets/CollapseVisual.vue.js +202 -0
- package/dist/src/visual/widgets/DropdownVisual.js +8 -0
- package/dist/src/visual/widgets/DropdownVisual.vue.js +955 -0
- package/dist/src/visual/widgets/LayoutConfig.js +8 -0
- package/dist/src/visual/widgets/LayoutConfig.vue.js +168 -0
- package/dist/src/visual/widgets/ListVisual.js +349 -0
- package/dist/src/visual/widgets/MEntityListFindVisual.js +76 -0
- package/dist/src/visual/widgets/ProcessFormItemVisual.js +5 -0
- package/dist/src/visual/widgets/ProcessFormItemVisual.vue.js +45 -0
- package/dist/src/visual/widgets/TabsConfig.js +8 -0
- package/dist/src/visual/widgets/TabsConfig.vue.js +343 -0
- package/dist/style.css +9907 -0
- package/package.json +104 -3
- package/src/index.js +27 -0
- package/src/page-designer/PageConfigPreview.vue +103 -0
- package/src/page-designer/PageDesigner.vue +1017 -0
- package/src/page-designer/designer.js +1299 -0
- package/src/page-designer/index.js +38 -0
- package/src/page-designer/mixins/dragSourceMixin.js +113 -0
- package/src/page-designer/page-variable-panel/JsonEditor.vue +109 -0
- package/src/page-designer/page-variable-panel/PageVariablePanel.vue +781 -0
- package/src/page-designer/page-variable-panel/index.js +6 -0
- package/src/page-designer/page-variable-panel/jsonlint.js +2 -0
- package/src/page-designer/previews/add-form/Preview.vue +331 -0
- package/src/page-designer/previews/add-form-item/Preview.vue +167 -0
- package/src/page-designer/previews/button/Preview.vue +27 -0
- package/src/page-designer/previews/card/Preview.vue +78 -0
- package/src/page-designer/previews/carousel/CarouselItemPreview.vue +32 -0
- package/src/page-designer/previews/carousel/Preview.vue +36 -0
- package/src/page-designer/previews/collapse/CollapseItemPreview.vue +136 -0
- package/src/page-designer/previews/collapse/Preview.vue +28 -0
- package/src/page-designer/previews/dropdown/Preview.vue +21 -0
- package/src/page-designer/previews/entity-list/Preview.vue +382 -0
- package/src/page-designer/previews/entity-sub-list/Preview.vue +283 -0
- package/src/page-designer/previews/entity-virtual-list/Preview.vue +14 -0
- package/src/page-designer/previews/form-field/preview/Checkbox.vue +57 -0
- package/src/page-designer/previews/form-field/preview/Date.vue +56 -0
- package/src/page-designer/previews/form-field/preview/Input.vue +53 -0
- package/src/page-designer/previews/form-field/preview/InputNumber.vue +53 -0
- package/src/page-designer/previews/form-field/preview/Object.vue +53 -0
- package/src/page-designer/previews/form-field/preview/Radio.vue +69 -0
- package/src/page-designer/previews/form-field/preview/Select.vue +55 -0
- package/src/page-designer/previews/form-field/preview/Textarea.vue +57 -0
- package/src/page-designer/previews/grid/Preview.vue +156 -0
- package/src/page-designer/previews/html/Preview.vue +11 -0
- package/src/page-designer/previews/icon/Preview.vue +12 -0
- package/src/page-designer/previews/image/Preview.vue +37 -0
- package/src/page-designer/previews/index.js +74 -0
- package/src/page-designer/previews/layout/ColumnPreview.vue +89 -0
- package/src/page-designer/previews/layout/Preview.vue +96 -0
- package/src/page-designer/previews/num/Preview.vue +100 -0
- package/src/page-designer/previews/page-tabs/Preview.vue +53 -0
- package/src/page-designer/previews/step/Preview.vue +190 -0
- package/src/page-designer/previews/tabs/Preview.vue +66 -0
- package/src/page-designer/previews/tabs/tab-pane/Preview.vue +32 -0
- package/src/page-designer/previews/text/Preview.vue +26 -0
- package/src/page-designer/previews/text-editor/Preview.vue +14 -0
- package/src/page-designer/previews/video/Preview.vue +9 -0
- package/src/page-designer/setting-panel/Advance.vue +175 -0
- package/src/page-designer/setting-panel/CodeEditor.vue +88 -0
- package/src/page-designer/setting-panel/Property.vue +163 -0
- package/src/page-designer/setting-panel/Setting.vue +271 -0
- package/src/page-designer/setting-panel/Style.vue +1096 -0
- package/src/page-designer/setting-panel/css-editor/CssEditor.vue +93 -0
- package/src/page-designer/setting-panel/css-editor/css-hint.js +58 -0
- package/src/page-designer/setting-panel/index.js +10 -0
- package/src/page-designer/template-attribute-panel/TemplateAttributePanel.vue +383 -0
- package/src/page-designer/template-attribute-panel/index.js +2 -0
- package/src/page-designer/template-library/Library.vue +153 -0
- package/src/page-designer/template-library/index.js +4 -0
- package/src/page-designer/widget-library/Base.vue +156 -0
- package/src/page-designer/widget-library/Library.vue +282 -0
- package/src/page-designer/widget-library/index.js +6 -0
- package/src/page-designer/widget-preview/Container.vue +89 -0
- package/src/page-designer/widget-preview/DragGhost.vue +83 -0
- package/src/page-designer/widget-preview/DropZoneOverlay.vue +51 -0
- package/src/page-designer/widget-preview/HoverOverlay.vue +85 -0
- package/src/page-designer/widget-preview/Mixin.js +285 -0
- package/src/page-designer/widget-preview/Placeholder.vue +22 -0
- package/src/page-designer/widget-preview/Preview.vue +322 -0
- package/src/page-designer/widget-preview/PreviewItem.vue +162 -0
- package/src/page-designer/widget-preview/SelectedOverlay.vue +340 -0
- package/src/page-designer/widget-preview/Template.vue +77 -0
- package/src/page-designer/widget-preview/WidgetWrapper.vue +197 -0
- package/src/page-designer/widget-preview/directive.js +258 -0
- package/src/page-designer/widget-preview/dropPosition.js +51 -0
- package/src/page-designer/widget-preview/index.js +23 -0
- package/src/page-designer/widget-preview/overlayPositionMixin.js +88 -0
- package/src/page-designer/widget-preview/resolvePreviewName.js +33 -0
- package/src/page-designer/widget-tree/Item.vue +719 -0
- package/src/page-designer/widget-tree/Tree.vue +995 -0
- package/src/page-designer/widget-tree/index.js +6 -0
- package/src/visual/AddForm.vue +172 -0
- package/src/visual/AddFormItem.vue +482 -0
- package/src/visual/AppIndex.vue +245 -0
- package/src/visual/ApplyForm.vue +140 -0
- package/src/visual/AttributeList.vue +344 -0
- package/src/visual/BasePage.vue +76 -0
- package/src/visual/Button.vue +80 -0
- package/src/visual/CardNum.vue +73 -0
- package/src/visual/CategoryList.vue +563 -0
- package/src/visual/Chart.vue +29 -0
- package/src/visual/ChartNew.vue +49 -0
- package/src/visual/CheckForm.vue +106 -0
- package/src/visual/ClientList.vue +42 -0
- package/src/visual/CodeManage.vue +116 -0
- package/src/visual/Component.vue +1342 -0
- package/src/visual/ComponentList.vue +280 -0
- package/src/visual/Config.vue +881 -0
- package/src/visual/ConfigItem.vue +218 -0
- package/src/visual/ConfigSelectItems.vue +445 -0
- package/src/visual/CreatePage.vue +389 -0
- package/src/visual/DashboardDiv.vue +197 -0
- package/src/visual/DashboardTabs.vue +118 -0
- package/src/visual/DashboardWidget.vue +55 -0
- package/src/visual/DblogList.vue +84 -0
- package/src/visual/EntityAddPage.vue +52 -0
- package/src/visual/EntityApplyPage.vue +57 -0
- package/src/visual/EntityCardList.vue +449 -0
- package/src/visual/EntityCheckPage.vue +69 -0
- package/src/visual/EntityFindPage.vue +55 -0
- package/src/visual/EntityList.vue +838 -0
- package/src/visual/EntityListPage.vue +97 -0
- package/src/visual/EntityNoSubmitSubList.vue +273 -0
- package/src/visual/EntityRightSubList.vue +32 -0
- package/src/visual/EntitySubAdd.vue +11 -0
- package/src/visual/EntitySubGridItem.vue +67 -0
- package/src/visual/EntitySubList.vue +440 -0
- package/src/visual/EntityTreeFindPage.vue +36 -0
- package/src/visual/EntityTreeManage.vue +50 -0
- package/src/visual/EntityTreePage.vue +45 -0
- package/src/visual/ExcelPreview.vue +11 -0
- package/src/visual/FormField.vue +113 -0
- package/src/visual/HeaderNew.vue +176 -0
- package/src/visual/Html.vue +104 -0
- package/src/visual/Import.vue +55 -0
- package/src/visual/InterfaceSubList.vue +23 -0
- package/src/visual/ListFirst.vue +614 -0
- package/src/visual/MEntityAddPage.vue +71 -0
- package/src/visual/MEntityList.vue +488 -0
- package/src/visual/MEntityListPage.vue +46 -0
- package/src/visual/MEntitySubList.vue +237 -0
- package/src/visual/MetaList.vue +24 -0
- package/src/visual/ModuleIndexPage.vue +70 -0
- package/src/visual/ModuleList.vue +46 -0
- package/src/visual/NavAddForm.vue +177 -0
- package/src/visual/NavFormCatalogItem.vue +47 -0
- package/src/visual/NumItem.vue +69 -0
- package/src/visual/NumStatistic.vue +242 -0
- package/src/visual/OrgChart.vue +113 -0
- package/src/visual/PageCatalog.vue +26 -0
- package/src/visual/PageConfig.vue +278 -0
- package/src/visual/PageTabs.vue +55 -0
- package/src/visual/Progress.vue +39 -0
- package/src/visual/ProgressItem.vue +43 -0
- package/src/visual/SystemManager.vue +80 -0
- package/src/visual/Title.vue +44 -0
- package/src/visual/TodoList.vue +18 -0
- package/src/visual/UserFormItem.vue +49 -0
- package/src/visual/UserManage.vue +36 -0
- package/src/visual/chart/CircularPie.vue +7 -0
- package/src/visual/chart/Column.vue +73 -0
- package/src/visual/chart/HoriColumn.vue +7 -0
- package/src/visual/chart/Line.vue +7 -0
- package/src/visual/chart/Pie.vue +7 -0
- package/src/visual/config/Background.vue +398 -0
- package/src/visual/config/Chart.vue +139 -0
- package/src/visual/config/Checkbox.vue +64 -0
- package/src/visual/config/Color.vue +40 -0
- package/src/visual/config/DesignReport.vue +20 -0
- package/src/visual/config/Event.vue +220 -0
- package/src/visual/config/Field.vue +597 -0
- package/src/visual/config/Font.vue +149 -0
- package/src/visual/config/FormItem.vue +25 -0
- package/src/visual/config/Function.vue +78 -0
- package/src/visual/config/Html.vue +98 -0
- package/src/visual/config/Image.vue +132 -0
- package/src/visual/config/Input.vue +712 -0
- package/src/visual/config/LazyDialog.vue +44 -0
- package/src/visual/config/List.vue +68 -0
- package/src/visual/config/ListField.vue +1714 -0
- package/src/visual/config/MField.vue +601 -0
- package/src/visual/config/Number.vue +41 -0
- package/src/visual/config/Object.vue +177 -0
- package/src/visual/config/Operate.vue +1083 -0
- package/src/visual/config/OperateItem.vue +917 -0
- package/src/visual/config/Options.vue +330 -0
- package/src/visual/config/OrderField.vue +587 -0
- package/src/visual/config/Page.vue +45 -0
- package/src/visual/config/Params.vue +228 -0
- package/src/visual/config/Radio.vue +93 -0
- package/src/visual/config/Row.vue +78 -0
- package/src/visual/config/Scope.vue +363 -0
- package/src/visual/config/Select.vue +93 -0
- package/src/visual/config/Switch.vue +36 -0
- package/src/visual/config/Textarea.vue +754 -0
- package/src/visual/config/Tree.vue +135 -0
- package/src/visual/config/remote-cache.js +35 -0
- package/src/visual/config/show-condition.js +21 -0
- package/src/visual/config/variable-sources.js +27 -0
- package/src/visual/config/wait-ref.js +17 -0
- package/src/visual/config-page/ComponentLibrary.vue +220 -0
- package/src/visual/config-page/ComponentLibraryDialog.vue +262 -0
- package/src/visual/config-page/ComponentList.vue +580 -0
- package/src/visual/config-page/ComponentPreview.vue +206 -0
- package/src/visual/config-page/ConfigOption.vue +16 -0
- package/src/visual/config-page/ConfigPanel.vue +301 -0
- package/src/visual/config-page/Dashboard.vue +2331 -0
- package/src/visual/config-page/DashboardDesign.vue +656 -0
- package/src/visual/config-page/DashboardGlobalConfig.vue +158 -0
- package/src/visual/config-page/DashboardMobile.vue +1118 -0
- package/src/visual/config-page/DashboardSetting.vue +47 -0
- package/src/visual/config-page/PagePreview.vue +105 -0
- package/src/visual/config-page/StyleConfig.vue +656 -0
- package/src/visual/config-page/VisualConfigPage.vue +746 -0
- package/src/visual/config-page/dashboard-theme-setting/Background.vue +98 -0
- package/src/visual/config-page/dashboard-theme-setting/Border.vue +185 -0
- package/src/visual/config-page/dashboard-theme-setting/Font.vue +101 -0
- package/src/visual/config-page/dashboard-theme-setting/Index.vue +471 -0
- package/src/visual/config-page/dashboard-theme-setting/Shadow.vue +102 -0
- package/src/visual/config-page/index.js +93 -0
- package/src/visual/index.js +23 -0
- package/src/visual/mixins/innerGridMixin.js +128 -0
- package/src/visual/search/Filter.vue +50 -0
- package/src/visual/step/Index.vue +361 -0
- package/src/visual/step/Item.vue +140 -0
- package/src/visual/widgets/CardFormItemVisual.vue +46 -0
- package/src/visual/widgets/CarouselVisual.vue +291 -0
- package/src/visual/widgets/CollapseVisual.vue +203 -0
- package/src/visual/widgets/DropdownVisual.vue +541 -0
- package/src/visual/widgets/LayoutConfig.vue +186 -0
- package/src/visual/widgets/ListVisual.vue +349 -0
- package/src/visual/widgets/MEntityListFindVisual.vue +77 -0
- package/src/visual/widgets/ProcessFormItemVisual.vue +58 -0
- package/src/visual/widgets/TabsConfig.vue +266 -0
- package/types/index.d.ts +22 -0
- package/types/page-designer.d.ts +3 -0
- package/types/visual-component.d.ts +1 -0
- package/types/visual-entity-list.d.ts +1 -0
- package/types/visual-entity-sub-list.d.ts +1 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
// import util from '@epxing/core/src/runtime-utils/util'
|
|
2
|
+
|
|
3
|
+
// function appendCss (id, css) {
|
|
4
|
+
// const formatCss = css.replace(/:current/g, '.css_' + id).replace(/url\s*\(([\w+-/.\s]+)\)/g, (str, $1) => {
|
|
5
|
+
// return `url(${util.getFileUrl($1)})`
|
|
6
|
+
// })
|
|
7
|
+
// const element = document.getElementById('style_' + id)
|
|
8
|
+
// if (element) {
|
|
9
|
+
// element.textContent = formatCss
|
|
10
|
+
// } else {
|
|
11
|
+
// const style = document.createElement('style')
|
|
12
|
+
// style.id = 'style_' + id
|
|
13
|
+
// style.textContent = formatCss
|
|
14
|
+
// style.setAttribute('type', 'text/css')
|
|
15
|
+
// document.head.appendChild(style)
|
|
16
|
+
// }
|
|
17
|
+
// }
|
|
18
|
+
|
|
19
|
+
// function removeCss (id) {
|
|
20
|
+
// const element = document.getElementById('style_' + id)
|
|
21
|
+
// if (element) document.head.removeChild(element)
|
|
22
|
+
// }
|
|
23
|
+
|
|
24
|
+
// 卸掉 el 上一次 apply 绑的全部监听(beforeMount 与 mounted 会各 apply 一次,不先卸就会双份触发)
|
|
25
|
+
function detach (el) {
|
|
26
|
+
const targetEl = el._widgetTargetEl || el
|
|
27
|
+
const pairs = [['mouseenter', '_widgetMouseEnter'], ['mouseleave', '_widgetMouseLeave'], ['click', '_widgetClick'], ['dragstart', '_widgetDragStart'], ['dragend', '_widgetDragEnd']]
|
|
28
|
+
for (const [type, key] of pairs) {
|
|
29
|
+
if (el[key]) {
|
|
30
|
+
targetEl.removeEventListener(type, el[key])
|
|
31
|
+
delete el[key]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
delete el._widgetTargetEl
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// 全局指令:在组件上添加设计器相关属性和事件
|
|
38
|
+
export default {
|
|
39
|
+
beforeMount (el, binding) {
|
|
40
|
+
const { widget, designer, parentWidget, templateInfo } = binding.value || {}
|
|
41
|
+
if (!widget || !designer) return
|
|
42
|
+
|
|
43
|
+
// 等待组件挂载后再操作(Vue 组件可能需要等待)
|
|
44
|
+
const applyDirective = () => {
|
|
45
|
+
detach(el)
|
|
46
|
+
// Vue3 里指令挂在组件上时 el 就是组件根元素(等价于 Vue2 的 el.__vue__.$el),直接用。
|
|
47
|
+
// 迁移前遗留的「el.__vue__ 不存在就取唯一子元素」启发式在 Vue3 下恒命中,会把 data-widget-id
|
|
48
|
+
// 与点击 / 悬停 / 拖拽监听挂到内部子元素上(表单项挂在头部 <p>、占位组件挂在 <span>),
|
|
49
|
+
// 导致点组件身体选不中、选中浮层只框住头部。
|
|
50
|
+
if (el.nodeType !== 1) return
|
|
51
|
+
const targetEl = el
|
|
52
|
+
|
|
53
|
+
// 添加 data-widget-id 属性
|
|
54
|
+
targetEl.setAttribute('data-widget-id', widget.id)
|
|
55
|
+
|
|
56
|
+
// 使组件可拖拽(但不改变鼠标样式)
|
|
57
|
+
targetEl.setAttribute('draggable', 'true')
|
|
58
|
+
|
|
59
|
+
// 获取组件名称并添加到 data 属性
|
|
60
|
+
const widgetInfo = designer.getWidgetByType(widget.contentType, widget.type) || {}
|
|
61
|
+
const widgetTitle = widgetInfo.TITLE || widgetInfo.NAME || widget.title || ''
|
|
62
|
+
if (widgetTitle) {
|
|
63
|
+
targetEl.setAttribute('data-widget-title', widgetTitle)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 添加 css_ 类名
|
|
67
|
+
// if (targetEl.classList) {
|
|
68
|
+
// targetEl.classList.add('css_' + widget.id)
|
|
69
|
+
// } else {
|
|
70
|
+
// targetEl.className += ' css_' + widget.id
|
|
71
|
+
// }
|
|
72
|
+
|
|
73
|
+
// 如果不是容器组件,添加布局类(el-col)
|
|
74
|
+
if (!parentWidget) {
|
|
75
|
+
if (targetEl.classList) {
|
|
76
|
+
targetEl.classList.add('el-col')
|
|
77
|
+
targetEl.classList.add(`el-col-${widget.span || 24}`)
|
|
78
|
+
} else {
|
|
79
|
+
targetEl.className += ` el-col el-col-${widget.span || 24}`
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// 应用组件的 CSS 样式
|
|
84
|
+
// if (widget.css) {
|
|
85
|
+
// appendCss(widget.id, widget.css)
|
|
86
|
+
// }
|
|
87
|
+
|
|
88
|
+
// 添加事件监听器
|
|
89
|
+
const handleMouseEnter = (event) => {
|
|
90
|
+
if (!templateInfo) {
|
|
91
|
+
// 阻止事件冒泡,防止触发外层组件的悬停
|
|
92
|
+
event.stopPropagation()
|
|
93
|
+
// 通过 designer 统一管理悬浮组件状态
|
|
94
|
+
if (typeof designer.setHoverById === 'function') {
|
|
95
|
+
designer.setHoverById(widget.id)
|
|
96
|
+
} else if (designer.emitEvent) {
|
|
97
|
+
// 兼容旧逻辑
|
|
98
|
+
designer.emitEvent('widget-hover', widget.id)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const handleMouseLeave = (event) => {
|
|
104
|
+
if (!templateInfo) {
|
|
105
|
+
const relatedTarget = event.relatedTarget
|
|
106
|
+
|
|
107
|
+
// 1. 鼠标仍在当前组件内部(含子元素),不处理
|
|
108
|
+
if (relatedTarget && targetEl.contains(relatedTarget)) {
|
|
109
|
+
return
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
event.stopPropagation()
|
|
113
|
+
|
|
114
|
+
// 2. 鼠标移动到了另一个挂了 data-widget-id 的组件上,直接把 hover 切换到该组件
|
|
115
|
+
if (relatedTarget && relatedTarget.closest) {
|
|
116
|
+
const nextWidgetEl = relatedTarget.closest('[data-widget-id]')
|
|
117
|
+
if (nextWidgetEl) {
|
|
118
|
+
const nextId = nextWidgetEl.getAttribute('data-widget-id')
|
|
119
|
+
if (nextId && typeof designer.setHoverById === 'function') {
|
|
120
|
+
designer.setHoverById(nextId)
|
|
121
|
+
return
|
|
122
|
+
} else if (nextId && designer.emitEvent) {
|
|
123
|
+
// 兼容旧逻辑
|
|
124
|
+
designer.emitEvent('widget-hover', nextId)
|
|
125
|
+
return
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// 3. 否则认为鼠标离开了所有组件区域,清理悬浮状态
|
|
131
|
+
if (typeof designer.clearHover === 'function') {
|
|
132
|
+
designer.clearHover()
|
|
133
|
+
} else if (designer.emitEvent) {
|
|
134
|
+
designer.emitEvent('widget-hover', null)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const handleClick = (event) => {
|
|
140
|
+
if (!templateInfo) {
|
|
141
|
+
const widgetInfo = designer.getWidgetByType(widget.contentType, widget.type) || {}
|
|
142
|
+
if (widgetInfo.ID) {
|
|
143
|
+
designer.setSelected(widget)
|
|
144
|
+
event.stopPropagation()
|
|
145
|
+
// 触发全局事件
|
|
146
|
+
if (designer.emitEvent) {
|
|
147
|
+
designer.emitEvent('widget-click', {
|
|
148
|
+
widget: widget,
|
|
149
|
+
element: targetEl,
|
|
150
|
+
parentWidget: parentWidget
|
|
151
|
+
})
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// 组件拖拽开始
|
|
158
|
+
const handleDragStart = (event) => {
|
|
159
|
+
event.stopPropagation()
|
|
160
|
+
|
|
161
|
+
// 设置拖拽数据
|
|
162
|
+
const dragData = {
|
|
163
|
+
type: 'widget-reorder',
|
|
164
|
+
widgetId: widget.id,
|
|
165
|
+
parentWidgetId: parentWidget?.id || null
|
|
166
|
+
}
|
|
167
|
+
const dragDataStr = JSON.stringify(dragData)
|
|
168
|
+
|
|
169
|
+
event.dataTransfer.setData('text/plain', dragDataStr)
|
|
170
|
+
event.dataTransfer.effectAllowed = 'move'
|
|
171
|
+
|
|
172
|
+
// 设置自定义拖拽图像(空元素),避免浏览器默认拖拽行为干扰
|
|
173
|
+
const emptyEl = document.createElement('div')
|
|
174
|
+
emptyEl.style.cssText = 'position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none'
|
|
175
|
+
document.body.appendChild(emptyEl)
|
|
176
|
+
event.dataTransfer.setDragImage(emptyEl, 0, 0)
|
|
177
|
+
setTimeout(() => { if (emptyEl.parentNode) emptyEl.parentNode.removeChild(emptyEl) }, 0)
|
|
178
|
+
|
|
179
|
+
// 添加拖拽样式和标记类
|
|
180
|
+
targetEl.style.opacity = '0.5'
|
|
181
|
+
targetEl.classList.add('epx-widget-dragging')
|
|
182
|
+
|
|
183
|
+
// 注意:不要设置 pointer-events: none,否则会阻止 drop 事件
|
|
184
|
+
// 使用 CSS 类来控制样式即可
|
|
185
|
+
|
|
186
|
+
// 通知 designer 开始拖拽(使用统一的拖拽状态管理)
|
|
187
|
+
if (designer.startDrag) {
|
|
188
|
+
designer.startDrag({
|
|
189
|
+
source: 'preview',
|
|
190
|
+
data: dragData,
|
|
191
|
+
title: widgetInfo.TITLE || widget.title,
|
|
192
|
+
icon: widgetInfo.ICON,
|
|
193
|
+
x: event.clientX,
|
|
194
|
+
y: event.clientY,
|
|
195
|
+
isNative: true
|
|
196
|
+
})
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// 组件拖拽结束
|
|
201
|
+
const handleDragEnd = (event) => {
|
|
202
|
+
event.stopPropagation()
|
|
203
|
+
|
|
204
|
+
// 恢复样式
|
|
205
|
+
targetEl.style.opacity = '1'
|
|
206
|
+
targetEl.classList.remove('epx-widget-dragging')
|
|
207
|
+
|
|
208
|
+
// 预览区域组件拖拽结束,需要关闭悬浮窗
|
|
209
|
+
// 与组件库不同,预览区域的组件不会在拖拽开始时关闭/销毁,
|
|
210
|
+
// 所以可以安全地发送 'drag-end' 事件来关闭悬浮窗
|
|
211
|
+
if (designer.emitEvent) {
|
|
212
|
+
designer.emitEvent('drag-end')
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// 保存事件处理函数和元素引用,以便后续移除
|
|
217
|
+
el._widgetTargetEl = targetEl
|
|
218
|
+
el._widgetMouseEnter = handleMouseEnter
|
|
219
|
+
el._widgetMouseLeave = handleMouseLeave
|
|
220
|
+
el._widgetClick = handleClick
|
|
221
|
+
el._widgetDragStart = handleDragStart
|
|
222
|
+
el._widgetDragEnd = handleDragEnd
|
|
223
|
+
|
|
224
|
+
targetEl.addEventListener('mouseenter', handleMouseEnter)
|
|
225
|
+
targetEl.addEventListener('mouseleave', handleMouseLeave)
|
|
226
|
+
targetEl.addEventListener('click', handleClick)
|
|
227
|
+
targetEl.addEventListener('dragstart', handleDragStart)
|
|
228
|
+
targetEl.addEventListener('dragend', handleDragEnd)
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// 立即执行,如果组件还没挂载,在 inserted 钩子中再执行一次
|
|
232
|
+
applyDirective()
|
|
233
|
+
el._applyDirective = applyDirective
|
|
234
|
+
},
|
|
235
|
+
mounted (el, binding) {
|
|
236
|
+
// 组件插入后再次应用,确保找到正确的根元素;
|
|
237
|
+
// 组件在同一 tick 内挂载又卸载时 unmounted 已删掉该引用,回调里要再判一次
|
|
238
|
+
if (el._applyDirective) {
|
|
239
|
+
setTimeout(() => {
|
|
240
|
+
if (typeof el._applyDirective === 'function') el._applyDirective()
|
|
241
|
+
}, 0)
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
updated (el, binding) {
|
|
245
|
+
// console.log('update', binding.value)
|
|
246
|
+
// const { widget } = binding.value || {}
|
|
247
|
+
// if (!widget) return
|
|
248
|
+
|
|
249
|
+
// // 更新 CSS 样式
|
|
250
|
+
// if (widget.css) {
|
|
251
|
+
// appendCss(widget.id, widget.css)
|
|
252
|
+
// }
|
|
253
|
+
},
|
|
254
|
+
unmounted (el) {
|
|
255
|
+
detach(el)
|
|
256
|
+
delete el._applyDirective
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// 拖拽插入位置计算。children 的 rect 在一次拖拽悬停期间只测量一次(dragenter 时),dragover 高频复用;
|
|
2
|
+
// 画布滚动时用 scrollTop 差值修正,dragleave / drop 时清缓存。此前每次 dragover 都遍历三遍 children 并强制布局。
|
|
3
|
+
const SKIP_CLASSES = ['epx-page-designer-widget-preview__no-widget', 'epx-widget-dragging']
|
|
4
|
+
|
|
5
|
+
export function createDropCache () {
|
|
6
|
+
return { listEl: null, scrollTop: 0, listRect: null, rects: [] }
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function clearDropCache (cache) {
|
|
10
|
+
cache.listEl = null
|
|
11
|
+
cache.rects = []
|
|
12
|
+
cache.listRect = null
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function scrollerOf (listEl) {
|
|
16
|
+
return listEl.closest('.epx-page-designer-widget-preview') || document.scrollingElement || document.documentElement
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function measure (cache, listEl) {
|
|
20
|
+
const scrollTop = scrollerOf(listEl).scrollTop || 0
|
|
21
|
+
if (cache.listEl !== listEl) {
|
|
22
|
+
const children = [...listEl.children].filter(el => !SKIP_CLASSES.some(cls => el.classList.contains(cls)))
|
|
23
|
+
cache.listEl = listEl
|
|
24
|
+
cache.scrollTop = scrollTop
|
|
25
|
+
cache.listRect = listEl.getBoundingClientRect()
|
|
26
|
+
cache.rects = children.map(el => el.getBoundingClientRect())
|
|
27
|
+
}
|
|
28
|
+
return { listRect: cache.listRect, rects: cache.rects, delta: cache.scrollTop - scrollTop }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function insertIndex (cache, listEl, clientY) {
|
|
32
|
+
if (!listEl || !listEl.children || !listEl.children.length) return 0
|
|
33
|
+
const { rects, delta } = measure(cache, listEl)
|
|
34
|
+
for (let i = 0; i < rects.length; i++) {
|
|
35
|
+
const rect = rects[i]
|
|
36
|
+
if (rect.top + delta + rect.height / 2 > clientY) return i
|
|
37
|
+
}
|
|
38
|
+
return rects.length
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function insertLineRect (cache, listEl, clientY) {
|
|
42
|
+
if (!listEl) return null
|
|
43
|
+
const { listRect, rects, delta } = measure(cache, listEl)
|
|
44
|
+
const index = insertIndex(cache, listEl, clientY)
|
|
45
|
+
let top
|
|
46
|
+
if (rects.length === 0) top = listRect.top + delta + listRect.height / 2
|
|
47
|
+
else if (index === 0) top = rects[0].top + delta
|
|
48
|
+
else if (index >= rects.length) top = rects[rects.length - 1].bottom + delta
|
|
49
|
+
else top = rects[index - 1].bottom + delta
|
|
50
|
+
return { top, left: listRect.left, width: listRect.width }
|
|
51
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import WidgetPreview from './Preview.vue'
|
|
2
|
+
import WidgetPreviewItem from './PreviewItem.vue'
|
|
3
|
+
import WidgetPreviewContainer from './Container.vue'
|
|
4
|
+
import WidgetPreviewPlaceholder from './Placeholder.vue'
|
|
5
|
+
import WidgetPreviewMixin from './Mixin'
|
|
6
|
+
import WidgetPreviewTemplate from './Template'
|
|
7
|
+
import WidgetWrapper from './WidgetWrapper.vue'
|
|
8
|
+
import HoverOverlay from './HoverOverlay.vue'
|
|
9
|
+
import SelectedOverlay from './SelectedOverlay.vue'
|
|
10
|
+
import DropZoneOverlay from './DropZoneOverlay.vue'
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
WidgetPreview,
|
|
14
|
+
WidgetPreviewItem,
|
|
15
|
+
WidgetPreviewContainer,
|
|
16
|
+
WidgetPreviewPlaceholder,
|
|
17
|
+
WidgetPreviewMixin,
|
|
18
|
+
WidgetPreviewTemplate,
|
|
19
|
+
WidgetWrapper,
|
|
20
|
+
HoverOverlay,
|
|
21
|
+
SelectedOverlay,
|
|
22
|
+
DropZoneOverlay
|
|
23
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// 选中 / 悬停 / 放置区三个浮层共用的定位逻辑:事件驱动,不用 rAF 轮询。
|
|
2
|
+
// 此前三个浮层各跑一个 requestAnimationFrame 死循环,每帧 getBoundingClientRect(强制布局)
|
|
3
|
+
// 并赋新 style 对象触发 patch,什么都不做也在烧 CPU,页面越大越卡。
|
|
4
|
+
// 触发源:visible / targetElement 变化、window 滚动与缩放、目标与画布内层的尺寸变化(ResizeObserver)、
|
|
5
|
+
// 画布子树的结构与 style/class 变化(MutationObserver);多次触发合并到一帧,rect 没变不写 style。
|
|
6
|
+
export default {
|
|
7
|
+
data () {
|
|
8
|
+
return {
|
|
9
|
+
overlayStyle: {}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
watch: {
|
|
13
|
+
visible (v) {
|
|
14
|
+
if (v) this.attachOverlayWatchers()
|
|
15
|
+
else this.detachOverlayWatchers()
|
|
16
|
+
},
|
|
17
|
+
targetElement () {
|
|
18
|
+
this.attachOverlayWatchers()
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
mounted () {
|
|
22
|
+
window.addEventListener('scroll', this.scheduleOverlayUpdate, true)
|
|
23
|
+
window.addEventListener('resize', this.scheduleOverlayUpdate)
|
|
24
|
+
if (this.visible) this.attachOverlayWatchers()
|
|
25
|
+
},
|
|
26
|
+
beforeUnmount () {
|
|
27
|
+
window.removeEventListener('scroll', this.scheduleOverlayUpdate, true)
|
|
28
|
+
window.removeEventListener('resize', this.scheduleOverlayUpdate)
|
|
29
|
+
this.detachOverlayWatchers()
|
|
30
|
+
},
|
|
31
|
+
methods: {
|
|
32
|
+
attachOverlayWatchers () {
|
|
33
|
+
this.detachOverlayWatchers()
|
|
34
|
+
if (!this.visible || !this.targetElement) return
|
|
35
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
36
|
+
this._overlayResize = new ResizeObserver(() => this.scheduleOverlayUpdate())
|
|
37
|
+
this._overlayResize.observe(this.targetElement)
|
|
38
|
+
const inner = document.querySelector('.epx-page-designer-widget-preview__draggable')
|
|
39
|
+
if (inner) this._overlayResize.observe(inner)
|
|
40
|
+
}
|
|
41
|
+
const canvas = document.querySelector('.epx-page-designer-widget-preview')
|
|
42
|
+
if (canvas && typeof MutationObserver !== 'undefined') {
|
|
43
|
+
this._overlayMutation = new MutationObserver(() => this.scheduleOverlayUpdate())
|
|
44
|
+
this._overlayMutation.observe(canvas, { subtree: true, childList: true, attributes: true, attributeFilter: ['style', 'class'] })
|
|
45
|
+
}
|
|
46
|
+
this._overlayRect = null
|
|
47
|
+
this.scheduleOverlayUpdate()
|
|
48
|
+
},
|
|
49
|
+
detachOverlayWatchers () {
|
|
50
|
+
if (this._overlayResize) {
|
|
51
|
+
this._overlayResize.disconnect()
|
|
52
|
+
this._overlayResize = null
|
|
53
|
+
}
|
|
54
|
+
if (this._overlayMutation) {
|
|
55
|
+
this._overlayMutation.disconnect()
|
|
56
|
+
this._overlayMutation = null
|
|
57
|
+
}
|
|
58
|
+
if (this._overlayFrame) {
|
|
59
|
+
cancelAnimationFrame(this._overlayFrame)
|
|
60
|
+
this._overlayFrame = null
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
scheduleOverlayUpdate () {
|
|
64
|
+
if (this._overlayFrame) return
|
|
65
|
+
this._overlayFrame = requestAnimationFrame(() => {
|
|
66
|
+
this._overlayFrame = null
|
|
67
|
+
this.updatePosition()
|
|
68
|
+
})
|
|
69
|
+
},
|
|
70
|
+
updatePosition () {
|
|
71
|
+
if (!this.visible || !this.targetElement || !this.targetElement.isConnected) return
|
|
72
|
+
const rect = this.targetElement.getBoundingClientRect()
|
|
73
|
+
const last = this._overlayRect
|
|
74
|
+
if (last && last.top === rect.top && last.left === rect.left && last.width === rect.width && last.height === rect.height) return
|
|
75
|
+
this._overlayRect = { top: rect.top, left: rect.left, width: rect.width, height: rect.height }
|
|
76
|
+
if ('isCovered' in this.$data) this.isCovered = rect.top < 14
|
|
77
|
+
this.overlayStyle = {
|
|
78
|
+
position: 'fixed',
|
|
79
|
+
top: rect.top + 'px',
|
|
80
|
+
left: rect.left + 'px',
|
|
81
|
+
width: rect.width + 'px',
|
|
82
|
+
height: rect.height + 'px',
|
|
83
|
+
pointerEvents: 'none',
|
|
84
|
+
zIndex: this.overlayZIndex || 100
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// 画布组件 → 预览组件名。此前 Preview / Container / Template / PreviewItem / WidgetWrapper 各写一份
|
|
2
|
+
// 「返回函数的 computed」,每个子项每次渲染都查一遍组件库 + 组件注册表;这里统一并缓存命中的结果。
|
|
3
|
+
// 只缓存命中的:未注册的组件可能稍后由 $loadComponent 异步注册,miss 不能记死。
|
|
4
|
+
import { resolveComponent } from '@epxing/core/src/app'
|
|
5
|
+
|
|
6
|
+
const cache = new Map()
|
|
7
|
+
|
|
8
|
+
export function resolvePreviewName (designer, widget) {
|
|
9
|
+
const { contentType, type } = widget
|
|
10
|
+
const cacheKey = contentType + '|' + (type || '')
|
|
11
|
+
const hit = cache.get(cacheKey)
|
|
12
|
+
if (hit) return hit
|
|
13
|
+
const widgetInfo = designer.getWidgetByType(contentType, type) || {}
|
|
14
|
+
let previewCompName = contentType + '--preview'
|
|
15
|
+
let hasPreview = resolveComponent('epx-' + previewCompName)
|
|
16
|
+
if (!hasPreview && widgetInfo.UP_PAGE) {
|
|
17
|
+
const parent = designer.allWidgets.find(item => item.ID === widgetInfo.UP_PAGE)
|
|
18
|
+
if (parent) {
|
|
19
|
+
previewCompName = parent.CODE + '--preview'
|
|
20
|
+
hasPreview = resolveComponent('epx-' + previewCompName)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (hasPreview) {
|
|
24
|
+
const name = 'epx-' + previewCompName
|
|
25
|
+
cache.set(cacheKey, name)
|
|
26
|
+
return name
|
|
27
|
+
}
|
|
28
|
+
return widgetInfo.CONTAINER === '1' ? 'epx-page-designer-widget-preview-container' : 'epx-page-designer-widget-preview-placeholder'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function clearPreviewNameCache () {
|
|
32
|
+
cache.clear()
|
|
33
|
+
}
|