@vc-shell/framework 1.2.4-beta.7 → 1.2.4-beta.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 (83) hide show
  1. package/dist/framework.js +35065 -464
  2. package/dist/index.css +1 -1
  3. package/dist/shared/components/dashboard-charts/index.d.ts +3 -6
  4. package/dist/shared/components/dashboard-charts/index.d.ts.map +1 -1
  5. package/dist/shared/components/draggable-dashboard/DraggableDashboard.vue.d.ts.map +1 -1
  6. package/dist/tsconfig.tsbuildinfo +1 -1
  7. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts +1 -1
  8. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  9. package/dist/ui/components/molecules/vc-editor/index.d.ts +2 -3
  10. package/dist/ui/components/molecules/vc-editor/index.d.ts.map +1 -1
  11. package/dist/ui/components/molecules/vc-slider/index.d.ts +3 -5
  12. package/dist/ui/components/molecules/vc-slider/index.d.ts.map +1 -1
  13. package/dist/ui/components/organisms/vc-table/VcDataTable.vue.d.ts.map +1 -1
  14. package/dist/{vendor-cheerio-3JDxU-TZ.js → vendor-cheerio-DrsWhxJH.js} +4 -4
  15. package/dist/{vendor-cheerio-select-B7cQ9HP4.js → vendor-cheerio-select-jw4C2SiT.js} +2 -2
  16. package/dist/{vendor-css-select-CaVL4gMJ.js → vendor-css-select-BwGMmTuc.js} +1 -1
  17. package/dist/{vendor-dom-serializer-Sk3xHhQk.js → vendor-dom-serializer-BbVuF1MQ.js} +1 -1
  18. package/dist/{vendor-domutils-o2IJSx7k.js → vendor-domutils-DDRq_ial.js} +1 -1
  19. package/dist/{vendor-entities-CCReaWqU.js → vendor-entities-J86Og8IU.js} +2 -2
  20. package/dist/{vendor-htmlparser2-nRkKyNhl.js → vendor-htmlparser2-BxKKzWLL.js} +1 -1
  21. package/dist/{vendor-markdown-it-pxD-Y9qk.js → vendor-markdown-it-Bs9KEWkF.js} +1 -1
  22. package/dist/{vendor-prosemirror-commands-Dml_M5TN.js → vendor-prosemirror-commands-Bv4ChObl.js} +2 -2
  23. package/dist/{vendor-prosemirror-dropcursor-BpoETgOQ.js → vendor-prosemirror-dropcursor-kF5UKNFM.js} +2 -2
  24. package/dist/{vendor-prosemirror-gapcursor-VVbNCx01.js → vendor-prosemirror-gapcursor-BAwEBHgE.js} +3 -3
  25. package/dist/{vendor-prosemirror-history-CZUb2jWK.js → vendor-prosemirror-history-CQYKHz3u.js} +2 -2
  26. package/dist/{vendor-prosemirror-keymap-D5bacBom.js → vendor-prosemirror-keymap-CAfQyvJ7.js} +1 -1
  27. package/dist/{vendor-prosemirror-markdown-C-c5VoFH.js → vendor-prosemirror-markdown-rpUTSG_Q.js} +1 -1
  28. package/dist/{vendor-prosemirror-schema-list-BZ-Z46DO.js → vendor-prosemirror-schema-list-BNJkECdS.js} +1 -1
  29. package/dist/{vendor-prosemirror-state-DYjHje5i.js → vendor-prosemirror-state-IeimrELV.js} +1 -1
  30. package/dist/{vendor-prosemirror-tables-CjY-gm1w.js → vendor-prosemirror-tables-zVUKdbdQ.js} +4 -4
  31. package/dist/{vendor-prosemirror-transform-6xBwIzbI.js → vendor-prosemirror-transform-BUjWd5Tb.js} +4 -4
  32. package/dist/{vendor-prosemirror-view-CzBOGIAq.js → vendor-prosemirror-view-DFpBkGRq.js} +2 -2
  33. package/dist/{vendor-tiptap-core-BNrmxwcD.js → vendor-tiptap-core-BfrE48R3.js} +16 -16
  34. package/dist/{vendor-tiptap-extension-blockquote-DBYgJvrA.js → vendor-tiptap-extension-blockquote-DG5eEgV_.js} +1 -1
  35. package/dist/{vendor-tiptap-extension-bold-BaDsyhkA.js → vendor-tiptap-extension-bold-CqPrSfgB.js} +1 -1
  36. package/dist/{vendor-tiptap-extension-code-DmMmyuE8.js → vendor-tiptap-extension-code-Dj9HfL9x.js} +1 -1
  37. package/dist/{vendor-tiptap-extension-code-block-Cryhc4vR.js → vendor-tiptap-extension-code-block-YnlbQcbJ.js} +2 -2
  38. package/dist/{vendor-tiptap-extension-document-DTFkPYG-.js → vendor-tiptap-extension-document-DyG2LNKD.js} +1 -1
  39. package/dist/{vendor-tiptap-extension-hard-break-DLmFSWL4.js → vendor-tiptap-extension-hard-break-mzhqFFEq.js} +1 -1
  40. package/dist/{vendor-tiptap-extension-heading-DlpNyZOc.js → vendor-tiptap-extension-heading-DGnriW33.js} +1 -1
  41. package/dist/{vendor-tiptap-extension-horizontal-rule-CI2nC7l5.js → vendor-tiptap-extension-horizontal-rule-pR7MlJHI.js} +2 -2
  42. package/dist/{vendor-tiptap-extension-image-g6grWBFQ.js → vendor-tiptap-extension-image-BsXHNscz.js} +1 -1
  43. package/dist/{vendor-tiptap-extension-italic-DsMLQC-Z.js → vendor-tiptap-extension-italic-aoCbIXRj.js} +1 -1
  44. package/dist/{vendor-tiptap-extension-link-CF-euSmX.js → vendor-tiptap-extension-link-DiV7DqnY.js} +3 -3
  45. package/dist/{vendor-tiptap-extension-list-DA57LKdr.js → vendor-tiptap-extension-list-BGYRWOyu.js} +5 -5
  46. package/dist/{vendor-tiptap-extension-paragraph-CrvWamNP.js → vendor-tiptap-extension-paragraph-BEBEvW1W.js} +1 -1
  47. package/dist/vendor-tiptap-extension-placeholder-ZfoeEW0T.js +1 -0
  48. package/dist/{vendor-tiptap-extension-strike-caeBdU8d.js → vendor-tiptap-extension-strike-6vob8J1A.js} +1 -1
  49. package/dist/{vendor-tiptap-extension-table-DBQupXqd.js → vendor-tiptap-extension-table-CH-0UqG-.js} +8 -8
  50. package/dist/vendor-tiptap-extension-table-cell-_uzaJkJG.js +1 -0
  51. package/dist/vendor-tiptap-extension-table-header-_uzaJkJG.js +1 -0
  52. package/dist/vendor-tiptap-extension-table-row-_uzaJkJG.js +1 -0
  53. package/dist/{vendor-tiptap-extension-text-CYaZSxyC.js → vendor-tiptap-extension-text-CnqQVbB2.js} +1 -1
  54. package/dist/{vendor-tiptap-extension-text-style-C8Uqg46V.js → vendor-tiptap-extension-text-style-Bj4bCZI1.js} +1 -1
  55. package/dist/{vendor-tiptap-extension-underline-Ct9ZgKsw.js → vendor-tiptap-extension-underline-CVBZMhrs.js} +1 -1
  56. package/dist/{vendor-tiptap-extensions-Dg7-f1Pi.js → vendor-tiptap-extensions-2ZbpCG7T.js} +8 -8
  57. package/dist/{vendor-tiptap-markdown-DDkltz0i.js → vendor-tiptap-markdown-B7Wvo0s5.js} +4 -4
  58. package/dist/vendor-tiptap-pm-DSHuSumV.js +1 -0
  59. package/dist/{vendor-tiptap-starter-kit-C1nkrZcr.js → vendor-tiptap-starter-kit-ipneJHYV.js} +17 -17
  60. package/dist/{vendor-tiptap-vue-3-B3dwsJj3.js → vendor-tiptap-vue-3-IfJcIOl5.js} +1 -1
  61. package/dist/{vendor-truncate-html-C77Epb-R.js → vendor-truncate-html-r2r8GKvW.js} +1 -1
  62. package/package.json +5 -5
  63. package/shared/components/dashboard-charts/index.ts +3 -27
  64. package/shared/components/draggable-dashboard/DraggableDashboard.vue +69 -75
  65. package/ui/components/molecules/vc-editor/index.ts +2 -11
  66. package/ui/components/molecules/vc-slider/index.ts +3 -11
  67. package/ui/components/organisms/vc-table/VcDataTable.vue +39 -18
  68. package/dist/DashboardBarChart-BzfKkUke.js +0 -123
  69. package/dist/DashboardDonutChart-CWfe85Xq.js +0 -89
  70. package/dist/DashboardLineChart-kdA8VnrR.js +0 -125
  71. package/dist/GridstackDashboard-CGHYkReX.js +0 -131
  72. package/dist/GridstackDashboard.css +0 -1
  73. package/dist/chart-utils-BTs6UFaZ.js +0 -83
  74. package/dist/index-tgmgQAD9.js +0 -33730
  75. package/dist/vc-editor-BNrG1GAG.js +0 -848
  76. package/dist/vc-editor.css +0 -1
  77. package/dist/vc-slider-Ce0X1_1m.js +0 -83
  78. package/dist/vc-slider.css +0 -1
  79. package/dist/vendor-tiptap-extension-placeholder-DVCL5REL.js +0 -1
  80. package/dist/vendor-tiptap-extension-table-cell-A6UIxsTF.js +0 -1
  81. package/dist/vendor-tiptap-extension-table-header-A6UIxsTF.js +0 -1
  82. package/dist/vendor-tiptap-extension-table-row-A6UIxsTF.js +0 -1
  83. package/dist/vendor-tiptap-pm-BbD2LeB7.js +0 -1
