@spectrum-web-components/picker 1.1.0 → 1.1.2
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/package.json +17 -17
- package/sp-picker.d.ts +6 -0
- package/sp-picker.dev.js +5 -0
- package/sp-picker.dev.js.map +7 -0
- package/sp-picker.js +2 -0
- package/sp-picker.js.map +7 -0
- package/src/DesktopController.d.ts +7 -0
- package/src/DesktopController.dev.js +72 -0
- package/src/DesktopController.dev.js.map +7 -0
- package/src/DesktopController.js +2 -0
- package/src/DesktopController.js.map +7 -0
- package/src/InteractionController.d.ts +44 -0
- package/src/InteractionController.dev.js +122 -0
- package/src/InteractionController.dev.js.map +7 -0
- package/src/InteractionController.js +2 -0
- package/src/InteractionController.js.map +7 -0
- package/src/MobileController.d.ts +8 -0
- package/src/MobileController.dev.js +51 -0
- package/src/MobileController.dev.js.map +7 -0
- package/src/MobileController.js +2 -0
- package/src/MobileController.js.map +7 -0
- package/src/Picker.d.ts +139 -0
- package/src/Picker.dev.js +717 -0
- package/src/Picker.dev.js.map +7 -0
- package/src/Picker.js +116 -0
- package/src/Picker.js.map +7 -0
- package/src/index.d.ts +1 -0
- package/src/index.dev.js +3 -0
- package/src/index.dev.js.map +7 -0
- package/src/index.js +2 -0
- package/src/index.js.map +7 -0
- package/src/picker-overrides.css.d.ts +2 -0
- package/src/picker-overrides.css.dev.js +7 -0
- package/src/picker-overrides.css.dev.js.map +7 -0
- package/src/picker-overrides.css.js +4 -0
- package/src/picker-overrides.css.js.map +7 -0
- package/src/picker.css.d.ts +2 -0
- package/src/picker.css.dev.js +7 -0
- package/src/picker.css.dev.js.map +7 -0
- package/src/picker.css.js +4 -0
- package/src/picker.css.js.map +7 -0
- package/src/spectrum-picker.css.d.ts +2 -0
- package/src/spectrum-picker.css.dev.js +7 -0
- package/src/spectrum-picker.css.dev.js.map +7 -0
- package/src/spectrum-picker.css.js +4 -0
- package/src/spectrum-picker.css.js.map +7 -0
- package/src/strategies.d.ts +6 -0
- package/src/strategies.dev.js +8 -0
- package/src/strategies.dev.js.map +7 -0
- package/src/strategies.js +2 -0
- package/src/strategies.js.map +7 -0
- package/stories/args.js +56 -0
- package/stories/args.js.map +7 -0
- package/stories/picker-pending.stories.js +16 -0
- package/stories/picker-pending.stories.js.map +7 -0
- package/stories/picker-sizes.stories.js +75 -0
- package/stories/picker-sizes.stories.js.map +7 -0
- package/stories/picker.stories.js +694 -0
- package/stories/picker.stories.js.map +7 -0
- package/stories/states.js +228 -0
- package/stories/states.js.map +7 -0
- package/stories/template.js +32 -0
- package/stories/template.js.map +7 -0
- package/sync/index.d.ts +3 -0
- package/sync/index.dev.js +5 -0
- package/sync/index.dev.js.map +7 -0
- package/sync/index.js +2 -0
- package/sync/index.js.map +7 -0
- package/sync/sp-picker.d.ts +2 -0
- package/sync/sp-picker.dev.js +4 -0
- package/sync/sp-picker.dev.js.map +7 -0
- package/sync/sp-picker.js +2 -0
- package/sync/sp-picker.js.map +7 -0
- package/test/benchmark/basic-test.js +269 -0
- package/test/benchmark/basic-test.js.map +7 -0
- package/test/index.js +1680 -0
- package/test/index.js.map +7 -0
- package/test/picker-memory.test.js +5 -0
- package/test/picker-memory.test.js.map +7 -0
- package/test/picker-pending.test-vrt.js +5 -0
- package/test/picker-pending.test-vrt.js.map +7 -0
- package/test/picker-reparenting.test.js +92 -0
- package/test/picker-reparenting.test.js.map +7 -0
- package/test/picker-responsive.test.js +125 -0
- package/test/picker-responsive.test.js.map +7 -0
- package/test/picker-sizes.test-vrt.js +5 -0
- package/test/picker-sizes.test-vrt.js.map +7 -0
- package/test/picker-sync.test.js +7 -0
- package/test/picker-sync.test.js.map +7 -0
- package/test/picker.test-vrt.js +5 -0
- package/test/picker.test-vrt.js.map +7 -0
- package/test/picker.test.js +7 -0
- package/test/picker.test.js.map +7 -0
|
@@ -0,0 +1,694 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { html } from "@spectrum-web-components/base";
|
|
3
|
+
import "@spectrum-web-components/button/sp-button.js";
|
|
4
|
+
import "@spectrum-web-components/field-label/sp-field-label.js";
|
|
5
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-copy.js";
|
|
6
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-delete.js";
|
|
7
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-edit.js";
|
|
8
|
+
import "@spectrum-web-components/link/sp-link.js";
|
|
9
|
+
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
10
|
+
import "@spectrum-web-components/picker/sp-picker.js";
|
|
11
|
+
import "@spectrum-web-components/tooltip/sp-tooltip.js";
|
|
12
|
+
import { ifDefined } from "lit-html/directives/if-defined.js";
|
|
13
|
+
import { spreadProps } from "../../../test/lit-helpers.js";
|
|
14
|
+
import "../../overlay/stories/index.js";
|
|
15
|
+
import { isOverlayOpen } from "../../overlay/stories/index.js";
|
|
16
|
+
import { argTypes } from "./args.js";
|
|
17
|
+
import { states } from "./states.js";
|
|
18
|
+
import { handleChange, Template } from "./template.js";
|
|
19
|
+
export default {
|
|
20
|
+
title: "Picker",
|
|
21
|
+
component: "sp-picker",
|
|
22
|
+
args: {
|
|
23
|
+
disabled: false,
|
|
24
|
+
invalid: false,
|
|
25
|
+
open: false,
|
|
26
|
+
quiet: false,
|
|
27
|
+
pending: false
|
|
28
|
+
},
|
|
29
|
+
argTypes: {
|
|
30
|
+
...argTypes,
|
|
31
|
+
onChange: { action: "change" },
|
|
32
|
+
open: {
|
|
33
|
+
name: "open",
|
|
34
|
+
type: { name: "boolean", required: false },
|
|
35
|
+
description: "Whether the menu is open or not.",
|
|
36
|
+
table: {
|
|
37
|
+
type: { summary: "boolean" },
|
|
38
|
+
defaultValue: { summary: false }
|
|
39
|
+
},
|
|
40
|
+
control: "boolean"
|
|
41
|
+
},
|
|
42
|
+
pending: {
|
|
43
|
+
name: "pending",
|
|
44
|
+
type: { name: "boolean", required: false },
|
|
45
|
+
table: {
|
|
46
|
+
type: { summary: "boolean" },
|
|
47
|
+
defaultValue: { summary: false }
|
|
48
|
+
},
|
|
49
|
+
control: {
|
|
50
|
+
type: "boolean"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
export const Default = (args) => {
|
|
56
|
+
return html`
|
|
57
|
+
<sp-field-label for="picker-1" size=${ifDefined(args.size)}>
|
|
58
|
+
Where do you live?
|
|
59
|
+
</sp-field-label>
|
|
60
|
+
<sp-picker
|
|
61
|
+
id="picker-1"
|
|
62
|
+
@change=${handleChange(args)}
|
|
63
|
+
label="Select a Country with a very long label, too long, in fact"
|
|
64
|
+
${spreadProps(args)}
|
|
65
|
+
>
|
|
66
|
+
<sp-menu-item value="option-1">Deselect</sp-menu-item>
|
|
67
|
+
<sp-menu-item value="option-2">Select Inverse</sp-menu-item>
|
|
68
|
+
<sp-menu-item value="option-3">Feather...</sp-menu-item>
|
|
69
|
+
<sp-menu-item value="option-4">Select and Mask...</sp-menu-item>
|
|
70
|
+
<sp-menu-item value="option-5">Save Selection</sp-menu-item>
|
|
71
|
+
<sp-menu-item disabled value="option-6">
|
|
72
|
+
Make Work Path
|
|
73
|
+
</sp-menu-item>
|
|
74
|
+
</sp-picker>
|
|
75
|
+
<p>This is some text.</p>
|
|
76
|
+
<p>This is some text.</p>
|
|
77
|
+
<p>
|
|
78
|
+
This is a
|
|
79
|
+
<a href="#anchor">link</a>
|
|
80
|
+
.
|
|
81
|
+
</p>
|
|
82
|
+
`;
|
|
83
|
+
};
|
|
84
|
+
export const forcePopoverOnMobile = (args) => {
|
|
85
|
+
return html`
|
|
86
|
+
<div style="padding: 40px">
|
|
87
|
+
<h1>Force Popover on Mobile</h1>
|
|
88
|
+
<p>
|
|
89
|
+
The forcePopover attribute overrides the mobile device
|
|
90
|
+
functionality of rendering a tray so that a popover will always
|
|
91
|
+
render no matter the device.
|
|
92
|
+
</p>
|
|
93
|
+
<ol>
|
|
94
|
+
<li>Open Chrome DevTools (or equivalent).</li>
|
|
95
|
+
<li>Toggle the Device Toolbar (the phone/tablet icon).</li>
|
|
96
|
+
<li>Select a device preset (e.g. iPhone 12).</li>
|
|
97
|
+
<li>
|
|
98
|
+
Chrome will set user-agent strings, simulate touch, and
|
|
99
|
+
adjust DPI.
|
|
100
|
+
</li>
|
|
101
|
+
<li>Reload the page</li>
|
|
102
|
+
<li>Click the Picker 1 and see a tray</li>
|
|
103
|
+
<li>Click the Picker 2 and see a popover</li>
|
|
104
|
+
</ol>
|
|
105
|
+
<sp-field-label for="picker-1" size=${ifDefined(args.size)}>
|
|
106
|
+
Do you want to see a tray menu?
|
|
107
|
+
</sp-field-label>
|
|
108
|
+
<sp-picker
|
|
109
|
+
id="picker-1"
|
|
110
|
+
@change=${handleChange(args)}
|
|
111
|
+
label="Select an option"
|
|
112
|
+
>
|
|
113
|
+
<sp-menu-item value="option-1">Yes</sp-menu-item>
|
|
114
|
+
<sp-menu-item value="option-2">No</sp-menu-item>
|
|
115
|
+
</sp-picker>
|
|
116
|
+
<sp-field-label for="picker-2" size=${ifDefined(args.size)}>
|
|
117
|
+
Do you want to see a popover menu?
|
|
118
|
+
</sp-field-label>
|
|
119
|
+
<sp-picker
|
|
120
|
+
id="picker-2"
|
|
121
|
+
forcePopover
|
|
122
|
+
@change=${handleChange(args)}
|
|
123
|
+
label="Select an option"
|
|
124
|
+
>
|
|
125
|
+
<sp-menu-item value="option-1">Yes</sp-menu-item>
|
|
126
|
+
<sp-menu-item value="option-2">No</sp-menu-item>
|
|
127
|
+
</sp-picker>
|
|
128
|
+
<div>
|
|
129
|
+
<p>
|
|
130
|
+
This button should't be clickable if a popover is open over
|
|
131
|
+
it.
|
|
132
|
+
</p>
|
|
133
|
+
<sp-button
|
|
134
|
+
@click=${() => console.log("Whoops! I was clicked.")}
|
|
135
|
+
>
|
|
136
|
+
Shouldn't be clickable
|
|
137
|
+
</sp-button>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
`;
|
|
141
|
+
};
|
|
142
|
+
export const disabled = (args) => Template(args);
|
|
143
|
+
disabled.args = {
|
|
144
|
+
disabled: true
|
|
145
|
+
};
|
|
146
|
+
export const invalid = (args) => Template(args);
|
|
147
|
+
invalid.args = {
|
|
148
|
+
invalid: true
|
|
149
|
+
};
|
|
150
|
+
export const tooltip = (args) => {
|
|
151
|
+
const { open, ...rest } = args;
|
|
152
|
+
return html`
|
|
153
|
+
<sp-field-label for="picker-1" size=${ifDefined(args.size)}>
|
|
154
|
+
Where do you live?
|
|
155
|
+
</sp-field-label>
|
|
156
|
+
<sp-picker
|
|
157
|
+
id="picker-1"
|
|
158
|
+
@change=${handleChange(args)}
|
|
159
|
+
label="Select a Country with a very long label, too long, in fact"
|
|
160
|
+
${spreadProps(rest)}
|
|
161
|
+
>
|
|
162
|
+
<sp-menu-item value="option-1">Deselect</sp-menu-item>
|
|
163
|
+
<sp-menu-item value="option-2">Select Inverse</sp-menu-item>
|
|
164
|
+
<sp-menu-item value="option-3">Feather...</sp-menu-item>
|
|
165
|
+
<sp-menu-item value="option-4">Select and Mask...</sp-menu-item>
|
|
166
|
+
<sp-menu-item value="option-5">Save Selection</sp-menu-item>
|
|
167
|
+
<sp-menu-item disabled value="option-6">
|
|
168
|
+
Make Work Path
|
|
169
|
+
</sp-menu-item>
|
|
170
|
+
<sp-tooltip
|
|
171
|
+
slot="tooltip"
|
|
172
|
+
?open=${open}
|
|
173
|
+
self-managed
|
|
174
|
+
placement="right"
|
|
175
|
+
>
|
|
176
|
+
This Picker wants to know where you live.
|
|
177
|
+
</sp-tooltip>
|
|
178
|
+
</sp-picker>
|
|
179
|
+
<p>This is some text.</p>
|
|
180
|
+
<p>This is some text.</p>
|
|
181
|
+
<p>
|
|
182
|
+
This is a
|
|
183
|
+
<a href="#anchor">link</a>
|
|
184
|
+
.
|
|
185
|
+
</p>
|
|
186
|
+
`;
|
|
187
|
+
};
|
|
188
|
+
tooltip.args = {
|
|
189
|
+
open: true
|
|
190
|
+
};
|
|
191
|
+
tooltip.decorators = [isOverlayOpen];
|
|
192
|
+
export const leftSideLabel = (args) => {
|
|
193
|
+
return html`
|
|
194
|
+
<sp-field-label
|
|
195
|
+
side-aligned="start"
|
|
196
|
+
for="picker-1"
|
|
197
|
+
size=${ifDefined(args.size)}
|
|
198
|
+
>
|
|
199
|
+
Where do you live?
|
|
200
|
+
</sp-field-label>
|
|
201
|
+
<sp-picker
|
|
202
|
+
id="picker-1"
|
|
203
|
+
@change=${handleChange(args)}
|
|
204
|
+
label="Select a Country with a very long label, too long, in fact"
|
|
205
|
+
${spreadProps(args)}
|
|
206
|
+
>
|
|
207
|
+
<sp-menu-item value="option-1">Deselect</sp-menu-item>
|
|
208
|
+
<sp-menu-item value="option-2">Select Inverse</sp-menu-item>
|
|
209
|
+
<sp-menu-item value="option-3">Feather...</sp-menu-item>
|
|
210
|
+
<sp-menu-item value="option-4">Select and Mask...</sp-menu-item>
|
|
211
|
+
<sp-menu-item value="option-5">Save Selection</sp-menu-item>
|
|
212
|
+
<sp-menu-item disabled value="option-6">
|
|
213
|
+
Make Work Path
|
|
214
|
+
</sp-menu-item>
|
|
215
|
+
</sp-picker>
|
|
216
|
+
<p>This is some text.</p>
|
|
217
|
+
<p>This is some text.</p>
|
|
218
|
+
<p>
|
|
219
|
+
This is a
|
|
220
|
+
<a href="#anchor">link</a>
|
|
221
|
+
.
|
|
222
|
+
</p>
|
|
223
|
+
`;
|
|
224
|
+
};
|
|
225
|
+
export const noVisibleLabel = (args) => {
|
|
226
|
+
return html`
|
|
227
|
+
<sp-picker
|
|
228
|
+
@change=${handleChange(args)}
|
|
229
|
+
label="Where do you live?"
|
|
230
|
+
${spreadProps(args)}
|
|
231
|
+
>
|
|
232
|
+
<sp-menu-item value="option-1">Deselect</sp-menu-item>
|
|
233
|
+
<sp-menu-item value="option-2">Select Inverse</sp-menu-item>
|
|
234
|
+
<sp-menu-item value="option-3">Feather...</sp-menu-item>
|
|
235
|
+
<sp-menu-item value="option-4">Select and Mask...</sp-menu-item>
|
|
236
|
+
<sp-menu-item value="option-5">Save Selection</sp-menu-item>
|
|
237
|
+
<sp-menu-item disabled value="option-6">
|
|
238
|
+
Make Work Path
|
|
239
|
+
</sp-menu-item>
|
|
240
|
+
</sp-picker>
|
|
241
|
+
<p>This is some text.</p>
|
|
242
|
+
<p>This is some text.</p>
|
|
243
|
+
<p>
|
|
244
|
+
This is a
|
|
245
|
+
<a href="#anchor">link</a>
|
|
246
|
+
.
|
|
247
|
+
</p>
|
|
248
|
+
`;
|
|
249
|
+
};
|
|
250
|
+
export const slottedLabel = (args) => {
|
|
251
|
+
return html`
|
|
252
|
+
<sp-picker @change=${handleChange(args)} ${spreadProps(args)}>
|
|
253
|
+
<span slot="label">Where do you live?</span>
|
|
254
|
+
<sp-menu-item value="option-1">Deselect</sp-menu-item>
|
|
255
|
+
<sp-menu-item value="option-2">Select Inverse</sp-menu-item>
|
|
256
|
+
<sp-menu-item value="option-3">Feather...</sp-menu-item>
|
|
257
|
+
<sp-menu-item value="option-4">Select and Mask...</sp-menu-item>
|
|
258
|
+
<sp-menu-item value="option-5">Save Selection</sp-menu-item>
|
|
259
|
+
<sp-menu-item disabled value="option-6">
|
|
260
|
+
Make Work Path
|
|
261
|
+
</sp-menu-item>
|
|
262
|
+
</sp-picker>
|
|
263
|
+
<p>This is some text.</p>
|
|
264
|
+
<p>This is some text.</p>
|
|
265
|
+
<p>
|
|
266
|
+
This is a
|
|
267
|
+
<a href="#anchor">link</a>
|
|
268
|
+
.
|
|
269
|
+
</p>
|
|
270
|
+
`;
|
|
271
|
+
};
|
|
272
|
+
export const quiet = (args) => {
|
|
273
|
+
return html`
|
|
274
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
275
|
+
Where do you live?
|
|
276
|
+
</sp-field-label>
|
|
277
|
+
<sp-picker
|
|
278
|
+
${spreadProps(args)}
|
|
279
|
+
id="picker-quiet"
|
|
280
|
+
@change=${handleChange(args)}
|
|
281
|
+
label="Pick an item"
|
|
282
|
+
>
|
|
283
|
+
<sp-menu-item value="1">Item 1</sp-menu-item>
|
|
284
|
+
<sp-menu-item value="2">Item 2</sp-menu-item>
|
|
285
|
+
<sp-menu-item value="3">Item 3</sp-menu-item>
|
|
286
|
+
<sp-menu-item value="4">Item 4</sp-menu-item>
|
|
287
|
+
</sp-picker>
|
|
288
|
+
<p>This is some text.</p>
|
|
289
|
+
<p>This is some text.</p>
|
|
290
|
+
<p>
|
|
291
|
+
This is a
|
|
292
|
+
<a href="#anchor">link</a>
|
|
293
|
+
.
|
|
294
|
+
</p>
|
|
295
|
+
`;
|
|
296
|
+
};
|
|
297
|
+
quiet.args = {
|
|
298
|
+
quiet: true
|
|
299
|
+
};
|
|
300
|
+
export const quietSideLabel = (args) => {
|
|
301
|
+
return html`
|
|
302
|
+
<sp-field-label
|
|
303
|
+
side-aligned="start"
|
|
304
|
+
for="picker-quiet-sidelabel"
|
|
305
|
+
size=${ifDefined(args.size)}
|
|
306
|
+
>
|
|
307
|
+
Where do you live?
|
|
308
|
+
</sp-field-label>
|
|
309
|
+
<sp-picker
|
|
310
|
+
${spreadProps(args)}
|
|
311
|
+
id="picker-quiet-sidelabel"
|
|
312
|
+
@change=${handleChange(args)}
|
|
313
|
+
label="Pick an item"
|
|
314
|
+
>
|
|
315
|
+
<sp-menu-item value="1">Item 1</sp-menu-item>
|
|
316
|
+
<sp-menu-item value="2">Item 2</sp-menu-item>
|
|
317
|
+
<sp-menu-item value="3">Item 3</sp-menu-item>
|
|
318
|
+
<sp-menu-item value="4">Item 4</sp-menu-item>
|
|
319
|
+
</sp-picker>
|
|
320
|
+
<p>This is some text.</p>
|
|
321
|
+
<p>This is some text.</p>
|
|
322
|
+
<p>
|
|
323
|
+
This is a
|
|
324
|
+
<a href="#anchor">link</a>
|
|
325
|
+
.
|
|
326
|
+
</p>
|
|
327
|
+
`;
|
|
328
|
+
};
|
|
329
|
+
quietSideLabel.args = {
|
|
330
|
+
quiet: true
|
|
331
|
+
};
|
|
332
|
+
export const icons = (args) => {
|
|
333
|
+
return html`
|
|
334
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
335
|
+
Choose an action type...
|
|
336
|
+
</sp-field-label>
|
|
337
|
+
<sp-picker
|
|
338
|
+
${spreadProps(args)}
|
|
339
|
+
id="picker-quiet"
|
|
340
|
+
@change=${handleChange(args)}
|
|
341
|
+
label="Pick an action"
|
|
342
|
+
value="1"
|
|
343
|
+
>
|
|
344
|
+
<sp-menu-item value="1">
|
|
345
|
+
<sp-icon-edit slot="icon"></sp-icon-edit>
|
|
346
|
+
Edit
|
|
347
|
+
</sp-menu-item>
|
|
348
|
+
<sp-menu-item value="2">
|
|
349
|
+
<sp-icon-copy slot="icon"></sp-icon-copy>
|
|
350
|
+
Copy
|
|
351
|
+
</sp-menu-item>
|
|
352
|
+
<sp-menu-item value="3">
|
|
353
|
+
<sp-icon-delete slot="icon"></sp-icon-delete>
|
|
354
|
+
Delete
|
|
355
|
+
</sp-menu-item>
|
|
356
|
+
</sp-picker>
|
|
357
|
+
`;
|
|
358
|
+
};
|
|
359
|
+
export const iconsNone = (args) => {
|
|
360
|
+
return html`
|
|
361
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
362
|
+
Choose an action type...
|
|
363
|
+
</sp-field-label>
|
|
364
|
+
<sp-picker
|
|
365
|
+
${spreadProps(args)}
|
|
366
|
+
id="picker-quiet"
|
|
367
|
+
@change=${handleChange(args)}
|
|
368
|
+
label="Pick an action"
|
|
369
|
+
value="1"
|
|
370
|
+
icons="none"
|
|
371
|
+
>
|
|
372
|
+
<sp-menu-item value="1">
|
|
373
|
+
<sp-icon-edit slot="icon"></sp-icon-edit>
|
|
374
|
+
Edit
|
|
375
|
+
</sp-menu-item>
|
|
376
|
+
<sp-menu-item value="2">
|
|
377
|
+
<sp-icon-copy slot="icon"></sp-icon-copy>
|
|
378
|
+
Copy
|
|
379
|
+
</sp-menu-item>
|
|
380
|
+
<sp-menu-item value="3">
|
|
381
|
+
<sp-icon-delete slot="icon"></sp-icon-delete>
|
|
382
|
+
Delete
|
|
383
|
+
</sp-menu-item>
|
|
384
|
+
</sp-picker>
|
|
385
|
+
`;
|
|
386
|
+
};
|
|
387
|
+
iconsNone.args = {
|
|
388
|
+
open: true
|
|
389
|
+
};
|
|
390
|
+
iconsNone.decorators = [isOverlayOpen];
|
|
391
|
+
export const iconValue = (args) => {
|
|
392
|
+
return html`
|
|
393
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
394
|
+
Choose an action type...
|
|
395
|
+
</sp-field-label>
|
|
396
|
+
<sp-picker
|
|
397
|
+
${spreadProps(args)}
|
|
398
|
+
id="picker-quiet"
|
|
399
|
+
@change=${handleChange(args)}
|
|
400
|
+
label="Pick an action"
|
|
401
|
+
icons="only"
|
|
402
|
+
style="width: 100px"
|
|
403
|
+
value="2"
|
|
404
|
+
>
|
|
405
|
+
<sp-menu-item value="1">
|
|
406
|
+
<sp-icon-edit slot="icon"></sp-icon-edit>
|
|
407
|
+
Edit
|
|
408
|
+
</sp-menu-item>
|
|
409
|
+
<sp-menu-item value="2">
|
|
410
|
+
<sp-icon-copy slot="icon"></sp-icon-copy>
|
|
411
|
+
Copy
|
|
412
|
+
</sp-menu-item>
|
|
413
|
+
<sp-menu-item value="3">
|
|
414
|
+
<sp-icon-delete slot="icon"></sp-icon-delete>
|
|
415
|
+
Delete
|
|
416
|
+
</sp-menu-item>
|
|
417
|
+
</sp-picker>
|
|
418
|
+
`;
|
|
419
|
+
};
|
|
420
|
+
export const iconsOnly = (args) => {
|
|
421
|
+
return html`
|
|
422
|
+
<sp-field-label for="picker-quiet" size=${ifDefined(args.size)}>
|
|
423
|
+
Choose an action type...
|
|
424
|
+
</sp-field-label>
|
|
425
|
+
<sp-picker
|
|
426
|
+
${spreadProps(args)}
|
|
427
|
+
id="picker-quiet"
|
|
428
|
+
@change=${handleChange(args)}
|
|
429
|
+
label="Pick an action"
|
|
430
|
+
style="width: 100px"
|
|
431
|
+
value="3"
|
|
432
|
+
>
|
|
433
|
+
<sp-menu-item value="1">
|
|
434
|
+
<sp-icon-edit slot="icon" label="Edit"></sp-icon-edit>
|
|
435
|
+
</sp-menu-item>
|
|
436
|
+
<sp-menu-item value="2">
|
|
437
|
+
<sp-icon-copy slot="icon" label="Copy"></sp-icon-copy>
|
|
438
|
+
</sp-menu-item>
|
|
439
|
+
<sp-menu-item value="3">
|
|
440
|
+
<sp-icon-delete slot="icon" label="Delete"></sp-icon-delete>
|
|
441
|
+
</sp-menu-item>
|
|
442
|
+
</sp-picker>
|
|
443
|
+
`;
|
|
444
|
+
};
|
|
445
|
+
iconsOnly.args = {
|
|
446
|
+
open: true
|
|
447
|
+
};
|
|
448
|
+
iconsOnly.decorators = [isOverlayOpen];
|
|
449
|
+
export const Open = (args) => {
|
|
450
|
+
return html`
|
|
451
|
+
<style>
|
|
452
|
+
fieldset {
|
|
453
|
+
float: left;
|
|
454
|
+
clear: left;
|
|
455
|
+
margin-bottom: 15px;
|
|
456
|
+
}
|
|
457
|
+
</style>
|
|
458
|
+
<fieldset class="backdrop-filter-test">
|
|
459
|
+
<sp-field-label for="picker-open" size=${ifDefined(args.size)}>
|
|
460
|
+
Where do you live?
|
|
461
|
+
</sp-field-label>
|
|
462
|
+
<sp-picker
|
|
463
|
+
id="picker-open"
|
|
464
|
+
label="Open picker"
|
|
465
|
+
${spreadProps(args)}
|
|
466
|
+
@change=${handleChange(args)}
|
|
467
|
+
>
|
|
468
|
+
<span slot="label">
|
|
469
|
+
Select a Country with a very long label, too long, in fact
|
|
470
|
+
</span>
|
|
471
|
+
<sp-menu-item>Deselect</sp-menu-item>
|
|
472
|
+
<sp-menu-item>Select Inverse</sp-menu-item>
|
|
473
|
+
<sp-menu-item>Feather...</sp-menu-item>
|
|
474
|
+
<sp-menu-item>Select and Mask...</sp-menu-item>
|
|
475
|
+
<sp-menu-item>Save Selection</sp-menu-item>
|
|
476
|
+
<sp-menu-item disabled>Make Work Path</sp-menu-item>
|
|
477
|
+
</sp-picker>
|
|
478
|
+
</fieldset>
|
|
479
|
+
<fieldset>
|
|
480
|
+
<sp-field-label for="picker-closed" size=${ifDefined(args.size)}>
|
|
481
|
+
Where do you live?
|
|
482
|
+
</sp-field-label>
|
|
483
|
+
<sp-picker
|
|
484
|
+
id="picker-closed"
|
|
485
|
+
label="Picker that displays below the options"
|
|
486
|
+
@change=${handleChange(args)}
|
|
487
|
+
>
|
|
488
|
+
<span slot="label">
|
|
489
|
+
Other menu that goes behind the open one
|
|
490
|
+
</span>
|
|
491
|
+
<sp-menu-item>Not so many options...</sp-menu-item>
|
|
492
|
+
</sp-picker>
|
|
493
|
+
</fieldset>
|
|
494
|
+
`;
|
|
495
|
+
};
|
|
496
|
+
Open.args = {
|
|
497
|
+
open: true
|
|
498
|
+
};
|
|
499
|
+
Open.decorators = [isOverlayOpen];
|
|
500
|
+
export const OpenShowingEdgeCase = (args) => {
|
|
501
|
+
return html`
|
|
502
|
+
<style>
|
|
503
|
+
fieldset {
|
|
504
|
+
float: left;
|
|
505
|
+
clear: left;
|
|
506
|
+
margin-bottom: 15px;
|
|
507
|
+
}
|
|
508
|
+
/* Enforce CSS stacking to test "transition-behavior: allow-discrete" */
|
|
509
|
+
/* Breaks the story in non-[popover] supporting browsers */
|
|
510
|
+
fieldset:nth-of-type(2) {
|
|
511
|
+
position: relative;
|
|
512
|
+
z-index: 2;
|
|
513
|
+
}
|
|
514
|
+
.backdrop-filter-test {
|
|
515
|
+
backdrop-filter: saturate(80%);
|
|
516
|
+
}
|
|
517
|
+
</style>
|
|
518
|
+
<p>
|
|
519
|
+
In browser that do not support
|
|
520
|
+
<code>[popover]</code>
|
|
521
|
+
, the following "open"
|
|
522
|
+
<code>sp-picker</code>
|
|
523
|
+
will display behind both the closed
|
|
524
|
+
<code>sp-picker</code>
|
|
525
|
+
as well as the
|
|
526
|
+
<code>fieldset</code>
|
|
527
|
+
that contains it.
|
|
528
|
+
</p>
|
|
529
|
+
<p>
|
|
530
|
+
Learn more about this situation in our
|
|
531
|
+
<sp-link
|
|
532
|
+
href="https://opensource.adobe.com/spectrum-web-components/components/overlay/#fallback-support"
|
|
533
|
+
>
|
|
534
|
+
documentation site
|
|
535
|
+
</sp-link>
|
|
536
|
+
.
|
|
537
|
+
</p>
|
|
538
|
+
<fieldset class="backdrop-filter-test">
|
|
539
|
+
<sp-field-label for="picker-open" size=${ifDefined(args.size)}>
|
|
540
|
+
Where do you live?
|
|
541
|
+
</sp-field-label>
|
|
542
|
+
<sp-picker
|
|
543
|
+
id="picker-open"
|
|
544
|
+
label="Open picker"
|
|
545
|
+
${spreadProps(args)}
|
|
546
|
+
@change=${handleChange(args)}
|
|
547
|
+
>
|
|
548
|
+
<span slot="label">
|
|
549
|
+
Select a Country with a very long label, too long, in fact
|
|
550
|
+
</span>
|
|
551
|
+
<sp-menu-item>Deselect</sp-menu-item>
|
|
552
|
+
<sp-menu-item>Select Inverse</sp-menu-item>
|
|
553
|
+
<sp-menu-item>Feather...</sp-menu-item>
|
|
554
|
+
<sp-menu-item>Select and Mask...</sp-menu-item>
|
|
555
|
+
<sp-menu-item>Save Selection</sp-menu-item>
|
|
556
|
+
<sp-menu-item disabled>Make Work Path</sp-menu-item>
|
|
557
|
+
</sp-picker>
|
|
558
|
+
</fieldset>
|
|
559
|
+
<fieldset>
|
|
560
|
+
<sp-field-label for="picker-closed" size=${ifDefined(args.size)}>
|
|
561
|
+
Where do you live?
|
|
562
|
+
</sp-field-label>
|
|
563
|
+
<sp-picker
|
|
564
|
+
id="picker-closed"
|
|
565
|
+
label="Picker that displays below the options"
|
|
566
|
+
@change=${handleChange(args)}
|
|
567
|
+
>
|
|
568
|
+
<span slot="label">
|
|
569
|
+
Other menu that goes behind the open one
|
|
570
|
+
</span>
|
|
571
|
+
<sp-menu-item>Not so many options...</sp-menu-item>
|
|
572
|
+
</sp-picker>
|
|
573
|
+
</fieldset>
|
|
574
|
+
`;
|
|
575
|
+
};
|
|
576
|
+
OpenShowingEdgeCase.args = {
|
|
577
|
+
open: true
|
|
578
|
+
};
|
|
579
|
+
OpenShowingEdgeCase.decorators = [isOverlayOpen];
|
|
580
|
+
OpenShowingEdgeCase.swc_vrt = {
|
|
581
|
+
skip: true
|
|
582
|
+
};
|
|
583
|
+
OpenShowingEdgeCase.parameters = {
|
|
584
|
+
// Disables Chromatic's snapshotting on a global level
|
|
585
|
+
chromatic: { disableSnapshot: true }
|
|
586
|
+
};
|
|
587
|
+
export const initialValue = (args) => {
|
|
588
|
+
return html`
|
|
589
|
+
<sp-field-label for="picker-initial" size=${ifDefined(args.size)}>
|
|
590
|
+
Where do you live?
|
|
591
|
+
</sp-field-label>
|
|
592
|
+
<sp-picker
|
|
593
|
+
id="picker-initial"
|
|
594
|
+
@change=${handleChange(args)}
|
|
595
|
+
value="item-2"
|
|
596
|
+
${spreadProps(args)}
|
|
597
|
+
>
|
|
598
|
+
<span slot="label">
|
|
599
|
+
Select a Country with a very long label, too long in fact
|
|
600
|
+
</span>
|
|
601
|
+
<sp-menu-item value="item-1">Deselect</sp-menu-item>
|
|
602
|
+
<sp-menu-item value="item-2">Select Inverse</sp-menu-item>
|
|
603
|
+
<sp-menu-item value="item-3">Feather...</sp-menu-item>
|
|
604
|
+
<sp-menu-item value="item-4">Select and Mask...</sp-menu-item>
|
|
605
|
+
<sp-menu-item value="item-5">Save Selection</sp-menu-item>
|
|
606
|
+
<sp-menu-item disabled value="item-6">Make Work Path</sp-menu-item>
|
|
607
|
+
</sp-picker>
|
|
608
|
+
`;
|
|
609
|
+
};
|
|
610
|
+
export const readonly = (args) => {
|
|
611
|
+
return html`
|
|
612
|
+
<sp-picker
|
|
613
|
+
@change=${handleChange(args)}
|
|
614
|
+
readonly
|
|
615
|
+
value="item-2"
|
|
616
|
+
${spreadProps(args)}
|
|
617
|
+
>
|
|
618
|
+
<span slot="label">
|
|
619
|
+
Select a Country with a very long label, too long in fact
|
|
620
|
+
</span>
|
|
621
|
+
<sp-menu-item value="item-1">Deselect</sp-menu-item>
|
|
622
|
+
<sp-menu-item value="item-2">Select Inverse</sp-menu-item>
|
|
623
|
+
<sp-menu-item value="item-3">Feather...</sp-menu-item>
|
|
624
|
+
<sp-menu-item value="item-4">Select and Mask...</sp-menu-item>
|
|
625
|
+
<sp-menu-item value="item-5">Save Selection</sp-menu-item>
|
|
626
|
+
<sp-menu-item disabled value="item-6">Make Work Path</sp-menu-item>
|
|
627
|
+
</sp-picker>
|
|
628
|
+
`;
|
|
629
|
+
};
|
|
630
|
+
export const custom = (args) => {
|
|
631
|
+
const initialState = "lb1-mo";
|
|
632
|
+
return html`
|
|
633
|
+
<sp-field-label for="picker-state" size=${ifDefined(args.size)}>
|
|
634
|
+
What state do you live in?
|
|
635
|
+
</sp-field-label>
|
|
636
|
+
<sp-picker
|
|
637
|
+
style="width: 400px;"
|
|
638
|
+
@change=${handleChange(args)}
|
|
639
|
+
id="picker-state"
|
|
640
|
+
label="Pick a state"
|
|
641
|
+
${spreadProps(args)}
|
|
642
|
+
value=${initialState}
|
|
643
|
+
>
|
|
644
|
+
${states.map(
|
|
645
|
+
(state) => html`
|
|
646
|
+
<sp-menu-item
|
|
647
|
+
id=${state.id}
|
|
648
|
+
value=${state.id}
|
|
649
|
+
?selected=${state.id === initialState}
|
|
650
|
+
>
|
|
651
|
+
${state.label}
|
|
652
|
+
</sp-menu-item>
|
|
653
|
+
`
|
|
654
|
+
)}
|
|
655
|
+
</sp-picker>
|
|
656
|
+
<p>This is some text.</p>
|
|
657
|
+
<p>This is some text.</p>
|
|
658
|
+
<p>
|
|
659
|
+
This is a
|
|
660
|
+
<a href="#anchor">link</a>
|
|
661
|
+
.
|
|
662
|
+
</p>
|
|
663
|
+
`;
|
|
664
|
+
};
|
|
665
|
+
custom.args = {
|
|
666
|
+
open: true
|
|
667
|
+
};
|
|
668
|
+
custom.decorators = [isOverlayOpen];
|
|
669
|
+
export const BackgroundClickTest = () => {
|
|
670
|
+
return html`
|
|
671
|
+
<div style="display: flex; flex-direction: column;">
|
|
672
|
+
<sp-picker size="l">
|
|
673
|
+
<sp-menu-item value="option-1">Deselect</sp-menu-item>
|
|
674
|
+
<sp-menu-item value="option-2">Select Inverse</sp-menu-item>
|
|
675
|
+
</sp-picker>
|
|
676
|
+
<div style="position: absolute; bottom: 50px;">
|
|
677
|
+
<sp-button
|
|
678
|
+
@click=${() => {
|
|
679
|
+
console.log(
|
|
680
|
+
"this button should not have been clicked..."
|
|
681
|
+
);
|
|
682
|
+
}}
|
|
683
|
+
size="l"
|
|
684
|
+
>
|
|
685
|
+
I shall not be clicked
|
|
686
|
+
</sp-button>
|
|
687
|
+
</div>
|
|
688
|
+
</div>
|
|
689
|
+
`;
|
|
690
|
+
};
|
|
691
|
+
BackgroundClickTest.swc_vrt = {
|
|
692
|
+
skip: true
|
|
693
|
+
};
|
|
694
|
+
//# sourceMappingURL=picker.stories.js.map
|