@spectrum-web-components/picker 0.41.2 → 0.42.1
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/README.md +29 -1
- package/custom-elements.json +154 -98
- package/package.json +17 -16
- package/src/Picker.d.ts +10 -4
- package/src/Picker.dev.js +65 -47
- package/src/Picker.dev.js.map +3 -3
- package/src/Picker.js +33 -24
- package/src/Picker.js.map +3 -3
- package/src/picker.css.dev.js +1 -1
- package/src/picker.css.dev.js.map +1 -1
- package/src/picker.css.js +1 -1
- package/src/picker.css.js.map +1 -1
- package/src/spectrum-config.js +18 -0
- package/src/spectrum-picker.css.dev.js +1 -1
- package/src/spectrum-picker.css.dev.js.map +1 -1
- package/src/spectrum-picker.css.js +1 -1
- package/src/spectrum-picker.css.js.map +1 -1
- package/stories/args.js +2 -1
- package/stories/args.js.map +2 -2
- package/stories/picker-pending.stories.js +16 -0
- package/stories/picker-pending.stories.js.map +7 -0
- package/stories/picker-sizes.stories.js +28 -2
- package/stories/picker-sizes.stories.js.map +2 -2
- package/stories/picker.stories.js +50 -17
- package/stories/picker.stories.js.map +2 -2
- package/stories/template.js +7 -2
- package/stories/template.js.map +2 -2
- package/test/index.js +88 -8
- package/test/index.js.map +3 -3
- package/test/picker-pending.test-vrt.js +5 -0
- package/test/picker-pending.test-vrt.js.map +7 -0
|
@@ -14,6 +14,7 @@ import { isOverlayOpen } from "../../overlay/stories/index.js";
|
|
|
14
14
|
import "../../overlay/stories/index.js";
|
|
15
15
|
import { handleChange, Template } from "./template.js";
|
|
16
16
|
import { argTypes } from "./args.js";
|
|
17
|
+
import { ifDefined } from "lit-html/directives/if-defined.js";
|
|
17
18
|
export default {
|
|
18
19
|
title: "Picker",
|
|
19
20
|
component: "sp-picker",
|
|
@@ -21,9 +22,11 @@ export default {
|
|
|
21
22
|
disabled: false,
|
|
22
23
|
invalid: false,
|
|
23
24
|
open: false,
|
|
24
|
-
quiet: false
|
|
25
|
+
quiet: false,
|
|
26
|
+
pending: false
|
|
25
27
|
},
|
|
26
28
|
argTypes: {
|
|
29
|
+
...argTypes,
|
|
27
30
|
onChange: { action: "change" },
|
|
28
31
|
open: {
|
|
29
32
|
name: "open",
|
|
@@ -35,12 +38,24 @@ export default {
|
|
|
35
38
|
},
|
|
36
39
|
control: "boolean"
|
|
37
40
|
},
|
|
38
|
-
|
|
41
|
+
pending: {
|
|
42
|
+
name: "pending",
|
|
43
|
+
type: { name: "boolean", required: false },
|
|
44
|
+
table: {
|
|
45
|
+
type: { summary: "boolean" },
|
|
46
|
+
defaultValue: { summary: false }
|
|
47
|
+
},
|
|
48
|
+
control: {
|
|
49
|
+
type: "boolean"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
39
52
|
}
|
|
40
53
|
};
|
|
41
54
|
export const Default = (args) => {
|
|
42
55
|
return html`
|
|
43
|
-
<sp-field-label for="picker-1"
|
|
56
|
+
<sp-field-label for="picker-1" size=${ifDefined(args.size)}>
|
|
57
|
+
Where do you live?
|
|
58
|
+
</sp-field-label>
|
|
44
59
|
<sp-picker
|
|
45
60
|
id="picker-1"
|
|
46
61
|
@change=${handleChange(args)}
|
|
@@ -69,10 +84,16 @@ export const disabled = (args) => Template(args);
|
|
|
69
84
|
disabled.args = {
|
|
70
85
|
disabled: true
|
|
71
86
|
};
|
|
87
|
+
export const invalid = (args) => Template(args);
|
|
88
|
+
invalid.args = {
|
|
89
|
+
invalid: true
|
|
90
|
+
};
|
|
72
91
|
export const tooltip = (args) => {
|
|
73
92
|
const { open, ...rest } = args;
|
|
74
93
|
return html`
|
|
75
|
-
<sp-field-label for="picker-1"
|
|
94
|
+
<sp-field-label for="picker-1" size=${ifDefined(args.size)}>
|
|
95
|
+
Where do you live?
|
|
96
|
+
</sp-field-label>
|
|
76
97
|
<sp-picker
|
|
77
98
|
id="picker-1"
|
|
78
99
|
@change=${handleChange(args)}
|
|
@@ -111,7 +132,11 @@ tooltip.args = {
|
|
|
111
132
|
tooltip.decorators = [isOverlayOpen];
|
|
112
133
|
export const leftSideLabel = (args) => {
|
|
113
134
|
return html`
|
|
114
|
-
<sp-field-label
|
|
135
|
+
<sp-field-label
|
|
136
|
+
side-aligned="start"
|
|
137
|
+
for="picker-1"
|
|
138
|
+
size=${ifDefined(args.size)}
|
|
139
|
+
>
|
|
115
140
|
Where do you live?
|
|
116
141
|
</sp-field-label>
|
|
117
142
|
<sp-picker
|
|
@@ -187,7 +212,9 @@ export const slottedLabel = (args) => {
|
|
|
187
212
|
};
|
|
188
213
|
export const quiet = (args) => {
|
|
189
214
|
return html`
|
|
190
|
-
<sp-field-label for="picker-quiet"
|
|
215
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
216
|
+
Where do you live?
|
|
217
|
+
</sp-field-label>
|
|
191
218
|
<sp-picker
|
|
192
219
|
${spreadProps(args)}
|
|
193
220
|
id="picker-quiet"
|
|
@@ -213,7 +240,11 @@ quiet.args = {
|
|
|
213
240
|
};
|
|
214
241
|
export const quietSideLabel = (args) => {
|
|
215
242
|
return html`
|
|
216
|
-
<sp-field-label
|
|
243
|
+
<sp-field-label
|
|
244
|
+
side-aligned="start"
|
|
245
|
+
for="picker-quiet-sidelabel"
|
|
246
|
+
size=${ifDefined(args.size)}
|
|
247
|
+
>
|
|
217
248
|
Where do you live?
|
|
218
249
|
</sp-field-label>
|
|
219
250
|
<sp-picker
|
|
@@ -241,7 +272,7 @@ quietSideLabel.args = {
|
|
|
241
272
|
};
|
|
242
273
|
export const icons = (args) => {
|
|
243
274
|
return html`
|
|
244
|
-
<sp-field-label for="picker-quiet">
|
|
275
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
245
276
|
Choose an action type...
|
|
246
277
|
</sp-field-label>
|
|
247
278
|
<sp-picker
|
|
@@ -268,7 +299,7 @@ export const icons = (args) => {
|
|
|
268
299
|
};
|
|
269
300
|
export const iconsNone = (args) => {
|
|
270
301
|
return html`
|
|
271
|
-
<sp-field-label for="picker-quiet">
|
|
302
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
272
303
|
Choose an action type...
|
|
273
304
|
</sp-field-label>
|
|
274
305
|
<sp-picker
|
|
@@ -300,7 +331,7 @@ iconsNone.args = {
|
|
|
300
331
|
iconsNone.decorators = [isOverlayOpen];
|
|
301
332
|
export const iconValue = (args) => {
|
|
302
333
|
return html`
|
|
303
|
-
<sp-field-label for="picker-quiet">
|
|
334
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
304
335
|
Choose an action type...
|
|
305
336
|
</sp-field-label>
|
|
306
337
|
<sp-picker
|
|
@@ -329,7 +360,7 @@ export const iconValue = (args) => {
|
|
|
329
360
|
};
|
|
330
361
|
export const iconsOnly = (args) => {
|
|
331
362
|
return html`
|
|
332
|
-
<sp-field-label for="picker-quiet">
|
|
363
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
333
364
|
Choose an action type...
|
|
334
365
|
</sp-field-label>
|
|
335
366
|
<sp-picker
|
|
@@ -366,7 +397,7 @@ export const Open = (args) => {
|
|
|
366
397
|
}
|
|
367
398
|
</style>
|
|
368
399
|
<fieldset class="backdrop-filter-test">
|
|
369
|
-
<sp-field-label for="picker-open">
|
|
400
|
+
<sp-field-label for="picker-open" size=${ifDefined(args.size)}>
|
|
370
401
|
Where do you live?
|
|
371
402
|
</sp-field-label>
|
|
372
403
|
<sp-picker
|
|
@@ -387,7 +418,7 @@ export const Open = (args) => {
|
|
|
387
418
|
</sp-picker>
|
|
388
419
|
</fieldset>
|
|
389
420
|
<fieldset>
|
|
390
|
-
<sp-field-label for="picker-closed">
|
|
421
|
+
<sp-field-label for="picker-closed" size=${ifDefined(args.size)}>
|
|
391
422
|
Where do you live?
|
|
392
423
|
</sp-field-label>
|
|
393
424
|
<sp-picker
|
|
@@ -446,7 +477,7 @@ export const OpenShowingEdgeCase = (args) => {
|
|
|
446
477
|
.
|
|
447
478
|
</p>
|
|
448
479
|
<fieldset class="backdrop-filter-test">
|
|
449
|
-
<sp-field-label for="picker-open">
|
|
480
|
+
<sp-field-label for="picker-open" size=${ifDefined(args.size)}>
|
|
450
481
|
Where do you live?
|
|
451
482
|
</sp-field-label>
|
|
452
483
|
<sp-picker
|
|
@@ -467,7 +498,7 @@ export const OpenShowingEdgeCase = (args) => {
|
|
|
467
498
|
</sp-picker>
|
|
468
499
|
</fieldset>
|
|
469
500
|
<fieldset>
|
|
470
|
-
<sp-field-label for="picker-closed">
|
|
501
|
+
<sp-field-label for="picker-closed" size=${ifDefined(args.size)}>
|
|
471
502
|
Where do you live?
|
|
472
503
|
</sp-field-label>
|
|
473
504
|
<sp-picker
|
|
@@ -492,7 +523,9 @@ OpenShowingEdgeCase.swc_vrt = {
|
|
|
492
523
|
};
|
|
493
524
|
export const initialValue = (args) => {
|
|
494
525
|
return html`
|
|
495
|
-
<sp-field-label for="picker-initial"
|
|
526
|
+
<sp-field-label for="picker-initial" size=${ifDefined(args.size)}>
|
|
527
|
+
Where do you live?
|
|
528
|
+
</sp-field-label>
|
|
496
529
|
<sp-picker
|
|
497
530
|
id="picker-initial"
|
|
498
531
|
@change=${handleChange(args)}
|
|
@@ -534,7 +567,7 @@ export const readonly = (args) => {
|
|
|
534
567
|
export const custom = (args) => {
|
|
535
568
|
const initialState = "lb1-mo";
|
|
536
569
|
return html`
|
|
537
|
-
<sp-field-label for="picker-state">
|
|
570
|
+
<sp-field-label for="picker-state" size=${ifDefined(args.size)}>
|
|
538
571
|
What state do you live in?
|
|
539
572
|
</sp-field-label>
|
|
540
573
|
<sp-picker
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["picker.stories.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { html, TemplateResult } from '@spectrum-web-components/base';\n\nimport '@spectrum-web-components/link/sp-link.js';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-edit.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-copy.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-delete.js';\nimport { states } from './states.js';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport { spreadProps } from '../../../test/lit-helpers.js';\nimport { isOverlayOpen } from '../../overlay/stories/index.js';\nimport '../../overlay/stories/index.js';\nimport { handleChange, StoryArgs, Template } from './template.js';\nimport { argTypes } from './args.js';\n\nexport default {\n title: 'Picker',\n component: 'sp-picker',\n args: {\n disabled: false,\n invalid: false,\n open: false,\n quiet: false,\n },\n argTypes: {\n onChange: { action: 'change' },\n open: {\n name: 'open',\n type: { name: 'boolean', required: false },\n description: 'Whether the menu is open or not.',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: 'boolean',\n },\n ...argTypes,\n },\n};\n\nexport const Default = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-1\">Where do you live?</sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Select a Country with a very long label, too long, in fact\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const disabled = (args: StoryArgs): TemplateResult => Template(args);\ndisabled.args = {\n disabled: true,\n};\n\nexport const tooltip = (args: StoryArgs): TemplateResult => {\n const { open, ...rest } = args;\n return html`\n <sp-field-label for=\"picker-1\">Where do you live?</sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Select a Country with a very long label, too long, in fact\"\n ${spreadProps(rest)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n <sp-tooltip\n slot=\"tooltip\"\n ?open=${open}\n self-managed\n placement=\"right\"\n >\n This Picker wants to know where you live.\n </sp-tooltip>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\ntooltip.args = {\n open: true,\n};\ntooltip.decorators = [isOverlayOpen];\n\nexport const leftSideLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label side-aligned=\"start\" for=\"picker-1\">\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Select a Country with a very long label, too long, in fact\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const noVisibleLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-picker\n @change=${handleChange(args)}\n label=\"Where do you live?\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const slottedLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-picker @change=${handleChange(args)} ${spreadProps(args)}>\n <span slot=\"label\">Where do you live?</span>\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const quiet = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\">Where do you live?</sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an item\"\n >\n <sp-menu-item value=\"1\">Item 1</sp-menu-item>\n <sp-menu-item value=\"2\">Item 2</sp-menu-item>\n <sp-menu-item value=\"3\">Item 3</sp-menu-item>\n <sp-menu-item value=\"4\">Item 4</sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\nquiet.args = {\n quiet: true,\n};\n\nexport const quietSideLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label side-aligned=\"start\" for=\"picker-quiet-sidelabel\">\n Where do you live?\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet-sidelabel\"\n @change=${handleChange(args)}\n label=\"Pick an item\"\n >\n <sp-menu-item value=\"1\">Item 1</sp-menu-item>\n <sp-menu-item value=\"2\">Item 2</sp-menu-item>\n <sp-menu-item value=\"3\">Item 3</sp-menu-item>\n <sp-menu-item value=\"4\">Item 4</sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\nquietSideLabel.args = {\n quiet: true,\n};\n\nexport const icons = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\">\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n value=\"1\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\"></sp-icon-edit>\n Edit\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\"></sp-icon-copy>\n Copy\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n Delete\n </sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const iconsNone = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\">\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n value=\"1\"\n icons=\"none\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\"></sp-icon-edit>\n Edit\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\"></sp-icon-copy>\n Copy\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n Delete\n </sp-menu-item>\n </sp-picker>\n `;\n};\niconsNone.args = {\n open: true,\n};\niconsNone.decorators = [isOverlayOpen];\n\nexport const iconValue = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\">\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n icons=\"only\"\n style=\"width: 100px\"\n value=\"2\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\"></sp-icon-edit>\n Edit\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\"></sp-icon-copy>\n Copy\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n Delete\n </sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const iconsOnly = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\">\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n style=\"width: 100px\"\n value=\"3\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\" label=\"Edit\"></sp-icon-edit>\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\" label=\"Copy\"></sp-icon-copy>\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\" label=\"Delete\"></sp-icon-delete>\n </sp-menu-item>\n </sp-picker>\n `;\n};\niconsOnly.args = {\n open: true,\n};\niconsOnly.decorators = [isOverlayOpen];\n\nexport const Open = (args: StoryArgs): TemplateResult => {\n return html`\n <style>\n fieldset {\n float: left;\n clear: left;\n margin-bottom: 15px;\n }\n </style>\n <fieldset class=\"backdrop-filter-test\">\n <sp-field-label for=\"picker-open\">\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-open\"\n label=\"Open picker\"\n ${spreadProps(args)}\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long, in fact\n </span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-picker>\n </fieldset>\n <fieldset>\n <sp-field-label for=\"picker-closed\">\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-closed\"\n label=\"Picker that displays below the options\"\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Other menu that goes behind the open one\n </span>\n <sp-menu-item>Not so many options...</sp-menu-item>\n </sp-picker>\n </fieldset>\n `;\n};\nOpen.args = {\n open: true,\n};\nOpen.decorators = [isOverlayOpen];\n\nexport const OpenShowingEdgeCase = (args: StoryArgs): TemplateResult => {\n return html`\n <style>\n fieldset {\n float: left;\n clear: left;\n margin-bottom: 15px;\n }\n /* Enforce CSS stacking to test \"transition-behavior: allow-discrete\" */\n /* Breaks the story in non-[popover] supporting browsers */\n fieldset:nth-of-type(2) {\n position: relative;\n z-index: 2;\n }\n .backdrop-filter-test {\n backdrop-filter: saturate(80%);\n }\n </style>\n <p>\n In browser that do not support\n <code>[popover]</code>\n , the following \"open\"\n <code>sp-picker</code>\n will display behind both the closed\n <code>sp-picker</code>\n as well as the\n <code>fieldset</code>\n that contains it.\n </p>\n <p>\n Learn more about this situation in our\n <sp-link\n href=\"https://opensource.adobe.com/spectrum-web-components/components/overlay/#fallback-support\"\n >\n documentation site\n </sp-link>\n .\n </p>\n <fieldset class=\"backdrop-filter-test\">\n <sp-field-label for=\"picker-open\">\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-open\"\n label=\"Open picker\"\n ${spreadProps(args)}\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long, in fact\n </span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-picker>\n </fieldset>\n <fieldset>\n <sp-field-label for=\"picker-closed\">\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-closed\"\n label=\"Picker that displays below the options\"\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Other menu that goes behind the open one\n </span>\n <sp-menu-item>Not so many options...</sp-menu-item>\n </sp-picker>\n </fieldset>\n `;\n};\nOpenShowingEdgeCase.args = {\n open: true,\n};\nOpenShowingEdgeCase.decorators = [isOverlayOpen];\nOpenShowingEdgeCase.swc_vrt = {\n skip: true,\n};\n\nexport const initialValue = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-initial\">Where do you live?</sp-field-label>\n <sp-picker\n id=\"picker-initial\"\n @change=${handleChange(args)}\n value=\"item-2\"\n ${spreadProps(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long in fact\n </span>\n <sp-menu-item value=\"item-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"item-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"item-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"item-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"item-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"item-6\">Make Work Path</sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const readonly = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-picker\n @change=${handleChange(args)}\n readonly\n value=\"item-2\"\n ${spreadProps(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long in fact\n </span>\n <sp-menu-item value=\"item-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"item-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"item-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"item-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"item-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"item-6\">Make Work Path</sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const custom = (args: StoryArgs): TemplateResult => {\n const initialState = 'lb1-mo';\n return html`\n <sp-field-label for=\"picker-state\">\n What state do you live in?\n </sp-field-label>\n <sp-picker\n style=\"width: 400px;\"\n @change=${handleChange(args)}\n id=\"picker-state\"\n label=\"Pick a state\"\n ${spreadProps(args)}\n value=${initialState}\n >\n ${states.map(\n (state) => html`\n <sp-menu-item\n id=${state.id}\n value=${state.id}\n ?selected=${state.id === initialState}\n >\n ${state.label}\n </sp-menu-item>\n `\n )}\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\ncustom.args = {\n open: true,\n};\ncustom.decorators = [isOverlayOpen];\n"],
|
|
5
|
-
"mappings": ";AAYA,SAAS,YAA4B;AAErC,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,cAAc;AACvB,OAAO;AACP,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,OAAO;AACP,SAAS,cAAyB,gBAAgB;AAClD,SAAS,gBAAgB;
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { html, TemplateResult } from '@spectrum-web-components/base';\n\nimport '@spectrum-web-components/link/sp-link.js';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-edit.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-copy.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-delete.js';\nimport { states } from './states.js';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport { spreadProps } from '../../../test/lit-helpers.js';\nimport { isOverlayOpen } from '../../overlay/stories/index.js';\nimport '../../overlay/stories/index.js';\nimport { handleChange, StoryArgs, Template } from './template.js';\nimport { argTypes } from './args.js';\nimport { ifDefined } from 'lit-html/directives/if-defined.js';\n\nexport default {\n title: 'Picker',\n component: 'sp-picker',\n args: {\n disabled: false,\n invalid: false,\n open: false,\n quiet: false,\n pending: false,\n },\n argTypes: {\n ...argTypes,\n onChange: { action: 'change' },\n open: {\n name: 'open',\n type: { name: 'boolean', required: false },\n description: 'Whether the menu is open or not.',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: 'boolean',\n },\n pending: {\n name: 'pending',\n type: { name: 'boolean', required: false },\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: {\n type: 'boolean',\n },\n },\n },\n};\n\nexport const Default = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-1\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Select a Country with a very long label, too long, in fact\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const disabled = (args: StoryArgs): TemplateResult => Template(args);\ndisabled.args = {\n disabled: true,\n};\n\nexport const invalid = (args: StoryArgs): TemplateResult => Template(args);\ninvalid.args = {\n invalid: true,\n};\n\nexport const tooltip = (args: StoryArgs): TemplateResult => {\n const { open, ...rest } = args;\n return html`\n <sp-field-label for=\"picker-1\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Select a Country with a very long label, too long, in fact\"\n ${spreadProps(rest)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n <sp-tooltip\n slot=\"tooltip\"\n ?open=${open}\n self-managed\n placement=\"right\"\n >\n This Picker wants to know where you live.\n </sp-tooltip>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\ntooltip.args = {\n open: true,\n};\ntooltip.decorators = [isOverlayOpen];\n\nexport const leftSideLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label\n side-aligned=\"start\"\n for=\"picker-1\"\n size=${ifDefined(args.size)}\n >\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Select a Country with a very long label, too long, in fact\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const noVisibleLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-picker\n @change=${handleChange(args)}\n label=\"Where do you live?\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const slottedLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-picker @change=${handleChange(args)} ${spreadProps(args)}>\n <span slot=\"label\">Where do you live?</span>\n <sp-menu-item value=\"option-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"option-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"option-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"option-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"option-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"option-6\">\n Make Work Path\n </sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\n\nexport const quiet = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an item\"\n >\n <sp-menu-item value=\"1\">Item 1</sp-menu-item>\n <sp-menu-item value=\"2\">Item 2</sp-menu-item>\n <sp-menu-item value=\"3\">Item 3</sp-menu-item>\n <sp-menu-item value=\"4\">Item 4</sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\nquiet.args = {\n quiet: true,\n};\n\nexport const quietSideLabel = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label\n side-aligned=\"start\"\n for=\"picker-quiet-sidelabel\"\n size=${ifDefined(args.size)}\n >\n Where do you live?\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet-sidelabel\"\n @change=${handleChange(args)}\n label=\"Pick an item\"\n >\n <sp-menu-item value=\"1\">Item 1</sp-menu-item>\n <sp-menu-item value=\"2\">Item 2</sp-menu-item>\n <sp-menu-item value=\"3\">Item 3</sp-menu-item>\n <sp-menu-item value=\"4\">Item 4</sp-menu-item>\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\nquietSideLabel.args = {\n quiet: true,\n};\n\nexport const icons = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\" size=${ifDefined(args.size)}>\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n value=\"1\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\"></sp-icon-edit>\n Edit\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\"></sp-icon-copy>\n Copy\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n Delete\n </sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const iconsNone = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\" size=${ifDefined(args.size)}>\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n value=\"1\"\n icons=\"none\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\"></sp-icon-edit>\n Edit\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\"></sp-icon-copy>\n Copy\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n Delete\n </sp-menu-item>\n </sp-picker>\n `;\n};\niconsNone.args = {\n open: true,\n};\niconsNone.decorators = [isOverlayOpen];\n\nexport const iconValue = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\" size=${ifDefined(args.size)}>\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n icons=\"only\"\n style=\"width: 100px\"\n value=\"2\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\"></sp-icon-edit>\n Edit\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\"></sp-icon-copy>\n Copy\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n Delete\n </sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const iconsOnly = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-quiet\" size=${ifDefined(args.size)}>\n Choose an action type...\n </sp-field-label>\n <sp-picker\n ${spreadProps(args)}\n id=\"picker-quiet\"\n @change=${handleChange(args)}\n label=\"Pick an action\"\n style=\"width: 100px\"\n value=\"3\"\n >\n <sp-menu-item value=\"1\">\n <sp-icon-edit slot=\"icon\" label=\"Edit\"></sp-icon-edit>\n </sp-menu-item>\n <sp-menu-item value=\"2\">\n <sp-icon-copy slot=\"icon\" label=\"Copy\"></sp-icon-copy>\n </sp-menu-item>\n <sp-menu-item value=\"3\">\n <sp-icon-delete slot=\"icon\" label=\"Delete\"></sp-icon-delete>\n </sp-menu-item>\n </sp-picker>\n `;\n};\niconsOnly.args = {\n open: true,\n};\niconsOnly.decorators = [isOverlayOpen];\n\nexport const Open = (args: StoryArgs): TemplateResult => {\n return html`\n <style>\n fieldset {\n float: left;\n clear: left;\n margin-bottom: 15px;\n }\n </style>\n <fieldset class=\"backdrop-filter-test\">\n <sp-field-label for=\"picker-open\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-open\"\n label=\"Open picker\"\n ${spreadProps(args)}\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long, in fact\n </span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-picker>\n </fieldset>\n <fieldset>\n <sp-field-label for=\"picker-closed\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-closed\"\n label=\"Picker that displays below the options\"\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Other menu that goes behind the open one\n </span>\n <sp-menu-item>Not so many options...</sp-menu-item>\n </sp-picker>\n </fieldset>\n `;\n};\nOpen.args = {\n open: true,\n};\nOpen.decorators = [isOverlayOpen];\n\nexport const OpenShowingEdgeCase = (args: StoryArgs): TemplateResult => {\n return html`\n <style>\n fieldset {\n float: left;\n clear: left;\n margin-bottom: 15px;\n }\n /* Enforce CSS stacking to test \"transition-behavior: allow-discrete\" */\n /* Breaks the story in non-[popover] supporting browsers */\n fieldset:nth-of-type(2) {\n position: relative;\n z-index: 2;\n }\n .backdrop-filter-test {\n backdrop-filter: saturate(80%);\n }\n </style>\n <p>\n In browser that do not support\n <code>[popover]</code>\n , the following \"open\"\n <code>sp-picker</code>\n will display behind both the closed\n <code>sp-picker</code>\n as well as the\n <code>fieldset</code>\n that contains it.\n </p>\n <p>\n Learn more about this situation in our\n <sp-link\n href=\"https://opensource.adobe.com/spectrum-web-components/components/overlay/#fallback-support\"\n >\n documentation site\n </sp-link>\n .\n </p>\n <fieldset class=\"backdrop-filter-test\">\n <sp-field-label for=\"picker-open\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-open\"\n label=\"Open picker\"\n ${spreadProps(args)}\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long, in fact\n </span>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-picker>\n </fieldset>\n <fieldset>\n <sp-field-label for=\"picker-closed\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-closed\"\n label=\"Picker that displays below the options\"\n @change=${handleChange(args)}\n >\n <span slot=\"label\">\n Other menu that goes behind the open one\n </span>\n <sp-menu-item>Not so many options...</sp-menu-item>\n </sp-picker>\n </fieldset>\n `;\n};\nOpenShowingEdgeCase.args = {\n open: true,\n};\nOpenShowingEdgeCase.decorators = [isOverlayOpen];\nOpenShowingEdgeCase.swc_vrt = {\n skip: true,\n};\n\nexport const initialValue = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-field-label for=\"picker-initial\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-initial\"\n @change=${handleChange(args)}\n value=\"item-2\"\n ${spreadProps(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long in fact\n </span>\n <sp-menu-item value=\"item-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"item-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"item-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"item-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"item-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"item-6\">Make Work Path</sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const readonly = (args: StoryArgs): TemplateResult => {\n return html`\n <sp-picker\n @change=${handleChange(args)}\n readonly\n value=\"item-2\"\n ${spreadProps(args)}\n >\n <span slot=\"label\">\n Select a Country with a very long label, too long in fact\n </span>\n <sp-menu-item value=\"item-1\">Deselect</sp-menu-item>\n <sp-menu-item value=\"item-2\">Select Inverse</sp-menu-item>\n <sp-menu-item value=\"item-3\">Feather...</sp-menu-item>\n <sp-menu-item value=\"item-4\">Select and Mask...</sp-menu-item>\n <sp-menu-item value=\"item-5\">Save Selection</sp-menu-item>\n <sp-menu-item disabled value=\"item-6\">Make Work Path</sp-menu-item>\n </sp-picker>\n `;\n};\n\nexport const custom = (args: StoryArgs): TemplateResult => {\n const initialState = 'lb1-mo';\n return html`\n <sp-field-label for=\"picker-state\" size=${ifDefined(args.size)}>\n What state do you live in?\n </sp-field-label>\n <sp-picker\n style=\"width: 400px;\"\n @change=${handleChange(args)}\n id=\"picker-state\"\n label=\"Pick a state\"\n ${spreadProps(args)}\n value=${initialState}\n >\n ${states.map(\n (state) => html`\n <sp-menu-item\n id=${state.id}\n value=${state.id}\n ?selected=${state.id === initialState}\n >\n ${state.label}\n </sp-menu-item>\n `\n )}\n </sp-picker>\n <p>This is some text.</p>\n <p>This is some text.</p>\n <p>\n This is a\n <a href=\"#anchor\">link</a>\n .\n </p>\n `;\n};\ncustom.args = {\n open: true,\n};\ncustom.decorators = [isOverlayOpen];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/stories/template.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
html
|
|
4
|
+
} from "@spectrum-web-components/base";
|
|
3
5
|
import "@spectrum-web-components/field-label/sp-field-label.js";
|
|
4
6
|
import "@spectrum-web-components/picker/sp-picker.js";
|
|
5
7
|
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
6
8
|
import { spreadProps } from "../../../test/lit-helpers.js";
|
|
9
|
+
import { ifDefined } from "lit-html/directives/if-defined.js";
|
|
7
10
|
export const handleChange = ({ onChange }) => (event) => {
|
|
8
11
|
const picker = event.target;
|
|
9
12
|
if (onChange)
|
|
10
13
|
onChange(picker.value);
|
|
11
14
|
};
|
|
12
15
|
export const Template = (args) => html`
|
|
13
|
-
<sp-field-label for="picker-1"
|
|
16
|
+
<sp-field-label for="picker-1" size=${ifDefined(args.size)}>
|
|
17
|
+
Where do you live?
|
|
18
|
+
</sp-field-label>
|
|
14
19
|
<sp-picker
|
|
15
20
|
id="picker-1"
|
|
16
21
|
@change=${handleChange(args)}
|
package/stories/template.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["template.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {
|
|
5
|
-
"mappings": ";AAYA,
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n ElementSize,\n html,\n type TemplateResult,\n} from '@spectrum-web-components/base';\nimport type { Picker } from '@spectrum-web-components/picker';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\n\nimport { spreadProps } from '../../../test/lit-helpers.js';\nimport { ifDefined } from 'lit-html/directives/if-defined.js';\n\nexport interface StoryArgs {\n disabled?: boolean;\n invalid?: boolean;\n open?: boolean;\n quiet?: boolean;\n pending?: boolean;\n showText?: boolean;\n onChange?: (val: string) => void;\n [prop: string]: unknown;\n size?: ElementSize;\n}\n\nexport const handleChange =\n ({ onChange }: StoryArgs) =>\n (event: Event): void => {\n const picker = event.target as Picker;\n if (onChange) onChange(picker.value);\n };\n\nexport const Template = (args: StoryArgs): TemplateResult => html`\n <sp-field-label for=\"picker-1\" size=${ifDefined(args.size)}>\n Where do you live?\n </sp-field-label>\n <sp-picker\n id=\"picker-1\"\n @change=${handleChange(args)}\n label=\"Choose your neighborhood\"\n ${spreadProps(args)}\n >\n <sp-menu-item value=\"option-1\">Carol Gardens</sp-menu-item>\n <sp-menu-item value=\"option-2\">Cobble Hill</sp-menu-item>\n <sp-menu-item value=\"option-3\">Ft. Greene</sp-menu-item>\n <sp-menu-item value=\"option-4\">Park Slope</sp-menu-item>\n <sp-menu-item disabled value=\"option-5\">Prospect Park</sp-menu-item>\n <sp-menu-item value=\"option-6\">Red Hook</sp-menu-item>\n </sp-picker>\n`;\n"],
|
|
5
|
+
"mappings": ";AAYA;AAAA,EAEI;AAAA,OAEG;AAEP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAcnB,aAAM,eACT,CAAC,EAAE,SAAS,MACZ,CAAC,UAAuB;AACpB,QAAM,SAAS,MAAM;AACrB,MAAI;AAAU,aAAS,OAAO,KAAK;AACvC;AAEG,aAAM,WAAW,CAAC,SAAoC;AAAA,0CACnB,UAAU,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,kBAK5C,aAAa,IAAI,CAAC;AAAA;AAAA,UAE1B,YAAY,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/test/index.js
CHANGED
|
@@ -31,8 +31,10 @@ import {
|
|
|
31
31
|
slottedLabel,
|
|
32
32
|
tooltip
|
|
33
33
|
} from "../stories/picker.stories.js";
|
|
34
|
+
import { M as pending } from "../stories/picker-pending.stories.js";
|
|
34
35
|
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
35
36
|
import {
|
|
37
|
+
detectOS,
|
|
36
38
|
ignoreResizeObserverLoopError,
|
|
37
39
|
fixture as styledFixture
|
|
38
40
|
} from "../../../test/testing-helpers.js";
|
|
@@ -42,6 +44,7 @@ import "@spectrum-web-components/menu/sp-menu.js";
|
|
|
42
44
|
import "@spectrum-web-components/menu/sp-menu-group.js";
|
|
43
45
|
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
44
46
|
import "@spectrum-web-components/theme/src/themes.js";
|
|
47
|
+
import { isWebKit } from "@spectrum-web-components/shared";
|
|
45
48
|
ignoreResizeObserverLoopError(before, after);
|
|
46
49
|
const isMenuActiveElement = function(el) {
|
|
47
50
|
var _a;
|
|
@@ -150,26 +153,70 @@ export function runPickerTests() {
|
|
|
150
153
|
</div>
|
|
151
154
|
`);
|
|
152
155
|
const el2 = test.querySelector("sp-picker");
|
|
156
|
+
await elementUpdated(el2);
|
|
157
|
+
await nextFrame();
|
|
158
|
+
await nextFrame();
|
|
153
159
|
let snapshot = await a11ySnapshot({});
|
|
160
|
+
let name = "Where do you live?";
|
|
161
|
+
const isWebKitLinux = isWebKit() && detectOS() === "Linux";
|
|
162
|
+
let node = findAccessibilityNode(
|
|
163
|
+
snapshot,
|
|
164
|
+
(node2) => node2.name === name || isWebKitLinux && node2.description === name
|
|
165
|
+
);
|
|
154
166
|
expect(
|
|
155
|
-
|
|
167
|
+
node,
|
|
168
|
+
`pre escape hatch node not available: ${JSON.stringify(
|
|
156
169
|
snapshot,
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
170
|
+
null,
|
|
171
|
+
" "
|
|
172
|
+
)}`
|
|
160
173
|
).to.not.be.null;
|
|
174
|
+
if (isWebKitLinux) {
|
|
175
|
+
const iOSNode = findAccessibilityNode(
|
|
176
|
+
snapshot,
|
|
177
|
+
(node2) => node2.name === name
|
|
178
|
+
);
|
|
179
|
+
expect(
|
|
180
|
+
iOSNode,
|
|
181
|
+
`post escape hatch node available: ${JSON.stringify(
|
|
182
|
+
snapshot,
|
|
183
|
+
null,
|
|
184
|
+
" "
|
|
185
|
+
)}`
|
|
186
|
+
).to.be.null;
|
|
187
|
+
}
|
|
161
188
|
el2.value = "option-2";
|
|
162
189
|
await elementUpdated(el2);
|
|
163
190
|
await nextFrame();
|
|
164
191
|
await nextFrame();
|
|
165
192
|
snapshot = await a11ySnapshot({});
|
|
193
|
+
name = "Select Inverse Where do you live?";
|
|
194
|
+
node = findAccessibilityNode(
|
|
195
|
+
snapshot,
|
|
196
|
+
(node2) => node2.name === name || isWebKitLinux && node2.description === name
|
|
197
|
+
);
|
|
166
198
|
expect(
|
|
167
|
-
|
|
199
|
+
node,
|
|
200
|
+
`pre escape hatch node not available: ${JSON.stringify(
|
|
168
201
|
snapshot,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
202
|
+
null,
|
|
203
|
+
" "
|
|
204
|
+
)}`
|
|
172
205
|
).to.not.be.null;
|
|
206
|
+
if (isWebKitLinux) {
|
|
207
|
+
const iOSNode = findAccessibilityNode(
|
|
208
|
+
snapshot,
|
|
209
|
+
(node2) => node2.name === name
|
|
210
|
+
);
|
|
211
|
+
expect(
|
|
212
|
+
iOSNode,
|
|
213
|
+
`post escape hatch node available: ${JSON.stringify(
|
|
214
|
+
snapshot,
|
|
215
|
+
null,
|
|
216
|
+
" "
|
|
217
|
+
)}`
|
|
218
|
+
).to.not.be.null;
|
|
219
|
+
}
|
|
173
220
|
});
|
|
174
221
|
});
|
|
175
222
|
describe("standard", () => {
|
|
@@ -1570,5 +1617,38 @@ export function runPickerTests() {
|
|
|
1570
1617
|
expect(this.el.open).to.be.false;
|
|
1571
1618
|
});
|
|
1572
1619
|
});
|
|
1620
|
+
describe("pending", function() {
|
|
1621
|
+
beforeEach(async function() {
|
|
1622
|
+
const test = await fixture(html`
|
|
1623
|
+
<div>${pending({ pending: true })}</div>
|
|
1624
|
+
`);
|
|
1625
|
+
this.label = test.querySelector("sp-field-label");
|
|
1626
|
+
this.el = test.querySelector("sp-picker");
|
|
1627
|
+
await elementUpdated(this.elel);
|
|
1628
|
+
});
|
|
1629
|
+
it("receives focus from an `<sp-field-label>`", async function() {
|
|
1630
|
+
expect(this.el.focused).to.be.false;
|
|
1631
|
+
this.label.click();
|
|
1632
|
+
await elementUpdated(this.el);
|
|
1633
|
+
expect(this.el.focused).to.be.true;
|
|
1634
|
+
});
|
|
1635
|
+
it("does not open from `click()`", async function() {
|
|
1636
|
+
expect(this.el.open).to.be.false;
|
|
1637
|
+
this.el.click();
|
|
1638
|
+
await elementUpdated(this.el);
|
|
1639
|
+
expect(this.el.open).to.be.false;
|
|
1640
|
+
});
|
|
1641
|
+
it('manages its "name" value in the accessibility tree when [pending]', async () => {
|
|
1642
|
+
const snapshot = await a11ySnapshot(
|
|
1643
|
+
{}
|
|
1644
|
+
);
|
|
1645
|
+
expect(
|
|
1646
|
+
findAccessibilityNode(
|
|
1647
|
+
snapshot,
|
|
1648
|
+
(node) => node.name === "Pending Choose your neighborhood Where do you live?"
|
|
1649
|
+
)
|
|
1650
|
+
).to.not.be.null;
|
|
1651
|
+
});
|
|
1652
|
+
});
|
|
1573
1653
|
}
|
|
1574
1654
|
//# sourceMappingURL=index.js.map
|