@spectrum-web-components/overlay 0.41.0 → 0.41.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.
Files changed (100) hide show
  1. package/custom-elements.json +996 -314
  2. package/package.json +31 -7
  3. package/src/AbstractOverlay.d.ts +13 -3
  4. package/src/AbstractOverlay.dev.js +54 -19
  5. package/src/AbstractOverlay.dev.js.map +2 -2
  6. package/src/AbstractOverlay.js +1 -1
  7. package/src/AbstractOverlay.js.map +3 -3
  8. package/src/ClickController.d.ts +14 -0
  9. package/src/ClickController.dev.js +42 -0
  10. package/src/ClickController.dev.js.map +7 -0
  11. package/src/ClickController.js +2 -0
  12. package/src/ClickController.js.map +7 -0
  13. package/src/HoverController.d.ts +19 -0
  14. package/src/HoverController.dev.js +141 -0
  15. package/src/HoverController.dev.js.map +7 -0
  16. package/src/HoverController.js +2 -0
  17. package/src/HoverController.js.map +7 -0
  18. package/src/InteractionController.d.ts +23 -0
  19. package/src/InteractionController.dev.js +45 -0
  20. package/src/InteractionController.dev.js.map +7 -0
  21. package/src/InteractionController.js +2 -0
  22. package/src/InteractionController.js.map +7 -0
  23. package/src/LongpressController.d.ts +21 -0
  24. package/src/LongpressController.dev.js +157 -0
  25. package/src/LongpressController.dev.js.map +7 -0
  26. package/src/LongpressController.js +2 -0
  27. package/src/LongpressController.js.map +7 -0
  28. package/src/Overlay.d.ts +17 -50
  29. package/src/Overlay.dev.js +86 -363
  30. package/src/Overlay.dev.js.map +2 -2
  31. package/src/Overlay.js +10 -10
  32. package/src/Overlay.js.map +3 -3
  33. package/src/OverlayDialog.dev.js +8 -1
  34. package/src/OverlayDialog.dev.js.map +2 -2
  35. package/src/OverlayDialog.js +1 -1
  36. package/src/OverlayDialog.js.map +3 -3
  37. package/src/OverlayNoPopover.dev.js +9 -3
  38. package/src/OverlayNoPopover.dev.js.map +2 -2
  39. package/src/OverlayNoPopover.js +1 -1
  40. package/src/OverlayNoPopover.js.map +3 -3
  41. package/src/OverlayPopover.dev.js +10 -1
  42. package/src/OverlayPopover.dev.js.map +2 -2
  43. package/src/OverlayPopover.js +1 -1
  44. package/src/OverlayPopover.js.map +3 -3
  45. package/src/OverlayStack.dev.js +3 -0
  46. package/src/OverlayStack.dev.js.map +2 -2
  47. package/src/OverlayStack.js +1 -1
  48. package/src/OverlayStack.js.map +2 -2
  49. package/src/index.d.ts +1 -0
  50. package/src/index.dev.js +1 -0
  51. package/src/index.dev.js.map +2 -2
  52. package/src/index.js +1 -1
  53. package/src/index.js.map +2 -2
  54. package/src/overlay-trigger-directive.d.ts +31 -0
  55. package/src/overlay-trigger-directive.dev.js +102 -0
  56. package/src/overlay-trigger-directive.dev.js.map +7 -0
  57. package/src/overlay-trigger-directive.js +2 -0
  58. package/src/overlay-trigger-directive.js.map +7 -0
  59. package/src/overlay-trigger.css.dev.js +1 -1
  60. package/src/overlay-trigger.css.dev.js.map +1 -1
  61. package/src/overlay-trigger.css.js +1 -1
  62. package/src/overlay-trigger.css.js.map +1 -1
  63. package/src/overlay-types.d.ts +7 -0
  64. package/src/overlay-types.dev.js.map +1 -1
  65. package/src/overlay-types.js.map +1 -1
  66. package/src/overlay.css.dev.js +1 -3
  67. package/src/overlay.css.dev.js.map +2 -2
  68. package/src/overlay.css.js +1 -3
  69. package/src/overlay.css.js.map +2 -2
  70. package/src/slottable-request-event.d.ts +7 -0
  71. package/src/slottable-request-event.dev.js +28 -0
  72. package/src/slottable-request-event.dev.js.map +7 -0
  73. package/src/slottable-request-event.js +2 -0
  74. package/src/slottable-request-event.js.map +7 -0
  75. package/stories/overlay-directive.stories.js +203 -0
  76. package/stories/overlay-directive.stories.js.map +7 -0
  77. package/stories/overlay-element.stories.js +44 -1
  78. package/stories/overlay-element.stories.js.map +2 -2
  79. package/stories/overlay.stories.js +9 -9
  80. package/stories/overlay.stories.js.map +2 -2
  81. package/test/benchmark/basic-test.js +24 -1
  82. package/test/benchmark/basic-test.js.map +2 -2
  83. package/test/benchmark/directive-test.js +42 -0
  84. package/test/benchmark/directive-test.js.map +7 -0
  85. package/test/benchmark/element-test.js +40 -0
  86. package/test/benchmark/element-test.js.map +7 -0
  87. package/test/benchmark/lazy-test.js +48 -0
  88. package/test/benchmark/lazy-test.js.map +7 -0
  89. package/test/index.js +11 -176
  90. package/test/index.js.map +2 -2
  91. package/test/overlay-directive.test-vrt.js +5 -0
  92. package/test/overlay-directive.test-vrt.js.map +7 -0
  93. package/test/overlay-directive.test.js +147 -0
  94. package/test/overlay-directive.test.js.map +7 -0
  95. package/test/overlay-element.test.js +152 -1
  96. package/test/overlay-element.test.js.map +2 -2
  97. package/test/overlay-trigger-directive.test.js +75 -0
  98. package/test/overlay-trigger-directive.test.js.map +7 -0
  99. package/test/overlay-trigger-extended.test.js +1 -1
  100. package/test/overlay-trigger-extended.test.js.map +2 -2
