@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.
- package/CHANGELOG.md +18 -0
- package/core/services/dashboard-service.ts +5 -11
- package/dist/core/services/dashboard-service.d.ts.map +1 -1
- package/dist/framework.js +2568 -2546
- package/dist/index.css +1 -1
- package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/_internal/vc-mobile-back-button.vue.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
- package/dist/shared/components/change-password/change-password.vue.d.ts.map +1 -1
- package/dist/shared/components/change-password-button/change-password-button.vue.d.ts.map +1 -1
- package/dist/shared/components/common/popup/vc-popup-error.vue.d.ts.map +1 -1
- package/dist/shared/components/common/popup/vc-popup-info.vue.d.ts.map +1 -1
- package/dist/shared/components/common/popup/vc-popup-warning.vue.d.ts.map +1 -1
- package/dist/shared/components/dashboard-widget-card/dashboard-widget-card.vue.d.ts.map +1 -1
- package/dist/shared/components/draggable-dashboard/DraggableDashboard.vue.d.ts.map +1 -1
- package/dist/shared/components/draggable-dashboard/_internal/DashboardWidget.vue.d.ts.map +1 -1
- package/dist/shared/components/draggable-dashboard/composables/useDashboardGrid.d.ts +1 -0
- package/dist/shared/components/draggable-dashboard/composables/useDashboardGrid.d.ts.map +1 -1
- package/dist/shared/components/draggable-dashboard/composables/useLayoutPersistence.d.ts +1 -0
- package/dist/shared/components/draggable-dashboard/composables/useLayoutPersistence.d.ts.map +1 -1
- package/dist/shared/components/draggable-dashboard/composables/useWidgetLayout.d.ts +1 -0
- package/dist/shared/components/draggable-dashboard/composables/useWidgetLayout.d.ts.map +1 -1
- package/dist/shared/components/generic-dropdown/generic-dropdown.vue.d.ts +2 -2
- package/dist/shared/components/generic-dropdown/generic-dropdown.vue.d.ts.map +1 -1
- package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
- package/dist/shared/components/logout-button/logout-button.vue.d.ts.map +1 -1
- package/dist/shared/components/multilanguage-selector/multilanguage-selector.vue.d.ts.map +1 -1
- package/dist/shared/components/notification-dropdown/_internal/notification/notification.vue.d.ts.map +1 -1
- package/dist/shared/components/notification-dropdown/notification-dropdown.vue.d.ts.map +1 -1
- package/dist/shared/components/notification-template/notification-template.vue.d.ts.map +1 -1
- package/dist/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue.d.ts.map +1 -1
- package/dist/shared/components/settings-menu/settings-menu.vue.d.ts.map +1 -1
- package/dist/shared/components/settings-menu-item/settings-menu-item.vue.d.ts.map +1 -1
- package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -1
- package/dist/shared/components/sign-in/external-provider.vue.d.ts.map +1 -1
- package/dist/shared/components/sign-in/external-providers.vue.d.ts.map +1 -1
- package/dist/shared/components/theme-selector/theme-selector.vue.d.ts.map +1 -1
- package/dist/shared/components/user-dropdown-button/_internal/user-info.vue.d.ts.map +1 -1
- package/dist/shared/components/user-dropdown-button/_internal/user-sidebar.vue.d.ts.map +1 -1
- package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
- package/dist/shared/composables/useMenuExpanded.d.ts +1 -1
- package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts.map +1 -1
- package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
- package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts.map +1 -1
- package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
- package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
- package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-banner/vc-banner.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-col/vc-col.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts +2 -2
- package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-hint/vc-hint.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/icons/MenuBurgerIcon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-bootstrap-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-fontawesome-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-icon-examples.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-icon-test.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-lucide-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-material-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-svg-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-row/vc-row.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-skeleton/vc-skeleton.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-status-icon/vc-status-icon.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-button.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-custom-button.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-font-selector.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-editor/_internal/vc-editor-toolbar.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +2 -2
- package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +2 -2
- package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-radio-button/vc-radio-button.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +2 -2
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts +5 -5
- package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-switch/vc-switch.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-toast/vc-toast.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarContent.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarMobileActions.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarSlots.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarWidgetItem.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarWidgetsMenu.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/MenuSidebar.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
- 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
- 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
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-widget-container/_internal/vc-widget-container-desktop.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-widget-container/_internal/vc-widget-container-mobile.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-widget-container/vc-widget-container.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts +2 -2
- 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
- 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
- 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
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts +2 -2
- 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
- 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
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-footer/vc-table-footer.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-header/vc-table-header.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-select-all/vc-table-select-all.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +2 -2
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
- package/dist/vendor-vueuse-components-B0zqjNRW.js +542 -0
- package/dist/vendor-vueuse-core-CYgwn-B2.js +5130 -0
- package/dist/vendor-vueuse-shared-B_uDJJ6V.js +1169 -0
- package/package.json +14 -14
- package/shared/components/draggable-dashboard/DraggableDashboard.vue +23 -0
- package/shared/components/draggable-dashboard/composables/useDashboardGrid.ts +25 -0
- package/shared/components/draggable-dashboard/composables/useLayoutPersistence.ts +10 -0
- package/shared/components/draggable-dashboard/composables/useWidgetLayout.ts +39 -0
- package/ui/components/molecules/vc-field/vc-field.vue +1 -6
- package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +1 -0
- package/dist/vendor-vueuse-components-CuLo31bP.js +0 -219
- package/dist/vendor-vueuse-core-A9T6NeUn.js +0 -6880
- 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.
|
|
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": "^
|
|
69
|
-
"@vueuse/integrations": "^
|
|
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.
|
|
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
|
|
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": "
|
|
91
|
+
"@laynezh/vite-plugin-lib-assets": "v1.1.0",
|
|
92
92
|
"@types/dompurify": "^3.0.5",
|
|
93
|
-
"@vc-shell/api-client-generator": "^1.1.
|
|
94
|
-
"@vc-shell/config-generator": "^1.1.
|
|
95
|
-
"@vc-shell/ts-config": "^1.1.
|
|
96
|
-
"@vitejs/plugin-vue": "^
|
|
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.
|
|
106
|
-
"vite": "^
|
|
105
|
+
"typescript": "^5.8.3",
|
|
106
|
+
"vite": "^6.3.3",
|
|
107
107
|
"vitest": "^1.3.1",
|
|
108
|
-
"vue-component-type-helpers": "^
|
|
109
|
-
"vue-tsc": "^
|
|
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
|
}
|
|
@@ -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
|
-
};
|