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.
Files changed (135) hide show
  1. package/LICENSE.md +9 -9
  2. package/README.md +75 -75
  3. package/dist/module.json +1 -1
  4. package/dist/runtime/components/action-icon/action-icon-section.vue +3 -3
  5. package/dist/runtime/components/action-icon/action-icon.vue +22 -22
  6. package/dist/runtime/components/alert.vue +128 -128
  7. package/dist/runtime/components/app-shell/app-shell-aside.vue +30 -30
  8. package/dist/runtime/components/app-shell/app-shell-footer.vue +29 -29
  9. package/dist/runtime/components/app-shell/app-shell-header.vue +30 -30
  10. package/dist/runtime/components/app-shell/app-shell-navbar.vue +34 -34
  11. package/dist/runtime/components/app-shell/app-shell-section.vue +10 -10
  12. package/dist/runtime/components/app-shell/app-shell.vue +34 -34
  13. package/dist/runtime/components/avatar/avatar-group.vue +3 -3
  14. package/dist/runtime/components/avatar/avatar.vue +1 -1
  15. package/dist/runtime/components/background-image.vue +18 -18
  16. package/dist/runtime/components/badge.vue +160 -159
  17. package/dist/runtime/components/breadcrumbs.vue +78 -78
  18. package/dist/runtime/components/button/button-group.vue +3 -3
  19. package/dist/runtime/components/button/button.vue +37 -37
  20. package/dist/runtime/components/button/unstyled-button.vue +23 -23
  21. package/dist/runtime/components/calendar/calendar.vue +60 -60
  22. package/dist/runtime/components/calendar/ui/core/calendar-cell.vue +115 -115
  23. package/dist/runtime/components/calendar/ui/core/calendar-header.vue +95 -95
  24. package/dist/runtime/components/calendar/ui/core/calendar-root.vue +3 -3
  25. package/dist/runtime/components/calendar/ui/levels/calendar-decade.vue +40 -40
  26. package/dist/runtime/components/calendar/ui/levels/calendar-month.vue +77 -77
  27. package/dist/runtime/components/calendar/ui/levels/calendar-year.vue +40 -40
  28. package/dist/runtime/components/card/card-section.vue +3 -3
  29. package/dist/runtime/components/card/card.vue +3 -3
  30. package/dist/runtime/components/checkbox/checkbox-card.vue +36 -36
  31. package/dist/runtime/components/checkbox/checkbox-group.vue +16 -16
  32. package/dist/runtime/components/checkbox/checkbox-indicator.vue +116 -116
  33. package/dist/runtime/components/checkbox/checkbox.vue +140 -140
  34. package/dist/runtime/components/chip/chip-group.vue +2 -2
  35. package/dist/runtime/components/chip/chip.vue +200 -200
  36. package/dist/runtime/components/combobox/combobox-dropdown.vue +1 -1
  37. package/dist/runtime/components/combobox/combobox-empty.vue +3 -3
  38. package/dist/runtime/components/combobox/combobox-group.d.vue.ts +5 -5
  39. package/dist/runtime/components/combobox/combobox-group.vue +2 -2
  40. package/dist/runtime/components/combobox/combobox-group.vue.d.ts +5 -5
  41. package/dist/runtime/components/combobox/combobox-option-list.vue +3 -3
  42. package/dist/runtime/components/combobox/combobox-option.vue +6 -11
  43. package/dist/runtime/components/combobox/combobox-options-dropdown.d.vue.ts +6 -8
  44. package/dist/runtime/components/combobox/combobox-options-dropdown.vue +6 -7
  45. package/dist/runtime/components/combobox/combobox-options-dropdown.vue.d.ts +6 -8
  46. package/dist/runtime/components/combobox/combobox-root.d.vue.ts +0 -2
  47. package/dist/runtime/components/combobox/combobox-root.vue +4 -6
  48. package/dist/runtime/components/combobox/combobox-root.vue.d.ts +0 -2
  49. package/dist/runtime/components/combobox/combobox-target.vue +3 -3
  50. package/dist/runtime/components/combobox/combobox.module.css +1 -1
  51. package/dist/runtime/components/combobox/lib/use-combobox/use-combobox.js +8 -1
  52. package/dist/runtime/components/combobox/lib/use-combobox-data/get-parsed-combobox-data.d.ts +2 -2
  53. package/dist/runtime/components/combobox/lib/use-combobox-data/get-parsed-combobox-data.js +2 -1
  54. package/dist/runtime/components/combobox/lib/use-combobox-data/use-combobox-data.d.ts +4 -4
  55. package/dist/runtime/components/combobox/lib/use-combobox-data/use-combobox-data.js +3 -2
  56. package/dist/runtime/components/combobox/lib/utils/default-option-filter.d.ts +3 -3
  57. package/dist/runtime/components/combobox/lib/utils/default-option-filter.js +1 -1
  58. package/dist/runtime/components/combobox/lib/utils/index.d.ts +2 -3
  59. package/dist/runtime/components/combobox/lib/utils/index.js +2 -2
  60. package/dist/runtime/components/combobox/lib/utils/is-empty-combobox-data.d.ts +2 -2
  61. package/dist/runtime/components/combobox/lib/utils/is-guards.d.ts +2 -0
  62. package/dist/runtime/components/combobox/types/item.d.ts +3 -8
  63. package/dist/runtime/components/container.vue +8 -8
  64. package/dist/runtime/components/date-time-picker.vue +65 -65
  65. package/dist/runtime/components/dialog/ui/dialog-close-button.vue +11 -11
  66. package/dist/runtime/components/dialog/ui/dialog-header.vue +5 -5
  67. package/dist/runtime/components/dialog/ui/dialog-root.vue +20 -20
  68. package/dist/runtime/components/dialog/ui/dialog-title.vue +5 -5
  69. package/dist/runtime/components/drawer/drawer-close-button.vue +3 -3
  70. package/dist/runtime/components/drawer/drawer-header.vue +3 -3
  71. package/dist/runtime/components/drawer/drawer-root.vue +15 -15
  72. package/dist/runtime/components/drawer/drawer-title.vue +3 -3
  73. package/dist/runtime/components/files/file-upload-button.vue +12 -12
  74. package/dist/runtime/components/files/file-upload-icon.vue +1 -1
  75. package/dist/runtime/components/input/date-picker.vue +85 -85
  76. package/dist/runtime/components/input/email-input.vue +21 -21
  77. package/dist/runtime/components/input/number-input.vue +132 -132
  78. package/dist/runtime/components/input/password-input.vue +28 -28
  79. package/dist/runtime/components/input/text-input.vue +33 -33
  80. package/dist/runtime/components/input/ui/button-input.vue +64 -64
  81. package/dist/runtime/components/input/ui/input-base.vue +283 -283
  82. package/dist/runtime/components/input/ui/input-inline.vue +105 -105
  83. package/dist/runtime/components/input/ui/input-label.vue +4 -4
  84. package/dist/runtime/components/input/ui/input-wrapper.vue +54 -54
  85. package/dist/runtime/components/input/ui/spin-input.vue +69 -69
  86. package/dist/runtime/components/link/link-button.vue +16 -16
  87. package/dist/runtime/components/link/link.vue +10 -10
  88. package/dist/runtime/components/loader/_loaders/bars-loader.vue +5 -5
  89. package/dist/runtime/components/loader/_loaders/dots-loader.vue +5 -5
  90. package/dist/runtime/components/loader/_loaders/oval-loader.vue +1 -1
  91. package/dist/runtime/components/loader/loader.vue +1 -1
  92. package/dist/runtime/components/modal/modal-close-button.vue +3 -3
  93. package/dist/runtime/components/modal/modal-header.vue +3 -3
  94. package/dist/runtime/components/modal/modal-root.vue +13 -13
  95. package/dist/runtime/components/modal/modal-title.vue +3 -3
  96. package/dist/runtime/components/nav-link/nav-icon-link.vue +15 -15
  97. package/dist/runtime/components/nav-link/nav-link.vue +130 -130
  98. package/dist/runtime/components/paper.vue +33 -33
  99. package/dist/runtime/components/popover/popover-dropdown.vue +70 -69
  100. package/dist/runtime/components/popover/popover-target.vue +8 -8
  101. package/dist/runtime/components/popover/popover.vue +1 -1
  102. package/dist/runtime/components/progress/progress-label.vue +3 -3
  103. package/dist/runtime/components/progress/progress-root.vue +3 -3
  104. package/dist/runtime/components/progress/progress-section.vue +8 -8
  105. package/dist/runtime/components/progress/progress.vue +9 -9
  106. package/dist/runtime/components/renderless/renderless.vue +3 -3
  107. package/dist/runtime/components/roving-focus/roving-focus-item.vue +14 -14
  108. package/dist/runtime/components/roving-focus/roving-focus.vue +3 -3
  109. package/dist/runtime/components/select/select.d.vue.ts +20 -7
  110. package/dist/runtime/components/select/select.vue +53 -19
  111. package/dist/runtime/components/select/select.vue.d.ts +20 -7
  112. package/dist/runtime/components/table/table.d.ts +30 -30
  113. package/dist/runtime/components/table/ui/table-sort-icon.vue +1 -1
  114. package/dist/runtime/components/table/ui/table-sortable-header.vue +11 -11
  115. package/dist/runtime/components/table/ui/table.vue +295 -295
  116. package/dist/runtime/components/tabs/tabs-list.vue +10 -10
  117. package/dist/runtime/components/tabs/tabs-panel.vue +11 -11
  118. package/dist/runtime/components/tabs/tabs-root.vue +8 -8
  119. package/dist/runtime/components/tabs/tabs-tab.vue +20 -20
  120. package/dist/runtime/components/text.vue +67 -67
  121. package/dist/runtime/components/textarea.vue +34 -34
  122. package/dist/runtime/components/time-picker/time-picker.vue +230 -230
  123. package/dist/runtime/components/title.vue +14 -14
  124. package/dist/runtime/components/transition/transition.vue +3 -3
  125. package/dist/runtime/components/tree/_ui/tree-item.vue +129 -128
  126. package/dist/runtime/components/tree/_ui/tree-root.vue +21 -21
  127. package/dist/runtime/components/tree/tree.vue +20 -20
  128. package/dist/runtime/components/visually-hidden/visually-hidden-input.vue +1 -1
  129. package/dist/runtime/components/visually-hidden/visually-hidden.vue +9 -9
  130. package/dist/runtime/modals/_confirm-modal/confirm-modal.vue +31 -31
  131. package/dist/runtime/modals/modals-provider.vue +10 -10
  132. package/dist/runtime/styles/dark-theme.css +1 -1
  133. package/package.json +2 -2
  134. package/dist/runtime/components/combobox/lib/utils/is-options-group.d.ts +0 -2
  135. /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>