@@ -1,9 +1,9 @@
1
- import { k as l, x as P, y as v, z as S, i as z } from "./vendor-tiptap-core-BNrmxwcD.js";
2
- import { P as p, a as m } from "./vendor-prosemirror-state-DYjHje5i.js";
3
- import { d as E } from "./vendor-prosemirror-dropcursor-BpoETgOQ.js";
4
- import { a as y, D as f } from "./vendor-prosemirror-view-CzBOGIAq.js";
5
- import { g as N } from "./vendor-prosemirror-gapcursor-VVbNCx01.js";
6
- import { h as A, r as M, u as T } from "./vendor-prosemirror-history-CZUb2jWK.js";
1
+ import { k as l, x as P, y as v, z as S, i as z } from "./vendor-tiptap-core-BfrE48R3.js";
2
+ import { P as p, a as m } from "./vendor-prosemirror-state-IeimrELV.js";
3
+ import { d as E } from "./vendor-prosemirror-dropcursor-kF5UKNFM.js";
4
+ import { D as f, a as y } from "./vendor-prosemirror-view-DFpBkGRq.js";
5
+ import { g as N } from "./vendor-prosemirror-gapcursor-BAwEBHgE.js";
6
+ import { h as A, r as M, u as T } from "./vendor-prosemirror-history-CQYKHz3u.js";
7
7
  l.create({
8
8
  name: "characterCount",
9
9
  addOptions() {
@@ -142,7 +142,7 @@ var G = l.create({
142
142
  storage: e.storage
143
143
  };
144
144
  return {
145
- allowGapCursor: (t = v(S(e, "allowGapCursor", s))) != null ? t : null
145
+ allowGapCursor: (t = P(v(e, "allowGapCursor", s))) != null ? t : null
146
146
  };
147
147
  }
148
148
  }), C = "placeholder";
@@ -174,7 +174,7 @@ var L = l.create({
174
174
  return null;
175
175
  const c = this.editor.isEmpty;
176
176
  return t.descendants((a, i) => {
177
- const d = o >= i && o <= i + a.nodeSize, u = !a.isLeaf && P(a);
177
+ const d = o >= i && o <= i + a.nodeSize, u = !a.isLeaf && S(a);
178
178
  if ((d || !this.options.showOnlyCurrent) && u) {
179
179
  const h = [this.options.emptyNodeClass];
180
180
  c && h.push(this.options.emptyEditorClass);
@@ -1,9 +1,9 @@
1
- import { k as b, B, N as a, M as m, C as z } from "./vendor-tiptap-core-BNrmxwcD.js";
2
- import { M as O, d } from "./vendor-prosemirror-markdown-C-c5VoFH.js";
3
- import { M as C } from "./vendor-markdown-it-pxD-Y9qk.js";
1
+ import { k as b, B, N as a, M as m, C as z } from "./vendor-tiptap-core-BfrE48R3.js";
2
+ import { M as O, d } from "./vendor-prosemirror-markdown-rpUTSG_Q.js";
3
+ import { M as C } from "./vendor-markdown-it-Bs9KEWkF.js";
4
4
  import { c as P, F as w } from "./vendor-prosemirror-model-DAA3avbR.js";
5
5
  import { t as _ } from "./vendor-markdown-it-task-lists-CHCnS7dl.js";
6
- import { P as N, a as I } from "./vendor-prosemirror-state-DYjHje5i.js";
6
+ import { P as N, a as I } from "./vendor-prosemirror-state-IeimrELV.js";
7
7
  var A = Object.defineProperty, D = (r, e, t) => e in r ? A(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, h = (r, e, t) => (D(r, typeof e != "symbol" ? e + "" : e, t), t);
8
8
  const j = b.create({
9
9
  name: "markdownTightLists",
@@ -0,0 +1 @@
1
+ import "./vendor-prosemirror-tables-zVUKdbdQ.js";
@@ -1,20 +1,20 @@
1
- import { k as e } from "./vendor-tiptap-core-BNrmxwcD.js";
2
- import { B as n } from "./vendor-tiptap-extension-blockquote-DBYgJvrA.js";
3
- import { B as p } from "./vendor-tiptap-extension-bold-BaDsyhkA.js";
4
- import { C as a } from "./vendor-tiptap-extension-code-DmMmyuE8.js";
5
- import { C as f } from "./vendor-tiptap-extension-code-block-Cryhc4vR.js";
6
- import { D as h } from "./vendor-tiptap-extension-document-DTFkPYG-.js";
7
- import { H as u } from "./vendor-tiptap-extension-hard-break-DLmFSWL4.js";
8
- import { H as l } from "./vendor-tiptap-extension-heading-DlpNyZOc.js";
9
- import { H as c } from "./vendor-tiptap-extension-horizontal-rule-CI2nC7l5.js";
10
- import { I as d } from "./vendor-tiptap-extension-italic-DsMLQC-Z.js";
11
- import { L as m } from "./vendor-tiptap-extension-link-CF-euSmX.js";
12
- import { B as g, L as k, a as B, O as L } from "./vendor-tiptap-extension-list-DA57LKdr.js";
13
- import { P as b } from "./vendor-tiptap-extension-paragraph-CrvWamNP.js";
14
- import { S as x } from "./vendor-tiptap-extension-strike-caeBdU8d.js";
15
- import { T as v } from "./vendor-tiptap-extension-text-CYaZSxyC.js";
16
- import { U as H } from "./vendor-tiptap-extension-underline-Ct9ZgKsw.js";
17
- import { D as R, G as I, U as K, T as C } from "./vendor-tiptap-extensions-Dg7-f1Pi.js";
1
+ import { k as e } from "./vendor-tiptap-core-BfrE48R3.js";
2
+ import { B as n } from "./vendor-tiptap-extension-blockquote-DG5eEgV_.js";
3
+ import { B as p } from "./vendor-tiptap-extension-bold-CqPrSfgB.js";
4
+ import { C as a } from "./vendor-tiptap-extension-code-Dj9HfL9x.js";
5
+ import { C as f } from "./vendor-tiptap-extension-code-block-YnlbQcbJ.js";
6
+ import { D as h } from "./vendor-tiptap-extension-document-DyG2LNKD.js";
7
+ import { H as u } from "./vendor-tiptap-extension-hard-break-mzhqFFEq.js";
8
+ import { H as l } from "./vendor-tiptap-extension-heading-DGnriW33.js";
9
+ import { H as c } from "./vendor-tiptap-extension-horizontal-rule-pR7MlJHI.js";
10
+ import { I as d } from "./vendor-tiptap-extension-italic-aoCbIXRj.js";
11
+ import { L as m } from "./vendor-tiptap-extension-link-DiV7DqnY.js";
12
+ import { B as g, L as k, a as B, O as L } from "./vendor-tiptap-extension-list-BGYRWOyu.js";
13
+ import { P as b } from "./vendor-tiptap-extension-paragraph-BEBEvW1W.js";
14
+ import { S as x } from "./vendor-tiptap-extension-strike-6vob8J1A.js";
15
+ import { T as v } from "./vendor-tiptap-extension-text-CnqQVbB2.js";
16
+ import { U as H } from "./vendor-tiptap-extension-underline-CVBZMhrs.js";
17
+ import { D as R, G as I, U as K, T as C } from "./vendor-tiptap-extensions-2ZbpCG7T.js";
18
18
  var J = e.create({
19
19
  name: "starterKit",
20
20
  addExtensions() {
@@ -1,4 +1,4 @@
1
- import { E as p } from "./vendor-tiptap-core-BNrmxwcD.js";
1
+ import { E as p } from "./vendor-tiptap-core-BfrE48R3.js";
2
2
  import { shallowRef as v, onMounted as h, onBeforeUnmount as d, defineComponent as s, h as u, ref as g, getCurrentInstance as m, watchEffect as f, nextTick as S, unref as w, markRaw as x, customRef as C } from "vue";
3
3
  function l(t) {
4
4
  return C((e, r) => ({
@@ -1,4 +1,4 @@
1
- import { c as h } from "./vendor-cheerio-3JDxU-TZ.js";
1
+ import { c as h } from "./vendor-cheerio-DrsWhxJH.js";
2
2
  const k = /\ud83c[\udffb-\udfff](?=\ud83c[\udffb-\udfff])|(?:[^\ud800-\udfff][\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]?|[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g, b = {
3
3
  // remove all tags
4
4
  stripTags: !1,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.2.4-beta.7",
3
+ "version": "1.2.4-beta.8",
4
4
  "type": "module",
5
5
  "main": "./dist/framework.js",
6
6
  "types": "./dist/index.d.ts",
@@ -94,9 +94,9 @@
94
94
  "@fullhuman/postcss-purgecss": "^7.0.2",
95
95
  "@laynezh/vite-plugin-lib-assets": "v1.1.0",
96
96
  "@types/dompurify": "^3.0.5",
97
- "@vc-shell/api-client-generator": "1.2.4-beta.7",
98
- "@vc-shell/config-generator": "1.2.4-beta.7",
99
- "@vc-shell/ts-config": "1.2.4-beta.7",
97
+ "@vc-shell/api-client-generator": "1.2.4-beta.8",
98
+ "@vc-shell/config-generator": "1.2.4-beta.8",
99
+ "@vc-shell/ts-config": "1.2.4-beta.8",
100
100
  "@vitejs/plugin-vue": "^5.2.3",
101
101
  "@vue/test-utils": "^2.4.5",
102
102
  "cypress-signalr-mock": "^1.5.0",
@@ -116,5 +116,5 @@
116
116
  "access": "public",
117
117
  "registry": "https://registry.npmjs.org/"
118
118
  },
119
- "gitHead": "cc6ef5c98d3f8b6489126a950e994335016ea35d"
119
+ "gitHead": "25aa3246d45b375af4fffcc256a447d05dfda64c"
120
120
  }
@@ -1,31 +1,7 @@
1
- import { defineAsyncComponent } from "vue";
2
-
3
1
  export { default as ChartContainer } from "./ChartContainer.vue";
4
2
  export { default as ChartTooltip } from "./ChartTooltip.vue";
5
3
  export { default as ChartLegend } from "./ChartLegend.vue";
4
+ export { default as DashboardLineChart } from "./DashboardLineChart.vue";
5
+ export { default as DashboardBarChart } from "./DashboardBarChart.vue";
6
+ export { default as DashboardDonutChart } from "./DashboardDonutChart.vue";
6
7
  export type { ChartConfig, ChartConfigItem } from "./types";
7
-
8
- type DashboardLineChartComponent = typeof import("./DashboardLineChart.vue")["default"];
9
- type DashboardBarChartComponent = typeof import("./DashboardBarChart.vue")["default"];
10
- type DashboardDonutChartComponent = typeof import("./DashboardDonutChart.vue")["default"];
11
-
12
- export const DashboardLineChart = defineAsyncComponent({
13
- loader: () => import("./DashboardLineChart.vue"),
14
- delay: 200,
15
- timeout: 10000,
16
- suspensible: false,
17
- }) as DashboardLineChartComponent;
18
-
19
- export const DashboardBarChart = defineAsyncComponent({
20
- loader: () => import("./DashboardBarChart.vue"),
21
- delay: 200,
22
- timeout: 10000,
23
- suspensible: false,
24
- }) as DashboardBarChartComponent;
25
-
26
- export const DashboardDonutChart = defineAsyncComponent({
27
- loader: () => import("./DashboardDonutChart.vue"),
28
- delay: 200,
29
- timeout: 10000,
30
- suspensible: false,
31
- }) as DashboardDonutChartComponent;
@@ -1,76 +1,70 @@
1
- <template>
2
- <GridstackDashboard
3
- ref="dashboardRef"
4
- :show-drag-handles="showDragHandles"
5
- :resizable="resizable"
6
- :aria-label="ariaLabel"
7
- />
8
- </template>
9
-
10
- <script setup lang="ts">
11
- /**
12
- * DraggableDashboard Component
13
- *
14
- * A flexible dashboard powered by Gridstack.js that allows widgets to be
15
- * dragged and arranged in a grid layout.
16
- *
17
- * Features:
18
- * - Drag and drop interface for arranging widgets
19
- * - Automatic layout persistence in localStorage
20
- * - Support for built-in widget positions
21
- * - Accessibility support (a11y)
22
- * - Optional widget resizing
23
- */
24
- import { defineAsyncComponent, ref } from "vue";
1
+ <template>
2
+ <GridstackDashboard
3
+ ref="dashboardRef"
4
+ :show-drag-handles="showDragHandles"
5
+ :resizable="resizable"
6
+ :aria-label="ariaLabel"
7
+ />
8
+ </template>
25
9
 
26
- const GridstackDashboard = defineAsyncComponent({
27
- loader: () => import("@shared/components/draggable-dashboard/GridstackDashboard.vue"),
28
- delay: 200,
29
- timeout: 10000,
30
- suspensible: false,
31
- }) as typeof import("@shared/components/draggable-dashboard/GridstackDashboard.vue")["default"];
32
-
33
- // Props
34
- interface Props {
35
- /** Show drag handle icons on widgets */
36
- showDragHandles?: boolean;
37
- /** Enable widget resizing */
38
- resizable?: boolean;
39
- /** Aria label for the dashboard container */
40
- ariaLabel?: string;
41
- }
42
-
43
- withDefaults(defineProps<Props>(), {
44
- showDragHandles: false,
45
- resizable: false,
46
- ariaLabel: "Dashboard widgets. Drag widgets to rearrange.",
47
- });
48
-
49
- // State
50
- const dashboardRef = ref<InstanceType<typeof GridstackDashboard> | null>(null);
51
-
52
- // Public methods (delegated to GridstackDashboard)
53
- const rearrangeWidgets = (): void => {
54
- dashboardRef.value?.rearrangeWidgets?.();
55
- };
56
-
57
- const recalculateLayout = (): void => {
58
- dashboardRef.value?.recalculateLayout?.();
59
- };
60
-
61
- const saveLayout = (): void => {
62
- dashboardRef.value?.saveLayout?.();
63
- };
64
-
65
- const useBuiltInPositions = (): boolean => {
66
- return dashboardRef.value?.useBuiltInPositions?.() ?? false;
67
- };
68
-
69
- // Expose public methods
70
- defineExpose({
71
- rearrangeWidgets,
72
- recalculateLayout,
73
- saveLayout,
74
- useBuiltInPositions,
75
- });
76
- </script>
10
+ <script setup lang="ts">
11
+ /**
12
+ * DraggableDashboard Component
13
+ *
14
+ * A flexible dashboard powered by Gridstack.js that allows widgets to be
15
+ * dragged and arranged in a grid layout.
16
+ *
17
+ * Features:
18
+ * - Drag and drop interface for arranging widgets
19
+ * - Automatic layout persistence in localStorage
20
+ * - Support for built-in widget positions
21
+ * - Accessibility support (a11y)
22
+ * - Optional widget resizing
23
+ */
24
+ import { ref } from "vue";
25
+ import GridstackDashboard from "@shared/components/draggable-dashboard/GridstackDashboard.vue";
26
+
27
+ // Props
28
+ interface Props {
29
+ /** Show drag handle icons on widgets */
30
+ showDragHandles?: boolean;
31
+ /** Enable widget resizing */
32
+ resizable?: boolean;
33
+ /** Aria label for the dashboard container */
34
+ ariaLabel?: string;
35
+ }
36
+
37
+ withDefaults(defineProps<Props>(), {
38
+ showDragHandles: false,
39
+ resizable: false,
40
+ ariaLabel: "Dashboard widgets. Drag widgets to rearrange.",
41
+ });
42
+
43
+ // State
44
+ const dashboardRef = ref<InstanceType<typeof GridstackDashboard> | null>(null);
45
+
46
+ // Public methods (delegated to GridstackDashboard)
47
+ const rearrangeWidgets = (): void => {
48
+ dashboardRef.value?.rearrangeWidgets?.();
49
+ };
50
+
51
+ const recalculateLayout = (): void => {
52
+ dashboardRef.value?.recalculateLayout?.();
53
+ };
54
+
55
+ const saveLayout = (): void => {
56
+ dashboardRef.value?.saveLayout?.();
57
+ };
58
+
59
+ const useBuiltInPositions = (): boolean => {
60
+ return dashboardRef.value?.useBuiltInPositions?.() ?? false;
61
+ };
62
+
63
+ // Expose public methods
64
+ defineExpose({
65
+ rearrangeWidgets,
66
+ recalculateLayout,
67
+ saveLayout,
68
+ useBuiltInPositions,
69
+ });
70
+ </script>
@@ -1,15 +1,6 @@
1
- import { defineAsyncComponent } from "vue";
2
-
3
- type VcEditorComponent = typeof import("./vc-editor.vue")["default"];
4
-
5
- export const VcEditor = defineAsyncComponent({
6
- loader: () => import("./vc-editor.vue"),
7
- delay: 200,
8
- timeout: 10000,
9
- suspensible: false,
10
- }) as VcEditorComponent;
1
+ export { default as VcEditor } from "@ui/components/molecules/vc-editor/vc-editor.vue";
11
2
  export type {
12
3
  CustomToolbarButton,
13
4
  CustomToolbarDropdown,
14
5
  CustomToolbarItem,
15
- } from "./_internal/toolbar-types";
6
+ } from "@ui/components/molecules/vc-editor/_internal/toolbar-types";
@@ -1,8 +1,7 @@
1
- import { defineAsyncComponent, type VNode } from "vue";
1
+ import { VNode } from "vue";
2
+ import _Slider from "@ui/components/molecules/vc-slider/vc-slider.vue";
2
3
 
3
- type VcSliderComponent = typeof import("./vc-slider.vue")["default"];
4
-
5
- type VcSliderSlots = {
4
+ export const VcSlider = _Slider as typeof _Slider & {
6
5
  new (): {
7
6
  $slots: {
8
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -12,10 +11,3 @@ type VcSliderSlots = {
12
11
  };
13
12
  };
14
13
  };
15
-
16
- export const VcSlider = defineAsyncComponent({
17
- loader: () => import("./vc-slider.vue"),
18
- delay: 200,
19
- timeout: 10000,
20
- suspensible: false,
21
- }) as VcSliderComponent & VcSliderSlots;
@@ -152,7 +152,7 @@
152
152
  :get-item-group-key="rowGrouping.getItemGroupKey"
153
153
  :get-global-index="getGlobalIndex"
154
154
  :get-item-key="getItemKey"
155
- :get-row-props="(getRowProps as any)"
155
+ :get-row-props="getRowProps as any"
156
156
  @scroll="handleContentScroll"
157
157
  @group-toggle="(key, e) => rowGrouping.toggleGroupExpansion(key, e!)"
158
158
  @row-click="handleRowClick"
@@ -219,8 +219,14 @@
219
219
  v-if="$slots['not-found'] || $slots.empty"
220
220
  #empty
221
221
  >
222
- <slot v-if="isNotFoundState && $slots['not-found']" name="not-found" />
223
- <slot v-else name="empty" />
222
+ <slot
223
+ v-if="isNotFoundState && $slots['not-found']"
224
+ name="not-found"
225
+ />
226
+ <slot
227
+ v-else
228
+ name="empty"
229
+ />
224
230
  </template>
225
231
  <template
226
232
  v-if="$slots.loading"
@@ -287,8 +293,14 @@
287
293
  @refresh="emit('pull-refresh')"
288
294
  >
289
295
  <template #empty>
290
- <slot v-if="isNotFoundState && $slots['not-found']" name="not-found" />
291
- <slot v-else-if="$slots.empty" name="empty" />
296
+ <slot
297
+ v-if="isNotFoundState && $slots['not-found']"
298
+ name="not-found"
299
+ />
300
+ <slot
301
+ v-else-if="$slots.empty"
302
+ name="empty"
303
+ />
292
304
  <TableEmpty
293
305
  v-else
294
306
  :icon="resolvedEmptyIcon"
@@ -373,9 +385,23 @@ import {
373
385
  useDataTableState,
374
386
  } from "@ui/components/organisms/vc-table/composables";
375
387
  import { ColumnCollector, type ColumnInstance } from "@ui/components/organisms/vc-table/utils/ColumnCollector";
376
- import { ColumnCollectorKey, FilterContextKey, HasFlexColumnsKey, IsColumnReorderingKey } from "@ui/components/organisms/vc-table/keys";
388
+ import {
389
+ ColumnCollectorKey,
390
+ FilterContextKey,
391
+ HasFlexColumnsKey,
392
+ IsColumnReorderingKey,
393
+ } from "@ui/components/organisms/vc-table/keys";
377
394
  import { IsMobileKey } from "@framework/injection-keys";
378
- import type { VcColumnProps, VcDataTableExtendedProps, FilterValue, EditChange, TableAction, SortMeta, MobileSwipeAction, TableStateConfig } from "@ui/components/organisms/vc-table/types";
395
+ import type {
396
+ VcColumnProps,
397
+ VcDataTableExtendedProps,
398
+ FilterValue,
399
+ EditChange,
400
+ TableAction,
401
+ SortMeta,
402
+ MobileSwipeAction,
403
+ TableStateConfig,
404
+ } from "@ui/components/organisms/vc-table/types";
379
405
  import type { DataTablePersistedState } from "@ui/components/organisms/vc-table/composables";
380
406
 
381
407
  const props = withDefaults(defineProps<VcDataTableExtendedProps<T>>(), {
@@ -397,7 +423,7 @@ const props = withDefaults(defineProps<VcDataTableExtendedProps<T>>(), {
397
423
  size: "normal",
398
424
  variant: "default",
399
425
  resizableColumns: true,
400
- reorderableColumns: false,
426
+ reorderableColumns: true,
401
427
  reorderableRows: false,
402
428
  showAllColumns: true,
403
429
  scrollable: false,
@@ -423,7 +449,7 @@ const props = withDefaults(defineProps<VcDataTableExtendedProps<T>>(), {
423
449
  infiniteScroll: false,
424
450
  infiniteScrollDistance: 100,
425
451
  globalFilters: undefined,
426
- columnSwitcher: false,
452
+ columnSwitcher: true,
427
453
  stateStorage: "local",
428
454
  searchable: false,
429
455
  searchValue: undefined,
@@ -599,13 +625,12 @@ const notFoundDescription = computed(() => t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_
599
625
 
600
626
  /** Detect not-found state: items empty + active search or filters */
601
627
  const isNotFoundState = computed(
602
- () => displayItems.value.length === 0 && !props.loading && (internalSearchValue.value !== "" || hasActiveFilters.value),
628
+ () =>
629
+ displayItems.value.length === 0 && !props.loading && (internalSearchValue.value !== "" || hasActiveFilters.value),
603
630
  );
604
631
 
605
632
  /** Resolved title/description/icon/action for the current empty-like state */
606
- const resolvedEmptyIcon = computed(() =>
607
- isNotFoundState.value ? props.notFoundState?.icon : props.emptyState?.icon,
608
- );
633
+ const resolvedEmptyIcon = computed(() => (isNotFoundState.value ? props.notFoundState?.icon : props.emptyState?.icon));
609
634
  const resolvedEmptyTitle = computed(() =>
610
635
  isNotFoundState.value
611
636
  ? (props.notFoundState?.title ?? notFoundTitle.value)
@@ -1632,11 +1657,7 @@ const handleMobileRowSelect = (item: T, index: number) => {
1632
1657
  handleRowSelectionChange(item);
1633
1658
  };
1634
1659
 
1635
- const handleMobileRowAction = (
1636
- action: MobileSwipeAction<T>,
1637
- item: T,
1638
- index: number,
1639
- ) => {
1660
+ const handleMobileRowAction = (action: MobileSwipeAction<T>, item: T, index: number) => {
1640
1661
  // Execute the action's click handler if provided
1641
1662
  if (action.clickHandler) {
1642
1663
  action.clickHandler(item, index);
@@ -1,123 +0,0 @@
1
- import { defineComponent as K, computed as c, openBlock as i, createBlock as n, withCtx as f, createVNode as d, unref as l, createCommentVNode as s } from "vue";
2
- import { w as B, S, z as A, b as F, a as m } from "./vendor-unovis-vue-C_K1g5KH.js";
3
- import { b as p, c as C } from "./index-tgmgQAD9.js";
4
- import { f as L, r as g, b as V, a as X, c as Y } from "./chart-utils-BTs6UFaZ.js";
5
- const G = /* @__PURE__ */ K({
6
- __name: "DashboardBarChart",
7
- props: {
8
- data: {},
9
- config: {},
10
- xKey: {},
11
- yKeys: {},
12
- height: { default: void 0 },
13
- showTooltip: { type: Boolean, default: !0 },
14
- showXAxis: { type: Boolean, default: !0 },
15
- showYAxis: { type: Boolean, default: !0 },
16
- showGrid: { type: Boolean, default: !0 },
17
- showLegend: { type: Boolean, default: !0 },
18
- numXTicks: { default: void 0 },
19
- numYTicks: { default: 5 },
20
- rangeStart: { default: void 0 },
21
- rangeEnd: { default: void 0 },
22
- xTickFormat: { type: Function, default: void 0 },
23
- yTickFormat: { type: Function, default: void 0 }
24
- },
25
- setup(t) {
26
- const e = t, y = { top: 8, right: 8, bottom: 4, left: 4 }, h = (a) => a[e.xKey], k = c(
27
- () => L(
28
- e.data,
29
- (a) => a[e.xKey],
30
- e.rangeStart,
31
- e.rangeEnd
32
- )
33
- ), x = c(
34
- () => e.yKeys.map((a) => (o) => o[a])
35
- ), b = c(
36
- () => e.yKeys.map(
37
- (a, o) => g({
38
- config: e.config,
39
- key: String(a),
40
- index: o,
41
- fallbackLabel: String(a)
42
- }).color
43
- )
44
- ), T = c(() => ({
45
- [B.bar]: (a, o) => {
46
- if (!e.yKeys.length || o < 0)
47
- return null;
48
- const u = o % e.yKeys.length, r = e.yKeys[u];
49
- if (!r)
50
- return null;
51
- const { label: v, color: w } = g({
52
- config: e.config,
53
- key: String(r),
54
- index: u,
55
- fallbackLabel: String(r)
56
- });
57
- return V({
58
- title: Y(a[e.xKey], e.xTickFormat),
59
- items: [
60
- {
61
- label: v,
62
- color: w,
63
- value: X(a[r], e.yTickFormat)
64
- }
65
- ]
66
- });
67
- }
68
- }));
69
- return (a, o) => (i(), n(p, { config: t.config }, {
70
- default: f(() => [
71
- d(l(S), {
72
- data: k.value,
73
- height: t.height,
74
- margin: y
75
- }, {
76
- default: f(() => [
77
- t.showTooltip ? (i(), n(l(A), {
78
- key: 0,
79
- "allow-hover": !0,
80
- "class-name": "dashboard-chart-tooltip-host",
81
- "vertical-shift": 8,
82
- triggers: T.value
83
- }, null, 8, ["triggers"])) : s("", !0),
84
- d(l(F), {
85
- x: h,
86
- y: x.value,
87
- color: b.value,
88
- "rounded-corners": 4,
89
- "bar-padding": 0.2
90
- }, null, 8, ["y", "color"]),
91
- t.showXAxis ? (i(), n(l(m), {
92
- key: 1,
93
- type: "x",
94
- "tick-line": !1,
95
- "domain-line": !1,
96
- "grid-line": !1,
97
- "num-ticks": t.numXTicks,
98
- "tick-format": t.xTickFormat
99
- }, null, 8, ["num-ticks", "tick-format"])) : s("", !0),
100
- t.showYAxis ? (i(), n(l(m), {
101
- key: 2,
102
- type: "y",
103
- "tick-line": !1,
104
- "domain-line": !1,
105
- "grid-line": t.showGrid,
106
- "num-ticks": t.numYTicks,
107
- "tick-format": t.yTickFormat
108
- }, null, 8, ["grid-line", "num-ticks", "tick-format"])) : s("", !0)
109
- ]),
110
- _: 1
111
- }, 8, ["data", "height"]),
112
- t.showLegend ? (i(), n(C, {
113
- key: 0,
114
- config: t.config
115
- }, null, 8, ["config"])) : s("", !0)
116
- ]),
117
- _: 1
118
- }, 8, ["config"]));
119
- }
120
- });
121
- export {
122
- G as default
123
- };