@gct-paas/design 0.1.5-dev.6 → 0.1.5-dev.8

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.
Files changed (192) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/loader.esm.min.js +1 -1
  3. package/es/components/design/design-content/design-content.css +76 -0
  4. package/es/components/design/design-content/design-content.d.ts +190 -0
  5. package/es/components/design/design-content/design-content.mjs +274 -0
  6. package/es/components/design/design-drag-item/design-drag-item.css +179 -0
  7. package/es/components/design/design-drag-item/design-drag-item.d.ts +56 -0
  8. package/es/components/design/design-drag-item/design-drag-item.mjs +237 -0
  9. package/es/components/design/design-drop-container/design-drop-container.css +103 -0
  10. package/es/components/design/design-drop-container/design-drop-container.d.ts +92 -0
  11. package/es/components/design/design-drop-container/design-drop-container.mjs +182 -0
  12. package/es/components/design/design-drop-line/design-drop-line.css +165 -0
  13. package/es/components/design/design-drop-line/design-drop-line.d.ts +73 -0
  14. package/es/components/design/design-drop-line/design-drop-line.mjs +136 -0
  15. package/es/components/design/design-item-actions/design-item-actions.css +97 -0
  16. package/es/components/design/design-item-actions/design-item-actions.d.ts +42 -0
  17. package/es/components/design/design-item-actions/design-item-actions.mjs +147 -0
  18. package/es/components/design/design-item-highlighter/design-item-highlighter.css +70 -0
  19. package/es/components/design/design-item-highlighter/design-item-highlighter.d.ts +168 -0
  20. package/es/components/design/design-item-highlighter/design-item-highlighter.mjs +155 -0
  21. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.css +85 -0
  22. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.d.ts +53 -0
  23. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.mjs +169 -0
  24. package/es/components/design/design-item-hover-title/design-item-hover-title.css +12 -0
  25. package/es/components/design/design-item-hover-title/design-item-hover-title.d.ts +60 -0
  26. package/es/components/design/design-item-hover-title/design-item-hover-title.mjs +60 -0
  27. package/es/components/design/design-item-preview/design-item-preview.css +91 -0
  28. package/es/components/design/design-item-preview/design-item-preview.d.ts +1 -0
  29. package/es/components/design/design-item-preview/design-item-preview.mjs +32 -0
  30. package/es/components/design/design-not-drag-item/design-not-drag-item.css +67 -0
  31. package/es/components/design/design-not-drag-item/design-not-drag-item.d.ts +50 -0
  32. package/es/components/design/design-not-drag-item/design-not-drag-item.mjs +68 -0
  33. package/es/components/design/design-not-found/design-not-found.css +68 -0
  34. package/es/components/design/design-not-found/design-not-found.d.ts +14 -0
  35. package/es/components/design/design-not-found/design-not-found.mjs +19 -0
  36. package/es/components/design/index.d.ts +2 -0
  37. package/es/components/design/index.mjs +2 -0
  38. package/es/components/design-save-tip/design-save-tip.mjs +1 -1
  39. package/es/components/editor/index.mjs +2 -0
  40. package/es/components/editor/length-unit-editor/length-unit-editor.vue.d.ts +13 -0
  41. package/es/components/editor/length-unit-editor/length-unit-editor.vue.mjs +5 -0
  42. package/es/components/editor/length-unit-editor/length-unit-editor.vue_vue_type_script_setup_true_name_length-unit-editor_lang.mjs +47 -0
  43. package/es/components/field-transfer/components/field-transfer-modal.vue.d.ts +5 -1
  44. package/es/components/field-transfer/components/field-transfer-modal.vue.mjs +2 -2
  45. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_script_setup_true_name_field-transfer-modal_lang.mjs +2 -1
  46. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_711e6992_lang.css +8 -0
  47. package/es/components/field-transfer/index.d.ts +2 -0
  48. package/es/components/field-transfer/index.mjs +1 -0
  49. package/es/components/index.d.ts +5 -2
  50. package/es/components/index.mjs +10 -2
  51. package/es/components/material/index.d.ts +1 -0
  52. package/es/components/material/index.mjs +1 -0
  53. package/es/components/material/material-content/material-content.css +86 -0
  54. package/es/components/material/material-content/material-content.d.ts +1 -0
  55. package/es/components/material/material-content/material-content.mjs +49 -0
  56. package/es/components/material/material-module/material-module.css +104 -0
  57. package/es/components/material/material-module/material-module.d.ts +60 -0
  58. package/es/components/material/material-module/material-module.mjs +67 -0
  59. package/es/components/material/material-module-drag-container/material-module-drag-container.css +69 -0
  60. package/es/components/material/material-module-drag-container/material-module-drag-container.d.ts +56 -0
  61. package/es/components/material/material-module-drag-container/material-module-drag-container.mjs +21 -0
  62. package/es/components/material/material-module-drag-item/material-module-drag-item.css +83 -0
  63. package/es/components/material/material-module-drag-item/material-module-drag-item.d.ts +13 -0
  64. package/es/components/material/material-module-drag-item/material-module-drag-item.mjs +66 -0
  65. package/es/components/material/material-outline-tree/material-outline-tree.css +81 -0
  66. package/es/components/material/material-outline-tree/material-outline-tree.d.ts +13 -0
  67. package/es/components/material/material-outline-tree/material-outline-tree.mjs +67 -0
  68. package/es/components/material/material-tab-pane/material-tab-pane.css +68 -0
  69. package/es/components/material/material-tab-pane/material-tab-pane.d.ts +13 -0
  70. package/es/components/material/material-tab-pane/material-tab-pane.mjs +19 -0
  71. package/es/components/material/material-tabs/material-tabs.css +105 -0
  72. package/es/components/material/material-tabs/material-tabs.d.ts +103 -0
  73. package/es/components/material/material-tabs/material-tabs.mjs +44 -0
  74. package/es/components/modal-name-editor/modal-name-editor.d.ts +1 -11
  75. package/es/components/modal-name-editor/modal-name-editor.mjs +27 -38
  76. package/es/components/multi-field/index.d.ts +2 -0
  77. package/es/components/multi-field/index.mjs +1 -0
  78. package/es/components/multi-field/multi-field-display.vue.d.ts +8 -0
  79. package/es/components/multi-field/multi-field-display.vue.mjs +7 -0
  80. package/es/components/multi-field/multi-field-display.vue_vue_type_script_setup_true_lang.mjs +32 -0
  81. package/es/components/multi-field/multi-field-display.vue_vue_type_style_index_0_scoped_802ade7b_lang.css +4 -0
  82. package/es/components/multi-field/multi-field-item.vue.d.ts +6 -0
  83. package/es/components/multi-field/multi-field-item.vue.mjs +7 -0
  84. package/es/components/multi-field/multi-field-item.vue_vue_type_script_setup_true_lang.mjs +47 -0
  85. package/es/components/multi-field/multi-field-item.vue_vue_type_style_index_0_scoped_881cb08e_lang.css +31 -0
  86. package/es/components/panel/index.d.ts +1 -0
  87. package/es/components/panel/index.mjs +1 -0
  88. package/es/components/panel/panel-content/panel-content.css +189 -0
  89. package/es/components/panel/panel-content/panel-content.d.ts +19 -0
  90. package/es/components/panel/panel-content/panel-content.mjs +48 -0
  91. package/es/components/panel/panel-form/panel-form.css +67 -0
  92. package/es/components/panel/panel-form/panel-form.d.ts +62 -0
  93. package/es/components/panel/panel-form/panel-form.mjs +59 -0
  94. package/es/components/panel/panel-path/panel-path.css +89 -0
  95. package/es/components/panel/panel-path/panel-path.d.ts +35 -0
  96. package/es/components/panel/panel-path/panel-path.mjs +52 -0
  97. package/es/components/user-occupy/user-occupy.vue.mjs +2 -2
  98. package/es/components/user-occupy/user-occupy.vue_vue_type_script_setup_true_lang.mjs +2 -2
  99. package/es/components/user-occupy/{user-occupy.vue_vue_type_style_index_0_scoped_24cb9749_lang.css → user-occupy.vue_vue_type_style_index_0_scoped_9b136922_lang.css} +6 -6
  100. package/es/controller/index.d.ts +1 -0
  101. package/es/controller/index.mjs +1 -0
  102. package/es/controller/view/design-view.controller.d.ts +48 -0
  103. package/es/controller/view/design-view.controller.mjs +150 -0
  104. package/es/create-app-vue.mjs +2 -0
  105. package/es/editor/content-tag-style/content-tag-style.css +164 -0
  106. package/es/editor/content-tag-style/content-tag-style.d.ts +112 -0
  107. package/es/editor/content-tag-style/content-tag-style.mjs +80 -0
  108. package/es/editor/content-tag-style/index.d.ts +8 -0
  109. package/es/editor/content-tag-style/index.mjs +11 -0
  110. package/es/editor/field-info-editor/field-info-editor.css +125 -0
  111. package/es/editor/field-info-editor/field-info-editor.d.ts +111 -0
  112. package/es/editor/field-info-editor/field-info-editor.mjs +38 -0
  113. package/es/editor/field-info-editor/index.d.ts +8 -0
  114. package/es/editor/field-info-editor/index.mjs +9 -0
  115. package/es/editor/index.d.ts +5 -0
  116. package/es/editor/index.mjs +19 -0
  117. package/es/editor/model-field-select/index.d.ts +8 -0
  118. package/es/editor/model-field-select/index.mjs +9 -0
  119. package/es/editor/model-field-select/model-field-select.css +148 -0
  120. package/es/editor/model-field-select/model-field-select.d.ts +42 -0
  121. package/es/editor/model-field-select/model-field-select.mjs +217 -0
  122. package/es/editor/style-border/index.d.ts +4 -0
  123. package/es/editor/style-border/index.mjs +11 -0
  124. package/es/editor/style-border/style-border.d.ts +35 -0
  125. package/es/editor/style-border/style-border.mjs +38 -0
  126. package/es/editor/style-font/index.d.ts +4 -0
  127. package/es/editor/style-font/index.mjs +11 -0
  128. package/es/editor/style-font/style-font.css +86 -0
  129. package/es/editor/style-font/style-font.d.ts +35 -0
  130. package/es/editor/style-font/style-font.mjs +36 -0
  131. package/es/editor/style-position/index.d.ts +4 -0
  132. package/es/editor/style-position/index.mjs +11 -0
  133. package/es/editor/style-position/style-position.d.ts +35 -0
  134. package/es/editor/style-position/style-position.mjs +35 -0
  135. package/es/editor/style-spacing/index.d.ts +4 -0
  136. package/es/editor/style-spacing/index.mjs +11 -0
  137. package/es/editor/style-spacing/style-spacing.d.ts +34 -0
  138. package/es/editor/style-spacing/style-spacing.mjs +60 -0
  139. package/es/hooks/design-view/designer/useDesignSave.mjs +3 -1
  140. package/es/hooks/index.d.ts +2 -1
  141. package/es/hooks/index.mjs +3 -2
  142. package/es/hooks/use-design-view-controller/use-design-view-controller.d.ts +11 -0
  143. package/es/hooks/use-design-view-controller/use-design-view-controller.mjs +31 -0
  144. package/es/index.d.ts +5 -2
  145. package/es/index.mjs +23 -8
  146. package/es/interface/controller/i-design-view.controller.d.ts +3 -5
  147. package/es/interface/form-editor/child-list-editor/child-list-editor.d.ts +114 -0
  148. package/es/interface/form-editor/index.d.ts +9 -0
  149. package/es/interface/form-editor/style-border/i-style-border.controller.d.ts +11 -0
  150. package/es/interface/form-editor/style-border/i-style-border.d.ts +22 -0
  151. package/es/interface/form-editor/style-font/i-style-font.controller.d.ts +11 -0
  152. package/es/interface/form-editor/style-font/i-style-font.d.ts +13 -0
  153. package/es/interface/form-editor/style-position/i-style-position.controller.d.ts +11 -0
  154. package/es/interface/form-editor/style-position/i-style-position.d.ts +13 -0
  155. package/es/interface/form-editor/style-spacing/i-style-spacing.controller.d.ts +11 -0
  156. package/es/interface/form-editor/style-spacing/i-style-spacing.d.ts +22 -0
  157. package/es/interface/index.d.ts +2 -0
  158. package/es/interface/provider/i-node-provider.d.ts +140 -0
  159. package/es/provider/design-editor-node/design-editor-node.provider.d.ts +41 -0
  160. package/es/provider/design-editor-node/design-editor-node.provider.mjs +57 -0
  161. package/es/provider/index.d.ts +2 -0
  162. package/es/provider/index.mjs +2 -0
  163. package/es/provider/node-base/node-base.provider.d.ts +25 -0
  164. package/es/provider/node-base/node-base.provider.mjs +34 -0
  165. package/es/register/index.d.ts +1 -0
  166. package/es/register/index.mjs +1 -0
  167. package/es/register/node/node.register.d.ts +113 -0
  168. package/es/register/node/node.register.mjs +141 -0
  169. package/es/store/index.d.ts +1 -0
  170. package/es/store/index.mjs +1 -0
  171. package/es/store/view/design-view.store.d.ts +12 -0
  172. package/es/store/view/design-view.store.mjs +327 -0
  173. package/es/utils/can-drop/can-drop.d.ts +12 -0
  174. package/es/utils/can-drop/can-drop.mjs +48 -0
  175. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.d.ts +1 -1
  176. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.mjs +29 -1
  177. package/es/utils/index.d.ts +1 -0
  178. package/es/utils/index.mjs +1 -0
  179. package/package.json +12 -11
  180. package/es/components/field-cascader/index.d.ts +0 -2
  181. package/es/components/field-cascader/index.mjs +0 -1
  182. package/es/components/field-cascader/src/FieldCascader.vue.d.ts +0 -87
  183. package/es/components/field-cascader/src/FieldCascader.vue.mjs +0 -6
  184. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_script_setup_true_lang.mjs +0 -115
  185. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_style_index_0_lang.css +0 -69
  186. package/es/components/field-cascader/src/SearchInput.vue.d.ts +0 -11
  187. package/es/components/field-cascader/src/SearchInput.vue.mjs +0 -7
  188. package/es/components/field-cascader/src/SearchInput.vue_vue_type_script_setup_true_lang.mjs +0 -38
  189. package/es/components/field-cascader/src/SearchInput.vue_vue_type_style_index_0_scoped_512c4b38_lang.css +0 -9
  190. package/es/components/field-cascader/src/hooks.d.ts +0 -129
  191. package/es/components/field-cascader/src/hooks.mjs +0 -163
  192. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_0c9dd8a1_lang.css +0 -5
