@vc-shell/framework 1.1.76 → 1.1.78

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 (182) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/core/services/dashboard-service.ts +5 -11
  3. package/dist/core/services/dashboard-service.d.ts.map +1 -1
  4. package/dist/framework.js +2568 -2546
  5. package/dist/index.css +1 -1
  6. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
  7. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/_internal/vc-mobile-back-button.vue.d.ts.map +1 -1
  8. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  9. package/dist/shared/components/change-password/change-password.vue.d.ts.map +1 -1
  10. package/dist/shared/components/change-password-button/change-password-button.vue.d.ts.map +1 -1
  11. package/dist/shared/components/common/popup/vc-popup-error.vue.d.ts.map +1 -1
  12. package/dist/shared/components/common/popup/vc-popup-info.vue.d.ts.map +1 -1
  13. package/dist/shared/components/common/popup/vc-popup-warning.vue.d.ts.map +1 -1
  14. package/dist/shared/components/dashboard-widget-card/dashboard-widget-card.vue.d.ts.map +1 -1
  15. package/dist/shared/components/draggable-dashboard/DraggableDashboard.vue.d.ts.map +1 -1
  16. package/dist/shared/components/draggable-dashboard/_internal/DashboardWidget.vue.d.ts.map +1 -1
  17. package/dist/shared/components/draggable-dashboard/composables/useDashboardGrid.d.ts +1 -0
  18. package/dist/shared/components/draggable-dashboard/composables/useDashboardGrid.d.ts.map +1 -1
  19. package/dist/shared/components/draggable-dashboard/composables/useLayoutPersistence.d.ts +1 -0
  20. package/dist/shared/components/draggable-dashboard/composables/useLayoutPersistence.d.ts.map +1 -1
  21. package/dist/shared/components/draggable-dashboard/composables/useWidgetLayout.d.ts +1 -0
  22. package/dist/shared/components/draggable-dashboard/composables/useWidgetLayout.d.ts.map +1 -1
  23. package/dist/shared/components/generic-dropdown/generic-dropdown.vue.d.ts +2 -2
  24. package/dist/shared/components/generic-dropdown/generic-dropdown.vue.d.ts.map +1 -1
  25. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
  26. package/dist/shared/components/logout-button/logout-button.vue.d.ts.map +1 -1
  27. package/dist/shared/components/multilanguage-selector/multilanguage-selector.vue.d.ts.map +1 -1
  28. package/dist/shared/components/notification-dropdown/_internal/notification/notification.vue.d.ts.map +1 -1
  29. package/dist/shared/components/notification-dropdown/notification-dropdown.vue.d.ts.map +1 -1
  30. package/dist/shared/components/notification-template/notification-template.vue.d.ts.map +1 -1
  31. package/dist/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue.d.ts.map +1 -1
  32. package/dist/shared/components/settings-menu/settings-menu.vue.d.ts.map +1 -1
  33. package/dist/shared/components/settings-menu-item/settings-menu-item.vue.d.ts.map +1 -1
  34. package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -1
  35. package/dist/shared/components/sign-in/external-provider.vue.d.ts.map +1 -1
  36. package/dist/shared/components/sign-in/external-providers.vue.d.ts.map +1 -1
  37. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts.map +1 -1
  38. package/dist/shared/components/user-dropdown-button/_internal/user-info.vue.d.ts.map +1 -1
  39. package/dist/shared/components/user-dropdown-button/_internal/user-sidebar.vue.d.ts.map +1 -1
  40. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  41. package/dist/shared/composables/useMenuExpanded.d.ts +1 -1
  42. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts.map +1 -1
  43. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts.map +1 -1
  44. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
  45. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  46. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts.map +1 -1
  47. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  48. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
  49. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  52. package/dist/ui/components/atoms/vc-banner/vc-banner.vue.d.ts.map +1 -1
  53. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
  54. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
  55. package/dist/ui/components/atoms/vc-col/vc-col.vue.d.ts.map +1 -1
  56. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts +2 -2
  57. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
  58. package/dist/ui/components/atoms/vc-hint/vc-hint.vue.d.ts.map +1 -1
  59. package/dist/ui/components/atoms/vc-icon/icons/MenuBurgerIcon.vue.d.ts.map +1 -1
  60. package/dist/ui/components/atoms/vc-icon/vc-bootstrap-icon.vue.d.ts.map +1 -1
  61. package/dist/ui/components/atoms/vc-icon/vc-fontawesome-icon.vue.d.ts.map +1 -1
  62. package/dist/ui/components/atoms/vc-icon/vc-icon-examples.vue.d.ts.map +1 -1
  63. package/dist/ui/components/atoms/vc-icon/vc-icon-test.vue.d.ts.map +1 -1
  64. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts.map +1 -1
  65. package/dist/ui/components/atoms/vc-icon/vc-lucide-icon.vue.d.ts.map +1 -1
  66. package/dist/ui/components/atoms/vc-icon/vc-material-icon.vue.d.ts.map +1 -1
  67. package/dist/ui/components/atoms/vc-icon/vc-svg-icon.vue.d.ts.map +1 -1
  68. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts.map +1 -1
  69. package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts.map +1 -1
  70. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  71. package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts.map +1 -1
  72. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  73. package/dist/ui/components/atoms/vc-row/vc-row.vue.d.ts.map +1 -1
  74. package/dist/ui/components/atoms/vc-skeleton/vc-skeleton.vue.d.ts.map +1 -1
  75. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  76. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon.vue.d.ts.map +1 -1
  77. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  78. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  79. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
  80. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts.map +1 -1
  81. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  82. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  83. package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-button.vue.d.ts.map +1 -1
  84. package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-custom-button.vue.d.ts.map +1 -1
  85. package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-font-selector.vue.d.ts.map +1 -1
  86. package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-toolbar.vue.d.ts.map +1 -1
  87. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +2 -2
  88. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  89. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  90. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  91. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  92. package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts.map +1 -1
  93. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  94. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
  95. package/dist/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.vue.d.ts.map +1 -1
  96. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +2 -2
  97. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
  98. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts.map +1 -1
  99. package/dist/ui/components/molecules/vc-radio-button/vc-radio-button.vue.d.ts.map +1 -1
  100. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts.map +1 -1
  101. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +2 -2
  102. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  103. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts +5 -5
  104. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  105. package/dist/ui/components/molecules/vc-switch/vc-switch.vue.d.ts.map +1 -1
  106. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  107. package/dist/ui/components/molecules/vc-toast/vc-toast.vue.d.ts.map +1 -1
  108. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarContent.vue.d.ts.map +1 -1
  109. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue.d.ts.map +1 -1
  110. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarMobileActions.vue.d.ts.map +1 -1
  111. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue.d.ts +2 -2
  112. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue.d.ts.map +1 -1
  113. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarSlots.vue.d.ts.map +1 -1
  114. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarWidgetItem.vue.d.ts.map +1 -1
  115. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarWidgetsMenu.vue.d.ts.map +1 -1
  116. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/MenuSidebar.vue.d.ts.map +1 -1
  117. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  118. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  119. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts.map +1 -1
  120. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  121. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  122. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts +2 -2
  123. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  124. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-base-button.vue.d.ts.map +1 -1
  125. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  126. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-circle-button.vue.d.ts.map +1 -1
  127. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/desktop/vc-blade-toolbar-desktop.vue.d.ts.map +1 -1
  128. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/mobile/vc-blade-toolbar-mobile.vue.d.ts.map +1 -1
  129. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/vc-blade-toolbar-buttons.vue.d.ts.map +1 -1
  130. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts +2 -2
  131. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  132. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-widget-container/_internal/vc-widget-container-desktop.vue.d.ts.map +1 -1
  133. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-widget-container/_internal/vc-widget-container-mobile.vue.d.ts.map +1 -1
  134. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-widget-container/vc-widget-container.vue.d.ts.map +1 -1
  135. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  136. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts +2 -2
  137. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  138. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts.map +1 -1
  139. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  140. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts.map +1 -1
  141. package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts.map +1 -1
  142. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts.map +1 -1
  143. package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
  144. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts +2 -2
  145. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
  146. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  147. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
  148. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts.map +1 -1
  149. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts +2 -2
  150. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts.map +1 -1
  151. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue.d.ts +2 -2
  152. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue.d.ts.map +1 -1
  153. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts +2 -2
  154. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts.map +1 -1
  155. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-select-all-header/vc-table-select-all-header.vue.d.ts.map +1 -1
  156. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts +2 -2
  157. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts.map +1 -1
  158. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -1
  159. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +2 -2
  160. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  161. package/dist/ui/components/organisms/vc-table/_internal/vc-table-footer/vc-table-footer.vue.d.ts.map +1 -1
  162. package/dist/ui/components/organisms/vc-table/_internal/vc-table-header/vc-table-header.vue.d.ts.map +1 -1
  163. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +2 -2
  164. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  165. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts +2 -2
  166. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts.map +1 -1
  167. package/dist/ui/components/organisms/vc-table/_internal/vc-table-select-all/vc-table-select-all.vue.d.ts.map +1 -1
  168. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +2 -2
  169. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  170. package/dist/vendor-vueuse-components-B0zqjNRW.js +542 -0
  171. package/dist/vendor-vueuse-core-CYgwn-B2.js +5130 -0
  172. package/dist/vendor-vueuse-shared-B_uDJJ6V.js +1169 -0
  173. package/package.json +14 -14
  174. package/shared/components/draggable-dashboard/DraggableDashboard.vue +23 -0
  175. package/shared/components/draggable-dashboard/composables/useDashboardGrid.ts +25 -0
  176. package/shared/components/draggable-dashboard/composables/useLayoutPersistence.ts +10 -0
  177. package/shared/components/draggable-dashboard/composables/useWidgetLayout.ts +39 -0
  178. package/ui/components/molecules/vc-field/vc-field.vue +1 -6
  179. package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +1 -0
  180. package/dist/vendor-vueuse-components-CuLo31bP.js +0 -219
  181. package/dist/vendor-vueuse-core-A9T6NeUn.js +0 -6880
  182. package/dist/vendor-vueuse-shared-B2Uva3Md.js +0 -35
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.1.76",
3
+ "version": "1.1.78",
4
4
  "type": "module",
