nuance-ui 0.2.7 → 0.2.8
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/dist/module.json +1 -1
- package/dist/runtime/components/action-icon/action-icon.d.vue.ts +1 -1
- package/dist/runtime/components/action-icon/action-icon.vue +23 -23
- package/dist/runtime/components/action-icon/action-icon.vue.d.ts +1 -1
- package/dist/runtime/components/box.vue +3 -3
- package/dist/runtime/components/button/button.d.vue.ts +5 -3
- package/dist/runtime/components/button/button.vue +43 -39
- package/dist/runtime/components/button/button.vue.d.ts +5 -3
- package/dist/runtime/components/calendar/calendar.d.vue.ts +1 -1
- package/dist/runtime/components/calendar/calendar.vue +60 -60
- package/dist/runtime/components/calendar/calendar.vue.d.ts +1 -1
- package/dist/runtime/components/calendar/types.d.ts +4 -3
- package/dist/runtime/components/calendar/ui/core/calendar-header.d.vue.ts +7 -1
- package/dist/runtime/components/calendar/ui/core/calendar-header.vue.d.ts +7 -1
- package/dist/runtime/components/calendar/ui/levels/calendar-decade.d.vue.ts +3 -1
- package/dist/runtime/components/calendar/ui/levels/calendar-decade.vue.d.ts +3 -1
- package/dist/runtime/components/calendar/ui/levels/calendar-month.d.vue.ts +2 -1
- package/dist/runtime/components/calendar/ui/levels/calendar-month.vue +77 -77
- package/dist/runtime/components/calendar/ui/levels/calendar-month.vue.d.ts +2 -1
- package/dist/runtime/components/calendar/ui/levels/calendar-year.d.vue.ts +3 -1
- package/dist/runtime/components/calendar/ui/levels/calendar-year.vue.d.ts +3 -1
- package/dist/runtime/components/card/card-section.d.vue.ts +2 -1
- package/dist/runtime/components/card/card-section.vue.d.ts +2 -1
- package/dist/runtime/components/card/card.d.vue.ts +1 -0
- package/dist/runtime/components/card/card.vue.d.ts +1 -0
- package/dist/runtime/components/checkbox/checkbox-card.d.vue.ts +4 -1
- package/dist/runtime/components/checkbox/checkbox-card.vue +37 -37
- package/dist/runtime/components/checkbox/checkbox-card.vue.d.ts +4 -1
- package/dist/runtime/components/checkbox/checkbox-indicator.d.vue.ts +6 -0
- package/dist/runtime/components/checkbox/checkbox-indicator.vue.d.ts +6 -0
- package/dist/runtime/components/checkbox/checkbox.d.vue.ts +12 -2
- package/dist/runtime/components/checkbox/checkbox.vue +139 -139
- package/dist/runtime/components/checkbox/checkbox.vue.d.ts +12 -2
- package/dist/runtime/components/chip/chip-group.d.vue.ts +3 -0
- package/dist/runtime/components/chip/chip-group.vue.d.ts +3 -0
- package/dist/runtime/components/chip/chip.d.vue.ts +9 -0
- package/dist/runtime/components/chip/chip.vue +200 -200
- package/dist/runtime/components/chip/chip.vue.d.ts +9 -0
- package/dist/runtime/components/combobox/combobox-group.d.vue.ts +1 -0
- package/dist/runtime/components/combobox/combobox-group.vue.d.ts +1 -0
- package/dist/runtime/components/combobox/combobox-option.d.vue.ts +3 -0
- package/dist/runtime/components/combobox/combobox-option.vue.d.ts +3 -0
- package/dist/runtime/components/combobox/combobox-options-dropdown.d.vue.ts +10 -0
- package/dist/runtime/components/combobox/combobox-options-dropdown.vue +29 -29
- package/dist/runtime/components/combobox/combobox-options-dropdown.vue.d.ts +10 -0
- package/dist/runtime/components/combobox/combobox-root.d.vue.ts +8 -4
- package/dist/runtime/components/combobox/combobox-root.vue.d.ts +8 -4
- package/dist/runtime/components/combobox/types.d.ts +11 -0
- package/dist/runtime/components/container.d.vue.ts +2 -0
- package/dist/runtime/components/container.vue.d.ts +2 -0
- package/dist/runtime/components/dialog/types.d.ts +1 -0
- package/dist/runtime/components/files/file-upload-button.d.vue.ts +4 -2
- package/dist/runtime/components/files/file-upload-button.vue +12 -12
- package/dist/runtime/components/files/file-upload-button.vue.d.ts +4 -2
- package/dist/runtime/components/files/file-upload-icon.d.vue.ts +4 -2
- package/dist/runtime/components/files/file-upload-icon.vue +1 -1
- package/dist/runtime/components/files/file-upload-icon.vue.d.ts +4 -2
- package/dist/runtime/components/input/email-input.d.vue.ts +5 -5
- package/dist/runtime/components/input/email-input.vue +5 -6
- package/dist/runtime/components/input/email-input.vue.d.ts +5 -5
- package/dist/runtime/components/input/lib/input-wrapper.context.d.ts +8 -2
- package/dist/runtime/components/input/number-input.d.vue.ts +7 -5
- package/dist/runtime/components/input/number-input.vue +6 -2
- package/dist/runtime/components/input/number-input.vue.d.ts +7 -5
- package/dist/runtime/components/input/password-input.vue +1 -0
- package/dist/runtime/components/input/text-input.d.vue.ts +7 -5
- package/dist/runtime/components/input/text-input.vue +37 -34
- package/dist/runtime/components/input/text-input.vue.d.ts +7 -5
- package/dist/runtime/components/input/ui/input-inline.d.vue.ts +7 -3
- package/dist/runtime/components/input/ui/input-inline.vue +105 -105
- package/dist/runtime/components/input/ui/input-inline.vue.d.ts +7 -3
- package/dist/runtime/components/input/ui/input-wrapper.d.vue.ts +4 -1
- package/dist/runtime/components/input/ui/input-wrapper.vue +54 -54
- package/dist/runtime/components/input/ui/input-wrapper.vue.d.ts +4 -1
- package/dist/runtime/components/link/link-button.vue +1 -0
- package/dist/runtime/components/nav-link/nav-link.d.vue.ts +6 -4
- package/dist/runtime/components/nav-link/nav-link.vue +7 -3
- package/dist/runtime/components/nav-link/nav-link.vue.d.ts +6 -4
- package/dist/runtime/components/paper.d.vue.ts +3 -1
- package/dist/runtime/components/paper.vue +33 -33
- package/dist/runtime/components/paper.vue.d.ts +3 -1
- package/dist/runtime/components/progress/progress-section.d.vue.ts +1 -1
- package/dist/runtime/components/progress/progress-section.vue.d.ts +1 -1
- package/dist/runtime/components/select.d.vue.ts +2 -0
- package/dist/runtime/components/select.vue +63 -63
- package/dist/runtime/components/select.vue.d.ts +2 -0
- package/dist/runtime/components/table/types.d.ts +10 -1
- package/dist/runtime/components/table/ui/table-sortable-header.vue +1 -0
- package/dist/runtime/components/tabs/tabs-list.d.vue.ts +2 -0
- package/dist/runtime/components/tabs/tabs-list.vue.d.ts +2 -0
- package/dist/runtime/components/tabs/tabs-panel.d.vue.ts +1 -0
- package/dist/runtime/components/tabs/tabs-panel.vue.d.ts +1 -0
- package/dist/runtime/components/tabs/tabs-root.d.vue.ts +36 -9
- package/dist/runtime/components/tabs/tabs-root.vue.d.ts +36 -9
- package/dist/runtime/components/tabs/tabs-tab.d.vue.ts +7 -3
- package/dist/runtime/components/tabs/tabs-tab.vue +7 -4
- package/dist/runtime/components/tabs/tabs-tab.vue.d.ts +7 -3
- package/dist/runtime/components/text.d.vue.ts +6 -1
- package/dist/runtime/components/text.vue.d.ts +6 -1
- package/dist/runtime/components/textarea.d.vue.ts +7 -5
- package/dist/runtime/components/textarea.vue +6 -3
- package/dist/runtime/components/textarea.vue.d.ts +7 -5
- package/dist/runtime/components/title.d.vue.ts +5 -0
- package/dist/runtime/components/title.vue.d.ts +5 -0
- package/dist/runtime/components/transition.d.vue.ts +12 -2
- package/dist/runtime/components/transition.vue.d.ts +12 -2
- package/dist/runtime/components/tree/_ui/tree-item.d.vue.ts +1 -0
- package/dist/runtime/components/tree/_ui/tree-item.vue.d.ts +1 -0
- package/dist/runtime/components/tree/_ui/tree-root.d.vue.ts +8 -0
- package/dist/runtime/components/tree/_ui/tree-root.vue.d.ts +8 -0
- package/dist/runtime/components/tree/lib/context.d.ts +15 -0
- package/dist/runtime/components/tree/types.d.ts +9 -0
- package/dist/runtime/components/visually-hidden/visually-hidden-input.d.vue.ts +2 -0
- package/dist/runtime/components/visually-hidden/visually-hidden-input.vue +1 -1
- package/dist/runtime/components/visually-hidden/visually-hidden-input.vue.d.ts +2 -0
- package/dist/runtime/components/visually-hidden/visually-hidden.d.vue.ts +1 -0
- package/dist/runtime/components/visually-hidden/visually-hidden.vue.d.ts +1 -0
- 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>
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import type { NuanceColor, NuanceRadius, NuanceSize } from '@nui/types';
|
|
2
2
|
export interface ChipProps {
|
|
3
|
+
/** Border radius */
|
|
3
4
|
radius?: NuanceRadius;
|
|
5
|
+
/** Component size */
|
|
4
6
|
size?: NuanceSize;
|
|
7
|
+
/** Input type used when rendered without a group */
|
|
5
8
|
type?: 'radio' | 'checkbox';
|
|
9
|
+
/** Color from theme */
|
|
6
10
|
color?: NuanceColor;
|
|
7
11
|
/** Id used to bind input and label, auto-generated if not provided */
|
|
8
12
|
id?: string;
|
|
13
|
+
/** Visual variant */
|
|
9
14
|
variant?: 'filled' | 'outline' | 'light';
|
|
15
|
+
/** Value used in chip group context */
|
|
10
16
|
value?: string;
|
|
17
|
+
/** Check icon name */
|
|
11
18
|
icon?: string;
|
|
19
|
+
/** Shows the check icon when the chip is checked */
|
|
12
20
|
hideIcon?: boolean;
|
|
21
|
+
/** Disables the component */
|
|
13
22
|
disabled?: boolean;
|
|
14
23
|
}
|
|
15
24
|
type __VLS_Props = ChipProps;
|
|
@@ -3,6 +3,7 @@ import type { ComboboxItemExt, ComboboxItemGroup, ComboboxItemProps } from './ty
|
|
|
3
3
|
export interface ComboboxGroupProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends BoxProps, ComboboxItemProps {
|
|
4
4
|
/** Group label */
|
|
5
5
|
label?: string;
|
|
6
|
+
/** Group data including items */
|
|
6
7
|
data: ComboboxItemGroup<Value, Ext>;
|
|
7
8
|
}
|
|
8
9
|
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<{
|
|
@@ -3,6 +3,7 @@ import type { ComboboxItemExt, ComboboxItemGroup, ComboboxItemProps } from './ty
|
|
|
3
3
|
export interface ComboboxGroupProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends BoxProps, ComboboxItemProps {
|
|
4
4
|
/** Group label */
|
|
5
5
|
label?: string;
|
|
6
|
+
/** Group data including items */
|
|
6
7
|
data: ComboboxItemGroup<Value, Ext>;
|
|
7
8
|
}
|
|
8
9
|
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<{
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { BoxProps } from '../box.vue.js';
|
|
2
2
|
import type { ComboboxItem, ComboboxItemExt, ComboboxItemProps } from './types.js';
|
|
3
3
|
export interface ComboboxOptionProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends BoxProps, ComboboxItemProps {
|
|
4
|
+
/** Option data */
|
|
4
5
|
data: ComboboxItem<Value, Ext>;
|
|
6
|
+
/** Whether this option is the active (highlighted) option */
|
|
5
7
|
checked: boolean;
|
|
8
|
+
/** Whether this option is selected in the current value */
|
|
6
9
|
selected?: boolean;
|
|
7
10
|
}
|
|
8
11
|
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<{
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { BoxProps } from '../box.vue.js';
|
|
2
2
|
import type { ComboboxItem, ComboboxItemExt, ComboboxItemProps } from './types.js';
|
|
3
3
|
export interface ComboboxOptionProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends BoxProps, ComboboxItemProps {
|
|
4
|
+
/** Option data */
|
|
4
5
|
data: ComboboxItem<Value, Ext>;
|
|
6
|
+
/** Whether this option is the active (highlighted) option */
|
|
5
7
|
checked: boolean;
|
|
8
|
+
/** Whether this option is selected in the current value */
|
|
6
9
|
selected?: boolean;
|
|
7
10
|
}
|
|
8
11
|
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<{
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import type { FilterOptionsInput } from './lib/utils/index.js';
|
|
2
2
|
import type { ComboboxItemExt, ComboboxOption } from './types.js';
|
|
3
3
|
export interface ComboboxOptionsDropdownProps<Value extends string = string, Ext extends ComboboxItemExt = object> {
|
|
4
|
+
/** List of options to render */
|
|
4
5
|
data: ComboboxOption<Value, Ext>[];
|
|
6
|
+
/** Custom filter function applied to the options list */
|
|
5
7
|
filter?: (input: FilterOptionsInput<Value, Ext>) => ComboboxOption<Value, Ext>[];
|
|
8
|
+
/** Maximum number of options to display */
|
|
6
9
|
limit?: number;
|
|
10
|
+
/** Maximum height of the dropdown */
|
|
7
11
|
maxDropdownHeight?: number | string;
|
|
12
|
+
/** Filters options by the current search value */
|
|
8
13
|
filterOptions?: boolean;
|
|
14
|
+
/** Text shown when no options match the search */
|
|
9
15
|
nothingFoundMessage?: string;
|
|
16
|
+
/** Id of the element that labels the options list */
|
|
10
17
|
labelId: string | undefined;
|
|
18
|
+
/** Shows a check icon next to the selected option */
|
|
11
19
|
withCheckIcon?: boolean;
|
|
20
|
+
/** Position of the check icon relative to the label */
|
|
12
21
|
iconPosition?: 'left' | 'right';
|
|
22
|
+
/** Icon name for the check mark */
|
|
13
23
|
checkIcon?: string;
|
|
14
24
|
}
|
|
15
25
|
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<{
|
|
@@ -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>
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import type { FilterOptionsInput } from './lib/utils/index.js';
|
|
2
2
|
import type { ComboboxItemExt, ComboboxOption } from './types.js';
|
|
3
3
|
export interface ComboboxOptionsDropdownProps<Value extends string = string, Ext extends ComboboxItemExt = object> {
|
|
4
|
+
/** List of options to render */
|
|
4
5
|
data: ComboboxOption<Value, Ext>[];
|
|
6
|
+
/** Custom filter function applied to the options list */
|
|
5
7
|
filter?: (input: FilterOptionsInput<Value, Ext>) => ComboboxOption<Value, Ext>[];
|
|
8
|
+
/** Maximum number of options to display */
|
|
6
9
|
limit?: number;
|
|
10
|
+
/** Maximum height of the dropdown */
|
|
7
11
|
maxDropdownHeight?: number | string;
|
|
12
|
+
/** Filters options by the current search value */
|
|
8
13
|
filterOptions?: boolean;
|
|
14
|
+
/** Text shown when no options match the search */
|
|
9
15
|
nothingFoundMessage?: string;
|
|
16
|
+
/** Id of the element that labels the options list */
|
|
10
17
|
labelId: string | undefined;
|
|
18
|
+
/** Shows a check icon next to the selected option */
|
|
11
19
|
withCheckIcon?: boolean;
|
|
20
|
+
/** Position of the check icon relative to the label */
|
|
12
21
|
iconPosition?: 'left' | 'right';
|
|
22
|
+
/** Icon name for the check mark */
|
|
13
23
|
checkIcon?: string;
|
|
14
24
|
}
|
|
15
25
|
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<{
|
|
@@ -3,14 +3,18 @@ import type { CSSProperties } from 'vue';
|
|
|
3
3
|
import type { PopoverProps } from '../popover/index.js';
|
|
4
4
|
import type { ComboboxStore } from './lib/use-combobox/index.js';
|
|
5
5
|
export interface ComboboxProps extends PopoverProps {
|
|
6
|
+
/** External combobox store; creates an internal one if omitted */
|
|
6
7
|
store?: ComboboxStore;
|
|
7
|
-
/**
|
|
8
|
+
/** Loops arrow-key navigation from last item to first and back */
|
|
8
9
|
loop?: boolean;
|
|
9
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Component size
|
|
12
|
+
* @default `'sm'`
|
|
13
|
+
*/
|
|
10
14
|
size?: NuanceSize;
|
|
11
|
-
/**
|
|
15
|
+
/** Padding token for the dropdown */
|
|
12
16
|
dropdownPadding?: NuanceSize | CSSProperties['padding'];
|
|
13
|
-
/**
|
|
17
|
+
/** Prevents value changes */
|
|
14
18
|
readOnly?: boolean;
|
|
15
19
|
}
|
|
16
20
|
type __VLS_Props = ComboboxProps;
|
|
@@ -3,14 +3,18 @@ import type { CSSProperties } from 'vue';
|
|
|
3
3
|
import type { PopoverProps } from '../popover/index.js';
|
|
4
4
|
import type { ComboboxStore } from './lib/use-combobox/index.js';
|
|
5
5
|
export interface ComboboxProps extends PopoverProps {
|
|
6
|
+
/** External combobox store; creates an internal one if omitted */
|
|
6
7
|
store?: ComboboxStore;
|
|
7
|
-
/**
|
|
8
|
+
/** Loops arrow-key navigation from last item to first and back */
|
|
8
9
|
loop?: boolean;
|
|
9
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Component size
|
|
12
|
+
* @default `'sm'`
|
|
13
|
+
*/
|
|
10
14
|
size?: NuanceSize;
|
|
11
|
-
/**
|
|
15
|
+
/** Padding token for the dropdown */
|
|
12
16
|
dropdownPadding?: NuanceSize | CSSProperties['padding'];
|
|
13
|
-
/**
|
|
17
|
+
/** Prevents value changes */
|
|
14
18
|
readOnly?: boolean;
|
|
15
19
|
}
|
|
16
20
|
type __VLS_Props = ComboboxProps;
|