@antadesign/anta 0.3.33 → 0.3.35

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 (205) hide show
  1. package/LICENSE.md +14 -1
  2. package/README.md +9 -0
  3. package/dist/anta_helpers.d.ts +46 -30
  4. package/dist/anta_helpers.js +66 -25
  5. package/dist/bundle.css +1 -1
  6. package/dist/bundle.js +2 -1353
  7. package/dist/components/Banner.d.ts +25 -40
  8. package/dist/components/Banner.js +15 -17
  9. package/dist/components/Breadcrumbs.d.ts +0 -1
  10. package/dist/components/Breadcrumbs.js +0 -1
  11. package/dist/components/Button.d.ts +2 -3
  12. package/dist/components/Button.js +1 -0
  13. package/dist/components/ButtonCopy.js +3 -2
  14. package/dist/components/Calendar.js +13 -13
  15. package/dist/components/Card.d.ts +9 -17
  16. package/dist/components/Card.js +50 -46
  17. package/dist/components/Dialog.d.ts +1 -0
  18. package/dist/components/Dialog.js +16 -10
  19. package/dist/components/Expander.d.ts +6 -21
  20. package/dist/components/Expander.js +24 -23
  21. package/dist/components/Icon.d.ts +8 -14
  22. package/dist/components/Input.d.ts +77 -96
  23. package/dist/components/Input.js +23 -27
  24. package/dist/components/InputAutocomplete.d.ts +29 -10
  25. package/dist/components/InputAutocomplete.js +25 -8
  26. package/dist/components/InputDate.d.ts +0 -1
  27. package/dist/components/InputDate.js +2 -3
  28. package/dist/components/InputTime.d.ts +10 -4
  29. package/dist/components/InputTime.js +20 -16
  30. package/dist/components/Loader.d.ts +2 -2
  31. package/dist/components/Menu.d.ts +5 -4
  32. package/dist/components/Menu.js +13 -8
  33. package/dist/components/MenuItem.js +1 -14
  34. package/dist/components/MenuItemCopy.js +2 -2
  35. package/dist/components/Panel.d.ts +3 -1
  36. package/dist/components/Panel.js +17 -11
  37. package/dist/components/Progress.d.ts +21 -23
  38. package/dist/components/Progress.js +13 -9
  39. package/dist/components/RadioGroup.js +6 -8
  40. package/dist/components/{select-parts.css → Select.css} +1 -1
  41. package/dist/components/Select.d.ts +53 -36
  42. package/dist/components/Select.js +53 -98
  43. package/dist/components/SelectFaceted.d.ts +7 -4
  44. package/dist/components/SelectFaceted.js +21 -10
  45. package/dist/components/Slider.d.ts +28 -11
  46. package/dist/components/Slider.js +20 -20
  47. package/dist/components/Steps.css +1 -1
  48. package/dist/components/Steps.d.ts +0 -1
  49. package/dist/components/Steps.js +1 -12
  50. package/dist/components/Tabs.d.ts +17 -20
  51. package/dist/components/Tabs.js +7 -9
  52. package/dist/components/Text.d.ts +55 -36
  53. package/dist/components/Text.js +35 -22
  54. package/dist/components/Title.d.ts +19 -27
  55. package/dist/components/Title.js +2 -1
  56. package/dist/components/Toaster.js +9 -2
  57. package/dist/components/Tooltip.d.ts +10 -15
  58. package/dist/components/copy-props.d.ts +14 -3
  59. package/dist/components/copy-props.js +14 -3
  60. package/dist/components/select-tree.d.ts +24 -0
  61. package/dist/components/select-tree.js +35 -0
  62. package/dist/element-base.d.ts +10 -0
  63. package/dist/element-base.js +15 -0
  64. package/dist/elements/a-avatar.css +1 -1
  65. package/dist/elements/a-avatar.js +2 -28
  66. package/dist/elements/a-banner.css +1 -1
  67. package/dist/elements/a-banner.d.ts +4 -1
  68. package/dist/elements/a-banner.js +22 -112
  69. package/dist/elements/a-breadcrumbs.d.ts +1 -0
  70. package/dist/elements/a-breadcrumbs.js +1 -0
  71. package/dist/elements/a-button.css +1 -1
  72. package/dist/elements/a-button.d.ts +10 -7
  73. package/dist/elements/a-button.js +18 -1
  74. package/dist/elements/a-calendar.d.ts +14 -13
  75. package/dist/elements/a-calendar.js +29 -24
  76. package/dist/elements/a-card.css +1 -1
  77. package/dist/elements/a-card.d.ts +0 -9
  78. package/dist/elements/a-card.js +0 -184
  79. package/dist/elements/a-checkbox.css +1 -1
  80. package/dist/elements/a-copy.css +1 -1
  81. package/dist/elements/a-copy.d.ts +1 -5
  82. package/dist/elements/a-copy.js +129 -108
  83. package/dist/elements/a-dialog.css +1 -1
  84. package/dist/elements/a-dialog.d.ts +1 -1
  85. package/dist/elements/a-dialog.js +68 -194
  86. package/dist/elements/a-expander.css +1 -1
  87. package/dist/elements/a-expander.d.ts +4 -30
  88. package/dist/elements/a-expander.js +85 -344
  89. package/dist/elements/a-icon.d.ts +5 -23
  90. package/dist/elements/a-icon.js +1 -2
  91. package/dist/elements/a-input-date.d.ts +1 -0
  92. package/dist/elements/a-input-date.js +1 -0
  93. package/dist/elements/a-input-time.css +1 -1
  94. package/dist/elements/a-input-time.d.ts +2 -1
  95. package/dist/elements/a-input-time.js +101 -168
  96. package/dist/elements/a-input.css +1 -1
  97. package/dist/elements/a-input.d.ts +10 -8
  98. package/dist/elements/a-input.js +155 -230
  99. package/dist/elements/a-loader.d.ts +5 -8
  100. package/dist/elements/a-loader.js +1 -2
  101. package/dist/elements/a-menu-item.css +1 -1
  102. package/dist/elements/a-menu-item.d.ts +5 -3
  103. package/dist/elements/a-menu-item.js +5 -1
  104. package/dist/elements/a-menu.css +1 -1
  105. package/dist/elements/a-menu.d.ts +5 -7
  106. package/dist/elements/a-menu.js +383 -299
  107. package/dist/elements/a-panel.css +1 -1
  108. package/dist/elements/a-panel.js +19 -37
  109. package/dist/elements/a-progress.css +1 -1
  110. package/dist/elements/a-progress.d.ts +0 -22
  111. package/dist/elements/a-progress.js +0 -100
  112. package/dist/elements/a-radio-group.d.ts +1 -1
  113. package/dist/elements/a-radio-group.js +6 -4
  114. package/dist/elements/a-select-faceted.d.ts +1 -0
  115. package/dist/elements/a-select-faceted.js +1 -0
  116. package/dist/elements/a-select.d.ts +1 -0
  117. package/dist/elements/a-select.js +1 -0
  118. package/dist/elements/a-slider.css +1 -1
  119. package/dist/elements/a-slider.d.ts +11 -3
  120. package/dist/elements/a-slider.js +244 -242
  121. package/dist/elements/a-steps.d.ts +1 -0
  122. package/dist/elements/a-steps.js +1 -0
  123. package/dist/elements/a-switch.css +1 -1
  124. package/dist/elements/a-tab.css +1 -1
  125. package/dist/elements/a-tabpanel.d.ts +2 -2
  126. package/dist/elements/a-tabpanel.js +13 -3
  127. package/dist/elements/a-tabs.css +1 -1
  128. package/dist/elements/a-tabs.d.ts +1 -1
  129. package/dist/elements/a-tabs.js +6 -4
  130. package/dist/elements/a-tag.css +1 -1
  131. package/dist/elements/a-tag.d.ts +1 -0
  132. package/dist/elements/a-tag.js +1 -0
  133. package/dist/elements/a-text.css +1 -1
  134. package/dist/elements/a-text.d.ts +6 -43
  135. package/dist/elements/a-text.js +110 -193
  136. package/dist/elements/a-title.css +1 -1
  137. package/dist/elements/a-title.d.ts +1 -0
  138. package/dist/elements/a-title.js +1 -0
  139. package/dist/elements/a-toast.css +1 -1
  140. package/dist/elements/a-toast.d.ts +10 -45
  141. package/dist/elements/a-toast.js +80 -66
  142. package/dist/elements/a-toaster.css +1 -1
  143. package/dist/elements/a-toaster.js +9 -44
  144. package/dist/elements/a-tooltip.css +1 -1
  145. package/dist/elements/a-tooltip.d.ts +1 -1
  146. package/dist/elements/a-tooltip.js +142 -136
  147. package/dist/elements/copy-behavior.d.ts +1 -1
  148. package/dist/elements/copy-behavior.js +21 -21
  149. package/dist/elements/index.d.ts +9 -3
  150. package/dist/elements/index.js +6 -6
  151. package/dist/elements/input-focus-modality.d.ts +15 -0
  152. package/dist/elements/input-focus-modality.js +44 -0
  153. package/dist/elements/input-trailing-actions.d.ts +5 -0
  154. package/dist/elements/input-trailing-actions.js +38 -0
  155. package/dist/elements/shadow-aria.d.ts +2 -0
  156. package/dist/elements/shadow-aria.js +2 -1
  157. package/dist/elements/value-input.d.ts +3 -0
  158. package/dist/elements/value-input.js +12 -0
  159. package/dist/general_types.d.ts +103 -96
  160. package/dist/index.d.ts +1 -1
  161. package/dist/input-events.d.ts +4 -0
  162. package/dist/input-events.js +15 -0
  163. package/dist/jsx-runtime.d.ts +70 -23
  164. package/dist/jsx-runtime.js +26 -19
  165. package/dist/native-event-props.d.ts +2 -0
  166. package/dist/native-event-props.js +10 -0
  167. package/dist/reset.css +1 -1
  168. package/dist/theme-antithesis.css +10 -1
  169. package/dist/theme-antune.css +1 -1
  170. package/docs/accessibility.md +17 -3
  171. package/docs/changelog.md +384 -2
  172. package/docs/comparison.md +2 -2
  173. package/docs/components/avatar.md +5 -0
  174. package/docs/components/banner.md +117 -187
  175. package/docs/components/breadcrumbs.md +9 -6
  176. package/docs/components/button.md +22 -0
  177. package/docs/components/card.md +74 -28
  178. package/docs/components/checkbox.md +9 -10
  179. package/docs/components/dialog.md +83 -32
  180. package/docs/components/expander.md +198 -435
  181. package/docs/components/icon.md +11 -17
  182. package/docs/components/input-autocomplete.md +152 -52
  183. package/docs/components/input-date.md +175 -148
  184. package/docs/components/input-time.md +81 -38
  185. package/docs/components/input.md +343 -349
  186. package/docs/components/loader.md +2 -1
  187. package/docs/components/menu.md +35 -6
  188. package/docs/components/panel.md +18 -0
  189. package/docs/components/progress.md +83 -49
  190. package/docs/components/radio.md +39 -43
  191. package/docs/components/select-faceted.md +54 -7
  192. package/docs/components/select.md +390 -386
  193. package/docs/components/slider.md +136 -19
  194. package/docs/components/steps.md +6 -3
  195. package/docs/components/switch.md +8 -9
  196. package/docs/components/tabs.md +110 -104
  197. package/docs/components/text.md +110 -86
  198. package/docs/components/title.md +47 -33
  199. package/docs/components/toaster.md +242 -84
  200. package/docs/components/tooltip.md +204 -113
  201. package/docs/install-config.md +461 -96
  202. package/docs/packages/plot.md +228 -143
  203. package/docs/theming.md +29 -13
  204. package/package.json +43 -4
  205. package/theme-antithesis-license.md +66 -0