@@ -0,0 +1,179 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-design-drag-item {
66
+ position: relative;
67
+ overflow: hidden;
68
+ cursor: pointer;
69
+ }
70
+ .gct-design-drag-item__item-mask {
71
+ position: absolute;
72
+ inset: 0;
73
+ z-index: 1;
74
+ }
75
+
76
+ .gct-design-drag-item.is-dragging .gct-design-drag-item__dragging-mask {
77
+ position: absolute;
78
+ inset: 0;
79
+ background-color: rgba(82, 82, 82, 0.2);
80
+ }
81
+
82
+ .gct-design-drag-item.is-expansion {
83
+ border: 1px dashed var(--ant-primary-color);
84
+ }
85
+ .gct-design-drag-item.is-expansion .gct-design-drag-item__indicator {
86
+ display: none;
87
+ }
88
+
89
+ .gct-design-drag-item[is-action-dragging=true] .gct-design-drag-item__dragging-mask {
90
+ position: absolute;
91
+ inset: 0;
92
+ background-color: rgba(82, 82, 82, 0.2);
93
+ }
94
+
95
+ .gct-design-drag-item-indicator {
96
+ position: absolute;
97
+ z-index: 1;
98
+ display: none;
99
+ background-color: white;
100
+ }
101
+ .gct-design-drag-item-indicator__horizontal {
102
+ left: 0;
103
+ width: 100%;
104
+ height: 4px;
105
+ }
106
+ .gct-design-drag-item-indicator__horizontal.is-before {
107
+ top: -2px;
108
+ }
109
+
110
+ .gct-design-drag-item-indicator__horizontal.is-after {
111
+ bottom: -2px;
112
+ }
113
+
114
+ .gct-design-drag-item-indicator__horizontal--line {
115
+ width: 100%;
116
+ height: 2px;
117
+ margin-top: 1px;
118
+ background-color: var(--ant-primary-color);
119
+ }
120
+
121
+ .gct-design-drag-item-indicator__horizontal--start-line {
122
+ position: absolute;
123
+ top: 0;
124
+ left: 0;
125
+ width: 2px;
126
+ height: 100%;
127
+ background-color: var(--ant-primary-color);
128
+ }
129
+
130
+ .gct-design-drag-item-indicator__horizontal--end-line {
131
+ position: absolute;
132
+ top: 0;
133
+ right: 0;
134
+ width: 2px;
135
+ height: 100%;
136
+ background-color: var(--ant-primary-color);
137
+ }
138
+
139
+ .gct-design-drag-item-indicator__vertical {
140
+ top: 0;
141
+ width: 4px;
142
+ height: 100%;
143
+ }
144
+ .gct-design-drag-item-indicator__vertical.is-before {
145
+ left: -2px;
146
+ }
147
+
148
+ .gct-design-drag-item-indicator__vertical.is-after {
149
+ right: -2px;
150
+ }
151
+
152
+ .gct-design-drag-item-indicator__vertical--line {
153
+ width: 2px;
154
+ height: 100%;
155
+ margin-left: 1px;
156
+ background-color: var(--ant-primary-color);
157
+ }
158
+
159
+ .gct-design-drag-item-indicator__vertical--start-line {
160
+ position: absolute;
161
+ top: 0;
162
+ left: 0;
163
+ width: 100%;
164
+ height: 2px;
165
+ background-color: var(--ant-primary-color);
166
+ }
167
+
168
+ .gct-design-drag-item-indicator__vertical--end-line {
169
+ position: absolute;
170
+ bottom: 0;
171
+ left: 0;
172
+ width: 100%;
173
+ height: 2px;
174
+ background-color: var(--ant-primary-color);
175
+ }
176
+
177
+ .gct-design-drag-item-indicator.is-shallow-over {
178
+ display: block;
179
+ }
@@ -0,0 +1,56 @@
1
+ import { PropType } from 'vue';
2
+ import { IDragCollect, IDropCollect, INodeProvider } from '../../../interface';
3
+ import { IDesignNode } from '@gct-paas/schema';
4
+ export declare const DesignDragItem: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
5
+ group: {
6
+ type: StringConstructor;
7
+ required: true;
8
+ };
9
+ parent: {
10
+ type: PropType<IDesignNode>;
11
+ };
12
+ direction: {
13
+ type: PropType<"vertical" | "horizontal">;
14
+ required: true;
15
+ };
16
+ index: {
17
+ type: NumberConstructor;
18
+ required: true;
19
+ };
20
+ data: {
21
+ type: PropType<IDesignNode>;
22
+ required: true;
23
+ };
24
+ }>, {
25
+ ns: import('@gct-paas/core').Namespace;
26
+ elRef: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
27
+ provider: INodeProvider<IDesignNode<import('@gct-paas/schema').IDesignNodeData>>;
28
+ isActive: import('vue').ComputedRef<boolean>;
29
+ isHover: import('vue').ComputedRef<boolean>;
30
+ isExpansion: import('vue').Ref<boolean, boolean>;
31
+ style: import('vue').ComputedRef<IObject | null>;
32
+ dragCollect: import('vue').Ref<IDragCollect, IDragCollect>;
33
+ dropCollect: import('vue').Ref<IDropCollect, IDropCollect>;
34
+ isBeforeHover: import('vue').Ref<boolean, boolean>;
35
+ onActive: (e: MouseEvent) => void;
36
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
37
+ group: {
38
+ type: StringConstructor;
39
+ required: true;
40
+ };
41
+ parent: {
42
+ type: PropType<IDesignNode>;
43
+ };
44
+ direction: {
45
+ type: PropType<"vertical" | "horizontal">;
46
+ required: true;
47
+ };
48
+ index: {
49
+ type: NumberConstructor;
50
+ required: true;
51
+ };
52
+ data: {
53
+ type: PropType<IDesignNode>;
54
+ required: true;
55
+ };
56
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,237 @@
1
+ import { DesignItemAttribute, DesignViewPrefix, InsertNodeMode } from "../../../constant/index.mjs";
2
+ import { NodeRegister } from "../../../register/node/node.register.mjs";
3
+ import "../../../register/index.mjs";
4
+ import { isCanCrop } from "../../../utils/can-drop/can-drop.mjs";
5
+ import "../../../utils/index.mjs";
6
+ import { useDesignViewController } from "../../../hooks/use-design-view-controller/use-design-view-controller.mjs";
7
+ import "../../../hooks/index.mjs";
8
+ import './design-drag-item.css';/* empty css */
9
+ import { clone } from "lodash-es";
10
+ import { calcStyle, useNamespace } from "@gct-paas/core";
11
+ import { computed, createVNode, defineComponent, mergeProps, nextTick, onMounted, ref, watch } from "vue";
12
+ import { toRefs as toRefs$1 } from "@vueuse/core";
13
+ import { useDrag, useDrop } from "vue3-dnd";
14
+ import { getEmptyImage } from "react-dnd-html5-backend";
15
+ //#region src/components/design/design-drag-item/design-drag-item.tsx
16
+ var DesignDragItem = /* @__PURE__ */ defineComponent({
17
+ name: "DesignDragItem",
18
+ props: {
19
+ group: {
20
+ type: String,
21
+ required: true
22
+ },
23
+ parent: { type: Object },
24
+ direction: {
25
+ type: String,
26
+ required: true
27
+ },
28
+ index: {
29
+ type: Number,
30
+ required: true
31
+ },
32
+ data: {
33
+ type: Object,
34
+ required: true
35
+ }
36
+ },
37
+ setup(props) {
38
+ const ns = useNamespace("design-drag-item");
39
+ const c = useDesignViewController();
40
+ const store = c.store;
41
+ const elRef = ref(null);
42
+ const isBeforeHover = ref(false);
43
+ const provider = NodeRegister.get(props.data.type, store.prefix);
44
+ const isActive = computed(() => {
45
+ return store.selected?.id === props.data.id;
46
+ });
47
+ const isHover = computed(() => {
48
+ return store.hoverId === props.data.id;
49
+ });
50
+ const isExpansion = ref(false);
51
+ if (props.parent) watch(() => store.count, () => {
52
+ isExpansion.value = store.isDragging && store.expansions.has(props.parent.id);
53
+ });
54
+ const { data } = toRefs$1(props.data);
55
+ const style = computed(() => {
56
+ if (provider.isCustomStyle === true) return null;
57
+ return calcStyle(data.value);
58
+ });
59
+ const [dragCollect, drag, preview] = useDrag({
60
+ type: DesignViewPrefix.CUSTOM_HOME,
61
+ item: () => {
62
+ store.setDragging(true);
63
+ return {
64
+ id: props.data.id,
65
+ group: props.group,
66
+ index: props.index,
67
+ data: clone(props.data),
68
+ mode: "move",
69
+ types: c.types(props.data)
70
+ };
71
+ },
72
+ collect: (monitor) => {
73
+ return {
74
+ canDrag: monitor.canDrag(),
75
+ isDragging: monitor.isDragging()
76
+ };
77
+ },
78
+ end: async (_, monitor) => {
79
+ store.setDragging(false);
80
+ const r = monitor.getDropResult();
81
+ if (r && r.asyncDrop) {
82
+ const result = await r.asyncDrop;
83
+ if (result && result.success && result.group !== props.group) {}
84
+ }
85
+ c.dropEnd();
86
+ },
87
+ options: { dropEffect: "move" }
88
+ });
89
+ const [dropCollect, drop] = useDrop({
90
+ accept: DesignViewPrefix.CUSTOM_HOME,
91
+ collect(monitor) {
92
+ return {
93
+ handlerId: monitor.getHandlerId(),
94
+ canDrop: monitor.canDrop(),
95
+ isShallowOver: monitor.isOver({ shallow: true }),
96
+ isOver: monitor.isOver()
97
+ };
98
+ },
99
+ hover(item, monitor) {
100
+ if (monitor.canDrop() === false || dragCollect.value.isDragging === true) return;
101
+ const isOver = monitor.isOver({ shallow: true });
102
+ if (props.data.id === item.id) return;
103
+ if (isOver) {
104
+ const rect = elRef.value.getBoundingClientRect();
105
+ const offset = monitor.getClientOffset();
106
+ let difference = 0;
107
+ if (props.direction === "vertical") {
108
+ const { top, height } = rect;
109
+ const { y } = offset;
110
+ const half = height / 2;
111
+ difference = y - top - half;
112
+ if (difference < 0) isBeforeHover.value = true;
113
+ else isBeforeHover.value = false;
114
+ }
115
+ if (props.direction === "horizontal") {
116
+ const { left, width } = rect;
117
+ const { x } = offset;
118
+ const half = width / 2;
119
+ difference = x - left - half;
120
+ if (difference < 0) isBeforeHover.value = true;
121
+ else isBeforeHover.value = false;
122
+ }
123
+ }
124
+ },
125
+ canDrop(item, _monitor) {
126
+ if (dragCollect.value.isDragging === true) return false;
127
+ return isCanCrop(props.parent, store, item);
128
+ },
129
+ drop(item, monitor) {
130
+ if (monitor.canDrop() === false || monitor.isOver({ shallow: true }) === false || dragCollect.value.isDragging === true) return;
131
+ const asyncDrop = async () => {
132
+ let _data = item.data;
133
+ const p = NodeRegister.get(_data.type, store.prefix);
134
+ if (p.beforeDrop) {
135
+ const data = await p.beforeDrop(c, item);
136
+ if (!data) return {
137
+ group: props.group,
138
+ success: false
139
+ };
140
+ _data = data;
141
+ }
142
+ if (store.insertNode(isBeforeHover.value ? InsertNodeMode.BEFORE : InsertNodeMode.AFTER, props.data, _data)) {
143
+ if (p.afterDrop) {
144
+ if (!await p.afterDrop(c, item)) return {
145
+ group: props.group,
146
+ success: false
147
+ };
148
+ }
149
+ const data = store.getNode(item.id);
150
+ if (data) nextTick(() => {
151
+ store.setActive(data);
152
+ });
153
+ return {
154
+ group: props.group,
155
+ success: true
156
+ };
157
+ }
158
+ return {
159
+ group: props.group,
160
+ success: false
161
+ };
162
+ };
163
+ return { asyncDrop: asyncDrop() };
164
+ }
165
+ });
166
+ drag(elRef);
167
+ drop(elRef);
168
+ onMounted(() => {
169
+ if (preview) preview(getEmptyImage(), { captureDraggingState: true });
170
+ });
171
+ const onActive = (e) => {
172
+ e.stopPropagation();
173
+ store.setActive(props.data);
174
+ };
175
+ watch(dropCollect, (_) => {
176
+ if (_.canDrop && _.isShallowOver) {
177
+ store.dropContainer = props.parent || null;
178
+ c.setExpansion([props.data.id]);
179
+ }
180
+ });
181
+ return {
182
+ ns,
183
+ elRef,
184
+ provider,
185
+ isActive,
186
+ isHover,
187
+ isExpansion,
188
+ style,
189
+ dragCollect,
190
+ dropCollect,
191
+ isBeforeHover,
192
+ onActive
193
+ };
194
+ },
195
+ render() {
196
+ return createVNode("div", mergeProps({
197
+ "ref": "elRef",
198
+ "id": this.data.id
199
+ }, {
200
+ [DesignItemAttribute.NODE_ID_TAG]: this.data.id,
201
+ [DesignItemAttribute.ACTIVE_TAG]: true,
202
+ [DesignItemAttribute.DESIGN_NAME]: this.data.label,
203
+ [DesignItemAttribute.DRAG_GROUP_TYPE]: this.provider.type,
204
+ [DesignItemAttribute.GROUP_TAG]: this.group,
205
+ [DesignItemAttribute.INDEX_TAG]: this.index,
206
+ [DesignItemAttribute.SELECTOR_INDEX]: this.provider.selectorIndex ?? 0
207
+ }, {
208
+ "class": [
209
+ this.ns.b(),
210
+ this.ns.is("dragging", this.dragCollect.isDragging),
211
+ this.ns.is("can-drop", this.dropCollect.canDrop),
212
+ this.ns.is("shallow-over", this.dropCollect.isShallowOver),
213
+ this.ns.is("active", this.isActive),
214
+ this.ns.is("hover", this.isHover),
215
+ this.ns.is("expansion", this.isExpansion)
216
+ ],
217
+ "style": this.style,
218
+ "onClick": this.onActive
219
+ }), [
220
+ this.$slots.default?.(),
221
+ this.provider.isDrag ? createVNode("div", { "class": this.ns.e("dragging-mask") }, null) : null,
222
+ this.provider.isDrop && this.isExpansion !== true ? createVNode("div", { "class": [
223
+ this.ns.b("indicator"),
224
+ this.ns.be("indicator", this.direction),
225
+ this.ns.is("shallow-over", !this.dragCollect?.isDragging && this.dropCollect.isShallowOver && this.dropCollect.canDrop),
226
+ this.ns.is("before", this.dropCollect.isShallowOver && this.isBeforeHover),
227
+ this.ns.is("after", this.dropCollect.isShallowOver && !this.isBeforeHover)
228
+ ] }, [
229
+ createVNode("div", { "class": [this.ns.bem("indicator", this.direction, "start-line")] }, null),
230
+ createVNode("div", { "class": [this.ns.bem("indicator", this.direction, "line")] }, null),
231
+ createVNode("div", { "class": [this.ns.bem("indicator", this.direction, "end-line")] }, null)
232
+ ]) : null
233
+ ]);
234
+ }
235
+ });
236
+ //#endregion
237
+ export { DesignDragItem };
@@ -0,0 +1,103 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-design-drop-container {
66
+ position: relative;
67
+ width: 100%;
68
+ height: 100%;
69
+ overflow-y: auto;
70
+ border: 1px solid transparent;
71
+ }
72
+ .gct-design-drop-container.is-over {
73
+ background-color: #ccc;
74
+ }
75
+
76
+ .gct-design-drop-container.is-expansion {
77
+ padding: 4px;
78
+ border: 1px dashed var(--ant-primary-color);
79
+ }
80
+
81
+ .gct-design-drop-container.is-not-children {
82
+ background-color: #FCFCFD;
83
+ border: 2px dashed #DBDBDB;
84
+ }
85
+
86
+ .gct-design-drop-container__drag-info {
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ width: 100%;
91
+ height: 100px;
92
+ font-size: 14px;
93
+ color: #C3C3C3;
94
+ }
95
+
96
+ .gct-design-drop-container__drop-mask {
97
+ position: absolute;
98
+ inset: 0;
99
+ z-index: 1;
100
+ color: rgb(93, 100, 116);
101
+ pointer-events: none;
102
+ background-color: rgba(49, 104, 236, 0.24);
103
+ }
@@ -0,0 +1,92 @@
1
+ import { PropType } from 'vue';
2
+ import { IDesignNode } from '@gct-paas/schema';
3
+ import { IDropCollect } from '../../../interface';
4
+ export declare const DesignDropContainer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
5
+ node: {
6
+ type: PropType<IDesignNode>;
7
+ required: true;
8
+ };
9
+ items: {
10
+ type: {
11
+ (arrayLength: number): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
12
+ (...items: IDesignNode<import('@gct-paas/schema').IDesignNodeData>[]): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
13
+ new (arrayLength: number): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
14
+ new (...items: IDesignNode<import('@gct-paas/schema').IDesignNodeData>[]): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
15
+ isArray(arg: any): arg is any[];
16
+ readonly prototype: any[];
17
+ from<T>(arrayLike: ArrayLike<T>): T[];
18
+ from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
19
+ from<T>(iterable: Iterable<T> | ArrayLike<T>): T[];
20
+ from<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
21
+ of<T>(...items: T[]): T[];
22
+ readonly [Symbol.species]: ArrayConstructor;
23
+ fromAsync<T>(iterableOrArrayLike: AsyncIterable<T> | Iterable<T | PromiseLike<T>> | ArrayLike<T | PromiseLike<T>>): Promise<T[]>;
24
+ fromAsync<T, U>(iterableOrArrayLike: AsyncIterable<T> | Iterable<T> | ArrayLike<T>, mapFn: (value: Awaited<T>, index: number) => U, thisArg?: any): Promise<Awaited<U>[]>;
25
+ };
26
+ required: true;
27
+ };
28
+ parent: {
29
+ type: PropType<IDesignNode>;
30
+ };
31
+ showInfo: {
32
+ type: BooleanConstructor;
33
+ default: boolean;
34
+ };
35
+ infoMsg: {
36
+ type: StringConstructor;
37
+ default: string;
38
+ };
39
+ direction: {
40
+ type: PropType<"vertical" | "horizontal">;
41
+ required: true;
42
+ };
43
+ }>, {
44
+ ns: import('@gct-paas/core').Namespace;
45
+ isExpansion: import('vue').Ref<boolean, boolean>;
46
+ rootRef: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
47
+ collect: import('vue').Ref<IDropCollect, IDropCollect>;
48
+ isDropMask: import('vue').ComputedRef<boolean | null | undefined>;
49
+ getMaskStyle: () => {};
50
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
51
+ node: {
52
+ type: PropType<IDesignNode>;
53
+ required: true;
54
+ };
55
+ items: {
56
+ type: {
57
+ (arrayLength: number): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
58
+ (...items: IDesignNode<import('@gct-paas/schema').IDesignNodeData>[]): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
59
+ new (arrayLength: number): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
60
+ new (...items: IDesignNode<import('@gct-paas/schema').IDesignNodeData>[]): IDesignNode<import('@gct-paas/schema').IDesignNodeData>[];
61
+ isArray(arg: any): arg is any[];
62
+ readonly prototype: any[];
63
+ from<T>(arrayLike: ArrayLike<T>): T[];
64
+ from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
65
+ from<T>(iterable: Iterable<T> | ArrayLike<T>): T[];
66
+ from<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
67
+ of<T>(...items: T[]): T[];
68
+ readonly [Symbol.species]: ArrayConstructor;
69
+ fromAsync<T>(iterableOrArrayLike: AsyncIterable<T> | Iterable<T | PromiseLike<T>> | ArrayLike<T | PromiseLike<T>>): Promise<T[]>;
70
+ fromAsync<T, U>(iterableOrArrayLike: AsyncIterable<T> | Iterable<T> | ArrayLike<T>, mapFn: (value: Awaited<T>, index: number) => U, thisArg?: any): Promise<Awaited<U>[]>;
71
+ };
72
+ required: true;
73
+ };
74
+ parent: {
75
+ type: PropType<IDesignNode>;
76
+ };
77
+ showInfo: {
78
+ type: BooleanConstructor;
79
+ default: boolean;
80
+ };
81
+ infoMsg: {
82
+ type: StringConstructor;
83
+ default: string;
84
+ };
85
+ direction: {
86
+ type: PropType<"vertical" | "horizontal">;
87
+ required: true;
88
+ };
89
+ }>> & Readonly<{}>, {
90
+ showInfo: boolean;
91
+ infoMsg: string;
92
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;