nuance-ui 0.2.8 → 0.2.9

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 (96) 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-group.vue +3 -3
  5. package/dist/runtime/components/action-icon/action-icon.vue +23 -23
  6. package/dist/runtime/components/app-shell/app-shell-aside.vue +30 -30
  7. package/dist/runtime/components/app-shell/app-shell-footer.vue +29 -29
  8. package/dist/runtime/components/app-shell/app-shell-header.vue +30 -30
  9. package/dist/runtime/components/app-shell/app-shell-main.vue +18 -18
  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/box.vue +3 -3
  14. package/dist/runtime/components/breadcrumbs.vue +78 -78
  15. package/dist/runtime/components/button/button.vue +40 -40
  16. package/dist/runtime/components/button/unstyled-button.vue +23 -23
  17. package/dist/runtime/components/calendar/calendar.vue +60 -60
  18. package/dist/runtime/components/calendar/ui/core/calendar-header.vue +95 -95
  19. package/dist/runtime/components/calendar/ui/core/calendar-root.vue +3 -3
  20. package/dist/runtime/components/calendar/ui/levels/calendar-decade.vue +40 -40
  21. package/dist/runtime/components/calendar/ui/levels/calendar-month.vue +77 -77
  22. package/dist/runtime/components/calendar/ui/levels/calendar-year.vue +40 -40
  23. package/dist/runtime/components/card/card-section.vue +3 -3
  24. package/dist/runtime/components/card/card.vue +3 -3
  25. package/dist/runtime/components/checkbox/checkbox-card.vue +37 -37
  26. package/dist/runtime/components/checkbox/checkbox-indicator.vue +117 -117
  27. package/dist/runtime/components/checkbox/checkbox.vue +139 -139
  28. package/dist/runtime/components/chip/chip-group.vue +2 -2
  29. package/dist/runtime/components/chip/chip.vue +200 -200
  30. package/dist/runtime/components/combobox/combobox-dropdown.vue +14 -14
  31. package/dist/runtime/components/combobox/combobox-empty.vue +3 -3
  32. package/dist/runtime/components/combobox/combobox-group.vue +21 -21
  33. package/dist/runtime/components/combobox/combobox-option-list.vue +3 -3
  34. package/dist/runtime/components/combobox/combobox-option.vue +22 -22
  35. package/dist/runtime/components/combobox/combobox-options-dropdown.vue +29 -29
  36. package/dist/runtime/components/combobox/combobox-root.vue +3 -3
  37. package/dist/runtime/components/combobox/combobox-target.vue +3 -3
  38. package/dist/runtime/components/container.vue +8 -8
  39. package/dist/runtime/components/date-time-picker.d.vue.ts +3 -3
  40. package/dist/runtime/components/date-time-picker.vue +66 -66
  41. package/dist/runtime/components/date-time-picker.vue.d.ts +3 -3
  42. package/dist/runtime/components/dialog/ui/dialog-close-button.vue +11 -11
  43. package/dist/runtime/components/dialog/ui/dialog-header.vue +5 -5
  44. package/dist/runtime/components/dialog/ui/dialog-title.vue +5 -5
  45. package/dist/runtime/components/drawer/drawer-close-button.vue +3 -3
  46. package/dist/runtime/components/drawer/drawer-header.vue +3 -3
  47. package/dist/runtime/components/drawer/drawer-root.vue +15 -15
  48. package/dist/runtime/components/drawer/drawer-title.vue +3 -3
  49. package/dist/runtime/components/files/file-upload-button.vue +12 -12
  50. package/dist/runtime/components/files/file-upload-icon.vue +1 -1
  51. package/dist/runtime/components/input/date-picker.vue +85 -85
  52. package/dist/runtime/components/input/email-input.vue +19 -19
  53. package/dist/runtime/components/input/number-input.vue +134 -134
  54. package/dist/runtime/components/input/password-input.vue +28 -28
  55. package/dist/runtime/components/input/text-input.vue +35 -35
  56. package/dist/runtime/components/input/ui/input-inline.vue +105 -105
  57. package/dist/runtime/components/input/ui/input-wrapper.vue +54 -54
  58. package/dist/runtime/components/link/link-button.vue +16 -16
  59. package/dist/runtime/components/link/link.vue +10 -10
  60. package/dist/runtime/components/loader/_loaders/bars-loader.vue +5 -5
  61. package/dist/runtime/components/loader/_loaders/dots-loader.vue +5 -5
  62. package/dist/runtime/components/loader/_loaders/oval-loader.vue +1 -1
  63. package/dist/runtime/components/modal/modal-close-button.vue +3 -3
  64. package/dist/runtime/components/modal/modal-header.vue +3 -3
  65. package/dist/runtime/components/modal/modal-root.vue +13 -13
  66. package/dist/runtime/components/modal/modal-title.vue +3 -3
  67. package/dist/runtime/components/nav-link/nav-icon-link.vue +15 -15
  68. package/dist/runtime/components/nav-link/nav-link.vue +132 -132
  69. package/dist/runtime/components/paper.vue +33 -33
  70. package/dist/runtime/components/popover/popover-dropdown.vue +69 -70
  71. package/dist/runtime/components/popover/popover-target.vue +8 -8
  72. package/dist/runtime/components/popover/popover.vue +1 -1
  73. package/dist/runtime/components/progress/progress-label.vue +3 -3
  74. package/dist/runtime/components/progress/progress-root.vue +3 -3
  75. package/dist/runtime/components/progress/progress-section.vue +8 -8
  76. package/dist/runtime/components/progress/progress.vue +9 -9
  77. package/dist/runtime/components/renderless/renderless.vue +3 -3
  78. package/dist/runtime/components/roving-focus/roving-focus-item.vue +14 -14
  79. package/dist/runtime/components/select.vue +63 -63
  80. package/dist/runtime/components/switch/switch-group.vue +16 -16
  81. package/dist/runtime/components/table/table.d.ts +30 -30
  82. package/dist/runtime/components/table/ui/table-sortable-header.vue +11 -11
  83. package/dist/runtime/components/tabs/tabs-list.vue +10 -10
  84. package/dist/runtime/components/tabs/tabs-panel.vue +11 -11
  85. package/dist/runtime/components/tabs/tabs-root.vue +8 -8
  86. package/dist/runtime/components/tabs/tabs-tab.vue +22 -22
  87. package/dist/runtime/components/text.vue +67 -67
  88. package/dist/runtime/components/textarea.vue +36 -36
  89. package/dist/runtime/components/title.vue +14 -14
  90. package/dist/runtime/components/transition.vue +3 -3
  91. package/dist/runtime/components/tree/_ui/tree-item.vue +128 -129
  92. package/dist/runtime/components/tree/_ui/tree-root.vue +21 -21
  93. package/dist/runtime/components/visually-hidden/visually-hidden-input.vue +1 -1
  94. package/dist/runtime/components/visually-hidden/visually-hidden.vue +9 -9
  95. package/dist/runtime/styles/dark-theme.css +1 -1
  96. package/package.json +1 -1
