@spectrum-web-components/picker 0.14.2-overlay.33 → 0.15.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/picker",
3
- "version": "0.14.2-overlay.33+499d5fe96",
3
+ "version": "0.15.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -66,19 +66,19 @@
66
66
  ],
67
67
  "dependencies": {
68
68
  "@spectrum-web-components/base": "^0.7.4",
69
- "@spectrum-web-components/button": "^0.20.2-overlay.33+499d5fe96",
70
- "@spectrum-web-components/icon": "^0.12.8",
71
- "@spectrum-web-components/icons-ui": "^0.9.8",
72
- "@spectrum-web-components/icons-workflow": "^0.9.8",
73
- "@spectrum-web-components/menu": "^0.16.14-overlay.33+499d5fe96",
74
- "@spectrum-web-components/overlay": "^0.19.2-overlay.33+499d5fe96",
75
- "@spectrum-web-components/popover": "^0.12.14-overlay.33+499d5fe96",
69
+ "@spectrum-web-components/button": "^0.20.3",
70
+ "@spectrum-web-components/icon": "^0.12.9",
71
+ "@spectrum-web-components/icons-ui": "^0.9.10",
72
+ "@spectrum-web-components/icons-workflow": "^0.9.10",
73
+ "@spectrum-web-components/menu": "^0.16.15",
74
+ "@spectrum-web-components/overlay": "^0.19.3",
75
+ "@spectrum-web-components/popover": "^0.12.15",
76
76
  "@spectrum-web-components/reactive-controllers": "^0.3.5",
77
- "@spectrum-web-components/shared": "^0.15.6-overlay.99+499d5fe96",
78
- "@spectrum-web-components/tray": "^0.5.1-overlay.37+499d5fe96"
77
+ "@spectrum-web-components/shared": "^0.15.5",
78
+ "@spectrum-web-components/tray": "^0.5.1"
79
79
  },
80
80
  "devDependencies": {
81
- "@spectrum-css/picker": "^2.0.0"
81
+ "@spectrum-css/picker": "^2.0.5"
82
82
  },
83
83
  "types": "./src/index.d.ts",
84
84
  "customElements": "custom-elements.json",
@@ -88,5 +88,5 @@
88
88
  "./sync/index.js",
89
89
  "./sync/sp-*.js"
90
90
  ],
91
- "gitHead": "499d5fe966f35eb862c1983eb3a42641f213ac6a"
91
+ "gitHead": "1e25ee121f3bc838dbb99bac62f3c95857570f7a"
92
92
  }
package/src/Picker.d.ts CHANGED
@@ -1,14 +1,12 @@
1
1
  import { CSSResultArray, PropertyValues, TemplateResult } from '@spectrum-web-components/base';
2
- import { StyleInfo } from '@spectrum-web-components/base/src/directives.js';
3
2
  import { Focusable } from '@spectrum-web-components/shared/src/focusable.js';
4
3
  import '@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js';
5
4
  import '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';
6
- import '@spectrum-web-components/overlay/sp-overlay.js';
7
5
  import '@spectrum-web-components/menu/sp-menu.js';
8
- import type { Menu, MenuItem, MenuItemChildren } from '@spectrum-web-components/menu';
6
+ import type { Menu, MenuItem, MenuItemAddedOrUpdatedEvent, MenuItemChildren, MenuItemRemovedEvent } from '@spectrum-web-components/menu';
9
7
  import '@spectrum-web-components/tray/sp-tray.js';
10
8
  import '@spectrum-web-components/popover/sp-popover.js';
11
- import { Placement } from '@spectrum-web-components/overlay';
9
+ import { OverlayOptions, Placement, TriggerInteractions } from '@spectrum-web-components/overlay';
12
10
  import { MatchMediaController } from '@spectrum-web-components/reactive-controllers/src/MatchMedia.js';
