@origostudio/origo-design 0.0.53 → 0.0.54

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 (63) hide show
  1. package/CHANGELOG.md +4 -3
  2. package/dist/packages/angular-renderer/CHANGELOG.md +11 -0
  3. package/dist/packages/angular-renderer/package.json +9 -4
  4. package/dist/packages/angular-renderer/src/index.d.ts +3 -0
  5. package/dist/packages/angular-renderer/src/index.js +3 -0
  6. package/dist/packages/angular-renderer/src/index.js.map +1 -1
  7. package/dist/packages/angular-renderer/src/lib/overlay/overlay-ref.d.ts +40 -0
  8. package/dist/packages/angular-renderer/src/lib/overlay/overlay-ref.js +248 -0
  9. package/dist/packages/angular-renderer/src/lib/overlay/overlay-ref.js.map +1 -0
  10. package/dist/packages/angular-renderer/src/lib/overlay/overlay.models.d.ts +51 -0
  11. package/dist/packages/angular-renderer/src/lib/overlay/overlay.models.js +3 -0
  12. package/dist/packages/angular-renderer/src/lib/overlay/overlay.models.js.map +1 -0
  13. package/dist/packages/angular-renderer/src/lib/overlay/overlay.service.d.ts +12 -0
  14. package/dist/packages/angular-renderer/src/lib/overlay/overlay.service.js +211 -0
  15. package/dist/packages/angular-renderer/src/lib/overlay/overlay.service.js.map +1 -0
  16. package/dist/packages/cli/CHANGELOG.md +4 -0
  17. package/dist/packages/cli/package.json +2 -2
  18. package/dist/packages/cli/package.json.bak +2 -2
  19. package/dist/packages/core/CHANGELOG.md +4 -0
  20. package/dist/packages/core/package.json +1 -1
  21. package/dist/packages/core/package.json.bak +1 -1
  22. package/dist/packages/design-tokens/CHANGELOG.md +4 -0
  23. package/dist/packages/design-tokens/package.json +1 -1
  24. package/dist/packages/playground/browser/{chunk-DFUtHoSa.js → chunk-B2didn7J.js} +1 -1
  25. package/dist/packages/playground/browser/{chunk-CZYE6Vo5.js → chunk-BJpNkPjw.js} +1 -1
  26. package/dist/packages/playground/browser/{chunk-BD3aW3fo.js → chunk-BMHZeB3d.js} +1 -1
  27. package/dist/packages/playground/browser/{chunk-DoDHfFRC.js → chunk-Bae_RqUz.js} +1 -1
  28. package/dist/packages/playground/browser/{chunk-Bb34YjCX.js → chunk-Bl9Hil7b.js} +1 -1
  29. package/dist/packages/playground/browser/{chunk-BGrPMh-Q.js → chunk-CI4TeaQ7.js} +1 -1
  30. package/dist/packages/playground/browser/{chunk-DjQs2rZT.js → chunk-CcgTDmOq.js} +1 -1
  31. package/dist/packages/playground/browser/{chunk-Cxq4lcyl.js → chunk-ChCntBeH.js} +1 -1
  32. package/dist/packages/playground/browser/{chunk-CYa5xYdO.js → chunk-D3Fei55I.js} +1 -1
  33. package/dist/packages/playground/browser/{chunk-CoyK3eaz.js → chunk-DTvURA18.js} +1 -1
  34. package/dist/packages/playground/browser/{chunk-K_6Vunnz.js → chunk-DU-D8H8h.js} +1 -1
  35. package/dist/packages/playground/browser/{chunk-DGFBCrz0.js → chunk-DYrE-2nP.js} +1 -1
  36. package/dist/packages/playground/browser/{chunk-OWSRr_rS.js → chunk-DZFv-mMu.js} +1 -1
  37. package/dist/packages/playground/browser/{chunk-D-gQXFhO.js → chunk-DmvRhqJL.js} +1 -1
  38. package/dist/packages/playground/browser/{chunk-kcBcpdDQ.js → chunk-Q_bSp4tV.js} +1 -1
  39. package/dist/packages/playground/browser/index.html +1 -1
  40. package/dist/packages/playground/browser/main-C3BVRL3Q.js +887 -0
  41. package/package.json +3 -1
  42. package/packages/angular-renderer/CHANGELOG.md +11 -0
  43. package/packages/angular-renderer/package.json +9 -4
  44. package/packages/angular-renderer/src/index.ts +3 -0
  45. package/packages/angular-renderer/src/lib/overlay/overlay-ref.ts +298 -0
  46. package/packages/angular-renderer/src/lib/overlay/overlay.models.ts +59 -0
  47. package/packages/angular-renderer/src/lib/overlay/overlay.service.ts +227 -0
  48. package/packages/angular-renderer/src/styles/overlay.scss +117 -0
  49. package/packages/cli/CHANGELOG.md +4 -0
  50. package/packages/cli/package.json +2 -2
  51. package/packages/core/CHANGELOG.md +4 -0
  52. package/packages/core/package.json +1 -1
  53. package/packages/design-tokens/CHANGELOG.md +4 -0
  54. package/packages/design-tokens/package.json +1 -1
  55. package/packages/devtools/CHANGELOG.md +4 -0
  56. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
  57. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  58. package/packages/devtools/package.json +3 -3
  59. package/packages/playground/CHANGELOG.md +4 -0
  60. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/deps___vitest_vm__/_metadata.json +3 -3
  61. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  62. package/packages/playground/package.json +3 -3
  63. package/dist/packages/playground/browser/main-ZTUYGW6H.js +0 -748