@@ -56,8 +56,8 @@ const style = computed(() => useStyleResolver((theme) => {
56
56
  </script>
57
57
 
58
58
  <template>
59
- <Box :style :class='[$style.root, $attrs?.style]'>
60
- <input
59
+ <Box :style :class='[$style.root, $attrs?.style]'>
60
+ <input
61
61
  v-bind='{
62
62
  ...$attrs,
63
63
  class: $style.input,
@@ -66,205 +66,205 @@ const style = computed(() => useStyleResolver((theme) => {
66
66
  type,
67
67
  disabled,
68
68
  id
69
- }'
70
- @click='onUpdate()'
71
- >
72
- <Box is='label' :for='id' :class='$style.label' :mod='{ variant }'>
73
- <span v-if='hideIcon && checked' :class='$style.iconWrapper'>
74
- <Icon :name='icon' :class='$style.icon' />
75
- </span>
76
-
77
- <span><slot /></span>
78
- </Box>
79
- </Box>
69
+ }'
70
+ @click='onUpdate()'
71
+ >
72
+ <Box is='label' :for='id' :class='$style.label' :mod='{ variant }'>
73
+ <span v-if='hideIcon && checked' :class='$style.iconWrapper'>
74
+ <Icon :name='icon' :class='$style.icon' />
75
+ </span>
76
+
77
+ <span><slot /></span>
78
+ </Box>
79
+ </Box>
80
80
  </template>
81
81
 
82
82
  <style lang="postcss" module>
83
- .root {
84
- --chip-size-xs: rem(23px);
85
- --chip-size-sm: rem(28px);
86
- --chip-size-md: rem(32px);
87
- --chip-size-lg: rem(36px);
88
- --chip-size-xl: rem(40px);
89
-
90
- --chip-icon-size-xs: rem(12px);
91
- --chip-icon-size-sm: rem(14px);
92
- --chip-icon-size-md: rem(16px);
93
- --chip-icon-size-lg: rem(18px);
94
- --chip-icon-size-xl: rem(20px);
95
-
96
- --chip-padding-xs: rem(16px);
97
- --chip-padding-sm: rem(20px);
98
- --chip-padding-md: rem(24px);
99
- --chip-padding-lg: rem(28px);
100
- --chip-padding-xl: rem(32px);
101
-
102
- --chip-checked-padding-xs: rem(7.5px);
103
- --chip-checked-padding-sm: rem(10px);
104
- --chip-checked-padding-md: rem(11.7px);
105
- --chip-checked-padding-lg: rem(13.5px);
106
- --chip-checked-padding-xl: rem(15.7px);
107
-
108
- --chip-spacing-xs: rem(10px);
109
- --chip-spacing-sm: rem(12px);
110
- --chip-spacing-md: rem(16px);
111
- --chip-spacing-lg: rem(20px);
112
- --chip-spacing-xl: rem(22px);
113
-
114
- --chip-size: var(--chip-size-sm);
115
- --chip-icon-size: var(--chip-icon-size-sm);
116
- --chip-padding: var(--chip-padding-sm);
117
- --chip-spacing: var(--chip-spacing-sm);
118
- --chip-checked-padding: var(--chip-checked-padding-sm);
119
- --chip-bg: var(--color-primary-filled);
120
- --chip-hover: var(--color-primary-filled-hover);
121
- --chip-color: var(--color-white);
122
- --chip-bd: 1px solid transparent;
123
-
124
- --chip-fz: var(--font-size-sm);
125
- --chip-radius: var(--radius-xl);
126
- }
127
-
128
- .label {
129
- cursor: pointer;
130
- user-select: none;
131
-
132
- display: inline-flex;
133
- align-items: center;
134
-
135
- height: var(--chip-size);
136
- padding-inline: var(--chip-padding);
137
-
138
- border: 1px solid transparent;
139
- border-radius: var(--chip-radius);
140
-
141
- font-size: var(--chip-fz);
142
- line-height: calc(var(--chip-size) - rem(2px));
143
- color: var(--color-text);
144
- white-space: nowrap;
145
- -webkit-tap-highlight-color: transparent;
146
- }
147
-
148
- .iconWrapper {
149
- overflow: hidden;
150
- display: flex;
151
- align-items: center;
152
-
153
- width: calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));
154
- max-width: calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));
155
- height: var(--chip-icon-size);
156
- }
157
-
158
- .icon {
159
- display: block;
160
-
161
- width: var(--chip-icon-size);
162
- height: var(--chip-icon-size);
163
-
164
- color: var(--chip-icon-color, inherit);
165
- }
166
-
167
- .input {
168
- width: 0;
169
- height: 0;
170
- margin: 0;
171
- padding: 0;
172
-
173
- opacity: 0;
174
-
175
- &:focus-visible+.label {
176
- outline: 2px solid var(--color-primary-filled);
177
- outline-offset: 2px;
178
- }
179
- }
180
-
181
- .input:disabled {
182
- &+.label {
183
- cursor: not-allowed;
184
-
185
- color: var(--color-disabled-text);
186
-
187
- background-color: var(--color-disabled);
188
- }
189
- }
190
-
191
- .input:not(:disabled) {
192
- &+.label[data-variant='outline'] {
193
- @mixin where-light {
194
- border: 1px solid var(--color-gray-3);
195
-
196
- background-color: var(--color-white);
197
- }
198
-
199
- @mixin where-dark {
200
- border: 1px solid var(--color-dark-4);
201
-
202
- background-color: var(--color-dark-6);
203
- }
204
-
205
- @mixin hover {
206
- @mixin where-light {
207
- background-color: var(--color-gray-0);
208
- }
209
-
210
- @mixin where-dark {
211
- background-color: var(--color-dark-5);
212
- }
213
- }
214
- }
215
-
216
- &+.label[data-variant='filled'],
217
- &+.label[data-variant='light'] {
218
- border: 1px solid transparent;
219
-
220
- color: var(--color-text);
221
-
222
- @mixin where-light {
223
- background-color: var(--color-gray-1);
224
- }
225
-
226
- @mixin where-dark {
227
- background-color: var(--color-dark-5);
228
- }
229
-
230
- @mixin hover {
231
- @mixin where-light {
232
- background-color: var(--color-gray-2);
233
- }
234
-
235
- @mixin where-dark {
236
- background-color: var(--color-dark-4);
237
- }
238
- }
239
- }
240
- }
241
-
242
- .input:not(:disabled):checked {
243
- &+.label {
244
- padding: var(--chip-checked-padding);
245
- }
246
-
247
- &+.label[data-variant='outline'] {
248
- --chip-icon-color: var(--chip-color);
249
-
250
- border: var(--chip-bd);
251
-
252
- @mixin hover {
253
- background-color: var(--chip-hover);
254
- }
255
- }
256
-
257
- &+.label[data-variant='filled'],
258
- &+.label[data-variant='light'] {
259
- --chip-icon-color: var(--chip-color);
260
-
261
- color: var(--chip-color);
262
-
263
- background-color: var(--chip-bg);
264
-
265
- @mixin hover {
266
- background-color: var(--chip-hover);
267
- }
268
- }
269
- }
83
+ .root {
84
+ --chip-size-xs: rem(23px);
85
+ --chip-size-sm: rem(28px);
86
+ --chip-size-md: rem(32px);
87
+ --chip-size-lg: rem(36px);
88
+ --chip-size-xl: rem(40px);
89
+
90
+ --chip-icon-size-xs: rem(12px);
91
+ --chip-icon-size-sm: rem(14px);
92
+ --chip-icon-size-md: rem(16px);
93
+ --chip-icon-size-lg: rem(18px);
94
+ --chip-icon-size-xl: rem(20px);
95
+
96
+ --chip-padding-xs: rem(16px);
97
+ --chip-padding-sm: rem(20px);
98
+ --chip-padding-md: rem(24px);
99
+ --chip-padding-lg: rem(28px);
100
+ --chip-padding-xl: rem(32px);
101
+
102
+ --chip-checked-padding-xs: rem(7.5px);
103
+ --chip-checked-padding-sm: rem(10px);
104
+ --chip-checked-padding-md: rem(11.7px);
105
+ --chip-checked-padding-lg: rem(13.5px);
106
+ --chip-checked-padding-xl: rem(15.7px);
107
+
108
+ --chip-spacing-xs: rem(10px);
109
+ --chip-spacing-sm: rem(12px);
110
+ --chip-spacing-md: rem(16px);
111
+ --chip-spacing-lg: rem(20px);
112
+ --chip-spacing-xl: rem(22px);
113
+
114
+ --chip-size: var(--chip-size-sm);
115
+ --chip-icon-size: var(--chip-icon-size-sm);
116
+ --chip-padding: var(--chip-padding-sm);
117
+ --chip-spacing: var(--chip-spacing-sm);
118
+ --chip-checked-padding: var(--chip-checked-padding-sm);
119
+ --chip-bg: var(--color-primary-filled);
120
+ --chip-hover: var(--color-primary-filled-hover);
121
+ --chip-color: var(--color-white);
122
+ --chip-bd: 1px solid transparent;
123
+
124
+ --chip-fz: var(--font-size-sm);
125
+ --chip-radius: var(--radius-xl);
126
+ }
127
+
128
+ .label {
129
+ cursor: pointer;
130
+ user-select: none;
131
+
132
+ display: inline-flex;
133
+ align-items: center;
134
+
135
+ height: var(--chip-size);
136
+ padding-inline: var(--chip-padding);
137
+
138
+ border: 1px solid transparent;
139
+ border-radius: var(--chip-radius);
140
+
141
+ font-size: var(--chip-fz);
142
+ line-height: calc(var(--chip-size) - rem(2px));
143
+ color: var(--color-text);
144
+ white-space: nowrap;
145
+ -webkit-tap-highlight-color: transparent;
146
+ }
147
+
148
+ .iconWrapper {
149
+ overflow: hidden;
150
+ display: flex;
151
+ align-items: center;
152
+
153
+ width: calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));
154
+ max-width: calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));
155
+ height: var(--chip-icon-size);
156
+ }
157
+
158
+ .icon {
159
+ display: block;
160
+
161
+ width: var(--chip-icon-size);
162
+ height: var(--chip-icon-size);
163
+
164
+ color: var(--chip-icon-color, inherit);
165
+ }
166
+
167
+ .input {
168
+ width: 0;
169
+ height: 0;
170
+ margin: 0;
171
+ padding: 0;
172
+
173
+ opacity: 0;
174
+
175
+ &:focus-visible+.label {
176
+ outline: 2px solid var(--color-primary-filled);
177
+ outline-offset: 2px;
178
+ }
179
+ }
180
+
181
+ .input:disabled {
182
+ &+.label {
183
+ cursor: not-allowed;
184
+
185
+ color: var(--color-disabled-text);
186
+
187
+ background-color: var(--color-disabled);
188
+ }
189
+ }
190
+
191
+ .input:not(:disabled) {
192
+ &+.label[data-variant='outline'] {
193
+ @mixin where-light {
194
+ border: 1px solid var(--color-gray-3);
195
+
196
+ background-color: var(--color-white);
197
+ }
198
+
199
+ @mixin where-dark {
200
+ border: 1px solid var(--color-dark-4);
201
+
202
+ background-color: var(--color-dark-6);
203
+ }
204
+
205
+ @mixin hover {
206
+ @mixin where-light {
207
+ background-color: var(--color-gray-0);
208
+ }
209
+
210
+ @mixin where-dark {
211
+ background-color: var(--color-dark-5);
212
+ }
213
+ }
214
+ }
215
+
216
+ &+.label[data-variant='filled'],
217
+ &+.label[data-variant='light'] {
218
+ border: 1px solid transparent;
219
+
220
+ color: var(--color-text);
221
+
222
+ @mixin where-light {
223
+ background-color: var(--color-gray-1);
224
+ }
225
+
226
+ @mixin where-dark {
227
+ background-color: var(--color-dark-5);
228
+ }
229
+
230
+ @mixin hover {
231
+ @mixin where-light {
232
+ background-color: var(--color-gray-2);
233
+ }
234
+
235
+ @mixin where-dark {
236
+ background-color: var(--color-dark-4);
237
+ }
238
+ }
239
+ }
240
+ }
241
+
242
+ .input:not(:disabled):checked {
243
+ &+.label {
244
+ padding: var(--chip-checked-padding);
245
+ }
246
+
247
+ &+.label[data-variant='outline'] {
248
+ --chip-icon-color: var(--chip-color);
249
+
250
+ border: var(--chip-bd);
251
+
252
+ @mixin hover {
253
+ background-color: var(--chip-hover);
254
+ }
255
+ }
256
+
257
+ &+.label[data-variant='filled'],
258
+ &+.label[data-variant='light'] {
259
+ --chip-icon-color: var(--chip-color);
260
+
261
+ color: var(--chip-color);
262
+
263
+ background-color: var(--chip-bg);
264
+
265
+ @mixin hover {
266
+ background-color: var(--chip-hover);
267
+ }
268
+ }
269
+ }
270
270
  </style>