@@ -17,7 +17,7 @@ onMounted(() => nextTick(() => init()));
17
17
  </script>
18
18
 
19
19
  <template>
20
- <Renderless ref='list'>
21
- <slot />
22
- </Renderless>
20
+ <Renderless ref='list'>
21
+ <slot />
22
+ </Renderless>
23
23
  </template>
@@ -1,9 +1,11 @@
1
- import type { ComboboxData, ComboboxItem, ComboboxItemExt } from '../combobox/index.js';
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
- data: ComboboxData<Value, Ext>;
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
- modelValue?: ComboboxItem<Value, Ext> | null;
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: ComboboxItem<Value, Ext> | null) => any) | undefined;
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: ComboboxItem<Value, Ext> | null) => void) & ((event: "update:search", value: string) => void) & ((event: "update:open", value: boolean) => void));
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
- data: { type: Array, required: true },
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: [Object, null], ...{ default: null } });
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
- const optionsLockup = allowDeselect ? options[val]?.value === value?.value ? null : options[val] : options[val];
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='search'
120
+ v-model='inputValue'
88
121
  :disabled
89
122
  :right-section-p-e
90
123
  :readonly='readonly || !searchable'
91
124
  :class='$style.input'
92
- @blur='() => {
93
- searchable && store.closeDropdown();
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
- {{ value?.label ?? value?.value ?? null }}
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 || value?.icon' #leftSection>
143
+ <template v-if='$slots.leftSection || icon' #leftSection>
111
144
  <slot name='leftSection'>
112
- <Icon v-if='value?.icon' :name='value?.icon' />
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, ComboboxItem, ComboboxItemExt } from '../combobox/index.js';
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
- data: ComboboxData<Value, Ext>;
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
- modelValue?: ComboboxItem<Value, Ext> | null;
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: ComboboxItem<Value, Ext> | null) => any) | undefined;
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: ComboboxItem<Value, Ext> | null) => void) & ((event: "update:search", value: string) => void) & ((event: "update:open", value: boolean) => void));
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
+ }
@@ -14,5 +14,5 @@ const name = computed(() => column.getIsSorted() ? column.getIsSorted() === "asc
14
14
  </script>
15
15
 
16
16
  <template>
17
- <Icon :name />
17
+ <Icon :name />
18
18
  </template>
@@ -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>