@editora/ui-core 0.1.12 → 0.1.14

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 (141) hide show
  1. package/README.md +95 -5
  2. package/dist/alert-dialog.cjs.js +18 -18
  3. package/dist/alert-dialog.esm.js +130 -117
  4. package/dist/app-header.cjs.js +22 -2
  5. package/dist/app-header.esm.js +22 -2
  6. package/dist/badge.cjs.js +5 -5
  7. package/dist/badge.esm.js +9 -8
  8. package/dist/color-picker.cjs.js +4 -4
  9. package/dist/color-picker.esm.js +40 -31
  10. package/dist/combobox.cjs.js +21 -21
  11. package/dist/combobox.esm.js +79 -40
  12. package/dist/command-palette.cjs.js +1 -1
  13. package/dist/command-palette.esm.js +2 -2
  14. package/dist/components/date-time-utils.d.ts +2 -1
  15. package/dist/components/date-time-utils.d.ts.map +1 -1
  16. package/dist/components/ui-alert-dialog.d.ts +2 -0
  17. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  18. package/dist/components/ui-app-header.d.ts.map +1 -1
  19. package/dist/components/ui-badge.d.ts.map +1 -1
  20. package/dist/components/ui-color-picker.d.ts.map +1 -1
  21. package/dist/components/ui-combobox.d.ts +4 -1
  22. package/dist/components/ui-combobox.d.ts.map +1 -1
  23. package/dist/components/ui-context-menu.d.ts +6 -0
  24. package/dist/components/ui-context-menu.d.ts.map +1 -1
  25. package/dist/components/ui-date-picker.d.ts +3 -0
  26. package/dist/components/ui-date-picker.d.ts.map +1 -1
  27. package/dist/components/ui-date-range-picker.d.ts +3 -0
  28. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  29. package/dist/components/ui-date-range-time-picker.d.ts +3 -0
  30. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  31. package/dist/components/ui-date-time-picker.d.ts +3 -0
  32. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  33. package/dist/components/ui-dialog.d.ts +3 -0
  34. package/dist/components/ui-dialog.d.ts.map +1 -1
  35. package/dist/components/ui-drawer.d.ts +14 -0
  36. package/dist/components/ui-drawer.d.ts.map +1 -1
  37. package/dist/components/ui-floating-toolbar.d.ts +3 -0
  38. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  39. package/dist/components/ui-gantt.d.ts +30 -1
  40. package/dist/components/ui-gantt.d.ts.map +1 -1
  41. package/dist/components/ui-hover-card.d.ts +3 -0
  42. package/dist/components/ui-hover-card.d.ts.map +1 -1
  43. package/dist/components/ui-menu.d.ts +1 -0
  44. package/dist/components/ui-menu.d.ts.map +1 -1
  45. package/dist/components/ui-menubar.d.ts +1 -0
  46. package/dist/components/ui-menubar.d.ts.map +1 -1
  47. package/dist/components/ui-positioner.d.ts.map +1 -1
  48. package/dist/components/ui-quick-actions.d.ts.map +1 -1
  49. package/dist/components/ui-radio.d.ts +47 -0
  50. package/dist/components/ui-radio.d.ts.map +1 -0
  51. package/dist/components/ui-select.d.ts +8 -0
  52. package/dist/components/ui-select.d.ts.map +1 -1
  53. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  54. package/dist/components/ui-stepper.d.ts.map +1 -1
  55. package/dist/components/ui-time-picker.d.ts +3 -0
  56. package/dist/components/ui-time-picker.d.ts.map +1 -1
  57. package/dist/context-menu.cjs.js +12 -12
  58. package/dist/context-menu.esm.js +160 -133
  59. package/dist/date-field.cjs.js +1 -1
  60. package/dist/date-field.esm.js +3 -2
  61. package/dist/date-picker.cjs.js +13 -13
  62. package/dist/date-picker.esm.js +101 -67
  63. package/dist/date-range-picker.cjs.js +14 -14
  64. package/dist/date-range-picker.esm.js +99 -65
  65. package/dist/date-range-time-picker.cjs.js +13 -13
  66. package/dist/date-range-time-picker.esm.js +77 -45
  67. package/dist/date-time-picker.cjs.js +13 -13
  68. package/dist/date-time-picker.esm.js +133 -101
  69. package/dist/date-time-utils-66480de4.js +1 -0
  70. package/dist/date-time-utils-a2c7af25.mjs +307 -0
  71. package/dist/dialog.cjs.js +29 -20
  72. package/dist/dialog.esm.js +90 -70
  73. package/dist/drawer.cjs.js +16 -16
  74. package/dist/drawer.esm.js +216 -98
  75. package/dist/floating-toolbar.cjs.js +6 -16
  76. package/dist/floating-toolbar.esm.js +57 -40
  77. package/dist/gantt.cjs.js +656 -74
  78. package/dist/gantt.esm.js +1050 -100
  79. package/dist/hover-card.cjs.js +4 -4
  80. package/dist/hover-card.esm.js +62 -39
  81. package/dist/index.cjs.js +1 -1
  82. package/dist/index.d.ts +2 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.esm.js +300 -286
  85. package/dist/menu.cjs.js +2 -2
  86. package/dist/menu.esm.js +118 -110
  87. package/dist/menubar.cjs.js +5 -5
  88. package/dist/menubar.esm.js +83 -78
  89. package/dist/{overlayManager-ece06517.js → overlayManager-0eda4e08.js} +1 -1
  90. package/dist/{overlayManager-86454af7.mjs → overlayManager-5bbd4dc3.mjs} +1 -1
  91. package/dist/popover.cjs.js +1 -1
  92. package/dist/popover.esm.js +2 -2
  93. package/dist/portal-c69756c0.js +1 -0
  94. package/dist/portal-fe73e5cc.mjs +123 -0
  95. package/dist/portal.d.ts +29 -3
  96. package/dist/portal.d.ts.map +1 -1
  97. package/dist/positioner-33529bb8.js +1 -0
  98. package/dist/positioner-e9770c66.mjs +582 -0
  99. package/dist/positioner.cjs.js +2 -2
  100. package/dist/positioner.esm.js +36 -26
  101. package/dist/primitives/positioner.d.ts +199 -1
  102. package/dist/primitives/positioner.d.ts.map +1 -1
  103. package/dist/quick-actions.cjs.js +10 -4
  104. package/dist/quick-actions.esm.js +27 -21
  105. package/dist/radio.cjs.js +259 -0
  106. package/dist/radio.esm.js +455 -0
  107. package/dist/{runtime-4ac0107b.mjs → runtime-161f68a2.mjs} +24 -23
  108. package/dist/runtime-3f13807b.js +1 -0
  109. package/dist/runtime.cjs.js +1 -1
  110. package/dist/runtime.d.ts +2 -0
  111. package/dist/runtime.d.ts.map +1 -1
  112. package/dist/runtime.esm.js +39 -24
  113. package/dist/scroll-lock-31da444f.mjs +56 -0
  114. package/dist/scroll-lock-d7b0df21.js +1 -0
  115. package/dist/scroll-lock.d.ts.map +1 -1
  116. package/dist/select.cjs.js +14 -15
  117. package/dist/select.esm.js +117 -97
  118. package/dist/selection-popup.cjs.js +4 -7
  119. package/dist/selection-popup.esm.js +8 -11
  120. package/dist/split-button.cjs.js +1 -1
  121. package/dist/split-button.esm.js +2 -2
  122. package/dist/standalone/radio.d.ts +2 -0
  123. package/dist/standalone/radio.d.ts.map +1 -0
  124. package/dist/stepper.cjs.js +19 -50
  125. package/dist/stepper.esm.js +17 -48
  126. package/dist/time-field.cjs.js +1 -1
  127. package/dist/time-field.esm.js +3 -2
  128. package/dist/time-picker.cjs.js +15 -15
  129. package/dist/time-picker.esm.js +100 -68
  130. package/dist/tooltip.cjs.js +1 -1
  131. package/dist/tooltip.esm.js +2 -1
  132. package/package.json +1 -1
  133. package/dist/date-time-utils-5cf58cd0.js +0 -1
  134. package/dist/date-time-utils-bdceb7af.mjs +0 -273
  135. package/dist/portal-1cf392ca.mjs +0 -114
  136. package/dist/portal-d8d7fbca.js +0 -1
  137. package/dist/positioner-accc6e5f.js +0 -1
  138. package/dist/positioner-fbd61bf1.mjs +0 -132
  139. package/dist/runtime-5f282bc8.js +0 -1
  140. package/dist/scroll-lock-48793569.js +0 -1
  141. package/dist/scroll-lock-9de6d328.mjs +0 -53
