use-wc 1.0.0-pre.45 → 1.0.0-pre.47
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/custom-elements.json +66 -66
- package/dist/design-system.css +58 -31
- package/dist/docs/use-dropdown.md +3 -0
- package/dist/tokens.css +9 -6
- package/dist/use-wc.d.mts +3 -6
- package/dist/use-wc.mjs +6 -1
- package/package.json +8 -5
- package/vscode.html-custom-data.json +7 -7
package/custom-elements.json
CHANGED
|
@@ -396,71 +396,6 @@
|
|
|
396
396
|
}
|
|
397
397
|
]
|
|
398
398
|
},
|
|
399
|
-
{
|
|
400
|
-
"kind": "javascript-module",
|
|
401
|
-
"path": "src/elements/use-calendarday/use-calendarday.ts",
|
|
402
|
-
"declarations": [
|
|
403
|
-
{
|
|
404
|
-
"kind": "class",
|
|
405
|
-
"description": "A helper component for customizing specific days within `use-calendar`.\nContent placed inside this element will replace the default day number display.",
|
|
406
|
-
"name": "UseCalendarday",
|
|
407
|
-
"slots": [
|
|
408
|
-
{
|
|
409
|
-
"description": "slot for custom day content (replaces the day number)",
|
|
410
|
-
"name": "default"
|
|
411
|
-
}
|
|
412
|
-
],
|
|
413
|
-
"members": [
|
|
414
|
-
{
|
|
415
|
-
"kind": "field",
|
|
416
|
-
"name": "date",
|
|
417
|
-
"type": {
|
|
418
|
-
"text": "string"
|
|
419
|
-
},
|
|
420
|
-
"attribute": "date"
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
"kind": "field",
|
|
424
|
-
"name": "day",
|
|
425
|
-
"readonly": true
|
|
426
|
-
}
|
|
427
|
-
],
|
|
428
|
-
"attributes": [
|
|
429
|
-
{
|
|
430
|
-
"name": "date",
|
|
431
|
-
"type": {
|
|
432
|
-
"text": "string"
|
|
433
|
-
},
|
|
434
|
-
"fieldName": "date"
|
|
435
|
-
}
|
|
436
|
-
],
|
|
437
|
-
"superclass": {
|
|
438
|
-
"name": "LitElement",
|
|
439
|
-
"package": "lit"
|
|
440
|
-
},
|
|
441
|
-
"tagName": "use-calendarday",
|
|
442
|
-
"customElement": true
|
|
443
|
-
}
|
|
444
|
-
],
|
|
445
|
-
"exports": [
|
|
446
|
-
{
|
|
447
|
-
"kind": "js",
|
|
448
|
-
"name": "UseCalendarday",
|
|
449
|
-
"declaration": {
|
|
450
|
-
"name": "UseCalendarday",
|
|
451
|
-
"module": "src/elements/use-calendarday/use-calendarday.ts"
|
|
452
|
-
}
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
"kind": "custom-element-definition",
|
|
456
|
-
"name": "use-calendarday",
|
|
457
|
-
"declaration": {
|
|
458
|
-
"name": "UseCalendarday",
|
|
459
|
-
"module": "src/elements/use-calendarday/use-calendarday.ts"
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
]
|
|
463
|
-
},
|
|
464
399
|
{
|
|
465
400
|
"kind": "javascript-module",
|
|
466
401
|
"path": "src/elements/use-date-input/use-date-input.ts",
|
|
@@ -587,6 +522,71 @@
|
|
|
587
522
|
}
|
|
588
523
|
]
|
|
589
524
|
},
|
|
525
|
+
{
|
|
526
|
+
"kind": "javascript-module",
|
|
527
|
+
"path": "src/elements/use-calendarday/use-calendarday.ts",
|
|
528
|
+
"declarations": [
|
|
529
|
+
{
|
|
530
|
+
"kind": "class",
|
|
531
|
+
"description": "A helper component for customizing specific days within `use-calendar`.\nContent placed inside this element will replace the default day number display.",
|
|
532
|
+
"name": "UseCalendarday",
|
|
533
|
+
"slots": [
|
|
534
|
+
{
|
|
535
|
+
"description": "slot for custom day content (replaces the day number)",
|
|
536
|
+
"name": "default"
|
|
537
|
+
}
|
|
538
|
+
],
|
|
539
|
+
"members": [
|
|
540
|
+
{
|
|
541
|
+
"kind": "field",
|
|
542
|
+
"name": "date",
|
|
543
|
+
"type": {
|
|
544
|
+
"text": "string"
|
|
545
|
+
},
|
|
546
|
+
"attribute": "date"
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"kind": "field",
|
|
550
|
+
"name": "day",
|
|
551
|
+
"readonly": true
|
|
552
|
+
}
|
|
553
|
+
],
|
|
554
|
+
"attributes": [
|
|
555
|
+
{
|
|
556
|
+
"name": "date",
|
|
557
|
+
"type": {
|
|
558
|
+
"text": "string"
|
|
559
|
+
},
|
|
560
|
+
"fieldName": "date"
|
|
561
|
+
}
|
|
562
|
+
],
|
|
563
|
+
"superclass": {
|
|
564
|
+
"name": "LitElement",
|
|
565
|
+
"package": "lit"
|
|
566
|
+
},
|
|
567
|
+
"tagName": "use-calendarday",
|
|
568
|
+
"customElement": true
|
|
569
|
+
}
|
|
570
|
+
],
|
|
571
|
+
"exports": [
|
|
572
|
+
{
|
|
573
|
+
"kind": "js",
|
|
574
|
+
"name": "UseCalendarday",
|
|
575
|
+
"declaration": {
|
|
576
|
+
"name": "UseCalendarday",
|
|
577
|
+
"module": "src/elements/use-calendarday/use-calendarday.ts"
|
|
578
|
+
}
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"kind": "custom-element-definition",
|
|
582
|
+
"name": "use-calendarday",
|
|
583
|
+
"declaration": {
|
|
584
|
+
"name": "UseCalendarday",
|
|
585
|
+
"module": "src/elements/use-calendarday/use-calendarday.ts"
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
]
|
|
589
|
+
},
|
|
590
590
|
{
|
|
591
591
|
"kind": "javascript-module",
|
|
592
592
|
"path": "src/elements/use-date-picker/use-date-picker.ts",
|
|
@@ -1454,7 +1454,7 @@
|
|
|
1454
1454
|
"declarations": [
|
|
1455
1455
|
{
|
|
1456
1456
|
"kind": "class",
|
|
1457
|
-
"description": "When the popover is opened the tabbable elements are found and indexed for\nkeyboard navigation. The first tabbable element is focused when the popover is opened. The\nfollowing selector is used to find tabbable elements:\n\n```css\n:is(\n [role=\"menuitem\"],\n [role=\"menuitemcheckbox\"],\n [role=\"menuitemradio\"],\n use-menu\n):not(:is(\n [disabled],\n [hidden],\n [inert],\n [aria-hidden=\"true\"]\n))\n```\n\nMenu items are not used for navigation, they are intended for related action\nitems that allows a user to manipulate a user interface or content. Read the\nWCAG guidance for more details:\n[https://www.w3.org/WAI/ARIA/apg/patterns/menubar/](https://www.w3.org/WAI/ARIA/apg/patterns/menubar/)",
|
|
1457
|
+
"description": "When the popover is opened the tabbable elements are found and indexed for\nkeyboard navigation. The first tabbable element is focused when the popover is opened. The\nfollowing selector is used to find tabbable elements:\n\n```css\n:is(\n [role=\"menuitem\"],\n [role=\"menuitemcheckbox\"],\n [role=\"menuitemradio\"],\n use-menu\n):not(:is(\n [disabled],\n [hidden],\n [inert],\n [aria-hidden=\"true\"]\n))\n```\n\nMenu items are not used for navigation, they are intended for related action\nitems that allows a user to manipulate a user interface or content. Read the\nWCAG guidance for more details:\n[https://www.w3.org/WAI/ARIA/apg/patterns/menubar/](https://www.w3.org/WAI/ARIA/apg/patterns/menubar/)\n\nFor an icon-only trigger, omit `label` and set `aria-label` on `use-dropdown` itself — it is\nforwarded to the trigger button so the control still has an accessible name.",
|
|
1458
1458
|
"name": "UseDropdown",
|
|
1459
1459
|
"slots": [
|
|
1460
1460
|
{
|
package/dist/design-system.css
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
|
|
17
17
|
:is(button, a, details summary, use-widget):not(.appearance-native):focus-visible,
|
|
18
18
|
:is(input, textarea, select, use-date-input, use-time-input, use-datetime-input, use-duration-input):not(
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
.appearance-native
|
|
20
|
+
):focus,
|
|
21
21
|
input[type="file"]:not(.appearance-native):focus-visible,
|
|
22
22
|
use-dropdown:not(.appearance-native)::part(trigger):focus-visible,
|
|
23
23
|
.appearance-input:has(input:focus) {
|
|
@@ -266,6 +266,12 @@
|
|
|
266
266
|
var(--usewc-color-button-border-static);
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
&::part(trigger) {
|
|
270
|
+
padding-inline-end: calc(
|
|
271
|
+
var(--usewc-layout-button-padding-inline) - var(--usewc-layout-dropdown-trigger-icon-size) / 4
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
269
275
|
&:is(use-dropdown) {
|
|
270
276
|
display: contents;
|
|
271
277
|
}
|
|
@@ -283,7 +289,7 @@
|
|
|
283
289
|
}
|
|
284
290
|
|
|
285
291
|
&:active:not([type="file"], use-dropdown),
|
|
286
|
-
|
|
292
|
+
&::part(trigger):active,
|
|
287
293
|
&:active::file-selector-button {
|
|
288
294
|
background: var(--usewc-color-button-background-active);
|
|
289
295
|
border-color: var(--usewc-color-button-border-active);
|
|
@@ -655,21 +661,13 @@
|
|
|
655
661
|
}
|
|
656
662
|
}
|
|
657
663
|
|
|
658
|
-
select:not(.appearance-native)
|
|
659
|
-
use-dropdown::part(trigger),
|
|
660
|
-
use-dropdown use-dropdown::part(trigger) {
|
|
664
|
+
select:not(.appearance-native) {
|
|
661
665
|
padding-inline-end: calc(var(--usewc-layout-input-padding-inline) * 2 + var(--usewc-layout-selector-width));
|
|
662
|
-
background-image: var(--usewc-effect-
|
|
666
|
+
background-image: var(--usewc-effect-select-trigger-background-image, none);
|
|
663
667
|
/* TODO use logical position */
|
|
664
668
|
background-position: right var(--usewc-layout-input-padding-inline) center;
|
|
665
669
|
background-repeat: no-repeat;
|
|
666
|
-
background-size: var(--usewc-effect-
|
|
667
|
-
background-blend-mode: var(--usewc-effect-dropdown-trigger-background-blend-mode, none);
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
use-dropdown use-dropdown::part(trigger) {
|
|
671
|
-
background-image: var(--usewc-effect-dropdown-trigger-nested-background-image);
|
|
672
|
-
background-position: right center;
|
|
670
|
+
background-size: var(--usewc-effect-select-trigger-background-size, 1em);
|
|
673
671
|
}
|
|
674
672
|
|
|
675
673
|
select:not(.appearance-native),
|
|
@@ -682,30 +680,56 @@
|
|
|
682
680
|
anchor-scope: --use-popover-trigger;
|
|
683
681
|
}
|
|
684
682
|
|
|
685
|
-
use-dropdown::part(trigger-icon-default),
|
|
686
683
|
use-option::part(selected-indicator-default) {
|
|
687
684
|
display: none;
|
|
688
685
|
}
|
|
689
686
|
|
|
687
|
+
use-dropdown::part(trigger-icon-default) {
|
|
688
|
+
display: inline-block;
|
|
689
|
+
overflow: hidden;
|
|
690
|
+
white-space: nowrap;
|
|
691
|
+
text-indent: 100%;
|
|
692
|
+
inline-size: var(--usewc-layout-dropdown-trigger-icon-size);
|
|
693
|
+
block-size: var(--usewc-layout-dropdown-trigger-icon-size);
|
|
694
|
+
background-color: var(--usewc-effect-dropdown-trigger-icon-background-color, currentColor);
|
|
695
|
+
mask-image: var(--usewc-effect-dropdown-trigger-icon-mask-image, none);
|
|
696
|
+
mask-size: contain;
|
|
697
|
+
mask-repeat: no-repeat;
|
|
698
|
+
mask-position: center;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
use-dropdown use-dropdown::part(trigger-icon-default) {
|
|
702
|
+
mask-image: var(--usewc-effect-dropdown-trigger-icon-nested-mask-image, none);
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
use-dropdown use-dropdown::part(trigger-icon) {
|
|
706
|
+
margin-inline-start: auto;
|
|
707
|
+
}
|
|
708
|
+
|
|
690
709
|
use-dropdown::part(menu) {
|
|
710
|
+
--min-size: 30vh;
|
|
711
|
+
--max-size: 80vh;
|
|
712
|
+
|
|
713
|
+
inset: unset;
|
|
714
|
+
height: unset;
|
|
715
|
+
position-anchor: --use-popover-trigger;
|
|
716
|
+
position: fixed;
|
|
717
|
+
position-area: bottom span-right;
|
|
718
|
+
min-block-size: var(--min-size);
|
|
719
|
+
max-block-size: min(100% - var(--usewc-layout-popover-menu-anchor-offset), var(--max-size));
|
|
720
|
+
position-try: flip-block;
|
|
721
|
+
margin-block: var(--usewc-layout-popover-menu-anchor-offset);
|
|
722
|
+
overflow: auto;
|
|
691
723
|
border: var(--usewc-layout-popover-menu-border) var(--usewc-effect-popover-menu-border-style)
|
|
692
724
|
var(--usewc-color-popover-menu-border);
|
|
693
725
|
padding: var(--usewc-layout-popover-menu-padding);
|
|
694
726
|
background: var(--usewc-color-popover-menu-background);
|
|
695
727
|
border-radius: var(--usewc-effect-popover-menu-border-radius);
|
|
696
|
-
margin: unset;
|
|
697
|
-
}
|
|
698
728
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
inset-block-start: calc(anchor(end) + var(--usewc-layout-popover-menu-anchor-offset));
|
|
704
|
-
inset-inline-start: anchor(start);
|
|
705
|
-
position-try-fallbacks:
|
|
706
|
-
flip-block,
|
|
707
|
-
flip-inline,
|
|
708
|
-
flip-inline flip-block;
|
|
729
|
+
@supports (min-block-size: calc-size(fit-content, min(size, 1px))) {
|
|
730
|
+
min-block-size: calc-size(fit-content, min(size, var(--min-size)));
|
|
731
|
+
max-block-size: calc-size(stretch, min(size, var(--max-size)));
|
|
732
|
+
}
|
|
709
733
|
}
|
|
710
734
|
|
|
711
735
|
use-option,
|
|
@@ -790,11 +814,15 @@
|
|
|
790
814
|
}
|
|
791
815
|
|
|
792
816
|
use-dropdown use-dropdown::part(menu) {
|
|
793
|
-
|
|
817
|
+
inset-inline-start: calc(anchor(end) + var(--usewc-layout-popover-menu-anchor-offset) * 2);
|
|
794
818
|
inset-block-start: calc(
|
|
795
|
-
anchor(start) - var(--usewc-layout-popover-menu-
|
|
819
|
+
anchor(start) - var(--usewc-layout-popover-menu-anchor-offset) -
|
|
820
|
+
var(--usewc-layout-popover-menu-item-padding-block)
|
|
796
821
|
);
|
|
797
|
-
|
|
822
|
+
position-try:
|
|
823
|
+
flip-block,
|
|
824
|
+
flip-inline,
|
|
825
|
+
flip-inline flip-block;
|
|
798
826
|
}
|
|
799
827
|
|
|
800
828
|
use-dropdown [aria-checked="true"],
|
|
@@ -804,6 +832,5 @@
|
|
|
804
832
|
background-position: left var(--usewc-layout-input-padding-inline) center;
|
|
805
833
|
background-repeat: no-repeat;
|
|
806
834
|
background-size: var(--usewc-effect-menu-item-checkmark-background-size, 1em);
|
|
807
|
-
background-blend-mode: var(--usewc-effect-menu-item-checkmark-background-blend-mode, none);
|
|
808
835
|
}
|
|
809
836
|
}
|
|
@@ -23,6 +23,9 @@ items that allows a user to manipulate a user interface or content. Read the
|
|
|
23
23
|
WCAG guidance for more details:
|
|
24
24
|
[https://www.w3.org/WAI/ARIA/apg/patterns/menubar/](https://www.w3.org/WAI/ARIA/apg/patterns/menubar/)
|
|
25
25
|
|
|
26
|
+
For an icon-only trigger, omit `label` and set `aria-label` on `use-dropdown` itself — it is
|
|
27
|
+
forwarded to the trigger button so the control still has an accessible name.
|
|
28
|
+
|
|
26
29
|
## Attributes
|
|
27
30
|
|
|
28
31
|
| Name | Type | Default | Description |
|
package/dist/tokens.css
CHANGED
|
@@ -177,13 +177,14 @@
|
|
|
177
177
|
--usewc-color-input-segment-background-hover: transparent;
|
|
178
178
|
--usewc-color-input-segment-background-focus: var(--usewc-color-blue-100);
|
|
179
179
|
--usewc-color-input-segment-text-focus: var(--usewc-color-gray-700);
|
|
180
|
-
--usewc-effect-dropdown-trigger-
|
|
181
|
-
--usewc-effect-dropdown-trigger-nested-
|
|
182
|
-
--usewc-effect-dropdown-trigger-background-
|
|
183
|
-
--usewc-
|
|
184
|
-
--usewc-effect-
|
|
180
|
+
--usewc-effect-dropdown-trigger-icon-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 16L5.0718 8.5L18.9282 8.5L12 16Z' fill='black' /%3E%3C/svg%3E");
|
|
181
|
+
--usewc-effect-dropdown-trigger-icon-nested-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 12L8.5 18.9282L8.5 5.0718Z' fill='black' /%3E%3C/svg%3E");
|
|
182
|
+
--usewc-effect-dropdown-trigger-icon-background-color: color-mix(in oklab, currentColor 50%, transparent);
|
|
183
|
+
--usewc-layout-dropdown-trigger-icon-size: 1em;
|
|
184
|
+
--usewc-effect-select-trigger-background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 16L5.0718 8.5L18.9282 8.5L12 16Z' fill='rgb(55,65,81)' /%3E%3C/svg%3E");
|
|
185
|
+
--usewc-effect-select-trigger-background-size: 1em;
|
|
186
|
+
--usewc-effect-menu-item-checkmark-background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 13L10 18L19 7' stroke='rgb(55,65,81)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C%2Fsvg%3E");
|
|
185
187
|
--usewc-effect-menu-item-checkmark-background-size: 1em;
|
|
186
|
-
--usewc-effect-menu-item-checkmark-background-blend-mode: difference;
|
|
187
188
|
/* - Layout */
|
|
188
189
|
--usewc-layout-input-border: var(--usewc-space-1-relative);
|
|
189
190
|
--usewc-layout-input-padding-block: calc(var(--usewc-space-4) - var(--usewc-layout-input-border));
|
|
@@ -428,6 +429,8 @@
|
|
|
428
429
|
--usewc-color-range-track-border-static: var(--usewc-color-gray-700);
|
|
429
430
|
--usewc-color-range-track-border-hover: var(--usewc-color-gray-600);
|
|
430
431
|
--usewc-color-selector-background-hover: oklch(from var(--usewc-color-gray-700) l c h / 0.5);
|
|
432
|
+
--usewc-effect-select-trigger-background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 16L5.0718 8.5L18.9282 8.5L12 16Z' fill='rgb(229,231,235)' /%3E%3C/svg%3E");
|
|
433
|
+
--usewc-effect-menu-item-checkmark-background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 13L10 18L19 7' stroke='rgb(229,231,235)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C%2Fsvg%3E");
|
|
431
434
|
}
|
|
432
435
|
}
|
|
433
436
|
|
package/dist/use-wc.d.mts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { CSSResultGroup, LitElement, TemplateResult, html } from "lit";
|
|
2
|
-
|
|
3
2
|
//#region node_modules/lit-html/development/lit-html.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* @license
|
|
6
|
-
* Copyright 2017 Google LLC
|
|
7
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
8
|
-
*/
|
|
9
3
|
/** TemplateResult types */
|
|
10
4
|
declare const HTML_RESULT = 1;
|
|
11
5
|
declare const SVG_RESULT = 2;
|
|
@@ -167,6 +161,9 @@ declare global {
|
|
|
167
161
|
* WCAG guidance for more details:
|
|
168
162
|
* [https://www.w3.org/WAI/ARIA/apg/patterns/menubar/](https://www.w3.org/WAI/ARIA/apg/patterns/menubar/)
|
|
169
163
|
*
|
|
164
|
+
* For an icon-only trigger, omit `label` and set `aria-label` on `use-dropdown` itself — it is
|
|
165
|
+
* forwarded to the trigger button so the control still has an accessible name.
|
|
166
|
+
*
|
|
170
167
|
* @slot default
|
|
171
168
|
* @slot trigger-content
|
|
172
169
|
* @slot trigger-label
|
package/dist/use-wc.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LitElement, css, html } from "lit";
|
|
2
2
|
import { customElement, property, query, queryAssignedElements } from "lit/decorators.js";
|
|
3
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
3
4
|
import { getTabIndex, isTabbable, tabbable } from "tabbable";
|
|
4
5
|
import * as duration from "duration-fns";
|
|
5
6
|
import { map } from "lit/directives/map.js";
|
|
@@ -9,7 +10,7 @@ function createId() {
|
|
|
9
10
|
return ":" + Math.random().toString(36).substring(2, 6) + ":";
|
|
10
11
|
}
|
|
11
12
|
//#endregion
|
|
12
|
-
//#region \0@oxc-project+runtime@0.
|
|
13
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
|
|
13
14
|
function __decorate(decorators, target, key, desc) {
|
|
14
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
16
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -537,6 +538,9 @@ let UseDropdown = class UseDropdown extends LitElement {
|
|
|
537
538
|
get #popoverId() {
|
|
538
539
|
return `${this.getId()}-dropdown`;
|
|
539
540
|
}
|
|
541
|
+
get #triggerAriaLabel() {
|
|
542
|
+
return this.getAttribute("aria-label") ?? void 0;
|
|
543
|
+
}
|
|
540
544
|
#findTabbables() {
|
|
541
545
|
return Array.from(this.querySelectorAll(TABBABLE_SELECTOR$1)).filter((element) => {
|
|
542
546
|
return element.parentElement?.closest("use-dropdown") === this;
|
|
@@ -676,6 +680,7 @@ let UseDropdown = class UseDropdown extends LitElement {
|
|
|
676
680
|
aria-controls=${this.#popoverId}
|
|
677
681
|
aria-haspopup="menu"
|
|
678
682
|
aria-expanded="false"
|
|
683
|
+
aria-label=${ifDefined(this.#triggerAriaLabel)}
|
|
679
684
|
?disabled=${this.disabled}
|
|
680
685
|
@keydown=${this.#handleKeyDown}
|
|
681
686
|
>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "use-wc",
|
|
3
|
-
"version": "1.0.0-pre.
|
|
3
|
+
"version": "1.0.0-pre.47",
|
|
4
4
|
"private": false,
|
|
5
5
|
"homepage": "https://usewc.com",
|
|
6
6
|
"bugs": "https://github.com/dang-rabbits/use-wc/issues",
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
"@storybook/web-components-vite": "^10.2.7",
|
|
50
50
|
"@types/node": "^25.5.0",
|
|
51
51
|
"@typescript/native-preview": "7.0.0-dev.20260316.1",
|
|
52
|
-
"@vitest/
|
|
52
|
+
"@vitest/browser-playwright": "4.1.10",
|
|
53
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
53
54
|
"baseline-status": "^1.0.10",
|
|
54
55
|
"custom-element-vs-code-integration": "^1.5.0",
|
|
55
56
|
"eslint-config-prettier": "^10.1.1",
|
|
@@ -62,7 +63,9 @@
|
|
|
62
63
|
"storybook-addon-tag-badges": "^1.4.0",
|
|
63
64
|
"typescript": "^5.9.3",
|
|
64
65
|
"typescript-eslint": "^8.29.1",
|
|
65
|
-
"vite
|
|
66
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@0.2.6",
|
|
67
|
+
"vite-plus": "0.2.6",
|
|
68
|
+
"vitest": "4.1.10",
|
|
66
69
|
"vitest-browser-lit": "^1.0.1"
|
|
67
70
|
},
|
|
68
71
|
"overrides": {
|
|
@@ -77,8 +80,8 @@
|
|
|
77
80
|
"npm": "^11.18.0",
|
|
78
81
|
"postcss": "^8.5.10",
|
|
79
82
|
"storybook": "$storybook",
|
|
80
|
-
"vite": "npm:@voidzero-dev/vite-plus-core@
|
|
81
|
-
"vitest": "
|
|
83
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@0.2.6",
|
|
84
|
+
"vitest": "4.1.10"
|
|
82
85
|
},
|
|
83
86
|
"packageManager": "npm@11.12.1",
|
|
84
87
|
"customElements": "custom-elements.json",
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
|
|
3
3
|
"version": 1.1,
|
|
4
4
|
"tags": [
|
|
5
|
-
{
|
|
6
|
-
"name": "use-calendarday",
|
|
7
|
-
"description": "A helper component for customizing specific days within `use-calendar`.\nContent placed inside this element will replace the default day number display.\n---\n\n\n### **Slots:**\n - **default** - slot for custom day content (replaces the day number)",
|
|
8
|
-
"attributes": [{ "name": "date", "values": [] }],
|
|
9
|
-
"references": []
|
|
10
|
-
},
|
|
11
5
|
{
|
|
12
6
|
"name": "use-date-input",
|
|
13
7
|
"description": "Displays a date picker using segmented inputs for year, month, and day.\n\nUses browser locale for formatting and ARIA labels.\n---\n",
|
|
@@ -19,6 +13,12 @@
|
|
|
19
13
|
],
|
|
20
14
|
"references": []
|
|
21
15
|
},
|
|
16
|
+
{
|
|
17
|
+
"name": "use-calendarday",
|
|
18
|
+
"description": "A helper component for customizing specific days within `use-calendar`.\nContent placed inside this element will replace the default day number display.\n---\n\n\n### **Slots:**\n - **default** - slot for custom day content (replaces the day number)",
|
|
19
|
+
"attributes": [{ "name": "date", "values": [] }],
|
|
20
|
+
"references": []
|
|
21
|
+
},
|
|
22
22
|
{
|
|
23
23
|
"name": "use-date-picker",
|
|
24
24
|
"description": "A day-granularity date picker. Value format: YYYY-MM-DD.\n---\n\n\n### **Events:**\n - **use-change** - Fired on selection with detail `{ value: string }`\n\n### **Slots:**\n - **header-start** - Content before the title in the header\n- **title** - Title showing the month and year\n- **controls** - Navigation controls (previous, today, next buttons)\n- **header-end** - Content after the controls in the header\n- **date-{YYYY-MM-DD}** - Per-date content that replaces the default day number\n\n### **CSS Parts:**\n - **header** - The header container\n- **title** - The title text\n- **title-month** - The month part of the title\n- **title-literal** - Literal text in the title\n- **title-year** - The year part of the title\n- **controls** - The controls slot container\n- **control** - Individual control button\n- **control-previous** - Previous month button\n- **control-today** - Today button\n- **control-next** - Next month button\n- **grid** - The main calendar grid\n- **grid-header** - The header row with day names\n- **grid-header-cell** - Individual day name header cell\n- **grid-body** - The container for calendar weeks\n- **row** - A row of days\n- **day** - A day cell\n- **day-empty** - An empty day cell (from previous/next month)\n- **day-selected** - A selected day cell\n- **day-today** - The current date cell\n- **day-disabled** - A disabled date cell\n- **title-button** - The clickable button wrapping the month/year title\n- **picker** - The scrollable month/year picker panel (replaces grid when open)\n- **picker-year-section** - Container for one year's label and month grid\n- **picker-year-label** - The year heading inside a year section\n- **picker-months** - The 4-column month grid inside a year section\n- **picker-month** - An individual month button\n- **picker-month-current** - Applied to the currently selected month button",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
"name": "use-dropdown",
|
|
77
|
-
"description": "When the popover is opened the tabbable elements are found and indexed for\nkeyboard navigation. The first tabbable element is focused when the popover is opened. The\nfollowing selector is used to find tabbable elements:\n\n```css\n:is(\n [role=\"menuitem\"],\n [role=\"menuitemcheckbox\"],\n [role=\"menuitemradio\"],\n use-menu\n):not(:is(\n [disabled],\n [hidden],\n [inert],\n [aria-hidden=\"true\"]\n))\n```\n\nMenu items are not used for navigation, they are intended for related action\nitems that allows a user to manipulate a user interface or content. Read the\nWCAG guidance for more details:\n[https://www.w3.org/WAI/ARIA/apg/patterns/menubar/](https://www.w3.org/WAI/ARIA/apg/patterns/menubar/)\n---\n\n\n### **Slots:**\n - **default** - undefined\n- **trigger-content** - undefined\n- **trigger-label** - undefined\n- **trigger-arrow** - undefined",
|
|
77
|
+
"description": "When the popover is opened the tabbable elements are found and indexed for\nkeyboard navigation. The first tabbable element is focused when the popover is opened. The\nfollowing selector is used to find tabbable elements:\n\n```css\n:is(\n [role=\"menuitem\"],\n [role=\"menuitemcheckbox\"],\n [role=\"menuitemradio\"],\n use-menu\n):not(:is(\n [disabled],\n [hidden],\n [inert],\n [aria-hidden=\"true\"]\n))\n```\n\nMenu items are not used for navigation, they are intended for related action\nitems that allows a user to manipulate a user interface or content. Read the\nWCAG guidance for more details:\n[https://www.w3.org/WAI/ARIA/apg/patterns/menubar/](https://www.w3.org/WAI/ARIA/apg/patterns/menubar/)\n\nFor an icon-only trigger, omit `label` and set `aria-label` on `use-dropdown` itself — it is\nforwarded to the trigger button so the control still has an accessible name.\n---\n\n\n### **Slots:**\n - **default** - undefined\n- **trigger-content** - undefined\n- **trigger-label** - undefined\n- **trigger-arrow** - undefined",
|
|
78
78
|
"attributes": [
|
|
79
79
|
{ "name": "disabled", "values": [] },
|
|
80
80
|
{ "name": "label", "values": [] }
|