@xleddyl/443-components-vue 0.8.1 → 0.8.3
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/README.md +52 -4
- package/dist/chart/BarChart.vue +33 -22
- package/dist/chart/BarChart.vue.d.ts +4 -0
- package/dist/chart/chart.css +2 -2
- package/dist/chart/useChartColors.mjs +8 -8
- package/dist/components/core/Button.vue.d.ts +1 -1
- package/dist/components/core/FormField.vue +5 -0
- package/dist/components/core/FormField.vue.d.ts +4 -0
- package/dist/components/core/Input.vue +59 -5
- package/dist/components/core/Input.vue.d.ts +9 -5
- package/dist/components/core/Textarea.vue +28 -3
- package/dist/components/core/Textarea.vue.d.ts +7 -5
- package/dist/components/core/types.d.ts +1 -1
- package/dist/components/data/Badge.vue.d.ts +1 -1
- package/dist/components/data/DescriptionList.vue.d.ts +1 -1
- package/dist/components/data/FilterPills.vue +43 -4
- package/dist/components/data/FilterPills.vue.d.ts +4 -1
- package/dist/components/data/Pagination.vue +63 -2
- package/dist/components/data/Pagination.vue.d.ts +12 -0
- package/dist/components/data/Tag.vue.d.ts +1 -1
- package/dist/components/data/Tree.vue.d.ts +1 -1
- package/dist/components/data/types.d.ts +1 -0
- package/dist/components/feedback/Meter.vue.d.ts +1 -1
- package/dist/components/feedback/Progress.vue.d.ts +1 -1
- package/dist/components/feedback/ProgressRing.vue.d.ts +1 -1
- package/dist/components/forms/Calendar.vue +31 -7
- package/dist/components/forms/Calendar.vue.d.ts +13 -2
- package/dist/components/forms/CheckboxGroup.vue +7 -1
- package/dist/components/forms/CheckboxGroup.vue.d.ts +1 -0
- package/dist/components/forms/ColorInput.vue.d.ts +5 -5
- package/dist/components/forms/Combobox.vue +4 -3
- package/dist/components/forms/Combobox.vue.d.ts +1 -0
- package/dist/components/forms/DateInput.vue.d.ts +10 -6
- package/dist/components/forms/DatePicker.vue.d.ts +1 -1
- package/dist/components/forms/FileInput.vue.d.ts +1 -1
- package/dist/components/forms/NumberInput.vue.d.ts +5 -5
- package/dist/components/forms/PasswordInput.vue.d.ts +9 -5
- package/dist/components/forms/PinInput.vue.d.ts +5 -5
- package/dist/components/forms/Select.vue +21 -2
- package/dist/components/forms/Select.vue.d.ts +4 -4
- package/dist/components/forms/Slider.vue.d.ts +5 -5
- package/dist/components/forms/Switch.vue.d.ts +1 -1
- package/dist/components/forms/TimeInput.vue.d.ts +9 -5
- package/dist/components/layout/AppShell.vue +4 -2
- package/dist/components/layout/AppShell.vue.d.ts +2 -0
- package/dist/components/layout/Card.vue.d.ts +1 -1
- package/dist/components/layout/CopyButton.vue.d.ts +1 -1
- package/dist/components/layout/PageHeader.vue +15 -3
- package/dist/components/layout/PageHeader.vue.d.ts +5 -0
- package/dist/components/layout/Separator.vue +17 -4
- package/dist/components/layout/Separator.vue.d.ts +7 -1
- package/dist/components/layout/Tabs.vue +10 -0
- package/dist/components/layout/types.d.ts +3 -0
- package/dist/components/overlays/ConfirmDialog.vue.d.ts +8 -4
- package/dist/components/overlays/ConfirmHost.vue.d.ts +8 -4
- package/dist/components/overlays/ContextMenu.vue.d.ts +4 -2
- package/dist/components/overlays/DropdownMenu.vue +5 -1
- package/dist/components/overlays/DropdownMenu.vue.d.ts +8 -2
- package/dist/components/overlays/Modal.vue +9 -2
- package/dist/components/overlays/Modal.vue.d.ts +4 -0
- package/dist/components/overlays/types.d.ts +2 -2
- package/dist/components/templates/DashboardLayout.vue +2 -0
- package/dist/components/templates/DashboardLayout.vue.d.ts +2 -0
- package/dist/components/templates/SettingsModal.vue.d.ts +8 -4
- package/dist/components/templates/types.d.ts +1 -0
- package/dist/composables/useForm.d.ts +24 -2
- package/dist/composables/useForm.mjs +51 -8
- package/dist/composables/useOverlay.d.ts +1 -1
- package/dist/editor/RichTextEditor.vue +108 -10
- package/dist/editor/RichTextEditor.vue.d.ts +5 -2
- package/dist/editor/rich-text-editor.css +31 -4
- package/dist/editor/types.d.ts +2 -1
- package/dist/grid/DataGrid.vue +106 -24
- package/dist/grid/DataGrid.vue.d.ts +14 -2
- package/dist/grid/cells/DateCell.vue +18 -3
- package/dist/grid/cells/ImageCell.vue +6 -1
- package/dist/grid/data-grid.css +17 -3
- package/dist/grid/index.d.ts +2 -1
- package/dist/grid/index.mjs +6 -1
- package/dist/grid/modules.d.ts +2 -0
- package/dist/grid/modules.mjs +32 -0
- package/dist/grid/theme.mjs +5 -5
- package/dist/grid/types.d.ts +4 -0
- package/dist/icons/builtin.d.ts +3 -0
- package/dist/icons/builtin.mjs +3 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +1 -0
- package/dist/internal/core/intl.d.ts +2 -0
- package/dist/internal/core/intl.mjs +17 -0
- package/dist/internal/forms/counter.d.ts +18 -0
- package/dist/internal/forms/counter.mjs +31 -0
- package/dist/internal/keys.d.ts +2 -1
- package/dist/internal/keys.mjs +1 -0
- package/dist/internal/overlays/MenuList.vue +4 -2
- package/dist/internal/overlays/MenuList.vue.d.ts +2 -0
- package/dist/internal/overlays/OverlayView.vue.d.ts +8 -4
- package/dist/locale/de.mjs +21 -3
- package/dist/locale/en.mjs +21 -3
- package/dist/locale/it.mjs +21 -3
- package/dist/locale/types.d.ts +18 -0
- package/dist/nuxt/runtime/layouts/dashboard.vue +1 -0
- package/dist/styles/base.css +2 -1
- package/dist/styles/core/button.css +42 -16
- package/dist/styles/core/form-field.css +7 -1
- package/dist/styles/core/input.css +31 -2
- package/dist/styles/core/kbd.css +1 -1
- package/dist/styles/core/textarea.css +10 -0
- package/dist/styles/data/avatar.css +1 -1
- package/dist/styles/data/badge.css +39 -23
- package/dist/styles/data/description-list.css +2 -2
- package/dist/styles/data/filter-pills.css +24 -3
- package/dist/styles/data/pagination.css +26 -3
- package/dist/styles/data/selection-bar.css +1 -1
- package/dist/styles/data/stat.css +4 -4
- package/dist/styles/data/table.css +4 -4
- package/dist/styles/data/tag.css +1 -1
- package/dist/styles/data/timeline.css +1 -1
- package/dist/styles/data/tree.css +2 -2
- package/dist/styles/feedback/empty-state.css +1 -1
- package/dist/styles/feedback/loading-host.css +1 -1
- package/dist/styles/feedback/loading-overlay.css +1 -1
- package/dist/styles/feedback/meter.css +1 -1
- package/dist/styles/feedback/progress.css +2 -2
- package/dist/styles/forced-colors.css +6 -1
- package/dist/styles/forms/calendar.css +30 -3
- package/dist/styles/forms/checkbox.css +1 -1
- package/dist/styles/forms/choice.css +7 -1
- package/dist/styles/forms/combobox.css +2 -2
- package/dist/styles/forms/file-input.css +1 -1
- package/dist/styles/forms/password-input.css +1 -1
- package/dist/styles/forms/pin-input.css +1 -1
- package/dist/styles/forms/radio.css +1 -1
- package/dist/styles/forms/segmented.css +2 -2
- package/dist/styles/forms/select.css +2 -2
- package/dist/styles/forms/slider.css +1 -1
- package/dist/styles/forms/switch.css +4 -4
- package/dist/styles/layout/accordion.css +2 -2
- package/dist/styles/layout/app-shell.css +18 -6
- package/dist/styles/layout/breadcrumbs.css +3 -3
- package/dist/styles/layout/card.css +1 -1
- package/dist/styles/layout/nav-link.css +1 -1
- package/dist/styles/layout/page-header.css +21 -1
- package/dist/styles/layout/separator.css +21 -1
- package/dist/styles/layout/sidebar.css +1 -1
- package/dist/styles/layout/tabs.css +30 -1
- package/dist/styles/layout/theme-switch.css +1 -1
- package/dist/styles/overlays/command.css +3 -3
- package/dist/styles/overlays/drawer.css +4 -3
- package/dist/styles/overlays/floating.css +2 -2
- package/dist/styles/overlays/menu.css +5 -1
- package/dist/styles/overlays/modal.css +12 -9
- package/dist/styles/overlays/toast.css +3 -3
- package/dist/styles/overlays/tooltip.css +26 -8
- package/dist/styles/shared.css +2 -2
- package/dist/styles/templates/account-menu.css +1 -1
- package/dist/styles/templates/auth-layout.css +4 -4
- package/dist/styles/templates/brand.css +2 -2
- package/dist/styles/templates/dashboard-page.css +1 -1
- package/dist/styles/templates/empty-page.css +3 -3
- package/dist/styles/templates/error-page.css +1 -1
- package/dist/styles/templates/save-bar.css +1 -1
- package/dist/styles/templates/settings-modal.css +6 -6
- package/dist/styles/utilities.css +3 -3
- package/package.json +1 -1
|
@@ -462,8 +462,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
462
462
|
}> & Readonly<{
|
|
463
463
|
"onUpdate:modelValue"?: ((value: string | CalendarRange | null | undefined) => any) | undefined;
|
|
464
464
|
}>, {
|
|
465
|
-
invalid: boolean;
|
|
466
465
|
size: FieldSize;
|
|
466
|
+
invalid: boolean;
|
|
467
467
|
format: Intl.DateTimeFormatOptions;
|
|
468
468
|
closeOnSelect: boolean;
|
|
469
469
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -497,9 +497,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
497
497
|
onReject?: ((events: FileInvalidEvent[], detail: FileAddDetail) => any) | undefined;
|
|
498
498
|
}>, {
|
|
499
499
|
icon: IconName;
|
|
500
|
+
size: FieldSize;
|
|
500
501
|
invalid: boolean;
|
|
501
502
|
list: boolean;
|
|
502
|
-
size: FieldSize;
|
|
503
503
|
acceptMode: FileInputAcceptMode;
|
|
504
504
|
previews: boolean;
|
|
505
505
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -230,13 +230,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
230
230
|
popovertarget?: string | undefined;
|
|
231
231
|
popovertargetaction?: import("../../index.ts").PopoverTargetAction | undefined;
|
|
232
232
|
autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
|
|
233
|
+
maxlength?: (string | number) | undefined;
|
|
234
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
233
235
|
accept?: string | undefined | undefined;
|
|
234
236
|
alt?: string | undefined | undefined;
|
|
235
237
|
capture?: boolean | "user" | "environment" | undefined | undefined;
|
|
236
238
|
crossorigin?: string | undefined | undefined;
|
|
237
|
-
maxlength?: (string | number) | undefined;
|
|
238
239
|
minlength?: (string | number) | undefined;
|
|
239
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
240
240
|
src?: string | undefined | undefined;
|
|
241
241
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
242
242
|
}, {
|
|
@@ -474,20 +474,20 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
474
474
|
popovertarget?: string | undefined;
|
|
475
475
|
popovertargetaction?: import("../../index.ts").PopoverTargetAction | undefined;
|
|
476
476
|
autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
|
|
477
|
+
maxlength?: (string | number) | undefined;
|
|
478
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
477
479
|
accept?: string | undefined | undefined;
|
|
478
480
|
alt?: string | undefined | undefined;
|
|
479
481
|
capture?: boolean | "user" | "environment" | undefined | undefined;
|
|
480
482
|
crossorigin?: string | undefined | undefined;
|
|
481
|
-
maxlength?: (string | number) | undefined;
|
|
482
483
|
minlength?: (string | number) | undefined;
|
|
483
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
484
484
|
src?: string | undefined | undefined;
|
|
485
485
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
486
486
|
}> & Readonly<{
|
|
487
487
|
"onUpdate:modelValue"?: ((value: number | null | undefined) => any) | undefined;
|
|
488
488
|
}>, {
|
|
489
|
-
invalid: boolean;
|
|
490
489
|
size: FieldSize;
|
|
490
|
+
invalid: boolean;
|
|
491
491
|
step: number;
|
|
492
492
|
align: "end" | "start";
|
|
493
493
|
stepper: boolean;
|
|
@@ -142,6 +142,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
142
142
|
type?: string | undefined;
|
|
143
143
|
width?: (string | number) | undefined;
|
|
144
144
|
tabindex?: (string | number) | undefined;
|
|
145
|
+
transform?: (value: string) => string;
|
|
145
146
|
'aria-activedescendant'?: string | undefined;
|
|
146
147
|
'aria-atomic'?: (boolean | "true" | "false") | undefined;
|
|
147
148
|
'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
|
|
@@ -240,17 +241,18 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
240
241
|
onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
|
|
241
242
|
onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
242
243
|
onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
244
|
+
maxlength?: (string | number) | undefined;
|
|
243
245
|
clearable?: boolean;
|
|
244
246
|
clearLabel?: string;
|
|
245
247
|
noAutofill?: boolean;
|
|
248
|
+
counter?: boolean;
|
|
246
249
|
onClear?: (() => any) | undefined;
|
|
250
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
247
251
|
accept?: string | undefined;
|
|
248
252
|
alt?: string | undefined;
|
|
249
253
|
capture?: boolean | "user" | "environment" | undefined;
|
|
250
254
|
crossorigin?: string | undefined;
|
|
251
|
-
maxlength?: (string | number) | undefined;
|
|
252
255
|
minlength?: (string | number) | undefined;
|
|
253
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
254
256
|
src?: string | undefined;
|
|
255
257
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
256
258
|
modelModifiers?: Partial<Record<"number" | "trim", true>>;
|
|
@@ -401,6 +403,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
401
403
|
type?: string | undefined;
|
|
402
404
|
width?: (string | number) | undefined;
|
|
403
405
|
tabindex?: (string | number) | undefined;
|
|
406
|
+
transform?: (value: string) => string;
|
|
404
407
|
'aria-activedescendant'?: string | undefined;
|
|
405
408
|
'aria-atomic'?: (boolean | "true" | "false") | undefined;
|
|
406
409
|
'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
|
|
@@ -499,17 +502,18 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
499
502
|
onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
|
|
500
503
|
onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
501
504
|
onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
505
|
+
maxlength?: (string | number) | undefined;
|
|
502
506
|
clearable?: boolean;
|
|
503
507
|
clearLabel?: string;
|
|
504
508
|
noAutofill?: boolean;
|
|
509
|
+
counter?: boolean;
|
|
505
510
|
onClear?: (() => any) | undefined;
|
|
511
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
506
512
|
accept?: string | undefined;
|
|
507
513
|
alt?: string | undefined;
|
|
508
514
|
capture?: boolean | "user" | "environment" | undefined;
|
|
509
515
|
crossorigin?: string | undefined;
|
|
510
|
-
maxlength?: (string | number) | undefined;
|
|
511
516
|
minlength?: (string | number) | undefined;
|
|
512
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
513
517
|
src?: string | undefined;
|
|
514
518
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
515
519
|
modelModifiers?: Partial<Record<"number" | "trim", true>>;
|
|
@@ -517,9 +521,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
517
521
|
onGenerate?: ((password: string) => any) | undefined;
|
|
518
522
|
"onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
|
|
519
523
|
}>, {
|
|
524
|
+
size: FieldSize;
|
|
520
525
|
minLength: number;
|
|
521
526
|
invalid: boolean;
|
|
522
|
-
size: FieldSize;
|
|
523
527
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
524
528
|
declare const _default: typeof __VLS_export;
|
|
525
529
|
export default _default;
|
|
@@ -229,13 +229,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
229
229
|
formtarget?: string | undefined | undefined;
|
|
230
230
|
popovertarget?: string | undefined;
|
|
231
231
|
popovertargetaction?: import("../..").PopoverTargetAction | undefined;
|
|
232
|
+
maxlength?: (string | number) | undefined;
|
|
233
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
232
234
|
accept?: string | undefined | undefined;
|
|
233
235
|
alt?: string | undefined | undefined;
|
|
234
236
|
capture?: boolean | "user" | "environment" | undefined | undefined;
|
|
235
237
|
crossorigin?: string | undefined | undefined;
|
|
236
|
-
maxlength?: (string | number) | undefined;
|
|
237
238
|
minlength?: (string | number) | undefined;
|
|
238
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
239
239
|
src?: string | undefined | undefined;
|
|
240
240
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
241
241
|
}, {
|
|
@@ -474,13 +474,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
474
474
|
formtarget?: string | undefined | undefined;
|
|
475
475
|
popovertarget?: string | undefined;
|
|
476
476
|
popovertargetaction?: import("../..").PopoverTargetAction | undefined;
|
|
477
|
+
maxlength?: (string | number) | undefined;
|
|
478
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
477
479
|
accept?: string | undefined | undefined;
|
|
478
480
|
alt?: string | undefined | undefined;
|
|
479
481
|
capture?: boolean | "user" | "environment" | undefined | undefined;
|
|
480
482
|
crossorigin?: string | undefined | undefined;
|
|
481
|
-
maxlength?: (string | number) | undefined;
|
|
482
483
|
minlength?: (string | number) | undefined;
|
|
483
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
484
484
|
src?: string | undefined | undefined;
|
|
485
485
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
486
486
|
}> & Readonly<{
|
|
@@ -488,8 +488,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
488
488
|
onComplete?: ((value: string) => any) | undefined;
|
|
489
489
|
}>, {
|
|
490
490
|
length: number;
|
|
491
|
-
invalid: boolean;
|
|
492
491
|
size: FieldSize;
|
|
492
|
+
invalid: boolean;
|
|
493
493
|
mode: PinInputMode;
|
|
494
494
|
autocomplete: string;
|
|
495
495
|
maskChar: string;
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
v-for="option in entry.options"
|
|
42
42
|
:key="keyOf(option.value)"
|
|
43
43
|
:value="keyOf(option.value)"
|
|
44
|
+
:data-k-option="indexOf(option)"
|
|
44
45
|
:disabled="option.disabled"
|
|
45
46
|
:selected="isSelected(option.value)"
|
|
46
47
|
>
|
|
@@ -50,6 +51,7 @@
|
|
|
50
51
|
<option
|
|
51
52
|
v-else
|
|
52
53
|
:value="keyOf(entry.value)"
|
|
54
|
+
:data-k-option="indexOf(entry)"
|
|
53
55
|
:disabled="entry.disabled"
|
|
54
56
|
:selected="isSelected(entry.value)"
|
|
55
57
|
>
|
|
@@ -89,8 +91,12 @@ const control = useFieldControl({
|
|
|
89
91
|
const flatOptions = computed(
|
|
90
92
|
() => props.options.flatMap((entry) => isGroup(entry) ? entry.options : [entry])
|
|
91
93
|
);
|
|
94
|
+
const optionIndex = computed(
|
|
95
|
+
() => new Map(flatOptions.value.map((option, index) => [option, index]))
|
|
96
|
+
);
|
|
97
|
+
const hasEmptyOption = computed(() => flatOptions.value.some((option) => option.value === ""));
|
|
92
98
|
const isEmpty = computed(
|
|
93
|
-
() => model.value === null || model.value === void 0 || model.value === ""
|
|
99
|
+
() => model.value === null || model.value === void 0 || model.value === "" && !hasEmptyOption.value
|
|
94
100
|
);
|
|
95
101
|
function isGroup(entry) {
|
|
96
102
|
return "options" in entry && Array.isArray(entry.options);
|
|
@@ -101,8 +107,21 @@ function keyOf(value) {
|
|
|
101
107
|
function isSelected(value) {
|
|
102
108
|
return !isEmpty.value && keyOf(value) === keyOf(model.value);
|
|
103
109
|
}
|
|
110
|
+
function indexOf(option) {
|
|
111
|
+
return optionIndex.value.get(option);
|
|
112
|
+
}
|
|
104
113
|
function onChange(event) {
|
|
105
|
-
const
|
|
114
|
+
const select = event.target;
|
|
115
|
+
const chosen = select.selectedOptions[0];
|
|
116
|
+
const index = chosen?.dataset.kOption;
|
|
117
|
+
if (index !== void 0) {
|
|
118
|
+
const match2 = flatOptions.value[Number(index)];
|
|
119
|
+
if (match2) {
|
|
120
|
+
model.value = match2.value;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const raw = select.value;
|
|
106
125
|
if (raw === "" && props.placeholder !== void 0) {
|
|
107
126
|
model.value = null;
|
|
108
127
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IconName } from '../../composables/useIcons';
|
|
2
2
|
import type { FieldSize } from '../core/types';
|
|
3
3
|
import type { SelectOption, SelectOptionGroup } from './types';
|
|
4
|
-
declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
|
+
declare const __VLS_export: <T extends string | number | boolean>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
5
5
|
props: import("vue").PublicProps & __VLS_PrettifyLocal<({
|
|
6
6
|
options?: (SelectOption<T> | SelectOptionGroup<T>)[];
|
|
7
7
|
placeholder?: string;
|
|
@@ -13,9 +13,9 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
|
|
|
13
13
|
class?: unknown;
|
|
14
14
|
style?: unknown;
|
|
15
15
|
} & {
|
|
16
|
-
modelValue?: T |
|
|
16
|
+
modelValue?: T | null | undefined;
|
|
17
17
|
}) & {
|
|
18
|
-
"onUpdate:modelValue"?: ((value:
|
|
18
|
+
"onUpdate:modelValue"?: ((value: T | null | undefined) => any) | undefined;
|
|
19
19
|
} & Partial<import("vue").SelectHTMLAttributes & import("vue").ReservedProps>> & (typeof globalThis extends {
|
|
20
20
|
__VLS_PROPS_FALLBACK: infer P;
|
|
21
21
|
} ? P : {});
|
|
@@ -27,7 +27,7 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
|
|
|
27
27
|
slots: {
|
|
28
28
|
default?: (props: {}) => any;
|
|
29
29
|
};
|
|
30
|
-
emit: (event: "update:modelValue", value:
|
|
30
|
+
emit: (event: "update:modelValue", value: T | null | undefined) => void;
|
|
31
31
|
}>) => import("vue").VNode & {
|
|
32
32
|
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
33
33
|
};
|
|
@@ -224,13 +224,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
224
224
|
popovertarget?: string | undefined;
|
|
225
225
|
popovertargetaction?: import("../..").PopoverTargetAction | undefined;
|
|
226
226
|
autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
|
|
227
|
+
maxlength?: (string | number) | undefined;
|
|
228
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
227
229
|
accept?: string | undefined | undefined;
|
|
228
230
|
alt?: string | undefined | undefined;
|
|
229
231
|
capture?: boolean | "user" | "environment" | undefined | undefined;
|
|
230
232
|
crossorigin?: string | undefined | undefined;
|
|
231
|
-
maxlength?: (string | number) | undefined;
|
|
232
233
|
minlength?: (string | number) | undefined;
|
|
233
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
234
234
|
src?: string | undefined | undefined;
|
|
235
235
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
236
236
|
}, {
|
|
@@ -463,23 +463,23 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
463
463
|
popovertarget?: string | undefined;
|
|
464
464
|
popovertargetaction?: import("../..").PopoverTargetAction | undefined;
|
|
465
465
|
autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
|
|
466
|
+
maxlength?: (string | number) | undefined;
|
|
467
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
466
468
|
accept?: string | undefined | undefined;
|
|
467
469
|
alt?: string | undefined | undefined;
|
|
468
470
|
capture?: boolean | "user" | "environment" | undefined | undefined;
|
|
469
471
|
crossorigin?: string | undefined | undefined;
|
|
470
|
-
maxlength?: (string | number) | undefined;
|
|
471
472
|
minlength?: (string | number) | undefined;
|
|
472
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
473
473
|
src?: string | undefined | undefined;
|
|
474
474
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
475
475
|
}> & Readonly<{
|
|
476
476
|
onChange?: ((value: number) => any) | undefined;
|
|
477
477
|
"onUpdate:modelValue"?: ((value: number | null | undefined) => any) | undefined;
|
|
478
478
|
}>, {
|
|
479
|
+
size: FieldSize;
|
|
479
480
|
min: number;
|
|
480
481
|
max: number;
|
|
481
482
|
invalid: boolean;
|
|
482
|
-
size: FieldSize;
|
|
483
483
|
format: (value: number) => string;
|
|
484
484
|
step: number;
|
|
485
485
|
bubble: SliderBubble;
|
|
@@ -448,8 +448,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
448
448
|
}> & Readonly<{
|
|
449
449
|
"onUpdate:modelValue"?: ((value: boolean | null | undefined) => any) | undefined;
|
|
450
450
|
}>, {
|
|
451
|
-
invalid: boolean;
|
|
452
451
|
size: FieldSize;
|
|
452
|
+
invalid: boolean;
|
|
453
453
|
labelPosition: "end" | "start";
|
|
454
454
|
nativeValue: string;
|
|
455
455
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -132,6 +132,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
132
132
|
type?: string | undefined;
|
|
133
133
|
width?: (string | number) | undefined;
|
|
134
134
|
tabindex?: (string | number) | undefined;
|
|
135
|
+
transform?: (value: string) => string;
|
|
135
136
|
'aria-activedescendant'?: string | undefined;
|
|
136
137
|
'aria-atomic'?: (boolean | "true" | "false") | undefined;
|
|
137
138
|
'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
|
|
@@ -230,16 +231,17 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
230
231
|
onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
231
232
|
onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
232
233
|
autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
|
|
234
|
+
maxlength?: (string | number) | undefined;
|
|
233
235
|
clearLabel?: string;
|
|
234
236
|
noAutofill?: boolean;
|
|
237
|
+
counter?: boolean;
|
|
235
238
|
onClear?: (() => any) | undefined;
|
|
239
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
236
240
|
accept?: string | undefined;
|
|
237
241
|
alt?: string | undefined;
|
|
238
242
|
capture?: boolean | "user" | "environment" | undefined;
|
|
239
243
|
crossorigin?: string | undefined;
|
|
240
|
-
maxlength?: (string | number) | undefined;
|
|
241
244
|
minlength?: (string | number) | undefined;
|
|
242
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
243
245
|
src?: string | undefined;
|
|
244
246
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
245
247
|
modelModifiers?: Partial<Record<"number" | "trim", true>>;
|
|
@@ -378,6 +380,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
378
380
|
type?: string | undefined;
|
|
379
381
|
width?: (string | number) | undefined;
|
|
380
382
|
tabindex?: (string | number) | undefined;
|
|
383
|
+
transform?: (value: string) => string;
|
|
381
384
|
'aria-activedescendant'?: string | undefined;
|
|
382
385
|
'aria-atomic'?: (boolean | "true" | "false") | undefined;
|
|
383
386
|
'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
|
|
@@ -476,24 +479,25 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
476
479
|
onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
477
480
|
onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
478
481
|
autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
|
|
482
|
+
maxlength?: (string | number) | undefined;
|
|
479
483
|
clearLabel?: string;
|
|
480
484
|
noAutofill?: boolean;
|
|
485
|
+
counter?: boolean;
|
|
481
486
|
onClear?: (() => any) | undefined;
|
|
487
|
+
multiple?: (boolean | "true" | "false") | undefined;
|
|
482
488
|
accept?: string | undefined;
|
|
483
489
|
alt?: string | undefined;
|
|
484
490
|
capture?: boolean | "user" | "environment" | undefined;
|
|
485
491
|
crossorigin?: string | undefined;
|
|
486
|
-
maxlength?: (string | number) | undefined;
|
|
487
492
|
minlength?: (string | number) | undefined;
|
|
488
|
-
multiple?: (boolean | "true" | "false") | undefined;
|
|
489
493
|
src?: string | undefined;
|
|
490
494
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
491
495
|
modelModifiers?: Partial<Record<"number" | "trim", true>>;
|
|
492
496
|
}> & Readonly<{
|
|
493
497
|
"onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
|
|
494
498
|
}>, {
|
|
495
|
-
invalid: boolean;
|
|
496
499
|
size: FieldSize;
|
|
500
|
+
invalid: boolean;
|
|
497
501
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
498
502
|
declare const _default: typeof __VLS_export;
|
|
499
503
|
export default _default;
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
'is-collapsed': collapsed,
|
|
8
8
|
'is-nav-open': open,
|
|
9
9
|
'is-mobile': mobile,
|
|
10
|
-
'is-named': viewTransition
|
|
10
|
+
'is-named': viewTransition,
|
|
11
|
+
'is-fill': fill
|
|
11
12
|
}"
|
|
12
13
|
@keydown.esc="onEscape"
|
|
13
14
|
>
|
|
@@ -61,7 +62,7 @@
|
|
|
61
62
|
<slot name="topbar" :open-nav="openNav" :mobile="mobile" :collapsed="collapsed" />
|
|
62
63
|
</header>
|
|
63
64
|
<main :id="mainId" class="k-shell-main" tabindex="-1">
|
|
64
|
-
<div class="k-shell-content" :class="{ 'is-fluid': fluid }">
|
|
65
|
+
<div class="k-shell-content" :class="{ 'is-fluid': fluid, 'is-fill': fill }">
|
|
65
66
|
<slot />
|
|
66
67
|
</div>
|
|
67
68
|
</main>
|
|
@@ -96,6 +97,7 @@ const props = defineProps({
|
|
|
96
97
|
closeLabel: { type: String, required: false },
|
|
97
98
|
skipLabel: { type: String, required: false },
|
|
98
99
|
fluid: { type: Boolean, required: false },
|
|
100
|
+
fill: { type: Boolean, required: false },
|
|
99
101
|
topbar: { type: Boolean, required: false, default: void 0 },
|
|
100
102
|
storageKey: { type: [String, Boolean], required: false },
|
|
101
103
|
shortcut: { type: [String, Boolean], required: false, default: false },
|
|
@@ -32,6 +32,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
32
32
|
closeLabel?: string;
|
|
33
33
|
skipLabel?: string;
|
|
34
34
|
fluid?: boolean;
|
|
35
|
+
fill?: boolean;
|
|
35
36
|
topbar?: boolean;
|
|
36
37
|
storageKey?: string | false;
|
|
37
38
|
shortcut?: string | false;
|
|
@@ -245,6 +246,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
245
246
|
closeLabel?: string;
|
|
246
247
|
skipLabel?: string;
|
|
247
248
|
fluid?: boolean;
|
|
249
|
+
fill?: boolean;
|
|
248
250
|
topbar?: boolean;
|
|
249
251
|
storageKey?: string | false;
|
|
250
252
|
shortcut?: string | false;
|
|
@@ -463,8 +463,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
463
463
|
selected: boolean;
|
|
464
464
|
variant: CardVariant;
|
|
465
465
|
as: string;
|
|
466
|
-
level: HeadingLevel;
|
|
467
466
|
padding: CardPadding;
|
|
467
|
+
level: HeadingLevel;
|
|
468
468
|
animated: boolean;
|
|
469
469
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
470
470
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -406,8 +406,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
406
406
|
}> & Readonly<{
|
|
407
407
|
onCopy?: ((success: boolean) => any) | undefined;
|
|
408
408
|
}>, {
|
|
409
|
-
tone: Tone;
|
|
410
409
|
size: ButtonSize;
|
|
410
|
+
tone: Tone;
|
|
411
411
|
variant: ButtonVariant;
|
|
412
412
|
resetAfter: number;
|
|
413
413
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div
|
|
3
|
+
class="k-page-header"
|
|
4
|
+
:class="[
|
|
5
|
+
`k-page-header-align-${align}`,
|
|
6
|
+
{ 'is-bordered': bordered, 'is-truncated': truncate }
|
|
7
|
+
]"
|
|
8
|
+
>
|
|
3
9
|
<div class="k-page-header-heading">
|
|
4
10
|
<slot name="breadcrumbs">
|
|
5
11
|
<Breadcrumbs
|
|
@@ -18,7 +24,11 @@
|
|
|
18
24
|
</span>
|
|
19
25
|
<div class="k-page-header-text">
|
|
20
26
|
<div class="k-page-header-title-line">
|
|
21
|
-
<component
|
|
27
|
+
<component
|
|
28
|
+
:is="`h${level}`"
|
|
29
|
+
class="k-page-header-title"
|
|
30
|
+
:title="truncate ? title : void 0"
|
|
31
|
+
>
|
|
22
32
|
<slot name="title">{{ title }}</slot>
|
|
23
33
|
</component>
|
|
24
34
|
<slot name="badge" />
|
|
@@ -48,6 +58,8 @@ defineProps({
|
|
|
48
58
|
breadcrumbs: { type: Array, required: false },
|
|
49
59
|
breadcrumbsAncestors: { type: Boolean, required: false },
|
|
50
60
|
level: { type: Number, required: false, default: 1 },
|
|
51
|
-
bordered: { type: Boolean, required: false }
|
|
61
|
+
bordered: { type: Boolean, required: false },
|
|
62
|
+
align: { type: String, required: false, default: "end" },
|
|
63
|
+
truncate: { type: Boolean, required: false }
|
|
52
64
|
});
|
|
53
65
|
</script>
|
|
@@ -30,6 +30,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
30
30
|
breadcrumbsAncestors?: boolean;
|
|
31
31
|
level?: HeadingLevel;
|
|
32
32
|
bordered?: boolean;
|
|
33
|
+
align?: "start" | "center" | "end";
|
|
34
|
+
truncate?: boolean;
|
|
33
35
|
innerHTML?: string | undefined | undefined;
|
|
34
36
|
class?: import("vue").ClassValue;
|
|
35
37
|
style?: import("vue").StyleValue;
|
|
@@ -229,6 +231,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
229
231
|
breadcrumbsAncestors?: boolean;
|
|
230
232
|
level?: HeadingLevel;
|
|
231
233
|
bordered?: boolean;
|
|
234
|
+
align?: "start" | "center" | "end";
|
|
235
|
+
truncate?: boolean;
|
|
232
236
|
innerHTML?: string | undefined | undefined;
|
|
233
237
|
class?: import("vue").ClassValue;
|
|
234
238
|
style?: import("vue").StyleValue;
|
|
@@ -421,6 +425,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
421
425
|
ref_for?: boolean | undefined | undefined;
|
|
422
426
|
ref_key?: string | undefined | undefined;
|
|
423
427
|
}> & Readonly<{}>, {
|
|
428
|
+
align: "center" | "end" | "start";
|
|
424
429
|
level: HeadingLevel;
|
|
425
430
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
426
431
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
class="k-separator"
|
|
4
|
-
:class="[`k-separator-${orientation}`, { 'has-label':
|
|
4
|
+
:class="[`k-separator-${orientation}`, { 'has-label': hasContent }]"
|
|
5
5
|
:role="plain ? 'none' : 'separator'"
|
|
6
6
|
:aria-orientation="!plain && orientation === 'vertical' ? 'vertical' : void 0"
|
|
7
7
|
>
|
|
8
|
-
<span v-if="
|
|
9
|
-
<
|
|
8
|
+
<span v-if="hasText" class="k-separator-text">
|
|
9
|
+
<span v-if="label || $slots.default" class="k-separator-label">
|
|
10
|
+
<slot>{{ label }}</slot>
|
|
11
|
+
</span>
|
|
12
|
+
<span v-if="description || $slots.description" class="k-separator-description">
|
|
13
|
+
<slot name="description">{{ description }}</slot>
|
|
14
|
+
</span>
|
|
15
|
+
</span>
|
|
16
|
+
<span v-if="$slots.actions" class="k-separator-actions">
|
|
17
|
+
<slot name="actions" />
|
|
10
18
|
</span>
|
|
11
19
|
</div>
|
|
12
20
|
</template>
|
|
@@ -16,8 +24,13 @@ import { computed, useSlots } from "vue";
|
|
|
16
24
|
const props = defineProps({
|
|
17
25
|
orientation: { type: String, required: false, default: "horizontal" },
|
|
18
26
|
label: { type: String, required: false },
|
|
27
|
+
description: { type: String, required: false },
|
|
19
28
|
decorative: { type: Boolean, required: false }
|
|
20
29
|
});
|
|
21
30
|
const slots = useSlots();
|
|
22
|
-
const
|
|
31
|
+
const hasText = computed(
|
|
32
|
+
() => Boolean(props.label || slots.default || props.description || slots.description)
|
|
33
|
+
);
|
|
34
|
+
const hasContent = computed(() => Boolean(hasText.value || slots.actions));
|
|
35
|
+
const plain = computed(() => props.decorative || hasContent.value);
|
|
23
36
|
</script>
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
declare var __VLS_1: {};
|
|
1
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
|
|
2
2
|
type __VLS_Slots = {} & {
|
|
3
3
|
default?: (props: typeof __VLS_1) => any;
|
|
4
|
+
} & {
|
|
5
|
+
description?: (props: typeof __VLS_3) => any;
|
|
6
|
+
} & {
|
|
7
|
+
actions?: (props: typeof __VLS_5) => any;
|
|
4
8
|
};
|
|
5
9
|
declare const __VLS_base: import("vue").DefineComponent<{
|
|
6
10
|
orientation?: "horizontal" | "vertical";
|
|
7
11
|
label?: string;
|
|
12
|
+
description?: string;
|
|
8
13
|
decorative?: boolean;
|
|
9
14
|
innerHTML?: string | undefined | undefined;
|
|
10
15
|
class?: import("vue").ClassValue;
|
|
@@ -201,6 +206,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
201
206
|
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
|
|
202
207
|
orientation?: "horizontal" | "vertical";
|
|
203
208
|
label?: string;
|
|
209
|
+
description?: string;
|
|
204
210
|
decorative?: boolean;
|
|
205
211
|
innerHTML?: string | undefined | undefined;
|
|
206
212
|
class?: import("vue").ClassValue;
|
|
@@ -41,6 +41,14 @@
|
|
|
41
41
|
>
|
|
42
42
|
<span v-if="item.badgeLabel" class="k-visually-hidden">{{ item.badgeLabel }}</span>
|
|
43
43
|
</template>
|
|
44
|
+
<template v-if="item.dot">
|
|
45
|
+
<span
|
|
46
|
+
class="k-tab-dot"
|
|
47
|
+
:class="`k-tab-dot-${item.dotTone ?? 'danger'}`"
|
|
48
|
+
aria-hidden="true"
|
|
49
|
+
/>
|
|
50
|
+
<span class="k-visually-hidden">{{ item.dotLabel ?? t("tabs.dot") }}</span>
|
|
51
|
+
</template>
|
|
44
52
|
</button>
|
|
45
53
|
<span class="k-tabs-indicator" aria-hidden="true" />
|
|
46
54
|
</div>
|
|
@@ -76,6 +84,7 @@
|
|
|
76
84
|
import { computed, nextTick, onMounted, ref, useId, useTemplateRef, warn, watch } from "vue";
|
|
77
85
|
import { useResizeObserver } from "../../internal/core/resize";
|
|
78
86
|
import Icon from "../core/Icon.vue";
|
|
87
|
+
import { useLocale } from "../../composables/useLocale";
|
|
79
88
|
import { rovingIndex } from "../../internal/core/roving";
|
|
80
89
|
const props = defineProps({
|
|
81
90
|
items: { type: Array, required: true },
|
|
@@ -89,6 +98,7 @@ const props = defineProps({
|
|
|
89
98
|
inset: { type: Boolean, required: false },
|
|
90
99
|
panelFocusable: { type: Boolean, required: false, default: true }
|
|
91
100
|
});
|
|
101
|
+
const { t } = useLocale();
|
|
92
102
|
const slots = defineSlots();
|
|
93
103
|
const model = defineModel({ type: [String, Number] });
|
|
94
104
|
const baseId = useId();
|