5
5
  "main": "./dist/framework.js",
6
6
  "types": "./dist/index.d.ts",
@@ -65,8 +65,8 @@
65
65
  "@vee-validate/rules": "^4.12.4",
66
66
  "@vuepic/vue-datepicker": "^11.0.2",
67
67
  "@vueuse/components": "^10.7.1",
68
- "@vueuse/core": "^13.9.0",
69
- "@vueuse/integrations": "^13.9.0",
68
+ "@vueuse/core": "^10.7.1",
69
+ "@vueuse/integrations": "^10.7.1",
70
70
  "bootstrap-icons": "^1.11.3",
71
71
  "core-js": "^3.35.0",
72
72
  "dompurify": "^3.0.11",
@@ -78,22 +78,22 @@
78
78
  "tiptap-markdown": "^0.9.0",
79
79
  "truncate-html": "^1.1.1",
80
80
  "vee-validate": "^4.12.4",
81
- "vue": "^3.5.21",
81
+ "vue": "^3.5.13",
82
82
  "vue-currency-input": "^3.0.5",
83
83
  "vue-i18n": "^11.1.11",
84
- "vue-router": "^4.5.1",
84
+ "vue-router": "^4.2.5",
85
85
  "vue3-application-insights": "^1.1.0",
86
86
  "vue3-touch-events": "^4.1.8",
