@visitwonders/assembly 0.8.1 → 0.10.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.
@@ -1,4 +1,5 @@
1
1
  import Component from '@glimmer/component';
2
+ import type RouterService from '@ember/routing/router-service';
2
3
  export interface LinkSignature {
3
4
  Element: HTMLAnchorElement;
4
5
  Args: {
@@ -19,7 +20,16 @@ export interface LinkSignature {
19
20
  default: [];
20
21
  };
21
22
  }
23
+ /**
24
+ * Link renders a styled anchor. When `@href` is supplied it's used directly;
25
+ * otherwise `@route` (with optional `@model`, `@models`, `@query`) is resolved
26
+ * to a URL via `router.urlFor`. In both cases the rendered element is a plain
27
+ * `<a href>` — the consuming app's Router must apply the `@properLinks`
28
+ * decorator from `ember-primitives/proper-links` so same-origin route links
29
+ * are routed through Ember instead of triggering a full-page navigation.
30
+ */
22
31
  export default class Link extends Component<LinkSignature> {
23
- get query(): Record<string, unknown>;
32
+ router: RouterService;
33
+ get href(): string | undefined;
24
34
  }
25
35
  //# sourceMappingURL=link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/action/link.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;QACjC,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;KACzC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,SAAS,CAAC,aAAa,CAAC;IACxD,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEnC;CA2FF"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/action/link.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,aAAa,MAAM,+BAA+B,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;QACjC,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;KACzC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,SAAS,CAAC,aAAa,CAAC;IACvC,MAAM,EAAE,aAAa,CAAC;IAEvC,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAyB7B;CA4BF"}
@@ -24,8 +24,8 @@ export interface GridSignature {
24
24
  }
25
25
  export default class Grid extends Component<GridSignature> {
26
26
  static Item: import("@ember/component/template-only").TOC<import('./grid-item').GridItemSignature>;
27
- get columns(): "auto" | ColumnCount | (string & {});
28
- get rows(): "auto" | RowCount | (string & {}) | undefined;
27
+ get columns(): (string & {}) | "auto" | ColumnCount;
28
+ get rows(): (string & {}) | "auto" | RowCount | undefined;
29
29
  get minChildWidth(): MinChildWidth;
30
30
  get gap(): GapToken;
31
31
  get gapX(): GapToken;
@@ -17,7 +17,9 @@ export interface BlanketSignature {
17
17
  animated?: boolean;
18
18
  /** Custom z-index override */
19
19
  zIndex?: number;
20
- /** Custom container element for portal (defaults to document.body) */
20
+ /** Custom container element for portal (defaults to the nearest
21
+ * `ember-primitives__portal-targets__modal` target rendered by
22
+ * `<PortalTargets />`) */
21
23
  container?: HTMLElement;
22
24
  };
23
25
  Blocks: {
@@ -39,7 +41,7 @@ export default class Blanket extends Component<BlanketSignature> {
39
41
  get lockScroll(): boolean;
40
42
  get opacity(): BlanketOpacity;
41
43
  get animated(): boolean;
42
- get destinationElement(): HTMLElement;
44
+ get portalTarget(): HTMLElement | string;
43
45
  get zIndexStyle(): string | undefined;
44
46
  get shouldRender(): boolean;
45
47
  get dataState(): 'visible' | 'hidden';
@@ -1 +1 @@
1
- {"version":3,"file":"blanket.d.ts","sourceRoot":"","sources":["../../src/overlay/blanket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAS3C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,qCAAqC;QACrC,OAAO,EAAE,OAAO,CAAC;QAEjB,uDAAuD;QACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAErB,qCAAqC;QACrC,YAAY,CAAC,EAAE,OAAO,CAAC;QAEvB,oCAAoC;QACpC,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB,mCAAmC;QACnC,OAAO,CAAC,EAAE,cAAc,CAAC;QAEzB,6BAA6B;QAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;QAEnB,8BAA8B;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,sEAAsE;QACtE,SAAS,CAAC,EAAE,WAAW,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAMD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IAC9D;;;;OAIG;IACM,OAAO,CAAC,mBAAmB,CAAS;IAE7C;;OAEG;IACH,OAAO,CAAC,eAAe,CAAkC;IAMzD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,kBAAkB,IAAI,WAAW,CAEpC;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAKpC;IAED,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,SAAS,IAAI,SAAS,GAAG,QAAQ,CAGpC;IAMD,WAAW,UAAW,UAAU,KAAG,IAAI,CASrC;IAEF,kBAAkB,QAAO,IAAI,CAK3B;IAMF;;;;OAIG;IACH,eAAe;;;;yBAIO,OAAO;0BAAY,OAAO;;;;OAiB9C;IAEF;;;OAGG;IACH,UAAU;;;;yBAIY,OAAO;;;;OA0B3B;CA2CH"}
1
+ {"version":3,"file":"blanket.d.ts","sourceRoot":"","sources":["../../src/overlay/blanket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAW3C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,qCAAqC;QACrC,OAAO,EAAE,OAAO,CAAC;QAEjB,uDAAuD;QACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAErB,qCAAqC;QACrC,YAAY,CAAC,EAAE,OAAO,CAAC;QAEvB,oCAAoC;QACpC,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB,mCAAmC;QACnC,OAAO,CAAC,EAAE,cAAc,CAAC;QAEzB,6BAA6B;QAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;QAEnB,8BAA8B;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB;;kCAE0B;QAC1B,SAAS,CAAC,EAAE,WAAW,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAMD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IAC9D;;;;OAIG;IACM,OAAO,CAAC,mBAAmB,CAAS;IAE7C;;OAEG;IACH,OAAO,CAAC,eAAe,CAAkC;IAMzD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,YAAY,IAAI,WAAW,GAAG,MAAM,CAEvC;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAKpC;IAED,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,SAAS,IAAI,SAAS,GAAG,QAAQ,CAGpC;IAMD,WAAW,UAAW,UAAU,KAAG,IAAI,CASrC;IAEF,kBAAkB,QAAO,IAAI,CAK3B;IAMF;;;;OAIG;IACH,eAAe;;;;yBAIO,OAAO;0BAAY,OAAO;;;;OAiB9C;IAEF;;;OAGG;IACH,UAAU;;;;yBAIY,OAAO;;;;OA0B3B;CA4CH"}
@@ -32,7 +32,9 @@ export interface DrawerSignature {
32
32
  preventClose?: boolean;
33
33
  /** Whether to show the blanket backdrop */
34
34
  showBlanket?: boolean;
35
- /** Custom container element for portal */
35
+ /** Custom container element for portal (defaults to the nearest
36
+ * `ember-primitives__portal-targets__modal` target rendered by
37
+ * `<PortalTargets />`) */
36
38
  container?: HTMLElement;
37
39
  };
38
40
  Blocks: {
@@ -114,7 +116,7 @@ export default class Drawer extends Component<DrawerSignature> {
114
116
  get showBlanket(): boolean;
115
117
  get closeOnBackdropClick(): boolean;
116
118
  get closeOnEscape(): boolean;
117
- get destinationElement(): HTMLElement;
119
+ get portalTarget(): HTMLElement | string;
118
120
  get shouldRender(): boolean;
119
121
  get dataState(): 'open' | 'closed';
120
122
  setOpen: (value: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/overlay/drawer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/overlay/drawer.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,19 @@ export { default as Modal } from './modal';
4
4
  export { default as Popover } from './popover';
5
5
  export { default as Toast } from './toast';
6
6
  export { default as Tooltip, TooltipProvider } from './tooltip';
7
+ /**
8
+ * Re-export of ember-primitives' `<PortalTargets />` so consumers can
9
+ * mount overlay portal destinations without taking a direct dependency
10
+ * on `ember-primitives`. Render once in the application template, e.g.
11
+ *
12
+ * ```gts
13
+ * import { PortalTargets } from '@visitwonders/assembly/overlay';
14
+ *
15
+ * <template>
16
+ * {{outlet}}
17
+ * <PortalTargets />
18
+ * </template>
19
+ * ```
20
+ */
21
+ export { default as PortalTargets } from 'ember-primitives/components/portal-targets';
7
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4CAA4C,CAAC"}
@@ -27,7 +27,9 @@ export interface ModalSignature {
27
27
  size?: ModalSize;
28
28
  /** ARIA role - use alertdialog for destructive confirmations */
29
29
  role?: ModalRole;
30
- /** Custom container element for portal */
30
+ /** Custom container element for portal (defaults to the nearest
31
+ * `ember-primitives__portal-targets__modal` target rendered by
32
+ * `<PortalTargets />`) */
31
33
  container?: HTMLElement;
32
34
  };
33
35
  Blocks: {
@@ -107,7 +109,7 @@ export default class Modal extends Component<ModalSignature> {
107
109
  get role(): ModalRole;
108
110
  get closeOnBackdropClick(): boolean;
109
111
  get closeOnEscape(): boolean;
110
- get destinationElement(): HTMLElement;
112
+ get portalTarget(): HTMLElement | string;
111
113
  get shouldRender(): boolean;
112
114
  get dataState(): 'open' | 'closed';
113
115
  setOpen: (value: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/overlay/modal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/overlay/modal.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAK1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAYrD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEjD,UAAU,YAAY;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,4BAA4B;QAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;QAEf,wCAAwC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC;QAEtB,uCAAuC;QACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;QAEvC,uCAAuC;QACvC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAE/B,iCAAiC;QACjC,aAAa,CAAC,EAAE,OAAO,CAAC;QAExB,4DAA4D;QAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;QAEvB,iBAAiB;QACjB,IAAI,CAAC,EAAE,SAAS,CAAC;QAEjB,gEAAgE;QAChE,IAAI,CAAC,EAAE,SAAS,CAAC;QAEjB;;kCAE0B;QAC1B,SAAS,CAAC,EAAE,WAAW,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,aAAa,CAAC,OAAO,WAAW,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,EAAE,aAAa,CAAC,OAAO,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,EAAE,aAAa,CAAC,OAAO,WAAW,EAAE,KAAK,CAAC,CAAC;gBACjD,KAAK,EAAE,aAAa,CAAC,OAAO,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,EAAE,OAAO,CAAC;gBAChB,KAAK,EAAE,MAAM,IAAI,CAAC;aACnB;SACF,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,GAAG,EAAE,YAAY,CAAC;QAClB,6CAA6C;QAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,GAAG,EAAE,YAAY,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,GAAG,EAAE,YAAY,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE;QACJ,GAAG,EAAE,YAAY,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAyBD,cAAM,WAAY,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IACvD,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED,IAAI,oBAAoB,IAAI,OAAO,CAElC;IAED,WAAW,UAAW,UAAU,KAAG,IAAI,CAGrC;CAqDH;AAED,QAAA,MAAM,SAAS,EAAE,GAAG,CAAC,kBAAkB,CAWrC,CAAC;AAEH,QAAA,MAAM,WAAW,EAAE,GAAG,CAAC,oBAAoB,CAWzC,CAAC;AAEH,cAAM,UAAW,SAAQ,SAAS,CAAC,mBAAmB,CAAC;IACrD,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED,WAAW,UAAW,UAAU,KAAG,IAAI,CAGrC;CAgBH;AAMD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,mBAAmB,CAAS;IAE7C,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,qBAAqB,CAA4B;IAEzD,OAAO,SAA+B;IAMtC,IAAI,cAAc,IAAI,OAAO,CAK5B;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAEhC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,IAAI,oBAAoB,IAAI,OAAO,CAGlC;IAED,IAAI,aAAa,IAAI,OAAO,CAG3B;IAED,IAAI,YAAY,IAAI,WAAW,GAAG,MAAM,CAEvC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,QAAQ,CAEjC;IAMD,OAAO,UAAW,OAAO,KAAG,IAAI,CAK9B;IAEF,SAAS,QAAO,IAAI,CAElB;IAEF,UAAU,QAAO,IAAI,CAEnB;IAEF,mBAAmB,QAAO,IAAI,CAI5B;IAMF,eAAe;;;;yBAIO,OAAO;;;;OAW3B;IAEF,UAAU;;;;;;OAwFP;IAEH,kBAAkB,QAAO,IAAI,CAI3B;IAMF,IAAI,OAAO,IAAI,YAAY,CAM1B;CAgEF;AAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import Component from '@glimmer/component';
2
2
  import type { WithBoundArgs } from '@glint/template';
3
- import { type Placement, type OffsetOptions, type FlipOptions, type ShiftOptions } from '@floating-ui/dom';
3
+ import { type Placement, type OffsetOptions, type FlipOptions, type ShiftOptions, type Middleware } from '@floating-ui/dom';
4
4
  export type PopoverSide = 'top' | 'right' | 'bottom' | 'left';
5
5
  export type PopoverAlign = 'start' | 'center' | 'end';
6
6
  export type PopoverTriggerMode = 'click' | 'hover' | 'focus' | 'manual';
@@ -103,6 +103,7 @@ export interface PopoverCloseSignature {
103
103
  }
104
104
  declare class PopoverTrigger extends Component<PopoverTriggerSignature> {
105
105
  get ctx(): PopoverContext;
106
+ private readonly register;
106
107
  registerElement: import("ember-modifier").FunctionBasedModifier<{
107
108
  Args: {
108
109
  Positional: unknown[];
@@ -120,16 +121,9 @@ declare class PopoverTrigger extends Component<PopoverTriggerSignature> {
120
121
  get ariaControls(): string | undefined;
121
122
  }
122
123
  declare class PopoverContent extends Component<PopoverContentSignature> {
123
- arrowElement: HTMLElement | null;
124
- registerArrow: import("ember-modifier").FunctionBasedModifier<{
125
- Args: {
126
- Positional: unknown[];
127
- Named: import("ember-modifier/-private/signature").EmptyObject;
128
- };
129
- Element: HTMLElement;
130
- }>;
131
- get destinationElement(): HTMLElement;
124
+ portalTarget: "ember-primitives__portal-targets__popover";
132
125
  get ctx(): PopoverContext;
126
+ get triggerElement(): HTMLElement;
133
127
  get side(): PopoverSide;
134
128
  get align(): PopoverAlign;
135
129
  get sideOffset(): number;
@@ -143,21 +137,22 @@ declare class PopoverContent extends Component<PopoverContentSignature> {
143
137
  get flipOptions(): FlipOptions | undefined;
144
138
  get shiftOptions(): ShiftOptions | undefined;
145
139
  get dataState(): string;
146
- applyPositioning: import("ember-modifier").FunctionBasedModifier<{
140
+ private arrowElement;
141
+ registerArrow: import("ember-modifier").FunctionBasedModifier<{
147
142
  Args: {
148
143
  Positional: unknown[];
149
- Named: {
150
- trigger: HTMLElement | null;
151
- placement: Placement;
152
- offsetOptions: OffsetOptions;
153
- flipOptions?: FlipOptions;
154
- shiftOptions?: ShiftOptions;
155
- arrowElement?: HTMLElement | null;
156
- onRegister?: (element: HTMLElement | null) => void;
157
- };
144
+ Named: import("ember-modifier/-private/signature").EmptyObject;
145
+ };
146
+ Element: HTMLElement;
147
+ }>;
148
+ registerContentElement: import("ember-modifier").FunctionBasedModifier<{
149
+ Args: {
150
+ Positional: unknown[];
151
+ Named: import("ember-modifier/-private/signature").EmptyObject;
158
152
  };
159
153
  Element: HTMLElement;
160
154
  }>;
155
+ get middleware(): Middleware[];
161
156
  handleMouseEnter: () => void;
162
157
  handleMouseLeave: () => void;
163
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/overlay/popover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/overlay/popover.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ export default class Toast extends Component<ToastSignature> {
40
40
  get gap(): number;
41
41
  get offset(): number;
42
42
  get visibleToasts(): ToastData[];
43
- get destinationElement(): HTMLElement;
43
+ portalTarget: "ember-primitives__portal-targets__modal";
44
44
  get containerStyle(): string;
45
45
  handleDismiss: (id: string) => void;
46
46
  handleMouseEnter: (id: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/overlay/toast.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAI3C,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,YAAY,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EACV,KAAK,IAAI,SAAS,EAElB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,8BAA8B;QAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;QAEzB,0CAA0C;QAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,gDAAgD;QAChD,GAAG,CAAC,EAAE,MAAM,CAAC;QAEb,wDAAwD;QACxD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,KAAK,EAAE,SAAS,CAAC;QACjB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC,CAAC;CACH;AAiBD,cAAM,SAAU,SAAQ,SAAS,CAAC,kBAAkB,CAAC;IACnD,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,IAAI,IAAI,QAAQ,GAAG,SAAS,CAE/B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,aAAa,QAAO,IAAI,CAEtB;IAEF,gBAAgB,QAAO,IAAI,CAEzB;IAEF,gBAAgB,QAAO,IAAI,CAEzB;IAEF,iBAAiB,QAAO,IAAI,CAG1B;CAoFH;AAMD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS,CAAC,cAAc,CAAC;IACzC,KAAK,EAAE,YAAY,CAAC;IAErC,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,aAAa,IAAI,SAAS,EAAE,CAE/B;IAED,IAAI,kBAAkB,IAAI,WAAW,CAEpC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,aAAa,OAAQ,MAAM,KAAG,IAAI,CAEhC;IAEF,gBAAgB,OAAQ,MAAM,KAAG,IAAI,CAEnC;IAEF,gBAAgB,OAAQ,MAAM,KAAG,IAAI,CAEnC;IAGF,oBAAoB;;;;;;OAcjB;CAuCJ;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/overlay/toast.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAM3C,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,QAAQ,CAAC;AAGhB,OAAO,KAAK,YAAY,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EACV,KAAK,IAAI,SAAS,EAElB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,8BAA8B;QAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;QAEzB,0CAA0C;QAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,gDAAgD;QAChD,GAAG,CAAC,EAAE,MAAM,CAAC;QAEb,wDAAwD;QACxD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,KAAK,EAAE,SAAS,CAAC;QACjB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC,CAAC;CACH;AAiBD,cAAM,SAAU,SAAQ,SAAS,CAAC,kBAAkB,CAAC;IACnD,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,IAAI,IAAI,QAAQ,GAAG,SAAS,CAE/B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,aAAa,QAAO,IAAI,CAEtB;IAEF,gBAAgB,QAAO,IAAI,CAEzB;IAEF,gBAAgB,QAAO,IAAI,CAEzB;IAEF,iBAAiB,QAAO,IAAI,CAG1B;CAoFH;AAMD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS,CAAC,cAAc,CAAC;IACzC,KAAK,EAAE,YAAY,CAAC;IAErC,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,aAAa,IAAI,SAAS,EAAE,CAE/B;IAMD,YAAY,4CAAiB;IAE7B,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,aAAa,OAAQ,MAAM,KAAG,IAAI,CAEhC;IAEF,gBAAgB,OAAQ,MAAM,KAAG,IAAI,CAEnC;IAEF,gBAAgB,OAAQ,MAAM,KAAG,IAAI,CAEnC;IAGF,oBAAoB;;;;;;OAcjB;CAwCJ;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import Component from '@glimmer/component';
2
- import { type Placement, type OffsetOptions, type FlipOptions, type ShiftOptions } from '@floating-ui/dom';
2
+ import { type Placement, type OffsetOptions, type FlipOptions, type ShiftOptions, type Middleware } from '@floating-ui/dom';
3
3
  export type TooltipSide = 'top' | 'right' | 'bottom' | 'left';
4
4
  export type TooltipAlign = 'start' | 'center' | 'end';
5
5
  export interface TooltipProviderSignature {
@@ -102,6 +102,16 @@ export default class Tooltip extends Component<TooltipSignature> {
102
102
  get offsetOptions(): OffsetOptions;
103
103
  get flipOptions(): FlipOptions;
104
104
  get shiftOptions(): ShiftOptions;
105
+ get triggerAnchor(): HTMLElement;
106
+ private arrowElement;
107
+ registerArrow: import("ember-modifier").FunctionBasedModifier<{
108
+ Args: {
109
+ Positional: unknown[];
110
+ Named: import("ember-modifier/-private/signature").EmptyObject;
111
+ };
112
+ Element: HTMLElement;
113
+ }>;
114
+ get middleware(): Middleware[];
105
115
  setOpen: (value: boolean) => void;
106
116
  /**
107
117
  * Calculate the actual delay to use based on skip delay logic.
@@ -127,16 +137,10 @@ export default class Tooltip extends Component<TooltipSignature> {
127
137
  };
128
138
  Element: HTMLElement;
129
139
  }>;
130
- applyPositioning: import("ember-modifier").FunctionBasedModifier<{
140
+ registerContentElement: import("ember-modifier").FunctionBasedModifier<{
131
141
  Args: {
132
142
  Positional: unknown[];
133
- Named: {
134
- trigger: HTMLElement | null;
135
- placement: Placement;
136
- offsetOptions: OffsetOptions;
137
- flipOptions: FlipOptions;
138
- shiftOptions: ShiftOptions;
139
- };
143
+ Named: import("ember-modifier/-private/signature").EmptyObject;
140
144
  };
141
145
  Element: HTMLElement;
142
146
  }>;
@@ -147,7 +151,7 @@ export default class Tooltip extends Component<TooltipSignature> {
147
151
  handleContentMouseEnter: () => void;
148
152
  handleContentMouseLeave: () => void;
149
153
  handleKeyDown: (event: KeyboardEvent) => void;
150
- get destinationElement(): HTMLElement;
154
+ portalTarget: "ember-primitives__portal-targets__tooltip";
151
155
  get ariaDescribedBy(): string | undefined;
152
156
  }
153
157
  //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/overlay/tooltip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/overlay/tooltip.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,52 @@
1
1
  import "./link-css-7e63c457aec3ba475c3c05aac8b1e83d.css"
2
2
  import Component from '@glimmer/component';
3
- import { LinkTo } from '@ember/routing';
3
+ import { service } from '@ember/service';
4
4
  import { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
+ import { g, i } from 'decorator-transforms/runtime';
6
7
 
7
8
  ;
8
9
 
10
+ /**
11
+ * Link renders a styled anchor. When `@href` is supplied it's used directly;
12
+ * otherwise `@route` (with optional `@model`, `@models`, `@query`) is resolved
13
+ * to a URL via `router.urlFor`. In both cases the rendered element is a plain
14
+ * `<a href>` — the consuming app's Router must apply the `@properLinks`
15
+ * decorator from `ember-primitives/proper-links` so same-origin route links
16
+ * are routed through Ember instead of triggering a full-page navigation.
17
+ */
9
18
  class Link extends Component {
10
- get query() {
11
- return this.args.query ?? {};
19
+ static {
20
+ g(this.prototype, "router", [service]);
21
+ }
22
+ #router = (i(this, "router"), void 0);
23
+ get href() {
24
+ if (this.args.href !== undefined) {
25
+ return this.args.href;
26
+ }
27
+ const {
28
+ route,
29
+ model,
30
+ models,
31
+ query
32
+ } = this.args;
33
+ if (route === undefined) {
34
+ return undefined;
35
+ }
36
+ const options = query ? {
37
+ queryParams: query
38
+ } : undefined;
39
+ if (models) {
40
+ return options ? this.router.urlFor(route, ...models, options) : this.router.urlFor(route, ...models);
41
+ }
42
+ if (model !== undefined) {
43
+ return options ? this.router.urlFor(route, model, options) : this.router.urlFor(route, model);
44
+ }
45
+ return options ? this.router.urlFor(route, options) : this.router.urlFor(route);
12
46
  }
13
47
  static {
14
- setComponentTemplate(precompileTemplate("\n{{#if @href}}\n <a href={{@href}} target={{if @external \"_blank\"}} rel={{if @external \"noopener noreferrer\"}} class=\"link_e4aeb20a2\" data-size={{@size}} data-weight={{@weight}} data-color={{@color}} data-block={{if @isBlock \"true\"}} data-variant={{@variant}} data-underline={{@underline}} ...attributes>\n {{yield}}\n </a>\n{{else if @models}}\n <LinkTo @route={{@route}} @models={{@models}} @query={{this.query}} class=\"link_e4aeb20a2\" data-size={{@size}} data-weight={{@weight}} data-color={{@color}} data-block={{if @isBlock \"true\"}} data-variant={{@variant}} data-underline={{@underline}} ...attributes>\n {{yield}}\n </LinkTo>\n{{else if @model}}\n <LinkTo @route={{@route}} @model={{@model}} @query={{this.query}} class=\"link_e4aeb20a2\" data-size={{@size}} data-weight={{@weight}} data-color={{@color}} data-block={{if @isBlock \"true\"}} data-variant={{@variant}} data-underline={{@underline}} ...attributes>\n {{yield}}\n </LinkTo>\n{{else}}\n <LinkTo @route={{@route}} @query={{this.query}} class=\"link_e4aeb20a2\" data-size={{@size}} data-weight={{@weight}} data-color={{@color}} data-block={{if @isBlock \"true\"}} data-variant={{@variant}} data-underline={{@underline}} ...attributes>\n {{yield}}\n </LinkTo>\n{{/if}}", {
15
- strictMode: true,
16
- scope: () => ({
17
- LinkTo
18
- })
48
+ setComponentTemplate(precompileTemplate("\n<a href={{this.href}} target={{if @external \"_blank\"}} rel={{if @external \"noopener noreferrer\"}} class=\"link_e4aeb20a2\" data-size={{@size}} data-weight={{@weight}} data-color={{@color}} data-block={{if @isBlock \"true\"}} data-variant={{@variant}} data-underline={{@underline}} ...attributes>\n {{yield}}\n</a>", {
49
+ strictMode: true
19
50
  }), this);
20
51
  }
21
52
  }
@@ -3,6 +3,8 @@ import Component from '@glimmer/component';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { on } from '@ember/modifier';
5
5
  import { modifier } from 'ember-modifier';
6
+ import { Portal } from 'ember-primitives/components/portal';
7
+ import { TARGETS } from 'ember-primitives/components/portal-targets';
6
8
  import { precompileTemplate } from '@ember/template-compilation';
7
9
  import { setComponentTemplate } from '@ember/component';
8
10
  import { g, i } from 'decorator-transforms/runtime';
@@ -43,8 +45,8 @@ class Blanket extends Component {
43
45
  get animated() {
44
46
  return this.args.animated ?? true;
45
47
  }
46
- get destinationElement() {
47
- return this.args.container ?? document.body;
48
+ get portalTarget() {
49
+ return this.args.container ?? TARGETS.modal;
48
50
  }
49
51
  get zIndexStyle() {
50
52
  if (this.args.zIndex !== undefined) {
@@ -126,9 +128,10 @@ class Blanket extends Component {
126
128
  // Template
127
129
  // ============================================================================
128
130
  static {
129
- setComponentTemplate(precompileTemplate("{{!-- Track visibility changes to manage exit animation state --}}\n<span hidden {{this.trackVisibility visible=@visible animated=this.animated}} data-test-blanket-tracker></span>\n\n{{#if this.shouldRender}}\n {{#in-element this.destinationElement insertBefore=null}}\n {{!-- template-lint-disable no-invalid-interactive --}}\n <div class=\"blanket_e68ef6998\" aria-hidden=\"true\" data-opacity={{this.opacity}} data-animated={{if this.animated \"true\" \"false\"}} data-state={{this.dataState}} style={{this.zIndexStyle}} {{on \"click\" this.handleClick}} {{on \"animationend\" this.handleAnimationEnd}} {{this.scrollLock enabled=this.lockScroll}} data-test-blanket ...attributes>\n {{yield}}\n </div>\n {{/in-element}}\n{{/if}}", {
131
+ setComponentTemplate(precompileTemplate("{{!-- Track visibility changes to manage exit animation state --}}\n<span hidden {{this.trackVisibility visible=@visible animated=this.animated}} data-test-blanket-tracker></span>\n\n{{#if this.shouldRender}}\n <Portal @to={{this.portalTarget}} @append={{true}}>\n {{!-- template-lint-disable no-invalid-interactive --}}\n <div class=\"blanket_e68ef6998\" aria-hidden=\"true\" data-opacity={{this.opacity}} data-animated={{if this.animated \"true\" \"false\"}} data-state={{this.dataState}} style={{this.zIndexStyle}} {{on \"click\" this.handleClick}} {{on \"animationend\" this.handleAnimationEnd}} {{this.scrollLock enabled=this.lockScroll}} data-test-blanket ...attributes>\n {{yield}}\n </div>\n </Portal>\n{{/if}}", {
130
132
  strictMode: true,
131
133
  scope: () => ({
134
+ Portal,
132
135
  on
133
136
  })
134
137
  }), this);
@@ -4,6 +4,9 @@ import { tracked } from '@glimmer/tracking';
4
4
  import { on } from '@ember/modifier';
5
5
  import { modifier } from 'ember-modifier';
6
6
  import { hash } from '@ember/helper';
7
+ import { Portal } from 'ember-primitives/components/portal';
8
+ import { TARGETS } from 'ember-primitives/components/portal-targets';
9
+ import { uniqueId } from 'ember-primitives/utils';
7
10
  import Blanket from './blanket.js';
8
11
  import { precompileTemplate } from '@ember/template-compilation';
9
12
  import { setComponentTemplate } from '@ember/component';
@@ -68,7 +71,6 @@ class DrawerClose extends Component {
68
71
  // ============================================================================
69
72
  // Main Component
70
73
  // ============================================================================
71
- let drawerIdCounter = 0;
72
74
  class Drawer extends Component {
73
75
  static {
74
76
  g(this.prototype, "_isOpenInternal", [tracked], function () {
@@ -85,7 +87,7 @@ class Drawer extends Component {
85
87
  previousVisible = undefined;
86
88
  contentElement = null;
87
89
  previousActiveElement = null;
88
- titleId = `drawer-title-${++drawerIdCounter}`;
90
+ titleId = `drawer-title-${uniqueId()}`;
89
91
  // ============================================================================
90
92
  // Getters
91
93
  // ============================================================================
@@ -124,8 +126,8 @@ class Drawer extends Component {
124
126
  if (this.args.preventClose) return false;
125
127
  return this.args.closeOnEscape ?? true;
126
128
  }
127
- get destinationElement() {
128
- return this.args.container ?? document.body;
129
+ get portalTarget() {
130
+ return this.args.container ?? TARGETS.modal;
129
131
  }
130
132
  get shouldRender() {
131
133
  return this.isOpen || this.exitAnimationActive;
@@ -259,10 +261,11 @@ class Drawer extends Component {
259
261
  // Template
260
262
  // ============================================================================
261
263
  static {
262
- setComponentTemplate(precompileTemplate("{{!-- Visibility tracker for exit animations --}}\n<span hidden {{this.trackVisibility visible=this.isOpen}} data-test-drawer-tracker></span>\n\n{{!-- Blanket is outside shouldRender so it can manage its own exit animation --}}\n{{#if this.showBlanket}}\n <Blanket @visible={{this.isOpen}} @onClose={{this.handleBackdropClose}} @closeOnClick={{this.closeOnBackdropClick}} @lockScroll={{false}} @container={{this.destinationElement}} data-test-drawer-blanket />\n{{/if}}\n\n{{#if this.shouldRender}}\n {{#in-element this.destinationElement insertBefore=null}}\n {{!-- template-lint-disable no-invalid-interactive --}}\n <div class=\"drawer-container_e20b0b74f\" role=\"dialog\" aria-modal={{if this.showBlanket \"true\" \"false\"}} aria-labelledby={{this.titleId}} tabindex=\"-1\" data-side={{this.side}} data-size={{this.size}} data-padding={{this.padding}} data-state={{this.dataState}} {{this.setupDrawer}} {{on \"animationend\" this.handleAnimationEnd}} data-test-drawer-container ...attributes>\n <div class=\"drawer-content_e20b0b74f\" data-test-drawer-content>\n {{yield (hash Header=(component DrawerHeader ctx=this.context) Body=(component DrawerBody ctx=this.context) Footer=(component DrawerFooter ctx=this.context) Close=(component DrawerClose ctx=this.context) isOpen=this.isOpen close=this.closeDrawer)}}\n </div>\n </div>\n {{/in-element}}\n{{/if}}", {
264
+ setComponentTemplate(precompileTemplate("{{!-- Visibility tracker for exit animations --}}\n<span hidden {{this.trackVisibility visible=this.isOpen}} data-test-drawer-tracker></span>\n\n{{!-- Blanket is outside shouldRender so it can manage its own exit animation --}}\n{{#if this.showBlanket}}\n <Blanket @visible={{this.isOpen}} @onClose={{this.handleBackdropClose}} @closeOnClick={{this.closeOnBackdropClick}} @lockScroll={{false}} @container={{@container}} data-test-drawer-blanket />\n{{/if}}\n\n{{#if this.shouldRender}}\n <Portal @to={{this.portalTarget}} @append={{true}}>\n {{!-- template-lint-disable no-invalid-interactive --}}\n <div class=\"drawer-container_e20b0b74f\" role=\"dialog\" aria-modal={{if this.showBlanket \"true\" \"false\"}} aria-labelledby={{this.titleId}} tabindex=\"-1\" data-side={{this.side}} data-size={{this.size}} data-padding={{this.padding}} data-state={{this.dataState}} {{this.setupDrawer}} {{on \"animationend\" this.handleAnimationEnd}} data-test-drawer-container ...attributes>\n <div class=\"drawer-content_e20b0b74f\" data-test-drawer-content>\n {{yield (hash Header=(component DrawerHeader ctx=this.context) Body=(component DrawerBody ctx=this.context) Footer=(component DrawerFooter ctx=this.context) Close=(component DrawerClose ctx=this.context) isOpen=this.isOpen close=this.closeDrawer)}}\n </div>\n </div>\n </Portal>\n{{/if}}", {
263
265
  strictMode: true,
264
266
  scope: () => ({
265
267
  Blanket,
268
+ Portal,
266
269
  on,
267
270
  hash,
268
271
  DrawerHeader,
@@ -4,4 +4,5 @@ export { default as Modal } from './modal.js';
4
4
  export { default as Popover } from './popover.js';
5
5
  export { default as Toast } from './toast.js';
6
6
  export { default as Tooltip, TooltipProvider } from './tooltip.js';
7
+ export { default as PortalTargets } from 'ember-primitives/components/portal-targets';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -4,6 +4,9 @@ import { tracked } from '@glimmer/tracking';
4
4
  import { on } from '@ember/modifier';
5
5
  import { modifier } from 'ember-modifier';
6
6
  import { hash } from '@ember/helper';
7
+ import { Portal } from 'ember-primitives/components/portal';
8
+ import { TARGETS } from 'ember-primitives/components/portal-targets';
9
+ import { uniqueId } from 'ember-primitives/utils';
7
10
  import Blanket from './blanket.js';
8
11
  import { precompileTemplate } from '@ember/template-compilation';
9
12
  import { setComponentTemplate } from '@ember/component';
@@ -68,7 +71,6 @@ class ModalClose extends Component {
68
71
  // ============================================================================
69
72
  // Main Component
70
73
  // ============================================================================
71
- let modalIdCounter = 0;
72
74
  class Modal extends Component {
73
75
  static {
74
76
  g(this.prototype, "_isOpenInternal", [tracked], function () {
@@ -85,7 +87,7 @@ class Modal extends Component {
85
87
  previousVisible = undefined;
86
88
  contentElement = null;
87
89
  previousActiveElement = null;
88
- titleId = `modal-title-${++modalIdCounter}`;
90
+ titleId = `modal-title-${uniqueId()}`;
89
91
  // ============================================================================
90
92
  // Getters
91
93
  // ============================================================================
@@ -118,8 +120,8 @@ class Modal extends Component {
118
120
  if (this.args.preventClose) return false;
119
121
  return this.args.closeOnEscape ?? true;
120
122
  }
121
- get destinationElement() {
122
- return this.args.container ?? document.body;
123
+ get portalTarget() {
124
+ return this.args.container ?? TARGETS.modal;
123
125
  }
124
126
  get shouldRender() {
125
127
  return this.isOpen || this.exitAnimationActive;
@@ -250,10 +252,11 @@ class Modal extends Component {
250
252
  // Template
251
253
  // ============================================================================
252
254
  static {
253
- setComponentTemplate(precompileTemplate("{{!-- Visibility tracker for exit animations --}}\n<span hidden {{this.trackVisibility visible=this.isOpen}} data-test-modal-tracker></span>\n\n{{!-- Blanket is outside shouldRender so it can manage its own exit animation --}}\n<Blanket @visible={{this.isOpen}} @onClose={{this.handleBackdropClose}} @closeOnClick={{this.closeOnBackdropClick}} @lockScroll={{false}} @container={{this.destinationElement}} data-test-modal-blanket />\n\n{{#if this.shouldRender}}\n {{#in-element this.destinationElement insertBefore=null}}\n {{!-- template-lint-disable no-invalid-interactive --}}\n <div class=\"modal-container_e26422534\" role={{this.role}} aria-modal=\"true\" aria-labelledby={{this.titleId}} tabindex=\"-1\" data-size={{this.size}} data-state={{this.dataState}} {{this.setupModal}} {{on \"animationend\" this.handleAnimationEnd}} data-test-modal-container ...attributes>\n <div class=\"modal-content_e26422534\" data-test-modal-content>\n {{yield (hash Header=(component ModalHeader ctx=this.context) Body=(component ModalBody ctx=this.context) Footer=(component ModalFooter ctx=this.context) Close=(component ModalClose ctx=this.context) isOpen=this.isOpen close=this.closeModal)}}\n </div>\n </div>\n {{/in-element}}\n{{/if}}", {
255
+ setComponentTemplate(precompileTemplate("{{!-- Visibility tracker for exit animations --}}\n<span hidden {{this.trackVisibility visible=this.isOpen}} data-test-modal-tracker></span>\n\n{{!-- Blanket is outside shouldRender so it can manage its own exit animation --}}\n<Blanket @visible={{this.isOpen}} @onClose={{this.handleBackdropClose}} @closeOnClick={{this.closeOnBackdropClick}} @lockScroll={{false}} @container={{@container}} data-test-modal-blanket />\n\n{{#if this.shouldRender}}\n <Portal @to={{this.portalTarget}} @append={{true}}>\n {{!-- template-lint-disable no-invalid-interactive --}}\n <div class=\"modal-container_e26422534\" role={{this.role}} aria-modal=\"true\" aria-labelledby={{this.titleId}} tabindex=\"-1\" data-size={{this.size}} data-state={{this.dataState}} {{this.setupModal}} {{on \"animationend\" this.handleAnimationEnd}} data-test-modal-container ...attributes>\n <div class=\"modal-content_e26422534\" data-test-modal-content>\n {{yield (hash Header=(component ModalHeader ctx=this.context) Body=(component ModalBody ctx=this.context) Footer=(component ModalFooter ctx=this.context) Close=(component ModalClose ctx=this.context) isOpen=this.isOpen close=this.closeModal)}}\n </div>\n </div>\n </Portal>\n{{/if}}", {
254
256
  strictMode: true,
255
257
  scope: () => ({
256
258
  Blanket,
259
+ Portal,
257
260
  on,
258
261
  hash,
259
262
  ModalHeader,
@@ -154,23 +154,43 @@
154
154
  z-index: -1;
155
155
  }
156
156
 
157
- /* Arrow positioning adjustments based on side */
157
+ /*
158
+ * Cross-axis position comes from Floating UI via the --arrow-x / --arrow-y
159
+ * custom properties, which the positionPopoverArrow middleware sets after
160
+ * each computePosition. The main-axis offset (-5px) peeks the rotated 10×10
161
+ * square half-way out of the content edge; the negative borders below give
162
+ * the visible half its hairline edge.
163
+ */
164
+ .popover-arrow_ee9248ac0[data-side="top"],
165
+ .popover-arrow_ee9248ac0[data-side="bottom"] {
166
+ left: var(--arrow-x);
167
+ }
168
+
169
+ .popover-arrow_ee9248ac0[data-side="left"],
170
+ .popover-arrow_ee9248ac0[data-side="right"] {
171
+ top: var(--arrow-y);
172
+ }
173
+
158
174
  .popover-arrow_ee9248ac0[data-side="top"] {
175
+ bottom: -5px;
159
176
  border-top: none;
160
177
  border-left: none;
161
178
  }
162
179
 
163
180
  .popover-arrow_ee9248ac0[data-side="bottom"] {
181
+ top: -5px;
164
182
  border-bottom: none;
165
183
  border-right: none;
166
184
  }
167
185
 
168
186
  .popover-arrow_ee9248ac0[data-side="left"] {
187
+ right: -5px;
169
188
  border-bottom: none;
170
189
  border-left: none;
171
190
  }
172
191
 
173
192
  .popover-arrow_ee9248ac0[data-side="right"] {
193
+ left: -5px;
174
194
  border-top: none;
175
195
  border-right: none;
176
196
  }
@@ -4,7 +4,11 @@ import { tracked } from '@glimmer/tracking';
4
4
  import { on } from '@ember/modifier';
5
5
  import { modifier } from 'ember-modifier';
6
6
  import { hash } from '@ember/helper';
7
- import { autoUpdate, offset, flip, shift, arrow, computePosition } from '@floating-ui/dom';
7
+ import { arrow } from '@floating-ui/dom';
8
+ import { anchorTo } from 'ember-primitives/floating-ui';
9
+ import { Portal } from 'ember-primitives/components/portal';
10
+ import { TARGETS } from 'ember-primitives/components/portal-targets';
11
+ import { uniqueId } from 'ember-primitives/utils';
8
12
  import { precompileTemplate } from '@ember/template-compilation';
9
13
  import { setComponentTemplate } from '@ember/component';
10
14
  import { g, i } from 'decorator-transforms/runtime';
@@ -18,9 +22,16 @@ class PopoverTrigger extends Component {
18
22
  get ctx() {
19
23
  return this.args.ctx;
20
24
  }
25
+ // Captured once at construction. Popover.registerTrigger is a stable class
26
+ // field, so this reference never goes stale — reading it here instead of
27
+ // `this.ctx.registerTrigger` inside the modifier keeps the modifier body
28
+ // free of tracked reads. Without this, the tracked ctx getter on Popover
29
+ // would invalidate ctx on every triggerElement write, causing the modifier
30
+ // to re-run, call register again, and loop forever.
31
+ register = this.args.ctx.registerTrigger;
21
32
  // Modifier to register this element with the parent
22
33
  registerElement = modifier(element => {
23
- this.ctx.registerTrigger(element);
34
+ this.register(element);
24
35
  return () => {
25
36
  // Cleanup handled by parent
26
37
  };
@@ -80,19 +91,18 @@ class PopoverTrigger extends Component {
80
91
  }
81
92
  }
82
93
  class PopoverContent extends Component {
83
- arrowElement = null;
84
- registerArrow = modifier(element => {
85
- this.arrowElement = element;
86
- return () => {
87
- this.arrowElement = null;
88
- };
89
- });
90
- get destinationElement() {
91
- return document.body;
92
- }
94
+ portalTarget = TARGETS.popover;
93
95
  get ctx() {
94
96
  return this.args.ctx;
95
97
  }
98
+ // Reference element for {{anchorTo}}. Falls back to document.body when no
99
+ // trigger has been registered — this preserves the legacy behaviour where
100
+ // consumers can yield popover.open/popover.close to custom buttons instead
101
+ // of wrapping one in popover.Trigger. In that case the popover still
102
+ // renders (it just isn't anchored anywhere meaningful).
103
+ get triggerElement() {
104
+ return this.ctx.triggerElement ?? document.body;
105
+ }
96
106
  get side() {
97
107
  return this.args.side ?? 'bottom';
98
108
  }
@@ -142,63 +152,56 @@ class PopoverContent extends Component {
142
152
  get dataState() {
143
153
  return this.ctx.isOpen ? 'open' : 'closed';
144
154
  }
145
- // Custom modifier that applies floating-ui positioning
146
- applyPositioning = modifier((element, _positional, named) => {
147
- if (!named.trigger) {
148
- return;
149
- }
150
- // Register content element with parent
151
- named.onRegister?.(element);
152
- const updatePosition = () => {
153
- const middleware = [offset(named.offsetOptions), ...(named.flipOptions ? [flip(named.flipOptions)] : []), ...(named.shiftOptions ? [shift(named.shiftOptions)] : []), ...(named.arrowElement ? [arrow({
154
- element: named.arrowElement
155
- })] : [])];
156
- void computePosition(named.trigger, element, {
157
- placement: named.placement,
158
- middleware
159
- }).then(result => {
160
- const {
161
- x,
162
- y,
163
- middlewareData,
164
- placement
165
- } = result;
166
- Object.assign(element.style, {
167
- left: `${x}px`,
168
- top: `${y}px`
169
- });
170
- // Position the arrow if present
171
- if (named.arrowElement && middlewareData.arrow) {
172
- const {
173
- x: arrowX,
174
- y: arrowY
175
- } = middlewareData.arrow;
176
- const side = placement.split('-')[0];
177
- // Position arrow on the opposite side of the popover
178
- const staticSide = {
179
- top: 'bottom',
180
- right: 'left',
181
- bottom: 'top',
182
- left: 'right'
183
- }[side];
184
- Object.assign(named.arrowElement.style, {
185
- left: arrowX != null ? `${arrowX}px` : '',
186
- top: arrowY != null ? `${arrowY}px` : '',
187
- right: '',
188
- bottom: '',
189
- [staticSide]: '-5px'
190
- });
191
- // Update data-side attribute for correct border styling
192
- named.arrowElement.setAttribute('data-side', side);
193
- }
194
- });
155
+ // The arrow element is captured via {{this.registerArrow}} in the template.
156
+ // Tracked so the {{anchorTo}} modifier re-runs (with the arrow middleware
157
+ // now in play) as soon as the arrow mounts, instead of snapshotting a null
158
+ // ref at install time.
159
+ static {
160
+ g(this.prototype, "arrowElement", [tracked], function () {
161
+ return null;
162
+ });
163
+ }
164
+ #arrowElement = (i(this, "arrowElement"), void 0);
165
+ registerArrow = modifier(element => {
166
+ this.arrowElement = element;
167
+ return () => {
168
+ this.arrowElement = null;
195
169
  };
196
- const cleanup = autoUpdate(named.trigger, element, updatePosition);
170
+ });
171
+ // Register the content element with the parent for click-outside detection.
172
+ // Positioning itself is handled by {{anchorTo}} from ember-primitives.
173
+ registerContentElement = modifier(element => {
174
+ this.ctx.registerContent(element);
197
175
  return () => {
198
- cleanup();
199
- named.onRegister?.(null);
176
+ this.ctx.registerContent(null);
200
177
  };
201
178
  });
179
+ // Middleware chain applied via {{anchorTo}}'s @middleware arg. The arrow
180
+ // middleware lets Floating UI compute the cross-axis offset; we publish it
181
+ // as --arrow-x / --arrow-y custom properties on the arrow element so the
182
+ // CSS rules in popover.css can position and offset the arrow per side.
183
+ get middleware() {
184
+ const arrowEl = this.arrowElement;
185
+ if (!arrowEl) {
186
+ return [];
187
+ }
188
+ return [arrow({
189
+ element: arrowEl
190
+ }), {
191
+ name: 'positionPopoverArrow',
192
+ fn: state => {
193
+ const arrowData = state.middlewareData['arrow'];
194
+ if (!arrowData) {
195
+ return {};
196
+ }
197
+ arrowEl.style.setProperty('--arrow-x', arrowData.x != null ? `${arrowData.x}px` : '');
198
+ arrowEl.style.setProperty('--arrow-y', arrowData.y != null ? `${arrowData.y}px` : '');
199
+ const side = state.placement.split('-')[0];
200
+ arrowEl.setAttribute('data-side', side);
201
+ return {};
202
+ }
203
+ }];
204
+ }
202
205
  handleMouseEnter = () => {
203
206
  if (this.ctx.triggerMode === 'hover') {
204
207
  this.ctx.openPopover();
@@ -210,10 +213,12 @@ class PopoverContent extends Component {
210
213
  }
211
214
  };
212
215
  static {
213
- setComponentTemplate(precompileTemplate("{{#if this.ctx.isOpen}}\n {{#in-element this.destinationElement insertBefore=null}}\n <div id={{this.ctx.contentId}} class=\"popover-content_ee9248ac0\" role=\"dialog\" aria-label={{@aria-label}} aria-labelledby={{@aria-labelledby}} data-state={{this.dataState}} data-side={{this.side}} data-animation={{this.animation}} {{on \"mouseenter\" this.handleMouseEnter}} {{on \"mouseleave\" this.handleMouseLeave}} {{this.applyPositioning trigger=this.ctx.triggerElement placement=this.placement offsetOptions=this.offsetOptions flipOptions=this.flipOptions shiftOptions=this.shiftOptions arrowElement=this.arrowElement onRegister=this.ctx.registerContent}} data-test-popover-content ...attributes>\n {{yield}}\n {{#if this.showArrow}}\n <div class=\"popover-arrow_ee9248ac0\" data-side={{this.side}} {{this.registerArrow}} data-test-popover-arrow></div>\n {{/if}}\n </div>\n {{/in-element}}\n{{/if}}", {
216
+ setComponentTemplate(precompileTemplate("{{#if this.ctx.isOpen}}\n <Portal @to={{this.portalTarget}} @append={{true}}>\n <div id={{this.ctx.contentId}} class=\"popover-content_ee9248ac0\" role=\"dialog\" aria-label={{@aria-label}} aria-labelledby={{@aria-labelledby}} data-state={{this.dataState}} data-side={{this.side}} data-animation={{this.animation}} {{on \"mouseenter\" this.handleMouseEnter}} {{on \"mouseleave\" this.handleMouseLeave}} {{anchorTo this.triggerElement strategy=\"absolute\" placement=this.placement offsetOptions=this.offsetOptions flipOptions=this.flipOptions shiftOptions=this.shiftOptions middleware=this.middleware}} {{this.registerContentElement}} data-test-popover-content ...attributes>\n {{yield}}\n {{#if this.showArrow}}\n <div class=\"popover-arrow_ee9248ac0\" data-side={{this.side}} {{this.registerArrow}} data-test-popover-arrow></div>\n {{/if}}\n </div>\n </Portal>\n{{/if}}", {
214
217
  strictMode: true,
215
218
  scope: () => ({
216
- on
219
+ Portal,
220
+ on,
221
+ anchorTo
217
222
  })
218
223
  }), this);
219
224
  }
@@ -238,8 +243,6 @@ class PopoverClose extends Component {
238
243
  // ============================================================================
239
244
  // Main Component
240
245
  // ============================================================================
241
- // Unique ID counter for generating content IDs
242
- let popoverIdCounter = 0;
243
246
  class Popover extends Component {
244
247
  static {
245
248
  g(this.prototype, "_isOpenInternal", [tracked], function () {
@@ -247,10 +250,15 @@ class Popover extends Component {
247
250
  });
248
251
  }
249
252
  #_isOpenInternal = (i(this, "_isOpenInternal"), void 0);
250
- // Not tracked - trigger is always rendered before content needs it
251
- triggerElement = null;
253
+ static {
254
+ g(this.prototype, "triggerElement", [tracked], function () {
255
+ return null;
256
+ });
257
+ }
258
+ #triggerElement = (i(this, "triggerElement"), void 0); // Tracked so that the content block only renders once the trigger has been
259
+ // registered — {{anchorTo}} asserts that its reference element is non-null.
252
260
  // Unique ID for linking trigger to content via aria-controls
253
- contentId = `popover-content-${++popoverIdCounter}`;
261
+ contentId = `popover-content-${uniqueId()}`;
254
262
  // Element references for click outside detection
255
263
  rootElement = null;
256
264
  contentElement = null;
@@ -268,7 +276,18 @@ class Popover extends Component {
268
276
  };
269
277
  });
270
278
  registerTrigger = element => {
271
- this.triggerElement = element;
279
+ // Defer the tracked write to a microtask so it lands in a separate
280
+ // computation from the template render that reads this.triggerElement
281
+ // (via the context getter). Writing during the same render trips
282
+ // Glimmer's "updated after being used in the same computation" error.
283
+ // The equality guard keeps redundant writes from invalidating ctx on
284
+ // re-renders that pass the same element back through.
285
+ void Promise.resolve().then(() => {
286
+ if (this.triggerElement === element) {
287
+ return;
288
+ }
289
+ this.triggerElement = element;
290
+ });
272
291
  };
273
292
  get isOpenInternal() {
274
293
  if (this._isOpenInternal === undefined) {
@@ -3,6 +3,8 @@ import Component from '@glimmer/component';
3
3
  import { service } from '@ember/service';
4
4
  import { on } from '@ember/modifier';
5
5
  import { modifier } from 'ember-modifier';
6
+ import { Portal } from 'ember-primitives/components/portal';
7
+ import { TARGETS } from 'ember-primitives/components/portal-targets';
6
8
  import { Info, AlertCircle, AlertTriangle, CheckCircle, X } from 'lucide';
7
9
  import Icon from '../media/icon.js';
8
10
  import { precompileTemplate } from '@ember/template-compilation';
@@ -80,9 +82,11 @@ class Toast extends Component {
80
82
  get visibleToasts() {
81
83
  return this.toast.toasts.slice(-this.maxToasts);
82
84
  }
83
- get destinationElement() {
84
- return document.body;
85
- }
85
+ // Toasts share the modal portal target — they use fixed positioning so
86
+ // their DOM parent is layout-irrelevant, and reusing the modal target
87
+ // avoids shipping a dedicated `toast` PortalTarget that consumers would
88
+ // have to render explicitly.
89
+ portalTarget = TARGETS.modal;
86
90
  get containerStyle() {
87
91
  return `--toast-gap: ${this.gap}px; --toast-offset: ${this.offset}px;`;
88
92
  }
@@ -110,9 +114,10 @@ class Toast extends Component {
110
114
  };
111
115
  });
112
116
  static {
113
- setComponentTemplate(precompileTemplate("{{#if this.visibleToasts.length}}\n {{#in-element this.destinationElement insertBefore=null}}\n <div class=\"toast-container_e318658ab\" role=\"region\" aria-label=\"Notifications\" aria-live=\"polite\" data-position={{this.position}} style={{this.containerStyle}} {{this.setupWindowListeners}} data-test-toast-container ...attributes>\n {{#each this.visibleToasts as |toastItem|}}\n <ToastItem @toast={{toastItem}} @onDismiss={{this.handleDismiss}} @onMouseEnter={{this.handleMouseEnter}} @onMouseLeave={{this.handleMouseLeave}} />\n {{/each}}\n </div>\n {{/in-element}}\n{{/if}}", {
117
+ setComponentTemplate(precompileTemplate("{{#if this.visibleToasts.length}}\n <Portal @to={{this.portalTarget}} @append={{true}}>\n <div class=\"toast-container_e318658ab\" role=\"region\" aria-label=\"Notifications\" aria-live=\"polite\" data-position={{this.position}} style={{this.containerStyle}} {{this.setupWindowListeners}} data-test-toast-container ...attributes>\n {{#each this.visibleToasts as |toastItem|}}\n <ToastItem @toast={{toastItem}} @onDismiss={{this.handleDismiss}} @onMouseEnter={{this.handleMouseEnter}} @onMouseLeave={{this.handleMouseLeave}} />\n {{/each}}\n </div>\n </Portal>\n{{/if}}", {
114
118
  strictMode: true,
115
119
  scope: () => ({
120
+ Portal,
116
121
  ToastItem
117
122
  })
118
123
  }), this);
@@ -108,26 +108,47 @@
108
108
  border-style: solid;
109
109
  }
110
110
 
111
+ /*
112
+ * Cross-axis position comes from Floating UI via the --arrow-x / --arrow-y
113
+ * custom properties, which the positionTooltipArrow middleware sets after
114
+ * each computePosition. The main-axis offset (-6px) tucks the 0×0 box up
115
+ * against the content edge so its 6px borders form a triangle that meets
116
+ * the trigger flush.
117
+ */
118
+ .tooltip-arrow_e1d3ad271[data-side="top"],
119
+ .tooltip-arrow_e1d3ad271[data-side="bottom"] {
120
+ left: var(--arrow-x);
121
+ }
122
+
123
+ .tooltip-arrow_e1d3ad271[data-side="left"],
124
+ .tooltip-arrow_e1d3ad271[data-side="right"] {
125
+ top: var(--arrow-y);
126
+ }
127
+
111
128
  /* Arrow pointing down (tooltip on top) */
112
129
  .tooltip-arrow_e1d3ad271[data-side="top"] {
130
+ bottom: -6px;
113
131
  border-width: 6px 6px 0 6px;
114
132
  border-color: var(--gray-900, #161a2e) transparent transparent transparent;
115
133
  }
116
134
 
117
135
  /* Arrow pointing up (tooltip on bottom) */
118
136
  .tooltip-arrow_e1d3ad271[data-side="bottom"] {
137
+ top: -6px;
119
138
  border-width: 0 6px 6px 6px;
120
139
  border-color: transparent transparent var(--gray-900, #161a2e) transparent;
121
140
  }
122
141
 
123
142
  /* Arrow pointing right (tooltip on left) */
124
143
  .tooltip-arrow_e1d3ad271[data-side="left"] {
144
+ right: -6px;
125
145
  border-width: 6px 0 6px 6px;
126
146
  border-color: transparent transparent transparent var(--gray-900, #161a2e);
127
147
  }
128
148
 
129
149
  /* Arrow pointing left (tooltip on right) */
130
150
  .tooltip-arrow_e1d3ad271[data-side="right"] {
151
+ left: -6px;
131
152
  border-width: 6px 6px 6px 0;
132
153
  border-color: transparent var(--gray-900, #161a2e) transparent transparent;
133
154
  }
@@ -3,7 +3,11 @@ import Component from '@glimmer/component';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { on } from '@ember/modifier';
5
5
  import { modifier } from 'ember-modifier';
6
- import { autoUpdate, offset, flip, shift, arrow, computePosition } from '@floating-ui/dom';
6
+ import { arrow } from '@floating-ui/dom';
7
+ import { anchorTo } from 'ember-primitives/floating-ui';
8
+ import { Portal } from 'ember-primitives/components/portal';
9
+ import { TARGETS } from 'ember-primitives/components/portal-targets';
10
+ import { uniqueId } from 'ember-primitives/utils';
7
11
  import { precompileTemplate } from '@ember/template-compilation';
8
12
  import { setComponentTemplate } from '@ember/component';
9
13
  import { g, i } from 'decorator-transforms/runtime';
@@ -57,8 +61,6 @@ class TooltipProvider extends Component {
57
61
  // Tooltip Component
58
62
  // ============================================================================
59
63
 
60
- // Unique ID counter for generating content IDs
61
- let tooltipIdCounter = 0;
62
64
  /**
63
65
  * Tooltip displays brief contextual information on hover or focus.
64
66
  * Uses dark styling optimized for short text.
@@ -76,9 +78,15 @@ class Tooltip extends Component {
76
78
  });
77
79
  }
78
80
  #actualSide = (i(this, "actualSide"), void 0);
79
- triggerElement = null;
81
+ static {
82
+ g(this.prototype, "triggerElement", [tracked], function () {
83
+ return null;
84
+ });
85
+ }
86
+ #triggerElement = (i(this, "triggerElement"), void 0); // Tracked so the content block defers rendering until the trigger has
87
+ // mounted — {{anchorTo}} asserts a non-null reference element.
80
88
  contentElement = null;
81
- contentId = `tooltip-content-${++tooltipIdCounter}`;
89
+ contentId = `tooltip-content-${uniqueId()}`;
82
90
  openTimeout = null;
83
91
  closeTimeout = null;
84
92
  // ============================================================================
@@ -159,6 +167,79 @@ class Tooltip extends Component {
159
167
  padding: 8
160
168
  };
161
169
  }
170
+ // Narrows the nullable triggerElement field so {{anchorTo}} can accept it.
171
+ //
172
+ // Invariant: Tooltip's trigger and content sit in the same template (the
173
+ // trigger span is always rendered before the {{#if this.isOpen}} block),
174
+ // so the registerTrigger modifier installs and sets triggerElement before
175
+ // the content block is ever entered. Combined with the @tracked field
176
+ // re-render, this getter is only invoked when triggerElement is non-null.
177
+ // Unlike Popover, consumers can't bypass tooltip.Trigger, so we don't
178
+ // need a document.body fallback here.
179
+ get triggerAnchor() {
180
+ // Non-null assertion is justified by the invariant above.
181
+ return this.triggerElement;
182
+ }
183
+ // The arrow element is captured via {{this.registerArrow}} in the template.
184
+ // Tracked so the {{anchorTo}} modifier re-runs (with the arrow middleware
185
+ // now in play) as soon as the arrow mounts, instead of snapshotting a
186
+ // null ref at install time.
187
+ static {
188
+ g(this.prototype, "arrowElement", [tracked], function () {
189
+ return null;
190
+ });
191
+ }
192
+ #arrowElement = (i(this, "arrowElement"), void 0);
193
+ registerArrow = modifier(element => {
194
+ this.arrowElement = element;
195
+ return () => {
196
+ this.arrowElement = null;
197
+ };
198
+ });
199
+ // Middleware chain applied via {{anchorTo}}'s @middleware arg. The arrow
200
+ // middleware lets Floating UI compute the cross-axis offset; we publish it
201
+ // as --arrow-x / --arrow-y custom properties on the arrow element so the
202
+ // CSS rules in tooltip.css can position and offset the arrow per side.
203
+ // The trackActualSide middleware (below) keeps the content's data-side
204
+ // styling reactive after a collision flip.
205
+ get middleware() {
206
+ const chain = [];
207
+ const arrowEl = this.arrowElement;
208
+ if (arrowEl) {
209
+ chain.push(arrow({
210
+ element: arrowEl
211
+ }), {
212
+ name: 'positionTooltipArrow',
213
+ fn: state => {
214
+ const arrowData = state.middlewareData['arrow'];
215
+ if (!arrowData) {
216
+ return {};
217
+ }
218
+ arrowEl.style.setProperty('--arrow-x', arrowData.x != null ? `${arrowData.x}px` : '');
219
+ arrowEl.style.setProperty('--arrow-y', arrowData.y != null ? `${arrowData.y}px` : '');
220
+ const side = state.placement.split('-')[0];
221
+ arrowEl.setAttribute('data-side', side);
222
+ return {};
223
+ }
224
+ });
225
+ }
226
+ // Tracks the resolved side for reactive data-side styling on the content
227
+ // element. The mutation happens inside the middleware's async `fn`
228
+ // callback (invoked by Floating UI during computePosition), not during
229
+ // getter evaluation — hence the targeted disable.
230
+ chain.push({
231
+ name: 'trackActualSide',
232
+ fn: state => {
233
+ const side = state.placement.split('-')[0];
234
+ if (this.actualSide !== side) {
235
+ // eslint-disable-next-line ember/no-side-effects
236
+ this.actualSide = side;
237
+ }
238
+ return {};
239
+ }
240
+ });
241
+ return chain;
242
+ }
162
243
  // ============================================================================
163
244
  // State Management
164
245
  // ============================================================================
@@ -239,69 +320,12 @@ class Tooltip extends Component {
239
320
  this.triggerElement = null;
240
321
  };
241
322
  });
242
- applyPositioning = modifier((element, _positional, named) => {
243
- if (!named.trigger) {
244
- return;
245
- }
323
+ // Tracks the rendered content element so focus-out can detect when focus
324
+ // moves between trigger and content. Positioning itself is handled by
325
+ // {{anchorTo}} from ember-primitives.
326
+ registerContentElement = modifier(element => {
246
327
  this.contentElement = element;
247
- const updatePosition = () => {
248
- // Query for the arrow element fresh each time to avoid stale references
249
- const arrowEl = element.querySelector('.tooltip-arrow');
250
- const middleware = [offset(named.offsetOptions), flip(named.flipOptions), shift(named.shiftOptions), ...(arrowEl ? [arrow({
251
- element: arrowEl
252
- })] : [])];
253
- void computePosition(named.trigger, element, {
254
- placement: named.placement,
255
- middleware
256
- }).then(result => {
257
- const {
258
- x,
259
- y,
260
- middlewareData,
261
- placement
262
- } = result;
263
- Object.assign(element.style, {
264
- left: `${x}px`,
265
- top: `${y}px`
266
- });
267
- // Update actual side for styling
268
- const side = placement.split('-')[0];
269
- this.actualSide = side;
270
- element.setAttribute('data-side', side);
271
- // Position the arrow if present
272
- if (arrowEl && middlewareData.arrow) {
273
- const {
274
- x: arrowX,
275
- y: arrowY
276
- } = middlewareData.arrow;
277
- // Position arrow on the opposite side of the tooltip
278
- const staticSide = {
279
- top: 'bottom',
280
- right: 'left',
281
- bottom: 'top',
282
- left: 'right'
283
- }[side];
284
- // Reset all position styles first, then set the new ones
285
- // This prevents stale styles from previous positions
286
- Object.assign(arrowEl.style, {
287
- left: '',
288
- top: '',
289
- right: '',
290
- bottom: ''
291
- });
292
- // Now apply the new position
293
- Object.assign(arrowEl.style, {
294
- left: arrowX != null ? `${arrowX}px` : '',
295
- top: arrowY != null ? `${arrowY}px` : '',
296
- [staticSide]: '-6px'
297
- });
298
- arrowEl.setAttribute('data-side', side);
299
- }
300
- });
301
- };
302
- const cleanup = autoUpdate(named.trigger, element, updatePosition);
303
328
  return () => {
304
- cleanup();
305
329
  this.contentElement = null;
306
330
  };
307
331
  });
@@ -348,17 +372,17 @@ class Tooltip extends Component {
348
372
  // ============================================================================
349
373
  // Computed Properties for Template
350
374
  // ============================================================================
351
- get destinationElement() {
352
- return document.body;
353
- }
375
+ portalTarget = TARGETS.tooltip;
354
376
  get ariaDescribedBy() {
355
377
  return this.isOpen ? this.contentId : undefined;
356
378
  }
357
379
  static {
358
- setComponentTemplate(precompileTemplate("<span class=\"tooltip_e1d3ad271\" {{this.setupEventListeners}} data-test-tooltip ...attributes>\n <span class=\"tooltip-trigger_e1d3ad271\" aria-describedby={{this.ariaDescribedBy}} {{on \"mouseenter\" this.handleMouseEnter}} {{on \"mouseleave\" this.handleMouseLeave}} {{on \"focusin\" this.handleFocusIn}} {{on \"focusout\" this.handleFocusOut}} {{this.registerTrigger}} data-test-tooltip-trigger>\n {{yield}}\n </span>\n\n {{#if this.isOpen}}\n {{#in-element this.destinationElement insertBefore=null}}\n <div id={{this.contentId}} class=\"tooltip-content_e1d3ad271\" role=\"tooltip\" aria-label={{@aria-label}} data-side={{this.actualSide}} data-variant={{this.variant}} {{on \"mouseenter\" this.handleContentMouseEnter}} {{on \"mouseleave\" this.handleContentMouseLeave}} {{this.applyPositioning trigger=this.triggerElement placement=this.placement offsetOptions=this.offsetOptions flipOptions=this.flipOptions shiftOptions=this.shiftOptions}} data-test-tooltip-content>\n {{#if (has-block \"content\")}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n {{#if this.showArrow}}\n <div class=\"tooltip-arrow_e1d3ad271\" data-test-tooltip-arrow></div>\n {{/if}}\n </div>\n {{/in-element}}\n {{/if}}\n</span>", {
380
+ setComponentTemplate(precompileTemplate("<span class=\"tooltip_e1d3ad271\" {{this.setupEventListeners}} data-test-tooltip ...attributes>\n <span class=\"tooltip-trigger_e1d3ad271\" aria-describedby={{this.ariaDescribedBy}} {{on \"mouseenter\" this.handleMouseEnter}} {{on \"mouseleave\" this.handleMouseLeave}} {{on \"focusin\" this.handleFocusIn}} {{on \"focusout\" this.handleFocusOut}} {{this.registerTrigger}} data-test-tooltip-trigger>\n {{yield}}\n </span>\n\n {{#if this.isOpen}}\n <Portal @to={{this.portalTarget}} @append={{true}}>\n <div id={{this.contentId}} class=\"tooltip-content_e1d3ad271\" role=\"tooltip\" aria-label={{@aria-label}} data-side={{this.actualSide}} data-variant={{this.variant}} {{on \"mouseenter\" this.handleContentMouseEnter}} {{on \"mouseleave\" this.handleContentMouseLeave}} {{anchorTo this.triggerAnchor strategy=\"absolute\" placement=this.placement offsetOptions=this.offsetOptions flipOptions=this.flipOptions shiftOptions=this.shiftOptions middleware=this.middleware}} {{this.registerContentElement}} data-test-tooltip-content>\n {{#if (has-block \"content\")}}\n {{yield to=\"content\"}}\n {{else}}\n {{@content}}\n {{/if}}\n {{#if this.showArrow}}\n <div class=\"tooltip-arrow_e1d3ad271\" {{this.registerArrow}} data-test-tooltip-arrow></div>\n {{/if}}\n </div>\n </Portal>\n {{/if}}\n</span>", {
359
381
  strictMode: true,
360
382
  scope: () => ({
361
- on
383
+ on,
384
+ Portal,
385
+ anchorTo
362
386
  })
363
387
  }), this);
364
388
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visitwonders/assembly",
3
- "version": "0.8.1",
3
+ "version": "0.10.0",
4
4
  "description": "The default blueprint for Embroider v2 addons.",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -99,6 +99,7 @@
99
99
  "decorator-transforms": "^2.2.2",
100
100
  "ember-element-helper": "^0.8.6",
101
101
  "ember-modifier": "^4.1.0",
102
+ "ember-primitives": "^0.55.1",
102
103
  "ember-scoped-css": "^2.0.4",
103
104
  "flagpack-core": "^2.1.0"
104
105
  },