@epxing/dashboard 0.0.0-stage → 5.3.0-beta.1

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 (64) hide show
  1. package/API.md +79 -0
  2. package/README.md +40 -2
  3. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  4. package/dist/_virtual/preload-helper.js +88 -0
  5. package/dist/assets/technology_bg-oWIS2awO.jpg +0 -0
  6. package/dist/src/Dashboard.js +332 -0
  7. package/dist/src/DashboardGrid.js +182 -0
  8. package/dist/src/DesignGrid.js +711 -0
  9. package/dist/src/DesignItem.js +63 -0
  10. package/dist/src/Div.js +408 -0
  11. package/dist/src/Header.js +385 -0
  12. package/dist/src/Preview.js +27 -0
  13. package/dist/src/Tabs.js +468 -0
  14. package/dist/src/Title.js +101 -0
  15. package/dist/src/Widget.js +266 -0
  16. package/dist/src/chart-request-scope.js +32 -0
  17. package/dist/src/design-target.js +57 -0
  18. package/dist/src/grid/compact.js +68 -0
  19. package/dist/src/grid/compat/GridItem.js +35 -0
  20. package/dist/src/grid/compat/GridLayout.js +76 -0
  21. package/dist/src/grid/designState.js +21 -0
  22. package/dist/src/grid/engines.js +25 -0
  23. package/dist/src/grid/geometry.js +44 -0
  24. package/dist/src/grid/gridstackParams.js +69 -0
  25. package/dist/src/grid/mixins.js +108 -0
  26. package/dist/src/grid/model.js +223 -0
  27. package/dist/src/grid/useViewportGate.js +55 -0
  28. package/dist/src/index.js +26 -0
  29. package/dist/src/layout-util.js +108 -0
  30. package/dist/src/mobile-design.js +50 -0
  31. package/dist/src/theme-style.js +133 -0
  32. package/dist/style.css +1009 -0
  33. package/package.json +85 -3
  34. package/src/Dashboard.vue +459 -0
  35. package/src/DashboardGrid.vue +189 -0
  36. package/src/DesignGrid.vue +851 -0
  37. package/src/DesignItem.vue +124 -0
  38. package/src/Div.vue +419 -0
  39. package/src/Header.vue +501 -0
  40. package/src/Preview.vue +30 -0
  41. package/src/Tabs.vue +484 -0
  42. package/src/Title.vue +107 -0
  43. package/src/Widget.vue +354 -0
  44. package/src/chart-request-scope.js +22 -0
  45. package/src/design-target.js +55 -0
  46. package/src/grid/compact.js +81 -0
  47. package/src/grid/compat/GridItem.vue +30 -0
  48. package/src/grid/compat/GridLayout.vue +76 -0
  49. package/src/grid/designState.js +17 -0
  50. package/src/grid/engines.js +22 -0
  51. package/src/grid/geometry.js +55 -0
  52. package/src/grid/gridstackParams.js +72 -0
  53. package/src/grid/mixins.js +114 -0
  54. package/src/grid/model.js +259 -0
  55. package/src/grid/useViewportGate.js +57 -0
  56. package/src/index.js +28 -0
  57. package/src/layout-util.js +157 -0
  58. package/src/mobile-design.js +50 -0
  59. package/src/theme-style.js +185 -0
  60. package/types/div.d.ts +1 -0
  61. package/types/index.d.ts +7 -0
  62. package/types/tabs.d.ts +1 -0
  63. package/types/title.d.ts +1 -0
  64. package/types/widget.d.ts +1 -0