87
87
  "whatwg-fetch": "^3.6.19"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@fullhuman/postcss-purgecss": "^7.0.2",
91
- "@laynezh/vite-plugin-lib-assets": "^2.1.3",
91
+ "@laynezh/vite-plugin-lib-assets": "v1.1.0",
92
92
  "@types/dompurify": "^3.0.5",
93
- "@vc-shell/api-client-generator": "^1.1.76",
94
- "@vc-shell/config-generator": "^1.1.76",
95
- "@vc-shell/ts-config": "^1.1.76",
96
- "@vitejs/plugin-vue": "^6.0.1",
93
+ "@vc-shell/api-client-generator": "^1.1.78",
94
+ "@vc-shell/config-generator": "^1.1.78",
95
+ "@vc-shell/ts-config": "^1.1.78",
96
+ "@vitejs/plugin-vue": "^5.2.3",
97
97
  "@vue/test-utils": "^2.4.5",
98
98
  "cypress-signalr-mock": "^1.5.0",
99
99
  "esbuild": "^0.25.3",
@@ -102,11 +102,11 @@
102
102
  "shx": "^0.3.4",
103
103
  "tsc-alias": "^1.8.8",
104
104
  "tsx": "^4.7.1",
105
- "typescript": "^5.9.2",
106
- "vite": "^7.1.5",
105
+ "typescript": "^5.8.3",
106
+ "vite": "^6.3.3",
107
107
  "vitest": "^1.3.1",
