@jsekulowicz/ds-components 0.13.3 → 0.16.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/custom-elements.json +435 -0
- package/dist/atoms/button/button.d.ts +4 -0
- package/dist/atoms/button/button.d.ts.map +1 -1
- package/dist/atoms/button/button.js +15 -0
- package/dist/atoms/button/button.js.map +1 -1
- package/dist/atoms/radio/radio.d.ts +2 -0
- package/dist/atoms/radio/radio.d.ts.map +1 -1
- package/dist/atoms/radio/radio.js +11 -0
- package/dist/atoms/radio/radio.js.map +1 -1
- package/dist/atoms/radio-group/radio-group.d.ts.map +1 -1
- package/dist/atoms/radio-group/radio-group.js +48 -4
- package/dist/atoms/radio-group/radio-group.js.map +1 -1
- package/dist/atoms/segmented-control/define.d.ts +7 -0
- package/dist/atoms/segmented-control/define.d.ts.map +1 -0
- package/dist/atoms/segmented-control/define.js +5 -0
- package/dist/atoms/segmented-control/define.js.map +1 -0
- package/dist/atoms/segmented-control/index.d.ts +2 -0
- package/dist/atoms/segmented-control/index.d.ts.map +1 -0
- package/dist/atoms/segmented-control/index.js +2 -0
- package/dist/atoms/segmented-control/index.js.map +1 -0
- package/dist/atoms/segmented-control/segmented-control.d.ts +32 -0
- package/dist/atoms/segmented-control/segmented-control.d.ts.map +1 -0
- package/dist/atoms/segmented-control/segmented-control.js +137 -0
- package/dist/atoms/segmented-control/segmented-control.js.map +1 -0
- package/dist/atoms/segmented-control/segmented-control.styles.d.ts +2 -0
- package/dist/atoms/segmented-control/segmented-control.styles.d.ts.map +1 -0
- package/dist/atoms/segmented-control/segmented-control.styles.js +60 -0
- package/dist/atoms/segmented-control/segmented-control.styles.js.map +1 -0
- package/dist/define.d.ts +1 -0
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +1 -0
- package/dist/define.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/shared/roving-focus.d.ts +19 -0
- package/dist/shared/roving-focus.d.ts.map +1 -0
- package/dist/shared/roving-focus.js +44 -0
- package/dist/shared/roving-focus.js.map +1 -0
- package/package.json +9 -2
package/custom-elements.json
CHANGED
|
@@ -253,6 +253,22 @@
|
|
|
253
253
|
"module": "./atoms/radio-group/index.js"
|
|
254
254
|
}
|
|
255
255
|
},
|
|
256
|
+
{
|
|
257
|
+
"kind": "js",
|
|
258
|
+
"name": "DsSegmentedControl",
|
|
259
|
+
"declaration": {
|
|
260
|
+
"name": "DsSegmentedControl",
|
|
261
|
+
"module": "./atoms/segmented-control/index.js"
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"kind": "js",
|
|
266
|
+
"name": "SegmentedControlOption",
|
|
267
|
+
"declaration": {
|
|
268
|
+
"name": "SegmentedControlOption",
|
|
269
|
+
"module": "./atoms/segmented-control/index.js"
|
|
270
|
+
}
|
|
271
|
+
},
|
|
256
272
|
{
|
|
257
273
|
"kind": "js",
|
|
258
274
|
"name": "DsSelect",
|
|
@@ -845,6 +861,40 @@
|
|
|
845
861
|
}
|
|
846
862
|
]
|
|
847
863
|
},
|
|
864
|
+
{
|
|
865
|
+
"kind": "javascript-module",
|
|
866
|
+
"path": "src/shared/roving-focus.ts",
|
|
867
|
+
"declarations": [
|
|
868
|
+
{
|
|
869
|
+
"kind": "function",
|
|
870
|
+
"name": "resolveRovingTarget",
|
|
871
|
+
"return": {
|
|
872
|
+
"type": {
|
|
873
|
+
"text": "number | null"
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
"parameters": [
|
|
877
|
+
{
|
|
878
|
+
"name": "{\n key,\n currentIndex,\n count,\n orientation = 'both',\n isDisabled = () => false,\n}",
|
|
879
|
+
"type": {
|
|
880
|
+
"text": "RovingTargetOptions"
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
],
|
|
884
|
+
"description": "Resolve the index a roving-tabindex widget (radiogroup, segmented control,\ntablist…) should move to for a given key. Wraps around the ends and skips\ndisabled entries. Returns `null` when the key isn't a navigation key or no\nenabled target exists, so callers can leave the event untouched."
|
|
885
|
+
}
|
|
886
|
+
],
|
|
887
|
+
"exports": [
|
|
888
|
+
{
|
|
889
|
+
"kind": "js",
|
|
890
|
+
"name": "resolveRovingTarget",
|
|
891
|
+
"declaration": {
|
|
892
|
+
"name": "resolveRovingTarget",
|
|
893
|
+
"module": "src/shared/roving-focus.ts"
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
]
|
|
897
|
+
},
|
|
848
898
|
{
|
|
849
899
|
"kind": "javascript-module",
|
|
850
900
|
"path": "src/shared/scroll-fade-controller.ts",
|
|
@@ -1878,6 +1928,47 @@
|
|
|
1878
1928
|
},
|
|
1879
1929
|
"attribute": "aria-invalid"
|
|
1880
1930
|
},
|
|
1931
|
+
{
|
|
1932
|
+
"kind": "field",
|
|
1933
|
+
"name": "roleAttr",
|
|
1934
|
+
"type": {
|
|
1935
|
+
"text": "string | undefined"
|
|
1936
|
+
},
|
|
1937
|
+
"attribute": "role"
|
|
1938
|
+
},
|
|
1939
|
+
{
|
|
1940
|
+
"kind": "field",
|
|
1941
|
+
"name": "ariaCheckedAttr",
|
|
1942
|
+
"type": {
|
|
1943
|
+
"text": "string | undefined"
|
|
1944
|
+
},
|
|
1945
|
+
"attribute": "aria-checked"
|
|
1946
|
+
},
|
|
1947
|
+
{
|
|
1948
|
+
"kind": "field",
|
|
1949
|
+
"name": "tabIndexAttr",
|
|
1950
|
+
"type": {
|
|
1951
|
+
"text": "number | undefined"
|
|
1952
|
+
}
|
|
1953
|
+
},
|
|
1954
|
+
{
|
|
1955
|
+
"kind": "method",
|
|
1956
|
+
"name": "focus",
|
|
1957
|
+
"return": {
|
|
1958
|
+
"type": {
|
|
1959
|
+
"text": "void"
|
|
1960
|
+
}
|
|
1961
|
+
},
|
|
1962
|
+
"parameters": [
|
|
1963
|
+
{
|
|
1964
|
+
"name": "options",
|
|
1965
|
+
"optional": true,
|
|
1966
|
+
"type": {
|
|
1967
|
+
"text": "FocusOptions"
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
]
|
|
1971
|
+
},
|
|
1881
1972
|
{
|
|
1882
1973
|
"kind": "field",
|
|
1883
1974
|
"name": "#handleClick",
|
|
@@ -2002,6 +2093,20 @@
|
|
|
2002
2093
|
"text": "string | undefined"
|
|
2003
2094
|
},
|
|
2004
2095
|
"fieldName": "ariaInvalidAttr"
|
|
2096
|
+
},
|
|
2097
|
+
{
|
|
2098
|
+
"name": "role",
|
|
2099
|
+
"type": {
|
|
2100
|
+
"text": "string | undefined"
|
|
2101
|
+
},
|
|
2102
|
+
"fieldName": "roleAttr"
|
|
2103
|
+
},
|
|
2104
|
+
{
|
|
2105
|
+
"name": "aria-checked",
|
|
2106
|
+
"type": {
|
|
2107
|
+
"text": "string | undefined"
|
|
2108
|
+
},
|
|
2109
|
+
"fieldName": "ariaCheckedAttr"
|
|
2005
2110
|
}
|
|
2006
2111
|
],
|
|
2007
2112
|
"superclass": {
|
|
@@ -4552,6 +4657,33 @@
|
|
|
4552
4657
|
"default": "''",
|
|
4553
4658
|
"attribute": "radioValue"
|
|
4554
4659
|
},
|
|
4660
|
+
{
|
|
4661
|
+
"kind": "field",
|
|
4662
|
+
"name": "tabStop",
|
|
4663
|
+
"type": {
|
|
4664
|
+
"text": "boolean"
|
|
4665
|
+
},
|
|
4666
|
+
"default": "true",
|
|
4667
|
+
"attribute": "tab-stop"
|
|
4668
|
+
},
|
|
4669
|
+
{
|
|
4670
|
+
"kind": "method",
|
|
4671
|
+
"name": "focus",
|
|
4672
|
+
"return": {
|
|
4673
|
+
"type": {
|
|
4674
|
+
"text": "void"
|
|
4675
|
+
}
|
|
4676
|
+
},
|
|
4677
|
+
"parameters": [
|
|
4678
|
+
{
|
|
4679
|
+
"name": "options",
|
|
4680
|
+
"optional": true,
|
|
4681
|
+
"type": {
|
|
4682
|
+
"text": "FocusOptions"
|
|
4683
|
+
}
|
|
4684
|
+
}
|
|
4685
|
+
]
|
|
4686
|
+
},
|
|
4555
4687
|
{
|
|
4556
4688
|
"kind": "method",
|
|
4557
4689
|
"name": "#escapeName",
|
|
@@ -4618,6 +4750,14 @@
|
|
|
4618
4750
|
},
|
|
4619
4751
|
"default": "''",
|
|
4620
4752
|
"fieldName": "radioValue"
|
|
4753
|
+
},
|
|
4754
|
+
{
|
|
4755
|
+
"name": "tab-stop",
|
|
4756
|
+
"type": {
|
|
4757
|
+
"text": "boolean"
|
|
4758
|
+
},
|
|
4759
|
+
"default": "true",
|
|
4760
|
+
"fieldName": "tabStop"
|
|
4621
4761
|
}
|
|
4622
4762
|
],
|
|
4623
4763
|
"mixins": [
|
|
@@ -4800,11 +4940,39 @@
|
|
|
4800
4940
|
"name": "#onSlotChange",
|
|
4801
4941
|
"privacy": "private"
|
|
4802
4942
|
},
|
|
4943
|
+
{
|
|
4944
|
+
"kind": "method",
|
|
4945
|
+
"name": "#radioValueOf",
|
|
4946
|
+
"privacy": "private",
|
|
4947
|
+
"return": {
|
|
4948
|
+
"type": {
|
|
4949
|
+
"text": "string"
|
|
4950
|
+
}
|
|
4951
|
+
},
|
|
4952
|
+
"parameters": [
|
|
4953
|
+
{
|
|
4954
|
+
"name": "radio",
|
|
4955
|
+
"type": {
|
|
4956
|
+
"text": "RadioEl"
|
|
4957
|
+
}
|
|
4958
|
+
}
|
|
4959
|
+
]
|
|
4960
|
+
},
|
|
4961
|
+
{
|
|
4962
|
+
"kind": "field",
|
|
4963
|
+
"name": "#isRadioDisabledAt",
|
|
4964
|
+
"privacy": "private"
|
|
4965
|
+
},
|
|
4803
4966
|
{
|
|
4804
4967
|
"kind": "field",
|
|
4805
4968
|
"name": "#wireRadios",
|
|
4806
4969
|
"privacy": "private"
|
|
4807
4970
|
},
|
|
4971
|
+
{
|
|
4972
|
+
"kind": "field",
|
|
4973
|
+
"name": "#onKeydown",
|
|
4974
|
+
"privacy": "private"
|
|
4975
|
+
},
|
|
4808
4976
|
{
|
|
4809
4977
|
"kind": "field",
|
|
4810
4978
|
"name": "#onRadioChange",
|
|
@@ -5407,6 +5575,273 @@
|
|
|
5407
5575
|
}
|
|
5408
5576
|
]
|
|
5409
5577
|
},
|
|
5578
|
+
{
|
|
5579
|
+
"kind": "javascript-module",
|
|
5580
|
+
"path": "src/atoms/segmented-control/define.ts",
|
|
5581
|
+
"declarations": [],
|
|
5582
|
+
"exports": [
|
|
5583
|
+
{
|
|
5584
|
+
"kind": "custom-element-definition",
|
|
5585
|
+
"name": "ds-segmented-control",
|
|
5586
|
+
"declaration": {
|
|
5587
|
+
"name": "DsSegmentedControl",
|
|
5588
|
+
"module": "/src/atoms/segmented-control/segmented-control.js"
|
|
5589
|
+
}
|
|
5590
|
+
}
|
|
5591
|
+
]
|
|
5592
|
+
},
|
|
5593
|
+
{
|
|
5594
|
+
"kind": "javascript-module",
|
|
5595
|
+
"path": "src/atoms/segmented-control/index.ts",
|
|
5596
|
+
"declarations": [],
|
|
5597
|
+
"exports": [
|
|
5598
|
+
{
|
|
5599
|
+
"kind": "js",
|
|
5600
|
+
"name": "DsSegmentedControl",
|
|
5601
|
+
"declaration": {
|
|
5602
|
+
"name": "DsSegmentedControl",
|
|
5603
|
+
"module": "./segmented-control.js"
|
|
5604
|
+
}
|
|
5605
|
+
},
|
|
5606
|
+
{
|
|
5607
|
+
"kind": "js",
|
|
5608
|
+
"name": "SegmentedControlOption",
|
|
5609
|
+
"declaration": {
|
|
5610
|
+
"name": "SegmentedControlOption",
|
|
5611
|
+
"module": "./segmented-control.js"
|
|
5612
|
+
}
|
|
5613
|
+
}
|
|
5614
|
+
]
|
|
5615
|
+
},
|
|
5616
|
+
{
|
|
5617
|
+
"kind": "javascript-module",
|
|
5618
|
+
"path": "src/atoms/segmented-control/segmented-control.styles.ts",
|
|
5619
|
+
"declarations": [
|
|
5620
|
+
{
|
|
5621
|
+
"kind": "variable",
|
|
5622
|
+
"name": "segmentedControlStyles",
|
|
5623
|
+
"default": "css` :host { display: inline-flex; flex-direction: column; gap: var(--ds-space-1); max-width: 100%; } :host([disabled]) { cursor: not-allowed; opacity: 0.6; } .group { /* Equal columns that all size to the widest segment: with a shrink-to-fit track, equal 1fr columns each resolve to the widest cell's content, so no segment ends up narrower than its label needs. When the host is given an explicit width they simply share it evenly. */ display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; /* The track colour shows through the 1px padding and gaps as a hairline frame and dividers between the otherwise borderless segments. */ gap: 1px; padding: 1px; background: var(--ds-color-border-subtle); border-radius: var(--ds-radius-sm); max-width: 100%; } .segment { min-width: 0; } /* Give unselected segments a surface that's distinct from the track so each option reads as its own tile; the selected one keeps the accent fill from the primary button variant. Drop the button min-width floor so the grid drives sizing. */ .segment::part(button) { min-width: 0; border-radius: calc(var(--ds-radius-sm) - 1px); } .segment[variant='ghost']::part(button) { background: var(--ds-color-bg); } .segment[variant='ghost']::part(button):hover { background: var(--ds-color-bg-subtle); } /* Square off the inner edges so the row reads as one connected control, rounding only the outer corners of the first and last segments. */ .segment:first-child:not(:last-child)::part(button) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .segment:last-child:not(:first-child)::part(button) { border-top-left-radius: 0; border-bottom-left-radius: 0; } .segment:not(:first-child):not(:last-child)::part(button) { border-radius: 0; } `"
|
|
5624
|
+
}
|
|
5625
|
+
],
|
|
5626
|
+
"exports": [
|
|
5627
|
+
{
|
|
5628
|
+
"kind": "js",
|
|
5629
|
+
"name": "segmentedControlStyles",
|
|
5630
|
+
"declaration": {
|
|
5631
|
+
"name": "segmentedControlStyles",
|
|
5632
|
+
"module": "src/atoms/segmented-control/segmented-control.styles.ts"
|
|
5633
|
+
}
|
|
5634
|
+
}
|
|
5635
|
+
]
|
|
5636
|
+
},
|
|
5637
|
+
{
|
|
5638
|
+
"kind": "javascript-module",
|
|
5639
|
+
"path": "src/atoms/segmented-control/segmented-control.ts",
|
|
5640
|
+
"declarations": [
|
|
5641
|
+
{
|
|
5642
|
+
"kind": "class",
|
|
5643
|
+
"description": "",
|
|
5644
|
+
"name": "DsSegmentedControl",
|
|
5645
|
+
"cssParts": [
|
|
5646
|
+
{
|
|
5647
|
+
"description": "The container that holds the segments.",
|
|
5648
|
+
"name": "group"
|
|
5649
|
+
},
|
|
5650
|
+
{
|
|
5651
|
+
"description": "Each option button.",
|
|
5652
|
+
"name": "segment"
|
|
5653
|
+
}
|
|
5654
|
+
],
|
|
5655
|
+
"members": [
|
|
5656
|
+
{
|
|
5657
|
+
"kind": "field",
|
|
5658
|
+
"name": "label",
|
|
5659
|
+
"type": {
|
|
5660
|
+
"text": "string"
|
|
5661
|
+
},
|
|
5662
|
+
"default": "''",
|
|
5663
|
+
"attribute": "label"
|
|
5664
|
+
},
|
|
5665
|
+
{
|
|
5666
|
+
"kind": "field",
|
|
5667
|
+
"name": "description",
|
|
5668
|
+
"type": {
|
|
5669
|
+
"text": "string"
|
|
5670
|
+
},
|
|
5671
|
+
"default": "''",
|
|
5672
|
+
"attribute": "description"
|
|
5673
|
+
},
|
|
5674
|
+
{
|
|
5675
|
+
"kind": "field",
|
|
5676
|
+
"name": "value",
|
|
5677
|
+
"type": {
|
|
5678
|
+
"text": "string"
|
|
5679
|
+
},
|
|
5680
|
+
"default": "''",
|
|
5681
|
+
"attribute": "value"
|
|
5682
|
+
},
|
|
5683
|
+
{
|
|
5684
|
+
"kind": "field",
|
|
5685
|
+
"name": "options",
|
|
5686
|
+
"type": {
|
|
5687
|
+
"text": "SegmentedControlOption[]"
|
|
5688
|
+
},
|
|
5689
|
+
"default": "[]",
|
|
5690
|
+
"attribute": "options"
|
|
5691
|
+
},
|
|
5692
|
+
{
|
|
5693
|
+
"kind": "field",
|
|
5694
|
+
"name": "disabled",
|
|
5695
|
+
"type": {
|
|
5696
|
+
"text": "boolean"
|
|
5697
|
+
},
|
|
5698
|
+
"default": "false",
|
|
5699
|
+
"attribute": "disabled",
|
|
5700
|
+
"reflects": true
|
|
5701
|
+
},
|
|
5702
|
+
{
|
|
5703
|
+
"kind": "field",
|
|
5704
|
+
"name": "#tabStopIndex",
|
|
5705
|
+
"privacy": "private",
|
|
5706
|
+
"type": {
|
|
5707
|
+
"text": "number"
|
|
5708
|
+
},
|
|
5709
|
+
"readonly": true
|
|
5710
|
+
},
|
|
5711
|
+
{
|
|
5712
|
+
"kind": "method",
|
|
5713
|
+
"name": "#select",
|
|
5714
|
+
"privacy": "private",
|
|
5715
|
+
"return": {
|
|
5716
|
+
"type": {
|
|
5717
|
+
"text": "void"
|
|
5718
|
+
}
|
|
5719
|
+
},
|
|
5720
|
+
"parameters": [
|
|
5721
|
+
{
|
|
5722
|
+
"name": "option",
|
|
5723
|
+
"type": {
|
|
5724
|
+
"text": "SegmentedControlOption"
|
|
5725
|
+
}
|
|
5726
|
+
}
|
|
5727
|
+
]
|
|
5728
|
+
},
|
|
5729
|
+
{
|
|
5730
|
+
"kind": "method",
|
|
5731
|
+
"name": "#focusSegment",
|
|
5732
|
+
"privacy": "private",
|
|
5733
|
+
"return": {
|
|
5734
|
+
"type": {
|
|
5735
|
+
"text": "void"
|
|
5736
|
+
}
|
|
5737
|
+
},
|
|
5738
|
+
"parameters": [
|
|
5739
|
+
{
|
|
5740
|
+
"name": "index",
|
|
5741
|
+
"type": {
|
|
5742
|
+
"text": "number"
|
|
5743
|
+
}
|
|
5744
|
+
}
|
|
5745
|
+
]
|
|
5746
|
+
},
|
|
5747
|
+
{
|
|
5748
|
+
"kind": "field",
|
|
5749
|
+
"name": "#onKeydown",
|
|
5750
|
+
"privacy": "private"
|
|
5751
|
+
},
|
|
5752
|
+
{
|
|
5753
|
+
"kind": "method",
|
|
5754
|
+
"name": "#renderSegment",
|
|
5755
|
+
"privacy": "private",
|
|
5756
|
+
"return": {
|
|
5757
|
+
"type": {
|
|
5758
|
+
"text": "TemplateResult"
|
|
5759
|
+
}
|
|
5760
|
+
},
|
|
5761
|
+
"parameters": [
|
|
5762
|
+
{
|
|
5763
|
+
"name": "option",
|
|
5764
|
+
"type": {
|
|
5765
|
+
"text": "SegmentedControlOption"
|
|
5766
|
+
}
|
|
5767
|
+
},
|
|
5768
|
+
{
|
|
5769
|
+
"name": "index",
|
|
5770
|
+
"type": {
|
|
5771
|
+
"text": "number"
|
|
5772
|
+
}
|
|
5773
|
+
}
|
|
5774
|
+
]
|
|
5775
|
+
}
|
|
5776
|
+
],
|
|
5777
|
+
"events": [
|
|
5778
|
+
{
|
|
5779
|
+
"description": "Fires when the selection changes. Detail: `{ value: string }`.",
|
|
5780
|
+
"name": "ds-change"
|
|
5781
|
+
}
|
|
5782
|
+
],
|
|
5783
|
+
"attributes": [
|
|
5784
|
+
{
|
|
5785
|
+
"name": "label",
|
|
5786
|
+
"type": {
|
|
5787
|
+
"text": "string"
|
|
5788
|
+
},
|
|
5789
|
+
"default": "''",
|
|
5790
|
+
"fieldName": "label"
|
|
5791
|
+
},
|
|
5792
|
+
{
|
|
5793
|
+
"name": "description",
|
|
5794
|
+
"type": {
|
|
5795
|
+
"text": "string"
|
|
5796
|
+
},
|
|
5797
|
+
"default": "''",
|
|
5798
|
+
"fieldName": "description"
|
|
5799
|
+
},
|
|
5800
|
+
{
|
|
5801
|
+
"name": "value",
|
|
5802
|
+
"type": {
|
|
5803
|
+
"text": "string"
|
|
5804
|
+
},
|
|
5805
|
+
"default": "''",
|
|
5806
|
+
"fieldName": "value"
|
|
5807
|
+
},
|
|
5808
|
+
{
|
|
5809
|
+
"name": "options",
|
|
5810
|
+
"type": {
|
|
5811
|
+
"text": "SegmentedControlOption[]"
|
|
5812
|
+
},
|
|
5813
|
+
"default": "[]",
|
|
5814
|
+
"fieldName": "options"
|
|
5815
|
+
},
|
|
5816
|
+
{
|
|
5817
|
+
"name": "disabled",
|
|
5818
|
+
"type": {
|
|
5819
|
+
"text": "boolean"
|
|
5820
|
+
},
|
|
5821
|
+
"default": "false",
|
|
5822
|
+
"fieldName": "disabled"
|
|
5823
|
+
}
|
|
5824
|
+
],
|
|
5825
|
+
"superclass": {
|
|
5826
|
+
"name": "DsElement",
|
|
5827
|
+
"package": "@jsekulowicz/ds-core"
|
|
5828
|
+
},
|
|
5829
|
+
"tagName": "ds-segmented-control",
|
|
5830
|
+
"customElement": true,
|
|
5831
|
+
"summary": "Single-select segmented control — a connected row of mutually\nexclusive options, each with an optional leading icon. A token-styled,\ninline alternative to a dropdown when there are only a few choices."
|
|
5832
|
+
}
|
|
5833
|
+
],
|
|
5834
|
+
"exports": [
|
|
5835
|
+
{
|
|
5836
|
+
"kind": "js",
|
|
5837
|
+
"name": "DsSegmentedControl",
|
|
5838
|
+
"declaration": {
|
|
5839
|
+
"name": "DsSegmentedControl",
|
|
5840
|
+
"module": "src/atoms/segmented-control/segmented-control.ts"
|
|
5841
|
+
}
|
|
5842
|
+
}
|
|
5843
|
+
]
|
|
5844
|
+
},
|
|
5410
5845
|
{
|
|
5411
5846
|
"kind": "javascript-module",
|
|
5412
5847
|
"path": "src/atoms/select/define.ts",
|
|
@@ -28,6 +28,10 @@ export declare class DsButton extends DsElement {
|
|
|
28
28
|
ariaExpandedAttr?: string;
|
|
29
29
|
ariaHasPopupAttr?: string;
|
|
30
30
|
ariaInvalidAttr?: string;
|
|
31
|
+
roleAttr?: string;
|
|
32
|
+
ariaCheckedAttr?: string;
|
|
33
|
+
tabIndexAttr?: number;
|
|
34
|
+
focus(options?: FocusOptions): void;
|
|
31
35
|
render(): TemplateResult;
|
|
32
36
|
}
|
|
33
37
|
//# sourceMappingURL=button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/atoms/button/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvD;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,SAAS;;IACrC,OAAgB,MAAM,4BAAuC;IAEhC,OAAO,EAAE,aAAa,CAAa;IACnC,IAAI,EAAE,UAAU,CAAQ;IACxB,IAAI,EAAE,UAAU,CAAY;IACb,QAAQ,UAAS;IACjB,OAAO,UAAS;IACS,SAAS,UAAS;IAC3C,MAAM,UAAS;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACe,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/atoms/button/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvD;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,SAAS;;IACrC,OAAgB,MAAM,4BAAuC;IAEhC,OAAO,EAAE,aAAa,CAAa;IACnC,IAAI,EAAE,UAAU,CAAQ;IACxB,IAAI,EAAE,UAAU,CAAY;IACb,QAAQ,UAAS;IACjB,OAAO,UAAS;IACS,SAAS,UAAS;IAC3C,MAAM,UAAS;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACe,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IAKjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACV,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE7C,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAiCnC,MAAM,IAAI,cAAc;CAqClC"}
|
|
@@ -41,6 +41,9 @@ export class DsButton extends DsElement {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
static { this.styles = [...DsElement.styles, buttonStyles]; }
|
|
44
|
+
focus(options) {
|
|
45
|
+
this.renderRoot.querySelector('button')?.focus(options);
|
|
46
|
+
}
|
|
44
47
|
#handleClick;
|
|
45
48
|
#submitHostForm() {
|
|
46
49
|
const form = this.closest('form') ?? this.#findShadowForm();
|
|
@@ -64,8 +67,11 @@ export class DsButton extends DsElement {
|
|
|
64
67
|
part="button"
|
|
65
68
|
class="btn ds-focus-ring"
|
|
66
69
|
type=${this.type}
|
|
70
|
+
role=${this.roleAttr ?? nothing}
|
|
71
|
+
tabindex=${this.tabIndexAttr ?? nothing}
|
|
67
72
|
aria-disabled=${this.disabled || this.loading ? 'true' : 'false'}
|
|
68
73
|
aria-busy=${this.loading ? 'true' : 'false'}
|
|
74
|
+
aria-checked=${this.ariaCheckedAttr ?? nothing}
|
|
69
75
|
aria-controls=${this.ariaControlsAttr ?? nothing}
|
|
70
76
|
aria-expanded=${this.ariaExpandedAttr ?? nothing}
|
|
71
77
|
aria-haspopup=${this.ariaHasPopupAttr ?? nothing}
|
|
@@ -129,4 +135,13 @@ __decorate([
|
|
|
129
135
|
__decorate([
|
|
130
136
|
property({ attribute: 'aria-invalid' })
|
|
131
137
|
], DsButton.prototype, "ariaInvalidAttr", void 0);
|
|
138
|
+
__decorate([
|
|
139
|
+
property({ attribute: 'role' })
|
|
140
|
+
], DsButton.prototype, "roleAttr", void 0);
|
|
141
|
+
__decorate([
|
|
142
|
+
property({ attribute: 'aria-checked' })
|
|
143
|
+
], DsButton.prototype, "ariaCheckedAttr", void 0);
|
|
144
|
+
__decorate([
|
|
145
|
+
property({ attribute: false })
|
|
146
|
+
], DsButton.prototype, "tabIndexAttr", void 0);
|
|
132
147
|
//# sourceMappingURL=button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/atoms/button/button.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAS,SAAQ,SAAS;IAAvC;;QAG+B,YAAO,GAAkB,SAAS,CAAC;QACnC,SAAI,GAAe,IAAI,CAAC;QACxB,SAAI,GAAe,QAAQ,CAAC;QACb,aAAQ,GAAG,KAAK,CAAC;QACjB,YAAO,GAAG,KAAK,CAAC;QACS,cAAS,GAAG,KAAK,CAAC;QAC3C,WAAM,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/atoms/button/button.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export declare class DsRadio extends DsRadio_base {
|
|
|
12
12
|
static styles: import("lit").CSSResult[];
|
|
13
13
|
checked: boolean;
|
|
14
14
|
radioValue: string;
|
|
15
|
+
tabStop: boolean;
|
|
16
|
+
focus(options?: FocusOptions): void;
|
|
15
17
|
willUpdate(changed: PropertyValues): void;
|
|
16
18
|
render(): TemplateResult;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/atoms/radio/radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAErE,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;;AAGnE;;;;;GAKG;AACH,qBAAa,OAAQ,SAAQ,YAA2B;;IACtD,OAAgB,MAAM,4BAAsC;IAEhB,OAAO,UAAS;IAChD,UAAU,SAAM;
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/atoms/radio/radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAErE,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;;AAGnE;;;;;GAKG;AACH,qBAAa,OAAQ,SAAQ,YAA2B;;IACtD,OAAgB,MAAM,4BAAsC;IAEhB,OAAO,UAAS;IAChD,UAAU,SAAM;IAIwB,OAAO,UAAQ;IAE1D,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAInC,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAiDzC,MAAM,IAAI,cAAc;CAelC"}
|
|
@@ -19,6 +19,10 @@ export class DsRadio extends FormControlMixin(DsElement) {
|
|
|
19
19
|
super(...arguments);
|
|
20
20
|
this.checked = false;
|
|
21
21
|
this.radioValue = '';
|
|
22
|
+
// Roving tabindex within a ds-radio-group: only the active radio stays in the
|
|
23
|
+
// page tab order, the rest are reachable with arrow keys. Defaults to a
|
|
24
|
+
// normal tab stop so a standalone radio still works on its own.
|
|
25
|
+
this.tabStop = true;
|
|
22
26
|
this.#onInputClick = (event) => {
|
|
23
27
|
if (this.disabled) {
|
|
24
28
|
event.preventDefault();
|
|
@@ -40,6 +44,9 @@ export class DsRadio extends FormControlMixin(DsElement) {
|
|
|
40
44
|
};
|
|
41
45
|
}
|
|
42
46
|
static { this.styles = [...DsElement.styles, radioStyles]; }
|
|
47
|
+
focus(options) {
|
|
48
|
+
this.renderRoot.querySelector('input')?.focus(options);
|
|
49
|
+
}
|
|
43
50
|
willUpdate(changed) {
|
|
44
51
|
if (changed.has('checked')) {
|
|
45
52
|
this.value = this.checked ? this.radioValue || 'on' : null;
|
|
@@ -74,6 +81,7 @@ export class DsRadio extends FormControlMixin(DsElement) {
|
|
|
74
81
|
name=${this.name || ''}
|
|
75
82
|
.checked=${this.checked}
|
|
76
83
|
value=${this.radioValue}
|
|
84
|
+
tabindex=${this.tabStop ? '0' : '-1'}
|
|
77
85
|
?required=${this.required}
|
|
78
86
|
@click=${this.#onInputClick}
|
|
79
87
|
/>
|
|
@@ -88,4 +96,7 @@ __decorate([
|
|
|
88
96
|
__decorate([
|
|
89
97
|
property()
|
|
90
98
|
], DsRadio.prototype, "radioValue", void 0);
|
|
99
|
+
__decorate([
|
|
100
|
+
property({ type: Boolean, attribute: 'tab-stop' })
|
|
101
|
+
], DsRadio.prototype, "tabStop", void 0);
|
|
91
102
|
//# sourceMappingURL=radio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../../../src/atoms/radio/radio.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAA4C,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,OAAO,OAAQ,SAAQ,gBAAgB,CAAC,SAAS,CAAC;IAAxD;;QAG8C,YAAO,GAAG,KAAK,CAAC;QAChD,eAAU,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../../../src/atoms/radio/radio.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../../src/atoms/radio-group/radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../../src/atoms/radio-group/radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,SAAS;;IACzC,OAAgB,MAAM,4BAA4D;IAEtE,KAAK,SAAM;IACX,IAAI,SAAM;IACV,WAAW,SAAM;IACjB,KAAK,SAAM;IACX,KAAK,SAAM;IACqB,QAAQ,UAAS;IACjB,QAAQ,UAAS;IACjB,OAAO,UAAS;IAEX,OAAO,CAAC,OAAO,CAAa;IAEpE,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAyF5C,MAAM,IAAI,cAAc;CAclC"}
|
|
@@ -8,6 +8,7 @@ import { html, nothing } from 'lit';
|
|
|
8
8
|
import { property, queryAssignedElements } from 'lit/decorators.js';
|
|
9
9
|
import { DsElement } from '@jsekulowicz/ds-core';
|
|
10
10
|
import { formFieldStyles, renderSubtext } from '../../shared/form-field.js';
|
|
11
|
+
import { resolveRovingTarget } from '../../shared/roving-focus.js';
|
|
11
12
|
import { radioGroupStyles } from './radio-group.styles.js';
|
|
12
13
|
/**
|
|
13
14
|
* @tag ds-radio-group
|
|
@@ -29,8 +30,18 @@ export class DsRadioGroup extends DsElement {
|
|
|
29
30
|
this.#onSlotChange = () => {
|
|
30
31
|
this.#wireRadios(this.value !== '');
|
|
31
32
|
};
|
|
33
|
+
this.#isRadioDisabledAt = (index) => {
|
|
34
|
+
const radio = this._radios[index];
|
|
35
|
+
return radio ? radio.hasAttribute('disabled') : true;
|
|
36
|
+
};
|
|
32
37
|
this.#wireRadios = (syncChecked) => {
|
|
33
|
-
this._radios
|
|
38
|
+
const radios = this._radios;
|
|
39
|
+
const selectedIndex = radios.findIndex(radio => this.#radioValueOf(radio) === this.value);
|
|
40
|
+
const firstEnabled = radios.findIndex(radio => !radio.hasAttribute('disabled'));
|
|
41
|
+
// Exactly one radio stays in the tab order: the selected one, or the first
|
|
42
|
+
// enabled radio when nothing is selected yet (roving tabindex).
|
|
43
|
+
const tabStopIndex = selectedIndex >= 0 ? selectedIndex : firstEnabled;
|
|
44
|
+
radios.forEach((radio, index) => {
|
|
34
45
|
if (this.name)
|
|
35
46
|
radio.setAttribute('name', this.name);
|
|
36
47
|
if (this.required) {
|
|
@@ -45,9 +56,9 @@ export class DsRadioGroup extends DsElement {
|
|
|
45
56
|
else {
|
|
46
57
|
radio.removeAttribute('disabled');
|
|
47
58
|
}
|
|
59
|
+
radio.tabStop = index === tabStopIndex;
|
|
48
60
|
if (syncChecked) {
|
|
49
|
-
|
|
50
|
-
if (rv === this.value) {
|
|
61
|
+
if (this.#radioValueOf(radio) === this.value) {
|
|
51
62
|
radio.setAttribute('checked', '');
|
|
52
63
|
}
|
|
53
64
|
else {
|
|
@@ -56,6 +67,34 @@ export class DsRadioGroup extends DsElement {
|
|
|
56
67
|
}
|
|
57
68
|
});
|
|
58
69
|
};
|
|
70
|
+
this.#onKeydown = (event) => {
|
|
71
|
+
if (this.disabled) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const radios = this._radios;
|
|
75
|
+
const target = resolveRovingTarget({
|
|
76
|
+
key: event.key,
|
|
77
|
+
currentIndex: radios.findIndex(radio => this.#radioValueOf(radio) === this.value),
|
|
78
|
+
count: radios.length,
|
|
79
|
+
isDisabled: this.#isRadioDisabledAt,
|
|
80
|
+
});
|
|
81
|
+
if (target === null) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const radio = radios[target];
|
|
85
|
+
if (!radio) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
// Selection follows focus, as the radiogroup pattern prescribes.
|
|
90
|
+
const value = this.#radioValueOf(radio);
|
|
91
|
+
if (value !== this.value) {
|
|
92
|
+
this.value = value;
|
|
93
|
+
this.invalid = false;
|
|
94
|
+
this.dispatchEvent(new CustomEvent('ds-change', { bubbles: true, composed: true, detail: { value } }));
|
|
95
|
+
}
|
|
96
|
+
void this.updateComplete.then(() => radio.focus());
|
|
97
|
+
};
|
|
59
98
|
this.#onRadioChange = (event) => {
|
|
60
99
|
if (event.target === this) {
|
|
61
100
|
return;
|
|
@@ -83,11 +122,16 @@ export class DsRadioGroup extends DsElement {
|
|
|
83
122
|
this.#wireRadios(changed.has('value'));
|
|
84
123
|
}
|
|
85
124
|
#onSlotChange;
|
|
125
|
+
#radioValueOf(radio) {
|
|
126
|
+
return radio.radioValue ?? radio.getAttribute('radiovalue') ?? '';
|
|
127
|
+
}
|
|
128
|
+
#isRadioDisabledAt;
|
|
86
129
|
#wireRadios;
|
|
130
|
+
#onKeydown;
|
|
87
131
|
#onRadioChange;
|
|
88
132
|
render() {
|
|
89
133
|
return html `
|
|
90
|
-
<fieldset class="fieldset" part="fieldset">
|
|
134
|
+
<fieldset class="fieldset" part="fieldset" @keydown=${this.#onKeydown}>
|
|
91
135
|
<legend class="label" part="legend">
|
|
92
136
|
${this.label}
|
|
93
137
|
${this.required ? html `<span class="required" aria-hidden="true"> *</span>` : nothing}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../../src/atoms/radio-group/radio-group.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../../src/atoms/radio-group/radio-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/atoms/segmented-control/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/atoms/segmented-control/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/segmented-control/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atoms/segmented-control/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA+B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import { DsElement } from '@jsekulowicz/ds-core';
|
|
3
|
+
import '../button/define.js';
|
|
4
|
+
import '../icon/define.js';
|
|
5
|
+
export interface SegmentedControlOption {
|
|
6
|
+
value: string;
|
|
7
|
+
label: string;
|
|
8
|
+
/** Optional leading icon glyph name (the glyph must be imported by the host). */
|
|
9
|
+
icon?: string;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @tag ds-segmented-control
|
|
14
|
+
* @summary Single-select segmented control — a connected row of mutually
|
|
15
|
+
* exclusive options, each with an optional leading icon. A token-styled,
|
|
16
|
+
* inline alternative to a dropdown when there are only a few choices.
|
|
17
|
+
* @event ds-change - Fires when the selection changes. Detail: `{ value: string }`.
|
|
18
|
+
* @csspart group - The container that holds the segments.
|
|
19
|
+
* @csspart segment - Each option button.
|
|
20
|
+
*/
|
|
21
|
+
export declare class DsSegmentedControl extends DsElement {
|
|
22
|
+
#private;
|
|
23
|
+
static styles: import("lit").CSSResult[];
|
|
24
|
+
label: string;
|
|
25
|
+
description: string;
|
|
26
|
+
value: string;
|
|
27
|
+
options: SegmentedControlOption[];
|
|
28
|
+
disabled: boolean;
|
|
29
|
+
connectedCallback(): void;
|
|
30
|
+
render(): TemplateResult;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=segmented-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-control.d.ts","sourceRoot":"","sources":["../../../src/atoms/segmented-control/segmented-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;;IAC/C,OAAgB,MAAM,4BAAkE;IAE5E,KAAK,SAAM;IACX,WAAW,SAAM;IACjB,KAAK,SAAM;IACI,OAAO,EAAE,sBAAsB,EAAE,CAAM;IACtB,QAAQ,UAAS;IAEpD,iBAAiB,IAAI,IAAI;IA8EzB,MAAM,IAAI,cAAc;CAgBlC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, nothing } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { DsElement } from '@jsekulowicz/ds-core';
|
|
10
|
+
import { formFieldStyles, renderFieldLabel, renderSubtext } from '../../shared/form-field.js';
|
|
11
|
+
import { resolveRovingTarget } from '../../shared/roving-focus.js';
|
|
12
|
+
import { segmentedControlStyles } from './segmented-control.styles.js';
|
|
13
|
+
import '../button/define.js';
|
|
14
|
+
import '../icon/define.js';
|
|
15
|
+
/**
|
|
16
|
+
* @tag ds-segmented-control
|
|
17
|
+
* @summary Single-select segmented control — a connected row of mutually
|
|
18
|
+
* exclusive options, each with an optional leading icon. A token-styled,
|
|
19
|
+
* inline alternative to a dropdown when there are only a few choices.
|
|
20
|
+
* @event ds-change - Fires when the selection changes. Detail: `{ value: string }`.
|
|
21
|
+
* @csspart group - The container that holds the segments.
|
|
22
|
+
* @csspart segment - Each option button.
|
|
23
|
+
*/
|
|
24
|
+
export class DsSegmentedControl extends DsElement {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
this.label = '';
|
|
28
|
+
this.description = '';
|
|
29
|
+
this.value = '';
|
|
30
|
+
this.options = [];
|
|
31
|
+
this.disabled = false;
|
|
32
|
+
this.#onKeydown = (event) => {
|
|
33
|
+
if (this.disabled) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const target = resolveRovingTarget({
|
|
37
|
+
key: event.key,
|
|
38
|
+
currentIndex: this.#tabStopIndex,
|
|
39
|
+
count: this.options.length,
|
|
40
|
+
isDisabled: index => this.options[index]?.disabled === true,
|
|
41
|
+
});
|
|
42
|
+
if (target === null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const option = this.options[target];
|
|
46
|
+
if (!option) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
// Selection follows focus, as the radiogroup pattern prescribes.
|
|
51
|
+
this.#select(option);
|
|
52
|
+
void this.updateComplete.then(() => this.#focusSegment(target));
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
static { this.styles = [...DsElement.styles, formFieldStyles, segmentedControlStyles]; }
|
|
56
|
+
connectedCallback() {
|
|
57
|
+
super.connectedCallback();
|
|
58
|
+
if (!this.label) {
|
|
59
|
+
console.warn('<ds-segmented-control>: the `label` property is required for accessibility.');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// The single tab stop: the selected option, or the first enabled one when
|
|
63
|
+
// nothing is selected yet. Arrow keys move focus (and selection) from here.
|
|
64
|
+
get #tabStopIndex() {
|
|
65
|
+
const selected = this.options.findIndex(option => option.value === this.value);
|
|
66
|
+
if (selected >= 0) {
|
|
67
|
+
return selected;
|
|
68
|
+
}
|
|
69
|
+
return this.options.findIndex(option => !option.disabled);
|
|
70
|
+
}
|
|
71
|
+
#select(option) {
|
|
72
|
+
if (this.disabled || option.disabled || option.value === this.value) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
this.value = option.value;
|
|
76
|
+
this.emit('ds-change', { detail: { value: option.value } });
|
|
77
|
+
}
|
|
78
|
+
#focusSegment(index) {
|
|
79
|
+
const segments = this.renderRoot.querySelectorAll('.segment');
|
|
80
|
+
segments[index]?.focus();
|
|
81
|
+
}
|
|
82
|
+
#onKeydown;
|
|
83
|
+
#renderSegment(option, index) {
|
|
84
|
+
const selected = option.value === this.value;
|
|
85
|
+
return html `
|
|
86
|
+
<ds-button
|
|
87
|
+
class="segment"
|
|
88
|
+
part="segment"
|
|
89
|
+
size="sm"
|
|
90
|
+
variant=${selected ? 'primary' : 'ghost'}
|
|
91
|
+
full-width
|
|
92
|
+
.roleAttr=${'radio'}
|
|
93
|
+
.ariaCheckedAttr=${selected ? 'true' : 'false'}
|
|
94
|
+
.tabIndexAttr=${index === this.#tabStopIndex ? 0 : -1}
|
|
95
|
+
?disabled=${this.disabled || option.disabled}
|
|
96
|
+
@ds-click=${() => this.#select(option)}
|
|
97
|
+
>
|
|
98
|
+
${option.icon
|
|
99
|
+
? html `<ds-icon slot="leading" name=${option.icon} size="sm"></ds-icon>`
|
|
100
|
+
: nothing}
|
|
101
|
+
${option.label}
|
|
102
|
+
</ds-button>
|
|
103
|
+
`;
|
|
104
|
+
}
|
|
105
|
+
render() {
|
|
106
|
+
return html `
|
|
107
|
+
${this.label ? renderFieldLabel(this.label, false, 'group') : nothing}
|
|
108
|
+
<div
|
|
109
|
+
class="group"
|
|
110
|
+
id="group"
|
|
111
|
+
role="radiogroup"
|
|
112
|
+
aria-label=${this.label}
|
|
113
|
+
part="group"
|
|
114
|
+
@keydown=${this.#onKeydown}
|
|
115
|
+
>
|
|
116
|
+
${this.options.map((option, index) => this.#renderSegment(option, index))}
|
|
117
|
+
</div>
|
|
118
|
+
${renderSubtext(this.description, '', false)}
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
__decorate([
|
|
123
|
+
property()
|
|
124
|
+
], DsSegmentedControl.prototype, "label", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
property()
|
|
127
|
+
], DsSegmentedControl.prototype, "description", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
property()
|
|
130
|
+
], DsSegmentedControl.prototype, "value", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
property({ type: Array })
|
|
133
|
+
], DsSegmentedControl.prototype, "options", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
property({ type: Boolean, reflect: true })
|
|
136
|
+
], DsSegmentedControl.prototype, "disabled", void 0);
|
|
137
|
+
//# sourceMappingURL=segmented-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-control.js","sourceRoot":"","sources":["../../../src/atoms/segmented-control/segmented-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-control.styles.d.ts","sourceRoot":"","sources":["../../../src/atoms/segmented-control/segmented-control.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,yBAyDlC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const segmentedControlStyles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
gap: var(--ds-space-1);
|
|
7
|
+
max-width: 100%;
|
|
8
|
+
}
|
|
9
|
+
:host([disabled]) {
|
|
10
|
+
cursor: not-allowed;
|
|
11
|
+
opacity: 0.6;
|
|
12
|
+
}
|
|
13
|
+
.group {
|
|
14
|
+
/* Equal columns that all size to the widest segment: with a shrink-to-fit
|
|
15
|
+
track, equal 1fr columns each resolve to the widest cell's content, so
|
|
16
|
+
no segment ends up narrower than its label needs. When the host is given
|
|
17
|
+
an explicit width they simply share it evenly. */
|
|
18
|
+
display: grid;
|
|
19
|
+
grid-auto-flow: column;
|
|
20
|
+
grid-auto-columns: 1fr;
|
|
21
|
+
/* The track colour shows through the 1px padding and gaps as a hairline
|
|
22
|
+
frame and dividers between the otherwise borderless segments. */
|
|
23
|
+
gap: 1px;
|
|
24
|
+
padding: 1px;
|
|
25
|
+
background: var(--ds-color-border-subtle);
|
|
26
|
+
border-radius: var(--ds-radius-sm);
|
|
27
|
+
max-width: 100%;
|
|
28
|
+
}
|
|
29
|
+
.segment {
|
|
30
|
+
min-width: 0;
|
|
31
|
+
}
|
|
32
|
+
/* Give unselected segments a surface that's distinct from the track so each
|
|
33
|
+
option reads as its own tile; the selected one keeps the accent fill from
|
|
34
|
+
the primary button variant. Drop the button min-width floor so the grid
|
|
35
|
+
drives sizing. */
|
|
36
|
+
.segment::part(button) {
|
|
37
|
+
min-width: 0;
|
|
38
|
+
border-radius: calc(var(--ds-radius-sm) - 1px);
|
|
39
|
+
}
|
|
40
|
+
.segment[variant='ghost']::part(button) {
|
|
41
|
+
background: var(--ds-color-bg);
|
|
42
|
+
}
|
|
43
|
+
.segment[variant='ghost']::part(button):hover {
|
|
44
|
+
background: var(--ds-color-bg-subtle);
|
|
45
|
+
}
|
|
46
|
+
/* Square off the inner edges so the row reads as one connected control,
|
|
47
|
+
rounding only the outer corners of the first and last segments. */
|
|
48
|
+
.segment:first-child:not(:last-child)::part(button) {
|
|
49
|
+
border-top-right-radius: 0;
|
|
50
|
+
border-bottom-right-radius: 0;
|
|
51
|
+
}
|
|
52
|
+
.segment:last-child:not(:first-child)::part(button) {
|
|
53
|
+
border-top-left-radius: 0;
|
|
54
|
+
border-bottom-left-radius: 0;
|
|
55
|
+
}
|
|
56
|
+
.segment:not(:first-child):not(:last-child)::part(button) {
|
|
57
|
+
border-radius: 0;
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
//# sourceMappingURL=segmented-control.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-control.styles.js","sourceRoot":"","sources":["../../../src/atoms/segmented-control/segmented-control.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDxC,CAAC"}
|
package/dist/define.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import './atoms/checkbox/define.js';
|
|
|
12
12
|
import './atoms/checkbox-group/define.js';
|
|
13
13
|
import './atoms/radio/define.js';
|
|
14
14
|
import './atoms/radio-group/define.js';
|
|
15
|
+
import './atoms/segmented-control/define.js';
|
|
15
16
|
import './atoms/select/define.js';
|
|
16
17
|
import './atoms/searchable-select/define.js';
|
|
17
18
|
import './atoms/tabs/define.js';
|
package/dist/define.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
package/dist/define.js
CHANGED
|
@@ -12,6 +12,7 @@ import './atoms/checkbox/define.js';
|
|
|
12
12
|
import './atoms/checkbox-group/define.js';
|
|
13
13
|
import './atoms/radio/define.js';
|
|
14
14
|
import './atoms/radio-group/define.js';
|
|
15
|
+
import './atoms/segmented-control/define.js';
|
|
15
16
|
import './atoms/select/define.js';
|
|
16
17
|
import './atoms/searchable-select/define.js';
|
|
17
18
|
import './atoms/tabs/define.js';
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export { DsCheckbox } from './atoms/checkbox/index.js';
|
|
|
12
12
|
export { DsCheckboxGroup } from './atoms/checkbox-group/index.js';
|
|
13
13
|
export { DsRadio } from './atoms/radio/index.js';
|
|
14
14
|
export { DsRadioGroup } from './atoms/radio-group/index.js';
|
|
15
|
+
export { DsSegmentedControl, type SegmentedControlOption, } from './atoms/segmented-control/index.js';
|
|
15
16
|
export { DsSelect, type SelectOption } from './atoms/select/index.js';
|
|
16
17
|
export { DsSearchableSelect } from './atoms/searchable-select/index.js';
|
|
17
18
|
export { DsTabs, DsTab, DsTabPanel } from './atoms/tabs/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,KAAK,sBAAsB,GAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,iBAAiB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { DsCheckbox } from './atoms/checkbox/index.js';
|
|
|
12
12
|
export { DsCheckboxGroup } from './atoms/checkbox-group/index.js';
|
|
13
13
|
export { DsRadio } from './atoms/radio/index.js';
|
|
14
14
|
export { DsRadioGroup } from './atoms/radio-group/index.js';
|
|
15
|
+
export { DsSegmentedControl, } from './atoms/segmented-control/index.js';
|
|
15
16
|
export { DsSelect } from './atoms/select/index.js';
|
|
16
17
|
export { DsSearchableSelect } from './atoms/searchable-select/index.js';
|
|
17
18
|
export { DsTabs, DsTab, DsTabPanel } from './atoms/tabs/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAIT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAyB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAwB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAA2B,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAsC,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAoB,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAA0C,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAqB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GAYrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAA4C,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAmB,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,GAMN,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EACL,UAAU,GAKX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,EAAkB,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAwB,MAAM,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAIT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAyB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAwB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAA2B,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAsC,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAoB,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAA0C,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,kBAAkB,GAEnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAqB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GAYrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAA4C,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAmB,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,GAMN,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EACL,UAAU,GAKX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,EAAkB,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAwB,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type RovingOrientation = 'horizontal' | 'vertical' | 'both';
|
|
2
|
+
export interface RovingTargetOptions {
|
|
3
|
+
key: string;
|
|
4
|
+
/** Index the navigation starts from; -1 when nothing is focused yet. */
|
|
5
|
+
currentIndex: number;
|
|
6
|
+
count: number;
|
|
7
|
+
/** Which arrow keys participate. Defaults to `both`. */
|
|
8
|
+
orientation?: RovingOrientation;
|
|
9
|
+
/** Skip indices that can't receive selection (e.g. disabled options). */
|
|
10
|
+
isDisabled?: (index: number) => boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the index a roving-tabindex widget (radiogroup, segmented control,
|
|
14
|
+
* tablist…) should move to for a given key. Wraps around the ends and skips
|
|
15
|
+
* disabled entries. Returns `null` when the key isn't a navigation key or no
|
|
16
|
+
* enabled target exists, so callers can leave the event untouched.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveRovingTarget({ key, currentIndex, count, orientation, isDisabled, }: RovingTargetOptions): number | null;
|
|
19
|
+
//# sourceMappingURL=roving-focus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roving-focus.d.ts","sourceRoot":"","sources":["../../src/shared/roving-focus.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,yEAAyE;IACzE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,YAAY,EACZ,KAAK,EACL,WAAoB,EACpB,UAAwB,GACzB,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAiCrC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const wrap = (value, count) => ((value % count) + count) % count;
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the index a roving-tabindex widget (radiogroup, segmented control,
|
|
4
|
+
* tablist…) should move to for a given key. Wraps around the ends and skips
|
|
5
|
+
* disabled entries. Returns `null` when the key isn't a navigation key or no
|
|
6
|
+
* enabled target exists, so callers can leave the event untouched.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveRovingTarget({ key, currentIndex, count, orientation = 'both', isDisabled = () => false, }) {
|
|
9
|
+
if (count === 0) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const horizontal = orientation === 'horizontal' || orientation === 'both';
|
|
13
|
+
const vertical = orientation === 'vertical' || orientation === 'both';
|
|
14
|
+
const forward = (horizontal && key === 'ArrowRight') || (vertical && key === 'ArrowDown');
|
|
15
|
+
const backward = (horizontal && key === 'ArrowLeft') || (vertical && key === 'ArrowUp');
|
|
16
|
+
let from = currentIndex;
|
|
17
|
+
let step;
|
|
18
|
+
if (forward) {
|
|
19
|
+
step = 1;
|
|
20
|
+
}
|
|
21
|
+
else if (backward) {
|
|
22
|
+
step = -1;
|
|
23
|
+
}
|
|
24
|
+
else if (key === 'Home') {
|
|
25
|
+
from = -1;
|
|
26
|
+
step = 1;
|
|
27
|
+
}
|
|
28
|
+
else if (key === 'End') {
|
|
29
|
+
from = count;
|
|
30
|
+
step = -1;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
let index = from;
|
|
36
|
+
for (let i = 0; i < count; i += 1) {
|
|
37
|
+
index = wrap(index + step, count);
|
|
38
|
+
if (!isDisabled(index)) {
|
|
39
|
+
return index;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=roving-focus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roving-focus.js","sourceRoot":"","sources":["../../src/shared/roving-focus.ts"],"names":[],"mappings":"AAaA,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,GAAG,EACH,YAAY,EACZ,KAAK,EACL,WAAW,GAAG,MAAM,EACpB,UAAU,GAAG,GAAG,EAAE,CAAC,KAAK,GACJ;IACpB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,MAAM,CAAC;IAC1E,MAAM,QAAQ,GAAG,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,MAAM,CAAC;IACtE,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,WAAW,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,CAAC,UAAU,IAAI,GAAG,KAAK,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC;IAExF,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAAY,CAAC;IACjB,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,CAAC,CAAC;QACV,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAC;QACb,IAAI,GAAG,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsekulowicz/ds-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Lit web components for the Design System Library (atoms, molecules, organisms, templates, pages).",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"repository": {
|
|
@@ -48,6 +48,13 @@
|
|
|
48
48
|
"./button/define": {
|
|
49
49
|
"import": "./dist/atoms/button/define.js"
|
|
50
50
|
},
|
|
51
|
+
"./segmented-control": {
|
|
52
|
+
"types": "./dist/atoms/segmented-control/index.d.ts",
|
|
53
|
+
"import": "./dist/atoms/segmented-control/index.js"
|
|
54
|
+
},
|
|
55
|
+
"./segmented-control/define": {
|
|
56
|
+
"import": "./dist/atoms/segmented-control/define.js"
|
|
57
|
+
},
|
|
51
58
|
"./tooltip": {
|
|
52
59
|
"types": "./dist/atoms/tooltip/index.d.ts",
|
|
53
60
|
"import": "./dist/atoms/tooltip/index.js"
|
|
@@ -329,7 +336,7 @@
|
|
|
329
336
|
"dependencies": {
|
|
330
337
|
"lit": "^3.2.1",
|
|
331
338
|
"@jsekulowicz/ds-core": "0.5.0",
|
|
332
|
-
"@jsekulowicz/ds-tokens": "0.
|
|
339
|
+
"@jsekulowicz/ds-tokens": "0.14.0"
|
|
333
340
|
},
|
|
334
341
|
"devDependencies": {
|
|
335
342
|
"heroicons": "2.2.0",
|