@@ -0,0 +1,63 @@
1
+ import { openBlock, createElementBlock, withModifiers, normalizeClass, createElementVNode, renderSlot, Fragment, renderList, createCommentVNode } from "vue";
2
+ /* empty css */
3
+ import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
4
+ const HANDLES = ["n", "s", "e", "w", "ne", "nw", "se", "sw"];
5
+ const _sfc_main = {
6
+ name: "epx-dashboard-design-item",
7
+ props: {
8
+ item: { type: Object, required: true },
9
+ active: Boolean,
10
+ // 是否显示悬浮切换图标:整页悬浮(grid.mode === 'float')与移动端布局不显示
11
+ floatable: { type: Boolean, default: true }
12
+ },
13
+ emits: ["select"],
14
+ data() {
15
+ return { handles: HANDLES };
16
+ },
17
+ methods: {
18
+ // 悬浮 ↔ 默认:字段直接落到 item 上(与 DesignGrid.setFloat / 属性面板 changeItemConfigs 'component' 同一路径),
19
+ // 画布按 item.float 把壳搬到悬浮层 / 碰撞层,外壳 deep watch 自动保存;关掉时层级 z 一并删掉、不留脏值。
20
+ // 点击会冒泡到根元素的 select,所以切换的同时该项也被选中
21
+ toggleFloat() {
22
+ const item = this.item;
23
+ if (item.float) {
24
+ delete item.float;
25
+ delete item.z;
26
+ } else {
27
+ item.float = true;
28
+ }
29
+ }
30
+ }
31
+ };
32
+ const _hoisted_1 = { class: "epx-dashboard-design-item__body" };
33
+ const _hoisted_2 = { class: "epx-dashboard-design-item__operates" };
34
+ const _hoisted_3 = ["title"];
35
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
36
+ return openBlock(), createElementBlock("div", {
37
+ class: normalizeClass(["epx-dashboard-design-item", { "epx-dashboard-design-item--active": $props.active }]),
38
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.$emit("select", $props.item), ["stop"]))
39
+ }, [
40
+ createElementVNode("div", _hoisted_1, [
41
+ renderSlot(_ctx.$slots, "default")
42
+ ]),
43
+ (openBlock(true), createElementBlock(Fragment, null, renderList($data.handles, (dir) => {
44
+ return openBlock(), createElementBlock("i", {
45
+ key: dir,
46
+ class: normalizeClass(["epx-dashboard-design-item__handle", "epx-dashboard-design-item__handle--" + dir])
47
+ }, null, 2);
48
+ }), 128)),
49
+ createElementVNode("div", _hoisted_2, [
50
+ $props.floatable ? (openBlock(), createElementBlock("i", {
51
+ key: 0,
52
+ class: normalizeClass(["epx-dashboard-design-item__float", "el-icon-top", { "is-on": !!$props.item.float }]),
53
+ title: $props.item.float ? "悬浮中,点击恢复默认" : "设为悬浮(可叠放、不推挤)",
54
+ onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleFloat && $options.toggleFloat(...args))
55
+ }, null, 10, _hoisted_3)) : createCommentVNode("", true),
56
+ renderSlot(_ctx.$slots, "operates")
57
+ ])
58
+ ], 2);
59
+ }
60
+ const DesignItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
61
+ export {
62
+ DesignItem as default
63
+ };
@@ -0,0 +1,408 @@
1
+ import { __vitePreload as __epxPackagePreload } from "../_virtual/preload-helper.js";
2
+ import { defineAsyncComponent, resolveComponent, openBlock, createElementBlock, normalizeStyle, normalizeClass, createElementVNode, Fragment, createCommentVNode, toDisplayString, createBlock, withCtx, resolveDynamicComponent, createVNode, createTextVNode } from "vue";
3
+ import { normalizeGridItem } from "./layout-util.js";
4
+ import DashboardGrid from "./DashboardGrid.js";
5
+ import { containerGridMixin } from "./grid/mixins.js";
6
+ /* empty css */
7
+ /* empty css */
8
+ import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
9
+ const _sfc_main = {
10
+ name: "epx-dashboard-div",
11
+ // 运行态网格参数 / 门控策略 / 嵌套容器网格透传(compGrid prop、gridParams / loadWay / childGrid)来自 containerGridMixin
12
+ mixins: [containerGridMixin],
13
+ components: {
14
+ [DashboardGrid.name]: DashboardGrid,
15
+ // 设计态画布(gridstack 封装)与项 chrome 按需加载,运行态不拉 gridstack
16
+ "epx-dashboard-design-grid": defineAsyncComponent(() => __epxPackagePreload(() => import("./DesignGrid.js"), true ? [] : void 0, import.meta.url)),
17
+ "epx-dashboard-design-item": defineAsyncComponent(() => __epxPackagePreload(() => import("./DesignItem.js"), true ? [] : void 0, import.meta.url))
18
+ },
19
+ inject: {
20
+ // 父网格 api(页面级画布或上级容器的 DesignGrid 提供):本容器的子网格挂到它下面;独立挂载时为空,子网格退化为独立网格
21
+ epxDashboardDesignGrid: { default: null },
22
+ // 设计态共享选中态(页面级画布提供):容器内与页面级只有一个选中项
23
+ epxDashboardDesign: { default: null }
24
+ },
25
+ props: {
26
+ theme: String,
27
+ compId: String,
28
+ compStyle: {
29
+ type: Object,
30
+ default() {
31
+ return {};
32
+ }
33
+ },
34
+ compItem: {
35
+ type: Object,
36
+ default() {
37
+ return {};
38
+ }
39
+ },
40
+ compConfigs: {
41
+ type: Object,
42
+ default() {
43
+ return {};
44
+ }
45
+ },
46
+ items: {
47
+ type: Array,
48
+ default() {
49
+ return [];
50
+ }
51
+ },
52
+ itemConfigs: {
53
+ type: Object,
54
+ default() {
55
+ return {};
56
+ }
57
+ },
58
+ mode: String,
59
+ allComponentList: Array,
60
+ chartCache: Boolean,
61
+ dashboardId: String
62
+ },
63
+ data() {
64
+ return {
65
+ reloadComponent: {},
66
+ isDragElement: false,
67
+ // 设计态内容区可视高度(壳内容盒高 − 标题栏高),传给子网格做 min-height
68
+ designMinHeight: 0
69
+ };
70
+ },
71
+ computed: {
72
+ compTheme() {
73
+ return this.$configs.theme || this.theme;
74
+ },
75
+ getCompConfigs() {
76
+ return (component) => {
77
+ const { configs = {}, id, title, contentType, ...otherConfigs } = component;
78
+ const compId = this.getDashboardLegacy() && this.dashboardId ? this.dashboardId + "-" + id : id;
79
+ const itemConfig = this.itemConfigs[compId] || {};
80
+ const _configs = { ...otherConfigs, ...configs, ...itemConfig };
81
+ if (title) {
82
+ _configs.componentName = title;
83
+ }
84
+ return _configs;
85
+ };
86
+ },
87
+ $configs() {
88
+ const itemConfig = this.itemConfigs[this.compId] || {};
89
+ const _configs = { ...this.compConfigs, ...itemConfig };
90
+ return _configs;
91
+ },
92
+ style() {
93
+ const style = { ...this.compStyle };
94
+ if (style.backgroundImage) {
95
+ style.backgroundImage = style.backgroundImage.replace(/url\s*\(([\w+-/.\s]+)\)/g, (str, $1) => {
96
+ return `url(${this.$util.getFileUrl($1)})`;
97
+ });
98
+ }
99
+ return style;
100
+ },
101
+ showTitle() {
102
+ const { showTitle } = this.$configs;
103
+ return showTitle;
104
+ },
105
+ title() {
106
+ const { title = "" } = this.$configs;
107
+ return title;
108
+ },
109
+ titleStyle() {
110
+ const { align, backgroundStyle, backgroundColor, backgroundImage } = this.titleFontStyle || {};
111
+ const style = {};
112
+ if (align) {
113
+ style.justifyContent = align;
114
+ }
115
+ if (backgroundStyle === "image") {
116
+ style.backgroundImage = `url(${this.$util.getFileUrl(backgroundImage)})`;
117
+ } else if (backgroundColor) {
118
+ style.backgroundColor = backgroundColor;
119
+ }
120
+ return style;
121
+ },
122
+ titleText() {
123
+ return this.$configs.title;
124
+ },
125
+ design() {
126
+ return this.epxDashboardDesign;
127
+ },
128
+ activeComponent() {
129
+ return this.design ? this.design.state.activeItem : null;
130
+ }
131
+ },
132
+ watch: {
133
+ items: {
134
+ handler(v = []) {
135
+ for (const item of v) {
136
+ if (!item) continue;
137
+ normalizeGridItem(item);
138
+ }
139
+ },
140
+ deep: true,
141
+ immediate: true
142
+ }
143
+ },
144
+ methods: {
145
+ addGridItem(v) {
146
+ this.$emit("changeItems", [...this.items, v]);
147
+ },
148
+ // 库改了子项坐标(拖拽 / 缩放 / 推挤 / 首次对账):画布已就地写回,只需通知上层保存
149
+ onDesignChange() {
150
+ this.$emit("changeItems", [...this.items]);
151
+ },
152
+ // 跨网格搬出(子项被拖到页面或别的容器):源侧必须同步移出,否则子网格下一次同步会把壳重新加回来
153
+ onTransferOut(item) {
154
+ this.$emit("changeItems", this.items.filter((i) => i.id !== item.id));
155
+ },
156
+ // 跨网格搬入:画布已按本网格换算过 w/h
157
+ onTransferIn(item) {
158
+ this.$emit("changeItems", [...this.items, item]);
159
+ },
160
+ // 嵌套容器的子项变化:替换该容器项对象后上报(与页面级画布 changeSubItems 同手法)
161
+ changeSubItems(item, v) {
162
+ const index = this.items.findIndex((i) => i.id === item.id);
163
+ if (index === -1) return;
164
+ const items = [...this.items];
165
+ items.splice(index, 1, { ...items[index], items: v });
166
+ this.$emit("changeItems", items);
167
+ },
168
+ openConfigPanel(component) {
169
+ if (this.design) this.design.select(component, this.compId);
170
+ },
171
+ // 设计态内容区可视高度:壳内容盒高 − 标题栏高(内容区是 flex 撑满的一层,量它即可;无标题时等于壳内容盒高)
172
+ measureDesignHeight() {
173
+ if (this.$refs.designBody) this.designMinHeight = this.$refs.designBody.clientHeight;
174
+ },
175
+ designReport(component) {
176
+ const configs = this.getCompConfigs(component, component.id);
177
+ this.goPage({
178
+ component: "report-design",
179
+ params: {
180
+ id: configs.id,
181
+ callback: () => {
182
+ this.reloadComponent[component.id] = true;
183
+ this.$nextTick(() => {
184
+ this.reloadComponent[component.id] = false;
185
+ });
186
+ }
187
+ }
188
+ });
189
+ },
190
+ editComponent(activeComponent) {
191
+ const componentInfo = this.allComponentList.find((item) => item.CODE === activeComponent.contentType) || { CODE: activeComponent.contentType };
192
+ const configs = this.getCompConfigs(activeComponent, activeComponent.id);
193
+ this.$emit("open-config", activeComponent.id, componentInfo, configs);
194
+ },
195
+ deleteComponent(component, command) {
196
+ const activeComponent = component || this.activeComponent;
197
+ const index = this.items.findIndex((item) => item.id === activeComponent.id);
198
+ if (activeComponent.contentType === "report-chat" && command === "all") {
199
+ const configs = this.getCompConfigs(activeComponent, activeComponent.id);
200
+ this.$http.removeMulti({
201
+ entityId: "FM_REPORT_BASE",
202
+ ids: configs.id
203
+ });
204
+ }
205
+ if (index !== -1) {
206
+ const items = [...this.items];
207
+ items.splice(index, 1);
208
+ this.$emit("changeItems", items);
209
+ if (this.design && this.design.isActive(activeComponent)) this.design.clear();
210
+ }
211
+ }
212
+ },
213
+ mounted() {
214
+ if (this.mode !== "design") return;
215
+ this.measureDesignHeight();
216
+ if (typeof ResizeObserver !== "undefined" && this.$refs.designBody) {
217
+ this.designResizeObserver = new ResizeObserver(() => this.measureDesignHeight());
218
+ this.designResizeObserver.observe(this.$refs.designBody);
219
+ }
220
+ },
221
+ beforeUnmount() {
222
+ if (this.designResizeObserver) this.designResizeObserver.disconnect();
223
+ }
224
+ };
225
+ const _hoisted_1 = {
226
+ key: 1,
227
+ class: "epx-chart__header-icon"
228
+ };
229
+ const _hoisted_2 = { class: "drag-component" };
230
+ const _hoisted_3 = {
231
+ key: 2,
232
+ ref: "designBody",
233
+ class: "epx-dashboard-div__design-body"
234
+ };
235
+ const _hoisted_4 = {
236
+ key: 0,
237
+ class: "drag-component"
238
+ };
239
+ const _hoisted_5 = { key: 1 };
240
+ const _hoisted_6 = ["onClick"];
241
+ const _hoisted_7 = ["onClick"];
242
+ const _hoisted_8 = ["onClick"];
243
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
244
+ const _component_epx_dashboard_grid = resolveComponent("epx-dashboard-grid");
245
+ const _component_epx_component = resolveComponent("epx-component");
246
+ const _component_el_dropdown_item = resolveComponent("el-dropdown-item");
247
+ const _component_el_dropdown_menu = resolveComponent("el-dropdown-menu");
248
+ const _component_el_dropdown = resolveComponent("el-dropdown");
249
+ const _component_epx_dashboard_design_item = resolveComponent("epx-dashboard-design-item");
250
+ const _component_epx_dashboard_design_grid = resolveComponent("epx-dashboard-design-grid");
251
+ return openBlock(), createElementBlock("div", {
252
+ ref: "container",
253
+ class: normalizeClass(["container", "epx-dashboard-div", `epx-dashboard-div--${$options.compTheme}`, { "drag-element": $data.isDragElement }, { "is-design": $props.mode === "design" }]),
254
+ style: normalizeStyle($options.style)
255
+ }, [
256
+ $options.showTitle && $options.titleText ? (openBlock(), createElementBlock("div", {
257
+ key: 0,
258
+ class: normalizeClass(["epx-chart__header", { "epx-chart__header--no-icon": $options.$configs.iconFlag === false }]),
259
+ style: normalizeStyle($options.titleStyle)
260
+ }, [
261
+ createElementVNode("div", {
262
+ class: "epx-chart__header-left",
263
+ style: normalizeStyle({ color: $options.$configs.iconColor })
264
+ }, [
265
+ $options.$configs.iconFlag !== false ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
266
+ $options.$configs.icon ? (openBlock(), createElementBlock("i", {
267
+ key: 0,
268
+ style: normalizeStyle($options.$configs.textStyle),
269
+ class: normalizeClass(["epx-chart__header-icon--icon", $options.$configs.icon || "epx-icon-kapianmorentubiao"])
270
+ }, null, 6)) : (openBlock(), createElementBlock("span", _hoisted_1))
271
+ ], 64)) : createCommentVNode("", true),
272
+ createElementVNode("span", {
273
+ class: "epx-chart__title",
274
+ style: normalizeStyle($options.$configs.textStyle)
275
+ }, toDisplayString($options.titleText), 5)
276
+ ], 4)
277
+ ], 6)) : createCommentVNode("", true),
278
+ $props.mode !== "design" ? (openBlock(), createBlock(_component_epx_dashboard_grid, {
279
+ key: 1,
280
+ class: "epx-dashboard-div__grid",
281
+ items: _ctx.mobileItems($props.items),
282
+ grid: _ctx.gridParams,
283
+ "load-way": _ctx.loadWay,
284
+ "body-height": _ctx.bodyHeight,
285
+ "scroll-root-selector": ".epx-dashboard__container, .dashboard-container"
286
+ }, {
287
+ item: withCtx(({ item }) => [
288
+ createElementVNode("div", _hoisted_2, [
289
+ (openBlock(), createBlock(resolveDynamicComponent("epx-" + item.contentType), {
290
+ ref: `component_${item.i}`,
291
+ class: "epx-dashboard__component",
292
+ "is-dashboard": "",
293
+ key: item.id,
294
+ "comp-id": item.id,
295
+ "comp-title": item.title,
296
+ "comp-style": item.style,
297
+ "comp-configs": $options.getCompConfigs(item, item.id),
298
+ "comp-grid": _ctx.childGrid(item),
299
+ "chart-cache": $props.chartCache,
300
+ "mobile-appearance": _ctx.mobileStacked ? item.mobileAppearance : void 0,
301
+ items: item.items,
302
+ "item-configs": $props.itemConfigs,
303
+ theme: $props.theme
304
+ }, null, 8, ["comp-id", "comp-title", "comp-style", "comp-configs", "comp-grid", "chart-cache", "mobile-appearance", "items", "item-configs", "theme"]))
305
+ ])
306
+ ]),
307
+ _: 1
308
+ }, 8, ["items", "grid", "load-way", "body-height"])) : (openBlock(), createElementBlock("div", _hoisted_3, [
309
+ createVNode(_component_epx_dashboard_design_grid, {
310
+ class: "epx-dashboard-div__design-grid",
311
+ "sub-grid-of": $options.epxDashboardDesignGrid,
312
+ items: $props.items,
313
+ grid: _ctx.gridParams,
314
+ "body-height": _ctx.bodyHeight,
315
+ "min-height": $data.designMinHeight,
316
+ onChange: $options.onDesignChange,
317
+ onTransferOut: $options.onTransferOut,
318
+ onTransferIn: $options.onTransferIn
319
+ }, {
320
+ item: withCtx(({ item }) => [
321
+ createVNode(_component_epx_dashboard_design_item, {
322
+ item,
323
+ active: !!$options.design && $options.design.isActive(item),
324
+ floatable: _ctx.gridParams.mode !== "float",
325
+ onSelect: $options.openConfigPanel
326
+ }, {
327
+ operates: withCtx(() => [
328
+ item.contentType === "report-chart" ? (openBlock(), createElementBlock("i", {
329
+ key: 0,
330
+ class: "component-operate__item el-icon-edit-outline",
331
+ onClick: ($event) => $options.designReport(item)
332
+ }, null, 8, _hoisted_6)) : createCommentVNode("", true),
333
+ createElementVNode("i", {
334
+ class: "component-operate__item el-icon-setting",
335
+ onClick: ($event) => $options.editComponent(item)
336
+ }, null, 8, _hoisted_7),
337
+ item.contentType === "report-chart" ? (openBlock(), createBlock(_component_el_dropdown, {
338
+ key: 1,
339
+ class: "componnet-dropdown",
340
+ onCommand: (v) => $options.deleteComponent(item, v)
341
+ }, {
342
+ dropdown: withCtx(() => [
343
+ createVNode(_component_el_dropdown_menu, null, {
344
+ default: withCtx(() => [
345
+ createVNode(_component_el_dropdown_item, { command: "only" }, {
346
+ default: withCtx(() => [..._cache[1] || (_cache[1] = [
347
+ createTextVNode("仅从仪表盘中删除", -1)
348
+ ])]),
349
+ _: 1
350
+ }),
351
+ createVNode(_component_el_dropdown_item, { command: "all" }, {
352
+ default: withCtx(() => [..._cache[2] || (_cache[2] = [
353
+ createTextVNode("从仪表盘和报表库中删除", -1)
354
+ ])]),
355
+ _: 1
356
+ })
357
+ ]),
358
+ _: 1
359
+ })
360
+ ]),
361
+ default: withCtx(() => [
362
+ _cache[3] || (_cache[3] = createElementVNode("i", { class: "component-operate__item el-icon-delete" }, null, -1))
363
+ ]),
364
+ _: 1
365
+ }, 8, ["onCommand"])) : (openBlock(), createElementBlock("i", {
366
+ key: 2,
367
+ class: "component-operate__item el-icon-delete",
368
+ onClick: ($event) => $options.deleteComponent(item)
369
+ }, null, 8, _hoisted_8))
370
+ ]),
371
+ default: withCtx(() => [
372
+ item.contentType && !$data.reloadComponent[item.id] ? (openBlock(), createElementBlock("div", _hoisted_4, [
373
+ (openBlock(), createBlock(_component_epx_component, {
374
+ name: item.contentType,
375
+ ref: `component_${item.i}`,
376
+ class: "epx-dashboard__component",
377
+ "is-dashboard": "",
378
+ key: item.id,
379
+ "comp-id": item.id,
380
+ "comp-title": item.title,
381
+ "comp-style": item.style,
382
+ "comp-configs": $options.getCompConfigs(item, item.id),
383
+ "comp-grid": _ctx.childGrid(item),
384
+ "comp-item": item,
385
+ items: item.items,
386
+ "item-configs": $props.itemConfigs,
387
+ "dashboard-id": $props.dashboardId,
388
+ "all-component-list": $props.allComponentList,
389
+ theme: $options.compTheme,
390
+ mode: "design",
391
+ "mobile-appearance": _ctx.mobileStacked ? item.mobileAppearance : void 0,
392
+ onChangeItems: (v) => $options.changeSubItems(item, v),
393
+ onOpenConfig: _cache[0] || (_cache[0] = (...args) => _ctx.$emit("open-config", ...args))
394
+ }, null, 8, ["name", "comp-id", "comp-title", "comp-style", "comp-configs", "comp-grid", "comp-item", "items", "item-configs", "dashboard-id", "all-component-list", "theme", "mobile-appearance", "onChangeItems"]))
395
+ ])) : (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(item.i), 1))
396
+ ]),
397
+ _: 2
398
+ }, 1032, ["item", "active", "floatable", "onSelect"])
399
+ ]),
400
+ _: 1
401
+ }, 8, ["sub-grid-of", "items", "grid", "body-height", "min-height", "onChange", "onTransferOut", "onTransferIn"])
402
+ ], 512))
403
+ ], 6);
404
+ }
405
+ const DashboardDiv = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-668cf4f9"]]);
406
+ export {
407
+ DashboardDiv as default
408
+ };