@charcoal-ui/react 3.10.1 → 3.11.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/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/Popover/index.d.ts +1 -2
- package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -1
- package/dist/components/Modal/index.d.ts +1 -1
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Modal/useCustomModalOverlay.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.d.ts.map +1 -1
- package/dist/components/Radio/index.d.ts +4 -4
- package/dist/components/Radio/index.d.ts.map +1 -1
- package/dist/components/TextArea/index.d.ts.map +1 -1
- package/dist/components/TextField/index.d.ts.map +1 -1
- package/dist/core/CharcoalProvider.d.ts +1 -1
- package/dist/core/CharcoalProvider.d.ts.map +1 -1
- package/dist/index.cjs.js +120 -348
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +82 -310
- package/dist/index.esm.js.map +1 -1
- package/package.json +13 -17
- package/src/components/Checkbox/__snapshots__/index.story.storyshot +560 -154
- package/src/components/Checkbox/index.story.tsx +46 -74
- package/src/components/Checkbox/index.tsx +1 -0
- package/src/components/DropdownSelector/Popover/index.tsx +1 -2
- package/src/components/IconButton/__snapshots__/index.story.storyshot +6 -8
- package/src/components/IconButton/index.story.tsx +14 -37
- package/src/components/LoadingSpinner/__snapshots__/index.story.storyshot +139 -1
- package/src/components/LoadingSpinner/index.story.tsx +18 -7
- package/src/components/Modal/index.tsx +1 -1
- package/src/components/Modal/useCustomModalOverlay.tsx +5 -4
- package/src/components/MultiSelect/__snapshots__/index.story.storyshot +32 -44
- package/src/components/MultiSelect/index.story.tsx +88 -192
- package/src/components/MultiSelect/index.tsx +2 -1
- package/src/components/Radio/__snapshots__/index.story.storyshot +1 -1
- package/src/components/Radio/index.story.tsx +20 -21
- package/src/components/Radio/index.tsx +14 -13
- package/src/components/Switch/__snapshots__/index.story.storyshot +8 -9
- package/src/components/Switch/index.story.tsx +10 -18
- package/src/components/TagItem/__snapshots__/index.story.storyshot +791 -665
- package/src/components/TagItem/index.story.tsx +44 -161
- package/src/components/TextArea/TextArea.story.tsx +62 -24
- package/src/components/TextArea/__snapshots__/TextArea.story.storyshot +1858 -472
- package/src/components/TextArea/index.tsx +2 -0
- package/src/components/TextField/TextField.story.tsx +77 -67
- package/src/components/TextField/__snapshots__/TextField.story.storyshot +2004 -786
- package/src/components/TextField/index.tsx +2 -0
- package/src/components/a11y.test.tsx +1 -1
- package/src/core/CharcoalProvider.tsx +1 -1
- package/dist/components/Button/index.story.d.ts +0 -14
- package/dist/components/Button/index.story.d.ts.map +0 -1
- package/dist/components/Checkbox/index.story.d.ts +0 -8
- package/dist/components/Checkbox/index.story.d.ts.map +0 -1
- package/dist/components/Clickable/index.story.d.ts +0 -6
- package/dist/components/Clickable/index.story.d.ts.map +0 -1
- package/dist/components/DropdownSelector/ListItem/index.story.d.ts +0 -9
- package/dist/components/DropdownSelector/ListItem/index.story.d.ts.map +0 -1
- package/dist/components/DropdownSelector/MenuList/index.story.d.ts +0 -8
- package/dist/components/DropdownSelector/MenuList/index.story.d.ts.map +0 -1
- package/dist/components/DropdownSelector/Popover/index.story.d.ts +0 -5
- package/dist/components/DropdownSelector/Popover/index.story.d.ts.map +0 -1
- package/dist/components/DropdownSelector/index.story.d.ts +0 -19
- package/dist/components/DropdownSelector/index.story.d.ts.map +0 -1
- package/dist/components/Icon/index.story.d.ts +0 -6
- package/dist/components/Icon/index.story.d.ts.map +0 -1
- package/dist/components/IconButton/index.story.d.ts +0 -9
- package/dist/components/IconButton/index.story.d.ts.map +0 -1
- package/dist/components/LoadingSpinner/LoadingSpinnerIcon.story.d.ts +0 -8
- package/dist/components/LoadingSpinner/LoadingSpinnerIcon.story.d.ts.map +0 -1
- package/dist/components/LoadingSpinner/index.story.d.ts +0 -6
- package/dist/components/LoadingSpinner/index.story.d.ts.map +0 -1
- package/dist/components/Modal/index.story.d.ts +0 -21
- package/dist/components/Modal/index.story.d.ts.map +0 -1
- package/dist/components/MultiSelect/index.story.d.ts +0 -82
- package/dist/components/MultiSelect/index.story.d.ts.map +0 -1
- package/dist/components/MultiSelect/index.test.d.ts +0 -2
- package/dist/components/MultiSelect/index.test.d.ts.map +0 -1
- package/dist/components/Radio/index.story.d.ts +0 -26
- package/dist/components/Radio/index.story.d.ts.map +0 -1
- package/dist/components/Radio/index.test.d.ts +0 -2
- package/dist/components/Radio/index.test.d.ts.map +0 -1
- package/dist/components/SegmentedControl/index.story.d.ts +0 -7
- package/dist/components/SegmentedControl/index.story.d.ts.map +0 -1
- package/dist/components/Switch/index.story.d.ts +0 -9
- package/dist/components/Switch/index.story.d.ts.map +0 -1
- package/dist/components/TagItem/index.story.d.ts +0 -16
- package/dist/components/TagItem/index.story.d.ts.map +0 -1
- package/dist/components/TextArea/TextArea.story.d.ts +0 -9
- package/dist/components/TextArea/TextArea.story.d.ts.map +0 -1
- package/dist/components/TextField/TextField.story.d.ts +0 -22
- package/dist/components/TextField/TextField.story.d.ts.map +0 -1
- package/dist/components/a11y.test.d.ts +0 -2
- package/dist/components/a11y.test.d.ts.map +0 -1
- package/src/components/LoadingSpinner/LoadingSpinnerIcon.story.tsx +0 -13
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Storybook Tests MultiSelect
|
|
3
|
+
exports[`Storybook Tests MultiSelect Basic 1`] = `
|
|
4
4
|
.c1 {
|
|
5
5
|
display: grid;
|
|
6
6
|
grid-template-columns: auto 1fr;
|
|
@@ -136,7 +136,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
136
136
|
data-dark={false}
|
|
137
137
|
>
|
|
138
138
|
<div
|
|
139
|
-
aria-label=""
|
|
139
|
+
aria-label="label"
|
|
140
140
|
className="c0"
|
|
141
141
|
data-testid="SelectGroup"
|
|
142
142
|
>
|
|
@@ -149,7 +149,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
149
149
|
checked={true}
|
|
150
150
|
className="c2"
|
|
151
151
|
disabled={false}
|
|
152
|
-
name=""
|
|
152
|
+
name="name"
|
|
153
153
|
onChange={[Function]}
|
|
154
154
|
type="checkbox"
|
|
155
155
|
value="選択肢1"
|
|
@@ -166,8 +166,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
166
166
|
<div
|
|
167
167
|
className="c4"
|
|
168
168
|
>
|
|
169
|
-
選択肢
|
|
170
|
-
1
|
|
169
|
+
選択肢1
|
|
171
170
|
</div>
|
|
172
171
|
</label>
|
|
173
172
|
<label
|
|
@@ -179,7 +178,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
179
178
|
checked={false}
|
|
180
179
|
className="c2"
|
|
181
180
|
disabled={false}
|
|
182
|
-
name=""
|
|
181
|
+
name="name"
|
|
183
182
|
onChange={[Function]}
|
|
184
183
|
type="checkbox"
|
|
185
184
|
value="選択肢2"
|
|
@@ -196,8 +195,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
196
195
|
<div
|
|
197
196
|
className="c4"
|
|
198
197
|
>
|
|
199
|
-
選択肢
|
|
200
|
-
2
|
|
198
|
+
選択肢2
|
|
201
199
|
</div>
|
|
202
200
|
</label>
|
|
203
201
|
<label
|
|
@@ -209,7 +207,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
209
207
|
checked={true}
|
|
210
208
|
className="c2"
|
|
211
209
|
disabled={false}
|
|
212
|
-
name=""
|
|
210
|
+
name="name"
|
|
213
211
|
onChange={[Function]}
|
|
214
212
|
type="checkbox"
|
|
215
213
|
value="選択肢3"
|
|
@@ -226,8 +224,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
226
224
|
<div
|
|
227
225
|
className="c4"
|
|
228
226
|
>
|
|
229
|
-
選択肢
|
|
230
|
-
3
|
|
227
|
+
選択肢3
|
|
231
228
|
</div>
|
|
232
229
|
</label>
|
|
233
230
|
<label
|
|
@@ -239,7 +236,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
239
236
|
checked={false}
|
|
240
237
|
className="c2"
|
|
241
238
|
disabled={false}
|
|
242
|
-
name=""
|
|
239
|
+
name="name"
|
|
243
240
|
onChange={[Function]}
|
|
244
241
|
type="checkbox"
|
|
245
242
|
value="選択肢4"
|
|
@@ -256,8 +253,7 @@ exports[`Storybook Tests MultiSelect Default 1`] = `
|
|
|
256
253
|
<div
|
|
257
254
|
className="c4"
|
|
258
255
|
>
|
|
259
|
-
選択肢
|
|
260
|
-
4
|
|
256
|
+
選択肢4
|
|
261
257
|
</div>
|
|
262
258
|
</label>
|
|
263
259
|
</div>
|
|
@@ -405,7 +401,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
405
401
|
data-dark={false}
|
|
406
402
|
>
|
|
407
403
|
<div
|
|
408
|
-
aria-label=""
|
|
404
|
+
aria-label="label"
|
|
409
405
|
className="c0"
|
|
410
406
|
data-testid="SelectGroup"
|
|
411
407
|
>
|
|
@@ -418,7 +414,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
418
414
|
checked={false}
|
|
419
415
|
className="c2"
|
|
420
416
|
disabled={false}
|
|
421
|
-
name="
|
|
417
|
+
name="name"
|
|
422
418
|
onChange={[Function]}
|
|
423
419
|
type="checkbox"
|
|
424
420
|
value="選択肢1"
|
|
@@ -435,8 +431,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
435
431
|
<div
|
|
436
432
|
className="c4"
|
|
437
433
|
>
|
|
438
|
-
選択肢
|
|
439
|
-
1
|
|
434
|
+
選択肢1
|
|
440
435
|
</div>
|
|
441
436
|
</label>
|
|
442
437
|
<label
|
|
@@ -448,7 +443,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
448
443
|
checked={false}
|
|
449
444
|
className="c2"
|
|
450
445
|
disabled={false}
|
|
451
|
-
name="
|
|
446
|
+
name="name"
|
|
452
447
|
onChange={[Function]}
|
|
453
448
|
type="checkbox"
|
|
454
449
|
value="選択肢2"
|
|
@@ -465,8 +460,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
465
460
|
<div
|
|
466
461
|
className="c4"
|
|
467
462
|
>
|
|
468
|
-
選択肢
|
|
469
|
-
2
|
|
463
|
+
選択肢2
|
|
470
464
|
</div>
|
|
471
465
|
</label>
|
|
472
466
|
<label
|
|
@@ -478,7 +472,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
478
472
|
checked={false}
|
|
479
473
|
className="c2"
|
|
480
474
|
disabled={false}
|
|
481
|
-
name="
|
|
475
|
+
name="name"
|
|
482
476
|
onChange={[Function]}
|
|
483
477
|
type="checkbox"
|
|
484
478
|
value="選択肢3"
|
|
@@ -495,8 +489,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
495
489
|
<div
|
|
496
490
|
className="c4"
|
|
497
491
|
>
|
|
498
|
-
選択肢
|
|
499
|
-
3
|
|
492
|
+
選択肢3
|
|
500
493
|
</div>
|
|
501
494
|
</label>
|
|
502
495
|
<label
|
|
@@ -508,7 +501,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
508
501
|
checked={false}
|
|
509
502
|
className="c2"
|
|
510
503
|
disabled={false}
|
|
511
|
-
name="
|
|
504
|
+
name="name"
|
|
512
505
|
onChange={[Function]}
|
|
513
506
|
type="checkbox"
|
|
514
507
|
value="選択肢4"
|
|
@@ -525,8 +518,7 @@ exports[`Storybook Tests MultiSelect Invalid 1`] = `
|
|
|
525
518
|
<div
|
|
526
519
|
className="c4"
|
|
527
520
|
>
|
|
528
|
-
選択肢
|
|
529
|
-
4
|
|
521
|
+
選択肢4
|
|
530
522
|
</div>
|
|
531
523
|
</label>
|
|
532
524
|
</div>
|
|
@@ -673,7 +665,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
673
665
|
data-dark={false}
|
|
674
666
|
>
|
|
675
667
|
<div
|
|
676
|
-
aria-label=""
|
|
668
|
+
aria-label="label"
|
|
677
669
|
className="c0"
|
|
678
670
|
data-testid="SelectGroup"
|
|
679
671
|
>
|
|
@@ -686,7 +678,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
686
678
|
checked={false}
|
|
687
679
|
className="c2"
|
|
688
680
|
disabled={false}
|
|
689
|
-
name="
|
|
681
|
+
name="name"
|
|
690
682
|
onChange={[Function]}
|
|
691
683
|
type="checkbox"
|
|
692
684
|
value="選択肢1"
|
|
@@ -703,8 +695,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
703
695
|
<div
|
|
704
696
|
className="c4"
|
|
705
697
|
>
|
|
706
|
-
選択肢
|
|
707
|
-
1
|
|
698
|
+
選択肢1
|
|
708
699
|
</div>
|
|
709
700
|
</label>
|
|
710
701
|
<label
|
|
@@ -716,7 +707,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
716
707
|
checked={false}
|
|
717
708
|
className="c2"
|
|
718
709
|
disabled={false}
|
|
719
|
-
name="
|
|
710
|
+
name="name"
|
|
720
711
|
onChange={[Function]}
|
|
721
712
|
type="checkbox"
|
|
722
713
|
value="選択肢2"
|
|
@@ -733,8 +724,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
733
724
|
<div
|
|
734
725
|
className="c4"
|
|
735
726
|
>
|
|
736
|
-
選択肢
|
|
737
|
-
2
|
|
727
|
+
選択肢2
|
|
738
728
|
</div>
|
|
739
729
|
</label>
|
|
740
730
|
<label
|
|
@@ -746,7 +736,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
746
736
|
checked={false}
|
|
747
737
|
className="c2"
|
|
748
738
|
disabled={false}
|
|
749
|
-
name="
|
|
739
|
+
name="name"
|
|
750
740
|
onChange={[Function]}
|
|
751
741
|
type="checkbox"
|
|
752
742
|
value="選択肢3"
|
|
@@ -763,8 +753,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
763
753
|
<div
|
|
764
754
|
className="c4"
|
|
765
755
|
>
|
|
766
|
-
選択肢
|
|
767
|
-
3
|
|
756
|
+
選択肢3
|
|
768
757
|
</div>
|
|
769
758
|
</label>
|
|
770
759
|
<label
|
|
@@ -776,7 +765,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
776
765
|
checked={false}
|
|
777
766
|
className="c2"
|
|
778
767
|
disabled={false}
|
|
779
|
-
name="
|
|
768
|
+
name="name"
|
|
780
769
|
onChange={[Function]}
|
|
781
770
|
type="checkbox"
|
|
782
771
|
value="選択肢4"
|
|
@@ -793,8 +782,7 @@ exports[`Storybook Tests MultiSelect Overlay 1`] = `
|
|
|
793
782
|
<div
|
|
794
783
|
className="c4"
|
|
795
784
|
>
|
|
796
|
-
選択肢
|
|
797
|
-
4
|
|
785
|
+
選択肢4
|
|
798
786
|
</div>
|
|
799
787
|
</label>
|
|
800
788
|
</div>
|
|
@@ -950,7 +938,7 @@ exports[`Storybook Tests MultiSelect Playground 1`] = `
|
|
|
950
938
|
checked={false}
|
|
951
939
|
className="c2"
|
|
952
940
|
disabled={false}
|
|
953
|
-
name="
|
|
941
|
+
name=""
|
|
954
942
|
onChange={[Function]}
|
|
955
943
|
type="checkbox"
|
|
956
944
|
value="選択肢1"
|
|
@@ -980,7 +968,7 @@ exports[`Storybook Tests MultiSelect Playground 1`] = `
|
|
|
980
968
|
checked={false}
|
|
981
969
|
className="c2"
|
|
982
970
|
disabled={false}
|
|
983
|
-
name="
|
|
971
|
+
name=""
|
|
984
972
|
onChange={[Function]}
|
|
985
973
|
type="checkbox"
|
|
986
974
|
value="選択肢2"
|
|
@@ -1010,7 +998,7 @@ exports[`Storybook Tests MultiSelect Playground 1`] = `
|
|
|
1010
998
|
checked={false}
|
|
1011
999
|
className="c2"
|
|
1012
1000
|
disabled={false}
|
|
1013
|
-
name="
|
|
1001
|
+
name=""
|
|
1014
1002
|
onChange={[Function]}
|
|
1015
1003
|
type="checkbox"
|
|
1016
1004
|
value="選択肢3"
|
|
@@ -1040,7 +1028,7 @@ exports[`Storybook Tests MultiSelect Playground 1`] = `
|
|
|
1040
1028
|
checked={false}
|
|
1041
1029
|
className="c2"
|
|
1042
1030
|
disabled={false}
|
|
1043
|
-
name="
|
|
1031
|
+
name=""
|
|
1044
1032
|
onChange={[Function]}
|
|
1045
1033
|
type="checkbox"
|
|
1046
1034
|
value="選択肢4"
|
|
@@ -1,42 +1,19 @@
|
|
|
1
1
|
import { useState } from 'react'
|
|
2
|
-
import { Story } from '../../_lib/compat'
|
|
3
2
|
import styled from 'styled-components'
|
|
4
3
|
import { MultiSelectGroup, default as MultiSelect } from '.'
|
|
4
|
+
import { Meta, StoryObj } from '@storybook/react'
|
|
5
|
+
import { action } from '@storybook/addon-actions'
|
|
6
|
+
|
|
7
|
+
const StyledMultiSelectGroup = styled(MultiSelectGroup)`
|
|
8
|
+
display: grid;
|
|
9
|
+
grid-template-columns: 1fr;
|
|
10
|
+
gap: 8px;
|
|
11
|
+
`
|
|
5
12
|
|
|
6
13
|
export default {
|
|
7
14
|
title: 'MultiSelect',
|
|
8
15
|
component: MultiSelect,
|
|
9
16
|
argTypes: {
|
|
10
|
-
name: {
|
|
11
|
-
control: {
|
|
12
|
-
type: 'text',
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
label: {
|
|
16
|
-
control: {
|
|
17
|
-
type: 'text',
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
selected: {
|
|
21
|
-
control: {
|
|
22
|
-
type: 'boolean',
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
disabled: {
|
|
26
|
-
control: {
|
|
27
|
-
type: 'boolean',
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
readonly: {
|
|
31
|
-
control: {
|
|
32
|
-
type: 'boolean',
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
invalid: {
|
|
36
|
-
control: {
|
|
37
|
-
type: 'boolean',
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
17
|
variant: {
|
|
41
18
|
control: {
|
|
42
19
|
type: 'inline-radio',
|
|
@@ -44,173 +21,92 @@ export default {
|
|
|
44
21
|
},
|
|
45
22
|
},
|
|
46
23
|
},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
label: string
|
|
52
|
-
selected: boolean
|
|
53
|
-
onChange: (selected: string[]) => void
|
|
54
|
-
disabled?: boolean
|
|
55
|
-
readonly?: boolean
|
|
56
|
-
invalid?: boolean
|
|
57
|
-
variant?: 'default' | 'overlay'
|
|
58
|
-
className?: string
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const StyledMultiSelectGroup = styled(MultiSelectGroup)`
|
|
62
|
-
display: grid;
|
|
63
|
-
grid-template-columns: 1fr;
|
|
64
|
-
gap: 8px;
|
|
65
|
-
`
|
|
66
|
-
|
|
67
|
-
const Template: Story<Props> = ({
|
|
68
|
-
name,
|
|
69
|
-
label,
|
|
70
|
-
selected,
|
|
71
|
-
onChange,
|
|
72
|
-
disabled,
|
|
73
|
-
readonly,
|
|
74
|
-
invalid,
|
|
75
|
-
variant,
|
|
76
|
-
className,
|
|
77
|
-
}) => {
|
|
78
|
-
return (
|
|
79
|
-
<StyledMultiSelectGroup
|
|
80
|
-
{...{
|
|
81
|
-
name,
|
|
82
|
-
label,
|
|
83
|
-
onChange,
|
|
84
|
-
disabled,
|
|
85
|
-
readonly,
|
|
86
|
-
invalid,
|
|
87
|
-
}}
|
|
88
|
-
selected={selected ? ['選択肢1', '選択肢3'] : []}
|
|
89
|
-
>
|
|
90
|
-
{[1, 2, 3, 4].map((idx) => (
|
|
91
|
-
<MultiSelect
|
|
92
|
-
value={`選択肢${idx}`}
|
|
93
|
-
variant={variant}
|
|
94
|
-
key={idx}
|
|
95
|
-
className={className}
|
|
96
|
-
>
|
|
97
|
-
選択肢{idx}
|
|
98
|
-
</MultiSelect>
|
|
99
|
-
))}
|
|
100
|
-
</StyledMultiSelectGroup>
|
|
101
|
-
)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export const Default = Template.bind({})
|
|
105
|
-
Default.args = {
|
|
106
|
-
name: '',
|
|
107
|
-
label: '',
|
|
108
|
-
selected: true,
|
|
109
|
-
disabled: false,
|
|
110
|
-
readonly: false,
|
|
111
|
-
invalid: false,
|
|
112
|
-
variant: 'default',
|
|
113
|
-
// eslint-disable-next-line no-console
|
|
114
|
-
onChange: (selected) => console.log(selected),
|
|
115
|
-
}
|
|
24
|
+
args: {
|
|
25
|
+
variant: 'default',
|
|
26
|
+
},
|
|
27
|
+
} as Meta<typeof MultiSelect>
|
|
116
28
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
29
|
+
export const Basic: StoryObj<typeof MultiSelect> = {
|
|
30
|
+
render: function Render(args) {
|
|
31
|
+
const options = ['選択肢1', '選択肢2', '選択肢3', '選択肢4']
|
|
32
|
+
return (
|
|
33
|
+
<StyledMultiSelectGroup
|
|
34
|
+
name="name"
|
|
35
|
+
label="label"
|
|
36
|
+
onChange={action('click')}
|
|
37
|
+
selected={['選択肢1', '選択肢3']}
|
|
38
|
+
>
|
|
39
|
+
{options.map((option) => (
|
|
40
|
+
<MultiSelect {...args} value={option} key={option}>
|
|
41
|
+
{option}
|
|
42
|
+
</MultiSelect>
|
|
43
|
+
))}
|
|
44
|
+
</StyledMultiSelectGroup>
|
|
45
|
+
)
|
|
46
|
+
},
|
|
125
47
|
}
|
|
126
48
|
|
|
127
|
-
export const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
</StyledMultiSelectGroup>
|
|
147
|
-
)
|
|
148
|
-
}
|
|
149
|
-
Playground.args = {
|
|
150
|
-
name: 'defaultName',
|
|
151
|
-
label: '',
|
|
152
|
-
disabled: false,
|
|
153
|
-
readonly: false,
|
|
154
|
-
invalid: false,
|
|
155
|
-
variant: 'default',
|
|
49
|
+
export const Invalid: StoryObj<typeof MultiSelect> = {
|
|
50
|
+
render: function Render(args) {
|
|
51
|
+
const options = ['選択肢1', '選択肢2', '選択肢3', '選択肢4']
|
|
52
|
+
return (
|
|
53
|
+
<StyledMultiSelectGroup
|
|
54
|
+
name="name"
|
|
55
|
+
label="label"
|
|
56
|
+
onChange={action('click')}
|
|
57
|
+
selected={[]}
|
|
58
|
+
invalid
|
|
59
|
+
>
|
|
60
|
+
{options.map((option) => (
|
|
61
|
+
<MultiSelect {...args} value={option} key={option}>
|
|
62
|
+
{option}
|
|
63
|
+
</MultiSelect>
|
|
64
|
+
))}
|
|
65
|
+
</StyledMultiSelectGroup>
|
|
66
|
+
)
|
|
67
|
+
},
|
|
156
68
|
}
|
|
157
69
|
|
|
158
|
-
export const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
)
|
|
180
|
-
}
|
|
181
|
-
Invalid.args = {
|
|
182
|
-
name: 'defaultName',
|
|
183
|
-
label: '',
|
|
184
|
-
disabled: false,
|
|
185
|
-
readonly: false,
|
|
186
|
-
variant: 'default',
|
|
70
|
+
export const Overlay: StoryObj<typeof MultiSelect> = {
|
|
71
|
+
render: function Render(args) {
|
|
72
|
+
const options = ['選択肢1', '選択肢2', '選択肢3', '選択肢4']
|
|
73
|
+
return (
|
|
74
|
+
<StyledMultiSelectGroup
|
|
75
|
+
name="name"
|
|
76
|
+
label="label"
|
|
77
|
+
onChange={action('click')}
|
|
78
|
+
selected={[]}
|
|
79
|
+
>
|
|
80
|
+
{options.map((option) => (
|
|
81
|
+
<MultiSelect {...args} value={option} key={option}>
|
|
82
|
+
{option}
|
|
83
|
+
</MultiSelect>
|
|
84
|
+
))}
|
|
85
|
+
</StyledMultiSelectGroup>
|
|
86
|
+
)
|
|
87
|
+
},
|
|
88
|
+
args: {
|
|
89
|
+
variant: 'overlay',
|
|
90
|
+
},
|
|
187
91
|
}
|
|
188
92
|
|
|
189
|
-
export const
|
|
190
|
-
|
|
93
|
+
export const Playground: StoryObj<typeof MultiSelect> = {
|
|
94
|
+
render: function Render(args) {
|
|
95
|
+
const [selected, setSelected] = useState<string[]>([])
|
|
191
96
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
value={`選択肢${idx}`}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
))}
|
|
208
|
-
</StyledMultiSelectGroup>
|
|
209
|
-
)
|
|
210
|
-
}
|
|
211
|
-
Overlay.args = {
|
|
212
|
-
name: 'defaultName',
|
|
213
|
-
label: '',
|
|
214
|
-
disabled: false,
|
|
215
|
-
readonly: false,
|
|
97
|
+
return (
|
|
98
|
+
<StyledMultiSelectGroup
|
|
99
|
+
name=""
|
|
100
|
+
label=""
|
|
101
|
+
onChange={setSelected}
|
|
102
|
+
selected={selected}
|
|
103
|
+
>
|
|
104
|
+
{[1, 2, 3, 4].map((idx) => (
|
|
105
|
+
<MultiSelect {...args} value={`選択肢${idx}`} key={idx}>
|
|
106
|
+
選択肢{idx}
|
|
107
|
+
</MultiSelect>
|
|
108
|
+
))}
|
|
109
|
+
</StyledMultiSelectGroup>
|
|
110
|
+
)
|
|
111
|
+
},
|
|
216
112
|
}
|
|
@@ -6,6 +6,7 @@ import { px } from '@charcoal-ui/utils'
|
|
|
6
6
|
|
|
7
7
|
import { MultiSelectGroupContext } from './context'
|
|
8
8
|
import { focusVisibleFocusRingCss } from '@charcoal-ui/styled'
|
|
9
|
+
import Icon from '../Icon'
|
|
9
10
|
|
|
10
11
|
export type MultiSelectProps = React.PropsWithChildren<{
|
|
11
12
|
value: string
|
|
@@ -76,7 +77,7 @@ const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(
|
|
|
76
77
|
invalid={invalid}
|
|
77
78
|
aria-hidden={true}
|
|
78
79
|
>
|
|
79
|
-
<
|
|
80
|
+
<Icon name="24/Check" unsafe-non-guideline-scale={16 / 24} />
|
|
80
81
|
</MultiSelectInputOverlay>
|
|
81
82
|
{Boolean(children) && <MultiSelectLabel>{children}</MultiSelectLabel>}
|
|
82
83
|
</MultiSelectRoot>
|