108
- "vue-component-type-helpers": "^3.0.6",
109
- "vue-tsc": "^3.0.6"
108
+ "vue-component-type-helpers": "^2.2.10",
109
+ "vue-tsc": "^2.2.10"
110
110
  },
111
111
  "publishConfig": {
112
112
  "access": "public",
@@ -84,6 +84,7 @@ const {
84
84
  saveLayoutToLocalStorage,
85
85
  loadLayoutFromLocalStorage,
86
86
  initializeWithBuiltInPositions,
87
+ handleNewWidget,
87
88
  } = useDashboardGrid();
88
89
 
89
90
  // Initialize cellSize calculator
@@ -116,6 +117,28 @@ watch(gridContainerRef, (container) => {
116
117
  }
117
118
  });
118
119
 
120
+ // Watch for new widgets and handle their placement
121
+ watch(
122
+ widgets,
123
+ (newWidgets, oldWidgets) => {
124
+ if (!oldWidgets || newWidgets.length > oldWidgets.length) {
125
+ // New widgets have been added
126
+ const newWidgetIds = newWidgets
127
+ .filter(w => !oldWidgets?.some(ow => ow.id === w.id))
128
+ .map(w => w.id);
129
+
130
+ newWidgetIds.forEach(widgetId => {
131
+ const widget = newWidgets.find(w => w.id === widgetId);
132
+ if (widget && !layout.value.has(widgetId)) {
133
+ // Widget doesn't have a position yet, find a free one
134
+ handleNewWidget(widget);
135
+ }
136
+ });
137
+ }
138
+ },
139
+ { immediate: false },
140
+ );
141
+
119
142
  // Watch for layout changes and save to localStorage