@@ -13,21 +13,21 @@ const style = computed(() => ({
13
13
  </script>
14
14
 
15
15
  <template>
16
- <PopoverDropdown :class='$style.dropdown'>
17
- <Box
18
- :id='store.listId'
19
- role='presentation'
20
- :class='css.dropdown'
21
- :style
22
- v-bind='$attrs'
23
- >
24
- <slot />
25
- </Box>
26
- </PopoverDropdown>
16
+ <PopoverDropdown :class='$style.dropdown'>
17
+ <Box
18
+ :id='store.listId'
19
+ role='presentation'
20
+ :class='css.dropdown'
21
+ :style
22
+ v-bind='$attrs'
23
+ >
24
+ <slot />
25
+ </Box>
26
+ </PopoverDropdown>
27
27
  </template>
28
28
 
29
29
  <style module lang="postcss">
30
- .dropdown {
31
- padding: 0;
32
- }
30
+ .dropdown {
31
+ padding: 0;
32
+ }
33
33
  </style>
@@ -8,7 +8,7 @@ const { is, mod } = defineProps({
8
8
  </script>
9
9
 
10
10
  <template>
11
- <Box :is :mod :class='css.empty'>
12
- <slot />
13
- </Box>
11
+ <Box :is :mod :class='css.empty'>
12
+ <slot />
13
+ </Box>
14
14
  </template>
@@ -25,25 +25,25 @@ const value = defineModel("value", { type: [String, Array, null] });
25
25
  </script>
26
26
 
27
27
  <template>
28
- <Box :class='css.group' role='group' :aria-labelledby='label ? uid : void 0' :mod>
29
- <div v-if='label || $slots?.label' :id='uid' :class='css.groupLabel'>
30
- <slot name='label'>
31
- {{ label }}
32
- </slot>
33
- </div>
34
-
35
- <ComboboxOption
36
- v-for='item in data.items'
37
- :key='item.value'
38
- :data='item'
39
- :icon-position
40
- :with-check-icon
41
- :check-icon
42
- :checked='isValueChecked(value, item.value)'
43
- >
44
- <template v-if='$slots.option' #default='props'>
45
- <slot name='option' v-bind='props' />
46
- </template>
47
- </ComboboxOption>
48
- </Box>
28
+ <Box :class='css.group' role='group' :aria-labelledby='label ? uid : void 0' :mod>
29
+ <div v-if='label || $slots?.label' :id='uid' :class='css.groupLabel'>
30
+ <slot name='label'>
31
+ {{ label }}
32
+ </slot>
33
+ </div>
34
+
35
+ <ComboboxOption
36
+ v-for='item in data.items'
37
+ :key='item.value'
38
+ :data='item'
39
+ :icon-position
40
+ :with-check-icon
41
+ :check-icon
42
+ :checked='isValueChecked(value, item.value)'
43
+ >
44
+ <template v-if='$slots.option' #default='props'>
45
+ <slot name='option' v-bind='props' />
46
+ </template>
47
+ </ComboboxOption>
48
+ </Box>
49
49
  </template>
@@ -9,7 +9,7 @@ const { labelledBy, mod } = defineProps({
9
9
  </script>
10
10
 
11
11
  <template>
12
- <Box :class='css.options' role='listbox' :aria-labelledby='labelledBy' :mod>
13
- <slot />
14
- </Box>
12
+ <Box :class='css.options' role='listbox' :aria-labelledby='labelledBy' :mod>
13
+ <slot />
14
+ </Box>
15
15
  </template>
@@ -37,26 +37,26 @@ const mod = computed(() => [
37
37
  </script>
38
38
 
39
39
  <template>
40
- <Box
41
- :class='css.option'
42
- data-combobox-option
43
- :mod
44
- role='option'
45
- :aria-selected='checked'
46
- @mousedown='() => !data?.disabled && onOptionSubmit?.(data.value, data)'
47
- >
48
- <slot :with-check-icon :icon-position :data :checked>
49
- <Icon
50
- v-if='checked && withCheckIcon && iconPosition === "left"'
51
- :class='css.optionCheck'
52
- :name='data?.icon ?? checkIcon'
53
- />
54
- <span>{{ data.label }}</span>
55
- <Icon
56
- v-if='checked && withCheckIcon && iconPosition === "right"'
57
- :class='css.optionCheck'
58
- :name='data?.icon ?? checkIcon'
59
- />
60
- </slot>
61
- </Box>
40
+ <Box
41
+ :class='css.option'
42
+ data-combobox-option
43
+ :mod
44
+ role='option'
45
+ :aria-selected='checked'
46
+ @mousedown='() => !data?.disabled && onOptionSubmit?.(data.value, data)'
47
+ >
48
+ <slot :with-check-icon :icon-position :data :checked>
49
+ <Icon
50
+ v-if='checked && withCheckIcon && iconPosition === "left"'
51
+ :class='css.optionCheck'
52
+ :name='data?.icon ?? checkIcon'
53
+ />
54
+ <span>{{ data.label }}</span>
55
+ <Icon
56
+ v-if='checked && withCheckIcon && iconPosition === "right"'
57
+ :class='css.optionCheck'
58
+ :name='data?.icon ?? checkIcon'
59
+ />
60
+ </slot>
61
+ </Box>
62
62
  </template>
@@ -39,33 +39,33 @@ const filteredData = computed(() => typeof search.value === "string" ? (filter |
39
39
  </script>
40
40
 
41
41
  <template>
42
- <ComboboxDropdown>
43
- <ComboboxOptionList :labelled-by='labelId' v-bind='$attrs'>
44
- <template
45
- v-for='item in filteredData'
46
- :key='isOptionsGroup(item) ? item.group : item?.value'
47
- >
48
- <ComboboxGroup
49
- v-if='isOptionsGroup(item)'
50
- v-model:value='value'
51
- :label='item.group'
52
- :data='item'
53
- :with-check-icon
54
- :icon-position
55
- :check-icon
56
- />
57
- <ComboboxOptions
58
- v-else
59
- :data='item'
60
- :with-check-icon
61
- :icon-position
62
- :check-icon
63
- :checked='isValueChecked(value, item.value)'
64
- />
65
- </template>
66
- <ComboboxEmpty v-if='isEmpty'>
67
- {{ nothingFoundMessage }}
68
- </ComboboxEmpty>
69
- </ComboboxOptionList>
70
- </ComboboxDropdown>
42
+ <ComboboxDropdown>
43
+ <ComboboxOptionList :labelled-by='labelId' v-bind='$attrs'>
44
+ <template
45
+ v-for='item in filteredData'
46
+ :key='isOptionsGroup(item) ? item.group : item?.value'
47
+ >
48
+ <ComboboxGroup
49
+ v-if='isOptionsGroup(item)'
50
+ v-model:value='value'
51
+ :label='item.group'
52
+ :data='item'
53
+ :with-check-icon
54
+ :icon-position
55
+ :check-icon
56
+ />
57
+ <ComboboxOptions
58
+ v-else
59
+ :data='item'
60
+ :with-check-icon
61
+ :icon-position
62
+ :check-icon
63
+ :checked='isValueChecked(value, item.value)'
64
+ />
65
+ </template>
66
+ <ComboboxEmpty v-if='isEmpty'>
67
+ {{ nothingFoundMessage }}
68
+ </ComboboxEmpty>
69
+ </ComboboxOptionList>
70
+ </ComboboxDropdown>
71
71
  </template>
@@ -51,7 +51,7 @@ useProvideComboboxState({
51
51
  </script>
52
52
 
53
53
  <template>
54
- <Popover v-bind='rest' v-model:open='opened'>
55
- <slot />
56
- </Popover>
54
+ <Popover v-bind='rest' v-model:open='opened'>
55
+ <slot />
56
+ </Popover>
57
57
  </template>
@@ -26,7 +26,7 @@ const { store: { targetRef } } = useComboboxState();
26
26
  </script>
27
27
 
28
28
  <template>
29
- <PopoverTarget ref='targetRef' v-bind='aria' disable>
30
- <slot />
31
- </PopoverTarget>
29
+ <PopoverTarget ref='targetRef' v-bind='aria' disable>
30
+ <slot />
31
+ </PopoverTarget>
32
32
  </template>
@@ -20,14 +20,14 @@ const _mod = computed(() => [{ fluid }, mod]);
20
20
  </script>
21
21
 
22
22
  <template>
23
- <Box
24
- :is
25
- :style
26
- :mod='_mod'
27
- :class='$style.root'
28
- >
29
- <slot />
30
- </Box>
23
+ <Box
24
+ :is
25
+ :style
26
+ :mod='_mod'
27
+ :class='$style.root'
28
+ >
29
+ <slot />
30
+ </Box>
31
31
  </template>
32
32
 
33
33
  <style module>