@threadlabs/looma 0.37.6 → 0.38.0
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/components/ui-button/ui-button.html +20 -5
- package/components/ui-combobox/ui-combobox.html +24 -3
- package/components/ui-combobox/ui-combobox.js +18 -3
- package/components/ui-icon-button/ui-icon-button.html +17 -8
- package/components/ui-menu-item/ui-menu-item.html +6 -1
- package/components/ui-select/ui-select.html +12 -0
- package/dist/index.js +1 -1
- package/docs/README.md +23 -10
- package/docs/catalog.json +78 -31
- package/docs/customizer-render.mjs +36 -20
- package/docs/customizer.js +76 -25
- package/docs/documentation.css +2 -0
- package/docs/palette.mjs +3 -3
- package/docs/site.mjs +1 -1
- package/docs/theme-session.mjs +1 -0
- package/docs/theme.mjs +11 -10
- package/package.json +2 -2
- package/styles/ui-button.css +19 -9
- package/styles/ui-combobox.css +40 -2
- package/styles/ui-icon-button.css +12 -2
- package/styles/ui-menu-item.css +6 -1
- package/styles/ui-select.css +9 -0
- package/theme-system.css +7 -2
- package/vanilla/UiButton.js +1 -1
- package/vanilla/UiCombobox.d.ts +1 -0
- package/vanilla/UiCombobox.js +38 -37
- package/vanilla/UiIconButton.d.ts +1 -1
- package/vanilla/UiIconButton.js +1 -1
- package/vanilla/UiSelect.d.ts +1 -0
- package/vanilla/UiSelect.js +7 -7
- package/vue/UiButton.vue +30 -12
- package/vue/UiCombobox.d.ts +6 -0
- package/vue/UiCombobox.vue +70 -6
- package/vue/UiIconButton.d.ts +2 -2
- package/vue/UiIconButton.vue +23 -18
- package/vue/UiMenuItem.vue +6 -1
- package/vue/UiSelect.d.ts +6 -0
- package/vue/UiSelect.vue +30 -1
- package/vue/chunks/UiButton.js +4 -4
- package/vue/chunks/UiCombobox.js +72 -46
- package/vue/chunks/UiIconButton.js +6 -7
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiSelect.js +27 -2
- package/vue/components.css +126 -25
- package/vue/editor/index.js +2 -3
package/styles/ui-button.css
CHANGED
|
@@ -268,7 +268,6 @@
|
|
|
268
268
|
background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
272
271
|
:scope:where([data-component~="ui-button"])[data-appearance="card"][data-tone="neutral"] {
|
|
273
272
|
border-color: var(--ui-button-border, var(--ui-border));
|
|
274
273
|
}
|
|
@@ -277,6 +276,12 @@
|
|
|
277
276
|
border-color: var(--ui-button-hover-border, var(--ui-border-strong));
|
|
278
277
|
}
|
|
279
278
|
|
|
279
|
+
:scope:where([data-component~="ui-button"])[data-appearance="card"][aria-pressed="true"] {
|
|
280
|
+
background-color: var(--ui-selection-surface);
|
|
281
|
+
border-color: var(--ui-selection-border);
|
|
282
|
+
color: var(--ui-selection-text);
|
|
283
|
+
}
|
|
284
|
+
|
|
280
285
|
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
281
286
|
:scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
|
|
282
287
|
scale: var(--ui-press-scale, 1);
|
|
@@ -324,6 +329,18 @@
|
|
|
324
329
|
background-color: var(--ui-button-surface, var(--ui-neutral-surface));
|
|
325
330
|
color: var(--ui-button-text, var(--ui-text));
|
|
326
331
|
}
|
|
332
|
+
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"] {
|
|
333
|
+
border-color: var(--ui-button-border, var(--ui-control-border));
|
|
334
|
+
background-color: var(--ui-button-surface, transparent);
|
|
335
|
+
}
|
|
336
|
+
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
337
|
+
border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
|
|
338
|
+
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
339
|
+
}
|
|
340
|
+
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"]:active:not(:disabled, [aria-disabled="true"]) {
|
|
341
|
+
border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
|
|
342
|
+
background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
|
|
343
|
+
}
|
|
327
344
|
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
328
345
|
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
329
346
|
}
|
|
@@ -411,10 +428,8 @@
|
|
|
411
428
|
border-color: transparent;
|
|
412
429
|
}
|
|
413
430
|
|
|
414
|
-
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
415
|
-
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
416
431
|
:scope:where([data-component~="ui-button"])[data-appearance="ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
|
|
417
|
-
background-color: var(--ui-button-ghost-active-surface,
|
|
432
|
+
background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
418
433
|
border-color: transparent;
|
|
419
434
|
box-shadow: inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%), inset 0 1px 2px oklch(from var(--_tone) l c h / 8%);
|
|
420
435
|
}
|
|
@@ -548,8 +563,6 @@
|
|
|
548
563
|
/* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
|
|
549
564
|
is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
|
|
550
565
|
|
|
551
|
-
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
552
|
-
|
|
553
566
|
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
554
567
|
|
|
555
568
|
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
@@ -559,9 +572,6 @@
|
|
|
559
572
|
|
|
560
573
|
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
561
574
|
|
|
562
|
-
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
563
|
-
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
564
|
-
|
|
565
575
|
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
566
576
|
|
|
567
577
|
/* A loading action stays visually active; only an explicitly disabled action takes the
|
package/styles/ui-combobox.css
CHANGED
|
@@ -136,6 +136,21 @@
|
|
|
136
136
|
flex: 1 1 auto;
|
|
137
137
|
min-inline-size: 0;
|
|
138
138
|
}
|
|
139
|
+
.start {
|
|
140
|
+
display: flex !important;
|
|
141
|
+
align-items: center !important;
|
|
142
|
+
flex: none;
|
|
143
|
+
padding-inline-start: var(--ui-space-3) !important;
|
|
144
|
+
}
|
|
145
|
+
.start:empty {
|
|
146
|
+
display: none !important;
|
|
147
|
+
}
|
|
148
|
+
:scope:where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=sm"] .start {
|
|
149
|
+
padding-inline-start: var(--ui-space-2) !important;
|
|
150
|
+
}
|
|
151
|
+
:scope:where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=lg"] .start {
|
|
152
|
+
padding-inline-start: var(--ui-space-4) !important;
|
|
153
|
+
}
|
|
139
154
|
/* A ghost icon button: the affordance is the mark, not a box around it. */
|
|
140
155
|
.help {
|
|
141
156
|
flex: none;
|
|
@@ -174,6 +189,10 @@
|
|
|
174
189
|
block-size: var(--ui-icon-size-sm);
|
|
175
190
|
}
|
|
176
191
|
|
|
192
|
+
:scope:where([data-component~="ui-combobox"])[data-ui-combobox-state~="muted"] input:not(:disabled) {
|
|
193
|
+
color: var(--ui-text-secondary);
|
|
194
|
+
}
|
|
195
|
+
|
|
177
196
|
input:where(:not([data-component], [data-slotted]))::selection {
|
|
178
197
|
background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
|
|
179
198
|
color: inherit;
|
|
@@ -258,7 +277,7 @@
|
|
|
258
277
|
padding: var(--ui-space-1) !important;
|
|
259
278
|
border: var(--ui-border-width) solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
260
279
|
border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
|
|
261
|
-
background: var(--_ui-combobox-popup-surface, var(--ui-
|
|
280
|
+
background: var(--_ui-combobox-popup-surface, var(--ui-material-content, var(--ui-surface-elevated)));
|
|
262
281
|
color: var(--ui-text-primary);
|
|
263
282
|
box-shadow: var(--_ui-combobox-popup-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
|
|
264
283
|
}
|
|
@@ -537,6 +556,21 @@
|
|
|
537
556
|
flex: 1 1 auto;
|
|
538
557
|
min-inline-size: 0;
|
|
539
558
|
}
|
|
559
|
+
.start:where(:scope, :scope *) {
|
|
560
|
+
display: flex !important;
|
|
561
|
+
align-items: center !important;
|
|
562
|
+
flex: none;
|
|
563
|
+
padding-inline-start: var(--ui-space-3) !important;
|
|
564
|
+
}
|
|
565
|
+
.start:empty:where(:scope, :scope *) {
|
|
566
|
+
display: none !important;
|
|
567
|
+
}
|
|
568
|
+
:where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=sm"] .start:where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))) {
|
|
569
|
+
padding-inline-start: var(--ui-space-2) !important;
|
|
570
|
+
}
|
|
571
|
+
:where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=lg"] .start:where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))) {
|
|
572
|
+
padding-inline-start: var(--ui-space-4) !important;
|
|
573
|
+
}
|
|
540
574
|
/* A ghost icon button: the affordance is the mark, not a box around it. */
|
|
541
575
|
.help:where(:scope, :scope *) {
|
|
542
576
|
flex: none;
|
|
@@ -574,6 +608,10 @@
|
|
|
574
608
|
block-size: var(--ui-icon-size-sm);
|
|
575
609
|
}
|
|
576
610
|
|
|
611
|
+
:where([data-component~="ui-combobox"])[data-ui-combobox-state~="muted"] input:not(:disabled):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))) {
|
|
612
|
+
color: var(--ui-text-secondary);
|
|
613
|
+
}
|
|
614
|
+
|
|
577
615
|
input:where(:not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))):where(:scope, :scope *)::selection {
|
|
578
616
|
background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
|
|
579
617
|
color: inherit;
|
|
@@ -657,7 +695,7 @@
|
|
|
657
695
|
padding: var(--ui-space-1) !important;
|
|
658
696
|
border: var(--ui-border-width) solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
659
697
|
border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
|
|
660
|
-
background: var(--_ui-combobox-popup-surface, var(--ui-
|
|
698
|
+
background: var(--_ui-combobox-popup-surface, var(--ui-material-content, var(--ui-surface-elevated)));
|
|
661
699
|
color: var(--ui-text-primary);
|
|
662
700
|
box-shadow: var(--_ui-combobox-popup-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
|
|
663
701
|
}
|
|
@@ -172,10 +172,14 @@
|
|
|
172
172
|
color: var(--_icon-button-text);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
/*
|
|
175
|
+
/* Neutral actions share the same quiet surface and border roles as fields. */
|
|
176
176
|
:scope:where([data-component~="ui-icon-button"])[data-tone="neutral"] {
|
|
177
177
|
--_tone-highlight: var(--ui-neutral-highlight, none);
|
|
178
178
|
--_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
|
|
179
|
+
--_icon-button-outline-surface: transparent;
|
|
180
|
+
--_icon-button-border: var(--ui-control-border);
|
|
181
|
+
--_icon-button-hover-border: var(--ui-control-border-hover, var(--ui-control-border));
|
|
182
|
+
--_icon-button-text: var(--ui-text);
|
|
179
183
|
--_icon-button-solid-surface: var(--ui-neutral-surface);
|
|
180
184
|
--_icon-button-solid-hover-surface: var(--ui-neutral-hover);
|
|
181
185
|
--_icon-button-solid-text: var(--ui-text);
|
|
@@ -363,6 +367,12 @@
|
|
|
363
367
|
:scope:where([data-component~="ui-icon-button"])[data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
|
|
364
368
|
border-color: var(--ui-icon-button-hover-border, var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border))));
|
|
365
369
|
}
|
|
370
|
+
:scope:where([data-component~="ui-icon-button"])[data-tone="neutral"][data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
|
|
371
|
+
background-color: var(--ui-icon-button-hover-surface, var(--ui-neutral-hover));
|
|
372
|
+
}
|
|
373
|
+
:scope:where([data-component~="ui-icon-button"])[data-tone="neutral"][data-appearance="outline"]:active:enabled:not([aria-disabled="true"]) {
|
|
374
|
+
background-color: var(--ui-icon-button-active-surface, var(--ui-neutral-active));
|
|
375
|
+
}
|
|
366
376
|
|
|
367
377
|
:scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
|
|
368
378
|
background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
|
|
@@ -487,7 +497,7 @@
|
|
|
487
497
|
@scope ([data-component~="ui-icon-button"]) to ([data-component]) {
|
|
488
498
|
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
489
499
|
|
|
490
|
-
/*
|
|
500
|
+
/* Neutral actions share the same quiet surface and border roles as fields. */
|
|
491
501
|
|
|
492
502
|
/* At rest an anticipatory button shows only its guide dot. The icon grows into place when
|
|
493
503
|
proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
|
package/styles/ui-menu-item.css
CHANGED
|
@@ -131,7 +131,12 @@
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
:scope:where([data-component~="ui-menu-item"]):is(:hover, :focus-visible):not([aria-disabled="true"]) {
|
|
134
|
-
background: var(--ui-menu-item-hover-surface, var(--ui-
|
|
134
|
+
background: var(--ui-menu-item-hover-surface, var(--ui-accent-subtle));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
:scope:where([data-component~="ui-menu-item"])[aria-checked="true"]:not([aria-disabled="true"]) {
|
|
138
|
+
background: var(--ui-selection-surface);
|
|
139
|
+
color: var(--ui-selection-text);
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
:scope:where([data-component~="ui-menu-item"]):focus-visible {
|
package/styles/ui-select.css
CHANGED
|
@@ -88,6 +88,10 @@
|
|
|
88
88
|
background-size: 1.125rem 1.125rem, 100% 100%;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
:scope:where([data-component~="ui-select"])[data-ui-select-state~="muted"] {
|
|
92
|
+
color: var(--ui-text-secondary);
|
|
93
|
+
}
|
|
94
|
+
|
|
91
95
|
:scope:where([data-component~="ui-select"]):hover:not(:focus):not(:disabled):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
|
|
92
96
|
border-color: var(--ui-select-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary)));
|
|
93
97
|
}
|
|
@@ -160,6 +164,11 @@
|
|
|
160
164
|
|
|
161
165
|
/* The select draws its own chevron: the native caret cannot be inset or sized consistently.
|
|
162
166
|
* The root stays a native <s-lect>, so the icon is a background image rather than an element. */
|
|
167
|
+
:scope:where([data-component~="ui-select"])[data-ui-select-state~="muted"] :where([data-slotted], [data-slotted] *):is(option),
|
|
168
|
+
:scope:where([data-component~="ui-select"])[data-ui-select-state~="muted"] :where([data-slotted], [data-slotted] *):is(optgroup) {
|
|
169
|
+
color: var(--ui-text-primary);
|
|
170
|
+
background-color: var(--ui-control-surface);
|
|
171
|
+
}
|
|
163
172
|
|
|
164
173
|
/* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
|
|
165
174
|
|
package/theme-system.css
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
@layer theme {
|
|
15
15
|
:root {
|
|
16
16
|
--ui-spacing: 1;
|
|
17
|
+
--ui-rhythm: 1;
|
|
17
18
|
--ui-control-roominess: 2.5;
|
|
18
19
|
--ui-scale-ratio: 1.2;
|
|
19
20
|
--ui-space-curve: 1;
|
|
@@ -36,7 +37,11 @@
|
|
|
36
37
|
contrast cannot unexpectedly turn linear spacing into quadratic spacing. */
|
|
37
38
|
--ui-control-size: calc(1rem * var(--ui-control-roominess));
|
|
38
39
|
--_ui-theme-ratio: max(1, var(--ui-scale-ratio));
|
|
39
|
-
--_ui-theme-unit: calc(1rem * 0.25 * max(0, var(--ui-spacing)));
|
|
40
|
+
--_ui-theme-unit: calc(1rem * 0.25 * max(0, var(--ui-spacing)) * clamp(0.75, var(--ui-rhythm), 1.5));
|
|
41
|
+
--ui-line-height-tight: clamp(1.1, calc(1.2 + (var(--ui-rhythm) - 1) * 0.2), 1.3);
|
|
42
|
+
--ui-line-height: clamp(1.35, calc(1.4 + (var(--ui-rhythm) - 1) * 0.4), 1.6);
|
|
43
|
+
--ui-line-height-md: var(--ui-line-height);
|
|
44
|
+
--ui-line-height-relaxed: calc(var(--ui-line-height) * 1.15);
|
|
40
45
|
--_ui-theme-curve: max(0, var(--ui-space-curve));
|
|
41
46
|
--ui-control-size-sm: calc(var(--ui-control-size) / var(--_ui-theme-ratio));
|
|
42
47
|
--ui-control-size-md: var(--ui-control-size);
|
|
@@ -89,7 +94,7 @@
|
|
|
89
94
|
--ui-elevation-dialog: var(--ui-shadow-lg);
|
|
90
95
|
--ui-control-inset: inset calc(var(--_ui-light-inline) * var(--_ui-theme-inner)) calc(var(--_ui-light-block) * var(--_ui-theme-inner)) calc(3px * var(--_ui-theme-inner)) rgb(0 0 0 / 0.15), inset calc(-1 * var(--_ui-light-inline)) calc(-1 * var(--_ui-light-block)) 0 rgb(255 255 255 / calc(var(--_ui-theme-edge) * var(--ui-light-strength) * 0.18)), var(--ui-material-glow);
|
|
91
96
|
--ui-pressed: inset calc(2 * var(--_ui-light-inline) * var(--_ui-theme-inner)) calc(2 * var(--_ui-light-block) * var(--_ui-theme-inner)) calc(4px * var(--_ui-theme-inner)) rgb(0 0 0 / 0.2);
|
|
92
|
-
--ui-overlay-surface:
|
|
97
|
+
--ui-overlay-surface: var(--ui-surface-raised);
|
|
93
98
|
/* Decorative outer material is allowed to transmit the scene. Content keeps
|
|
94
99
|
its own opaque plane; changing the scene cannot undermine text contrast. */
|
|
95
100
|
--ui-material-content: var(--ui-surface-raised);
|
package/vanilla/UiButton.js
CHANGED
|
@@ -27,7 +27,7 @@ let P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P
|
|
|
27
27
|
const S = { n: ["appearance","colorTone"], t: ["?","?"], f: import.meta.url, g: "ui-button", k: 0, r: readonlyView, a: (host, I) => C(host, I), b: generatedInputs };
|
|
28
28
|
const A = [["a",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","href","target","rel","aria-disabled","aria-busy","tabindex"]],["button",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","type","disabled","aria-disabled","aria-busy"]],["a",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","href","target","rel","aria-disabled","aria-busy","tabindex"]],["button",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","type","disabled","aria-disabled","aria-busy"]]];
|
|
29
29
|
const Q = [[],[],[],[]];
|
|
30
|
-
const D = { g: "ui-button", props: { "align": { "required":false,"values":["center","start"],"default":"center", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "as": { "required":false,"values":["button","a"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "href": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "rel": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "shape": { "required":false,"values":["rounded","pill"],"default":"rounded", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "size": { "required":false,"values":["xs","sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "square": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "stretch": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "target": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"
|
|
30
|
+
const D = { g: "ui-button", props: { "align": { "required":false,"values":["center","start"],"default":"center", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "as": { "required":false,"values":["button","a"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "href": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "rel": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "shape": { "required":false,"values":["rounded","pill"],"default":"rounded", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "size": { "required":false,"values":["xs","sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "square": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "stretch": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "target": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"neutral", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "type": { "required":false,"values":["button","submit","reset"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["outline","solid","danger","ghost","link","card","field"],"default":"outline", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
|
|
31
31
|
const C = (host) => activateModule(controller, host);
|
|
32
32
|
|
|
33
33
|
export function createUiButton(options = {}, html) {
|
package/vanilla/UiCombobox.d.ts
CHANGED
package/vanilla/UiCombobox.js
CHANGED
|
@@ -3,7 +3,7 @@ import { attachGeneratedController, buildTemplate, checkReference, clearRegion,
|
|
|
3
3
|
import * as controller from "../components/ui-combobox/ui-combobox.js";
|
|
4
4
|
import "../styles/ui-combobox.css";
|
|
5
5
|
|
|
6
|
-
const T0 = ["",[],"\n ",["label",[],0,1],"\n ",["div",["class","control"],"\n ",["div",["class","field"],"\n ",["div",["class","entry"],"\n ",4,"\n ",1,"\n ",["input",["role","combobox","aria-autocomplete","list","autocomplete","off"]],"\n "],"\n ",1,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",1,"\n "],"\n ",1,"\n ",["div",["class","popup"],"\n ",["div",["role","listbox"],"\n ",2,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",4,"\n "],"\n ",["div",["class","message"],"\n ",2,"\n "],"\n ",["div",["class","sr-only","role","status","aria-live","polite","aria-atomic","true"],0],"\n ",["div",["class","authored-options","hidden","","aria-hidden","true"],4],"\n "];
|
|
6
|
+
const T0 = ["",[],"\n ",["label",[],0,1],"\n ",["div",["class","control"],"\n ",["div",["class","field"],"\n ",["div",["class","entry"],"\n ",["span",["class","start"],4],"\n ",1,"\n ",["input",["role","combobox","aria-autocomplete","list","autocomplete","off"]],"\n "],"\n ",1,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",1,"\n "],"\n ",1,"\n ",["div",["class","popup"],"\n ",["div",["role","listbox"],"\n ",2,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",4,"\n "],"\n ",["div",["class","message"],"\n ",2,"\n "],"\n ",["div",["class","sr-only","role","status","aria-live","polite","aria-atomic","true"],0],"\n ",["div",["class","authored-options","hidden","","aria-hidden","true"],4],"\n "];
|
|
7
7
|
const T1 = ["",[],"\n *"];
|
|
8
8
|
const T2 = ["",[]];
|
|
9
9
|
const T3 = ["",[],"\n ",2,"\n "];
|
|
@@ -36,7 +36,7 @@ const K1 = (v0) => (plainObject(v0) && "id" in v0 && typeof v0["id"] == "string"
|
|
|
36
36
|
let P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27;
|
|
37
37
|
const E = new Map();
|
|
38
38
|
const S = { n: ["internalItems","raw","display","selected","expanded","rows","active","helpOpen","lookupError","validation","uid","submitted","groups","creatable","createIndex","message","statusText","validationStatus"], t: [["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]],"s","s","s","b",["l",["o",["id","s","value","s","label","s","group","s","disabled","b","selected","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]],"i","b","s",["o",["status",["p",formatOf(keywordFormat)],"touched","b","dirty","b","issues",["l",["o",["message","s"]]]],1],"s","s",["l",["o",["name","s","role",["p",formatOf(keywordFormat)],"label","s","rows",["l",["o",["id","s","value","s","label","s","group","s","disabled","b","selected","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]],"index","i","labelledBy","s","detail","s","option",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]],"selected","b"]]]]]]]],"b","i","s","s","s"], f: import.meta.url, g: "ui-combobox", d: { "query-change": [detailCheck(checkObject([["query", checkString, false], ["display", checkString, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "value-change": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "items-change": [detailCheck(checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false))), true, true, false], "free-entry": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "create-entry": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "validation-change": [detailCheck(checkObject([["status", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["pristine","pending","valid","warning","error"]}), false], ["touched", checkBoolean, false], ["dirty", checkBoolean, false], ["issues", checkList(checkObject([["message", checkString, false], ["path", checkList(checkUnknown), true], ["severity", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["error","warning"]}), true]], false)), false], ["output", checkUnknown, true]], false)), true, true, false], "options-change": [detailCheck(checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false))), true, true, false], "add-item": [detailCheck(checkObject([["item", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), false], ["index", checkInteger, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "remove-item": [detailCheck(checkObject([["item", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), false], ["index", checkInteger, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "create-item": [detailCheck(checkObject([["query", checkString, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "selected-values-change": [detailCheck(checkObject([["selectedValues", checkList(checkString), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false] }, x: dispatchDeclared, a: (host, I) => C(host, I), b: generatedInputs, i: [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine"] };
|
|
39
|
-
const D = { g: "ui-combobox", props: { "allowCreate": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "allowFreeText": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "autoHighlight": { "required":false,"values":["none","single"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "clearQueryOnBlur": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "clearable": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disclosure": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "filter": { "required":false,"values":["label","none"],"default":"label", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "help": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "items": { "required":false, c: checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false)), j: 1, m: ["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]] }, "label": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "labelVisibility": { "required":false,"values":["visible","sr-only"],"default":"visible", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "multiple": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "name": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "openOnFocus": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "placeholder": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "query": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "readonly": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectOnTab": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectedValues": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tokenSeparators": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
|
|
39
|
+
const D = { g: "ui-combobox", props: { "allowCreate": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "allowFreeText": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "autoHighlight": { "required":false,"values":["none","single"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "clearQueryOnBlur": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "clearable": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disclosure": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "filter": { "required":false,"values":["label","none"],"default":"label", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "help": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "items": { "required":false, c: checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false)), j: 1, m: ["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]] }, "label": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "labelVisibility": { "required":false,"values":["visible","sr-only"],"default":"visible", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "multiple": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "muted": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "name": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "openOnFocus": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "placeholder": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "query": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "readonly": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectOnTab": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectedValues": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tokenSeparators": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
|
|
40
40
|
const C = (host) => activateModule(controller, host);
|
|
41
41
|
|
|
42
42
|
export function createUiCombobox(options = {}, html) {
|
|
@@ -48,7 +48,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
48
48
|
}
|
|
49
49
|
element.setAttribute("data-component", "ui-combobox");
|
|
50
50
|
element.append((P0 ??= buildTemplate(T0)).cloneNode(true));
|
|
51
|
-
const v = [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
|
|
51
|
+
const v = [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
|
|
52
52
|
const B = acceptProps(element, D, S.n, v, componentProps, [], html);
|
|
53
53
|
v[6] = negate(1, undefined);
|
|
54
54
|
const m1 = (d) => {
|
|
@@ -95,7 +95,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
95
95
|
if (s0 !== r.v0) writeAttribute(r.n, "data-index", r.v0 = s0);
|
|
96
96
|
}
|
|
97
97
|
if (c & 1619001344) {
|
|
98
|
-
const x1 = ((truthy(v[23]) || truthy(v[
|
|
98
|
+
const x1 = ((truthy(v[23]) || truthy(v[38])) || truthy(trackContainer(r, readMember(o, "disabled"))));
|
|
99
99
|
const s1 = toAttribute(x1, "disabled");
|
|
100
100
|
if (s1 !== r.v1) writeAttribute(r.n, "disabled", r.v1 = s1);
|
|
101
101
|
}
|
|
@@ -144,7 +144,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
144
144
|
};
|
|
145
145
|
const p6 = (r, c, d) => {
|
|
146
146
|
if (c & 536870912) {
|
|
147
|
-
const x0 = v[
|
|
147
|
+
const x0 = v[34];
|
|
148
148
|
const s0 = toAttribute(x0, "name");
|
|
149
149
|
if (s0 !== r.v0) writeAttribute(r.n, "name", r.v0 = s0);
|
|
150
150
|
}
|
|
@@ -180,7 +180,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
180
180
|
const o = r.i;
|
|
181
181
|
if (c & 1073741824) r.w = 0;
|
|
182
182
|
if (c & 536870912) {
|
|
183
|
-
const x0 = v[
|
|
183
|
+
const x0 = v[34];
|
|
184
184
|
const s0 = toAttribute(x0, "name");
|
|
185
185
|
if (s0 !== r.v0) writeAttribute(r.n, "name", r.v0 = s0);
|
|
186
186
|
}
|
|
@@ -203,7 +203,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
203
203
|
};
|
|
204
204
|
const p9 = (r, c, d) => {
|
|
205
205
|
if (c & 545259530) {
|
|
206
|
-
const x0 = ((truthy(v[23]) || truthy(v[
|
|
206
|
+
const x0 = ((truthy(v[23]) || truthy(v[38])) || (!truthy(v[1]) && (truthy(v[32]) || (v[3] === null))));
|
|
207
207
|
const s0 = toAttribute(x0, "disabled");
|
|
208
208
|
if (s0 !== r.v0) writeAttribute(r.n, "disabled", r.v0 = s0);
|
|
209
209
|
}
|
|
@@ -223,7 +223,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
if (c & 545259520) {
|
|
226
|
-
const x1 = (truthy(v[23]) || truthy(v[
|
|
226
|
+
const x1 = (truthy(v[23]) || truthy(v[38]));
|
|
227
227
|
const s1 = toAttribute(x1, "disabled");
|
|
228
228
|
if (s1 !== r.v1) writeAttribute(r.n, "disabled", r.v1 = s1);
|
|
229
229
|
}
|
|
@@ -661,7 +661,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
661
661
|
}
|
|
662
662
|
}
|
|
663
663
|
if (c & 536870912) {
|
|
664
|
-
const x10 = v[
|
|
664
|
+
const x10 = v[36];
|
|
665
665
|
const s9 = toAttribute(x10, "placeholder");
|
|
666
666
|
if (s9 !== r.v9) writeAttribute(r.a6, "placeholder", r.v9 = s9);
|
|
667
667
|
}
|
|
@@ -671,7 +671,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
671
671
|
if (s10 !== r.v10) writeAttribute(r.a6, "disabled", r.v10 = s10);
|
|
672
672
|
}
|
|
673
673
|
if (c & 536870912) {
|
|
674
|
-
const x12 = v[
|
|
674
|
+
const x12 = v[38];
|
|
675
675
|
const s11 = toAttribute(x12, "readonly");
|
|
676
676
|
if (s11 !== r.v11) writeAttribute(r.a6, "readonly", r.v11 = s11);
|
|
677
677
|
const x13 = textCall("concat", [v[29], " suggestions"]);
|
|
@@ -684,7 +684,7 @@ export function createUiCombobox(options = {}, html) {
|
|
|
684
684
|
if (s16 !== r.v16) writeAttribute(r.a14, "aria-busy", r.v16 = s16);
|
|
685
685
|
}
|
|
686
686
|
if (c & 1610612737) {
|
|
687
|
-
const x15 = (checkReference(S, readDeclared(v[0], ["0"]), ["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]], "expression:$required and not ($multiple and $internalItems.0):internalItems.0", "Reference `internalItems.0` must satisfy object({ id: string, value: string, label: string, group?: string, disabled?: boolean, description?: string, tag?: object({ label: string, tone?: keyword with values neutral, accent, info, success, warning, danger, color?: string }) }).") ? (truthy(v[
|
|
687
|
+
const x15 = (checkReference(S, readDeclared(v[0], ["0"]), ["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]], "expression:$required and not ($multiple and $internalItems.0):internalItems.0", "Reference `internalItems.0` must satisfy object({ id: string, value: string, label: string, group?: string, disabled?: boolean, description?: string, tag?: object({ label: string, tone?: keyword with values neutral, accent, info, success, warning, danger, color?: string }) }).") ? (truthy(v[39]) && !(truthy(v[32]) && truthy(readIndex(v[0], 0)))) : NONCONFORMING);
|
|
688
688
|
if (x15 !== NONCONFORMING) {
|
|
689
689
|
const s12 = toAttribute(x15, "required");
|
|
690
690
|
if (s12 !== r.v12) writeAttribute(r.a6, "required", r.v12 = s12);
|
|
@@ -701,11 +701,11 @@ export function createUiCombobox(options = {}, html) {
|
|
|
701
701
|
if (s19 !== r.v19) r.a22.data = r.v19 = s19;
|
|
702
702
|
}
|
|
703
703
|
if (c & 671219712) {
|
|
704
|
-
const x18 = hostState(["size","validationStatus","invalid","multiple"], [v[
|
|
704
|
+
const x18 = hostState(["size","muted","validationStatus","invalid","multiple"], [v[42], v[33], v[17], v[27], v[32]]);
|
|
705
705
|
const s20 = x18;
|
|
706
706
|
if (s20 !== r.v20) writeAttribute(r.n, "data-ui-combobox-state", (r.v20 = s20) === "" ? null : s20);
|
|
707
707
|
}
|
|
708
|
-
if (c & 536870912 && !(truthy(v[
|
|
708
|
+
if (c & 536870912 && !(truthy(v[39])) !== !r.b0) {
|
|
709
709
|
if (r.b0) { r.b0 = undefined; clearRegion(r.a2, r.e0); }
|
|
710
710
|
else { r.b0 = m1(d); r.e0.before(r.b0.n); }
|
|
711
711
|
} else if (r.b0 !== undefined) p1(r.b0, c, d);
|
|
@@ -713,11 +713,11 @@ export function createUiCombobox(options = {}, html) {
|
|
|
713
713
|
if (r.b2) { dispose(r.b2); r.b2 = undefined; clearRegion(r.a5, r.e2); }
|
|
714
714
|
else { r.b2 = m3(d); r.e2.before(r.b2.n); }
|
|
715
715
|
} else if (r.b2 !== undefined) p3(r.b2, c, d);
|
|
716
|
-
if (c & 536870912 && !((truthy(v[
|
|
716
|
+
if (c & 536870912 && !((truthy(v[34]) && !truthy(v[32]))) !== !r.b3) {
|
|
717
717
|
if (r.b3) { r.b3 = undefined; clearRegion(r.a7, r.e3); }
|
|
718
718
|
else { r.b3 = m6(d); r.e3.before(r.b3.n); }
|
|
719
719
|
} else if (r.b3 !== undefined) p6(r.b3, c, d);
|
|
720
|
-
if (c & 536870912 && !((truthy(v[
|
|
720
|
+
if (c & 536870912 && !((truthy(v[34]) && truthy(v[32]))) !== !r.b4) {
|
|
721
721
|
if (r.b4) { r.b4 = undefined; clearRegion(r.a8, r.e4); }
|
|
722
722
|
else { r.b4 = m7(d); r.e4.before(r.b4.n); }
|
|
723
723
|
} else if (r.b4 !== undefined) p7(r.b4, c, d);
|
|
@@ -772,38 +772,39 @@ export function createUiCombobox(options = {}, html) {
|
|
|
772
772
|
const t4 = t3.firstChild.nextSibling;
|
|
773
773
|
const t5 = t4.firstChild.nextSibling;
|
|
774
774
|
const t6 = t5.firstChild.nextSibling;
|
|
775
|
-
const t7 = t6.
|
|
776
|
-
const t8 =
|
|
777
|
-
const t9 =
|
|
778
|
-
const t10 =
|
|
775
|
+
const t7 = t6.firstChild;
|
|
776
|
+
const t8 = t6.nextSibling.nextSibling;
|
|
777
|
+
const t9 = t8.nextSibling.nextSibling.nextSibling;
|
|
778
|
+
const t10 = t5.nextSibling.nextSibling;
|
|
779
779
|
const t11 = t10.nextSibling.nextSibling.nextSibling;
|
|
780
780
|
const t12 = t11.nextSibling.nextSibling.nextSibling;
|
|
781
|
-
const t13 =
|
|
782
|
-
const t14 =
|
|
783
|
-
const t15 =
|
|
784
|
-
const t16 = t15.
|
|
781
|
+
const t13 = t12.nextSibling.nextSibling.nextSibling;
|
|
782
|
+
const t14 = t4.nextSibling.nextSibling;
|
|
783
|
+
const t15 = t3.nextSibling.nextSibling;
|
|
784
|
+
const t16 = t15.nextSibling.nextSibling.nextSibling;
|
|
785
785
|
const t17 = t16.firstChild.nextSibling;
|
|
786
|
-
const t18 = t17.
|
|
786
|
+
const t18 = t17.firstChild.nextSibling;
|
|
787
787
|
const t19 = t18.nextSibling.nextSibling.nextSibling;
|
|
788
788
|
const t20 = t19.nextSibling.nextSibling.nextSibling;
|
|
789
|
-
const t21 =
|
|
790
|
-
const t22 =
|
|
791
|
-
const t23 =
|
|
792
|
-
const t24 =
|
|
793
|
-
const t25 =
|
|
794
|
-
const t26 =
|
|
795
|
-
const t27 =
|
|
796
|
-
const
|
|
789
|
+
const t21 = t20.nextSibling.nextSibling.nextSibling;
|
|
790
|
+
const t22 = t17.nextSibling.nextSibling;
|
|
791
|
+
const t23 = t16.nextSibling.nextSibling;
|
|
792
|
+
const t24 = t23.firstChild.nextSibling;
|
|
793
|
+
const t25 = t23.nextSibling.nextSibling;
|
|
794
|
+
const t26 = t25.firstChild;
|
|
795
|
+
const t27 = t25.nextSibling.nextSibling;
|
|
796
|
+
const t28 = t27.firstChild;
|
|
797
|
+
const R = { n: element, a0: t0, a1: t1, a6: t9, a13: t16, a14: t17, a20: t23, a22: t26, v0: null, v1: false, v2: "", v3: null, v4: null, v5: null, v6: null, v7: null, v8: undefined, v9: null, v10: null, v11: null, v12: null, v13: null, v14: null, v15: null, v16: null, v17: null, v18: null, v19: "", v20: undefined, a2: t2, e0: t2.nextSibling, b0: undefined, a4: t7, e1: t7.nextSibling, b1: undefined, f1: undefined, a5: t8, e2: t8.nextSibling, b2: undefined, a7: t10, e3: t10.nextSibling, b3: undefined, a8: t11, e4: t11.nextSibling, b4: undefined, a9: t12, e5: t12.nextSibling, b5: undefined, a10: t13, e6: t13.nextSibling, b6: undefined, a11: t14, e7: t14.nextSibling, b7: undefined, a12: t15, e8: t15.nextSibling, b8: undefined, L9: new KeyedList(t18, t18.nextSibling, m13, p13, (o) => readMember(o, "name"), "group"), a16: t19, e10: t19.nextSibling, b10: undefined, a17: t20, e11: t20.nextSibling, b11: undefined, a18: t21, e12: t21.nextSibling, b12: undefined, a19: t22, e13: t22.nextSibling, b13: undefined, f13: undefined, L14: new IndexedList(t24, t24.nextSibling, m26, p26, undefined, "issue"), a24: t28, e15: t28.nextSibling, b15: undefined, f15: undefined };
|
|
797
798
|
const I = { B };
|
|
798
799
|
const J = project(I, children, slots);
|
|
799
800
|
I.R = new Set();
|
|
800
801
|
attachGeneratedController(element, S, v, (c, d) => { ((c, d) => p0(R, c, d))(c, d); for (const f of I.R) f(c, d); }, undefined, undefined, I);
|
|
801
802
|
manageProps(I);
|
|
802
803
|
I.r["field"] = t4;
|
|
803
|
-
I.r["input"] =
|
|
804
|
-
I.r["popup"] =
|
|
805
|
-
I.r["listbox"] =
|
|
806
|
-
I.r["options"] =
|
|
804
|
+
I.r["input"] = t9;
|
|
805
|
+
I.r["popup"] = t16;
|
|
806
|
+
I.r["listbox"] = t17;
|
|
807
|
+
I.r["options"] = t27;
|
|
807
808
|
return element;
|
|
808
809
|
}
|
|
809
|
-
defineComponent("ui-combobox", createUiCombobox, ["allowCreate","allowFreeText","autoHighlight","clearQueryOnBlur","clearable","disabled","disclosure","filter","help","invalid","items","label","labelVisibility","loading","multiple","name","openOnFocus","placeholder","query","readonly","required","selectOnTab","selectedValues","size","tokenSeparators","value"]);
|
|
810
|
+
defineComponent("ui-combobox", createUiCombobox, ["allowCreate","allowFreeText","autoHighlight","clearQueryOnBlur","clearable","disabled","disclosure","filter","help","invalid","items","label","labelVisibility","loading","multiple","muted","name","openOnFocus","placeholder","query","readonly","required","selectOnTab","selectedValues","size","tokenSeparators","value"]);
|
|
@@ -21,7 +21,7 @@ export interface UiIconButtonProps {
|
|
|
21
21
|
revealed?: boolean | null;
|
|
22
22
|
round?: boolean | null;
|
|
23
23
|
size?: "sm" | "md" | "lg" | null;
|
|
24
|
-
tone?: "
|
|
24
|
+
tone?: "accent" | "neutral" | "danger" | "success" | "warning" | "info" | null;
|
|
25
25
|
variant?: "ghost" | "outline" | "solid" | null;
|
|
26
26
|
attributes?: Readonly<Record<string, string | number | boolean | null | undefined>>;
|
|
27
27
|
children?: readonly (string | Node)[];
|
package/vanilla/UiIconButton.js
CHANGED
|
@@ -8,7 +8,7 @@ const T1 = ["ui-spinner",["size","sm"]];
|
|
|
8
8
|
const T2 = ["",[]];
|
|
9
9
|
let P0, P1, P2;
|
|
10
10
|
const S = { n: ["appearance","colorTone"], t: ["?","?"], f: import.meta.url, g: "ui-icon-button", k: 0, r: readonlyView, a: (host, I) => C(host, I), b: generatedInputs };
|
|
11
|
-
const D = { g: "ui-icon-button", props: { "anticipatory": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "guide": { "required":false,"values":["dot","bar"],"default":"dot", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "label": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "matchButton": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "revealed": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "round": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tone": { "required":false,"values":["
|
|
11
|
+
const D = { g: "ui-icon-button", props: { "anticipatory": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "guide": { "required":false,"values":["dot","bar"],"default":"dot", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "label": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "matchButton": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "revealed": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "round": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"neutral", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["ghost","outline","solid"],"default":"ghost", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
|
|
12
12
|
const C = (host) => activateModule(controller, host);
|
|
13
13
|
|
|
14
14
|
export function createUiIconButton(options = {}, html) {
|
package/vanilla/UiSelect.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface UiSelectElement extends HTMLSelectElement {
|
|
|
12
12
|
export interface UiSelectProps {
|
|
13
13
|
disabled?: boolean | null;
|
|
14
14
|
invalid?: boolean | null;
|
|
15
|
+
muted?: boolean | null;
|
|
15
16
|
required?: boolean | null;
|
|
16
17
|
size?: "sm" | "md" | "lg" | null;
|
|
17
18
|
value?: string | null;
|