120
143
  watch(
121
144
  layout,
@@ -78,6 +78,15 @@ export function useDashboardGrid() {
78
78
  const initializeLayout = (): void => {
79
79
  // Priority 1: Loading from localStorage
80
80
  const layoutLoadedFromStorage = loadLayoutFromLocalStorage();
81
+
82
+ // Check for new widgets that don't have positions in localStorage
83
+ const savedPositions = persistence.getSavedPositions();
84
+ const widgetsWithoutSavedPosition = widgets.value.filter(w => !savedPositions[w.id] && !layout.value.has(w.id));
85
+
86
+ if (widgetsWithoutSavedPosition.length > 0) {
87
+ // Place new widgets without collisions
88
+ widgetLayout.placeNewWidgets(widgetsWithoutSavedPosition, widgets.value, layout.value);
89
+ }
81
90
 
82
91
  // Priority 2: Using built-in widget positions
83
92
  if (!layoutLoadedFromStorage) {
@@ -90,6 +99,21 @@ export function useDashboardGrid() {
90
99
  }
91
100
  };
92
101
 
102
+ /**
103
+ * Handles registration of new widgets after initialization
104
+ */
105
+ const handleNewWidget = (widget: IDashboardWidget): void => {
106
+ // Check if widget already has a valid position from localStorage
107
+ const savedPositions = persistence.getSavedPositions();
108
+ if (savedPositions[widget.id]) {
109
+ return; // Position already loaded from localStorage
110
+ }
111
+
112
+ // Find a free position for the new widget
113
+ const position = widgetLayout.findFreePosition(widget, widgets.value, layout.value);
114
+ dashboard.updateWidgetPosition(widget.id, position);
115
+ };
116
+
93
117
  return {
94
118
  widgets,
95
119
  layout,
@@ -100,5 +124,6 @@ export function useDashboardGrid() {
100
124
  arrangeWidgetsInRows,
101
125
  initializeWithBuiltInPositions,
102
126
  initializeLayout,
127
+ handleNewWidget,
103
128
  };
104
129
  }
@@ -66,6 +66,15 @@ export function useLayoutPersistence(
66
66
  }
67
67
  };
68
68
 
69
+ /**
70
+ * Gets saved positions for specific widgets
71
+ *
72
+ * @returns The saved positions
73
+ */
74
+ const getSavedPositions = (): Record<string, DashboardWidgetPosition> => {
75
+ return savedLayout.value;
76
+ };
77
+
69
78
  /**
70
79
  * Clears the saved layout from localStorage
71
80
  */
@@ -85,5 +94,6 @@ export function useLayoutPersistence(
85
94
  loadLayout,
86
95
  clearSavedLayout,
87
96
  hasSavedLayout,
97
+ getSavedPositions,
88
98
  };
89
99
  }
@@ -255,10 +255,49 @@ export function useWidgetLayout(updatePositionCallback: (widgetId: string, posit
255
255
  return true;
256
256
  };
257
257
 
258
+ /**
259
+ * Places new widgets without collisions with existing ones
260
+ *
261
+ * @param newWidgets The array of new widgets to place
262
+ * @param allWidgets The array of all widgets
263
+ * @param layout The map of widget positions
264
+ */
265
+ const placeNewWidgets = (
266
+ newWidgets: IDashboardWidget[],
267
+ allWidgets: IDashboardWidget[],
268
+ layout: Map<string, DashboardWidgetPosition>,
269
+ ): void => {
270
+ if (newWidgets.length === 0) return;
271
+
272
+ // Create a map of occupied cells from existing widgets
273
+ const occupiedCells = grid.createOccupiedCellsMap(allWidgets, layout);
274
+
275
+ // Sort new widgets by size (bigger first)
276
+ const sortedWidgets = [...newWidgets].sort((a, b) => {
277
+ const aSize = a.size.width * a.size.height;
278
+ const bSize = b.size.width * b.size.height;
279
+ return bSize - aSize;
280
+ });
281
+
282
+ // Place each new widget
283
+ for (const widget of sortedWidgets) {
284
+ const position = findOptimalPosition(widget, occupiedCells, grid.dynamicRows.value + grid.ROWS_BUFFER);
285
+ updatePositionCallback(widget.id, position);
286
+
287
+ // Update the map of occupied cells
288
+ for (let x = position.x; x < position.x + widget.size.width; x++) {
289
+ for (let y = position.y; y < position.y + widget.size.height; y++) {
290
+ occupiedCells.add(`${x},${y}`);
291
+ }
292
+ }
293
+ }
294
+ };
295
+
258
296
  return {
259
297
  findFreePosition,
260
298
  findOptimalPosition,
261
299
  arrangeWidgetsInRows,
262
300
  initializeWithBuiltInPositions,
301
+ placeNewWidgets,
263
302
  };
264
303
  }
@@ -10,7 +10,6 @@
10
10
  <!-- Field label -->
11
11
  <VcLabel
12
12
  v-if="label"
13
- class="vc-field__label"
14
13
  >
15
14
  <span>{{ label }}</span>
16
15
  <template
@@ -92,17 +91,13 @@ function copy(value: string) {
92
91
  @apply tw-flex;
93
92
 
94
93
  &--vertical {
95
- @apply tw-flex-col;
94
+ @apply tw-flex-col tw-gap-2;
96
95
  }
97
96
 
98
97
  &--horizontal {
99
98
  @apply tw-flex-row tw-items-center;
100
99
  }
101
100
 
102
- &__label {
103
- @apply tw-mb-2;
104
- }
105
-
106
101
  &__copy-button {
107
102
  @apply tw-ml-2;
108
103
  }
@@ -118,6 +118,7 @@ function onChange() {
118
118
  }
119
119
 
120
120
  input[type="radio"] {
121
+ flex-shrink: 0;
121
122
  border-radius: 50%;
122
123
  appearance: none;
123
124
  height: var(--radio-size);
@@ -1,219 +0,0 @@
1
- import { defineComponent as N, ref as M, h as j, watch as x, computed as I } from "vue";
2
- import { d as b, n as D, i as T, a as B, t as O, b as X, c as R, e as V } from "./vendor-vueuse-shared-B2Uva3Md.js";
3
- function L(t) {
4
- var n;
5
- const e = O(t);
6
- return (n = e?.$el) != null ? n : e;
7
- }
8
- const U = B ? window : void 0;
9
- function g(...t) {
10
- let n, e, o, u;
11
- if (typeof t[0] == "string" || Array.isArray(t[0]) ? ([e, o, u] = t, n = U) : [n, e, o, u] = t, !n)
12
- return D;
13
- Array.isArray(e) || (e = [e]), Array.isArray(o) || (o = [o]);
14
- const a = [], m = () => {
15
- a.forEach((v) => v()), a.length = 0;
16
- }, l = (v, p, r, s) => (v.addEventListener(p, r, s), () => v.removeEventListener(p, r, s)), d = x(
17
- () => [L(n), O(u)],
18
- ([v, p]) => {
19
- if (m(), !v)
20
- return;
21
- const r = X(p) ? { ...p } : p;
22
- a.push(
23
- ...e.flatMap((s) => o.map((f) => l(v, s, f, r)))
24
- );
25
- },
26
- { immediate: !0, flush: "post" }
27
- ), c = () => {
28
- d(), m();
29
- };
30
- return R(c), c;
31
- }
32
- let W = !1;
33
- function H(t, n, e = {}) {
34
- const { window: o = U, ignore: u = [], capture: a = !0, detectIframe: m = !1 } = e;
35
- if (!o)
36
- return D;
37
- T && !W && (W = !0, Array.from(o.document.body.children).forEach((r) => r.addEventListener("click", D)), o.document.documentElement.addEventListener("click", D));
38
- let l = !0;
39
- const d = (r) => u.some((s) => {
40
- if (typeof s == "string")
41
- return Array.from(o.document.querySelectorAll(s)).some((f) => f === r.target || r.composedPath().includes(f));
42
- {
43
- const f = L(s);
44
- return f && (r.target === f || r.composedPath().includes(f));
45
- }
46
- }), v = [
47
- g(o, "click", (r) => {
48
- const s = L(t);
49
- if (!(!s || s === r.target || r.composedPath().includes(s))) {
50
- if (r.detail === 0 && (l = !d(r)), !l) {
51
- l = !0;
52
- return;
53
- }
54
- n(r);
55
- }
56
- }, { passive: !0, capture: a }),
57
- g(o, "pointerdown", (r) => {
58
- const s = L(t);
59
- l = !d(r) && !!(s && !r.composedPath().includes(s));
60
- }, { passive: !0 }),
61
- m && g(o, "blur", (r) => {
62
- setTimeout(() => {
63
- var s;
64
- const f = L(t);
65
- ((s = o.document.activeElement) == null ? void 0 : s.tagName) === "IFRAME" && !f?.contains(o.document.activeElement) && n(r);
66
- }, 0);
67
- })
68
- ].filter(Boolean);
69
- return () => v.forEach((r) => r());
70
- }
71
- const ne = {
72
- [b.mounted](t, n) {
73
- const e = !n.modifiers.bubble;
74
- if (typeof n.value == "function")
75
- t.__onClickOutside_stop = H(t, n.value, { capture: e });
76
- else {
77
- const [o, u] = n.value;
78
- t.__onClickOutside_stop = H(t, o, Object.assign({ capture: e }, u));
79
- }
80
- },
81
- [b.unmounted](t) {
82
- t.__onClickOutside_stop();
83
- }
84
- }, $ = 500, z = 10;
85
- function G(t, n, e) {
86
- var o, u;
87
- const a = I(() => L(t));
88
- let m, l, d, c = !1;
89
- function v() {
90
- m && (clearTimeout(m), m = void 0), l = void 0, d = void 0, c = !1;
91
- }
92
- function p(i) {
93
- var h, y, _;
94
- const [w, E, k] = [d, l, c];
95
- if (v(), !e?.onMouseUp || !E || !w || (h = e?.modifiers) != null && h.self && i.target !== a.value)
96
- return;
97
- (y = e?.modifiers) != null && y.prevent && i.preventDefault(), (_ = e?.modifiers) != null && _.stop && i.stopPropagation();
98
- const A = i.x - E.x, C = i.y - E.y, F = Math.sqrt(A * A + C * C);
99
- e.onMouseUp(i.timeStamp - w, F, k);
100
- }
101
- function r(i) {
102
- var h, y, _, w;
103
- (h = e?.modifiers) != null && h.self && i.target !== a.value || (v(), (y = e?.modifiers) != null && y.prevent && i.preventDefault(), (_ = e?.modifiers) != null && _.stop && i.stopPropagation(), l = {
104
- x: i.x,
105
- y: i.y
106
- }, d = i.timeStamp, m = setTimeout(
107
- () => {
108
- c = !0, n(i);
109
- },
110
- (w = e?.delay) != null ? w : $
111
- ));
112
- }
113
- function s(i) {
114
- var h, y, _, w;
115
- if ((h = e?.modifiers) != null && h.self && i.target !== a.value || !l || e?.distanceThreshold === !1)
116
- return;
117
- (y = e?.modifiers) != null && y.prevent && i.preventDefault(), (_ = e?.modifiers) != null && _.stop && i.stopPropagation();
118
- const E = i.x - l.x, k = i.y - l.y;
119
- Math.sqrt(E * E + k * k) >= ((w = e?.distanceThreshold) != null ? w : z) && v();
120
- }
121
- const f = {
122
- capture: (o = e?.modifiers) == null ? void 0 : o.capture,
123
- once: (u = e?.modifiers) == null ? void 0 : u.once
124
- }, q = [
125
- g(a, "pointerdown", r, f),
126
- g(a, "pointermove", s, f),
127
- g(a, ["pointerup", "pointerleave"], p, f)
128
- ];
129
- return () => q.forEach((i) => i());
130
- }
131
- const oe = /* @__PURE__ */ N({
132
- name: "OnLongPress",
133
- props: ["as", "options"],
134
- emits: ["trigger"],
135
- setup(t, { slots: n, emit: e }) {
136
- const o = M();
137
- return G(
138
- o,
139
- (u) => {
140
- e("trigger", u);
141
- },
142
- t.options
143
- ), () => {
144
- if (n.default)
145
- return j(t.as || "div", { ref: o }, n.default());
146
- };
147
- }
148
- });
149
- function S(t) {
150
- return typeof Window < "u" && t instanceof Window ? t.document.documentElement : typeof Document < "u" && t instanceof Document ? t.documentElement : t;
151
- }
152
- function Y(t) {
153
- const n = window.getComputedStyle(t);
154
- if (n.overflowX === "scroll" || n.overflowY === "scroll" || n.overflowX === "auto" && t.clientWidth < t.scrollWidth || n.overflowY === "auto" && t.clientHeight < t.scrollHeight)
155
- return !0;
156
- {
157
- const e = t.parentNode;
158
- return !e || e.tagName === "BODY" ? !1 : Y(e);
159
- }
160
- }
161
- function J(t) {
162
- const n = t || window.event, e = n.target;
163
- return Y(e) ? !1 : n.touches.length > 1 ? !0 : (n.preventDefault && n.preventDefault(), !1);
164
- }
165
- const P = /* @__PURE__ */ new WeakMap();
166
- function K(t, n = !1) {
167
- const e = M(n);
168
- let o = null, u = "";
169
- x(V(t), (l) => {
170
- const d = S(O(l));
171
- if (d) {
172
- const c = d;
173
- if (P.get(c) || P.set(c, c.style.overflow), c.style.overflow !== "hidden" && (u = c.style.overflow), c.style.overflow === "hidden")
174
- return e.value = !0;
175
- if (e.value)
176
- return c.style.overflow = "hidden";
177
- }
178
- }, {
179
- immediate: !0
180
- });
181
- const a = () => {
182
- const l = S(O(t));
183
- !l || e.value || (T && (o = g(
184
- l,
185
- "touchmove",
186
- (d) => {
187
- J(d);
188
- },
189
- { passive: !1 }
190
- )), l.style.overflow = "hidden", e.value = !0);
191
- }, m = () => {
192
- const l = S(O(t));
193
- !l || !e.value || (T && o?.(), l.style.overflow = u, P.delete(l), e.value = !1);
194
- };
195
- return R(m), I({
196
- get() {
197
- return e.value;
198
- },
199
- set(l) {
200
- l ? a() : m();
201
- }
202
- });
203
- }
204
- function Q() {
205
- let t = !1;
206
- const n = M(!1);
207
- return (e, o) => {
208
- if (n.value = o.value, t)
209
- return;
210
- t = !0;
211
- const u = K(e, o.value);
212
- x(n, (a) => u.value = a);
213
- };
214
- }
215
- Q();
216
- export {
217
- oe as O,
218
- ne as v
219
- };