13
11
  declare const PickerBase_base: typeof Focusable & {
14
12
  new (...args: any[]): import("@spectrum-web-components/base").SizedElementInterface;
@@ -24,6 +22,10 @@ declare const PickerBase_base: typeof Focusable & {
24
22
  * @fires sp-closed - Announces that the overlay has been closed
25
23
  */
26
24
  export declare class PickerBase extends PickerBase_base {
25
+ /**
26
+ * @private
27
+ */
28
+ static openOverlay: (target: HTMLElement, interaction: TriggerInteractions, content: HTMLElement, options: OverlayOptions) => Promise<() => void>;
27
29
  protected isMobile: MatchMediaController;
28
30
  button: HTMLButtonElement;
29
31
  get target(): HTMLButtonElement | this;
@@ -35,7 +37,8 @@ export declare class PickerBase extends PickerBase_base {
35
37
  open: boolean;
36
38
  readonly: boolean;
37
39
  selects: undefined | 'single';
38
- get menuItems(): MenuItem[];
40
+ menuItems: MenuItem[];
41
+ private restoreChildren?;
39
42
  optionsMenu: Menu;
40
43
  /**
41
44
  * @type {"auto" | "auto-start" | "auto-end" | "top" | "bottom" | "right" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end" | "none"}
@@ -44,9 +47,9 @@ export declare class PickerBase extends PickerBase_base {
44
47
  placement: Placement;
45
48
  quiet: boolean;
46
49
  value: string;
47
- get selectedItem(): MenuItem | undefined;
48
- set selectedItem(selectedItem: MenuItem | undefined);
49
- _selectedItem?: MenuItem;
50
+ selectedItem?: MenuItem;
51
+ private closeOverlay?;
52
+ private popoverEl;
50
53
  protected listRole: 'listbox' | 'menu';
51
54
  protected itemRole: string;
52
55
  constructor();
@@ -61,21 +64,33 @@ export declare class PickerBase extends PickerBase_base {
61
64
  protected onKeydown: (event: KeyboardEvent) => void;
62
65
  setValueFromItem(item: MenuItem, menuChangeEvent?: Event): Promise<void>;
63
66
  protected setMenuItemSelected(item: MenuItem, value: boolean): void;
64
- private preventToggle;
65
67
  toggle(target?: boolean): void;
66
68
  close(): void;
67
- protected get containerStyles(): StyleInfo;
69
+ overlayOpenCallback: () => Promise<void>;
70
+ overlayCloseCallback: () => Promise<void>;
71
+ private popoverFragment;
72
+ private generatePopover;
73
+ private openMenu;
74
+ protected sizePopover(popover: HTMLElement): void;
75
+ private closeMenu;
68
76
  protected get selectedItemContent(): MenuItemChildren;
69
- protected set selectedItemContent(selectedItemContent: MenuItemChildren | undefined);
70
- _selectedItemContent?: MenuItemChildren;
71
77
  protected renderLabelContent(content: Node[]): TemplateResult | Node[];
72
78
  protected get buttonContent(): TemplateResult[];
73
- protected get renderOverlay(): TemplateResult;
74
79
  protected render(): TemplateResult;
75
80
  protected update(changes: PropertyValues<this>): void;
76
81
  protected get dismissHelper(): TemplateResult;
77
- protected get renderContainer(): TemplateResult;
82
+ protected get renderPopover(): TemplateResult;
83
+ private _willUpdateItems;
84
+ protected itemsUpdated: Promise<void>;
85
+ /**
86
+ * Acquire the available MenuItems in the Picker by
87
+ * direct element query or by assuming the list managed
88
+ * by the Menu within the open options overlay.
89
+ */
90
+ protected updateMenuItems(event?: MenuItemAddedOrUpdatedEvent | MenuItemRemovedEvent): void;
78
91
  protected manageSelection(): Promise<void>;
92
+ private menuStatePromise;
93
+ private menuStateResolver;
79
94
  private selectionPromise;
80
95
  private selectionResolver;
81
96
  protected getUpdateComplete(): Promise<boolean>;
@@ -84,6 +99,7 @@ export declare class PickerBase extends PickerBase_base {
84
99
  }
85
100
  export declare class Picker extends PickerBase {
86
101
  static get styles(): CSSResultArray;
102
+ protected sizePopover(popover: HTMLElement): void;
87
103
  protected onKeydown: (event: KeyboardEvent) => void;
88
104
  }
89
105
  export {};
package/src/Picker.dev.js CHANGED
@@ -13,12 +13,10 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  import {
14
14
  html,
15
15
  nothing,
16
+ render,
16
17
  SizedMixin
17
18
  } from "@spectrum-web-components/base";
18
- import {
19
- classMap,
20
- styleMap
21
- } from "@spectrum-web-components/base/src/directives.js";
19
+ import { classMap } from "@spectrum-web-components/base/src/directives.js";
22
20
  import {
23
21
  property,
24
22
  query
@@ -26,12 +24,15 @@ import {
26
24
  import pickerStyles from "./picker.css.js";
27
25
  import chevronStyles from "@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js";
28
26
  import { Focusable } from "@spectrum-web-components/shared/src/focusable.js";
27
+ import { reparentChildren } from "@spectrum-web-components/shared/src/reparent-children.js";
29
28
  import "@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js";
30
29
  import "@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js";
31
- import "@spectrum-web-components/overlay/sp-overlay.js";
32
30
  import "@spectrum-web-components/menu/sp-menu.js";
33
31
  import "@spectrum-web-components/tray/sp-tray.js";
34
32
  import "@spectrum-web-components/popover/sp-popover.js";
33
+ import {
34
+ openOverlay
35
+ } from "@spectrum-web-components/overlay";
35
36
  import {
36
37
  IS_MOBILE,
37
38
  MatchMediaController
@@ -52,6 +53,7 @@ export class PickerBase extends SizedMixin(Focusable) {
52
53
  this.open = false;
53
54
  this.readonly = false;
54
55
  this.selects = "single";
56
+ this.menuItems = [];
55
57
  this.placement = "bottom-start";
56
58
  this.quiet = false;
57
59
  this.value = "";
@@ -65,33 +67,29 @@ export class PickerBase extends SizedMixin(Focusable) {
65
67
  event.preventDefault();
66
68
  this.toggle(true);
67
69
  };
68
- this.preventToggle = false;
70
+ this.overlayOpenCallback = async () => {
71
+ this.updateMenuItems();
72
+ await this.itemsUpdated;
73
+ await this.optionsMenu.updateComplete;
74
+ requestAnimationFrame(() => this.menuStateResolver());
75
+ };
76
+ this.overlayCloseCallback = async () => {
77
+ if (this.restoreChildren) {
78
+ this.restoreChildren();
79
+ this.restoreChildren = void 0;
80
+ }
81
+ this.close();
82
+ requestAnimationFrame(() => this.menuStateResolver());
83
+ };
84
+ this._willUpdateItems = false;
85
+ this.itemsUpdated = Promise.resolve();
86
+ this.menuStatePromise = Promise.resolve();
69
87
  this.selectionPromise = Promise.resolve();
70
88
  this.onKeydown = this.onKeydown.bind(this);
71
- this.addEventListener("focusout", (event) => {
72
- if (event.relatedTarget && this.contains(event.relatedTarget) || event.target !== this) {
73
- return;
74
- }
75
- this.open = false;
76
- });
77
89
  }
78
90
  get target() {
79
91
  return this.button;
80
92
  }
81
- get menuItems() {
82
- return this.optionsMenu.childItems;
83
- }
84
- get selectedItem() {
85
- return this._selectedItem;
86
- }
87
- set selectedItem(selectedItem) {
88
- this.selectedItemContent = selectedItem ? selectedItem.itemChildren : void 0;
89
- if (selectedItem === this.selectedItem)
90
- return;
91
- const oldSelectedItem = this.selectedItem;
92
- this._selectedItem = selectedItem;
93
- this.requestUpdate("selectedItem", oldSelectedItem);
94
- }
95
93
  get focusElement() {
96
94
  if (this.open) {
97
95
  return this.optionsMenu;
@@ -130,8 +128,8 @@ export class PickerBase extends SizedMixin(Focusable) {
130
128
  handleChange(event) {
131
129
  const target = event.target;
132
130
  const [selected] = target.selectedItems;
133
- event.stopPropagation();
134
131
  if (event.cancelable) {
132
+ event.stopPropagation();
135
133
  this.setValueFromItem(selected, event);
136
134
  } else {
137
135
  this.open = false;
@@ -175,8 +173,6 @@ export class PickerBase extends SizedMixin(Focusable) {
175
173
  item.selected = value;
176
174
  }
177
175
  toggle(target) {
178
- if (this.preventToggle)
179
- return;
180
176
  if (this.readonly) {
181
177
  return;
182
178
  }
@@ -188,27 +184,74 @@ export class PickerBase extends SizedMixin(Focusable) {
188
184
  }
189
185
  this.open = false;
190
186
  }
191
- get containerStyles() {
187
+ async generatePopover() {
188
+ if (!this.popoverFragment) {
189
+ this.popoverFragment = document.createDocumentFragment();
190
+ }
191
+ render(this.renderPopover, this.popoverFragment, { host: this });
192
+ this.popoverEl = this.popoverFragment.children[0];
193
+ this.optionsMenu = this.popoverEl.children[1];
194
+ }
195
+ async openMenu() {
196
+ let reparentableChildren = [];
197
+ const deprecatedMenu = this.querySelector(":scope > sp-menu");
198
+ await this.generatePopover();
199
+ if (deprecatedMenu) {
200
+ reparentableChildren = Array.from(deprecatedMenu.children);
201
+ } else {
202
+ reparentableChildren = Array.from(this.children).filter(
203
+ (element) => {
204
+ return !element.hasAttribute("slot");
205
+ }
206
+ );
207
+ }
208
+ if (reparentableChildren.length === 0) {
209
+ this.menuStateResolver();
210
+ return;
211
+ }
212
+ this.restoreChildren = reparentChildren(reparentableChildren, this.optionsMenu, {
213
+ position: "beforeend",
214
+ prepareCallback: (el) => {
215
+ if (this.value === el.value) {
216
+ this.setMenuItemSelected(el, true);
217
+ }
218
+ return (el2) => {
219
+ if (typeof el2.focused !== "undefined") {
220
+ el2.focused = false;
221
+ }
222
+ };
223
+ }
224
+ });
225
+ this.sizePopover(this.popoverEl);
226
+ if (true) {
227
+ window.__swc.ignoreWarningLevels.deprecation = true;
228
+ }
229
+ this.closeOverlay = Picker.openOverlay(this, "modal", this.popoverEl, {
230
+ placement: this.isMobile.matches ? "none" : this.placement,
231
+ receivesFocus: "auto"
232
+ });
233
+ if (true) {
234
+ window.__swc.ignoreWarningLevels.deprecation = false;
235
+ }
236
+ }
237
+ sizePopover(popover) {
192
238
  if (this.isMobile.matches) {
193
- return {
194
- "--swc-menu-width": "100%"
195
- };
239
+ popover.style.setProperty("--swc-menu-width", `100%`);
240
+ return;
196
241
  }
197
- if (this.quiet)
198
- return {};
199
- return {
200
- "min-width": `${this.offsetWidth}px`
201
- };
202
242
  }
203
- get selectedItemContent() {
204
- return this._selectedItemContent || { icon: [], content: [] };
243
+ async closeMenu() {
244
+ if (this.closeOverlay) {
245
+ const closeOverlay = this.closeOverlay;
246
+ delete this.closeOverlay;
247
+ (await closeOverlay)();
248
+ }
205
249
  }
206
- set selectedItemContent(selectedItemContent) {
207
- if (selectedItemContent === this.selectedItemContent)
208
- return;
209
- const oldContent = this.selectedItemContent;
210
- this._selectedItemContent = selectedItemContent;
211
- this.requestUpdate("selectedItemContent", oldContent);
250
+ get selectedItemContent() {
251
+ if (this.selectedItem) {
252
+ return this.selectedItem.itemChildren;
253
+ }
254
+ return { icon: [], content: [] };
212
255
  }
213
256
  renderLabelContent(content) {
214
257
  if (this.value && this.selectedItem) {
@@ -242,40 +285,13 @@ export class PickerBase extends SizedMixin(Focusable) {
242
285
  `
243
286
  ];
244
287
  }
245
- get renderOverlay() {
246
- return html`
247
- <sp-overlay
248
- .triggerElement=${this}
249
- .offset=${0}
250
- ?open=${this.open}
251
- .placement=${this.placement}
252
- type="auto"
253
- @sp-menu-item-added-or-updated=${this.manageSelection}
254
- @beforetoggle=${(event) => {
255
- this.open = event.target.open;
256
- if (!this.open) {
257
- this.preventToggle = true;
258
- requestAnimationFrame(
259
- () => this.preventToggle = false
260
- );
261
- this.optionsMenu.updateSelectedItemIndex();
262
- this.optionsMenu.closeDescendentOverlays();
263
- } else {
264
- this.optionsMenu.focus();
265
- }
266
- }}
267
- >
268
- ${this.renderContainer}
269
- </sp-overlay>
270
- `;
271
- }
272
288
  // a helper to throw focus to the button is needed because Safari
273
289
  // won't include buttons in the tab order even with tabindex="0"
274
290
  render() {
275
291
  return html`
276
292
  <span
277
293
  id="focus-helper"
278
- tabindex="${this.focused || this.open ? "-1" : "0"}"
294
+ tabindex="${this.focused ? "-1" : "0"}"
279
295
  @focus=${this.onHelperFocus}
280
296
  ></span>
281
297
  <button
@@ -292,7 +308,6 @@ export class PickerBase extends SizedMixin(Focusable) {
292
308
  >
293
309
  ${this.buttonContent}
294
310
  </button>
295
- ${this.renderOverlay}
296
311
  `;
297
312
  }
298
313
  update(changes) {
@@ -302,10 +317,18 @@ export class PickerBase extends SizedMixin(Focusable) {
302
317
  if (changes.has("disabled") && this.disabled) {
303
318
  this.open = false;
304
319
  }
305
- if (changes.has("value")) {
306
- requestAnimationFrame(() => {
307
- this.manageSelection();
308
- });
320
+ if (changes.has("open") && (this.open || typeof changes.get("open") !== "undefined")) {
321
+ this.menuStatePromise = new Promise(
322
+ (res) => this.menuStateResolver = res
323
+ );
324
+ if (this.open) {
325
+ this.openMenu();
326
+ } else {
327
+ this.closeMenu();
328
+ }
329
+ }
330
+ if (changes.has("value") && !changes.has("selectedItem")) {
331
+ this.updateMenuItems();
309
332
  }
310
333
  if (true) {
311
334
  if (!this.hasUpdated && this.querySelector("sp-menu")) {
@@ -331,7 +354,7 @@ export class PickerBase extends SizedMixin(Focusable) {
331
354
  </div>
332
355
  `;
333
356
  }
334
- get renderContainer() {
357
+ get renderPopover() {
335
358
  const content = html`
336
359
  ${this.dismissHelper}
337
360
  <sp-menu
@@ -339,10 +362,7 @@ export class PickerBase extends SizedMixin(Focusable) {
339
362
  role="${this.listRole}"
340
363
  @change=${this.handleChange}
341
364
  .selects=${this.selects}
342
- .selected=${this.value ? [this.value] : []}
343
- >
344
- <slot></slot>
345
- </sp-menu>
365
+ ></sp-menu>
346
366
  ${this.dismissHelper}
347
367
  `;
348
368
  if (this.isMobile.matches) {
@@ -350,7 +370,9 @@ export class PickerBase extends SizedMixin(Focusable) {
350
370
  <sp-tray
351
371
  id="popover"
352
372
  role="dialog"
353
- style=${styleMap(this.containerStyles)}
373
+ @sp-menu-item-added-or-updated=${this.updateMenuItems}
374
+ .overlayOpenCallback=${this.overlayOpenCallback}
375
+ .overlayCloseCallback=${this.overlayCloseCallback}
354
376
  >
355
377
  ${content}
356
378
  </sp-tray>
@@ -360,21 +382,56 @@ export class PickerBase extends SizedMixin(Focusable) {
360
382
  <sp-popover
361
383
  id="popover"
362
384
  role="dialog"
363
- style=${styleMap(this.containerStyles)}
364
- placement=${this.placement}
385
+ @sp-menu-item-added-or-updated=${this.updateMenuItems}
386
+ .overlayOpenCallback=${this.overlayOpenCallback}
387
+ .overlayCloseCallback=${this.overlayCloseCallback}
365
388
  >
366
389
  ${content}
367
390
  </sp-popover>
368
391
  `;
369
392
  }
393
+ /**
394
+ * Acquire the available MenuItems in the Picker by
395
+ * direct element query or by assuming the list managed
396
+ * by the Menu within the open options overlay.
397
+ */
398
+ updateMenuItems(event) {
399
+ if (this.open && (event == null ? void 0 : event.type) === "sp-menu-item-removed")
400
+ return;
401
+ if (this._willUpdateItems)
402
+ return;
403
+ this._willUpdateItems = true;
404
+ if ((event == null ? void 0 : event.item) === this.selectedItem) {
405
+ this.requestUpdate();
406
+ }
407
+ let resolve = () => {
408
+ return;
409
+ };
410
+ this.itemsUpdated = new Promise((res) => resolve = res);
411
+ window.requestAnimationFrame(async () => {
412
+ if (this.open) {
413
+ await this.optionsMenu.updateComplete;
414
+ this.menuItems = this.optionsMenu.childItems;
415
+ } else {
416
+ this.menuItems = [
417
+ ...this.querySelectorAll(
418
+ 'sp-menu-item:not([slot="submenu"] *)'
419
+ )
420
+ ];
421
+ }
422
+ this.manageSelection();
423
+ resolve();
424
+ this._willUpdateItems = false;
425
+ });
426
+ }
370
427
  async manageSelection() {
371
428
  if (this.selects == null)
372
429
  return;
430
+ await this.menuStatePromise;
373
431
  this.selectionPromise = new Promise(
374
432
  (res) => this.selectionResolver = res
375
433
  );
376
434
  let selectedItem;
377
- await this.optionsMenu.updateComplete;
378
435
  this.menuItems.forEach((item) => {
379
436
  if (this.value === item.value && !item.disabled) {
380
437
  selectedItem = item;
@@ -397,10 +454,18 @@ export class PickerBase extends SizedMixin(Focusable) {
397
454
  }
398
455
  async getUpdateComplete() {
399
456
  const complete = await super.getUpdateComplete();
457
+ await this.menuStatePromise;
458
+ await this.itemsUpdated;
400
459
  await this.selectionPromise;
401
460
  return complete;
402
461
  }
403
462
  connectedCallback() {
463
+ this.updateMenuItems();
464
+ this.addEventListener(
465
+ "sp-menu-item-added-or-updated",
466
+ this.updateMenuItems
467
+ );
468
+ this.addEventListener("sp-menu-item-removed", this.updateMenuItems);
404
469
  super.connectedCallback();
405
470
  }
406
471
  disconnectedCallback() {
@@ -408,6 +473,12 @@ export class PickerBase extends SizedMixin(Focusable) {
408
473
  super.disconnectedCallback();
409
474
  }
410
475
  }
476
+ /**
477
+ * @private
478
+ */
479
+ PickerBase.openOverlay = async (target, interaction, content, options) => {
480
+ return await openOverlay(target, interaction, content, options);
481
+ };
411
482
  __decorateClass([
412
483
  query("#button")
413
484
  ], PickerBase.prototype, "button", 2);
@@ -432,9 +503,6 @@ __decorateClass([
432
503
  __decorateClass([
433
504
  property({ type: Boolean, reflect: true })
434
505
  ], PickerBase.prototype, "readonly", 2);
435
- __decorateClass([
436
- query("sp-menu")
437
- ], PickerBase.prototype, "optionsMenu", 2);
438
506
  __decorateClass([
439
507
  property()
440
508
  ], PickerBase.prototype, "placement", 2);
@@ -446,10 +514,7 @@ __decorateClass([
446
514
  ], PickerBase.prototype, "value", 2);
447
515
  __decorateClass([
448
516
  property({ attribute: false })
449
- ], PickerBase.prototype, "selectedItem", 1);
450
- __decorateClass([
451
- property({ attribute: false })
452
- ], PickerBase.prototype, "selectedItemContent", 1);
517
+ ], PickerBase.prototype, "selectedItem", 2);
453
518
  export class Picker extends PickerBase {
454
519
  constructor() {
455
520
  super(...arguments);
@@ -481,5 +546,11 @@ export class Picker extends PickerBase {
481
546
  static get styles() {
482
547
  return [pickerStyles, chevronStyles];
483
548
  }
549
+ sizePopover(popover) {
550
+ super.sizePopover(popover);
551
+ if (this.quiet)
552
+ return;
553
+ popover.style.setProperty("min-width", `${this.offsetWidth}px`);
554
+ }
484
555
  }
485
556
  //# sourceMappingURL=Picker.dev.js.map