package/src/Overlay.d.ts CHANGED
@@ -1,14 +1,19 @@
1
1
  import { PropertyValues, TemplateResult } from '@spectrum-web-components/base';
2
- import type { OpenableElement, OverlayState, OverlayTypes, Placement } from './overlay-types.js';
2
+ import { ElementResolutionController } from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';
3
+ import type { OpenableElement, OverlayState, OverlayTypes, Placement, TriggerInteraction } from './overlay-types.js';
3
4
  import { AbstractOverlay } from './AbstractOverlay.js';
4
5
  import { VirtualTrigger } from './VirtualTrigger.js';
5
6
  import { PlacementController } from './PlacementController.js';
6
- export declare const LONGPRESS_INSTRUCTIONS: {
7
- touch: string;
8
- keyboard: string;
9
- mouse: string;
10
- };
7
+ import { ClickController } from './ClickController.js';
8
+ import { HoverController } from './HoverController.js';
9
+ import { LongpressController } from './LongpressController.js';
10
+ export { LONGPRESS_INSTRUCTIONS } from './LongpressController.js';
11
11
  declare let OverlayFeatures: typeof AbstractOverlay & import("./overlay-types.js").Constructor<import("@spectrum-web-components/base").SpectrumElement>;
12
+ export declare const strategies: {
13
+ click: typeof ClickController;
14
+ longpress: typeof LongpressController;
15
+ hover: typeof HoverController;
16
+ };
12
17
  /**
13
18
  * @element sp-overlay
14
19
  *
@@ -17,7 +22,6 @@ declare let OverlayFeatures: typeof AbstractOverlay & import("./overlay-types.js
17
22
  */
