nuance-ui 0.2.5 → 0.2.6
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/LICENSE.md +9 -9
- package/README.md +75 -75
- package/dist/module.json +1 -1
- package/dist/runtime/components/action-icon/action-icon-section.vue +3 -3
- package/dist/runtime/components/action-icon/action-icon.vue +22 -22
- package/dist/runtime/components/alert.vue +128 -128
- package/dist/runtime/components/app-shell/app-shell-aside.vue +30 -30
- package/dist/runtime/components/app-shell/app-shell-footer.vue +29 -29
- package/dist/runtime/components/app-shell/app-shell-header.vue +30 -30
- package/dist/runtime/components/app-shell/app-shell-navbar.vue +34 -34
- package/dist/runtime/components/app-shell/app-shell-section.vue +10 -10
- package/dist/runtime/components/app-shell/app-shell.vue +34 -34
- package/dist/runtime/components/avatar/avatar-group.vue +3 -3
- package/dist/runtime/components/avatar/avatar.vue +1 -1
- package/dist/runtime/components/background-image.vue +18 -18
- package/dist/runtime/components/badge.vue +160 -159
- package/dist/runtime/components/breadcrumbs.vue +78 -78
- package/dist/runtime/components/button/button-group.vue +3 -3
- package/dist/runtime/components/button/button.vue +37 -37
- package/dist/runtime/components/button/unstyled-button.vue +23 -23
- package/dist/runtime/components/calendar/calendar.vue +60 -60
- package/dist/runtime/components/calendar/ui/core/calendar-cell.vue +115 -115
- package/dist/runtime/components/calendar/ui/core/calendar-header.vue +95 -95
- package/dist/runtime/components/calendar/ui/core/calendar-root.vue +3 -3
- package/dist/runtime/components/calendar/ui/levels/calendar-decade.vue +40 -40
- package/dist/runtime/components/calendar/ui/levels/calendar-month.vue +77 -77
- package/dist/runtime/components/calendar/ui/levels/calendar-year.vue +40 -40
- package/dist/runtime/components/card/card-section.vue +3 -3
- package/dist/runtime/components/card/card.vue +3 -3
- package/dist/runtime/components/checkbox/checkbox-card.vue +36 -36
- package/dist/runtime/components/checkbox/checkbox-group.vue +16 -16
- package/dist/runtime/components/checkbox/checkbox-indicator.vue +116 -116
- package/dist/runtime/components/checkbox/checkbox.vue +140 -140
- package/dist/runtime/components/chip/chip-group.vue +2 -2
- package/dist/runtime/components/chip/chip.vue +200 -200
- package/dist/runtime/components/combobox/combobox-dropdown.vue +1 -1
- package/dist/runtime/components/combobox/combobox-empty.vue +3 -3
- package/dist/runtime/components/combobox/combobox-group.d.vue.ts +5 -5
- package/dist/runtime/components/combobox/combobox-group.vue +2 -2
- package/dist/runtime/components/combobox/combobox-group.vue.d.ts +5 -5
- package/dist/runtime/components/combobox/combobox-option-list.vue +3 -3
- package/dist/runtime/components/combobox/combobox-option.vue +6 -11
- package/dist/runtime/components/combobox/combobox-options-dropdown.d.vue.ts +6 -8
- package/dist/runtime/components/combobox/combobox-options-dropdown.vue +6 -7
- package/dist/runtime/components/combobox/combobox-options-dropdown.vue.d.ts +6 -8
- package/dist/runtime/components/combobox/combobox-root.d.vue.ts +0 -2
- package/dist/runtime/components/combobox/combobox-root.vue +4 -6
- package/dist/runtime/components/combobox/combobox-root.vue.d.ts +0 -2
- package/dist/runtime/components/combobox/combobox-target.vue +3 -3
- package/dist/runtime/components/combobox/combobox.module.css +1 -1
- package/dist/runtime/components/combobox/lib/use-combobox/use-combobox.js +8 -1
- package/dist/runtime/components/combobox/lib/use-combobox-data/get-parsed-combobox-data.d.ts +2 -2
- package/dist/runtime/components/combobox/lib/use-combobox-data/get-parsed-combobox-data.js +2 -1
- package/dist/runtime/components/combobox/lib/use-combobox-data/use-combobox-data.d.ts +4 -4
- package/dist/runtime/components/combobox/lib/use-combobox-data/use-combobox-data.js +3 -2
- package/dist/runtime/components/combobox/lib/utils/default-option-filter.d.ts +3 -3
- package/dist/runtime/components/combobox/lib/utils/default-option-filter.js +1 -1
- package/dist/runtime/components/combobox/lib/utils/index.d.ts +2 -3
- package/dist/runtime/components/combobox/lib/utils/index.js +2 -2
- package/dist/runtime/components/combobox/lib/utils/is-empty-combobox-data.d.ts +2 -2
- package/dist/runtime/components/combobox/lib/utils/is-guards.d.ts +2 -0
- package/dist/runtime/components/combobox/types/item.d.ts +3 -8
- package/dist/runtime/components/container.vue +8 -8
- package/dist/runtime/components/date-time-picker.vue +65 -65
- package/dist/runtime/components/dialog/ui/dialog-close-button.vue +11 -11
- package/dist/runtime/components/dialog/ui/dialog-header.vue +5 -5
- package/dist/runtime/components/dialog/ui/dialog-root.vue +20 -20
- package/dist/runtime/components/dialog/ui/dialog-title.vue +5 -5
- package/dist/runtime/components/drawer/drawer-close-button.vue +3 -3
- package/dist/runtime/components/drawer/drawer-header.vue +3 -3
- package/dist/runtime/components/drawer/drawer-root.vue +15 -15
- package/dist/runtime/components/drawer/drawer-title.vue +3 -3
- package/dist/runtime/components/files/file-upload-button.vue +12 -12
- package/dist/runtime/components/files/file-upload-icon.vue +1 -1
- package/dist/runtime/components/input/date-picker.vue +85 -85
- package/dist/runtime/components/input/email-input.vue +21 -21
- package/dist/runtime/components/input/number-input.vue +132 -132
- package/dist/runtime/components/input/password-input.vue +28 -28
- package/dist/runtime/components/input/text-input.vue +33 -33
- package/dist/runtime/components/input/ui/button-input.vue +64 -64
- package/dist/runtime/components/input/ui/input-base.vue +283 -283
- package/dist/runtime/components/input/ui/input-inline.vue +105 -105
- package/dist/runtime/components/input/ui/input-label.vue +4 -4
- package/dist/runtime/components/input/ui/input-wrapper.vue +54 -54
- package/dist/runtime/components/input/ui/spin-input.vue +69 -69
- package/dist/runtime/components/link/link-button.vue +16 -16
- package/dist/runtime/components/link/link.vue +10 -10
- package/dist/runtime/components/loader/_loaders/bars-loader.vue +5 -5
- package/dist/runtime/components/loader/_loaders/dots-loader.vue +5 -5
- package/dist/runtime/components/loader/_loaders/oval-loader.vue +1 -1
- package/dist/runtime/components/loader/loader.vue +1 -1
- package/dist/runtime/components/modal/modal-close-button.vue +3 -3
- package/dist/runtime/components/modal/modal-header.vue +3 -3
- package/dist/runtime/components/modal/modal-root.vue +13 -13
- package/dist/runtime/components/modal/modal-title.vue +3 -3
- package/dist/runtime/components/nav-link/nav-icon-link.vue +15 -15
- package/dist/runtime/components/nav-link/nav-link.vue +130 -130
- package/dist/runtime/components/paper.vue +33 -33
- package/dist/runtime/components/popover/popover-dropdown.vue +70 -69
- package/dist/runtime/components/popover/popover-target.vue +8 -8
- package/dist/runtime/components/popover/popover.vue +1 -1
- package/dist/runtime/components/progress/progress-label.vue +3 -3
- package/dist/runtime/components/progress/progress-root.vue +3 -3
- package/dist/runtime/components/progress/progress-section.vue +8 -8
- package/dist/runtime/components/progress/progress.vue +9 -9
- package/dist/runtime/components/renderless/renderless.vue +3 -3
- package/dist/runtime/components/roving-focus/roving-focus-item.vue +14 -14
- package/dist/runtime/components/roving-focus/roving-focus.vue +3 -3
- package/dist/runtime/components/select/select.d.vue.ts +20 -7
- package/dist/runtime/components/select/select.vue +53 -19
- package/dist/runtime/components/select/select.vue.d.ts +20 -7
- package/dist/runtime/components/table/table.d.ts +30 -30
- package/dist/runtime/components/table/ui/table-sort-icon.vue +1 -1
- package/dist/runtime/components/table/ui/table-sortable-header.vue +11 -11
- package/dist/runtime/components/table/ui/table.vue +295 -295
- package/dist/runtime/components/tabs/tabs-list.vue +10 -10
- package/dist/runtime/components/tabs/tabs-panel.vue +11 -11
- package/dist/runtime/components/tabs/tabs-root.vue +8 -8
- package/dist/runtime/components/tabs/tabs-tab.vue +20 -20
- package/dist/runtime/components/text.vue +67 -67
- package/dist/runtime/components/textarea.vue +34 -34
- package/dist/runtime/components/time-picker/time-picker.vue +230 -230
- package/dist/runtime/components/title.vue +14 -14
- package/dist/runtime/components/transition/transition.vue +3 -3
- package/dist/runtime/components/tree/_ui/tree-item.vue +129 -128
- package/dist/runtime/components/tree/_ui/tree-root.vue +21 -21
- package/dist/runtime/components/tree/tree.vue +20 -20
- package/dist/runtime/components/visually-hidden/visually-hidden-input.vue +1 -1
- package/dist/runtime/components/visually-hidden/visually-hidden.vue +9 -9
- package/dist/runtime/modals/_confirm-modal/confirm-modal.vue +31 -31
- package/dist/runtime/modals/modals-provider.vue +10 -10
- package/dist/runtime/styles/dark-theme.css +1 -1
- package/package.json +2 -2
- package/dist/runtime/components/combobox/lib/utils/is-options-group.d.ts +0 -2
- /package/dist/runtime/components/combobox/lib/utils/{is-options-group.js → is-guards.js} +0 -0
|
@@ -15,18 +15,18 @@ onBeforeUnmount(() => {
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
<template>
|
|
18
|
-
<Renderless
|
|
19
|
-
v-bind='attrs'
|
|
20
|
-
ref='item'
|
|
21
|
-
:tabindex='-1'
|
|
22
|
-
@keydown.up.prevent='isVertical && focus?.("prev", $event.currentTarget)'
|
|
23
|
-
@keydown.down.prevent='isVertical && focus?.("next", $event.currentTarget)'
|
|
24
|
-
@keydown.left.prevent='isHorizontal && focus?.("prev", $event.currentTarget)'
|
|
25
|
-
@keydown.right.prevent='isHorizontal && focus?.("next", $event.currentTarget)'
|
|
26
|
-
@keydown.home.prevent='focus?.("first")'
|
|
27
|
-
@keydown.end.prevent='focus?.("last")'
|
|
28
|
-
@click.prevent='focusElement?.($event.currentTarget)'
|
|
29
|
-
>
|
|
30
|
-
<slot />
|
|
31
|
-
</Renderless>
|
|
18
|
+
<Renderless
|
|
19
|
+
v-bind='attrs'
|
|
20
|
+
ref='item'
|
|
21
|
+
:tabindex='-1'
|
|
22
|
+
@keydown.up.prevent='isVertical && focus?.("prev", $event.currentTarget)'
|
|
23
|
+
@keydown.down.prevent='isVertical && focus?.("next", $event.currentTarget)'
|
|
24
|
+
@keydown.left.prevent='isHorizontal && focus?.("prev", $event.currentTarget)'
|
|
25
|
+
@keydown.right.prevent='isHorizontal && focus?.("next", $event.currentTarget)'
|
|
26
|
+
@keydown.home.prevent='focus?.("first")'
|
|
27
|
+
@keydown.end.prevent='focus?.("last")'
|
|
28
|
+
@click.prevent='focusElement?.($event.currentTarget)'
|
|
29
|
+
>
|
|
30
|
+
<slot />
|
|
31
|
+
</Renderless>
|
|
32
32
|
</template>
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { ComboboxData,
|
|
1
|
+
import type { ComboboxData, ComboboxItemExt } from '../combobox/index.js';
|
|
2
2
|
import type { TextInputProps } from '../input/index.js';
|
|
3
3
|
export interface SelectProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends Omit<TextInputProps, 'modelValue' | 'multiline' | 'resize' | 'is' | 'id'> {
|
|
4
|
-
|
|
4
|
+
options: ComboboxData<Value, Ext>;
|
|
5
5
|
/** Determines whether the select should be searchable @default `false` */
|
|
6
6
|
searchable?: boolean;
|
|
7
|
+
/** If set, multiple options can be selected @default `false` */
|
|
8
|
+
multiple?: boolean;
|
|
7
9
|
/** If set, the check icon is displayed near the selected option label @default `true` */
|
|
8
10
|
withCheckIcon?: boolean;
|
|
9
11
|
/** Position of the check icon relative to the option label @default `'left'` */
|
|
@@ -12,23 +14,29 @@ export interface SelectProps<Value extends string = string, Ext extends Combobox
|
|
|
12
14
|
nothingFoundMessage?: string;
|
|
13
15
|
/** If set, it becomes possible to deselect value by clicking on the selected option @default `true` */
|
|
14
16
|
allowDeselect?: boolean;
|
|
17
|
+
/** If set, the dropdown will close after an option is selected @default `!multiple` */
|
|
18
|
+
closeOnSelect?: boolean;
|
|
15
19
|
/** If set, the clear button is displayed in the right section when the component has value @default `false` */
|
|
20
|
+
/** Icon displayed in the left section by default */
|
|
21
|
+
icon?: string;
|
|
16
22
|
limit?: number;
|
|
17
|
-
/** Props passed down to the underlying `ScrollArea` component in the dropdown */
|
|
18
23
|
/** Input autocomplete attribute */
|
|
19
24
|
autoComplete?: string;
|
|
20
25
|
}
|
|
21
26
|
declare const __VLS_export: <Value extends string = string, Ext extends ComboboxItemExt = object>(__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<{
|
|
22
27
|
props: import("vue").PublicProps & __VLS_PrettifyLocal<(SelectProps<Value, Ext> & {
|
|
28
|
+
/** Dropdown opened state */
|
|
23
29
|
open?: boolean;
|
|
24
|
-
|
|
30
|
+
/** Value handler */
|
|
31
|
+
modelValue?: string | string[] | null;
|
|
32
|
+
/** Search handler */
|
|
25
33
|
search?: string;
|
|
26
34
|
}) & {
|
|
27
35
|
onSelect?: ((args_0: number) => any) | undefined;
|
|
28
36
|
onClear?: (() => any) | undefined;
|
|
29
37
|
onClose?: ((args_0: import("..").ComboboxDropdownEventSource) => any) | undefined;
|
|
30
|
-
onSubmit?: ((args_0: string, args_1: ComboboxItem) => any) | undefined;
|
|
31
|
-
"onUpdate:modelValue"?: ((value:
|
|
38
|
+
onSubmit?: ((args_0: string, args_1: import("..").ComboboxItem) => any) | undefined;
|
|
39
|
+
"onUpdate:modelValue"?: ((value: string | string[] | null) => any) | undefined;
|
|
32
40
|
onOpen?: ((args_0: import("..").ComboboxDropdownEventSource) => any) | undefined;
|
|
33
41
|
"onUpdate:search"?: ((value: string) => any) | undefined;
|
|
34
42
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
@@ -38,6 +46,11 @@ declare const __VLS_export: <Value extends string = string, Ext extends Combobox
|
|
|
38
46
|
expose: (exposed: {}) => void;
|
|
39
47
|
attrs: any;
|
|
40
48
|
slots: {
|
|
49
|
+
selection?: (props: {
|
|
50
|
+
value: string | string[] | null;
|
|
51
|
+
display: string;
|
|
52
|
+
}) => any;
|
|
53
|
+
} & {
|
|
41
54
|
label?: (props: {}) => any;
|
|
42
55
|
} & {
|
|
43
56
|
description?: (props: {}) => any;
|
|
@@ -48,7 +61,7 @@ declare const __VLS_export: <Value extends string = string, Ext extends Combobox
|
|
|
48
61
|
} & {
|
|
49
62
|
rightSection?: (props: {}) => any;
|
|
50
63
|
};
|
|
51
|
-
emit: (((evt: "select", args_0: number) => void) & ((evt: "clear") => void) & ((evt: "close", args_0: import("..").ComboboxDropdownEventSource) => void) & ((evt: "submit", args_0: string, args_1: ComboboxItem) => void) & ((evt: "open", args_0: import("..").ComboboxDropdownEventSource) => void)) & (((event: "update:modelValue", value:
|
|
64
|
+
emit: (((evt: "select", args_0: number) => void) & ((evt: "clear") => void) & ((evt: "close", args_0: import("..").ComboboxDropdownEventSource) => void) & ((evt: "submit", args_0: string, args_1: import("..").ComboboxItem) => void) & ((evt: "open", args_0: import("..").ComboboxDropdownEventSource) => void)) & (((event: "update:modelValue", value: string | string[] | null) => void) & ((event: "update:search", value: string) => void) & ((event: "update:open", value: boolean) => void));
|
|
52
65
|
}>) => import("vue").VNode & {
|
|
53
66
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
54
67
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { nextTick, watch } from "vue";
|
|
2
|
+
import { computed, nextTick, ref, watch } from "vue";
|
|
3
3
|
import { useCombobox, useComboboxData } from "../combobox";
|
|
4
4
|
import ComboboxOptionsDropdown from "../combobox/combobox-options-dropdown.vue";
|
|
5
5
|
import ComboboxRoot from "../combobox/combobox-root.vue";
|
|
@@ -7,25 +7,31 @@ import ComboboxTarget from "../combobox/combobox-target.vue";
|
|
|
7
7
|
import TextInput from "../input/text-input.vue";
|
|
8
8
|
import ButtonInput from "../input/ui/button-input.vue";
|
|
9
9
|
const {
|
|
10
|
-
data,
|
|
10
|
+
options: data,
|
|
11
11
|
disabled,
|
|
12
12
|
searchable = false,
|
|
13
|
+
multiple = false,
|
|
13
14
|
rightSectionPE = "none",
|
|
14
15
|
readonly = false,
|
|
15
16
|
allowDeselect = false,
|
|
17
|
+
closeOnSelect,
|
|
16
18
|
autoComplete = "off",
|
|
19
|
+
icon,
|
|
17
20
|
limit,
|
|
18
21
|
iconPosition,
|
|
19
22
|
nothingFoundMessage,
|
|
20
|
-
withCheckIcon,
|
|
23
|
+
withCheckIcon = true,
|
|
21
24
|
...rest
|
|
22
25
|
} = defineProps({
|
|
23
|
-
|
|
26
|
+
options: { type: Array, required: true },
|
|
24
27
|
searchable: { type: Boolean, required: false },
|
|
28
|
+
multiple: { type: Boolean, required: false },
|
|
25
29
|
withCheckIcon: { type: Boolean, required: false },
|
|
26
30
|
iconPosition: { type: String, required: false },
|
|
27
31
|
nothingFoundMessage: { type: String, required: false },
|
|
28
32
|
allowDeselect: { type: Boolean, required: false },
|
|
33
|
+
closeOnSelect: { type: Boolean, required: false },
|
|
34
|
+
icon: { type: String, required: false },
|
|
29
35
|
limit: { type: Number, required: false },
|
|
30
36
|
autoComplete: { type: String, required: false },
|
|
31
37
|
withAria: { type: Boolean, required: false },
|
|
@@ -44,7 +50,8 @@ const {
|
|
|
44
50
|
});
|
|
45
51
|
const emit = defineEmits(["clear", "select", "open", "close", "submit"]);
|
|
46
52
|
const opened = defineModel("open", { type: Boolean, ...{ default: false } });
|
|
47
|
-
const value = defineModel({ type: [
|
|
53
|
+
const value = defineModel({ type: [String, Array, null], ...{ default: null } });
|
|
54
|
+
const search = defineModel("search", { type: String, ...{ default: "" } });
|
|
48
55
|
const { parsed, options } = useComboboxData(data);
|
|
49
56
|
const store = useCombobox({
|
|
50
57
|
opened,
|
|
@@ -54,6 +61,8 @@ const store = useCombobox({
|
|
|
54
61
|
onClear: () => emit("clear"),
|
|
55
62
|
onOpenDropdown: (source) => {
|
|
56
63
|
emit("open", source);
|
|
64
|
+
if (searchable)
|
|
65
|
+
search.value = "";
|
|
57
66
|
store.updateSelectedOptionIx("active", { scrollIntoView: true });
|
|
58
67
|
},
|
|
59
68
|
onCloseDropdown: (source) => {
|
|
@@ -61,8 +70,36 @@ const store = useCombobox({
|
|
|
61
70
|
nextTick(() => store.resetSelectedOption());
|
|
62
71
|
}
|
|
63
72
|
});
|
|
64
|
-
const search = defineModel("search", { type: String, ...{ default: "" } });
|
|
65
73
|
watch(search, () => nextTick(() => store.resetSelectedOption()));
|
|
74
|
+
const display = computed(() => {
|
|
75
|
+
const v = value.value;
|
|
76
|
+
if (multiple && Array.isArray(v))
|
|
77
|
+
return v.map((val) => options.value[val]?.label ?? val).join(", ");
|
|
78
|
+
if (v && typeof v === "string")
|
|
79
|
+
return options.value[v]?.label ?? v;
|
|
80
|
+
return "";
|
|
81
|
+
});
|
|
82
|
+
const focused = ref(false);
|
|
83
|
+
const inputValue = computed({
|
|
84
|
+
get: () => searchable && focused.value ? search.value : display.value,
|
|
85
|
+
set: (val) => {
|
|
86
|
+
search.value = val;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
function onSubmit(val) {
|
|
90
|
+
const shouldClose = closeOnSelect ?? !multiple;
|
|
91
|
+
if (multiple) {
|
|
92
|
+
const current = Array.isArray(value.value) ? value.value : [];
|
|
93
|
+
value.value = current.includes(val) ? current.filter((v) => v !== val) : [...current, val];
|
|
94
|
+
search.value = "";
|
|
95
|
+
} else {
|
|
96
|
+
const nextValue = allowDeselect && value.value === val ? null : val;
|
|
97
|
+
value.value = options.value[val] ? nextValue : null;
|
|
98
|
+
search.value = "";
|
|
99
|
+
}
|
|
100
|
+
if (shouldClose)
|
|
101
|
+
store.closeDropdown();
|
|
102
|
+
}
|
|
66
103
|
</script>
|
|
67
104
|
|
|
68
105
|
<template>
|
|
@@ -72,11 +109,7 @@ watch(search, () => nextTick(() => store.resetSelectedOption()));
|
|
|
72
109
|
:store
|
|
73
110
|
@submit='(val, option) => {
|
|
74
111
|
$emit("submit", val, option);
|
|
75
|
-
|
|
76
|
-
const nextValue = optionsLockup ? optionsLockup : null;
|
|
77
|
-
value = nextValue;
|
|
78
|
-
search = nextValue?.label ?? "";
|
|
79
|
-
store.closeDropdown();
|
|
112
|
+
onSubmit(val);
|
|
80
113
|
}'
|
|
81
114
|
>
|
|
82
115
|
<ComboboxTarget :target-type='searchable ? "input" : "button"' :auto-complete>
|
|
@@ -84,18 +117,18 @@ watch(search, () => nextTick(() => store.resetSelectedOption()));
|
|
|
84
117
|
:is='searchable ? TextInput : ButtonInput'
|
|
85
118
|
:id='store.listId'
|
|
86
119
|
v-bind='{ ...rest, ...$attrs }'
|
|
87
|
-
v-model='
|
|
120
|
+
v-model='inputValue'
|
|
88
121
|
:disabled
|
|
89
122
|
:right-section-p-e
|
|
90
123
|
:readonly='readonly || !searchable'
|
|
91
124
|
:class='$style.input'
|
|
92
|
-
@
|
|
93
|
-
|
|
94
|
-
search = value?.label ?? "";
|
|
95
|
-
}'
|
|
125
|
+
@focus='focused = true'
|
|
126
|
+
@blur='focused = false'
|
|
96
127
|
@click.prevent.stop='() => searchable ? store.openDropdown() : store.toggleDropdown()'
|
|
97
128
|
>
|
|
98
|
-
|
|
129
|
+
<slot v-if='display' name='selection' :value='value' :display='display'>
|
|
130
|
+
{{ display }}
|
|
131
|
+
</slot>
|
|
99
132
|
|
|
100
133
|
<template v-if='$slots?.label' #label>
|
|
101
134
|
<slot name='label' />
|
|
@@ -107,9 +140,9 @@ watch(search, () => nextTick(() => store.resetSelectedOption()));
|
|
|
107
140
|
<slot name='error' />
|
|
108
141
|
</template>
|
|
109
142
|
|
|
110
|
-
<template v-if='$slots.leftSection ||
|
|
143
|
+
<template v-if='$slots.leftSection || icon' #leftSection>
|
|
111
144
|
<slot name='leftSection'>
|
|
112
|
-
<Icon v-if='
|
|
145
|
+
<Icon v-if='icon' :name='icon' />
|
|
113
146
|
</slot>
|
|
114
147
|
</template>
|
|
115
148
|
<template #rightSection>
|
|
@@ -121,6 +154,7 @@ watch(search, () => nextTick(() => store.resetSelectedOption()));
|
|
|
121
154
|
</ComboboxTarget>
|
|
122
155
|
<ComboboxOptionsDropdown
|
|
123
156
|
v-model='value'
|
|
157
|
+
v-model:search='search'
|
|
124
158
|
:data='parsed'
|
|
125
159
|
:limit
|
|
126
160
|
:with-check-icon
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { ComboboxData,
|
|
1
|
+
import type { ComboboxData, ComboboxItemExt } from '../combobox/index.js';
|
|
2
2
|
import type { TextInputProps } from '../input/index.js';
|
|
3
3
|
export interface SelectProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends Omit<TextInputProps, 'modelValue' | 'multiline' | 'resize' | 'is' | 'id'> {
|
|
4
|
-
|
|
4
|
+
options: ComboboxData<Value, Ext>;
|
|
5
5
|
/** Determines whether the select should be searchable @default `false` */
|
|
6
6
|
searchable?: boolean;
|
|
7
|
+
/** If set, multiple options can be selected @default `false` */
|
|
8
|
+
multiple?: boolean;
|
|
7
9
|
/** If set, the check icon is displayed near the selected option label @default `true` */
|
|
8
10
|
withCheckIcon?: boolean;
|
|
9
11
|
/** Position of the check icon relative to the option label @default `'left'` */
|
|
@@ -12,23 +14,29 @@ export interface SelectProps<Value extends string = string, Ext extends Combobox
|
|
|
12
14
|
nothingFoundMessage?: string;
|
|
13
15
|
/** If set, it becomes possible to deselect value by clicking on the selected option @default `true` */
|
|
14
16
|
allowDeselect?: boolean;
|
|
17
|
+
/** If set, the dropdown will close after an option is selected @default `!multiple` */
|
|
18
|
+
closeOnSelect?: boolean;
|
|
15
19
|
/** If set, the clear button is displayed in the right section when the component has value @default `false` */
|
|
20
|
+
/** Icon displayed in the left section by default */
|
|
21
|
+
icon?: string;
|
|
16
22
|
limit?: number;
|
|
17
|
-
/** Props passed down to the underlying `ScrollArea` component in the dropdown */
|
|
18
23
|
/** Input autocomplete attribute */
|
|
19
24
|
autoComplete?: string;
|
|
20
25
|
}
|
|
21
26
|
declare const __VLS_export: <Value extends string = string, Ext extends ComboboxItemExt = object>(__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<{
|
|
22
27
|
props: import("vue").PublicProps & __VLS_PrettifyLocal<(SelectProps<Value, Ext> & {
|
|
28
|
+
/** Dropdown opened state */
|
|
23
29
|
open?: boolean;
|
|
24
|
-
|
|
30
|
+
/** Value handler */
|
|
31
|
+
modelValue?: string | string[] | null;
|
|
32
|
+
/** Search handler */
|
|
25
33
|
search?: string;
|
|
26
34
|
}) & {
|
|
27
35
|
onSelect?: ((args_0: number) => any) | undefined;
|
|
28
36
|
onClear?: (() => any) | undefined;
|
|
29
37
|
onClose?: ((args_0: import("..").ComboboxDropdownEventSource) => any) | undefined;
|
|
30
|
-
onSubmit?: ((args_0: string, args_1: ComboboxItem) => any) | undefined;
|
|
31
|
-
"onUpdate:modelValue"?: ((value:
|
|
38
|
+
onSubmit?: ((args_0: string, args_1: import("..").ComboboxItem) => any) | undefined;
|
|
39
|
+
"onUpdate:modelValue"?: ((value: string | string[] | null) => any) | undefined;
|
|
32
40
|
onOpen?: ((args_0: import("..").ComboboxDropdownEventSource) => any) | undefined;
|
|
33
41
|
"onUpdate:search"?: ((value: string) => any) | undefined;
|
|
34
42
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
@@ -38,6 +46,11 @@ declare const __VLS_export: <Value extends string = string, Ext extends Combobox
|
|
|
38
46
|
expose: (exposed: {}) => void;
|
|
39
47
|
attrs: any;
|
|
40
48
|
slots: {
|
|
49
|
+
selection?: (props: {
|
|
50
|
+
value: string | string[] | null;
|
|
51
|
+
display: string;
|
|
52
|
+
}) => any;
|
|
53
|
+
} & {
|
|
41
54
|
label?: (props: {}) => any;
|
|
42
55
|
} & {
|
|
43
56
|
description?: (props: {}) => any;
|
|
@@ -48,7 +61,7 @@ declare const __VLS_export: <Value extends string = string, Ext extends Combobox
|
|
|
48
61
|
} & {
|
|
49
62
|
rightSection?: (props: {}) => any;
|
|
50
63
|
};
|
|
51
|
-
emit: (((evt: "select", args_0: number) => void) & ((evt: "clear") => void) & ((evt: "close", args_0: import("..").ComboboxDropdownEventSource) => void) & ((evt: "submit", args_0: string, args_1: ComboboxItem) => void) & ((evt: "open", args_0: import("..").ComboboxDropdownEventSource) => void)) & (((event: "update:modelValue", value:
|
|
64
|
+
emit: (((evt: "select", args_0: number) => void) & ((evt: "clear") => void) & ((evt: "close", args_0: import("..").ComboboxDropdownEventSource) => void) & ((evt: "submit", args_0: string, args_1: import("..").ComboboxItem) => void) & ((evt: "open", args_0: import("..").ComboboxDropdownEventSource) => void)) & (((event: "update:modelValue", value: string | string[] | null) => void) & ((event: "update:search", value: string) => void) & ((event: "update:open", value: boolean) => void));
|
|
52
65
|
}>) => import("vue").VNode & {
|
|
53
66
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
54
67
|
};
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import type { Cell, Header, RowData } from '@tanstack/vue-table'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare module '@tanstack/table-core' {
|
|
5
|
-
interface ColumnMeta<TData extends RowData, TValue> {
|
|
6
|
-
class?: {
|
|
7
|
-
th?: string | ((cell: Header<TData, TValue>) => string)
|
|
8
|
-
td?: string | ((cell: Cell<TData, TValue>) => string)
|
|
9
|
-
}
|
|
10
|
-
style?: {
|
|
11
|
-
th?: string | Record<string, string> | ((cell: Header<TData, TValue>) => string | Record<string, string>)
|
|
12
|
-
td?: string | Record<string, string> | ((cell: Cell<TData, TValue>) => string | Record<string, string>)
|
|
13
|
-
}
|
|
14
|
-
colspan?: {
|
|
15
|
-
td?: string | ((cell: Cell<TData, TValue>) => string)
|
|
16
|
-
}
|
|
17
|
-
rowspan?: {
|
|
18
|
-
td?: string | ((cell: Cell<TData, TValue>) => string)
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
interface TableMeta<TData> {
|
|
23
|
-
class?: {
|
|
24
|
-
tr?: string | ((row: Row<TData>) => string)
|
|
25
|
-
}
|
|
26
|
-
style?: {
|
|
27
|
-
tr?: string | Record<string, string> | ((row: Row<TData>) => string | Record<string, string>)
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
import type { Cell, Header, RowData } from '@tanstack/vue-table'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
declare module '@tanstack/table-core' {
|
|
5
|
+
interface ColumnMeta<TData extends RowData, TValue> {
|
|
6
|
+
class?: {
|
|
7
|
+
th?: string | ((cell: Header<TData, TValue>) => string)
|
|
8
|
+
td?: string | ((cell: Cell<TData, TValue>) => string)
|
|
9
|
+
}
|
|
10
|
+
style?: {
|
|
11
|
+
th?: string | Record<string, string> | ((cell: Header<TData, TValue>) => string | Record<string, string>)
|
|
12
|
+
td?: string | Record<string, string> | ((cell: Cell<TData, TValue>) => string | Record<string, string>)
|
|
13
|
+
}
|
|
14
|
+
colspan?: {
|
|
15
|
+
td?: string | ((cell: Cell<TData, TValue>) => string)
|
|
16
|
+
}
|
|
17
|
+
rowspan?: {
|
|
18
|
+
td?: string | ((cell: Cell<TData, TValue>) => string)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface TableMeta<TData> {
|
|
23
|
+
class?: {
|
|
24
|
+
tr?: string | ((row: Row<TData>) => string)
|
|
25
|
+
}
|
|
26
|
+
style?: {
|
|
27
|
+
tr?: string | Record<string, string> | ((row: Row<TData>) => string | Record<string, string>)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -30,15 +30,15 @@ const {
|
|
|
30
30
|
</script>
|
|
31
31
|
|
|
32
32
|
<template>
|
|
33
|
-
<Button :size :variant :color v-bind='rest'>
|
|
34
|
-
<template #leftSection>
|
|
35
|
-
<TableSortIcon :column :icons />
|
|
36
|
-
</template>
|
|
37
|
-
<slot>
|
|
38
|
-
<FlexRender :render='column.columnDef.header' />
|
|
39
|
-
</slot>
|
|
40
|
-
<template v-if='!!$slots.rightSection' #rightSection>
|
|
41
|
-
<slot name='rightSection' />
|
|
42
|
-
</template>
|
|
43
|
-
</Button>
|
|
33
|
+
<Button :size :variant :color v-bind='rest'>
|
|
34
|
+
<template #leftSection>
|
|
35
|
+
<TableSortIcon :column :icons />
|
|
36
|
+
</template>
|
|
37
|
+
<slot>
|
|
38
|
+
<FlexRender :render='column.columnDef.header' />
|
|
39
|
+
</slot>
|
|
40
|
+
<template v-if='!!$slots.rightSection' #rightSection>
|
|
41
|
+
<slot name='rightSection' />
|
|
42
|
+
</template>
|
|
43
|
+
</Button>
|
|
44
44
|
</template>
|