package/CHANGELOG.md CHANGED
@@ -1,9 +1,10 @@
1
- ## 0.0.53 (2026-10-09)
1
+ ## 0.0.54 (2026-10-13)
2
2
 
3
3
  ### 🚀 Features
4
4
 
5
- - add implementation artifact and sprint status for file input and rich text editor story ([c476a9f](https://github.com/OrigoStudio/origo-design/commit/c476a9f))
6
- - implement file-input, dropzone, and rich-text-editor angular primitives ([69cc864](https://github.com/OrigoStudio/origo-design/commit/69cc864))
5
+ - add sprint status tracking and retrospective story for overlay portal architecture ([bddb8a6](https://github.com/OrigoStudio/origo-design/commit/bddb8a6))
6
+ - implement Angular overlay and portal architecture with Shadow DOM support ([954c255](https://github.com/OrigoStudio/origo-design/commit/954c255))
7
+ - implement Angular overlay and portal architecture service for angular-renderer ([fe0c96a](https://github.com/OrigoStudio/origo-design/commit/fe0c96a))
7
8
 
8
9
  ### ❤️ Thank You
9
10
 
@@ -1,3 +1,14 @@
1
+ ## 0.0.54 (2026-10-13)
2
+
3
+ ### 🚀 Features
4
+
5
+ - implement Angular overlay and portal architecture service for angular-renderer ([fe0c96a](https://github.com/OrigoStudio/origo-design/commit/fe0c96a))
6
+ - implement Angular overlay and portal architecture with Shadow DOM support ([954c255](https://github.com/OrigoStudio/origo-design/commit/954c255))
7
+
8
+ ### ❤️ Thank You
9
+
10
+ - Hardik Patel @hardikpatelse
11
+
1
12
  ## 0.0.53 (2026-10-09)
2
13
 
3
14
  ### 🚀 Features
@@ -1,24 +1,29 @@
1
1
  {
2
2
  "name": "@origostudio/angular-renderer",
3
- "version": "0.0.53",
3
+ "version": "0.0.54",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "dependencies": {
9
- "@origostudio/core": "0.0.53",
10
- "@origostudio/design-tokens": "0.0.53",
9
+ "@origostudio/core": "0.0.54",
10
+ "@origostudio/design-tokens": "0.0.54",
11
11
  "tslib": "^2.3.0",
12
12
  "@analogjs/vite-plugin-angular": "^2.7.1",
13
13
  "zone.js": "^0.16.3",
14
- "@axe-core/playwright": "^4.13.0"
14
+ "@axe-core/playwright": "^4.13.0",
15
+ "rxjs": "~7.8.0"
15
16
  },
16
17
  "peerDependencies": {
18
+ "@angular/cdk": ">=18.0.0",
17
19
  "@angular/common": ">=18.0.0",
18
20
  "@angular/core": ">=18.0.0",
19
21
  "@angular/forms": ">=18.0.0",
20
22
  "@angular/platform-browser": ">=18.0.0"
21
23
  },
24
+ "devDependencies": {
25
+ "@angular/cdk": "22.0.7"
26
+ },
22
27
  "repository": {
23
28
  "type": "git",
24
29
  "url": "https://github.com/OrigoStudio/origo-design.git"
@@ -39,3 +39,6 @@ export * from './components/primitives/divider/divider.component';
39
39
  export * from './components/primitives/file-input/file-input.component';
40
40
  export * from './components/primitives/dropzone/dropzone.component';
41
41
  export * from './components/primitives/rich-text-editor/rich-text-editor.component';
42
+ export * from './lib/overlay/overlay.models';
43
+ export * from './lib/overlay/overlay-ref';
44
+ export * from './lib/overlay/overlay.service';
@@ -44,4 +44,7 @@ tslib_1.__exportStar(require("./components/primitives/divider/divider.component"
44
44
  tslib_1.__exportStar(require("./components/primitives/file-input/file-input.component"), exports);
45
45
  tslib_1.__exportStar(require("./components/primitives/dropzone/dropzone.component"), exports);
46
46
  tslib_1.__exportStar(require("./components/primitives/rich-text-editor/rich-text-editor.component"), exports);
47
+ tslib_1.__exportStar(require("./lib/overlay/overlay.models"), exports);
48
+ tslib_1.__exportStar(require("./lib/overlay/overlay-ref"), exports);
49
+ tslib_1.__exportStar(require("./lib/overlay/overlay.service"), exports);
47
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/angular-renderer/src/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAqC;AACrC,mEAAyC;AACzC,gEAAsC;AACtC,kDAAqF;AAA5E,8GAAA,mBAAmB,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAEpD,sFAA4D;AAC5D,kGAAwE;AACxE,0FAAgE;AAChE,oGAA0E;AAC1E,sGAA4E;AAC5E,0HAAgG;AAChG,qDAA2B;AAC3B,0FAAgE;AAChE,sGAA4E;AAC5E,sGAA4E;AAC5E,8FAAoE;AACpE,8FAAoE;AACpE,oGAA0E;AAC1E,8FAAoE;AACpE,sFAA4D;AAC5D,wFAA8D;AAC9D,kGAAwE;AACxE,oEAA0C;AAC1C,gGAAsE;AACtE,sFAA4D;AAC5D,sFAA4D;AAC5D,4FAAkE;AAClE,sFAA4D;AAC5D,oGAA0E;AAC1E,oFAA0D;AAC1D,sGAA4E;AAC5E,oGAA0E;AAC1E,oGAA0E;AAC1E,gHAAsF;AACtF,gGAAsE;AACtE,sFAA4D;AAC5D,wFAA8D;AAC9D,4FAAkE;AAClE,kGAAwE;AACxE,8FAAoE;AACpE,8GAAoF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/angular-renderer/src/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAqC;AACrC,mEAAyC;AACzC,gEAAsC;AACtC,kDAAqF;AAA5E,8GAAA,mBAAmB,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAEpD,sFAA4D;AAC5D,kGAAwE;AACxE,0FAAgE;AAChE,oGAA0E;AAC1E,sGAA4E;AAC5E,0HAAgG;AAChG,qDAA2B;AAC3B,0FAAgE;AAChE,sGAA4E;AAC5E,sGAA4E;AAC5E,8FAAoE;AACpE,8FAAoE;AACpE,oGAA0E;AAC1E,8FAAoE;AACpE,sFAA4D;AAC5D,wFAA8D;AAC9D,kGAAwE;AACxE,oEAA0C;AAC1C,gGAAsE;AACtE,sFAA4D;AAC5D,sFAA4D;AAC5D,4FAAkE;AAClE,sFAA4D;AAC5D,oGAA0E;AAC1E,oFAA0D;AAC1D,sGAA4E;AAC5E,oGAA0E;AAC1E,oGAA0E;AAC1E,gHAAsF;AACtF,gGAAsE;AACtE,sFAA4D;AAC5D,wFAA8D;AAC9D,4FAAkE;AAClE,kGAAwE;AACxE,8FAAoE;AACpE,8GAAoF;AACpF,uEAA6C;AAC7C,oEAA0C;AAC1C,wEAA8C"}
@@ -0,0 +1,40 @@
1
+ import { DestroyRef, ViewContainerRef } from '@angular/core';
2
+ import { OverlayRef as CdkOverlayRef } from '@angular/cdk/overlay';
3
+ import { OrigoOverlayConfig, OrigoOverlayContent, OrigoOverlayRef } from './overlay.models';
4
+ export declare const ORIGO_OVERLAY_FOCUSABLE_SELECTOR = "button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])";
5
+ export declare function getDeepActiveElement(doc: Document | null): Element | null;
6
+ export declare class OrigoNoopOverlayRef<T = unknown> implements OrigoOverlayRef<T> {
7
+ readonly id: string;
8
+ readonly isOpen = false;
9
+ constructor(id?: string);
10
+ open(): void;
11
+ close(): void;
12
+ afterClosed(): Promise<T | undefined>;
13
+ updatePosition(): void;
14
+ dispose(): void;
15
+ }
16
+ export declare class OrigoOverlayRefImpl<T = unknown> implements OrigoOverlayRef<T> {
17
+ private readonly cdkOverlayRef;
18
+ private readonly config;
19
+ private readonly document;
20
+ readonly id: string;
21
+ private _isOpen;
22
+ private previousFocusedElement;
23
+ private afterClosedResolve;
24
+ private afterClosedPromise;
25
+ private documentClickListener;
26
+ private documentKeydownListener;
27
+ private backdropSub;
28
+ private resizeObserver;
29
+ private initialFocusTimeout;
30
+ constructor(id: string, cdkOverlayRef: CdkOverlayRef, config: OrigoOverlayConfig, document: Document | null, destroyRef?: DestroyRef);
31
+ get isOpen(): boolean;
32
+ open(content?: OrigoOverlayContent, viewContainerRef?: ViewContainerRef): void;
33
+ private setupListeners;
34
+ private cleanupListeners;
35
+ private syncTriggerAria;
36
+ close(result?: T): void;
37
+ afterClosed(): Promise<T | undefined>;
38
+ updatePosition(): void;
39
+ dispose(): void;
40
+ }
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrigoOverlayRefImpl = exports.OrigoNoopOverlayRef = exports.ORIGO_OVERLAY_FOCUSABLE_SELECTOR = void 0;
4
+ exports.getDeepActiveElement = getDeepActiveElement;
5
+ const core_1 = require("@angular/core");
6
+ const portal_1 = require("@angular/cdk/portal");
7
+ exports.ORIGO_OVERLAY_FOCUSABLE_SELECTOR = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled])';
8
+ function getDeepActiveElement(doc) {
9
+ if (!doc)
10
+ return null;
11
+ let active = doc.activeElement;
12
+ while (active && active.shadowRoot && active.shadowRoot.activeElement) {
13
+ active = active.shadowRoot.activeElement;
14
+ }
15
+ return active;
16
+ }
17
+ class OrigoNoopOverlayRef {
18
+ id;
19
+ isOpen = false;
20
+ constructor(id = 'noop-overlay') {
21
+ this.id = id;
22
+ }
23
+ open() {
24
+ /* No-op in SSR */
25
+ }
26
+ close() {
27
+ /* No-op in SSR */
28
+ }
29
+ afterClosed() {
30
+ return Promise.resolve(undefined);
31
+ }
32
+ updatePosition() {
33
+ /* No-op in SSR */
34
+ }
35
+ dispose() {
36
+ /* No-op in SSR */
37
+ }
38
+ }
39
+ exports.OrigoNoopOverlayRef = OrigoNoopOverlayRef;
40
+ class OrigoOverlayRefImpl {
41
+ cdkOverlayRef;
42
+ config;
43
+ document;
44
+ id;
45
+ _isOpen = false;
46
+ previousFocusedElement = null;
47
+ afterClosedResolve;
48
+ afterClosedPromise;
49
+ documentClickListener = null;
50
+ documentKeydownListener = null;
51
+ backdropSub = null;
52
+ resizeObserver = null;
53
+ initialFocusTimeout = null;
54
+ constructor(id, cdkOverlayRef, config, document, destroyRef) {
55
+ this.cdkOverlayRef = cdkOverlayRef;
56
+ this.config = config;
57
+ this.document = document;
58
+ this.id = id;
59
+ this.afterClosedPromise = new Promise(resolve => {
60
+ this.afterClosedResolve = resolve;
61
+ });
62
+ if (destroyRef) {
63
+ destroyRef.onDestroy(() => {
64
+ this.dispose();
65
+ });
66
+ }
67
+ // Auto-reposition on target resize if requested
68
+ if (this.config.position.type === 'connected' &&
69
+ this.config.position.autoRepositionOnResize !== false &&
70
+ typeof ResizeObserver !== 'undefined') {
71
+ const targetEl = this.config.position.target instanceof core_1.ElementRef
72
+ ? this.config.position.target.nativeElement
73
+ : this.config.position.target;
74
+ if (targetEl) {
75
+ this.resizeObserver = new ResizeObserver(() => {
76
+ if (this._isOpen) {
77
+ this.updatePosition();
78
+ }
79
+ });
80
+ this.resizeObserver.observe(targetEl);
81
+ }
82
+ }
83
+ }
84
+ get isOpen() {
85
+ return this._isOpen;
86
+ }
87
+ open(content, viewContainerRef) {
88
+ if (this._isOpen)
89
+ return;
90
+ if (!content && !this.cdkOverlayRef.hasAttached()) {
91
+ throw new Error('[OrigoOverlayRef] Content is required to open overlay. Provide a TemplateRef or Component Type.');
92
+ }
93
+ this.previousFocusedElement = getDeepActiveElement(this.document);
94
+ const effectiveVcr = viewContainerRef ?? this.config.viewContainerRef;
95
+ if (content) {
96
+ if (content instanceof core_1.TemplateRef) {
97
+ if (!effectiveVcr) {
98
+ throw new Error('[OrigoOverlayRef] Opening a TemplateRef requires a ViewContainerRef. Provide it in OrigoOverlayConfig.viewContainerRef or open(template, viewContainerRef).');
99
+ }
100
+ const portal = new portal_1.TemplatePortal(content, effectiveVcr);
101
+ this.cdkOverlayRef.attach(portal);
102
+ }
103
+ else {
104
+ const portal = new portal_1.ComponentPortal(content, effectiveVcr ?? null);
105
+ this.cdkOverlayRef.attach(portal);
106
+ }
107
+ }
108
+ this._isOpen = true;
109
+ this.syncTriggerAria(true);
110
+ this.setupListeners();
111
+ }
112
+ setupListeners() {
113
+ const overlayPane = this.cdkOverlayRef.overlayElement;
114
+ // 1. Backdrop click
115
+ if (this.config.hasBackdrop && this.config.closeOnBackdropClick !== false) {
116
+ this.backdropSub = this.cdkOverlayRef.backdropClick().subscribe(() => {
117
+ this.close();
118
+ });
119
+ }
120
+ // 2. Outside click with event.composedPath() Shadow DOM piercing
121
+ if (this.config.closeOnOutsideClick !== false && this.document) {
122
+ const triggerEl = this.config.position.type === 'connected'
123
+ ? this.config.position.target instanceof core_1.ElementRef
124
+ ? this.config.position.target.nativeElement
125
+ : this.config.position.target
126
+ : null;
127
+ this.documentClickListener = (event) => {
128
+ if (!this._isOpen)
129
+ return;
130
+ // Piercing Shadow DOM boundary via composedPath()
131
+ const path = event.composedPath ? event.composedPath() : [];
132
+ const isInsideOverlay = overlayPane && (path.includes(overlayPane) || overlayPane.contains(event.target));
133
+ const isInsideTrigger = triggerEl && (path.includes(triggerEl) || triggerEl.contains(event.target));
134
+ if (!isInsideOverlay && !isInsideTrigger) {
135
+ this.close();
136
+ }
137
+ };
138
+ this.document.addEventListener('click', this.documentClickListener, true);
139
+ }
140
+ // 3. Keydown handling (Escape & Focus Trap)
141
+ if (this.document) {
142
+ this.documentKeydownListener = (event) => {
143
+ if (!this._isOpen)
144
+ return;
145
+ if (this.config.closeOnEscape !== false && event.key === 'Escape') {
146
+ event.preventDefault();
147
+ event.stopPropagation();
148
+ this.close();
149
+ return;
150
+ }
151
+ if (this.config.trapFocus && event.key === 'Tab' && overlayPane) {
152
+ const focusables = overlayPane.querySelectorAll(exports.ORIGO_OVERLAY_FOCUSABLE_SELECTOR);
153
+ if (focusables.length === 0)
154
+ return;
155
+ const first = focusables[0];
156
+ const last = focusables[focusables.length - 1];
157
+ const active = getDeepActiveElement(this.document);
158
+ if (event.shiftKey) {
159
+ if (active === first || !overlayPane.contains(active)) {
160
+ event.preventDefault();
161
+ last.focus();
162
+ }
163
+ }
164
+ else {
165
+ if (active === last || !overlayPane.contains(active)) {
166
+ event.preventDefault();
167
+ first.focus();
168
+ }
169
+ }
170
+ }
171
+ };
172
+ this.document.addEventListener('keydown', this.documentKeydownListener, true);
173
+ }
174
+ // 4. Initial Focus
175
+ if (this.config.trapFocus && overlayPane) {
176
+ this.initialFocusTimeout = setTimeout(() => {
177
+ if (!this._isOpen)
178
+ return;
179
+ const firstFocusable = overlayPane.querySelector(exports.ORIGO_OVERLAY_FOCUSABLE_SELECTOR);
180
+ if (firstFocusable) {
181
+ firstFocusable.focus();
182
+ }
183
+ }, 0);
184
+ }
185
+ }
186
+ cleanupListeners() {
187
+ if (this.initialFocusTimeout) {
188
+ clearTimeout(this.initialFocusTimeout);
189
+ this.initialFocusTimeout = null;
190
+ }
191
+ if (this.documentClickListener && this.document) {
192
+ this.document.removeEventListener('click', this.documentClickListener, true);
193
+ this.documentClickListener = null;
194
+ }
195
+ if (this.documentKeydownListener && this.document) {
196
+ this.document.removeEventListener('keydown', this.documentKeydownListener, true);
197
+ this.documentKeydownListener = null;
198
+ }
199
+ if (this.backdropSub) {
200
+ this.backdropSub.unsubscribe();
201
+ this.backdropSub = null;
202
+ }
203
+ }
204
+ syncTriggerAria(open) {
205
+ const triggerEl = this.config.position.type === 'connected'
206
+ ? this.config.position.target instanceof core_1.ElementRef
207
+ ? this.config.position.target.nativeElement
208
+ : this.config.position.target
209
+ : null;
210
+ if (triggerEl && typeof triggerEl.setAttribute === 'function') {
211
+ triggerEl.setAttribute('aria-expanded', open ? 'true' : 'false');
212
+ if (open && !triggerEl.hasAttribute('aria-controls')) {
213
+ triggerEl.setAttribute('aria-controls', this.id);
214
+ }
215
+ }
216
+ }
217
+ close(result) {
218
+ if (!this._isOpen)
219
+ return;
220
+ this.cleanupListeners();
221
+ this.syncTriggerAria(false);
222
+ if (this.cdkOverlayRef.hasAttached()) {
223
+ this.cdkOverlayRef.detach();
224
+ }
225
+ this._isOpen = false;
226
+ // Restore focus into originating element (pierces Shadow DOM)
227
+ if (this.previousFocusedElement && typeof this.previousFocusedElement.focus === 'function') {
228
+ this.previousFocusedElement.focus();
229
+ }
230
+ this.afterClosedResolve(result);
231
+ }
232
+ afterClosed() {
233
+ return this.afterClosedPromise;
234
+ }
235
+ updatePosition() {
236
+ this.cdkOverlayRef.updatePosition();
237
+ }
238
+ dispose() {
239
+ this.close();
240
+ if (this.resizeObserver) {
241
+ this.resizeObserver.disconnect();
242
+ this.resizeObserver = null;
243
+ }
244
+ this.cdkOverlayRef.dispose();
245
+ }
246
+ }
247
+ exports.OrigoOverlayRefImpl = OrigoOverlayRefImpl;
248
+ //# sourceMappingURL=overlay-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-ref.js","sourceRoot":"","sources":["../../../../../../packages/angular-renderer/src/lib/overlay/overlay-ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { ElementRef, TemplateRef, Type, ViewContainerRef } from '@angular/core';
2
+ export type OrigoOverlayOriginX = 'start' | 'end' | 'center';
3
+ export type OrigoOverlayOriginY = 'top' | 'bottom' | 'center';
4
+ export type OrigoGlobalPositionAlignment = 'center' | 'top' | 'bottom' | 'start' | 'end';
5
+ export interface OrigoConnectedPositionConfig {
6
+ type: 'connected';
7
+ target: ElementRef<HTMLElement> | HTMLElement;
8
+ originX?: OrigoOverlayOriginX;
9
+ originY?: OrigoOverlayOriginY;
10
+ overlayX?: OrigoOverlayOriginX;
11
+ overlayY?: OrigoOverlayOriginY;
12
+ offset?: [number, number];
13
+ autoRepositionOnResize?: boolean;
14
+ }
15
+ export interface OrigoGlobalPositionConfig {
16
+ type: 'global';
17
+ position?: OrigoGlobalPositionAlignment;
18
+ width?: string;
19
+ height?: string;
20
+ minWidth?: string;
21
+ minHeight?: string;
22
+ maxWidth?: string;
23
+ maxHeight?: string;
24
+ }
25
+ export type OrigoOverlayPosition = OrigoConnectedPositionConfig | OrigoGlobalPositionConfig;
26
+ export type OrigoConnectedPositionStrategy = OrigoConnectedPositionConfig;
27
+ export type OrigoGlobalPositionStrategy = OrigoGlobalPositionConfig;
28
+ export type OrigoOverlayPositionStrategy = OrigoOverlayPosition;
29
+ export type OrigoOverlayContent<C = unknown> = TemplateRef<C> | Type<unknown>;
30
+ export interface OrigoOverlayConfig {
31
+ position: OrigoOverlayPosition;
32
+ hasBackdrop?: boolean;
33
+ backdropClass?: string;
34
+ panelClass?: string | string[];
35
+ closeOnBackdropClick?: boolean;
36
+ closeOnOutsideClick?: boolean;
37
+ closeOnEscape?: boolean;
38
+ trapFocus?: boolean;
39
+ viewContainerRef?: ViewContainerRef;
40
+ direction?: 'ltr' | 'rtl';
41
+ themeScope?: string;
42
+ }
43
+ export interface OrigoOverlayRef<T = unknown> {
44
+ readonly id: string;
45
+ readonly isOpen: boolean;
46
+ open(content?: OrigoOverlayContent, viewContainerRef?: ViewContainerRef): void;
47
+ close(result?: T): void;
48
+ afterClosed(): Promise<T | undefined>;
49
+ updatePosition(): void;
50
+ dispose(): void;
51
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=overlay.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.models.js","sourceRoot":"","sources":["../../../../../../packages/angular-renderer/src/lib/overlay/overlay.models.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { DestroyRef } from '@angular/core';
2
+ import { OrigoOverlayConfig, OrigoOverlayRef } from './overlay.models';
3
+ export declare class OrigoOverlayService {
4
+ private readonly overlay;
5
+ private readonly platformId;
6
+ private readonly document;
7
+ get isBrowser(): boolean;
8
+ create<T = unknown>(config: OrigoOverlayConfig, destroyRef?: DestroyRef): OrigoOverlayRef<T>;
9
+ private buildPositionStrategy;
10
+ private resolvePanelClasses;
11
+ private resolveDirection;
12
+ }