18
23
  export declare class Overlay extends OverlayFeatures {
19
24
  static styles: import("@spectrum-web-components/base").CSSResult[];
20
- abortController: AbortController;
21
25
  /**
22
26
  * An Overlay that is `delayed` will wait until a warm-up period of 1000ms
23
27
  * has completed before opening. Once the warmup period has completed, all
@@ -42,9 +46,6 @@ export declare class Overlay extends OverlayFeatures {
42
46
  elements: OpenableElement[];
43
47
  parentOverlayToForceClose?: Overlay;
44
48
  private get hasNonVirtualTrigger();
45
- protected longpressState: 'null' | 'potential' | 'opening' | 'pressed';
46
- private longressTimeout;
47
- private hoverTimeout?;
48
49
  /**
49
50
  * The `offset` property accepts either a single number, to
50
51
  * define the offset of the Overlay along the main axis from
@@ -53,7 +54,7 @@ export declare class Overlay extends OverlayFeatures {
53
54
  * when there is no trigger element.
54
55
  */
55
56
  offset: number | [number, number];
56
- protected placementController: PlacementController;
57
+ protected get placementController(): PlacementController;
57
58
  /**
58
59
  * Whether the Overlay is projected onto the "top layer" or not.
59
60
  */
@@ -74,12 +75,11 @@ export declare class Overlay extends OverlayFeatures {
74
75
  *
75
76
  */
76
77
  receivesFocus: 'true' | 'false' | 'auto';
77
- private releaseAriaDescribedby;
78
- private releaseLongpressDescribedby;
79
78
  slotEl: HTMLSlotElement;
80
79
  get state(): OverlayState;
81
80
  set state(state: OverlayState);
82
81
  _state: OverlayState;
82
+ strategy?: ClickController | HoverController | LongpressController;
83
83
  tipPadding?: number;
84
84
  /**
85
85
  * An optional ID reference for the trigger element combined with the optional
@@ -95,57 +95,24 @@ export declare class Overlay extends OverlayFeatures {
95
95
  /**
96
96
  * The specific interaction to listen for on the `triggerElement` to open the overlay.
97
97
  */
98
- triggerInteraction?: 'click' | 'longpress' | 'hover';
98
+ triggerInteraction?: TriggerInteraction;
99
99
  /**
100
100
  * Configures the open/close heuristics of the Overlay.
101
101
  * @type {"auto" | "hint" | "manual" | "modal" | "page"}
102
102
  */
103
103
  type: OverlayTypes;
104
104
  protected wasOpen: boolean;
105
- private elementResolver;
105
+ protected get elementResolver(): ElementResolutionController;
106
106
  private get usesDialog();
107
107
  private get popoverValue();
108
108
  protected get requiresPosition(): boolean;
109
109
  protected managePosition(): void;
110
110
  protected managePopoverOpen(): Promise<void>;
111
111
  protected applyFocus(targetOpenState: boolean, focusEl: HTMLElement | null): Promise<void>;
112
+ protected returnFocus(): void;
112
113
  private closeOnFocusOut;
113
114
  protected manageOpen(oldOpen: boolean): Promise<void>;
114
- protected unbindEvents(): void;
115
115
  protected bindEvents(): void;
116
- protected bindClickEvents(triggerElement: HTMLElement): void;
117
- protected bindLongpressEvents(triggerElement: HTMLElement): void;
118
- protected bindHoverEvents(triggerElement: HTMLElement): void;
119
- protected manageTriggerElement(triggerElement: HTMLElement | undefined): void;
120
- private elementIds;
121
- private prepareLongpressDescription;
122
- private prepareAriaDescribedby;
123
- private handlePointerdown;
124
- private handlePointerup;
125
- /**
126
- * @private
127
- */
128
- protected handleKeydown: (event: KeyboardEvent) => void;
129
- protected handleKeyup: (event: KeyboardEvent) => void;
130
- /**
131
- * An overlay with a `click` interaction should not close on click `triggerElement`.
132
- * When a click is initiated (`pointerdown`), apply `preventNextToggle` when the
133
- * overlay is `open` to prevent from toggling the overlay when the click event
134
- * propagates later in the interaction.
135
- */
136
- private preventNextToggle;
137
- protected handlePointerdownForClick: () => void;
138
- protected handleClick: () => void;
139
- private focusedin;
140
- protected handleFocusin: () => void;
141
- protected handleFocusout: () => void;
142
- private pointerentered;
143
- protected handlePointerenter: () => void;
144
- protected handleOverlayPointerenter: () => void;
145
- protected handlePointerleave: () => void;
146
- protected handleOverlayPointerleave: () => void;
147
- protected doPointerleave(): void;
148
- protected handleLongpress: () => void;
149
116
  protected handleBeforetoggle(event: Event & {
150
117
  newState: string;
151
118
  }): void;
@@ -153,6 +120,7 @@ export declare class Overlay extends OverlayFeatures {
153
120
  manuallyKeepOpen(): void;
154
121
  protected handleSlotchange(): void;
155
122
  shouldPreventClose(): boolean;
123
+ protected requestSlottable(): void;
156
124
  willUpdate(changes: PropertyValues): void;
157
125
  protected updated(changes: PropertyValues): void;
158
126
  protected renderContent(): TemplateResult;
@@ -163,4 +131,3 @@ export declare class Overlay extends OverlayFeatures {
163
131
  connectedCallback(): void;
164
132
  disconnectedCallback(): void;
165
133
  }
166
- export {};