@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
package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md
CHANGED
|
@@ -20,10 +20,28 @@ The component also supports a `binary` mode for simple true/false toggles, where
|
|
|
20
20
|
|
|
21
21
|
```vue
|
|
22
22
|
<template>
|
|
23
|
-
<VcInputGroup
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
<VcInputGroup
|
|
24
|
+
label="Shipping method"
|
|
25
|
+
role="radiogroup"
|
|
26
|
+
>
|
|
27
|
+
<VcRadioButton
|
|
28
|
+
v-model="method"
|
|
29
|
+
value="standard"
|
|
30
|
+
label="Standard"
|
|
31
|
+
name="shipping"
|
|
32
|
+
/>
|
|
33
|
+
<VcRadioButton
|
|
34
|
+
v-model="method"
|
|
35
|
+
value="express"
|
|
36
|
+
label="Express"
|
|
37
|
+
name="shipping"
|
|
38
|
+
/>
|
|
39
|
+
<VcRadioButton
|
|
40
|
+
v-model="method"
|
|
41
|
+
value="overnight"
|
|
42
|
+
label="Overnight"
|
|
43
|
+
name="shipping"
|
|
44
|
+
/>
|
|
27
45
|
</VcInputGroup>
|
|
28
46
|
</template>
|
|
29
47
|
|
|
@@ -37,15 +55,15 @@ const method = ref("standard");
|
|
|
37
55
|
|
|
38
56
|
## Key Props
|
|
39
57
|
|
|
40
|
-
| Prop
|
|
41
|
-
|
|
42
|
-
| `modelValue`
|
|
43
|
-
| `value`
|
|
44
|
-
| `label`
|
|
45
|
-
| `name`
|
|
46
|
-
| `binary`
|
|
47
|
-
| `disabled`
|
|
48
|
-
| `error` / `errorMessage` | `boolean` / `string` | --
|
|
58
|
+
| Prop | Type | Default | Description |
|
|
59
|
+
| ------------------------ | -------------------- | -------------- | --------------------------------------------------------------- |
|
|
60
|
+
| `modelValue` | `T` | `undefined` | Bound value via `v-model` (shared across the group) |
|
|
61
|
+
| `value` | `T` | -- | This radio button's value. Selected when `modelValue === value` |
|
|
62
|
+
| `label` | `string` | -- | Text label next to the radio circle |
|
|
63
|
+
| `name` | `string` | `"RadioField"` | HTML `name` attribute (must be shared within a group) |
|
|
64
|
+
| `binary` | `boolean` | `false` | Enables boolean toggle mode (clicking toggles `true`/`false`) |
|
|
65
|
+
| `disabled` | `boolean` | `false` | Disables this radio button |
|
|
66
|
+
| `error` / `errorMessage` | `boolean` / `string` | -- | Error styling and message |
|
|
49
67
|
|
|
50
68
|
## Common Patterns
|
|
51
69
|
|
|
@@ -65,10 +83,28 @@ Wrap radio buttons in a `VcInputGroup` with horizontal orientation for inline di
|
|
|
65
83
|
|
|
66
84
|
```vue
|
|
67
85
|
<template>
|
|
68
|
-
<VcInputGroup
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
86
|
+
<VcInputGroup
|
|
87
|
+
label="Priority"
|
|
88
|
+
role="radiogroup"
|
|
89
|
+
>
|
|
90
|
+
<VcRadioButton
|
|
91
|
+
v-model="priority"
|
|
92
|
+
:value="1"
|
|
93
|
+
label="Low"
|
|
94
|
+
name="priority"
|
|
95
|
+
/>
|
|
96
|
+
<VcRadioButton
|
|
97
|
+
v-model="priority"
|
|
98
|
+
:value="2"
|
|
99
|
+
label="Medium"
|
|
100
|
+
name="priority"
|
|
101
|
+
/>
|
|
102
|
+
<VcRadioButton
|
|
103
|
+
v-model="priority"
|
|
104
|
+
:value="3"
|
|
105
|
+
label="High"
|
|
106
|
+
name="priority"
|
|
107
|
+
/>
|
|
72
108
|
</VcInputGroup>
|
|
73
109
|
</template>
|
|
74
110
|
|
|
@@ -109,8 +145,8 @@ In binary mode, clicking toggles between `true` and `false` rather than comparin
|
|
|
109
145
|
|
|
110
146
|
## Slots
|
|
111
147
|
|
|
112
|
-
| Slot
|
|
113
|
-
|
|
148
|
+
| Slot | Description |
|
|
149
|
+
| ------- | --------------------------- |
|
|
114
150
|
| `error` | Custom error message markup |
|
|
115
151
|
|
|
116
152
|
## Accessibility
|
|
@@ -165,4 +201,3 @@ Do not mix `binary` mode with regular `value` comparison in the same group. Bina
|
|
|
165
201
|
## Skeleton / Loading State
|
|
166
202
|
|
|
167
203
|
When placed inside a `VcBlade` with `loading=true`, the component renders a skeleton placeholder matching its shape — a control indicator and label block. No configuration needed.
|
|
168
|
-
|
package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md
CHANGED
|
@@ -34,19 +34,19 @@ const methods = [
|
|
|
34
34
|
|
|
35
35
|
## Key Props
|
|
36
36
|
|
|
37
|
-
| Prop
|
|
38
|
-
|
|
39
|
-
| `modelValue`
|
|
40
|
-
| `options`
|
|
41
|
-
| `label`
|
|
42
|
-
| `tooltip`
|
|
43
|
-
| `hint`
|
|
44
|
-
| `orientation`
|
|
45
|
-
| `name`
|
|
46
|
-
| `disabled`
|
|
47
|
-
| `required`
|
|
48
|
-
| `error`
|
|
49
|
-
| `errorMessage` | `string`
|
|
37
|
+
| Prop | Type | Default | Description |
|
|
38
|
+
| -------------- | ---------------------------- | -------------- | ----------------------------------------- |
|
|
39
|
+
| `modelValue` | `T` | — | Selected value (v-model) |
|
|
40
|
+
| `options` | `RadioGroupOption<T>[]` | `[]` | Options to render as radio buttons |
|
|
41
|
+
| `label` | `string` | — | Group label (rendered as fieldset legend) |
|
|
42
|
+
| `tooltip` | `string` | — | Tooltip on the label |
|
|
43
|
+
| `hint` | `string` | — | Hint text below the group |
|
|
44
|
+
| `orientation` | `"vertical" \| "horizontal"` | `"vertical"` | Layout direction of options |
|
|
45
|
+
| `name` | `string` | auto-generated | Shared name for native radio inputs |
|
|
46
|
+
| `disabled` | `boolean` | `false` | Disable all radio buttons |
|
|
47
|
+
| `required` | `boolean` | `false` | Mark group as required |
|
|
48
|
+
| `error` | `boolean` | `false` | External error flag |
|
|
49
|
+
| `errorMessage` | `string` | — | Error message text |
|
|
50
50
|
|
|
51
51
|
## RadioGroupOption Interface
|
|
52
52
|
|
|
@@ -54,20 +54,20 @@ const methods = [
|
|
|
54
54
|
interface RadioGroupOption<V = string | number | boolean> {
|
|
55
55
|
label: string;
|
|
56
56
|
value: V;
|
|
57
|
-
disabled?: boolean;
|
|
57
|
+
disabled?: boolean; // Disable individual options
|
|
58
58
|
}
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
## Events
|
|
62
62
|
|
|
63
|
-
| Event
|
|
64
|
-
|
|
65
|
-
| `update:modelValue` | `T`
|
|
63
|
+
| Event | Payload | Description |
|
|
64
|
+
| ------------------- | ------- | ---------------------- |
|
|
65
|
+
| `update:modelValue` | `T` | Selected value changed |
|
|
66
66
|
|
|
67
67
|
## Slots
|
|
68
68
|
|
|
69
|
-
| Slot
|
|
70
|
-
|
|
69
|
+
| Slot | Description |
|
|
70
|
+
| --------- | ------------------------------------------------------------- |
|
|
71
71
|
| `default` | Custom radio button layout (replaces options-based rendering) |
|
|
72
72
|
|
|
73
73
|
## Common Patterns
|
|
@@ -104,26 +104,13 @@ interface RadioGroupOption<V = string | number | boolean> {
|
|
|
104
104
|
### Validation Error
|
|
105
105
|
|
|
106
106
|
```vue
|
|
107
|
-
<VcRadioGroup
|
|
108
|
-
v-model="selected"
|
|
109
|
-
label="Shipping Method"
|
|
110
|
-
required
|
|
111
|
-
:error="!selected"
|
|
112
|
-
error-message="Select a shipping method"
|
|
113
|
-
:options="shippingOptions"
|
|
114
|
-
/>
|
|
107
|
+
<VcRadioGroup v-model="selected" label="Shipping Method" required :error="!selected" error-message="Select a shipping method" :options="shippingOptions" />
|
|
115
108
|
```
|
|
116
109
|
|
|
117
110
|
### Custom Slot Layout
|
|
118
111
|
|
|
119
112
|
```vue
|
|
120
|
-
<VcRadioGroup
|
|
121
|
-
v-model="frequency"
|
|
122
|
-
label="Newsletter Frequency"
|
|
123
|
-
hint="Custom layout via default slot"
|
|
124
|
-
orientation="horizontal"
|
|
125
|
-
name="newsletter-frequency"
|
|
126
|
-
>
|
|
113
|
+
<VcRadioGroup v-model="frequency" label="Newsletter Frequency" hint="Custom layout via default slot" orientation="horizontal" name="newsletter-frequency">
|
|
127
114
|
<VcRadioButton v-model="frequency" value="daily" label="Daily" />
|
|
128
115
|
<VcRadioButton v-model="frequency" value="weekly" label="Weekly" />
|
|
129
116
|
<VcRadioButton v-model="frequency" value="monthly" label="Monthly" />
|
|
@@ -148,4 +135,3 @@ interface RadioGroupOption<V = string | number | boolean> {
|
|
|
148
135
|
## Skeleton / Loading State
|
|
149
136
|
|
|
150
137
|
When placed inside a `VcBlade` with `loading=true`, the component renders a skeleton placeholder matching its shape — a control indicator and label block. No configuration needed.
|
|
151
|
-
|
|
@@ -17,7 +17,11 @@ Read-only rating display component that visualizes a numeric value as stars, a s
|
|
|
17
17
|
|
|
18
18
|
```vue
|
|
19
19
|
<template>
|
|
20
|
-
<VcRating
|
|
20
|
+
<VcRating
|
|
21
|
+
:model-value="4"
|
|
22
|
+
:max="5"
|
|
23
|
+
label="Customer Rating"
|
|
24
|
+
/>
|
|
21
25
|
</template>
|
|
22
26
|
|
|
23
27
|
<script setup lang="ts">
|
|
@@ -88,12 +92,7 @@ If no `placeholder` is provided and the value is falsy, the component renders an
|
|
|
88
92
|
Add a label above the rating and an optional tooltip for context:
|
|
89
93
|
|
|
90
94
|
```vue
|
|
91
|
-
<VcRating
|
|
92
|
-
:model-value="4"
|
|
93
|
-
:max="5"
|
|
94
|
-
label="Average Rating"
|
|
95
|
-
tooltip="Based on verified purchases only"
|
|
96
|
-
/>
|
|
95
|
+
<VcRating :model-value="4" :max="5" label="Average Rating" tooltip="Based on verified purchases only" />
|
|
97
96
|
```
|
|
98
97
|
|
|
99
98
|
The label is rendered using the internal `VcLabel` component with consistent styling across all form fields.
|
|
@@ -130,8 +129,14 @@ Display the rating alongside other product information in a typical detail blade
|
|
|
130
129
|
```vue
|
|
131
130
|
<template>
|
|
132
131
|
<div class="tw-flex tw-flex-col tw-gap-4">
|
|
133
|
-
<VcField
|
|
134
|
-
|
|
132
|
+
<VcField
|
|
133
|
+
label="Product Name"
|
|
134
|
+
:model-value="product.name"
|
|
135
|
+
/>
|
|
136
|
+
<VcField
|
|
137
|
+
label="SKU"
|
|
138
|
+
:model-value="product.sku"
|
|
139
|
+
/>
|
|
135
140
|
<VcRating
|
|
136
141
|
:model-value="product.averageRating"
|
|
137
142
|
:max="5"
|
|
@@ -140,12 +145,13 @@ Display the rating alongside other product information in a typical detail blade
|
|
|
140
145
|
tooltip="Based on verified purchases"
|
|
141
146
|
>
|
|
142
147
|
<template #details>
|
|
143
|
-
<span class="tw-text-sm tw-text-gray-500 tw-ml-2">
|
|
144
|
-
({{ product.reviewCount }} reviews)
|
|
145
|
-
</span>
|
|
148
|
+
<span class="tw-text-sm tw-text-gray-500 tw-ml-2"> ({{ product.reviewCount }} reviews) </span>
|
|
146
149
|
</template>
|
|
147
150
|
</VcRating>
|
|
148
|
-
<VcField
|
|
151
|
+
<VcField
|
|
152
|
+
label="Price"
|
|
153
|
+
:model-value="formatCurrency(product.price)"
|
|
154
|
+
/>
|
|
149
155
|
</div>
|
|
150
156
|
</template>
|
|
151
157
|
```
|
|
@@ -213,31 +219,31 @@ Use the `"star-and-text"` or `"text"` variant in table cell slots for a compact
|
|
|
213
219
|
|
|
214
220
|
## Props
|
|
215
221
|
|
|
216
|
-
| Prop
|
|
217
|
-
|
|
218
|
-
| `modelValue`
|
|
219
|
-
| `max`
|
|
220
|
-
| `variant`
|
|
221
|
-
| `label`
|
|
222
|
-
| `tooltip`
|
|
223
|
-
| `placeholder` | `string`
|
|
222
|
+
| Prop | Type | Default | Description |
|
|
223
|
+
| ------------- | -------------------------------------- | --------- | ---------------------------------------- |
|
|
224
|
+
| `modelValue` | `number` | -- | Current rating value to display |
|
|
225
|
+
| `max` | `number` | `5` | Maximum rating value (defines the scale) |
|
|
226
|
+
| `variant` | `"stars" \| "star-and-text" \| "text"` | `"stars"` | Display variant |
|
|
227
|
+
| `label` | `string` | -- | Field label text above the rating |
|
|
228
|
+
| `tooltip` | `string` | -- | Tooltip shown on the label |
|
|
229
|
+
| `placeholder` | `string` | -- | Text shown when `modelValue` is falsy |
|
|
224
230
|
|
|
225
231
|
## Slots
|
|
226
232
|
|
|
227
|
-
| Slot
|
|
228
|
-
|
|
229
|
-
| `details` | --
|
|
233
|
+
| Slot | Scope | Description |
|
|
234
|
+
| --------- | ----- | -------------------------------------------------------------------------------------- |
|
|
235
|
+
| `details` | -- | Additional content below the rating (available in `star-and-text` and `text` variants) |
|
|
230
236
|
|
|
231
237
|
## CSS Variables
|
|
232
238
|
|
|
233
|
-
| Variable
|
|
234
|
-
|
|
235
|
-
| `--rating-placeholder-color`
|
|
236
|
-
| `--rating-star-size`
|
|
237
|
-
| `--rating-gap`
|
|
238
|
-
| `--rating-special-color`
|
|
239
|
-
| `--rating-special-color-hover`
|
|
240
|
-
| `--rating-special-color-disabled` | `var(--warning-200)`
|
|
239
|
+
| Variable | Default | Description |
|
|
240
|
+
| --------------------------------- | --------------------- | ----------------------------------------------------------------- |
|
|
241
|
+
| `--rating-placeholder-color` | `var(--neutrals-400)` | Color of the placeholder text |
|
|
242
|
+
| `--rating-star-size` | `1em` | Size of star icons |
|
|
243
|
+
| `--rating-gap` | `2px` | Gap between star icons |
|
|
244
|
+
| `--rating-special-color` | `var(--warning-500)` | Color of filled stars |
|
|
245
|
+
| `--rating-special-color-hover` | `var(--warning-600)` | Hover color for star icons (reserved for future interactive mode) |
|
|
246
|
+
| `--rating-special-color-disabled` | `var(--warning-200)` | Disabled color for star icons (reserved for future use) |
|
|
241
247
|
|
|
242
248
|
## Accessibility
|
|
243
249
|
|
|
@@ -255,4 +261,3 @@ Use the `"star-and-text"` or `"text"` variant in table cell slots for a compact
|
|
|
255
261
|
## Skeleton / Loading State
|
|
256
262
|
|
|
257
263
|
When placed inside a `VcBlade` with `loading=true`, the component automatically renders a skeleton placeholder matching its visual footprint. No additional props or configuration needed.
|
|
258
|
-
|
|
@@ -6,14 +6,14 @@ VcSelect is one of the most widely used components in vc-shell. It covers most s
|
|
|
6
6
|
|
|
7
7
|
## When to Use
|
|
8
8
|
|
|
9
|
-
| Scenario
|
|
10
|
-
|
|
11
|
-
| Selection from a list (single/multiple) | **VcSelect**
|
|
12
|
-
| Free text input
|
|
13
|
-
| Number input + unit selection
|
|
14
|
-
| Tags with free-form input
|
|
15
|
-
| Date selection
|
|
16
|
-
| Color selection
|
|
9
|
+
| Scenario | Component |
|
|
10
|
+
| --------------------------------------- | ---------------------------------------- |
|
|
11
|
+
| Selection from a list (single/multiple) | **VcSelect** |
|
|
12
|
+
| Free text input | [VcInput](../vc-input/) |
|
|
13
|
+
| Number input + unit selection | [VcInputDropdown](../vc-input-dropdown/) |
|
|
14
|
+
| Tags with free-form input | [VcMultivalue](../vc-multivalue/) |
|
|
15
|
+
| Date selection | [VcDatePicker](../vc-date-picker/) |
|
|
16
|
+
| Color selection | [VcColorInput](../vc-color-input/) |
|
|
17
17
|
|
|
18
18
|
## Quick Start
|
|
19
19
|
|
|
@@ -75,11 +75,7 @@ By default `option-value="id"` and `option-label="title"` — if your objects us
|
|
|
75
75
|
For simple lists of strings or numbers:
|
|
76
76
|
|
|
77
77
|
```vue
|
|
78
|
-
<VcSelect
|
|
79
|
-
v-model="size"
|
|
80
|
-
:options="['S', 'M', 'L', 'XL', 'XXL']"
|
|
81
|
-
label="Размер"
|
|
82
|
-
/>
|
|
78
|
+
<VcSelect v-model="size" :options="['S', 'M', 'L', 'XL', 'XXL']" label="Размер" />
|
|
83
79
|
```
|
|
84
80
|
|
|
85
81
|
In this case `optionValue` and `optionLabel` are not needed — the component uses the value as-is.
|
|
@@ -87,6 +83,7 @@ In this case `optionValue` and `optionLabel` are not needed — the component us
|
|
|
87
83
|
### Async Function (Server API)
|
|
88
84
|
|
|
89
85
|
To load data from a server, pass a function instead of an array. This is the most powerful mode — it automatically provides:
|
|
86
|
+
|
|
90
87
|
- Search with debounce (500ms by default)
|
|
91
88
|
- Infinite scrolling (loads more on scroll down)
|
|
92
89
|
- Automatic resolution of the initial value by `ids`
|
|
@@ -184,14 +181,7 @@ Selected values are displayed as chips with a remove button. The `clearable` but
|
|
|
184
181
|
Enable `searchable` to add a search field to the dropdown:
|
|
185
182
|
|
|
186
183
|
```vue
|
|
187
|
-
<VcSelect
|
|
188
|
-
v-model="userId"
|
|
189
|
-
:options="users"
|
|
190
|
-
label="Пользователь"
|
|
191
|
-
searchable
|
|
192
|
-
:debounce="300"
|
|
193
|
-
@search="onSearch"
|
|
194
|
-
/>
|
|
184
|
+
<VcSelect v-model="userId" :options="users" label="Пользователь" searchable :debounce="300" @search="onSearch" />
|
|
195
185
|
```
|
|
196
186
|
|
|
197
187
|
- **Static array:** filtering happens on the client side (by `optionLabel`)
|
|
@@ -206,7 +196,11 @@ Use the `#option` slot for full control over how each option is rendered:
|
|
|
206
196
|
|
|
207
197
|
```vue
|
|
208
198
|
<template>
|
|
209
|
-
<VcSelect
|
|
199
|
+
<VcSelect
|
|
200
|
+
v-model="statusId"
|
|
201
|
+
:options="statuses"
|
|
202
|
+
label="Статус заказа"
|
|
203
|
+
>
|
|
210
204
|
<template #option="{ opt, selected, toggleOption }">
|
|
211
205
|
<div
|
|
212
206
|
class="tw-flex tw-items-center tw-gap-2 tw-px-3 tw-py-2 tw-cursor-pointer"
|
|
@@ -224,7 +218,12 @@ Use the `#option` slot for full control over how each option is rendered:
|
|
|
224
218
|
<span class="tw-text-xs tw-text-[var(--neutrals-400)]">{{ opt.description }}</span>
|
|
225
219
|
</div>
|
|
226
220
|
<!-- Галочка для выбранного -->
|
|
227
|
-
<VcIcon
|
|
221
|
+
<VcIcon
|
|
222
|
+
v-if="selected"
|
|
223
|
+
icon="lucide-check"
|
|
224
|
+
size="xs"
|
|
225
|
+
class="tw-ml-auto"
|
|
226
|
+
/>
|
|
228
227
|
</div>
|
|
229
228
|
</template>
|
|
230
229
|
</VcSelect>
|
|
@@ -316,12 +315,7 @@ const { meta, errorBag } = useForm({ validateOnMount: false });
|
|
|
316
315
|
For an async select with search, the pattern is the same, but `handleChange` is called alongside business logic:
|
|
317
316
|
|
|
318
317
|
```vue
|
|
319
|
-
<Field
|
|
320
|
-
v-slot="{ errorMessage, handleChange, errors }"
|
|
321
|
-
:model-value="offer.productId"
|
|
322
|
-
name="product"
|
|
323
|
-
rules="required"
|
|
324
|
-
>
|
|
318
|
+
<Field v-slot="{ errorMessage, handleChange, errors }" :model-value="offer.productId" name="product" rules="required">
|
|
325
319
|
<VcSelect
|
|
326
320
|
v-model="offer.productId"
|
|
327
321
|
label="Product"
|
|
@@ -509,7 +503,11 @@ A typical pattern in vc-shell — a select on a details page:
|
|
|
509
503
|
<VcForm>
|
|
510
504
|
<VcRow>
|
|
511
505
|
<VcCol :size="6">
|
|
512
|
-
<VcInput
|
|
506
|
+
<VcInput
|
|
507
|
+
v-model="product.name"
|
|
508
|
+
label="Name"
|
|
509
|
+
required
|
|
510
|
+
/>
|
|
513
511
|
</VcCol>
|
|
514
512
|
<VcCol :size="6">
|
|
515
513
|
<VcSelect
|
|
@@ -571,18 +569,10 @@ If `v-model` contains an ID but the list has not been loaded yet — for static
|
|
|
571
569
|
|
|
572
570
|
```vue
|
|
573
571
|
<!-- ❌ Проблема: async функция не обрабатывает ids -->
|
|
574
|
-
const loadUsers = async (keyword?: string, skip?: number) => {
|
|
575
|
-
return api.searchUsers({ keyword, skip, take: 20 });
|
|
576
|
-
};
|
|
572
|
+
const loadUsers = async (keyword?: string, skip?: number) => { return api.searchUsers({ keyword, skip, take: 20 }); };
|
|
577
573
|
|
|
578
574
|
<!-- ✅ Решение: обработайте ids параметр -->
|
|
579
|
-
const loadUsers = async (keyword?: string, skip?: number, ids?: string[]) => {
|
|
580
|
-
if (ids?.length) {
|
|
581
|
-
const users = await api.getUsersByIds(ids);
|
|
582
|
-
return { results: users, totalCount: users.length };
|
|
583
|
-
}
|
|
584
|
-
return api.searchUsers({ keyword, skip, take: 20 });
|
|
585
|
-
};
|
|
575
|
+
const loadUsers = async (keyword?: string, skip?: number, ids?: string[]) => { if (ids?.length) { const users = await api.getUsersByIds(ids); return { results: users, totalCount: users.length }; } return api.searchUsers({ keyword, skip, take: 20 }); };
|
|
586
576
|
```
|
|
587
577
|
|
|
588
578
|
### Problem: Unnecessary requests with cascading selects
|
|
@@ -593,55 +583,55 @@ Don't forget `:key` with cascading selects, otherwise the second select will ret
|
|
|
593
583
|
|
|
594
584
|
## Props
|
|
595
585
|
|
|
596
|
-
| Prop
|
|
597
|
-
|
|
598
|
-
| `modelValue`
|
|
599
|
-
| `options`
|
|
600
|
-
| `optionValue`
|
|
601
|
-
| `optionLabel`
|
|
602
|
-
| `multiple`
|
|
603
|
-
| `searchable`
|
|
604
|
-
| `emitValue`
|
|
605
|
-
| `clearable`
|
|
606
|
-
| `debounce`
|
|
607
|
-
| `mapOptions`
|
|
608
|
-
| `placement`
|
|
609
|
-
| `size`
|
|
610
|
-
| `outline`
|
|
611
|
-
| `loading`
|
|
612
|
-
| `label`
|
|
613
|
-
| `placeholder`
|
|
614
|
-
| `required`
|
|
615
|
-
| `disabled`
|
|
616
|
-
| `error`
|
|
617
|
-
| `errorMessage`
|
|
618
|
-
| `hint`
|
|
619
|
-
| `tooltip`
|
|
620
|
-
| `prefix`
|
|
621
|
-
| `suffix`
|
|
622
|
-
| `multilanguage`
|
|
623
|
-
| `currentLanguage` | `string`
|
|
624
|
-
| `name`
|
|
586
|
+
| Prop | Type | Default | Description |
|
|
587
|
+
| ----------------- | ------------------------------------------------ | ----------- | ----------------------------------------------------------- |
|
|
588
|
+
| `modelValue` | `T \| T[] \| string \| string[] \| null` | `undefined` | Value (v-model). Type depends on `emitValue` and `multiple` |
|
|
589
|
+
| `options` | `T[] \| ((keyword?, skip?, ids?) => Promise<P>)` | `[]` | Static array or async function |
|
|
590
|
+
| `optionValue` | `string \| ((opt: T) => string)` | `"id"` | Object property used as the value |
|
|
591
|
+
| `optionLabel` | `string \| ((opt: T) => string)` | `"title"` | Object property used for display |
|
|
592
|
+
| `multiple` | `boolean` | `false` | Multiple selection |
|
|
593
|
+
| `searchable` | `boolean` | `false` | Search through options |
|
|
594
|
+
| `emitValue` | `boolean` | `true` | `true` = emit the value, `false` = emit the full object |
|
|
595
|
+
| `clearable` | `boolean` | `true` | Clear button |
|
|
596
|
+
| `debounce` | `number \| string` | `500` | Search delay (ms) |
|
|
597
|
+
| `mapOptions` | `boolean` | `true` | Automatically look up label by value in the array |
|
|
598
|
+
| `placement` | `string` | `"bottom"` | Dropdown position (Floating UI placements) |
|
|
599
|
+
| `size` | `"default" \| "small"` | `"default"` | Field size |
|
|
600
|
+
| `outline` | `boolean` | `true` | Show border outline |
|
|
601
|
+
| `loading` | `boolean` | `false` | Loading state |
|
|
602
|
+
| `label` | `string` | — | Label text |
|
|
603
|
+
| `placeholder` | `string` | — | Placeholder |
|
|
604
|
+
| `required` | `boolean` | `false` | Required field (asterisk) |
|
|
605
|
+
| `disabled` | `boolean` | `false` | Disable the component |
|
|
606
|
+
| `error` | `boolean` | `false` | Error state |
|
|
607
|
+
| `errorMessage` | `string` | — | Error text |
|
|
608
|
+
| `hint` | `string` | — | Hint text below the field |
|
|
609
|
+
| `tooltip` | `string` | — | Tooltip next to the label |
|
|
610
|
+
| `prefix` | `string` | — | Prefix inside the field |
|
|
611
|
+
| `suffix` | `string` | — | Suffix inside the field |
|
|
612
|
+
| `multilanguage` | `boolean` | `false` | Multilanguage icon on the label |
|
|
613
|
+
| `currentLanguage` | `string` | — | Current language |
|
|
614
|
+
| `name` | `string` | `"Field"` | Field name for validation |
|
|
625
615
|
|
|
626
616
|
## Events
|
|
627
617
|
|
|
628
|
-
| Event
|
|
629
|
-
|
|
618
|
+
| Event | Payload | Description |
|
|
619
|
+
| ------------------- | ---------------------------------------- | ---------------------- |
|
|
630
620
|
| `update:modelValue` | `T \| T[] \| string \| string[] \| null` | Selected value changed |
|
|
631
|
-
| `search`
|
|
632
|
-
| `close`
|
|
621
|
+
| `search` | `string` | Search query changed |
|
|
622
|
+
| `close` | — | Dropdown closed |
|
|
633
623
|
|
|
634
624
|
## Slots
|
|
635
625
|
|
|
636
|
-
| Slot
|
|
637
|
-
|
|
638
|
-
| `option`
|
|
639
|
-
| `selected-item`
|
|
640
|
-
| `control`
|
|
641
|
-
| `prepend` / `append`
|
|
642
|
-
| `prepend-inner` / `append-inner` | —
|
|
643
|
-
| `no-options`
|
|
644
|
-
| `error` / `hint`
|
|
626
|
+
| Slot | Scope | Description |
|
|
627
|
+
| -------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------ |
|
|
628
|
+
| `option` | `{ index, opt, selected, toggleOption }` | Custom option rendering. **You must call `toggleOption(opt)` on click.** |
|
|
629
|
+
| `selected-item` | `{ index, opt, selected, removeAtIndex }` | Custom rendering of selected chips (multiple) |
|
|
630
|
+
| `control` | `{ toggleHandler, isOpened }` | Full trigger replacement |
|
|
631
|
+
| `prepend` / `append` | — | Content outside the field |
|
|
632
|
+
| `prepend-inner` / `append-inner` | — | Content inside the field |
|
|
633
|
+
| `no-options` | — | Shown when there are no options |
|
|
634
|
+
| `error` / `hint` | — | Custom rendering of error/hint |
|
|
645
635
|
|
|
646
636
|
## CSS Variables
|
|
647
637
|
|
|
@@ -688,4 +678,3 @@ Don't forget `:key` with cascading selects, otherwise the second select will ret
|
|
|
688
678
|
When placed inside a `VcBlade` with `loading=true`, the component automatically renders a skeleton placeholder matching its visual footprint — a label block (when the `label` prop is set) and an input-shaped block. No additional props or configuration needed.
|
|
689
679
|
|
|
690
680
|
This behavior is powered by `BladeLoadingKey` via Vue's provide/inject. The component injects the loading state from the nearest `VcBlade` ancestor.
|
|
691
|
-
|
|
@@ -13,10 +13,16 @@ A content carousel component built on Swiper.js for displaying slides with optio
|
|
|
13
13
|
|
|
14
14
|
```vue
|
|
15
15
|
<template>
|
|
16
|
-
<VcSlider
|
|
16
|
+
<VcSlider
|
|
17
|
+
:slides="products"
|
|
18
|
+
navigation
|
|
19
|
+
>
|
|
17
20
|
<template #default="{ slide }">
|
|
18
21
|
<div class="tw-w-48">
|
|
19
|
-
<img
|
|
22
|
+
<img
|
|
23
|
+
:src="slide.imageUrl"
|
|
24
|
+
class="tw-rounded"
|
|
25
|
+
/>
|
|
20
26
|
<p>{{ slide.name }}</p>
|
|
21
27
|
</div>
|
|
22
28
|
</template>
|
|
@@ -36,14 +42,14 @@ const products = [
|
|
|
36
42
|
|
|
37
43
|
## Key Props
|
|
38
44
|
|
|
39
|
-
| Prop
|
|
40
|
-
|
|
41
|
-
| `slides`
|
|
42
|
-
| `navigation`
|
|
43
|
-
| `slidesPerView`
|
|
44
|
-
| `spaceBetweenSlides` | `number`
|
|
45
|
-
| `overflow`
|
|
46
|
-
| `ariaLabel`
|
|
45
|
+
| Prop | Type | Default | Description |
|
|
46
|
+
| -------------------- | ---------------------------------------- | -------------------- | ------------------------------------------------------- |
|
|
47
|
+
| `slides` | `Record<string, unknown>[] \| unknown[]` | `[]` | Array of slide data objects |
|
|
48
|
+
| `navigation` | `boolean` | `false` | Show previous/next navigation buttons |
|
|
49
|
+
| `slidesPerView` | `string \| "auto"` | `"auto"` | Number of visible slides at once |
|
|
50
|
+
| `spaceBetweenSlides` | `number` | `10` | Gap between slides in pixels |
|
|
51
|
+
| `overflow` | `boolean` | `false` | Allow slides to be visible outside the container bounds |
|
|
52
|
+
| `ariaLabel` | `string` | `"Content carousel"` | Accessible label for the slider region |
|
|
47
53
|
|
|
48
54
|
## Common Patterns
|
|
49
55
|
|
|
@@ -89,11 +95,11 @@ const products = [
|
|
|
89
95
|
|
|
90
96
|
## Slots
|
|
91
97
|
|
|
92
|
-
| Slot
|
|
93
|
-
|
|
94
|
-
| `default` | `{ slide }` | Content for each slide
|
|
95
|
-
| `prevBtn` | --
|
|
96
|
-
| `nextBtn` | --
|
|
98
|
+
| Slot | Scope | Description |
|
|
99
|
+
| --------- | ----------- | --------------------------------- |
|
|
100
|
+
| `default` | `{ slide }` | Content for each slide |
|
|
101
|
+
| `prevBtn` | -- | Custom previous navigation button |
|
|
102
|
+
| `nextBtn` | -- | Custom next navigation button |
|
|
97
103
|
|
|
98
104
|
## Accessibility
|
|
99
105
|
|
|
@@ -117,4 +123,3 @@ const products = [
|
|
|
117
123
|
## Skeleton / Loading State
|
|
118
124
|
|
|
119
125
|
When placed inside a `VcBlade` with `loading=true`, the component automatically renders a skeleton placeholder matching its visual footprint. No additional props or configuration needed.
|
|
120
|
-
|