@@ -4,104 +4,65 @@ import "./a-copy.css";
4
4
  const BUTTON_HOST = "a-button, button, [role=button]";
5
5
  const MENU_HOST = "a-menu-item, [role=menuitem]";
6
6
  const ANY_HOST = `${BUTTON_HOST}, ${MENU_HOST}`;
7
- const pointerOrigins = /* @__PURE__ */ new WeakMap();
7
+ const COPY_DELEGATION = /* @__PURE__ */ Symbol.for("anta.copy-delegation");
8
8
  function copyChild(host) {
9
9
  return host?.querySelector(":scope > a-copy") ?? null;
10
10
  }
11
11
  function hostBlocked(host) {
12
12
  return host.hasAttribute("disabled") || host.hasAttribute("loading") || host.getAttribute("aria-disabled") === "true";
13
13
  }
14
- function installCopyDelegation(doc) {
15
- if (!doc || doc.hasCopyDelegation) return;
16
- const preRequest = (target, origin) => {
17
- const host = target?.closest?.(ANY_HOST);
14
+ function copyDelegation(doc) {
15
+ if (doc[COPY_DELEGATION]) return doc[COPY_DELEGATION];
16
+ const origins = /* @__PURE__ */ new WeakMap();
17
+ const hostFor = (event) => event.target?.closest?.(ANY_HOST);
18
+ const preRequest = (event, origin) => {
19
+ const host = hostFor(event);
18
20
  if (!host || hostBlocked(host)) return;
19
21
  const el = copyChild(host);
20
22
  if (!el) return;
21
- if (origin) pointerOrigins.set(el, origin);
22
- else pointerOrigins.delete(el);
23
+ if (origin) origins.set(el, origin);
24
+ else origins.delete(el);
23
25
  emitCopyRequest(el);
24
26
  };
25
- doc.addEventListener(
26
- "pointerdown",
27
- (e) => preRequest(e.target, { x: e.clientX, y: e.clientY }),
28
- true
29
- );
30
- doc.addEventListener(
31
- "keydown",
32
- (e) => {
33
- if (e.key === "Enter" || e.key === " ")
34
- preRequest(e.target);
35
- },
36
- true
37
- );
38
- doc.addEventListener(
39
- "click",
40
- (e) => {
41
- const host = e.target?.closest?.(BUTTON_HOST);
42
- if (!host || hostBlocked(host)) return;
43
- const el = copyChild(host);
44
- if (!el) return;
45
- if (e.detail)
46
- pointerOrigins.set(el, { x: e.clientX, y: e.clientY });
47
- else pointerOrigins.delete(el);
48
- el.activate();
49
- },
50
- true
51
- );
52
- doc.addEventListener(
53
- "menuselect",
54
- (e) => {
55
- const host = e.target?.closest?.(MENU_HOST);
56
- if (!host || hostBlocked(host)) return;
57
- copyChild(host)?.activate();
58
- },
59
- true
60
- );
61
- doc.hasCopyDelegation = true;
27
+ const pointerdown = (e) => preRequest(e, { x: e.clientX, y: e.clientY });
28
+ const keydown = (e) => {
29
+ if (e.key === "Enter" || e.key === " ") preRequest(e);
30
+ };
31
+ const click = (e) => {
32
+ const host = hostFor(e);
33
+ if (!host?.matches(BUTTON_HOST) || hostBlocked(host)) return;
34
+ const el = copyChild(host);
35
+ if (!el) return;
36
+ if (e.detail) origins.set(el, { x: e.clientX, y: e.clientY });
37
+ else origins.delete(el);
38
+ el.activate();
39
+ };
40
+ const menuselect = (e) => {
41
+ const host = hostFor(e);
42
+ if (!host?.matches(MENU_HOST) || hostBlocked(host)) return;
43
+ copyChild(host)?.activate();
44
+ };
45
+ doc.addEventListener("pointerdown", pointerdown, true);
46
+ doc.addEventListener("keydown", keydown, true);
47
+ doc.addEventListener("click", click, true);
48
+ doc.addEventListener("menuselect", menuselect, true);
49
+ const delegation = {
50
+ readers: /* @__PURE__ */ new Set(),
51
+ origins,
52
+ dispose: () => {
53
+ doc.removeEventListener("pointerdown", pointerdown, true);
54
+ doc.removeEventListener("keydown", keydown, true);
55
+ doc.removeEventListener("click", click, true);
56
+ doc.removeEventListener("menuselect", menuselect, true);
57
+ delete doc[COPY_DELEGATION];
58
+ }
59
+ };
60
+ doc[COPY_DELEGATION] = delegation;
61
+ return delegation;
62
62
  }
63
63
  const FEEDBACK_MS = 900;
64
64
  const COPY_FEEDBACK_TEMPLATE = typeof document === "undefined" ? void 0 : (() => {
65
65
  const template = document.createElement("template");
66
- const style = document.createElement("style");
67
- style.textContent = `
68
- .feedback {
69
- position: fixed;
70
- margin: 0;
71
- padding: 0;
72
- border: 0;
73
- inset: auto;
74
- background: none;
75
- overflow: visible;
76
- pointer-events: none;
77
- display: inline-flex;
78
- align-items: center;
79
- gap: 4px;
80
- box-sizing: border-box;
81
- color: var(--text-2-success);
82
- font-family: var(--sans-serif);
83
- font-size: 13px;
84
- line-height: 16px;
85
- font-weight: 500;
86
- white-space: nowrap;
87
- --_feedback-y-from: calc(-100% - 10px);
88
- --_feedback-y-to: calc(-100% - 1.5em);
89
- transform: translate(var(--_feedback-x), var(--_feedback-y-from));
90
- }
91
- .feedback[data-placement="below"] {
92
- --_feedback-y-from: 10px;
93
- --_feedback-y-to: 1.5em;
94
- }
95
- .feedback[data-measure-end] {
96
- transform: translate(var(--_feedback-x), var(--_feedback-y-to));
97
- }
98
- .feedback:not(:popover-open) { display: none; }
99
- .feedback[data-show] { animation: a-copy-feedback-rise ${FEEDBACK_MS}ms ease-out forwards; }
100
- @keyframes a-copy-feedback-rise {
101
- from { opacity: 1; transform: translate(var(--_feedback-x), var(--_feedback-y-from)); }
102
- to { opacity: 0; transform: translate(var(--_feedback-x), var(--_feedback-y-to)); }
103
- }
104
- `;
105
66
  const feedback = document.createElement("div");
106
67
  feedback.className = "feedback";
107
68
  feedback.part.add("feedback");
@@ -113,25 +74,50 @@ const COPY_FEEDBACK_TEMPLATE = typeof document === "undefined" ? void 0 : (() =>
113
74
  const label = document.createElement("span");
114
75
  label.className = "label";
115
76
  feedback.append(icon, label);
116
- template.content.append(style, feedback);
77
+ template.content.append(feedback);
117
78
  return template;
118
79
  })();
119
80
  class ACopyElement extends HTMLElementBase {
120
81
  #feedback;
121
82
  #feedbackLabel;
122
83
  #feedbackTimer;
84
+ #timerView;
85
+ #delegation;
86
+ #connectedDocument;
87
+ #generation = 0;
88
+ #completion;
89
+ #animation;
90
+ #motion;
91
+ #reconnectOrigin;
123
92
  connectedCallback() {
124
- installCopyDelegation(this.doc);
93
+ this.#delegation = copyDelegation(this.doc);
94
+ this.#connectedDocument = this.doc;
95
+ this.#delegation.readers.add(this);
96
+ if (this.#reconnectOrigin?.doc === this.doc && this.#reconnectOrigin.origin) {
97
+ this.#delegation.origins.set(this, this.#reconnectOrigin.origin);
98
+ }
99
+ this.#reconnectOrigin = void 0;
125
100
  this.addEventListener("copydone", this.#onCopyDone);
126
101
  }
127
102
  /** Run the copy for the activated host. Called from the delegated click /
128
103
  * menuselect handlers; the confirmation follows a successful `copydone`. */
129
104
  activate() {
130
- runCopy(this);
105
+ const generation = this.#generation;
106
+ const origin = this.#delegation?.origins.get(this);
107
+ this.#delegation?.origins.delete(this);
108
+ runCopy(this, (ok) => {
109
+ this.#completion = { current: this.isConnected && generation === this.#generation, origin };
110
+ try {
111
+ this.dispatchEvent(new this.view.CustomEvent("copydone", { detail: { ok } }));
112
+ } finally {
113
+ this.#completion = void 0;
114
+ }
115
+ });
131
116
  }
132
117
  #onCopyDone = (e) => {
133
- const origin = pointerOrigins.get(this);
134
- pointerOrigins.delete(this);
118
+ if (e.target !== this || this.#completion?.current === false || !this.isConnected) return;
119
+ const origin = this.#completion ? this.#completion.origin : this.#delegation?.origins.get(this);
120
+ if (!this.#completion) this.#delegation?.origins.delete(this);
135
121
  if (!this.hasAttribute("toast")) return;
136
122
  if (!e.detail?.ok) return;
137
123
  const host = this.closest(ANY_HOST);
@@ -154,38 +140,73 @@ class ACopyElement extends HTMLElementBase {
154
140
  if (origin) {
155
141
  feedback.style.left = `${origin.x}px`;
156
142
  feedback.style.top = `${origin.y}px`;
157
- feedback.style.setProperty("--_feedback-x", "8px");
143
+ feedback.style.translate = "8px 0";
158
144
  belowTop = origin.y;
159
145
  } else {
160
146
  const rect = host.getBoundingClientRect();
161
147
  const rtl = this.view.getComputedStyle(host).direction === "rtl";
162
148
  feedback.style.left = `${rtl ? rect.right - 12 : rect.left + 12}px`;
163
149
  feedback.style.top = `${rect.top}px`;
164
- feedback.style.setProperty("--_feedback-x", rtl ? "-100%" : "0");
150
+ feedback.style.translate = rtl ? "-100% 0" : "0 0";
165
151
  belowTop = rect.bottom;
166
152
  }
167
- clearTimeout(this.#feedbackTimer);
168
- feedback.removeAttribute("data-show");
169
- feedback.removeAttribute("data-placement");
170
- if (feedback.matches(":popover-open")) feedback.hidePopover();
153
+ if (!this.#motion) {
154
+ const styles = this.view.getComputedStyle(feedback);
155
+ const motion = {
156
+ opacity: [styles.getPropertyValue("--_copy-opacity-from").trim(), styles.getPropertyValue("--_copy-opacity-to").trim()],
157
+ easing: styles.getPropertyValue("--_copy-easing").trim(),
158
+ above: [styles.getPropertyValue("--_copy-above-from").trim(), styles.getPropertyValue("--_copy-above-to").trim()],
159
+ below: [styles.getPropertyValue("--_copy-below-from").trim(), styles.getPropertyValue("--_copy-below-to").trim()]
160
+ };
161
+ if (![...motion.opacity, ...motion.above, ...motion.below, motion.easing].every(Boolean)) return;
162
+ this.#motion = motion;
163
+ }
164
+ this.#clearFeedback();
171
165
  feedback.showPopover();
172
- feedback.setAttribute("data-measure-end", "");
173
- const crossesTopEdge = feedback.getBoundingClientRect().top < 0;
174
- feedback.removeAttribute("data-measure-end");
175
- if (crossesTopEdge) {
176
- feedback.setAttribute("data-placement", "below");
177
- feedback.style.top = `${belowTop}px`;
166
+ feedback.style.transform = this.#motion.above[1];
167
+ const below = feedback.getBoundingClientRect().top < 0;
168
+ if (below) feedback.style.top = `${belowTop}px`;
169
+ const transforms = below ? this.#motion.below : this.#motion.above;
170
+ feedback.style.transform = transforms[0];
171
+ if (!this.#animation) {
172
+ this.#animation = feedback.animate({ opacity: this.#motion.opacity, transform: transforms }, {
173
+ duration: FEEDBACK_MS,
174
+ easing: this.#motion.easing,
175
+ fill: "forwards"
176
+ });
177
+ } else {
178
+ this.#animation.effect.setKeyframes({ opacity: this.#motion.opacity, transform: transforms });
179
+ this.#animation.play();
178
180
  }
179
- void feedback.offsetWidth;
180
- feedback.setAttribute("data-show", "");
181
- this.#feedbackTimer = setTimeout(() => {
182
- feedback.removeAttribute("data-show");
183
- if (feedback.matches(":popover-open")) feedback.hidePopover();
184
- }, FEEDBACK_MS);
181
+ this.#animation.currentTime = 0;
182
+ this.#timerView = this.view;
183
+ this.#feedbackTimer = this.#timerView.setTimeout(() => this.#clearFeedback(), FEEDBACK_MS);
184
+ }
185
+ #clearFeedback() {
186
+ if (this.#feedbackTimer != null) this.#timerView?.clearTimeout(this.#feedbackTimer);
187
+ this.#feedbackTimer = void 0;
188
+ this.#timerView = void 0;
189
+ this.#animation?.cancel();
190
+ if (this.#feedback?.matches(":popover-open")) this.#feedback.hidePopover();
191
+ }
192
+ adoptedCallback() {
193
+ this.#animation?.cancel();
194
+ this.#animation = void 0;
195
+ this.#motion = void 0;
196
+ this.#reconnectOrigin = void 0;
197
+ this.#connectedDocument = void 0;
185
198
  }
186
199
  disconnectedCallback() {
187
- clearTimeout(this.#feedbackTimer);
188
- pointerOrigins.delete(this);
200
+ this.#generation++;
201
+ this.#clearFeedback();
202
+ const pending = this.#reconnectOrigin = { doc: this.#connectedDocument, origin: this.#delegation?.origins.get(this) };
203
+ queueMicrotask(() => {
204
+ if (this.#reconnectOrigin === pending) this.#reconnectOrigin = void 0;
205
+ });
206
+ this.#delegation?.origins.delete(this);
207
+ this.#delegation?.readers.delete(this);
208
+ if (this.#delegation?.readers.size === 0) this.#delegation.dispose();
209
+ this.#delegation = void 0;
189
210
  this.removeEventListener("copydone", this.#onCopyDone);
190
211
  }
191
212
  }
@@ -1 +1 @@
1
- @layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-dialog{--dialog-bg: var(--bg-1);--dialog-text: var(--text-2);--dialog-border: light-dark( color-mix(in oklch, black 9%, transparent), color-mix(in oklch, white 14%, transparent) );--dialog-radius: 10px;--dialog-shadow: inset 0 0 0 1px var(--dialog-border), 0 1px 3px color-mix(in oklch, black 10%, transparent), 0 12px 32px color-mix(in oklch, black 22%, transparent), 0 28px 64px color-mix(in oklch, black 14%, transparent);--dialog-overlay: light-dark( color-mix(in oklch, black 42%, transparent), color-mix(in oklch, black 62%, transparent) );display:contents}a-dialog[round]{--dialog-round: var(--dialog-radius, 10px);@supports (border-radius: attr(probe type(<length>),1px)){--dialog-round: attr(round type(<length>), var(--dialog-radius, 10px))}}a-dialog:not(:defined){display:none}.dark a-dialog{--dialog-shadow: inset 0 0 0 1px var(--dialog-border), 0 1px 3px color-mix(in oklch, black 40%, transparent), 0 12px 32px color-mix(in oklch, black 55%, transparent), 0 28px 64px color-mix(in oklch, black 40%, transparent)}@media(forced-colors:active){a-dialog{--dialog-outline: 1px solid CanvasText;--dialog-shadow: none}}}a-dialog>p:last-child,a-dialog>:not([slot])>p:last-child{margin-block-end:0}
1
+ @layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-dialog{--dialog-bg: var(--bg-1);--dialog-text: var(--text-2);--dialog-border: light-dark( color-mix(in oklch, black 9%, transparent), color-mix(in oklch, white 14%, transparent) );--dialog-radius: 10px;--dialog-shadow: inset 0 0 0 1px var(--dialog-border), 0 1px 3px color-mix(in oklch, black 10%, transparent), 0 12px 32px color-mix(in oklch, black 22%, transparent), 0 28px 64px color-mix(in oklch, black 14%, transparent);--dialog-overlay: light-dark( color-mix(in oklch, black 42%, transparent), color-mix(in oklch, black 62%, transparent) );display:contents}a-dialog::part(dialog){--_dur: .2s;--_r: var(--dialog-round, var(--dialog-radius, 10px));position:fixed;box-sizing:border-box;padding:0;border:var(--dialog-outline, none);max-width:calc(100vw - 2 * var(--dialog-margin, 32px));max-height:calc(100dvh - 2 * var(--dialog-margin, 32px));width:var(--dialog-width, 480px);height:var(--dialog-height, fit-content);overflow:visible;color:var(--dialog-text, inherit);background:var(--dialog-bg, #fff);border-radius:var(--_r);box-shadow:var(--dialog-shadow, inset 0 0 0 1px color-mix(in oklch, black 8%, transparent), 0 10px 38px color-mix(in oklch, black 28%, transparent));flex-direction:column}a-dialog::part(dialog):modal{display:flex}a-dialog::part(dialog):open{display:flex}a-dialog::part(dialog):focus,a-dialog::part(dialog):focus-visible{outline:none}a-dialog::part(dialog)::backdrop{--_overlay: var(--dialog-overlay, color-mix(in oklch, black 40%, transparent));background:var(--_overlay)}a-dialog{--_enter-from: scale(.97)}a-dialog[position=left]{--_enter-from: translateX(-100%)}a-dialog[position=right]{--_enter-from: translateX(100%)}a-dialog[position=top]{--_enter-from: translateY(-100%)}a-dialog[position=bottom]{--_enter-from: translateY(100%)}@media(prefers-reduced-motion:no-preference){@supports selector(a-dialog::part(dialog):open){a-dialog::part(dialog){opacity:0;transform:var(--_enter-from);transition:opacity var(--_dur) ease,transform var(--_dur) ease,overlay var(--_dur) ease allow-discrete,display var(--_dur) ease allow-discrete}a-dialog::part(dialog):open{opacity:1;transform:none}@starting-style{a-dialog::part(dialog):open{opacity:0;transform:var(--_enter-from)}}}@supports selector(a-dialog::part(dialog):modal::backdrop){a-dialog::part(dialog)::backdrop{background:transparent;transition:background var(--_dur) ease,overlay var(--_dur) ease allow-discrete,display var(--_dur) ease allow-discrete}a-dialog::part(dialog):modal::backdrop{background:var(--_overlay)}@starting-style{a-dialog::part(dialog):modal::backdrop{background:transparent}}}}a-dialog[position=left]::part(dialog),a-dialog[position=right]::part(dialog){width:var(--dialog-width, 380px);max-width:calc(100vw - var(--dialog-margin, 32px));height:100dvh;max-height:100dvh;border-radius:0}a-dialog[position=left]::part(dialog){margin:0 auto 0 0}a-dialog[position=right]::part(dialog){margin:0 0 0 auto}a-dialog[position=top]::part(dialog),a-dialog[position=bottom]::part(dialog){width:100vw;max-width:100vw;height:var(--dialog-height, fit-content);max-height:calc(100dvh - var(--dialog-margin, 32px));border-radius:0}a-dialog[position=top]::part(dialog){margin:0 auto auto}a-dialog[position=bottom]::part(dialog){margin:auto auto 0}a-dialog[position=fullscreen]::part(dialog){width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border-radius:0}a-dialog[round]::part(dialog){border-radius:var(--_r)}a-dialog[round=top]::part(dialog){border-radius:var(--_r) var(--_r) 0 0}a-dialog[round=bottom]::part(dialog){border-radius:0 0 var(--_r) var(--_r)}a-dialog[round=left]::part(dialog){border-radius:var(--_r) 0 0 var(--_r)}a-dialog[round=right]::part(dialog){border-radius:0 var(--_r) var(--_r) 0}a-dialog::part(header){display:none;flex:0 0 auto;padding:var(--dialog-header-padding, 18px 20px 8px);overflow:clip;overflow-wrap:anywhere;font-size:17px;font-weight:560;line-height:24px}a-dialog:state(has-header)::part(header){display:block}a-dialog:has(>[slot=close])::part(header){padding-inline-end:52px}a-dialog::part(body){display:block;flex:1 1 auto;min-height:0;overflow:auto;padding:var(--dialog-body-padding, 8px 20px 12px)}a-dialog:has(>[slot=close]):not(:state(has-header))::part(body){padding-inline-end:52px}a-dialog::part(footer){display:none;flex:0 0 auto;padding:var(--dialog-footer-padding, 8px 20px 18px)}a-dialog:state(has-footer)::part(footer){display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap}a-dialog::part(close){display:block;position:absolute;inset-block-start:10px;inset-inline-end:10px;z-index:1}a-dialog>a-dialog-close[slot=close],a-dialog>a-dialog-footer[slot=footer]{display:contents}a-dialog[round]{--dialog-round: var(--dialog-radius, 10px);@supports (border-radius: attr(probe type(<length>),1px)){--dialog-round: attr(round type(<length>), var(--dialog-radius, 10px))}}a-dialog:not(:defined){display:none}.dark a-dialog{--dialog-shadow: inset 0 0 0 1px var(--dialog-border), 0 1px 3px color-mix(in oklch, black 40%, transparent), 0 12px 32px color-mix(in oklch, black 55%, transparent), 0 28px 64px color-mix(in oklch, black 40%, transparent)}@media(forced-colors:active){a-dialog{--dialog-outline: 1px solid CanvasText;--dialog-shadow: none}}}a-dialog>p:last-child,a-dialog>:not([slot])>p:last-child{margin-block-end:0}
@@ -5,8 +5,8 @@ export declare class ADialogElement extends HTMLElementBase {
5
5
  static observedAttributes: string[];
6
6
  private dialog;
7
7
  private headerSlot;
8
+ private bodySlot;
8
9
  private footerSlot;
9
- private closeSlot;
10
10
  constructor();
11
11
  connectedCallback(): void;
12
12
  disconnectedCallback(): void;