@vc-shell/vc-app-skill 2.0.0-alpha.32 → 2.0.0-alpha.33-pr220.455e322
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 +59 -47
- package/README.md +18 -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 +94 -0
- 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 +31 -27
- 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 +75 -19
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +74 -78
- 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 +10 -10
- 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/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 +24 -15
- 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 +107 -91
- 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 +98 -90
- 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 +102 -0
- 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 +12 -18
- 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 +104 -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 +59 -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 +96 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +26 -35
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +69 -22
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +58 -72
- 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 +60 -72
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +65 -26
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +46 -49
- 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 +115 -130
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +53 -87
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +56 -63
- 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 +63 -64
- 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 +59 -19
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +25 -34
- package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +42 -32
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +78 -82
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +25 -15
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +59 -63
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +57 -69
- 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 +120 -75
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +30 -44
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +536 -365
- 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 +255 -0
- package/runtime/knowledge/migration-prompts/blade-props-migration.md +194 -0
- 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 +223 -0
- package/runtime/knowledge/migration-prompts/nswag-migration.md +244 -0
- 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 +178 -0
- 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 +354 -49
- package/runtime/knowledge/docs/core/constants/constants.docs.md +0 -185
|
@@ -12,8 +12,8 @@ The directive is registered globally by the framework, so no manual import is ne
|
|
|
12
12
|
|
|
13
13
|
## API
|
|
14
14
|
|
|
15
|
-
| Binding
|
|
16
|
-
|
|
15
|
+
| Binding | Type | Description |
|
|
16
|
+
| ------------------------- | --------- | --------------------------------------------------- |
|
|
17
17
|
| `v-autofocus="condition"` | `boolean` | Focus the element on mount if `condition` is truthy |
|
|
18
18
|
|
|
19
19
|
The directive only acts on the `mounted` hook. It does not re-focus on updates.
|
|
@@ -40,7 +40,10 @@ export const autofocus = {
|
|
|
40
40
|
```vue
|
|
41
41
|
<template>
|
|
42
42
|
<!-- The search field gets focus as soon as the blade opens -->
|
|
43
|
-
<input
|
|
43
|
+
<input
|
|
44
|
+
v-autofocus="true"
|
|
45
|
+
placeholder="Search orders..."
|
|
46
|
+
/>
|
|
44
47
|
</template>
|
|
45
48
|
```
|
|
46
49
|
|
|
@@ -68,7 +71,10 @@ const isEditMode = computed(() => !!props.param);
|
|
|
68
71
|
|
|
69
72
|
```vue
|
|
70
73
|
<template>
|
|
71
|
-
<VcPopup
|
|
74
|
+
<VcPopup
|
|
75
|
+
v-model:show="showDialog"
|
|
76
|
+
title="Rename Item"
|
|
77
|
+
>
|
|
72
78
|
<VcInput
|
|
73
79
|
v-autofocus="showDialog"
|
|
74
80
|
v-model="newName"
|
|
@@ -14,20 +14,20 @@ Unlike a standalone loading component, `v-loading` scopes the overlay to the ele
|
|
|
14
14
|
|
|
15
15
|
## API
|
|
16
16
|
|
|
17
|
-
| Binding
|
|
18
|
-
|
|
19
|
-
| `v-loading="true"`
|
|
20
|
-
| `v-loading="options"`
|
|
21
|
-
| `v-loading:1000="true"` | `arg: string`
|
|
17
|
+
| Binding | Type | Description |
|
|
18
|
+
| ----------------------- | ---------------- | ------------------------------------ |
|
|
19
|
+
| `v-loading="true"` | `boolean` | Show/hide the loading overlay |
|
|
20
|
+
| `v-loading="options"` | `LoadingOptions` | Show with configuration (see below) |
|
|
21
|
+
| `v-loading:1000="true"` | `arg: string` | Set custom z-index (default: `9999`) |
|
|
22
22
|
|
|
23
23
|
### LoadingOptions
|
|
24
24
|
|
|
25
|
-
| Property
|
|
26
|
-
|
|
27
|
-
| `size`
|
|
28
|
-
| `color`
|
|
29
|
-
| `blur`
|
|
30
|
-
| `fullscreen` | `boolean`
|
|
25
|
+
| Property | Type | Default | Description |
|
|
26
|
+
| ------------ | -------------------------------- | ------- | ------------------------------------------------------- |
|
|
27
|
+
| `size` | `"small" \| "medium" \| "large"` | -- | Spinner size via `data-loading-size` attribute |
|
|
28
|
+
| `color` | `string` | -- | Custom spinner color (sets `--v-loading-spinner-color`) |
|
|
29
|
+
| `blur` | `boolean` | `true` | Enable backdrop blur; `false` adds `v-loading--no-blur` |
|
|
30
|
+
| `fullscreen` | `boolean` | `false` | Fullscreen overlay via `v-loading--fullscreen` |
|
|
31
31
|
|
|
32
32
|
## How It Works
|
|
33
33
|
|
|
@@ -45,7 +45,10 @@ Because the directive modifies the element directly (not through Vue reactivity)
|
|
|
45
45
|
|
|
46
46
|
```vue
|
|
47
47
|
<template>
|
|
48
|
-
<div
|
|
48
|
+
<div
|
|
49
|
+
v-loading="isLoading"
|
|
50
|
+
class="tw-min-h-[200px]"
|
|
51
|
+
>
|
|
49
52
|
<p>Order details will appear here</p>
|
|
50
53
|
</div>
|
|
51
54
|
</template>
|
|
@@ -72,7 +75,10 @@ async function loadOrder() {
|
|
|
72
75
|
<template>
|
|
73
76
|
<!-- Small spinner with brand color, no blur -->
|
|
74
77
|
<div v-loading="{ size: 'small', color: 'var(--primary-500)', blur: false }">
|
|
75
|
-
<img
|
|
78
|
+
<img
|
|
79
|
+
:src="thumbnailUrl"
|
|
80
|
+
alt="Product thumbnail"
|
|
81
|
+
/>
|
|
76
82
|
</div>
|
|
77
83
|
</template>
|
|
78
84
|
```
|
|
@@ -104,9 +110,18 @@ async function loadOrder() {
|
|
|
104
110
|
|
|
105
111
|
```vue
|
|
106
112
|
<template>
|
|
107
|
-
<VcBlade
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
<VcBlade
|
|
114
|
+
title="Products"
|
|
115
|
+
:closable="true"
|
|
116
|
+
>
|
|
117
|
+
<div
|
|
118
|
+
v-loading="loading"
|
|
119
|
+
class="tw-p-4"
|
|
120
|
+
>
|
|
121
|
+
<VcDataTable
|
|
122
|
+
:items="products"
|
|
123
|
+
:columns="columns"
|
|
124
|
+
/>
|
|
110
125
|
</div>
|
|
111
126
|
</VcBlade>
|
|
112
127
|
</template>
|
|
@@ -146,10 +161,10 @@ Passing an options object when you want to hide the spinner does not work as exp
|
|
|
146
161
|
|
|
147
162
|
## CSS Classes Reference
|
|
148
163
|
|
|
149
|
-
| Class
|
|
150
|
-
|
|
151
|
-
| `v-loading`
|
|
152
|
-
| `v-loading--no-blur`
|
|
164
|
+
| Class | Applied When | Effect |
|
|
165
|
+
| ----------------------- | ------------------ | ---------------------------------- |
|
|
166
|
+
| `v-loading` | Value is truthy | Shows the spinner overlay |
|
|
167
|
+
| `v-loading--no-blur` | `blur: false` | Disables backdrop blur filter |
|
|
153
168
|
| `v-loading--fullscreen` | `fullscreen: true` | Overlay covers the entire viewport |
|
|
154
169
|
|
|
155
170
|
## Related
|
|
@@ -31,6 +31,7 @@ PushNotification (SignalR)
|
|
|
31
31
|
### `useNotificationStore()`
|
|
32
32
|
|
|
33
33
|
Returns the shared `NotificationStore` singleton. Resolution order:
|
|
34
|
+
|
|
34
35
|
1. Vue `inject()` (inside component setup or `app.runWithContext()`)
|
|
35
36
|
2. Module-level singleton fallback (ensures microfrontend modules share state)
|
|
36
37
|
|
|
@@ -38,20 +39,20 @@ Returns the shared `NotificationStore` singleton. Resolution order:
|
|
|
38
39
|
|
|
39
40
|
### `NotificationStore` Interface
|
|
40
41
|
|
|
41
|
-
| Member
|
|
42
|
-
|
|
43
|
-
| `registry`
|
|
44
|
-
| `history`
|
|
45
|
-
| `realtime`
|
|
46
|
-
| `unreadCount`
|
|
47
|
-
| `hasUnread`
|
|
48
|
-
| `registerType(type, config)` | `(string, NotificationTypeConfig) => void`
|
|
49
|
-
| `ingest(message)`
|
|
50
|
-
| `markAsRead(message)`
|
|
51
|
-
| `markAllAsRead()`
|
|
52
|
-
| `loadHistory(take?)`
|
|
53
|
-
| `subscribe(opts)`
|
|
54
|
-
| `getByType(type)`
|
|
42
|
+
| Member | Type | Description |
|
|
43
|
+
| ---------------------------- | -------------------------------------------- | -------------------------------------------------------------------- |
|
|
44
|
+
| `registry` | `Map<string, NotificationTypeConfig>` | Registered notification type configurations |
|
|
45
|
+
| `history` | `Ref<PushNotification[]>` | All notifications (loaded from API + ingested) |
|
|
46
|
+
| `realtime` | `Ref<PushNotification[]>` | Session-only notifications from SignalR |
|
|
47
|
+
| `unreadCount` | `ComputedRef<number>` | Count of unread notifications in history |
|
|
48
|
+
| `hasUnread` | `ComputedRef<boolean>` | Whether any unread notifications exist |
|
|
49
|
+
| `registerType(type, config)` | `(string, NotificationTypeConfig) => void` | Register a notification type with toast/template config |
|
|
50
|
+
| `ingest(message)` | `(PushNotification) => void` | Process an incoming notification (upsert, toast, notify subscribers) |
|
|
51
|
+
| `markAsRead(message)` | `(PushNotification) => void` | Mark a single notification as read |
|
|
52
|
+
| `markAllAsRead()` | `() => Promise<void>` | Optimistic mark-all-as-read with server sync and rollback on failure |
|
|
53
|
+
| `loadHistory(take?)` | `(number?) => Promise<void>` | Load notification history from the API (default: 10) |
|
|
54
|
+
| `subscribe(opts)` | `({types, filter?, handler?}) => () => void` | Subscribe to notification types; returns unsubscribe function |
|
|
55
|
+
| `getByType(type)` | `(string) => PushNotification[]` | Filter history by `notifyType` |
|
|
55
56
|
|
|
56
57
|
**File:** `store.ts`
|
|
57
58
|
|
|
@@ -65,9 +66,9 @@ Blade-level notification subscription (Level 2). Automatically unsubscribes when
|
|
|
65
66
|
|
|
66
67
|
```typescript
|
|
67
68
|
interface BladeNotificationOptions<T extends PushNotification> {
|
|
68
|
-
types: string[];
|
|
69
|
-
filter?: (msg: T) => boolean;
|
|
70
|
-
onMessage?: (msg: T) => void;
|
|
69
|
+
types: string[]; // Notification types to subscribe to
|
|
70
|
+
filter?: (msg: T) => boolean; // Optional message filter
|
|
71
|
+
onMessage?: (msg: T) => void; // Callback for each matching message
|
|
71
72
|
}
|
|
72
73
|
```
|
|
73
74
|
|
|
@@ -75,9 +76,9 @@ interface BladeNotificationOptions<T extends PushNotification> {
|
|
|
75
76
|
|
|
76
77
|
```typescript
|
|
77
78
|
interface BladeNotificationReturn<T extends PushNotification> {
|
|
78
|
-
messages: ComputedRef<T[]>;
|
|
79
|
+
messages: ComputedRef<T[]>; // Filtered unread messages from realtime
|
|
79
80
|
unreadCount: ComputedRef<number>; // Count of matching unread messages
|
|
80
|
-
markAsRead: (msg: T) => void;
|
|
81
|
+
markAsRead: (msg: T) => void; // Mark a specific message as read
|
|
81
82
|
}
|
|
82
83
|
```
|
|
83
84
|
|
|
@@ -112,26 +113,26 @@ Handles toast popup display based on `NotificationTypeConfig.toast` settings. Cr
|
|
|
112
113
|
|
|
113
114
|
#### Toast Modes
|
|
114
115
|
|
|
115
|
-
| Mode
|
|
116
|
-
|
|
117
|
-
| `"auto"`
|
|
116
|
+
| Mode | Behavior |
|
|
117
|
+
| ------------ | ------------------------------------------------------------------------------------------- |
|
|
118
|
+
| `"auto"` | Single fire-and-forget toast with severity-based timeout |
|
|
118
119
|
| `"progress"` | Persistent toast updated on each message; auto-completes when `isComplete()` returns `true` |
|
|
119
|
-
| `"silent"`
|
|
120
|
+
| `"silent"` | No toast displayed |
|
|
120
121
|
|
|
121
122
|
### Types
|
|
122
123
|
|
|
123
124
|
**File:** `types.ts`
|
|
124
125
|
|
|
125
|
-
| Type
|
|
126
|
-
|
|
127
|
-
| `Severity`
|
|
128
|
-
| `ToastConfig`
|
|
129
|
-
| `NotificationTypeConfig`
|
|
130
|
-
| `ModuleNotificationsConfig`
|
|
131
|
-
| `NotificationAction`
|
|
132
|
-
| `NotificationSubscription`
|
|
133
|
-
| `SEVERITY_TIMEOUTS`
|
|
134
|
-
| `EXCLUDED_NOTIFICATION_TYPES` | Types excluded from ingestion (e.g. `"IndexProgressPushNotification"`)
|
|
126
|
+
| Type | Description |
|
|
127
|
+
| ----------------------------- | --------------------------------------------------------------------------------------- |
|
|
128
|
+
| `Severity` | `"info" \| "warning" \| "error" \| "critical"` |
|
|
129
|
+
| `ToastConfig` | Toast behavior: mode, severity (static or function), timeout, isComplete, completedType |
|
|
130
|
+
| `NotificationTypeConfig` | Per-type config: optional Vue `template` component, `toast` config, `groupBy` field |
|
|
131
|
+
| `ModuleNotificationsConfig` | Record mapping `notifyType` strings to `NotificationTypeConfig` |
|
|
132
|
+
| `NotificationAction` | Action button in notification UI: label, icon, handler, visibility |
|
|
133
|
+
| `NotificationSubscription` | Internal subscriber record: id, types, filter, handler |
|
|
134
|
+
| `SEVERITY_TIMEOUTS` | Default timeouts: info=5s, warning=8s, error=persistent, critical=persistent |
|
|
135
|
+
| `EXCLUDED_NOTIFICATION_TYPES` | Types excluded from ingestion (e.g. `"IndexProgressPushNotification"`) |
|
|
135
136
|
|
|
136
137
|
## Usage Examples
|
|
137
138
|
|
|
@@ -155,9 +156,9 @@ store.registerType("CatalogExportCompleted", {
|
|
|
155
156
|
template: ExportNotificationTemplate,
|
|
156
157
|
toast: {
|
|
157
158
|
mode: "progress",
|
|
158
|
-
severity: (msg) => msg.finished ? "info" : "warning",
|
|
159
|
+
severity: (msg) => (msg.finished ? "info" : "warning"),
|
|
159
160
|
isComplete: (msg) => !!msg.finished,
|
|
160
|
-
completedType: (msg) => msg.errorCount ? "error" : "success",
|
|
161
|
+
completedType: (msg) => (msg.errorCount ? "error" : "success"),
|
|
161
162
|
},
|
|
162
163
|
groupBy: "jobId",
|
|
163
164
|
});
|
|
@@ -36,63 +36,65 @@ app.use(aiAgentPlugin, {
|
|
|
36
36
|
|
|
37
37
|
### Plugin Options: `AiAgentPluginOptions`
|
|
38
38
|
|
|
39
|
-
| Option
|
|
40
|
-
|
|
41
|
-
| `config`
|
|
42
|
-
| `addGlobalToolbarButton` | `boolean`
|
|
39
|
+
| Option | Type | Default | Description |
|
|
40
|
+
| ------------------------ | ------------------------- | ------- | ------------------------------------------ |
|
|
41
|
+
| `config` | `Partial<IAiAgentConfig>` | `{}` | Panel configuration (see below) |
|
|
42
|
+
| `addGlobalToolbarButton` | `boolean` | `true` | Adds an AI button to every blade's toolbar |
|
|
43
43
|
|
|
44
44
|
### `IAiAgentConfig`
|
|
45
45
|
|
|
46
|
-
| Field
|
|
47
|
-
|
|
48
|
-
| `url`
|
|
49
|
-
| `title`
|
|
50
|
-
| `width`
|
|
51
|
-
| `expandedWidth`
|
|
52
|
-
| `allowedOrigins` | `string[]` | `["*"]`
|
|
46
|
+
| Field | Type | Default | Description |
|
|
47
|
+
| ---------------- | ---------- | ------------ | ------------------------------------------ |
|
|
48
|
+
| `url` | `string` | `""` | Chatbot iframe URL (required) |
|
|
49
|
+
| `title` | `string` | `"Virto OZ"` | Panel header title |
|
|
50
|
+
| `width` | `number` | `362` | Panel width in pixels |
|
|
51
|
+
| `expandedWidth` | `number` | `500` | Panel width when expanded |
|
|
52
|
+
| `allowedOrigins` | `string[]` | `["*"]` | Allowed origins for postMessage validation |
|
|
53
53
|
|
|
54
54
|
### Composable: `useAiAgent()`
|
|
55
55
|
|
|
56
56
|
Access the AI agent service from any component within the app.
|
|
57
57
|
|
|
58
|
-
| Return
|
|
59
|
-
|
|
60
|
-
| `panelState`
|
|
61
|
-
| `isOpen`
|
|
62
|
-
| `isExpanded`
|
|
63
|
-
| `totalItemsCount` | `ComputedRef<number>`
|
|
64
|
-
| `config`
|
|
65
|
-
| `context`
|
|
66
|
-
| `openPanel()`
|
|
67
|
-
| `closePanel()`
|
|
68
|
-
| `togglePanel()`
|
|
69
|
-
| `expandPanel()`
|
|
70
|
-
| `collapsePanel()` | `() => void`
|
|
71
|
-
| `setConfig()`
|
|
72
|
-
| `sendMessage()`
|
|
73
|
-
| `onMessage()`
|
|
58
|
+
| Return | Type | Description |
|
|
59
|
+
| ----------------- | ------------------------------------------- | ---------------------------------------------- |
|
|
60
|
+
| `panelState` | `Ref<"closed" \| "open" \| "expanded">` | Current panel state |
|
|
61
|
+
| `isOpen` | `ComputedRef<boolean>` | Whether the panel is visible |
|
|
62
|
+
| `isExpanded` | `ComputedRef<boolean>` | Whether the panel is in expanded mode |
|
|
63
|
+
| `totalItemsCount` | `ComputedRef<number>` | Number of context items |
|
|
64
|
+
| `config` | `Ref<IAiAgentConfig>` | Current configuration |
|
|
65
|
+
| `context` | `ComputedRef<IAiAgentContext>` | Full reactive context |
|
|
66
|
+
| `openPanel()` | `() => void` | Open the AI panel |
|
|
67
|
+
| `closePanel()` | `() => void` | Close the AI panel |
|
|
68
|
+
| `togglePanel()` | `() => void` | Toggle open/close |
|
|
69
|
+
| `expandPanel()` | `() => void` | Expand to larger width |
|
|
70
|
+
| `collapsePanel()` | `() => void` | Collapse to normal width |
|
|
71
|
+
| `setConfig()` | `(config: Partial<IAiAgentConfig>) => void` | Update configuration |
|
|
72
|
+
| `sendMessage()` | `(type, payload) => void` | Send message to chatbot iframe |
|
|
73
|
+
| `onMessage()` | `(handler) => () => void` | Register message handler (returns unsubscribe) |
|
|
74
74
|
|
|
75
75
|
### Composable: `useAiAgentContext(options)`
|
|
76
76
|
|
|
77
77
|
Binds blade data to the AI agent context. Call this in each blade that should participate in AI interactions.
|
|
78
78
|
|
|
79
|
-
| Option
|
|
80
|
-
|
|
81
|
-
| `dataRef`
|
|
82
|
-
| `suggestions` | `ISuggestion[]`
|
|
79
|
+
| Option | Type | Description |
|
|
80
|
+
| ------------- | -------------------- | -------------------------------------------------------- |
|
|
81
|
+
| `dataRef` | `Ref<T> \| Ref<T[]>` | Data to send (single object for details, array for list) |
|
|
82
|
+
| `suggestions` | `ISuggestion[]` | Custom suggestion cards for the chatbot UI |
|
|
83
83
|
|
|
84
|
-
| Return
|
|
85
|
-
|
|
86
|
-
| `previewState.isActive`
|
|
87
|
-
| `previewState.changedFields` | `ComputedRef<string[]>` | List of field names with pending changes
|
|
84
|
+
| Return | Type | Description |
|
|
85
|
+
| ---------------------------- | ----------------------- | ------------------------------------------------ |
|
|
86
|
+
| `previewState.isActive` | `ComputedRef<boolean>` | Whether AI-suggested changes are being previewed |
|
|
87
|
+
| `previewState.changedFields` | `ComputedRef<string[]>` | List of field names with pending changes |
|
|
88
88
|
|
|
89
89
|
### PostMessage Protocol
|
|
90
90
|
|
|
91
91
|
**Shell to Chatbot:**
|
|
92
|
+
|
|
92
93
|
- `INIT_CONTEXT` -- Initial context when chatbot loads (user, blade, items, suggestions, token)
|
|
93
94
|
- `UPDATE_CONTEXT` -- Context updates when blade/items change
|
|
94
95
|
|
|
95
96
|
**Chatbot to Shell:**
|
|
97
|
+
|
|
96
98
|
- `CHAT_READY` -- Chatbot finished loading
|
|
97
99
|
- `NAVIGATE_TO_APP` -- Open a specific blade
|
|
98
100
|
- `PREVIEW_CHANGES` -- Preview data changes in the form
|
|
@@ -110,9 +112,7 @@ Binds blade data to the AI agent context. Call this in each blade that should pa
|
|
|
110
112
|
const product = ref<Product>({});
|
|
111
113
|
const { previewState } = useAiAgentContext({
|
|
112
114
|
dataRef: product,
|
|
113
|
-
suggestions: [
|
|
114
|
-
{ id: "translate", title: "Translate", icon: "translation", prompt: "Translate to English" },
|
|
115
|
-
],
|
|
115
|
+
suggestions: [{ id: "translate", title: "Translate", icon: "translation", prompt: "Translate to English" }],
|
|
116
116
|
});
|
|
117
117
|
|
|
118
118
|
// In a list blade
|