@vc-shell/vc-app-skill 2.0.0-alpha.33 → 2.0.0-alpha.34
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 +78 -54
- package/README.md +42 -12
- package/package.json +4 -4
- package/runtime/VERSION +1 -1
- package/runtime/agents/api-analyzer.md +31 -16
- package/runtime/agents/blade-enhancer.md +15 -9
- package/runtime/agents/details-blade-generator.md +47 -31
- package/runtime/agents/list-blade-generator.md +21 -37
- package/runtime/agents/locales-generator.md +3 -0
- package/runtime/agents/migration-agent.md +18 -7
- package/runtime/agents/module-analyzer.md +2 -0
- package/runtime/agents/module-assembler.md +15 -0
- package/runtime/agents/promote-agent.md +15 -4
- package/runtime/agents/type-checker.md +11 -0
- package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
- package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
- package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
- package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
- package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
- package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
- package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +28 -24
- package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
- package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
- package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
- package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +43 -47
- package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
- package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
- package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
- package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
- package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
- package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
- package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
- package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
- package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
- package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +9 -9
- package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
- package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
- package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
- package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
- package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +28 -0
- package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
- package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +22 -13
- package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
- package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
- package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
- package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
- package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
- package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
- package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
- package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
- package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
- package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
- package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
- package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
- package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +79 -62
- package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
- package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
- package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +91 -83
- package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
- package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
- package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
- package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
- package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
- package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
- package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
- package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
- package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
- package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
- package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
- package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
- package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
- package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
- package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
- package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
- package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
- package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
- package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +11 -17
- package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
- package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
- package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
- package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
- package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
- package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
- package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
- package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
- package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
- package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
- package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
- package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
- package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
- package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
- package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
- package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
- package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
- package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
- package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
- package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
- package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
- package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
- package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
- package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
- package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
- package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
- package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
- package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
- package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
- package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +99 -48
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +548 -367
- package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
- package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
- package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
- package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
- package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
- package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
- package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
- package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
- package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
- package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
- package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
- package/runtime/knowledge/examples/offers-module.md +15 -13
- package/runtime/knowledge/examples/team-module.md +82 -119
- package/runtime/knowledge/examples/videos-module.md +44 -17
- package/runtime/knowledge/index.md +22 -0
- package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
- package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
- package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
- package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
- package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
- package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
- package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
- package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
- package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
- package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
- package/runtime/knowledge/patterns/assets-management.md +20 -20
- package/runtime/knowledge/patterns/blade-navigation.md +7 -14
- package/runtime/knowledge/patterns/blade-widget.md +19 -17
- package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
- package/runtime/knowledge/patterns/composable-details.md +20 -50
- package/runtime/knowledge/patterns/composable-list.md +43 -31
- package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
- package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
- package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
- package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
- package/runtime/knowledge/patterns/form-validation.md +28 -64
- package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
- package/runtime/knowledge/patterns/module-structure.md +7 -1
- package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
- package/runtime/knowledge/patterns/notification-template.md +21 -14
- package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
- package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
- package/runtime/vc-app.md +241 -62
|
@@ -13,25 +13,25 @@ Every service follows the same architecture:
|
|
|
13
13
|
|
|
14
14
|
### Internal Building Blocks (`_internal/`)
|
|
15
15
|
|
|
16
|
-
| Helper
|
|
17
|
-
|
|
18
|
-
| `createPreregistrationBus`
|
|
19
|
-
| `createBladeScopedRegistry` | Reactive `Map<bladeId, Item[]>` with register/unregister/update/clear. Used by WidgetService and ToolbarService.
|
|
20
|
-
| `createSimpleMapRegistry`
|
|
16
|
+
| Helper | Purpose |
|
|
17
|
+
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| `createPreregistrationBus` | Generic bus that stores items by key and replays them into a service. Supports live-register (after service is up) and broadcast. |
|
|
19
|
+
| `createBladeScopedRegistry` | Reactive `Map<bladeId, Item[]>` with register/unregister/update/clear. Used by WidgetService and ToolbarService. |
|
|
20
|
+
| `createSimpleMapRegistry` | Reactive `Map<id, Item>` with sorted computed output. Used by SettingsMenuService and AppBarMenuService. |
|
|
21
21
|
|
|
22
22
|
## Services
|
|
23
23
|
|
|
24
|
-
| Service
|
|
25
|
-
|
|
26
|
-
| **MenuService**
|
|
27
|
-
| **WidgetService**
|
|
28
|
-
| **ToolbarService**
|
|
29
|
-
| **DashboardService**
|
|
30
|
-
| **SettingsMenuService**
|
|
31
|
-
| **AppBarWidgetService**
|
|
32
|
-
| **AppBarMobileButtonsService** | `createAppBarMobileButtonsService()` | (direct API)
|
|
33
|
-
| **GlobalSearchService**
|
|
34
|
-
| **LanguageService**
|
|
24
|
+
| Service | Factory | Module-level API | Key Type |
|
|
25
|
+
| ------------------------------ | ------------------------------------ | --------------------------------------------------------------- | ---------------------- |
|
|
26
|
+
| **MenuService** | `createMenuService()` | `addMenuItem()`, `removeRegisteredMenuItem()`, `setMenuBadge()` | `MenuItem` |
|
|
27
|
+
| **WidgetService** | `createWidgetService()` | `registerWidget()`, `registerExternalWidget()` | `IWidget` |
|
|
28
|
+
| **ToolbarService** | `createToolbarService()` | `registerToolbarItem()` | `IToolbarItem` |
|
|
29
|
+
| **DashboardService** | `createDashboardService()` | `registerDashboardWidget()` | `DashboardWidget` |
|
|
30
|
+
| **SettingsMenuService** | `createSettingsMenuService()` | `addSettingsMenuItem()` | `ISettingsMenuItem` |
|
|
31
|
+
| **AppBarWidgetService** | `createAppBarWidgetService()` | `addAppBarWidget()` | `AppBarWidget` |
|
|
32
|
+
| **AppBarMobileButtonsService** | `createAppBarMobileButtonsService()` | (direct API) | `AppBarButtonContent` |
|
|
33
|
+
| **GlobalSearchService** | `createGlobalSearchService()` | (direct API) | per-blade search state |
|
|
34
|
+
| **LanguageService** | `createLanguageService()` | (direct API) | locale strings |
|
|
35
35
|
|
|
36
36
|
## Usage
|
|
37
37
|
|
|
@@ -48,10 +48,7 @@ addMenuItem({
|
|
|
48
48
|
priority: 10,
|
|
49
49
|
});
|
|
50
50
|
|
|
51
|
-
registerWidget(
|
|
52
|
-
{ id: "order-stats", component: OrderStatsWidget },
|
|
53
|
-
"OrderDetails",
|
|
54
|
-
);
|
|
51
|
+
registerWidget({ id: "order-stats", component: OrderStatsWidget }, "OrderDetails");
|
|
55
52
|
```
|
|
56
53
|
|
|
57
54
|
### Using inside a component
|
|
@@ -59,8 +56,8 @@ registerWidget(
|
|
|
59
56
|
```typescript
|
|
60
57
|
import { useMenu, useToolbar } from "@vc-shell/framework";
|
|
61
58
|
|
|
62
|
-
const { menuItems } = useMenu();
|
|
63
|
-
const { toolbarItems } = useToolbar();
|
|
59
|
+
const { menuItems } = useMenu(); // reactive menu tree
|
|
60
|
+
const { toolbarItems } = useToolbar(); // toolbar items for current blade
|
|
64
61
|
```
|
|
65
62
|
|
|
66
63
|
### Menu badges
|
|
@@ -14,66 +14,66 @@ All types are re-exported from `@vc-shell/framework`, so module developers impor
|
|
|
14
14
|
|
|
15
15
|
### Validation
|
|
16
16
|
|
|
17
|
-
| Type
|
|
18
|
-
|
|
17
|
+
| Type | Description |
|
|
18
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
19
|
| `IValidationRules` | Validation rule map for form fields. Supports `required`, `email`, `min`, `max`, `regex`, `between`, `confirmed`, `ext`, `mimes`, `dimensions`, `before`/`after` date comparison, and more. |
|
|
20
20
|
|
|
21
21
|
### Menu System (`menu-types.ts`)
|
|
22
22
|
|
|
23
|
-
| Type
|
|
24
|
-
|
|
25
|
-
| `MenuItemConfig`
|
|
26
|
-
| `MenuItemBadge`
|
|
27
|
-
| `MenuItemBadgeConfig` | Union: full `MenuItemBadge` object or shorthand `number \| string \| Ref \| ComputedRef \| function`.
|
|
28
|
-
| `MenuItem`
|
|
23
|
+
| Type | Description |
|
|
24
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
25
|
+
| `MenuItemConfig` | Configuration for registering a menu item: `title`, `icon`, `priority`, `permissions`, `group`/`groupConfig`, `badge`. |
|
|
26
|
+
| `MenuItemBadge` | Badge display config: `content` (static, ref, computed, or function), `variant`, `isDot`. |
|
|
27
|
+
| `MenuItemBadgeConfig` | Union: full `MenuItemBadge` object or shorthand `number \| string \| Ref \| ComputedRef \| function`. |
|
|
28
|
+
| `MenuItem` | Runtime menu item extending `MenuItemConfig` with `routeId`, `url`, `children[]`, `groupIcon`, `groupId`. |
|
|
29
29
|
|
|
30
30
|
### Toolbar
|
|
31
31
|
|
|
32
|
-
| Type
|
|
33
|
-
|
|
34
|
-
| `IBladeToolbar`
|
|
35
|
-
| `ToolbarMenu<T>` | Generic toolbar menu item that infers component props from the provided component type.
|
|
32
|
+
| Type | Description |
|
|
33
|
+
| ---------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
34
|
+
| `IBladeToolbar` | Toolbar button config: `id`, `icon`, `disabled`, `title`, `isVisible`, `clickHandler`, `separator`, `permissions`. |
|
|
35
|
+
| `ToolbarMenu<T>` | Generic toolbar menu item that infers component props from the provided component type. |
|
|
36
36
|
|
|
37
37
|
### Table Columns
|
|
38
38
|
|
|
39
|
-
| Type
|
|
40
|
-
|
|
41
|
-
| `ITableColumnsBase`
|
|
42
|
-
| `ITableColumns`
|
|
43
|
-
| `IColumnFilterConfig` | Column filter: `true` (text), `string` (custom field), `{ options }` (select), `{ range }` (date range).
|
|
44
|
-
| `IFilterOption`
|
|
39
|
+
| Type | Description |
|
|
40
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
41
|
+
| `ITableColumnsBase` | Column definition: `id`, `title`, `width`, `field`, `type` (money, date, image, status, etc.), `sortable`, `editable`, `rules`, `filter`, `mobilePosition`, `mobileVisible`. |
|
|
42
|
+
| `ITableColumns` | Union of `ITableColumnsBase` with specialized image and money column variants. |
|
|
43
|
+
| `IColumnFilterConfig` | Column filter: `true` (text), `string` (custom field), `{ options }` (select), `{ range }` (date range). |
|
|
44
|
+
| `IFilterOption` | Select filter option: `{ value, label }`. |
|
|
45
45
|
|
|
46
46
|
### Assets
|
|
47
47
|
|
|
48
|
-
| Type
|
|
49
|
-
|
|
50
|
-
| `ICommonAsset`
|
|
48
|
+
| Type | Description |
|
|
49
|
+
| ------------------ | ------------------------------------------------------------------------------------------ |
|
|
50
|
+
| `ICommonAsset` | Asset record: `url`, `relativeUrl`, `title`, `name`, `size`, `sortOrder`, `typeId`, dates. |
|
|
51
51
|
| `AssetsHandler<T>` | Asset operations: `upload()`, `edit()`, `remove()`, `loading` ref, `noRemoveConfirmation`. |
|
|
52
52
|
|
|
53
53
|
### Service Abstractions (`services.ts`)
|
|
54
54
|
|
|
55
|
-
| Type
|
|
56
|
-
|
|
57
|
-
| `ServiceLifecycle<T>`
|
|
58
|
-
| `PreregistrationQueue<T>`
|
|
59
|
-
| `RegistryService<TKey, TItem>` | Generic registry: `register()`, `unregister()`, `get()`, `has()`, `getAll()`, `clear()`.
|
|
60
|
-
| `ListService<T>`
|
|
61
|
-
| `OrderedListService<T>`
|
|
62
|
-
| `ObservableService<T>`
|
|
63
|
-
| `ServiceResult<T>`
|
|
64
|
-
| `WidgetRegistration`
|
|
65
|
-
| `MenuItemRegistration`
|
|
66
|
-
| `ToolbarItemRegistration`
|
|
55
|
+
| Type | Description |
|
|
56
|
+
| ------------------------------ | -------------------------------------------------------------------------------------------------- |
|
|
57
|
+
| `ServiceLifecycle<T>` | Service create/provide/cleanup lifecycle. |
|
|
58
|
+
| `PreregistrationQueue<T>` | Queue for items registered before a service initializes: `register()`, `flush()`, `clear()`. |
|
|
59
|
+
| `RegistryService<TKey, TItem>` | Generic registry: `register()`, `unregister()`, `get()`, `has()`, `getAll()`, `clear()`. |
|
|
60
|
+
| `ListService<T>` | Reactive list: `items` ref, `add()`, `remove()`, `find()`, `filter()`. |
|
|
61
|
+
| `OrderedListService<T>` | Extends `ListService` with `reorder()` and `getSorted()`. |
|
|
62
|
+
| `ObservableService<T>` | Subscribe/getValue pattern for change observation. |
|
|
63
|
+
| `ServiceResult<T>` | Async operation result: `success`, `data?`, `error?` with code/message/details. |
|
|
64
|
+
| `WidgetRegistration` | Widget entry: `id`, `component`, `props`, `order`, `isVisible`. |
|
|
65
|
+
| `MenuItemRegistration` | Menu item entry: `id`, `title`, `icon`, `priority`, `permissions`, `routeId`, `group`, `children`. |
|
|
66
|
+
| `ToolbarItemRegistration` | Toolbar item entry: `id`, `title`, `icon`, `order`, `disabled`, `clickHandler`, `permissions`. |
|
|
67
67
|
|
|
68
68
|
### Other
|
|
69
69
|
|
|
70
|
-
| Type
|
|
71
|
-
|
|
72
|
-
| `IBladeDropdownItem`
|
|
73
|
-
| `IMenuItem<T>`
|
|
74
|
-
| `NotificationTemplateConstructor` | Component constructor with a `notifyType` static field.
|
|
75
|
-
| `IActionBuilderResult<T>`
|
|
76
|
-
| `RequestPasswordResult`
|
|
70
|
+
| Type | Description |
|
|
71
|
+
| --------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
72
|
+
| `IBladeDropdownItem` | Blade dropdown option: `id`, `title`, `icon`, `clickHandler`. |
|
|
73
|
+
| `IMenuItem<T>` | Generic menu item with optional component slot. |
|
|
74
|
+
| `NotificationTemplateConstructor` | Component constructor with a `notifyType` static field. |
|
|
75
|
+
| `IActionBuilderResult<T>` | Row action definition: `icon`, `title`, `type` (danger/success/warning/info), `clickHandler`. |
|
|
76
|
+
| `RequestPasswordResult` | Password reset result: `succeeded`, `error`, `errorCode`. |
|
|
77
77
|
|
|
78
78
|
## Usage Examples
|
|
79
79
|
|
|
@@ -8,13 +8,13 @@ The framework migrated from Moment.js to `date-fns`. These utilities handle the
|
|
|
8
8
|
|
|
9
9
|
## Exports
|
|
10
10
|
|
|
11
|
-
| Export
|
|
12
|
-
|
|
13
|
-
| `formatDateRelative`
|
|
14
|
-
| `formatDateWithPattern` | Formats a date using a Moment.js-compatible format string
|
|
15
|
-
| `convertMomentFormat`
|
|
16
|
-
| `resolveLocale`
|
|
17
|
-
| `resolveLocaleSync`
|
|
11
|
+
| Export | Description |
|
|
12
|
+
| ----------------------- | -------------------------------------------------------------------- |
|
|
13
|
+
| `formatDateRelative` | Formats a date as relative time (e.g., "3 hours ago", "2 days ago") |
|
|
14
|
+
| `formatDateWithPattern` | Formats a date using a Moment.js-compatible format string |
|
|
15
|
+
| `convertMomentFormat` | Converts a Moment.js format string to date-fns format |
|
|
16
|
+
| `resolveLocale` | Async: loads and caches a date-fns locale by code (e.g., "fr", "de") |
|
|
17
|
+
| `resolveLocaleSync` | Sync: returns cached locale or falls back to `enUS` while loading |
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
@@ -48,30 +48,30 @@ formatDateWithPattern("2024-03-15T14:30:00Z", "LLL", "de");
|
|
|
48
48
|
```typescript
|
|
49
49
|
import { convertMomentFormat } from "@vc-shell/framework";
|
|
50
50
|
|
|
51
|
-
convertMomentFormat("YYYY-MM-DD");
|
|
52
|
-
convertMomentFormat("DD/MM/YYYY");
|
|
53
|
-
convertMomentFormat("LLL");
|
|
54
|
-
convertMomentFormat("dddd");
|
|
51
|
+
convertMomentFormat("YYYY-MM-DD"); // => "yyyy-MM-dd"
|
|
52
|
+
convertMomentFormat("DD/MM/YYYY"); // => "dd/MM/yyyy"
|
|
53
|
+
convertMomentFormat("LLL"); // => "PPp"
|
|
54
|
+
convertMomentFormat("dddd"); // => "EEEE"
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
### Token mapping reference
|
|
58
58
|
|
|
59
|
-
| Moment | date-fns | Meaning
|
|
60
|
-
|
|
61
|
-
| `YYYY` | `yyyy`
|
|
62
|
-
| `YY`
|
|
63
|
-
| `DD`
|
|
64
|
-
| `D`
|
|
65
|
-
| `Do`
|
|
66
|
-
| `dddd` | `EEEE`
|
|
67
|
-
| `ddd`
|
|
68
|
-
| `A`
|
|
69
|
-
| `L`
|
|
70
|
-
| `LL`
|
|
71
|
-
| `LLL`
|
|
72
|
-
| `LLLL` | `PPPp`
|
|
73
|
-
| `LT`
|
|
74
|
-
| `LTS`
|
|
59
|
+
| Moment | date-fns | Meaning |
|
|
60
|
+
| ------ | -------- | ---------------------------- |
|
|
61
|
+
| `YYYY` | `yyyy` | 4-digit year |
|
|
62
|
+
| `YY` | `yy` | 2-digit year |
|
|
63
|
+
| `DD` | `dd` | Day of month (zero-padded) |
|
|
64
|
+
| `D` | `d` | Day of month |
|
|
65
|
+
| `Do` | `do` | Day ordinal |
|
|
66
|
+
| `dddd` | `EEEE` | Weekday name |
|
|
67
|
+
| `ddd` | `EEE` | Weekday abbreviation |
|
|
68
|
+
| `A` | `a` | AM/PM |
|
|
69
|
+
| `L` | `P` | Localized date |
|
|
70
|
+
| `LL` | `PP` | Localized date (long) |
|
|
71
|
+
| `LLL` | `PPp` | Localized date + time |
|
|
72
|
+
| `LLLL` | `PPPp` | Localized date + time (full) |
|
|
73
|
+
| `LT` | `p` | Localized time |
|
|
74
|
+
| `LTS` | `pp` | Localized time with seconds |
|
|
75
75
|
|
|
76
76
|
### Locale resolution
|
|
77
77
|
|
|
@@ -8,18 +8,18 @@ This directory provides small, focused utility modules for asset handling, color
|
|
|
8
8
|
|
|
9
9
|
## Exports
|
|
10
10
|
|
|
11
|
-
| Export
|
|
12
|
-
|
|
13
|
-
| `isImage(name)`
|
|
14
|
-
| `getFileThumbnail(name)`
|
|
15
|
-
| `readableSize(bytes)`
|
|
16
|
-
| `convertColorNameToHex(name)` | `colorUtils.ts`
|
|
17
|
-
| `isValidHexColor(value)`
|
|
18
|
-
| `normalizeHexColor(hex)`
|
|
19
|
-
| `formatBadgeCount(value)`
|
|
20
|
-
| `ComponentProps<T>`
|
|
21
|
-
| `ComponentSlots<T>`
|
|
22
|
-
| `ComponentEmit<T>`
|
|
11
|
+
| Export | Module | Description |
|
|
12
|
+
| ----------------------------- | --------------------- | --------------------------------------------------------------------------- |
|
|
13
|
+
| `isImage(name)` | `assets.ts` | Returns `true` if the file extension is an image (png, jpg, jpeg, svg, gif) |
|
|
14
|
+
| `getFileThumbnail(name)` | `assets.ts` | Returns a Bootstrap icon class for the file type (e.g., `bi-filetype-pdf`) |
|
|
15
|
+
| `readableSize(bytes)` | `assets.ts` | Formats byte count as human-readable string (e.g., `"1.5 MB"`) |
|
|
16
|
+
| `convertColorNameToHex(name)` | `colorUtils.ts` | Converts a CSS color name to hex using the Canvas API |
|
|
17
|
+
| `isValidHexColor(value)` | `colorUtils.ts` | Validates a 6-digit hex color string |
|
|
18
|
+
| `normalizeHexColor(hex)` | `colorUtils.ts` | Ensures hex string starts with `#` |
|
|
19
|
+
| `formatBadgeCount(value)` | `formatBadgeCount.ts` | Truncates numbers > 99 to `"99+"` for badge display |
|
|
20
|
+
| `ComponentProps<T>` | `vueUtils.ts` | Extracts props type from a Vue component |
|
|
21
|
+
| `ComponentSlots<T>` | `vueUtils.ts` | Extracts slots type from a Vue component |
|
|
22
|
+
| `ComponentEmit<T>` | `vueUtils.ts` | Extracts emit type from a Vue component |
|
|
23
23
|
|
|
24
24
|
## Usage
|
|
25
25
|
|
|
@@ -28,15 +28,15 @@ This directory provides small, focused utility modules for asset handling, color
|
|
|
28
28
|
```typescript
|
|
29
29
|
import { isImage, getFileThumbnail, readableSize } from "@vc-shell/framework";
|
|
30
30
|
|
|
31
|
-
isImage("photo.jpg");
|
|
32
|
-
isImage("document.pdf");
|
|
31
|
+
isImage("photo.jpg"); // true
|
|
32
|
+
isImage("document.pdf"); // false
|
|
33
33
|
|
|
34
34
|
getFileThumbnail("report.xlsx"); // "bi-filetype-xls"
|
|
35
35
|
getFileThumbnail("archive.zip"); // "bi-file-zip"
|
|
36
36
|
getFileThumbnail("unknown.abc"); // "bi-file-earmark"
|
|
37
37
|
|
|
38
|
-
readableSize(1536);
|
|
39
|
-
readableSize(0);
|
|
38
|
+
readableSize(1536); // "1.5 KB"
|
|
39
|
+
readableSize(0); // "0 Bytes"
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
### Color utilities
|
|
@@ -44,14 +44,14 @@ readableSize(0); // "0 Bytes"
|
|
|
44
44
|
```typescript
|
|
45
45
|
import { convertColorNameToHex, isValidHexColor, normalizeHexColor } from "@vc-shell/framework";
|
|
46
46
|
|
|
47
|
-
convertColorNameToHex("red");
|
|
47
|
+
convertColorNameToHex("red"); // "#ff0000"
|
|
48
48
|
convertColorNameToHex("invalid"); // null
|
|
49
49
|
|
|
50
|
-
isValidHexColor("#ff0000");
|
|
51
|
-
isValidHexColor("ff0000");
|
|
52
|
-
isValidHexColor("#fff");
|
|
50
|
+
isValidHexColor("#ff0000"); // true
|
|
51
|
+
isValidHexColor("ff0000"); // true (checks with/without #)
|
|
52
|
+
isValidHexColor("#fff"); // false (only 6-digit supported)
|
|
53
53
|
|
|
54
|
-
normalizeHexColor("ff0000");
|
|
54
|
+
normalizeHexColor("ff0000"); // "#ff0000"
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
### Badge formatting
|
|
@@ -59,8 +59,8 @@ normalizeHexColor("ff0000"); // "#ff0000"
|
|
|
59
59
|
```typescript
|
|
60
60
|
import { formatBadgeCount } from "@vc-shell/framework";
|
|
61
61
|
|
|
62
|
-
formatBadgeCount(5);
|
|
63
|
-
formatBadgeCount(150);
|
|
62
|
+
formatBadgeCount(5); // "5"
|
|
63
|
+
formatBadgeCount(150); // "99+"
|
|
64
64
|
formatBadgeCount(undefined); // undefined
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -12,21 +12,21 @@ Transforms full-size image URLs into thumbnail variants by appending size suffix
|
|
|
12
12
|
|
|
13
13
|
### Named Presets
|
|
14
14
|
|
|
15
|
-
| Preset | Use Case
|
|
16
|
-
|
|
17
|
-
| `sm`
|
|
18
|
-
| `md`
|
|
19
|
-
| `lg`
|
|
15
|
+
| Preset | Use Case |
|
|
16
|
+
| ------ | ------------------------------------------- |
|
|
17
|
+
| `sm` | Small icons, table cells, avatar thumbnails |
|
|
18
|
+
| `md` | Medium previews, cards |
|
|
19
|
+
| `lg` | Large previews, hero images |
|
|
20
20
|
|
|
21
21
|
### Pixel Sizes
|
|
22
22
|
|
|
23
|
-
| Size
|
|
24
|
-
|
|
25
|
-
| `64x64`
|
|
26
|
-
| `128x128` | 128px
|
|
27
|
-
| `168x168` | 168px
|
|
28
|
-
| `216x216` | 216px
|
|
29
|
-
| `348x348` | 348px
|
|
23
|
+
| Size | Pixels | Use Case |
|
|
24
|
+
| --------- | ------ | ---------------------------- |
|
|
25
|
+
| `64x64` | 64px | Table cells, tiny thumbnails |
|
|
26
|
+
| `128x128` | 128px | Small tiles, list items |
|
|
27
|
+
| `168x168` | 168px | Medium tiles |
|
|
28
|
+
| `216x216` | 216px | Gallery tiles (md) |
|
|
29
|
+
| `348x348` | 348px | Large gallery tiles |
|
|
30
30
|
|
|
31
31
|
## API
|
|
32
32
|
|
|
@@ -37,20 +37,21 @@ Transforms an image URL by inserting a size suffix before the file extension.
|
|
|
37
37
|
```ts
|
|
38
38
|
import { getThumbnailUrl } from "@core/utilities/thumbnail";
|
|
39
39
|
|
|
40
|
-
getThumbnailUrl("https://cdn.example.com/photo.jpg", "sm")
|
|
40
|
+
getThumbnailUrl("https://cdn.example.com/photo.jpg", "sm");
|
|
41
41
|
// → "https://cdn.example.com/photo_sm.jpg"
|
|
42
42
|
|
|
43
|
-
getThumbnailUrl("https://cdn.example.com/photo.jpg", "128x128")
|
|
43
|
+
getThumbnailUrl("https://cdn.example.com/photo.jpg", "128x128");
|
|
44
44
|
// → "https://cdn.example.com/photo_128x128.jpg"
|
|
45
45
|
|
|
46
|
-
getThumbnailUrl("https://cdn.example.com/photo.jpg")
|
|
46
|
+
getThumbnailUrl("https://cdn.example.com/photo.jpg");
|
|
47
47
|
// → "https://cdn.example.com/photo.jpg" (unchanged)
|
|
48
48
|
|
|
49
|
-
getThumbnailUrl(undefined, "sm")
|
|
49
|
+
getThumbnailUrl(undefined, "sm");
|
|
50
50
|
// → undefined
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
**Parameters:**
|
|
54
|
+
|
|
54
55
|
- `url` — Original image URL (string or undefined)
|
|
55
56
|
- `size` — Thumbnail size preset or pixel dimensions (optional)
|
|
56
57
|
|
|
@@ -63,10 +64,10 @@ Maps a CSS pixel display size to the best-fit thumbnail preset. Picks the smalle
|
|
|
63
64
|
```ts
|
|
64
65
|
import { getBestThumbnailSize } from "@core/utilities/thumbnail";
|
|
65
66
|
|
|
66
|
-
getBestThumbnailSize(48)
|
|
67
|
-
getBestThumbnailSize(96)
|
|
68
|
-
getBestThumbnailSize(200)
|
|
69
|
-
getBestThumbnailSize(500)
|
|
67
|
+
getBestThumbnailSize(48); // → "64x64"
|
|
68
|
+
getBestThumbnailSize(96); // → "128x128"
|
|
69
|
+
getBestThumbnailSize(200); // → "216x216"
|
|
70
|
+
getBestThumbnailSize(500); // → "lg"
|
|
70
71
|
```
|
|
71
72
|
|
|
72
73
|
## Usage in Components
|
|
@@ -74,11 +75,7 @@ getBestThumbnailSize(500) // → "lg"
|
|
|
74
75
|
### VcImage
|
|
75
76
|
|
|
76
77
|
```vue
|
|
77
|
-
<VcImage
|
|
78
|
-
:src="product.imgSrc"
|
|
79
|
-
thumbnail-size="sm"
|
|
80
|
-
size="s"
|
|
81
|
-
/>
|
|
78
|
+
<VcImage :src="product.imgSrc" thumbnail-size="sm" size="s" />
|
|
82
79
|
```
|
|
83
80
|
|
|
84
81
|
### VcGallery
|