@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
|
@@ -4,11 +4,11 @@ A lightweight `<form>` wrapper that provides consistent styling, prevents defaul
|
|
|
4
4
|
|
|
5
5
|
## When to Use
|
|
6
6
|
|
|
7
|
-
| Scenario
|
|
8
|
-
|
|
9
|
-
| Blade detail view with editable fields | **VcForm**
|
|
10
|
-
| Popup with a short input form
|
|
11
|
-
| Read-only display of data
|
|
7
|
+
| Scenario | Component |
|
|
8
|
+
| -------------------------------------- | -------------------------- |
|
|
9
|
+
| Blade detail view with editable fields | **VcForm** |
|
|
10
|
+
| Popup with a short input form | **VcForm** |
|
|
11
|
+
| Read-only display of data | Plain `<div>` or `VcField` |
|
|
12
12
|
|
|
13
13
|
> **Important:** VcForm renders a native `<form>` element with `novalidate`. All validation is handled by **vee-validate** `Field` components, not by the browser.
|
|
14
14
|
|
|
@@ -20,8 +20,16 @@ A lightweight `<form>` wrapper that provides consistent styling, prevents defaul
|
|
|
20
20
|
<template>
|
|
21
21
|
<VcForm @submit="handleSubmit">
|
|
22
22
|
<div class="tw-space-y-4">
|
|
23
|
-
<VcInput
|
|
24
|
-
|
|
23
|
+
<VcInput
|
|
24
|
+
v-model="name"
|
|
25
|
+
label="Name"
|
|
26
|
+
required
|
|
27
|
+
/>
|
|
28
|
+
<VcInput
|
|
29
|
+
v-model="email"
|
|
30
|
+
label="Email"
|
|
31
|
+
required
|
|
32
|
+
/>
|
|
25
33
|
<VcButton type="submit">Save</VcButton>
|
|
26
34
|
</div>
|
|
27
35
|
</VcForm>
|
|
@@ -73,12 +81,7 @@ Use `VcRow` and `VcCol` inside VcForm to create multi-column layouts that match
|
|
|
73
81
|
VcForm itself does **not** manage validation. Validation is provided by wrapping each input with the `Field` component from `vee-validate`. This is the standard pattern used across the entire codebase:
|
|
74
82
|
|
|
75
83
|
```vue
|
|
76
|
-
<Field
|
|
77
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
78
|
-
:model-value="form.fieldName"
|
|
79
|
-
name="fieldName"
|
|
80
|
-
rules="required"
|
|
81
|
-
>
|
|
84
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.fieldName" name="fieldName" rules="required">
|
|
82
85
|
<VcInput
|
|
83
86
|
v-model="form.fieldName"
|
|
84
87
|
label="Field Label"
|
|
@@ -105,12 +108,7 @@ This same pattern works with all VcShell inputs:
|
|
|
105
108
|
|
|
106
109
|
```vue
|
|
107
110
|
<!-- VcSelect -->
|
|
108
|
-
<Field
|
|
109
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
110
|
-
:model-value="form.category"
|
|
111
|
-
name="category"
|
|
112
|
-
rules="required"
|
|
113
|
-
>
|
|
111
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.category" name="category" rules="required">
|
|
114
112
|
<VcSelect
|
|
115
113
|
v-model="form.category"
|
|
116
114
|
label="Category"
|
|
@@ -125,12 +123,7 @@ This same pattern works with all VcShell inputs:
|
|
|
125
123
|
</Field>
|
|
126
124
|
|
|
127
125
|
<!-- VcTextarea -->
|
|
128
|
-
<Field
|
|
129
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
130
|
-
:model-value="form.description"
|
|
131
|
-
name="description"
|
|
132
|
-
rules="required|min:10"
|
|
133
|
-
>
|
|
126
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.description" name="description" rules="required|min:10">
|
|
134
127
|
<VcTextarea
|
|
135
128
|
v-model="form.description"
|
|
136
129
|
label="Description"
|
|
@@ -411,10 +404,7 @@ const validateSku = (value: string) => {
|
|
|
411
404
|
const debouncedValidation = useDebounceFn(async () => {
|
|
412
405
|
const errors = await validateOffer({ ...offer.value, sku: value });
|
|
413
406
|
const skuErrors = errors?.filter((e) => e.propertyName?.toLowerCase() === "sku");
|
|
414
|
-
setFieldError(
|
|
415
|
-
"sku",
|
|
416
|
-
skuErrors.map((e) => t(`ERRORS.${e.errorCode}`, { value: e.attemptedValue })).join("\n"),
|
|
417
|
-
);
|
|
407
|
+
setFieldError("sku", skuErrors.map((e) => t(`ERRORS.${e.errorCode}`, { value: e.attemptedValue })).join("\n"));
|
|
418
408
|
}, 1000);
|
|
419
409
|
|
|
420
410
|
debouncedValidation();
|
|
@@ -429,12 +419,7 @@ const validateSku = (value: string) => {
|
|
|
429
419
|
|
|
430
420
|
```vue
|
|
431
421
|
<!-- BAD: vee-validate never learns about value changes -->
|
|
432
|
-
<Field
|
|
433
|
-
v-slot="{ errorMessage, errors }"
|
|
434
|
-
:model-value="form.name"
|
|
435
|
-
name="name"
|
|
436
|
-
rules="required"
|
|
437
|
-
>
|
|
422
|
+
<Field v-slot="{ errorMessage, errors }" :model-value="form.name" name="name" rules="required">
|
|
438
423
|
<VcInput
|
|
439
424
|
v-model="form.name"
|
|
440
425
|
label="Name"
|
|
@@ -444,12 +429,7 @@ const validateSku = (value: string) => {
|
|
|
444
429
|
</Field>
|
|
445
430
|
|
|
446
431
|
<!-- GOOD: handleChange keeps vee-validate in sync -->
|
|
447
|
-
<Field
|
|
448
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
449
|
-
:model-value="form.name"
|
|
450
|
-
name="name"
|
|
451
|
-
rules="required"
|
|
452
|
-
>
|
|
432
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.name" name="name" rules="required">
|
|
453
433
|
<VcInput
|
|
454
434
|
v-model="form.name"
|
|
455
435
|
label="Name"
|
|
@@ -464,21 +444,12 @@ const validateSku = (value: string) => {
|
|
|
464
444
|
|
|
465
445
|
```vue
|
|
466
446
|
<!-- BAD: Field does not track the current value -->
|
|
467
|
-
<Field
|
|
468
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
469
|
-
name="name"
|
|
470
|
-
rules="required"
|
|
471
|
-
>
|
|
447
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" name="name" rules="required">
|
|
472
448
|
<VcInput v-model="form.name" label="Name" />
|
|
473
449
|
</Field>
|
|
474
450
|
|
|
475
451
|
<!-- GOOD: Field receives the value and can validate it -->
|
|
476
|
-
<Field
|
|
477
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
478
|
-
:model-value="form.name"
|
|
479
|
-
name="name"
|
|
480
|
-
rules="required"
|
|
481
|
-
>
|
|
452
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="form.name" name="name" rules="required">
|
|
482
453
|
<VcInput
|
|
483
454
|
v-model="form.name"
|
|
484
455
|
label="Name"
|
|
@@ -514,28 +485,28 @@ disabled: computed(() => !modified.value),
|
|
|
514
485
|
|
|
515
486
|
## Props
|
|
516
487
|
|
|
517
|
-
| Prop
|
|
518
|
-
|
|
519
|
-
| `ariaLabel`
|
|
520
|
-
| `ariaLabelledby` | `string` | `undefined` | ID of an element that labels the form
|
|
488
|
+
| Prop | Type | Default | Description |
|
|
489
|
+
| ---------------- | -------- | ----------- | ----------------------------------------- |
|
|
490
|
+
| `ariaLabel` | `string` | `undefined` | Accessible label for the `<form>` element |
|
|
491
|
+
| `ariaLabelledby` | `string` | `undefined` | ID of an element that labels the form |
|
|
521
492
|
|
|
522
493
|
## Events
|
|
523
494
|
|
|
524
|
-
| Event
|
|
525
|
-
|
|
526
|
-
| `submit` | --
|
|
495
|
+
| Event | Payload | Description |
|
|
496
|
+
| -------- | ------- | --------------------------------------------------------------------------- |
|
|
497
|
+
| `submit` | -- | Emitted on form submission. Native `submit` is already `preventDefault`-ed. |
|
|
527
498
|
|
|
528
499
|
## Slots
|
|
529
500
|
|
|
530
|
-
| Slot
|
|
531
|
-
|
|
501
|
+
| Slot | Description |
|
|
502
|
+
| --------- | --------------------------------------------------------------- |
|
|
532
503
|
| `default` | Form content -- inputs, buttons, fieldsets, VcRow/VcCol layouts |
|
|
533
504
|
|
|
534
505
|
## CSS Custom Properties
|
|
535
506
|
|
|
536
|
-
| Variable
|
|
537
|
-
|
|
538
|
-
| `--form-gap` | `1rem`
|
|
507
|
+
| Variable | Default | Description |
|
|
508
|
+
| ------------ | ------- | ------------------------------------------------------- |
|
|
509
|
+
| `--form-gap` | `1rem` | Default gap between form children (when using flex gap) |
|
|
539
510
|
|
|
540
511
|
## Accessibility
|
|
541
512
|
|
|
@@ -26,46 +26,50 @@ Square image tile with skeleton loading, fade-in transition, and a slide-up acti
|
|
|
26
26
|
<script setup lang="ts">
|
|
27
27
|
import { VcImageTile } from "@vc-shell/framework";
|
|
28
28
|
|
|
29
|
-
function openPreview() {
|
|
30
|
-
|
|
29
|
+
function openPreview() {
|
|
30
|
+
/* open lightbox */
|
|
31
|
+
}
|
|
32
|
+
function deleteImage() {
|
|
33
|
+
/* remove from list */
|
|
34
|
+
}
|
|
31
35
|
</script>
|
|
32
36
|
```
|
|
33
37
|
|
|
34
38
|
## Key Props
|
|
35
39
|
|
|
36
|
-
| Prop
|
|
37
|
-
|
|
38
|
-
| `src`
|
|
39
|
-
| `alt`
|
|
40
|
-
| `name`
|
|
41
|
-
| `imageFit`
|
|
42
|
-
| `actions`
|
|
43
|
-
| `thumbnailSize` | `ThumbnailSize`
|
|
40
|
+
| Prop | Type | Default | Description |
|
|
41
|
+
| --------------- | ---------------------- | ----------- | --------------------------------------------------- |
|
|
42
|
+
| `src` | `string` | — | Image source URL |
|
|
43
|
+
| `alt` | `string` | — | Image alt text |
|
|
44
|
+
| `name` | `string` | — | File name displayed in the tray |
|
|
45
|
+
| `imageFit` | `"contain" \| "cover"` | `"contain"` | How the image fits within the tile |
|
|
46
|
+
| `actions` | `VcImageTileActions` | — | Which built-in action buttons to show |
|
|
47
|
+
| `thumbnailSize` | `ThumbnailSize` | — | Load a thumbnail variant instead of full-size image |
|
|
44
48
|
|
|
45
49
|
## VcImageTileActions Interface
|
|
46
50
|
|
|
47
51
|
```ts
|
|
48
52
|
interface VcImageTileActions {
|
|
49
|
-
preview?: boolean;
|
|
50
|
-
edit?: boolean;
|
|
51
|
-
remove?: boolean;
|
|
53
|
+
preview?: boolean; // Fullscreen/maximize button (default visible)
|
|
54
|
+
edit?: boolean; // Pencil edit button
|
|
55
|
+
remove?: boolean; // Trash delete button
|
|
52
56
|
}
|
|
53
57
|
```
|
|
54
58
|
|
|
55
59
|
## Events
|
|
56
60
|
|
|
57
|
-
| Event
|
|
58
|
-
|
|
61
|
+
| Event | Description |
|
|
62
|
+
| --------- | ---------------------- |
|
|
59
63
|
| `preview` | Preview button clicked |
|
|
60
|
-
| `edit`
|
|
61
|
-
| `remove`
|
|
64
|
+
| `edit` | Edit button clicked |
|
|
65
|
+
| `remove` | Remove button clicked |
|
|
62
66
|
|
|
63
67
|
## Slots
|
|
64
68
|
|
|
65
|
-
| Slot
|
|
66
|
-
|
|
69
|
+
| Slot | Description |
|
|
70
|
+
| --------- | ------------------------------------------------------- |
|
|
67
71
|
| `overlay` | Overlay content on top of the image (e.g., drag handle) |
|
|
68
|
-
| `actions` | Additional action buttons in the tray
|
|
72
|
+
| `actions` | Additional action buttons in the tray |
|
|
69
73
|
|
|
70
74
|
## Common Patterns
|
|
71
75
|
|
|
@@ -88,14 +92,7 @@ interface VcImageTileActions {
|
|
|
88
92
|
### All Actions Enabled
|
|
89
93
|
|
|
90
94
|
```vue
|
|
91
|
-
<VcImageTile
|
|
92
|
-
src="/img/photo.jpg"
|
|
93
|
-
name="photo.jpg"
|
|
94
|
-
:actions="{ preview: true, edit: true, remove: true }"
|
|
95
|
-
@preview="onPreview"
|
|
96
|
-
@edit="onEdit"
|
|
97
|
-
@remove="onRemove"
|
|
98
|
-
/>
|
|
95
|
+
<VcImageTile src="/img/photo.jpg" name="photo.jpg" :actions="{ preview: true, edit: true, remove: true }" @preview="onPreview" @edit="onEdit" @remove="onRemove" />
|
|
99
96
|
```
|
|
100
97
|
|
|
101
98
|
### Cover Fit for Photos
|
|
@@ -123,19 +120,19 @@ When `src` is not provided or the image is still loading, a shimmer animation sk
|
|
|
123
120
|
|
|
124
121
|
## CSS Variables
|
|
125
122
|
|
|
126
|
-
| Variable
|
|
127
|
-
|
|
128
|
-
| `--image-tile-radius`
|
|
129
|
-
| `--image-tile-border`
|
|
130
|
-
| `--image-tile-shadow`
|
|
131
|
-
| `--image-tile-shadow-hover`
|
|
132
|
-
| `--image-tile-tray-bg`
|
|
133
|
-
| `--image-tile-tray-blur`
|
|
134
|
-
| `--image-tile-skeleton-from` | `var(--secondary-100)`
|
|
135
|
-
| `--image-tile-skeleton-to`
|
|
136
|
-
| `--image-tile-action-color`
|
|
137
|
-
| `--image-tile-action-hover`
|
|
138
|
-
| `--image-tile-action-danger` | `var(--danger-500)`
|
|
123
|
+
| Variable | Default | Description |
|
|
124
|
+
| ---------------------------- | ----------------------------- | ------------------------- |
|
|
125
|
+
| `--image-tile-radius` | `8px` | Corner radius |
|
|
126
|
+
| `--image-tile-border` | `var(--secondary-200)` | Border color |
|
|
127
|
+
| `--image-tile-shadow` | `0 1px 2px rgb(0 0 0 / 0.05)` | Default shadow |
|
|
128
|
+
| `--image-tile-shadow-hover` | `0 4px 12px rgb(0 0 0 / 0.1)` | Hover shadow |
|
|
129
|
+
| `--image-tile-tray-bg` | `rgba(255, 255, 255, 0.85)` | Tray background |
|
|
130
|
+
| `--image-tile-tray-blur` | `12px` | Tray backdrop blur |
|
|
131
|
+
| `--image-tile-skeleton-from` | `var(--secondary-100)` | Skeleton gradient start |
|
|
132
|
+
| `--image-tile-skeleton-to` | `var(--secondary-200)` | Skeleton gradient end |
|
|
133
|
+
| `--image-tile-action-color` | `var(--secondary-600)` | Action button color |
|
|
134
|
+
| `--image-tile-action-hover` | `var(--primary-500)` | Action button hover color |
|
|
135
|
+
| `--image-tile-action-danger` | `var(--danger-500)` | Danger action hover color |
|
|
139
136
|
|
|
140
137
|
## Accessibility
|
|
141
138
|
|