@@ -1,16 +1,16 @@
1
- import { E as c } from "./ElementBase-909688f3.mjs";
2
- import { a } from "./positioner-fbd61bf1.mjs";
3
- const h = `
1
+ import { E as a } from "./ElementBase-909688f3.mjs";
2
+ import { l as h } from "./positioner-e9770c66.mjs";
3
+ const c = `
4
4
  :host {
5
5
  display: contents;
6
6
  color-scheme: light dark;
7
7
  }
8
8
  `;
9
- function l(s, t = 0) {
9
+ function r(s, t = 0) {
10
10
  const e = Number(s);
11
11
  return Number.isFinite(e) ? e : t;
12
12
  }
13
- function i(s) {
13
+ function o(s) {
14
14
  if (s == null)
15
15
  return !1;
16
16
  const t = s.toLowerCase();
@@ -32,10 +32,10 @@ function u(s) {
32
32
  "left-end"
33
33
  ])).has(s) ? s : "bottom";
34
34
  }
35
- function f(s) {
35
+ function d(s) {
36
36
  return s === "absolute" ? "absolute" : "fixed";
37
37
  }
38
- class d extends c {
38
+ class f extends a {
39
39
  constructor() {
40
40
  super(...arguments), this._positioner = null, this._observer = null;
41
41
  }
@@ -50,6 +50,11 @@ class d extends c {
50
50
  "shift",
51
51
  "match-width",
52
52
  "fit-viewport",
53
+ "auto-placement",
54
+ "hide-when-detached",
55
+ "inline",
56
+ "boundary-padding",
57
+ "dir",
53
58
  "anchor",
54
59
  "headless"
55
60
  ];
@@ -61,8 +66,8 @@ class d extends c {
61
66
  var t;
62
67
  (t = this._observer) == null || t.disconnect(), this._observer = null, this._destroyPositioner(), super.disconnectedCallback();
63
68
  }
64
- attributeChangedCallback(t, e, o) {
65
- e !== o && this._syncPositioner();
69
+ attributeChangedCallback(t, e, i) {
70
+ e !== i && this._syncPositioner();
66
71
  }
67
72
  open() {
68
73
  this.setAttribute("open", "");
@@ -81,12 +86,12 @@ class d extends c {
81
86
  _resolveAnchor() {
82
87
  const t = this.getAttribute("anchor");
83
88
  if (t) {
84
- const o = this.getRootNode(), r = o instanceof ShadowRoot || o instanceof Document ? o.querySelector(t) : null;
85
- if (r instanceof HTMLElement)
86
- return r;
87
- const n = document.querySelector(t);
89
+ const i = this.getRootNode(), n = i instanceof ShadowRoot || i instanceof Document ? i.querySelector(t) : null;
88
90
  if (n instanceof HTMLElement)
89
91
  return n;
92
+ const l = document.querySelector(t);
93
+ if (l instanceof HTMLElement)
94
+ return l;
90
95
  }
91
96
  const e = this.querySelector('[slot="anchor"]');
92
97
  return e instanceof HTMLElement ? e : null;
@@ -107,31 +112,36 @@ class d extends c {
107
112
  this._destroyPositioner();
108
113
  return;
109
114
  }
110
- this._destroyPositioner(), this._positioner = a({
115
+ this._destroyPositioner(), this._positioner = h({
111
116
  anchor: t,
112
117
  floating: e,
113
118
  placement: u(this.getAttribute("placement")),
114
- strategy: f(this.getAttribute("strategy")),
115
- offset: l(this.getAttribute("offset"), 8),
116
- crossOffset: l(this.getAttribute("cross-offset"), 0),
117
- flip: !this.hasAttribute("flip") || i(this.getAttribute("flip")),
118
- shift: !this.hasAttribute("shift") || i(this.getAttribute("shift")),
119
- matchWidth: i(this.getAttribute("match-width")),
120
- fitViewport: i(this.getAttribute("fit-viewport")),
119
+ strategy: d(this.getAttribute("strategy")),
120
+ dir: this.getAttribute("dir") === "rtl" ? "rtl" : "ltr",
121
+ offset: r(this.getAttribute("offset"), 8),
122
+ crossOffset: r(this.getAttribute("cross-offset"), 0),
123
+ flip: !this.hasAttribute("flip") || o(this.getAttribute("flip")),
124
+ shift: !this.hasAttribute("shift") || o(this.getAttribute("shift")),
125
+ matchWidth: o(this.getAttribute("match-width")),
126
+ fitViewport: o(this.getAttribute("fit-viewport")),
127
+ autoPlacement: o(this.getAttribute("auto-placement")),
128
+ hideWhenDetached: o(this.getAttribute("hide-when-detached")),
129
+ inline: o(this.getAttribute("inline")),
130
+ boundaryPadding: r(this.getAttribute("boundary-padding"), 4),
121
131
  arrow: this.querySelector('[slot="arrow"], .arrow'),
122
- onUpdate: (o) => {
123
- this.dispatchEvent(new CustomEvent("position-change", { detail: o, bubbles: !0, composed: !0 }));
132
+ onUpdate: (i) => {
133
+ this.dispatchEvent(new CustomEvent("position-change", { detail: i, bubbles: !0, composed: !0 }));
124
134
  }
125
135
  });
126
136
  }
127
137
  render() {
128
- this.setContent(`<style>${h}</style><slot name="anchor"></slot><slot name="content"></slot><slot></slot>`);
138
+ this.setContent(`<style>${c}</style><slot name="anchor"></slot><slot name="content"></slot><slot></slot>`);
129
139
  }
130
140
  shouldRenderOnAttributeChange() {
131
141
  return !1;
132
142
  }
133
143
  }
134
- typeof customElements < "u" && !customElements.get("ui-positioner") && customElements.define("ui-positioner", d);
144
+ typeof customElements < "u" && !customElements.get("ui-positioner") && customElements.define("ui-positioner", f);
135
145
  export {
136
- d as UIPositioner
146
+ f as UIPositioner
137
147
  };
@@ -1,21 +1,139 @@
1
1
  export type PositionerPlacement = 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
2
2
  export type PositionerStrategy = 'absolute' | 'fixed';
3
3
  export type PositionerSticky = 'partial' | 'always' | 'never';
4
- export type PositionerAnchor = HTMLElement | DOMRect | {
4
+ export type PositionerSide = 'top' | 'right' | 'bottom' | 'left';
5
+ export type PositionerAlign = 'center' | 'start' | 'end';
6
+ export type PositionerVirtualElement = {
5
7
  getBoundingClientRect: () => DOMRect;
8
+ getClientRects?: () => DOMRectList | DOMRect[];
9
+ contextElement?: Element;
6
10
  };
11
+ export type PositionerAnchor = HTMLElement | DOMRect | PositionerVirtualElement;
12
+ export interface PositionerMiddlewareData {
13
+ [key: string]: unknown;
14
+ offset?: {
15
+ x: number;
16
+ y: number;
17
+ };
18
+ flip?: {
19
+ overflows: Array<{
20
+ placement: PositionerPlacement;
21
+ overflow: PositionerOverflow;
22
+ }>;
23
+ };
24
+ autoPlacement?: {
25
+ index: number;
26
+ overflows: Array<{
27
+ placement: PositionerPlacement;
28
+ overflow: PositionerOverflow;
29
+ }>;
30
+ };
31
+ shift?: {
32
+ x: number;
33
+ y: number;
34
+ };
35
+ arrow?: {
36
+ x?: number;
37
+ y?: number;
38
+ centerOffset: number;
39
+ };
40
+ size?: {
41
+ availableWidth: number;
42
+ availableHeight: number;
43
+ };
44
+ hide?: {
45
+ referenceHidden: boolean;
46
+ escaped: boolean;
47
+ referenceHiddenOffsets: PositionerOverflow;
48
+ escapedOffsets: PositionerOverflow;
49
+ };
50
+ }
7
51
  export interface PositionerState {
8
52
  x: number;
9
53
  y: number;
10
54
  placement: PositionerPlacement;
55
+ strategy?: PositionerStrategy;
11
56
  availableWidth: number;
12
57
  availableHeight: number;
58
+ middlewareData?: PositionerMiddlewareData;
59
+ referenceHidden?: boolean;
60
+ escaped?: boolean;
61
+ rects?: PositionerRects;
62
+ }
63
+ export type PositionerOverflow = {
64
+ top: number;
65
+ right: number;
66
+ bottom: number;
67
+ left: number;
68
+ };
69
+ export type PositionerRects = {
70
+ reference: DOMRect;
71
+ floating: DOMRect;
72
+ };
73
+ export type PositionerBoundaryRect = {
74
+ top: number;
75
+ left: number;
76
+ right: number;
77
+ bottom: number;
78
+ width: number;
79
+ height: number;
80
+ };
81
+ export interface PositionerPlatform {
82
+ getElementRects?: (data: {
83
+ anchor: PositionerAnchor;
84
+ floating: HTMLElement | DOMRect;
85
+ placement: PositionerPlacement;
86
+ inline: boolean;
87
+ }) => PositionerRects;
88
+ getClientRects?: (anchor: PositionerAnchor) => DOMRect[] | DOMRectList;
89
+ getClippingRect?: (data: {
90
+ anchor: PositionerAnchor;
91
+ floating: HTMLElement | DOMRect;
92
+ boundary: HTMLElement | null;
93
+ }) => PositionerBoundaryRect;
94
+ }
95
+ export interface PositionerMiddlewareState {
96
+ x: number;
97
+ y: number;
98
+ initialPlacement: PositionerPlacement;
99
+ placement: PositionerPlacement;
100
+ strategy: PositionerStrategy;
101
+ rects: PositionerRects;
102
+ elements: {
103
+ anchor: PositionerAnchor;
104
+ floating: HTMLElement | DOMRect;
105
+ };
106
+ boundary: ViewportRect;
107
+ padding: number;
108
+ rtl: boolean;
109
+ middlewareData: PositionerMiddlewareData;
110
+ getRects(placement: PositionerPlacement): PositionerRects;
111
+ getAnchorRect(placement: PositionerPlacement): DOMRect;
112
+ getCoords(placement: PositionerPlacement, referenceRect?: DOMRect): {
113
+ x: number;
114
+ y: number;
115
+ };
116
+ }
117
+ export interface PositionerMiddlewareReturn {
118
+ x?: number;
119
+ y?: number;
120
+ placement?: PositionerPlacement;
121
+ data?: unknown;
122
+ reset?: boolean | {
123
+ placement?: PositionerPlacement;
124
+ };
125
+ }
126
+ export interface PositionerMiddleware {
127
+ name: string;
128
+ options?: unknown;
129
+ fn(state: PositionerMiddlewareState): PositionerMiddlewareReturn | void;
13
130
  }
14
131
  export interface PositionerOptions {
15
132
  anchor: PositionerAnchor;
16
133
  floating: HTMLElement;
17
134
  placement?: PositionerPlacement;
18
135
  strategy?: PositionerStrategy;
136
+ dir?: 'ltr' | 'rtl';
19
137
  offset?: number;
20
138
  crossOffset?: number;
21
139
  flip?: boolean;
@@ -23,18 +141,98 @@ export interface PositionerOptions {
23
141
  matchWidth?: boolean;
24
142
  fitViewport?: boolean;
25
143
  arrow?: HTMLElement | null;
144
+ arrowPadding?: number;
26
145
  boundary?: HTMLElement | null;
146
+ boundaryPadding?: number;
147
+ autoPlacement?: boolean;
148
+ allowedPlacements?: PositionerPlacement[];
149
+ fallbackPlacements?: PositionerPlacement[];
150
+ inline?: boolean;
151
+ hideWhenDetached?: boolean;
152
+ platform?: PositionerPlatform;
153
+ middleware?: PositionerMiddleware[];
27
154
  sticky?: PositionerSticky;
28
155
  observeWindowResize?: boolean;
29
156
  observeScroll?: boolean;
157
+ observeAncestorScroll?: boolean;
158
+ observeAncestorResize?: boolean;
159
+ observeLayoutShift?: boolean;
30
160
  observeAnchorResize?: boolean;
31
161
  observeFloatingResize?: boolean;
162
+ animationFrame?: boolean;
32
163
  onUpdate?: (data: PositionerState) => void;
33
164
  }
34
165
  export interface PositionerHandle {
35
166
  update(): PositionerState;
36
167
  destroy(): void;
37
168
  }
169
+ export interface PositionerAutoUpdateOptions {
170
+ observeWindowResize?: boolean;
171
+ observeScroll?: boolean;
172
+ observeAncestorScroll?: boolean;
173
+ observeAncestorResize?: boolean;
174
+ observeLayoutShift?: boolean;
175
+ observeAnchorResize?: boolean;
176
+ observeFloatingResize?: boolean;
177
+ animationFrame?: boolean;
178
+ }
179
+ type ViewportRect = PositionerBoundaryRect;
180
+ type OffsetMiddlewareOptions = number | {
181
+ mainAxis?: number;
182
+ crossAxis?: number;
183
+ };
184
+ type ShiftMiddlewareOptions = {
185
+ padding?: number;
186
+ mainAxis?: boolean;
187
+ crossAxis?: boolean;
188
+ };
189
+ type FlipMiddlewareOptions = {
190
+ padding?: number;
191
+ fallbackPlacements?: PositionerPlacement[];
192
+ };
193
+ type AutoPlacementMiddlewareOptions = {
194
+ padding?: number;
195
+ allowedPlacements?: PositionerPlacement[];
196
+ };
197
+ type ArrowMiddlewareOptions = {
198
+ element?: HTMLElement | null;
199
+ padding?: number;
200
+ };
201
+ type SizeMiddlewareOptions = {
202
+ padding?: number;
203
+ apply?: (data: {
204
+ availableWidth: number;
205
+ availableHeight: number;
206
+ rects: PositionerRects;
207
+ elements: PositionerMiddlewareState['elements'];
208
+ }) => void;
209
+ };
210
+ type HideMiddlewareOptions = {
211
+ padding?: number;
212
+ };
213
+ export declare function createVirtualPoint(x: number, y: number, contextElement?: Element): PositionerVirtualElement;
214
+ export declare function createVirtualRect(rect: DOMRect | {
215
+ x?: number;
216
+ y?: number;
217
+ top: number;
218
+ left: number;
219
+ width: number;
220
+ height: number;
221
+ }, contextElement?: Element): PositionerVirtualElement;
222
+ export declare function createVirtualRange(range: Range, contextElement?: Element): PositionerVirtualElement;
223
+ export declare function detectPositionerOverflow(state: Pick<PositionerMiddlewareState, 'x' | 'y' | 'rects' | 'boundary' | 'padding'>, options?: {
224
+ elementContext?: 'floating' | 'reference';
225
+ padding?: number;
226
+ }): PositionerOverflow;
227
+ export declare function offsetMiddleware(options?: OffsetMiddlewareOptions): PositionerMiddleware;
228
+ export declare function flipMiddleware(options?: FlipMiddlewareOptions): PositionerMiddleware;
229
+ export declare function autoPlacementMiddleware(options?: AutoPlacementMiddlewareOptions): PositionerMiddleware;
230
+ export declare function shiftMiddleware(options?: ShiftMiddlewareOptions): PositionerMiddleware;
231
+ export declare function sizeMiddleware(options?: SizeMiddlewareOptions): PositionerMiddleware;
232
+ export declare function arrowMiddleware(options?: ArrowMiddlewareOptions): PositionerMiddleware;
233
+ export declare function hideMiddleware(options?: HideMiddlewareOptions): PositionerMiddleware;
38
234
  export declare function computePositionState(anchor: PositionerAnchor, floating: HTMLElement | DOMRect, options?: Omit<PositionerOptions, 'anchor' | 'floating' | 'onUpdate'>): PositionerState;
235
+ export declare function autoUpdatePositioner(anchor: PositionerAnchor, floating: HTMLElement, update: () => void, options?: PositionerAutoUpdateOptions): () => void;
39
236
  export declare function createPositioner(options: PositionerOptions): PositionerHandle;
237
+ export {};
40
238
  //# sourceMappingURL=positioner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"positioner.d.ts","sourceRoot":"","sources":["../../src/primitives/positioner.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL,WAAW,GACX,SAAS,GACT,OAAO,GACP,aAAa,GACb,WAAW,GACX,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG;IAAE,qBAAqB,EAAE,MAAM,OAAO,CAAA;CAAE,CAAC;AAEhG,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,mBAAmB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,IAAI,eAAe,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AA6ID,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,OAAO,EAC/B,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAM,GACxE,eAAe,CAoCjB;AA8DD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAqD7E"}
1
+ {"version":3,"file":"positioner.d.ts","sourceRoot":"","sources":["../../src/primitives/positioner.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL,WAAW,GACX,SAAS,GACT,OAAO,GACP,aAAa,GACb,WAAW,GACX,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzD,MAAM,MAAM,wBAAwB,GAAG;IACrC,qBAAqB,EAAE,MAAM,OAAO,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,OAAO,GACP,wBAAwB,CAAC;AAE7B,MAAM,WAAW,wBAAwB;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE;QACP,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,mBAAmB,CAAC;YAAC,QAAQ,EAAE,kBAAkB,CAAA;SAAE,CAAC,CAAC;KACpF,CAAC;IACF,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,mBAAmB,CAAC;YAAC,QAAQ,EAAE,kBAAkB,CAAA;SAAE,CAAC,CAAC;KACpF,CAAC;IACF,KAAK,CAAC,EAAE;QACN,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,KAAK,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,eAAe,EAAE,OAAO,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC;QACjB,sBAAsB,EAAE,kBAAkB,CAAC;QAC3C,cAAc,EAAE,kBAAkB,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,gBAAgB,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC;QAChC,SAAS,EAAE,mBAAmB,CAAC;QAC/B,MAAM,EAAE,OAAO,CAAC;KACjB,KAAK,eAAe,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,EAAE,GAAG,WAAW,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,gBAAgB,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC;QAChC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;KAC9B,KAAK,sBAAsB,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE;QACR,MAAM,EAAE,gBAAgB,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,eAAe,CAAC;IAC1D,aAAa,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACvD,SAAS,CAAC,SAAS,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9F;AAED,MAAM,WAAW,0BAA0B;IACzC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,GAAG;QAAE,SAAS,CAAC,EAAE,mBAAmB,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,KAAK,EAAE,yBAAyB,GAAG,0BAA0B,GAAG,IAAI,CAAC;CACzE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC1C,kBAAkB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,IAAI,eAAe,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,KAAK,YAAY,GAAG,sBAAsB,CAAC;AAa3C,KAAK,uBAAuB,GAAG,MAAM,GAAG;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC5C,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC3C,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,eAAe,CAAC;QACvB,QAAQ,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAC;KACjD,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAsGF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAW3G;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAW1L;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAMnG;AAoKD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,IAAI,CAAC,yBAAyB,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC,EACpF,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5E,kBAAkB,CAsBpB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA2B,GAAG,oBAAoB,CA0B3F;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CA8CxF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,8BAAmC,GAAG,oBAAoB,CA2C1G;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,oBAAoB,CA8B1F;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CAsBxF;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,oBAAoB,CAwC1F;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CAuBxF;AA4ED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,OAAO,EAC/B,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAM,GACxE,eAAe,CAiEjB;AA4HD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,MAAM,IAAI,EAClB,OAAO,GAAE,2BAAgC,GACxC,MAAM,IAAI,CAWZ;AA4ED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CA4C7E"}
@@ -124,6 +124,7 @@
124
124
  :host([floating]) {
125
125
  position: fixed;
126
126
  z-index: 1250;
127
+ contain: layout paint;
127
128
  }
128
129
 
129
130
  :host([floating][placement="bottom-right"]) {
@@ -146,6 +147,11 @@
146
147
  top: 16px;
147
148
  }
148
149
 
150
+ :host([floating]) .root {
151
+ transform: translateZ(0);
152
+ backface-visibility: hidden;
153
+ }
154
+
149
155
  :host([headless]) .root {
150
156
  display: none;
151
157
  }
@@ -191,11 +197,11 @@
191
197
  border-color: Highlight;
192
198
  }
193
199
  }
194
- `;let g=0;function l(u){return u.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}class d extends h.ElementBase{constructor(){super(),this._instanceId=++g,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["open","mode","orientation","variant","floating","placement","collapsible","label","headless"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this.getAttribute("mode")!=="fab"&&!this.hasAttribute("collapsible")&&!this.hasAttribute("open")&&this.setAttribute("open","")}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,i,t){if(i!==t){if(e==="open"){this._syncOpenUi();return}this.isConnected&&this.requestRender()}}get open(){return this.hasAttribute("open")}set open(e){e?this.setAttribute("open",""):this.removeAttribute("open")}show(){this.toggle(!0)}hide(){this.toggle(!1)}toggle(e){const i=typeof e=="boolean"?e:!this.open;this.open=i;const t={open:i};this.dispatchEvent(new CustomEvent(i?"open":"close",{detail:t,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:t,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("toggle",{detail:t,bubbles:!0,composed:!0}))}_actions(){const e=this.root.querySelector('slot[name="action"]');return e?e.assignedElements({flatten:!0}).filter(i=>i instanceof HTMLElement):[]}_actionsId(){return`ui-quick-actions-${this._instanceId}-actions`}_syncActionAccessibility(e){this._actions().forEach((t,s)=>{var r;if(t.id||(t.id=`ui-quick-actions-${this._instanceId}-action-${s+1}`),t.hasAttribute("role")||t.setAttribute("role","button"),!t.hasAttribute("aria-label")){const o=(r=t.textContent)==null?void 0:r.trim();o&&t.setAttribute("aria-label",o)}if(e){const o=t.getAttribute("data-ui-quick-tabindex");o!=null?(o==="__none__"?t.removeAttribute("tabindex"):t.setAttribute("tabindex",o),t.removeAttribute("data-ui-quick-tabindex")):t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("aria-hidden","false");return}t.hasAttribute("data-ui-quick-tabindex")||t.setAttribute("data-ui-quick-tabindex",t.getAttribute("tabindex")??"__none__"),t.setAttribute("tabindex","-1"),t.setAttribute("aria-hidden","true")})}_onClick(e){var n;const i=e.target;if(!i)return;if(i.closest(".toggle")){this.toggle();return}const s=e.composedPath(),r=this._actions(),o=r.find(b=>s.includes(b));if(!o)return;const a=r.indexOf(o),c={index:a,id:o.id||o.getAttribute("data-id")||String(a+1),label:o.getAttribute("aria-label")||((n=o.textContent)==null?void 0:n.trim())||`Action ${a+1}`};this.dispatchEvent(new CustomEvent("select",{detail:c,bubbles:!0,composed:!0})),this.getAttribute("mode")==="fab"&&this.hide()}_moveFocus(e,i){const t=this._actions();if(!t.length)return;const s=t.indexOf(e);if(s<0)return;const r=(s+i+t.length)%t.length;t[r].focus()}_onKeyDown(e){if(e.key==="Escape"&&this.open&&this.getAttribute("mode")==="fab"){e.preventDefault(),this.hide();return}const i=e.target;if(!i)return;const s=this._actions().find(n=>n===i||n.contains(i));if(!s)return;const r=this.getAttribute("orientation")==="vertical"||this.getAttribute("mode")==="fab",o=!r&&getComputedStyle(this).direction==="rtl",a=r?"ArrowDown":o?"ArrowLeft":"ArrowRight",c=r?"ArrowUp":o?"ArrowRight":"ArrowLeft";if(e.key===a){e.preventDefault(),this._moveFocus(s,1);return}if(e.key===c){e.preventDefault(),this._moveFocus(s,-1);return}if(e.key==="Home"||e.key==="End"){e.preventDefault();const n=this._actions();if(!n.length)return;(e.key==="Home"?n[0]:n[n.length-1]).focus()}}_syncOpenUi(){if(!this.isConnected)return;if(!this.root.querySelector(".root")){this.requestRender();return}const e=this.getAttribute("mode")==="fab"?"fab":"bar",i=this.hasAttribute("collapsible")||e==="fab",t=this.open||!i&&e==="bar",s=this.getAttribute("label")||"Quick actions",r=this.root.querySelector(".toggle");r&&(r.textContent=t?"−":"+",r.setAttribute("aria-label",s),r.setAttribute("aria-expanded",t?"true":"false"));const o=this.root.querySelector(".actions");o&&(t?o.removeAttribute("hidden"):o.setAttribute("hidden","")),this._syncActionAccessibility(t)}render(){const e=this.getAttribute("mode")==="fab"?"fab":"bar",i=this.hasAttribute("collapsible")||e==="fab",t=this.open||!i&&e==="bar",s=this.getAttribute("label")||"Quick actions",r=this._actionsId(),o=this.getAttribute("orientation")==="vertical"||e==="fab"?"vertical":"horizontal";this.setContent(`
200
+ `;let g=0;function l(u){return u.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}class d extends h.ElementBase{constructor(){super(),this._instanceId=++g,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["open","mode","orientation","variant","floating","placement","collapsible","label","headless"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this.getAttribute("mode")!=="fab"&&!this.hasAttribute("collapsible")&&!this.hasAttribute("open")&&this.setAttribute("open","")}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,i,t){if(i!==t){if(e==="open"){this._syncOpenUi();return}this.isConnected&&this.requestRender()}}get open(){return this.hasAttribute("open")}set open(e){e?this.setAttribute("open",""):this.removeAttribute("open")}show(){this.toggle(!0)}hide(){this.toggle(!1)}toggle(e){const i=typeof e=="boolean"?e:!this.open;this.open=i;const t={open:i};this.dispatchEvent(new CustomEvent(i?"open":"close",{detail:t,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:t,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("toggle",{detail:t,bubbles:!0,composed:!0}))}_actions(){const e=this.root.querySelector('slot[name="action"]');return e?e.assignedElements({flatten:!0}).filter(i=>i instanceof HTMLElement):[]}_actionsId(){return`ui-quick-actions-${this._instanceId}-actions`}_syncActionAccessibility(e){this._actions().forEach((t,n)=>{var r;if(t.id||(t.id=`ui-quick-actions-${this._instanceId}-action-${n+1}`),t.hasAttribute("role")||t.setAttribute("role","button"),!t.hasAttribute("aria-label")){const o=(r=t.textContent)==null?void 0:r.trim();o&&t.setAttribute("aria-label",o)}if(e){const o=t.getAttribute("data-ui-quick-tabindex");o!=null?(o==="__none__"?t.removeAttribute("tabindex"):t.setAttribute("tabindex",o),t.removeAttribute("data-ui-quick-tabindex")):t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("aria-hidden","false");return}t.hasAttribute("data-ui-quick-tabindex")||t.setAttribute("data-ui-quick-tabindex",t.getAttribute("tabindex")??"__none__"),t.setAttribute("tabindex","-1"),t.setAttribute("aria-hidden","true")})}_onClick(e){var s;const i=e.target;if(!i)return;if(i.closest(".toggle")){this.toggle();return}const n=e.composedPath(),r=this._actions(),o=r.find(b=>n.includes(b));if(!o)return;const a=r.indexOf(o),c={index:a,id:o.id||o.getAttribute("data-id")||String(a+1),label:o.getAttribute("aria-label")||((s=o.textContent)==null?void 0:s.trim())||`Action ${a+1}`};this.dispatchEvent(new CustomEvent("select",{detail:c,bubbles:!0,composed:!0})),this.getAttribute("mode")==="fab"&&this.hide()}_moveFocus(e,i){const t=this._actions();if(!t.length)return;const n=t.indexOf(e);if(n<0)return;const r=(n+i+t.length)%t.length;t[r].focus()}_onKeyDown(e){if(e.key==="Escape"&&this.open&&this.getAttribute("mode")==="fab"){e.preventDefault(),this.hide();return}const i=e.target;if(!i)return;const n=this._actions().find(s=>s===i||s.contains(i));if(!n)return;const r=this.getAttribute("orientation")==="vertical"||this.getAttribute("mode")==="fab",o=!r&&getComputedStyle(this).direction==="rtl",a=r?"ArrowDown":o?"ArrowLeft":"ArrowRight",c=r?"ArrowUp":o?"ArrowRight":"ArrowLeft";if(e.key===a){e.preventDefault(),this._moveFocus(n,1);return}if(e.key===c){e.preventDefault(),this._moveFocus(n,-1);return}if(e.key==="Home"||e.key==="End"){e.preventDefault();const s=this._actions();if(!s.length)return;(e.key==="Home"?s[0]:s[s.length-1]).focus()}}_syncOpenUi(){if(!this.isConnected)return;if(!this.root.querySelector(".root")){this.requestRender();return}const e=this.getAttribute("mode")==="fab"?"fab":"bar",i=this.hasAttribute("collapsible")||e==="fab",t=this.open||!i&&e==="bar",n=this.getAttribute("label")||"Quick actions",r=this.root.querySelector(".toggle");r&&(r.textContent=t?"−":"+",r.setAttribute("aria-label",n),r.setAttribute("aria-expanded",t?"true":"false"));const o=this.root.querySelector(".actions");o&&(t?o.removeAttribute("hidden"):o.setAttribute("hidden","")),this._syncActionAccessibility(t)}render(){const e=this.getAttribute("mode")==="fab"?"fab":"bar",i=this.hasAttribute("collapsible")||e==="fab",t=this.open||!i&&e==="bar",n=this.getAttribute("label")||"Quick actions",r=this._actionsId(),o=this.getAttribute("orientation")==="vertical"||e==="fab"?"vertical":"horizontal";this.setContent(`
195
201
  <style>${p}</style>
196
- <section class="root" part="root" role="toolbar" aria-label="${l(s)}" aria-orientation="${o}">
197
- ${i?`<button type="button" class="toggle" part="toggle" aria-label="${l(s)}" aria-controls="${r}" aria-haspopup="true" aria-expanded="${t?"true":"false"}">${t?"−":"+"}</button>`:""}
198
- <div id="${r}" class="actions" part="actions" role="group" aria-label="${l(s)} list" ${t?"":"hidden"}>
202
+ <section class="root" part="root" role="toolbar" aria-label="${l(n)}" aria-orientation="${o}">
203
+ ${i?`<button type="button" class="toggle" part="toggle" aria-label="${l(n)}" aria-controls="${r}" aria-haspopup="true" aria-expanded="${t?"true":"false"}">${t?"−":"+"}</button>`:""}
204
+ <div id="${r}" class="actions" part="actions" role="group" aria-label="${l(n)} list" ${t?"":"hidden"}>
199
205
  <slot name="action"></slot>
200
206
  </div>
201
207
  </section>
@@ -125,6 +125,7 @@ const h = `
125
125
  :host([floating]) {
126
126
  position: fixed;
127
127
  z-index: 1250;
128
+ contain: layout paint;
128
129
  }
129
130
 
130
131
  :host([floating][placement="bottom-right"]) {
@@ -147,6 +148,11 @@ const h = `
147
148
  top: 16px;
148
149
  }
149
150
 
151
+ :host([floating]) .root {
152
+ transform: translateZ(0);
153
+ backface-visibility: hidden;
154
+ }
155
+
150
156
  :host([headless]) .root {
151
157
  display: none;
152
158
  }
@@ -255,9 +261,9 @@ class g extends b {
255
261
  return `ui-quick-actions-${this._instanceId}-actions`;
256
262
  }
257
263
  _syncActionAccessibility(e) {
258
- this._actions().forEach((t, s) => {
264
+ this._actions().forEach((t, n) => {
259
265
  var r;
260
- if (t.id || (t.id = `ui-quick-actions-${this._instanceId}-action-${s + 1}`), t.hasAttribute("role") || t.setAttribute("role", "button"), !t.hasAttribute("aria-label")) {
266
+ if (t.id || (t.id = `ui-quick-actions-${this._instanceId}-action-${n + 1}`), t.hasAttribute("role") || t.setAttribute("role", "button"), !t.hasAttribute("aria-label")) {
261
267
  const o = (r = t.textContent) == null ? void 0 : r.trim();
262
268
  o && t.setAttribute("aria-label", o);
263
269
  }
@@ -270,7 +276,7 @@ class g extends b {
270
276
  });
271
277
  }
272
278
  _onClick(e) {
273
- var n;
279
+ var s;
274
280
  const i = e.target;
275
281
  if (!i)
276
282
  return;
@@ -278,13 +284,13 @@ class g extends b {
278
284
  this.toggle();
279
285
  return;
280
286
  }
281
- const s = e.composedPath(), r = this._actions(), o = r.find((d) => s.includes(d));
287
+ const n = e.composedPath(), r = this._actions(), o = r.find((d) => n.includes(d));
282
288
  if (!o)
283
289
  return;
284
290
  const a = r.indexOf(o), c = {
285
291
  index: a,
286
292
  id: o.id || o.getAttribute("data-id") || String(a + 1),
287
- label: o.getAttribute("aria-label") || ((n = o.textContent) == null ? void 0 : n.trim()) || `Action ${a + 1}`
293
+ label: o.getAttribute("aria-label") || ((s = o.textContent) == null ? void 0 : s.trim()) || `Action ${a + 1}`
288
294
  };
289
295
  this.dispatchEvent(new CustomEvent("select", { detail: c, bubbles: !0, composed: !0 })), this.getAttribute("mode") === "fab" && this.hide();
290
296
  }
@@ -292,10 +298,10 @@ class g extends b {
292
298
  const t = this._actions();
293
299
  if (!t.length)
294
300
  return;
295
- const s = t.indexOf(e);
296
- if (s < 0)
301
+ const n = t.indexOf(e);
302
+ if (n < 0)
297
303
  return;
298
- const r = (s + i + t.length) % t.length;
304
+ const r = (n + i + t.length) % t.length;
299
305
  t[r].focus();
300
306
  }
301
307
  _onKeyDown(e) {
@@ -306,24 +312,24 @@ class g extends b {
306
312
  const i = e.target;
307
313
  if (!i)
308
314
  return;
309
- const s = this._actions().find((n) => n === i || n.contains(i));
310
- if (!s)
315
+ const n = this._actions().find((s) => s === i || s.contains(i));
316
+ if (!n)
311
317
  return;
312
318
  const r = this.getAttribute("orientation") === "vertical" || this.getAttribute("mode") === "fab", o = !r && getComputedStyle(this).direction === "rtl", a = r ? "ArrowDown" : o ? "ArrowLeft" : "ArrowRight", c = r ? "ArrowUp" : o ? "ArrowRight" : "ArrowLeft";
313
319
  if (e.key === a) {
314
- e.preventDefault(), this._moveFocus(s, 1);
320
+ e.preventDefault(), this._moveFocus(n, 1);
315
321
  return;
316
322
  }
317
323
  if (e.key === c) {
318
- e.preventDefault(), this._moveFocus(s, -1);
324
+ e.preventDefault(), this._moveFocus(n, -1);
319
325
  return;
320
326
  }
321
327
  if (e.key === "Home" || e.key === "End") {
322
328
  e.preventDefault();
323
- const n = this._actions();
324
- if (!n.length)
329
+ const s = this._actions();
330
+ if (!s.length)
325
331
  return;
326
- (e.key === "Home" ? n[0] : n[n.length - 1]).focus();
332
+ (e.key === "Home" ? s[0] : s[s.length - 1]).focus();
327
333
  }
328
334
  }
329
335
  _syncOpenUi() {
@@ -333,18 +339,18 @@ class g extends b {
333
339
  this.requestRender();
334
340
  return;
335
341
  }
336
- const e = this.getAttribute("mode") === "fab" ? "fab" : "bar", i = this.hasAttribute("collapsible") || e === "fab", t = this.open || !i && e === "bar", s = this.getAttribute("label") || "Quick actions", r = this.root.querySelector(".toggle");
337
- r && (r.textContent = t ? "−" : "+", r.setAttribute("aria-label", s), r.setAttribute("aria-expanded", t ? "true" : "false"));
342
+ const e = this.getAttribute("mode") === "fab" ? "fab" : "bar", i = this.hasAttribute("collapsible") || e === "fab", t = this.open || !i && e === "bar", n = this.getAttribute("label") || "Quick actions", r = this.root.querySelector(".toggle");
343
+ r && (r.textContent = t ? "−" : "+", r.setAttribute("aria-label", n), r.setAttribute("aria-expanded", t ? "true" : "false"));
338
344
  const o = this.root.querySelector(".actions");
339
345
  o && (t ? o.removeAttribute("hidden") : o.setAttribute("hidden", "")), this._syncActionAccessibility(t);
340
346
  }
341
347
  render() {
342
- const e = this.getAttribute("mode") === "fab" ? "fab" : "bar", i = this.hasAttribute("collapsible") || e === "fab", t = this.open || !i && e === "bar", s = this.getAttribute("label") || "Quick actions", r = this._actionsId(), o = this.getAttribute("orientation") === "vertical" || e === "fab" ? "vertical" : "horizontal";
348
+ const e = this.getAttribute("mode") === "fab" ? "fab" : "bar", i = this.hasAttribute("collapsible") || e === "fab", t = this.open || !i && e === "bar", n = this.getAttribute("label") || "Quick actions", r = this._actionsId(), o = this.getAttribute("orientation") === "vertical" || e === "fab" ? "vertical" : "horizontal";
343
349
  this.setContent(`
344
350
  <style>${h}</style>
345
- <section class="root" part="root" role="toolbar" aria-label="${l(s)}" aria-orientation="${o}">
346
- ${i ? `<button type="button" class="toggle" part="toggle" aria-label="${l(s)}" aria-controls="${r}" aria-haspopup="true" aria-expanded="${t ? "true" : "false"}">${t ? "−" : "+"}</button>` : ""}
347
- <div id="${r}" class="actions" part="actions" role="group" aria-label="${l(s)} list" ${t ? "" : "hidden"}>
351
+ <section class="root" part="root" role="toolbar" aria-label="${l(n)}" aria-orientation="${o}">
352
+ ${i ? `<button type="button" class="toggle" part="toggle" aria-label="${l(n)}" aria-controls="${r}" aria-haspopup="true" aria-expanded="${t ? "true" : "false"}">${t ? "−" : "+"}</button>` : ""}
353
+ <div id="${r}" class="actions" part="actions" role="group" aria-label="${l(n)} list" ${t ? "" : "hidden"}>
348
354
  <slot name="action"></slot>
349
355
  </div>
350
356
  </section>