@agentsmith.bgd/as-components 21.0.12 → 21.0.16

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, signal, EventEmitter, ViewContainerRef, Output, ViewChild, ChangeDetectionStrategy, createComponent, isSignal, Injectable, inject, Injector, ElementRef, input, computed, HostListener, Directive, output, effect } from '@angular/core';
2
+ import { Component, signal, output, ViewContainerRef, ViewChild, ChangeDetectionStrategy, Directive, createComponent, isSignal, Injectable, inject, Injector, ElementRef, input, computed, HostListener, effect } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { Subject } from 'rxjs';
@@ -23,14 +23,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
23
23
  ` }]
24
24
  }] });
25
25
 
26
- // TypeScript
27
26
  class ModalContainerComponent {
28
27
  contentHost;
29
28
  // signal-based inputs
30
29
  title = signal(undefined, ...(ngDevMode ? [{ debugName: "title" }] : []));
31
30
  size = signal('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
32
31
  showClose = signal(true, ...(ngDevMode ? [{ debugName: "showClose" }] : []));
33
- closed = new EventEmitter();
32
+ closed = output();
34
33
  get sizeClass() {
35
34
  return this.size(); // template uses size() directly; keep helper for compatibility if needed
36
35
  }
@@ -43,11 +42,38 @@ class ModalContainerComponent {
43
42
  */
44
43
  loadComponent(component, inputs) {
45
44
  const compRef = this.contentHost.createComponent(component);
45
+ /* 🟡 PRIME every signal (factory → real signal) */
46
+ const inst = compRef.instance;
47
+ for (const key in inst) {
48
+ const prop = inst[key];
49
+ //console.log('prop check', { key, prop, typeofProp: typeof prop });
50
+ if (typeof prop === 'function') {
51
+ // **real consumer read** → forces input() to become WritableSignal
52
+ const value = prop(); // ← Angular input() **must** be called
53
+ //console.log('>>> primed', { key, value, constructor: prop?.constructor?.name, proto: Object.prototype.toString.call(prop) });
54
+ }
55
+ }
56
+ for (const key in inst) {
57
+ const prop = inst[key];
58
+ if (typeof prop === 'function' && prop.length === 0) {
59
+ // cheap check: call once (forces input() to become WritableSignal)
60
+ prop();
61
+ }
62
+ }
46
63
  if (inputs !== undefined && inputs !== null) {
47
64
  if (typeof inputs === 'object' && !Array.isArray(inputs)) {
48
65
  for (const key of Object.keys(inputs)) {
49
- // this.setInput(compRef.instance as any, key, (inputs as any)[key]);
50
- this.setInput(compRef, key, inputs[key]);
66
+ const prop = compRef.instance[key];
67
+ // console.log('>>> setInput dump', {
68
+ // key,
69
+ // prop,
70
+ // typeofProp: typeof prop,
71
+ // isFunction: typeof prop === 'function',
72
+ // hasSet: prop?.set !== undefined,
73
+ // constructor: prop?.constructor?.name,
74
+ // proto: Object.prototype.toString.call(prop)
75
+ // });
76
+ this.setInput(compRef.instance, key, inputs[key], compRef);
51
77
  }
52
78
  }
53
79
  else {
@@ -55,27 +81,36 @@ class ModalContainerComponent {
55
81
  // const inst = compRef.instance as any;
56
82
  const inst = compRef;
57
83
  if ('message' in inst)
58
- this.setInput(inst, 'message', inputs);
84
+ this.setInput(inst, 'message', inputs, compRef);
59
85
  else if ('data' in inst)
60
- this.setInput(inst, 'data', inputs);
86
+ this.setInput(inst, 'data', inputs, compRef);
61
87
  else
62
- this.setInput(inst, 'value', inputs);
88
+ this.setInput(inst, 'value', inputs, compRef);
63
89
  }
64
90
  // ensure rendering for OnPush / signal changes
65
91
  compRef.changeDetectorRef?.detectChanges();
66
92
  }
67
93
  return compRef;
68
94
  }
69
- setInput(targetInstance, key, value) {
70
- targetInstance.setInput(key, value);
71
- //
72
- // const target = targetInstance[key];
73
- // // writable signal: function with 'set'
74
- // if (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {
75
- // (target as WritableSignal<any>).set(value);
76
- // } else {
77
- // targetInstance[key] = value;
78
- // }
95
+ setInput(targetInstance, key, value, compRef) {
96
+ const before = targetInstance[key];
97
+ //console.log('>>> inside setInput BEFORE', key, before);
98
+ const target = targetInstance[key];
99
+ if (typeof target === 'function' && 'set' in target && typeof target.set === 'function') {
100
+ // writable signal
101
+ target.set(value);
102
+ //console.log(`setInput: signal .set() called for ${key}`, targetInstance[key]);
103
+ }
104
+ else if (typeof target === 'function') {
105
+ // 🔹 signal is readonly → cannot set
106
+ compRef.setInput(key, value);
107
+ //console.log(`setInput: target ${key} is a readonly signal!`, targetInstance[key]);
108
+ }
109
+ else {
110
+ // fallback for raw primitive (optional)
111
+ targetInstance[key] = value;
112
+ //console.log(`setInput: raw assign for ${key}`, targetInstance[key]);
113
+ }
79
114
  }
80
115
  backdropClick() {
81
116
  this.close();
@@ -84,39 +119,27 @@ class ModalContainerComponent {
84
119
  this.closed.emit(result);
85
120
  }
86
121
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ModalContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
87
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: ModalContainerComponent, isStandalone: true, selector: "as-modal-container", outputs: { closed: "closed" }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
88
- <div class="as-modal-backdrop" (click)="backdropClick()"></div>
89
- <div class="as-modal" [ngClass]="size()" role="dialog" aria-modal="true">
90
- <div class="as-modal-header" *ngIf="title() || showClose()">
91
- <h3 class="as-modal-title">{{ title() }}</h3>
92
- <button *ngIf="showClose()" class="as-modal-close" (click)="close()">&times;</button>
93
- </div>
94
- <div class="as-modal-body">
95
- <ng-template #contentHost></ng-template>
96
- </div>
97
- </div>
98
- `, isInline: true, styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}\n", ".as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}\n", ".as-modal.sm{width:300px}\n", ".as-modal.md{width:600px}\n", ".as-modal.lg{width:900px}\n", ".as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}\n", ".as-modal-body{padding:12px}\n", ".as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
122
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ModalContainerComponent, isStandalone: true, selector: "as-modal-container", outputs: { closed: "closed" }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "\n <div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n <div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n @if (title() || showClose()) {\n <div class=\"as-modal-header\">\n <h3 class=\"as-modal-title\">{{ title() }}</h3>\n @if (showClose()) {\n <button class=\"btn-close close pull-right\" type=\"button\" (click)=\"backdropClick()\"></button>\n }\n </div>\n }\n <div class=\"as-modal-body\">\n <ng-template #contentHost></ng-template>\n </div>\n </div>\n", styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}.as-modal.sm{width:300px}.as-modal.md{width:600px}.as-modal.lg{width:900px}.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}.as-modal-body{padding:12px}.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
123
  }
100
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ModalContainerComponent, decorators: [{
101
125
  type: Component,
102
- args: [{ selector: 'as-modal-container', template: `
103
- <div class="as-modal-backdrop" (click)="backdropClick()"></div>
104
- <div class="as-modal" [ngClass]="size()" role="dialog" aria-modal="true">
105
- <div class="as-modal-header" *ngIf="title() || showClose()">
106
- <h3 class="as-modal-title">{{ title() }}</h3>
107
- <button *ngIf="showClose()" class="as-modal-close" (click)="close()">&times;</button>
108
- </div>
109
- <div class="as-modal-body">
110
- <ng-template #contentHost></ng-template>
111
- </div>
112
- </div>
113
- `, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}\n", ".as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}\n", ".as-modal.sm{width:300px}\n", ".as-modal.md{width:600px}\n", ".as-modal.lg{width:900px}\n", ".as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}\n", ".as-modal-body{padding:12px}\n", ".as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"] }]
126
+ args: [{ selector: 'as-modal-container', imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "\n <div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n <div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n @if (title() || showClose()) {\n <div class=\"as-modal-header\">\n <h3 class=\"as-modal-title\">{{ title() }}</h3>\n @if (showClose()) {\n <button class=\"btn-close close pull-right\" type=\"button\" (click)=\"backdropClick()\"></button>\n }\n </div>\n }\n <div class=\"as-modal-body\">\n <ng-template #contentHost></ng-template>\n </div>\n </div>\n", styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}.as-modal.sm{width:300px}.as-modal.md{width:600px}.as-modal.lg{width:900px}.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}.as-modal-body{padding:12px}.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"] }]
114
127
  }], propDecorators: { contentHost: [{
115
128
  type: ViewChild,
116
129
  args: ['contentHost', { read: ViewContainerRef, static: true }]
117
- }], closed: [{
118
- type: Output
119
- }] } });
130
+ }], closed: [{ type: i0.Output, args: ["closed"] }] } });
131
+
132
+ class BaseModalComponent {
133
+ onClose = output();
134
+ sendEvent(result = undefined) {
135
+ this.onClose.emit(result);
136
+ }
137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BaseModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
138
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BaseModalComponent, isStandalone: true, outputs: { onClose: "onClose" }, ngImport: i0 });
139
+ }
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BaseModalComponent, decorators: [{
141
+ type: Directive
142
+ }], propDecorators: { onClose: [{ type: i0.Output, args: ["onClose"] }] } });
120
143
 
121
144
  class ModalRef {
122
145
  componentRef;
@@ -163,12 +186,9 @@ class ModalService {
163
186
  environmentInjector: this.envInjector
164
187
  });
165
188
  // set container inputs using signal-aware helper
166
- // this.setInput(compRef.instance as any, 'title', config.title);
167
- // this.setInput(compRef.instance as any, 'size', config.size ?? 'md');
168
- // this.setInput(compRef.instance as any, 'showClose', config.showClose !== false);
169
- this.setInput(compRef, 'title', config.title);
170
- this.setInput(compRef, 'size', config.size ?? 'md');
171
- this.setInput(compRef, 'showClose', config.showClose !== false);
189
+ this.setInput(compRef.instance, 'title', config.title);
190
+ this.setInput(compRef.instance, 'size', config.size ?? 'md');
191
+ this.setInput(compRef.instance, 'showClose', config.showClose !== false);
172
192
  this.appRef.attachView(compRef.hostView);
173
193
  hostEl.appendChild(compRef.hostView.rootNodes[0]);
174
194
  // the container's loadComponent handles assigning inputs (including signals) to the child
@@ -184,13 +204,13 @@ class ModalService {
184
204
  return modalRef;
185
205
  }
186
206
  setInput(targetInstance, key, value) {
187
- // const target = targetInstance[key];
188
- // if (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {
189
- // (target as any).set(value);
190
- // } else {
191
- // targetInstance[key] = value;
192
- // }
193
- targetInstance.setInput(key, value);
207
+ const target = targetInstance[key];
208
+ if (typeof target === 'function' && target && 'set' in target && typeof target.set === 'function') {
209
+ target.set(value);
210
+ }
211
+ else {
212
+ targetInstance[key] = value;
213
+ }
194
214
  }
195
215
  isWritableSignal(s) {
196
216
  return isSignal(s) && typeof s.set === 'function';
@@ -821,5 +841,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
821
841
  * Generated bundle index. Do not edit.
822
842
  */
823
843
 
824
- export { AsComponents, ModalContainerComponent, ModalRef, ModalService, TooltipComponent, TooltipDirective, TypeaheadDirective, TypeaheadPanelComponent };
844
+ export { AsComponents, BaseModalComponent, ModalContainerComponent, ModalRef, ModalService, TooltipComponent, TooltipDirective, TypeaheadDirective, TypeaheadPanelComponent };
825
845
  //# sourceMappingURL=agentsmith.bgd-as-components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentsmith.bgd-as-components.mjs","sources":["../../../projects/as-components/src/lib/as-components.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.ts","../../../projects/as-components/src/lib/services/modal-ref.ts","../../../projects/as-components/src/lib/services/modal.service.ts","../../../projects/as-components/src/lib/tooltip/tooltip.component.ts","../../../projects/as-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/as-components/src/lib/typeahead/typeahead-panel.component.ts","../../../projects/as-components/src/lib/typeahead/typeahead.directive.ts","../../../projects/as-components/src/public-api.ts","../../../projects/as-components/src/agentsmith.bgd-as-components.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-as-components',\n imports: [],\n template: `\n <p>\n as-components works!\n </p>\n `,\n styles: ``,\n})\nexport class AsComponents {\n\n}\n","// TypeScript\nimport {\n Component,\n EventEmitter,\n signal,\n WritableSignal,\n Input as _DeprecatedInput,\n Output,\n ViewChild,\n ViewContainerRef,\n Type,\n ComponentRef,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'as-modal-container',\n template: `\n <div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n <div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n <div class=\"as-modal-header\" *ngIf=\"title() || showClose()\">\n <h3 class=\"as-modal-title\">{{ title() }}</h3>\n <button *ngIf=\"showClose()\" class=\"as-modal-close\" (click)=\"close()\">&times;</button>\n </div>\n <div class=\"as-modal-body\">\n <ng-template #contentHost></ng-template>\n </div>\n </div>\n `,\n styles: [\n `.as-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000}`,\n `.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}`,\n `.as-modal.sm{width:300px}`, `.as-modal.md{width:600px}`, `.as-modal.lg{width:900px}`,\n `.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}`,\n `.as-modal-body{padding:12px}`,\n `.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}`\n ],\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class ModalContainerComponent {\n @ViewChild('contentHost', { read: ViewContainerRef, static: true }) contentHost!: ViewContainerRef;\n\n // signal-based inputs\n title: WritableSignal<string | undefined> = signal<string | undefined>(undefined);\n size: WritableSignal<'sm' | 'md' | 'lg'> = signal<'sm' | 'md' | 'lg'>('md');\n showClose: WritableSignal<boolean> = signal<boolean>(true);\n\n @Output() closed = new EventEmitter<any>();\n\n get sizeClass() {\n return this.size(); // template uses size() directly; keep helper for compatibility if needed\n }\n\n /**\n * Create a component inside the container and set inputs.\n * Supports:\n * - assigning to writable signals (calls `.set(...)`)\n * - assigning to plain properties\n * Also handles primitive `inputs` mapping to common names.\n */\n loadComponent<T>(component: Type<T>, inputs?: Partial<T> | any): ComponentRef<T> {\n const compRef = this.contentHost.createComponent<T>(component);\n\n if (inputs !== undefined && inputs !== null) {\n if (typeof inputs === 'object' && !Array.isArray(inputs)) {\n for (const key of Object.keys(inputs)) {\n // this.setInput(compRef.instance as any, key, (inputs as any)[key]);\n this.setInput(compRef as any, key, (inputs as any)[key]);\n }\n } else {\n // primitive mapping\n // const inst = compRef.instance as any;\n const inst = compRef as any;\n if ('message' in inst) this.setInput(inst, 'message', inputs);\n else if ('data' in inst) this.setInput(inst, 'data', inputs);\n else this.setInput(inst, 'value', inputs);\n }\n\n // ensure rendering for OnPush / signal changes\n compRef.changeDetectorRef?.detectChanges();\n }\n\n return compRef;\n }\n\n private setInput(targetInstance: any, key: string, value: any) {\n targetInstance.setInput(key, value)\n //\n // const target = targetInstance[key];\n // // writable signal: function with 'set'\n // if (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {\n // (target as WritableSignal<any>).set(value);\n // } else {\n // targetInstance[key] = value;\n // }\n }\n\n backdropClick() {\n this.close();\n }\n\n close(result?: any) {\n this.closed.emit(result);\n }\n}\n","// TypeScript\nimport { ComponentRef } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\nexport class ModalRef {\n private _onClose = new Subject<any>();\n onClose: Observable<any> = this._onClose.asObservable();\n\n constructor(private componentRef: ComponentRef<any>, private hostElement: HTMLElement) {}\n\n close(result?: any) {\n this._onClose.next(result);\n this._onClose.complete();\n this.destroy();\n }\n\n private destroy() {\n try {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n } finally {\n if (this.hostElement && this.hostElement.parentNode) {\n this.hostElement.parentNode.removeChild(this.hostElement);\n }\n }\n }\n}\n","// TypeScript\nimport {\n Injectable,\n ApplicationRef,\n Injector,\n Type,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n isSignal, WritableSignal\n} from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { ModalContainerComponent } from '../modal-container/modal-container.component';\n\nexport interface ModalConfig {\n id?: string;\n size?: 'sm' | 'md' | 'lg';\n title?: string;\n showClose?: boolean;\n data?: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private injector: Injector,\n private appRef: ApplicationRef,\n private envInjector: EnvironmentInjector\n ) {}\n\n show<T>(component: Type<T>, config: ModalConfig = {}): ModalRef {\n const hostEl = document.createElement('div');\n document.body.appendChild(hostEl);\n\n const compRef: ComponentRef<ModalContainerComponent> = createComponent(ModalContainerComponent, {\n environmentInjector: this.envInjector\n });\n\n // set container inputs using signal-aware helper\n // this.setInput(compRef.instance as any, 'title', config.title);\n // this.setInput(compRef.instance as any, 'size', config.size ?? 'md');\n // this.setInput(compRef.instance as any, 'showClose', config.showClose !== false);\n this.setInput(compRef as any, 'title', config.title);\n this.setInput(compRef as any, 'size', config.size ?? 'md');\n this.setInput(compRef as any, 'showClose', config.showClose !== false);\n\n this.appRef.attachView(compRef.hostView);\n hostEl.appendChild((compRef.hostView as any).rootNodes[0] as HTMLElement);\n\n // the container's loadComponent handles assigning inputs (including signals) to the child\n const childRef: ComponentRef<T> = compRef.instance.loadComponent(component, config.data);\n\n const modalRef = new ModalRef(compRef as any, hostEl);\n\n compRef.instance.closed.subscribe((result?: any) => {\n modalRef.close(result);\n });\n\n const maybeEmitter = (childRef.instance as any).onClose;\n if (maybeEmitter && typeof maybeEmitter.subscribe === 'function') {\n maybeEmitter.subscribe((res: any) => modalRef.close(res));\n }\n\n return modalRef;\n }\n\n private setInput(targetInstance: ComponentRef<any>, key: string, value: any) {\n // const target = targetInstance[key];\n // if (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {\n // (target as any).set(value);\n // } else {\n // targetInstance[key] = value;\n // }\n targetInstance.setInput(key, value);\n }\n private isWritableSignal<T>(s: unknown): s is WritableSignal<T> {\n return isSignal(s) && typeof (s as WritableSignal<T>).set === 'function';\n }\n}\n","\nimport { Component, signal, WritableSignal, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'as-tooltip',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"as-tooltip\"\n [class.as-placement-top]=\"placement() === 'bottom'\"\n [class.as-placement-bottom]=\"placement() === 'top'\"\n [class.as-placement-left]=\"placement() === 'right'\"\n [class.as-placement-right]=\"placement() === 'left'\"\n [attr.id]=\"id()\"\n role=\"tooltip\"\n [attr.aria-hidden]=\"!text()\"\n >\n {{ text() }}\n <span class=\"as-tooltip-arrow\" aria-hidden=\"true\"></span>\n </div>\n `,\n styles: [\n `\n :host { display: block; }\n\n .as-tooltip {\n position: relative;\n display: inline-block;\n background: rgba(97, 97, 97, 0.95);\n color: #fff;\n padding: 6px 10px;\n border-radius: 4px;\n font-size: 12px;\n max-width: 240px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.2);\n line-height: 1.2;\n }\n\n /* Arrow base: zero-sized element using borders to form a triangle */\n .as-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n }\n\n /* Bottom placement: tooltip sits above origin, arrow points downwards (at bottom of tooltip) */\n .as-placement-bottom .as-tooltip-arrow {\n left: 50%;\n transform: translateX(-50%);\n top: 100%;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid rgba(97, 97, 97, 0.95);\n }\n\n /* Top placement: tooltip sits below origin, arrow points upwards (at top of tooltip) */\n .as-placement-top .as-tooltip-arrow {\n left: 50%;\n transform: translateX(-50%);\n bottom: 100%;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid rgba(97, 97, 97, 0.95);\n }\n\n /* Left placement: tooltip sits to the right of origin, arrow points left (at left edge) */\n .as-placement-left .as-tooltip-arrow {\n top: 50%;\n transform: translateY(-50%);\n right: 100%;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 6px solid rgba(97, 97, 97, 0.95);\n }\n\n /* Right placement: tooltip sits to the left of origin, arrow points right (at right edge) */\n .as-placement-right .as-tooltip-arrow {\n top: 50%;\n transform: translateY(-50%);\n left: 100%;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-left: 6px solid rgba(97, 97, 97, 0.95);\n }\n `\n ]\n})\nexport class TooltipComponent {\n readonly id: WritableSignal<string> = signal(`as-tooltip-${Math.random().toString(36).slice(2, 9)}`);\n\n // Writable text so directive can update via `.set(...)`\n readonly text: WritableSignal<string | null> = signal<string | null>(null);\n\n // Placement signal — set by directive to switch arrow orientation\n readonly placement: WritableSignal<'top' | 'bottom' | 'left' | 'right'> =\n signal<'top' | 'bottom' | 'left' | 'right'>('bottom');\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n computed,\n OnDestroy,\n WritableSignal,\n Injector\n} from '@angular/core';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[asTooltip]',\n standalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly asTooltip = input<string | null>(null);\n readonly asTooltipPlacement= input<'top' | 'bottom' | 'left' | 'right' | 'auto'>('auto');\n\n private overlayRef: OverlayRef | null = null;\n private strategy: FlexibleConnectedPositionStrategy | null = null;\n private posSub: Subscription | null = null;\n\n private readonly positions = computed(() => this.buildPositions(this.asTooltipPlacement()));\n\n @HostListener('mouseenter')\n show(): void {\n const text = this.asTooltip();\n if (!text) return;\n\n if (!this.overlayRef) {\n this.createOverlay();\n }\n\n if (!this.overlayRef!.hasAttached()) {\n const portal = new ComponentPortal(TooltipComponent);\n const compRef = this.overlayRef!.attach(portal);\n\n compRef.instance.text.set(text);\n\n // set aria-describedby\n const id = compRef.instance.id();\n this.host.nativeElement.setAttribute('aria-describedby', id);\n\n // subscribe to CDK's chosen position and write to tooltip placement signal\n if (this.strategy && !this.posSub) {\n this.posSub = this.strategy.positionChanges.subscribe((change: any) => {\n // `change` may contain different property names across CDK versions;\n // try common locations for the resolved connected position.\n const pos: ConnectedPosition | undefined =\n change?.connectionPair ?? change?.connectedPosition ?? change?.lastConnectedPosition ?? change;\n\n if (pos) {\n const placement = this.mapPositionToPlacement(pos);\n compRef.instance.placement.set(placement);\n }\n });\n }\n\n // initial placement hint: map the first position we provided\n const initial = this.positions()[0];\n compRef.instance.placement.set(this.mapPositionToPlacement(initial));\n\n this.overlayRef!.updatePosition();\n }\n }\n\n @HostListener('mouseleave')\n hide(): void {\n this.detachOverlay();\n }\n\n ngOnDestroy(): void {\n this.detachOverlay(true);\n }\n\n private createOverlay(): void {\n const strategy = this.overlay.position()\n .flexibleConnectedTo(this.host)\n .withPositions(this.positions())\n .withPush(true) as FlexibleConnectedPositionStrategy;\n\n // store strategy so we can watch positionChanges\n this.strategy = strategy;\n\n strategy.withDefaultOffsetY(8);\n strategy.withDefaultOffsetX(8);\n\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'as-tooltip-panel',\n hasBackdrop: false,\n });\n }\n\n private detachOverlay(dispose = false): void {\n if (!this.overlayRef) return;\n\n if (this.overlayRef.hasAttached()) {\n const hostEl = this.host.nativeElement;\n if (hostEl.getAttribute('aria-describedby')) {\n hostEl.removeAttribute('aria-describedby');\n }\n }\n\n this.overlayRef.detach();\n\n if (this.posSub) {\n this.posSub.unsubscribe();\n this.posSub = null;\n }\n\n if (dispose) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.strategy = null;\n }\n }\n\n private buildPositions(preferred: 'top' | 'bottom' | 'left' | 'right' | 'auto'): ConnectedPosition[] {\n const top: ConnectedPosition = {\n originX: 'center', originY: 'top',\n overlayX: 'center', overlayY: 'bottom',\n offsetY: -8\n };\n const bottom: ConnectedPosition = {\n originX: 'center', originY: 'bottom',\n overlayX: 'center', overlayY: 'top',\n offsetY: 8\n };\n const left: ConnectedPosition = {\n originX: 'start', originY: 'center',\n overlayX: 'end', overlayY: 'center',\n offsetX: -8\n };\n const right: ConnectedPosition = {\n originX: 'end', originY: 'center',\n overlayX: 'start', overlayY: 'center',\n offsetX: 8\n };\n\n if (preferred === 'auto') {\n return [bottom, top, right, left];\n }\n\n switch (preferred) {\n case 'top': return [top, bottom, right, left];\n case 'bottom': return [bottom, top, right, left];\n case 'left': return [left, right, bottom, top];\n case 'right': return [right, left, bottom, top];\n default: return [bottom, top, right, left];\n }\n }\n\n private mapPositionToPlacement(pos: ConnectedPosition): 'top' | 'bottom' | 'left' | 'right' {\n // Determine placement by comparing origin/overlay alignment used by CDK\n if (pos.originY === 'top' && pos.overlayY === 'bottom') return 'top';\n if (pos.originY === 'bottom' && pos.overlayY === 'top') return 'bottom';\n if (pos.originX === 'start' && pos.overlayX === 'end') return 'left';\n if (pos.originX === 'end' && pos.overlayX === 'start') return 'right';\n // fallback\n return 'bottom';\n }\n}\n","// typescript\nimport { Component, signal, WritableSignal, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface Option {\n key: string;\n value: string;\n}\n\n@Component({\n selector: 'as-typeahead-panel',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"as-typeahead-panel\"\n role=\"listbox\"\n [attr.id]=\"id()\"\n [class.as-empty]=\"items().length === 0\"\n [style.max-height.px]=\"visibleCount() * itemHeight\"\n >\n @for (item of items(); track item.key) {\n <div\n role=\"option\"\n [attr.id]=\"optionId($index)\"\n [attr.aria-selected]=\"$index === activeIndex()\"\n class=\"as-typeahead-option\"\n [class.as-active]=\"$index === activeIndex()\"\n (mouseenter)=\"setActive($index)\"\n (mousemove)=\"setActive($index)\"\n (click)=\"select($index)\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: items()[$index] }\"\n ></ng-container>\n }\n @else {\n {{ displayWith()(item) }}\n }\n </div>\n }\n\n @if (items().length === 0) {\n <div class=\"as-no-results\">No results</div>\n }\n </div>\n `,\n styles: [\n `\n :host { display:block; }\n .as-typeahead-panel {\n min-width: 160px;\n overflow: scroll;\n background: #fff;\n border: 1px solid rgba(0,0,0,0.12);\n box-shadow: 0 4px 10px rgba(0,0,0,0.12);\n border-radius: 4px;\n padding: 4px 0;\n box-sizing: border-box;\n }\n .as-typeahead-option {\n padding: 8px 12px;\n cursor: pointer;\n user-select: none;\n color: #222;\n display: block;\n }\n .as-typeahead-option.as-active {\n background: #f1f1f1;\n }\n .as-no-results {\n padding: 8px 12px;\n color: rgba(0,0,0,0.5);\n }\n .as-empty { min-width: 120px; }\n `\n ]\n})\nexport class TypeaheadPanelComponent {\n readonly id: WritableSignal<string> = signal(`as-typeahead-panel-${Math.random().toString(36).slice(2,9)}`);\n\n readonly items: WritableSignal<Option[]> = signal<Option[]>([]);\n // default shows the `value` field\n readonly displayWith: WritableSignal<(item: Option) => string> =\n signal<(item: Option) => string>((i: Option) => String(i?.value ?? ''));\n\n readonly activeIndex: WritableSignal<number | null> = signal<number | null>(null);\n\n // visual config: how many items visible before scrollbar (set by directive)\n readonly visibleCount: WritableSignal<number> = signal<number>(5);\n readonly itemHeight = 40; // px - used to compute maxHeight\n\n // optional custom template & callback (set by directive)\n optionTemplate: TemplateRef<any> | null = null;\n onSelect: ((item: Option) => void) | null = null;\n\n optionId(i: number) {\n return `${this.id()}-option-${i}`;\n }\n\n setActive(i: number | null) {\n this.activeIndex.set(i);\n }\n\n select(i: number) {\n const items = this.items();\n if (i == null || i < 0 || i >= items.length) return;\n const item = items[i];\n if (this.onSelect) this.onSelect(item);\n }\n}\n","// typescript\nimport {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n WritableSignal,\n computed,\n OnDestroy,\n TemplateRef,\n ViewContainerRef, effect, output\n} from '@angular/core';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TypeaheadPanelComponent, Option } from './typeahead-panel.component';\n\n@Directive({\n selector: '[asTypeahead]',\n standalone: true,\n})\nexport class TypeaheadDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly host = inject(ElementRef<HTMLInputElement>);\n private readonly vcr = inject(ViewContainerRef);\n\n // data source: predefined Option[] (no async required)\n readonly options = input<Option[] | null>(null);\n\n // display function (default -> show value)\n readonly displayWith =\n input<(item: Option) => string>((it: Option) => String(it?.value ?? ''));\n\n // when typing, filter by 'key' or 'value'\n readonly filterBy = input<'key' | 'value'>('value');\n\n // visible items count (controls panel height / scrollbar)\n readonly visibleCount = input<number>(5);\n\n // if true user must choose from list; otherwise free text allowed (creates custom option with key = '__custom__')\n readonly restrictToList = input<boolean>(false);\n\n // outputs as signals\n readonly selectedChange = signal<Option | null>(null);\n readonly blurEvent = signal<string | null>(null);\n readonly openedChange = signal<boolean>(false);\n\n // optional custom template\n readonly asTypeaheadTemplate = input<TemplateRef<any> | null>(null);\n\n // convenience disabled getter (signal input optional)\n readonly disabled = input<boolean>(false);\n\n readonly enableLog = input<boolean>(false);\n\n private overlayRef: OverlayRef | null = null;\n private panelRefInst: TypeaheadPanelComponent | null = null;\n private destroyed = false;\n\n typeaheadOnSelect = output<Option | null>()\n\n private readonly positions = computed(() => this.buildPositions());\n private _lastEmitted: Option | null = null;\n\n constructor() {\n effect(() => {\n const value = this.selectedChange();\n if (value !== this._lastEmitted) {\n this.typeaheadOnSelect.emit(value);\n this._lastEmitted = value;\n this.log('selectedChange', value);\n }\n });\n\n effect(() => {\n this.log('init', this.options(), this.filterBy(), this.visibleCount(), this.restrictToList(), this.disabled());\n // this.open()\n // this.showAllOptions();\n });\n\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n this.detach(true);\n }\n\n // open on focus/click and show full list initially\n @HostListener('focus')\n @HostListener('click')\n onFocusOrClick() {\n if (this.disabled()) return;\n this.open();\n this.showAllOptions();\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n if (this.disabled()) return;\n const value = (e.target as HTMLInputElement).value;\n if (value === '') {\n // empty -> show all\n this.showAllOptions();\n return;\n }\n this.filterAndShow(value);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(e: KeyboardEvent) {\n if (this.disabled()) return;\n\n // open on ArrowDown if closed\n if ((!this.overlayRef || !this.overlayRef.hasAttached()) && e.key === 'ArrowDown') {\n this.open();\n this.showAllOptions();\n e.preventDefault();\n return;\n }\n\n if (!this.overlayRef || !this.overlayRef.hasAttached()) return;\n\n const panel = this.panelRefInst!;\n const items = panel?.items?.() ?? [];\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (items.length === 0) return;\n const next = (panel.activeIndex() == null) ? 0 : Math.min(items.length - 1, panel.activeIndex()! + 1);\n panel.activeIndex.set(next);\n this.scrollToActive();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (items.length === 0) return;\n const prev = (panel.activeIndex() == null) ? items.length - 1 : Math.max(0, panel.activeIndex()! - 1);\n panel.activeIndex.set(prev);\n this.scrollToActive();\n break;\n case 'Enter':\n e.preventDefault();\n if (panel.activeIndex() != null) {\n const i = panel.activeIndex()!;\n const it = items[i];\n this.select(it);\n }\n break;\n case 'Escape':\n e.preventDefault();\n this.close();\n break;\n default:\n break;\n }\n }\n\n @HostListener('blur')\n onBlur() {\n // delay to allow click handlers on overlay to run\n setTimeout(() => {\n if (this.destroyed) return;\n const text = this.host.nativeElement.value?.toString() ?? '';\n const match = this.findMatchingOption(text);\n\n if (this.restrictToList() && !match) {\n // must choose from list -> clear input and selection\n this.selectedChange.set(null);\n this.host.nativeElement.value = '';\n } else if (match) {\n // matched an option -> set selection\n this.selectedChange.set(match);\n } else {\n // no match and free text allowed -> keep input text but do NOT create a custom Option\n this.selectedChange.set(null);\n }\n\n this.blurEvent.set(text || null);\n this.close();\n }, 150);\n }\n\n // helper to create overlay and attach panel\n open() {\n if (this.disabled()) return;\n if (!this.overlayRef) this.createOverlay();\n if (!this.overlayRef!.hasAttached()) {\n const portal = new ComponentPortal(TypeaheadPanelComponent, this.vcr);\n const compRef = this.overlayRef!.attach(portal);\n this.panelRefInst = compRef.instance as TypeaheadPanelComponent;\n\n this.panelRefInst.displayWith.set(this.displayWith());\n this.panelRefInst.optionTemplate = this.asTypeaheadTemplate();\n this.panelRefInst.visibleCount.set(this.visibleCount());\n this.panelRefInst.onSelect = (item: Option) => this.select(item);\n\n const el = this.host.nativeElement;\n el.setAttribute('role', 'combobox');\n el.setAttribute('aria-autocomplete', 'list');\n el.setAttribute('aria-expanded', 'true');\n el.setAttribute('aria-controls', this.panelRefInst.id());\n\n this.openedChange.set(true);\n } else {\n this.overlayRef!.updatePosition();\n }\n }\n\n close() {\n this.detach();\n this.openedChange.set(false);\n }\n\n private detach(dispose = false) {\n if (!this.overlayRef) return;\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n const el = this.host.nativeElement;\n el.removeAttribute('aria-controls');\n el.setAttribute('aria-expanded', 'false');\n el.removeAttribute('aria-activedescendant');\n }\n if (dispose) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.panelRefInst = null;\n }\n }\n\n private createOverlay() {\n const strategy = this.overlay.position()\n .flexibleConnectedTo(this.host)\n .withPositions(this.positions())\n .withPush(true) as FlexibleConnectedPositionStrategy;\n\n strategy.withDefaultOffsetY(4);\n strategy.withDefaultOffsetX(0);\n\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n hasBackdrop: false,\n panelClass: undefined,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n // reposition on strategy changes\n strategy.positionChanges.subscribe(() => {\n setTimeout(() => this.overlayRef?.updatePosition(), 0);\n });\n }\n\n private showAllOptions() {\n const list = this.options() ?? [];\n if (!this.overlayRef || !this.overlayRef.hasAttached()) {\n this.open();\n }\n if (this.panelRefInst) {\n this.panelRefInst.items.set(list);\n this.panelRefInst.activeIndex.set(null);\n }\n }\n\n private filterAndShow(q: string) {\n const list = this.options() ?? [];\n const key = q.toLowerCase();\n const filtered = list.filter(it => {\n if (!it) return false;\n const target = this.filterBy() === 'key' ? String(it.key) : String(it.value);\n return target.toLowerCase().includes(key);\n });\n if (!this.overlayRef || !this.overlayRef.hasAttached()) this.open();\n if (this.panelRefInst) {\n this.panelRefInst.items.set(filtered);\n if (filtered.length > 0) {\n this.panelRefInst.activeIndex.set(0);\n this.scrollToActive();\n } else {\n this.panelRefInst.activeIndex.set(null);\n }\n }\n }\n\n private select(item: Option) {\n this.selectedChange.set(item);\n try {\n this.host.nativeElement.value = this.displayWith()(item);\n } catch { /* ignore */ }\n this.close();\n this.host.nativeElement.focus();\n }\n\n private scrollToActive() {\n const panelEl = this.overlayRef?.overlayElement;\n if (!panelEl || !this.panelRefInst) return;\n const idx = this.panelRefInst.activeIndex();\n if (idx == null) return;\n const optionEl = panelEl.querySelector(`#${this.panelRefInst.optionId(idx)}`) as HTMLElement | null;\n if (optionEl) {\n const panelRect = panelEl.getBoundingClientRect();\n const optRect = optionEl.getBoundingClientRect();\n if (optRect.top < panelRect.top) {\n panelEl.scrollTop -= (panelRect.top - optRect.top);\n } else if (optRect.bottom > panelRect.bottom) {\n panelEl.scrollTop += (optRect.bottom - panelRect.bottom);\n }\n this.host.nativeElement.setAttribute('aria-activedescendant', optionEl.id);\n }\n }\n\n private findMatchingOption(text: string): Option | null {\n const list = this.options() ?? [];\n if (!text) return null;\n const t = text.toLowerCase();\n for (const it of list) {\n if (this.displayWith()(it).toLowerCase() === t) return it;\n if (String(it.key).toLowerCase() === t) return it;\n }\n return null;\n }\n\n private buildPositions(): ConnectedPosition[] {\n const bottomStart: ConnectedPosition = {\n originX: 'start', originY: 'bottom',\n overlayX: 'start', overlayY: 'top',\n offsetY: 4\n };\n const topStart: ConnectedPosition = {\n originX: 'start', originY: 'top',\n overlayX: 'start', overlayY: 'bottom',\n offsetY: -4\n };\n return [bottomStart, topStart];\n }\n\n log(value: any, ...rest: any[]): void {\n if (this.enableLog() || localStorage.getItem('loggerEnable')) {\n console.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS Components -> ${value}`, ...rest);\n }\n }\n}\n","/*\n * Public API Surface of as-components\n */\n\nexport * from './lib/as-components';\nexport * from './lib/modal-container/modal-container.component';\nexport * from './lib/services/modal-ref';\nexport * from './lib/services/modal.service';\nexport * from './lib/tooltip/tooltip.directive';\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/typeahead/typeahead.directive';\nexport * from './lib/typeahead/typeahead-panel.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentsmith.bgd-as-components.mjs","sources":["../../../projects/as-components/src/lib/as-components.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.html","../../../projects/as-components/src/lib/modal-container/base-modal.component.ts","../../../projects/as-components/src/lib/services/modal-ref.ts","../../../projects/as-components/src/lib/services/modal.service.ts","../../../projects/as-components/src/lib/tooltip/tooltip.component.ts","../../../projects/as-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/as-components/src/lib/typeahead/typeahead-panel.component.ts","../../../projects/as-components/src/lib/typeahead/typeahead.directive.ts","../../../projects/as-components/src/public-api.ts","../../../projects/as-components/src/agentsmith.bgd-as-components.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-as-components',\n imports: [],\n template: `\n <p>\n as-components works!\n </p>\n `,\n styles: ``,\n})\nexport class AsComponents {\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n output,\n signal,\n Type,\n ViewChild,\n ViewContainerRef, ViewEncapsulation\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nexport interface ResultPayload {\n action: string,\n payload?: unknown\n}\n\n@Component({\n selector: 'as-modal-container',\n templateUrl: 'modal-container.component.html',\n styleUrl: 'modal-container.component.scss',\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class ModalContainerComponent {\n @ViewChild('contentHost', {read: ViewContainerRef, static: true}) contentHost!: ViewContainerRef;\n\n // signal-based inputs\n title = signal<string | undefined>(undefined);\n size = signal<'sm' | 'md' | 'lg'>('md');\n showClose = signal<boolean>(true);\n\n closed = output<ResultPayload | undefined>();\n\n get sizeClass() {\n return this.size(); // template uses size() directly; keep helper for compatibility if needed\n }\n\n /**\n * Create a component inside the container and set inputs.\n * Supports:\n * - assigning to writable signals (calls `.set(...)`)\n * - assigning to plain properties\n * Also handles primitive `inputs` mapping to common names.\n */\n loadComponent<T>(component: Type<T>, inputs?: Partial<T> | any): ComponentRef<T> {\n const compRef = this.contentHost.createComponent<T>(component);\n\n /* 🟡 PRIME every signal (factory → real signal) */\n const inst = compRef.instance as Record<string, any>;\n for (const key in inst) {\n const prop = inst[key];\n //console.log('prop check', { key, prop, typeofProp: typeof prop });\n if (typeof prop === 'function') {\n // **real consumer read** → forces input() to become WritableSignal\n const value = prop(); // ← Angular input() **must** be called\n //console.log('>>> primed', { key, value, constructor: prop?.constructor?.name, proto: Object.prototype.toString.call(prop) });\n }\n }\n\n for (const key in inst) {\n const prop = inst[key];\n if (typeof prop === 'function' && prop.length === 0) {\n // cheap check: call once (forces input() to become WritableSignal)\n prop();\n }\n }\n\n if (inputs !== undefined && inputs !== null) {\n if (typeof inputs === 'object' && !Array.isArray(inputs)) {\n for (const key of Object.keys(inputs)) {\n const prop = (compRef.instance as any)[key];\n // console.log('>>> setInput dump', {\n // key,\n // prop,\n // typeofProp: typeof prop,\n // isFunction: typeof prop === 'function',\n // hasSet: prop?.set !== undefined,\n // constructor: prop?.constructor?.name,\n // proto: Object.prototype.toString.call(prop)\n // });\n this.setInput(compRef.instance as any, key, (inputs as any)[key], compRef);\n }\n } else {\n // primitive mapping\n // const inst = compRef.instance as any;\n const inst = compRef as any;\n if ('message' in inst) this.setInput(inst, 'message', inputs, compRef);\n else if ('data' in inst) this.setInput(inst, 'data', inputs, compRef);\n else this.setInput(inst, 'value', inputs, compRef);\n }\n\n // ensure rendering for OnPush / signal changes\n compRef.changeDetectorRef?.detectChanges();\n }\n\n return compRef;\n }\n\n private setInput(targetInstance: any, key: string, value: any, compRef: ComponentRef<any>) {\n const before = targetInstance[key];\n //console.log('>>> inside setInput BEFORE', key, before);\n const target = targetInstance[key];\n\n if (typeof target === 'function' && 'set' in target && typeof target.set === 'function') {\n // ✅ writable signal\n target.set(value);\n //console.log(`setInput: signal .set() called for ${key}`, targetInstance[key]);\n } else if (typeof target === 'function') {\n // 🔹 signal is readonly → cannot set\n compRef.setInput(key, value);\n //console.log(`setInput: target ${key} is a readonly signal!`, targetInstance[key]);\n } else {\n // fallback for raw primitive (optional)\n targetInstance[key] = value;\n //console.log(`setInput: raw assign for ${key}`, targetInstance[key]);\n }\n }\n\n backdropClick() {\n this.close();\n }\n\n close(result?: ResultPayload) {\n this.closed.emit(result);\n }\n}\n","\n <div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n <div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n @if (title() || showClose()) {\n <div class=\"as-modal-header\">\n <h3 class=\"as-modal-title\">{{ title() }}</h3>\n @if (showClose()) {\n <button class=\"btn-close close pull-right\" type=\"button\" (click)=\"backdropClick()\"></button>\n }\n </div>\n }\n <div class=\"as-modal-body\">\n <ng-template #contentHost></ng-template>\n </div>\n </div>\n","import {Directive, EventEmitter, output} from '@angular/core';\nimport {ResultPayload} from './modal-container.component';\n\n@Directive()\nexport abstract class BaseModalComponent {\n readonly onClose = output<ResultPayload | undefined>();\n\n protected sendEvent(result: ResultPayload | undefined = undefined) {\n this.onClose.emit(result);\n }\n}\n","// TypeScript\nimport { ComponentRef } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\nexport class ModalRef {\n private _onClose = new Subject<any>();\n onClose: Observable<any> = this._onClose.asObservable();\n\n constructor(private componentRef: ComponentRef<any>, private hostElement: HTMLElement) {}\n\n close(result?: any) {\n this._onClose.next(result);\n this._onClose.complete();\n this.destroy();\n }\n\n private destroy() {\n try {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n } finally {\n if (this.hostElement && this.hostElement.parentNode) {\n this.hostElement.parentNode.removeChild(this.hostElement);\n }\n }\n }\n}\n","// TypeScript\nimport {\n Injectable,\n ApplicationRef,\n Injector,\n Type,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n isSignal, WritableSignal\n} from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport {ModalContainerComponent, ResultPayload} from '../modal-container/modal-container.component';\n\nexport interface ModalConfig {\n id?: string;\n size?: 'sm' | 'md' | 'lg';\n title?: string;\n showClose?: boolean;\n data?: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private injector: Injector,\n private appRef: ApplicationRef,\n private envInjector: EnvironmentInjector\n ) {}\n\n show<T>(component: Type<T>, config: ModalConfig = {}): ModalRef {\n const hostEl = document.createElement('div');\n document.body.appendChild(hostEl);\n\n const compRef: ComponentRef<ModalContainerComponent> = createComponent(ModalContainerComponent, {\n environmentInjector: this.envInjector\n });\n\n // set container inputs using signal-aware helper\n this.setInput(compRef.instance as any, 'title', config.title);\n this.setInput(compRef.instance as any, 'size', config.size ?? 'md');\n this.setInput(compRef.instance as any, 'showClose', config.showClose !== false);\n\n this.appRef.attachView(compRef.hostView);\n hostEl.appendChild((compRef.hostView as any).rootNodes[0] as HTMLElement);\n\n // the container's loadComponent handles assigning inputs (including signals) to the child\n const childRef: ComponentRef<T> = compRef.instance.loadComponent(component, config.data);\n\n const modalRef = new ModalRef(compRef as any, hostEl);\n\n compRef.instance.closed.subscribe((result: ResultPayload | undefined) => {\n modalRef.close(result);\n });\n\n const maybeEmitter = (childRef.instance as any).onClose;\n if (maybeEmitter && typeof maybeEmitter.subscribe === 'function') {\n maybeEmitter.subscribe((res: any) => modalRef.close(res));\n }\n\n return modalRef;\n }\n\n private setInput(targetInstance: any, key: string, value: any) {\n const target = targetInstance[key];\n if (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {\n (target as any).set(value);\n } else {\n targetInstance[key] = value;\n }\n }\n private isWritableSignal<T>(s: unknown): s is WritableSignal<T> {\n return isSignal(s) && typeof (s as WritableSignal<T>).set === 'function';\n }\n}\n","\nimport { Component, signal, WritableSignal, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'as-tooltip',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"as-tooltip\"\n [class.as-placement-top]=\"placement() === 'bottom'\"\n [class.as-placement-bottom]=\"placement() === 'top'\"\n [class.as-placement-left]=\"placement() === 'right'\"\n [class.as-placement-right]=\"placement() === 'left'\"\n [attr.id]=\"id()\"\n role=\"tooltip\"\n [attr.aria-hidden]=\"!text()\"\n >\n {{ text() }}\n <span class=\"as-tooltip-arrow\" aria-hidden=\"true\"></span>\n </div>\n `,\n styles: [\n `\n :host { display: block; }\n\n .as-tooltip {\n position: relative;\n display: inline-block;\n background: rgba(97, 97, 97, 0.95);\n color: #fff;\n padding: 6px 10px;\n border-radius: 4px;\n font-size: 12px;\n max-width: 240px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.2);\n line-height: 1.2;\n }\n\n /* Arrow base: zero-sized element using borders to form a triangle */\n .as-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n }\n\n /* Bottom placement: tooltip sits above origin, arrow points downwards (at bottom of tooltip) */\n .as-placement-bottom .as-tooltip-arrow {\n left: 50%;\n transform: translateX(-50%);\n top: 100%;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid rgba(97, 97, 97, 0.95);\n }\n\n /* Top placement: tooltip sits below origin, arrow points upwards (at top of tooltip) */\n .as-placement-top .as-tooltip-arrow {\n left: 50%;\n transform: translateX(-50%);\n bottom: 100%;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid rgba(97, 97, 97, 0.95);\n }\n\n /* Left placement: tooltip sits to the right of origin, arrow points left (at left edge) */\n .as-placement-left .as-tooltip-arrow {\n top: 50%;\n transform: translateY(-50%);\n right: 100%;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 6px solid rgba(97, 97, 97, 0.95);\n }\n\n /* Right placement: tooltip sits to the left of origin, arrow points right (at right edge) */\n .as-placement-right .as-tooltip-arrow {\n top: 50%;\n transform: translateY(-50%);\n left: 100%;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-left: 6px solid rgba(97, 97, 97, 0.95);\n }\n `\n ]\n})\nexport class TooltipComponent {\n readonly id: WritableSignal<string> = signal(`as-tooltip-${Math.random().toString(36).slice(2, 9)}`);\n\n // Writable text so directive can update via `.set(...)`\n readonly text: WritableSignal<string | null> = signal<string | null>(null);\n\n // Placement signal — set by directive to switch arrow orientation\n readonly placement: WritableSignal<'top' | 'bottom' | 'left' | 'right'> =\n signal<'top' | 'bottom' | 'left' | 'right'>('bottom');\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n computed,\n OnDestroy,\n WritableSignal,\n Injector\n} from '@angular/core';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[asTooltip]',\n standalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly asTooltip = input<string | null>(null);\n readonly asTooltipPlacement= input<'top' | 'bottom' | 'left' | 'right' | 'auto'>('auto');\n\n private overlayRef: OverlayRef | null = null;\n private strategy: FlexibleConnectedPositionStrategy | null = null;\n private posSub: Subscription | null = null;\n\n private readonly positions = computed(() => this.buildPositions(this.asTooltipPlacement()));\n\n @HostListener('mouseenter')\n show(): void {\n const text = this.asTooltip();\n if (!text) return;\n\n if (!this.overlayRef) {\n this.createOverlay();\n }\n\n if (!this.overlayRef!.hasAttached()) {\n const portal = new ComponentPortal(TooltipComponent);\n const compRef = this.overlayRef!.attach(portal);\n\n compRef.instance.text.set(text);\n\n // set aria-describedby\n const id = compRef.instance.id();\n this.host.nativeElement.setAttribute('aria-describedby', id);\n\n // subscribe to CDK's chosen position and write to tooltip placement signal\n if (this.strategy && !this.posSub) {\n this.posSub = this.strategy.positionChanges.subscribe((change: any) => {\n // `change` may contain different property names across CDK versions;\n // try common locations for the resolved connected position.\n const pos: ConnectedPosition | undefined =\n change?.connectionPair ?? change?.connectedPosition ?? change?.lastConnectedPosition ?? change;\n\n if (pos) {\n const placement = this.mapPositionToPlacement(pos);\n compRef.instance.placement.set(placement);\n }\n });\n }\n\n // initial placement hint: map the first position we provided\n const initial = this.positions()[0];\n compRef.instance.placement.set(this.mapPositionToPlacement(initial));\n\n this.overlayRef!.updatePosition();\n }\n }\n\n @HostListener('mouseleave')\n hide(): void {\n this.detachOverlay();\n }\n\n ngOnDestroy(): void {\n this.detachOverlay(true);\n }\n\n private createOverlay(): void {\n const strategy = this.overlay.position()\n .flexibleConnectedTo(this.host)\n .withPositions(this.positions())\n .withPush(true) as FlexibleConnectedPositionStrategy;\n\n // store strategy so we can watch positionChanges\n this.strategy = strategy;\n\n strategy.withDefaultOffsetY(8);\n strategy.withDefaultOffsetX(8);\n\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'as-tooltip-panel',\n hasBackdrop: false,\n });\n }\n\n private detachOverlay(dispose = false): void {\n if (!this.overlayRef) return;\n\n if (this.overlayRef.hasAttached()) {\n const hostEl = this.host.nativeElement;\n if (hostEl.getAttribute('aria-describedby')) {\n hostEl.removeAttribute('aria-describedby');\n }\n }\n\n this.overlayRef.detach();\n\n if (this.posSub) {\n this.posSub.unsubscribe();\n this.posSub = null;\n }\n\n if (dispose) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.strategy = null;\n }\n }\n\n private buildPositions(preferred: 'top' | 'bottom' | 'left' | 'right' | 'auto'): ConnectedPosition[] {\n const top: ConnectedPosition = {\n originX: 'center', originY: 'top',\n overlayX: 'center', overlayY: 'bottom',\n offsetY: -8\n };\n const bottom: ConnectedPosition = {\n originX: 'center', originY: 'bottom',\n overlayX: 'center', overlayY: 'top',\n offsetY: 8\n };\n const left: ConnectedPosition = {\n originX: 'start', originY: 'center',\n overlayX: 'end', overlayY: 'center',\n offsetX: -8\n };\n const right: ConnectedPosition = {\n originX: 'end', originY: 'center',\n overlayX: 'start', overlayY: 'center',\n offsetX: 8\n };\n\n if (preferred === 'auto') {\n return [bottom, top, right, left];\n }\n\n switch (preferred) {\n case 'top': return [top, bottom, right, left];\n case 'bottom': return [bottom, top, right, left];\n case 'left': return [left, right, bottom, top];\n case 'right': return [right, left, bottom, top];\n default: return [bottom, top, right, left];\n }\n }\n\n private mapPositionToPlacement(pos: ConnectedPosition): 'top' | 'bottom' | 'left' | 'right' {\n // Determine placement by comparing origin/overlay alignment used by CDK\n if (pos.originY === 'top' && pos.overlayY === 'bottom') return 'top';\n if (pos.originY === 'bottom' && pos.overlayY === 'top') return 'bottom';\n if (pos.originX === 'start' && pos.overlayX === 'end') return 'left';\n if (pos.originX === 'end' && pos.overlayX === 'start') return 'right';\n // fallback\n return 'bottom';\n }\n}\n","// typescript\nimport { Component, signal, WritableSignal, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface Option {\n key: string;\n value: string;\n}\n\n@Component({\n selector: 'as-typeahead-panel',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"as-typeahead-panel\"\n role=\"listbox\"\n [attr.id]=\"id()\"\n [class.as-empty]=\"items().length === 0\"\n [style.max-height.px]=\"visibleCount() * itemHeight\"\n >\n @for (item of items(); track item.key) {\n <div\n role=\"option\"\n [attr.id]=\"optionId($index)\"\n [attr.aria-selected]=\"$index === activeIndex()\"\n class=\"as-typeahead-option\"\n [class.as-active]=\"$index === activeIndex()\"\n (mouseenter)=\"setActive($index)\"\n (mousemove)=\"setActive($index)\"\n (click)=\"select($index)\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: items()[$index] }\"\n ></ng-container>\n }\n @else {\n {{ displayWith()(item) }}\n }\n </div>\n }\n\n @if (items().length === 0) {\n <div class=\"as-no-results\">No results</div>\n }\n </div>\n `,\n styles: [\n `\n :host { display:block; }\n .as-typeahead-panel {\n min-width: 160px;\n overflow: scroll;\n background: #fff;\n border: 1px solid rgba(0,0,0,0.12);\n box-shadow: 0 4px 10px rgba(0,0,0,0.12);\n border-radius: 4px;\n padding: 4px 0;\n box-sizing: border-box;\n }\n .as-typeahead-option {\n padding: 8px 12px;\n cursor: pointer;\n user-select: none;\n color: #222;\n display: block;\n }\n .as-typeahead-option.as-active {\n background: #f1f1f1;\n }\n .as-no-results {\n padding: 8px 12px;\n color: rgba(0,0,0,0.5);\n }\n .as-empty { min-width: 120px; }\n `\n ]\n})\nexport class TypeaheadPanelComponent {\n readonly id: WritableSignal<string> = signal(`as-typeahead-panel-${Math.random().toString(36).slice(2,9)}`);\n\n readonly items: WritableSignal<Option[]> = signal<Option[]>([]);\n // default shows the `value` field\n readonly displayWith: WritableSignal<(item: Option) => string> =\n signal<(item: Option) => string>((i: Option) => String(i?.value ?? ''));\n\n readonly activeIndex: WritableSignal<number | null> = signal<number | null>(null);\n\n // visual config: how many items visible before scrollbar (set by directive)\n readonly visibleCount: WritableSignal<number> = signal<number>(5);\n readonly itemHeight = 40; // px - used to compute maxHeight\n\n // optional custom template & callback (set by directive)\n optionTemplate: TemplateRef<any> | null = null;\n onSelect: ((item: Option) => void) | null = null;\n\n optionId(i: number) {\n return `${this.id()}-option-${i}`;\n }\n\n setActive(i: number | null) {\n this.activeIndex.set(i);\n }\n\n select(i: number) {\n const items = this.items();\n if (i == null || i < 0 || i >= items.length) return;\n const item = items[i];\n if (this.onSelect) this.onSelect(item);\n }\n}\n","// typescript\nimport {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n WritableSignal,\n computed,\n OnDestroy,\n TemplateRef,\n ViewContainerRef, effect, output\n} from '@angular/core';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TypeaheadPanelComponent, Option } from './typeahead-panel.component';\n\n@Directive({\n selector: '[asTypeahead]',\n standalone: true,\n})\nexport class TypeaheadDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly host = inject(ElementRef<HTMLInputElement>);\n private readonly vcr = inject(ViewContainerRef);\n\n // data source: predefined Option[] (no async required)\n readonly options = input<Option[] | null>(null);\n\n // display function (default -> show value)\n readonly displayWith =\n input<(item: Option) => string>((it: Option) => String(it?.value ?? ''));\n\n // when typing, filter by 'key' or 'value'\n readonly filterBy = input<'key' | 'value'>('value');\n\n // visible items count (controls panel height / scrollbar)\n readonly visibleCount = input<number>(5);\n\n // if true user must choose from list; otherwise free text allowed (creates custom option with key = '__custom__')\n readonly restrictToList = input<boolean>(false);\n\n // outputs as signals\n readonly selectedChange = signal<Option | null>(null);\n readonly blurEvent = signal<string | null>(null);\n readonly openedChange = signal<boolean>(false);\n\n // optional custom template\n readonly asTypeaheadTemplate = input<TemplateRef<any> | null>(null);\n\n // convenience disabled getter (signal input optional)\n readonly disabled = input<boolean>(false);\n\n readonly enableLog = input<boolean>(false);\n\n private overlayRef: OverlayRef | null = null;\n private panelRefInst: TypeaheadPanelComponent | null = null;\n private destroyed = false;\n\n typeaheadOnSelect = output<Option | null>()\n\n private readonly positions = computed(() => this.buildPositions());\n private _lastEmitted: Option | null = null;\n\n constructor() {\n effect(() => {\n const value = this.selectedChange();\n if (value !== this._lastEmitted) {\n this.typeaheadOnSelect.emit(value);\n this._lastEmitted = value;\n this.log('selectedChange', value);\n }\n });\n\n effect(() => {\n this.log('init', this.options(), this.filterBy(), this.visibleCount(), this.restrictToList(), this.disabled());\n // this.open()\n // this.showAllOptions();\n });\n\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n this.detach(true);\n }\n\n // open on focus/click and show full list initially\n @HostListener('focus')\n @HostListener('click')\n onFocusOrClick() {\n if (this.disabled()) return;\n this.open();\n this.showAllOptions();\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n if (this.disabled()) return;\n const value = (e.target as HTMLInputElement).value;\n if (value === '') {\n // empty -> show all\n this.showAllOptions();\n return;\n }\n this.filterAndShow(value);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(e: KeyboardEvent) {\n if (this.disabled()) return;\n\n // open on ArrowDown if closed\n if ((!this.overlayRef || !this.overlayRef.hasAttached()) && e.key === 'ArrowDown') {\n this.open();\n this.showAllOptions();\n e.preventDefault();\n return;\n }\n\n if (!this.overlayRef || !this.overlayRef.hasAttached()) return;\n\n const panel = this.panelRefInst!;\n const items = panel?.items?.() ?? [];\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (items.length === 0) return;\n const next = (panel.activeIndex() == null) ? 0 : Math.min(items.length - 1, panel.activeIndex()! + 1);\n panel.activeIndex.set(next);\n this.scrollToActive();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (items.length === 0) return;\n const prev = (panel.activeIndex() == null) ? items.length - 1 : Math.max(0, panel.activeIndex()! - 1);\n panel.activeIndex.set(prev);\n this.scrollToActive();\n break;\n case 'Enter':\n e.preventDefault();\n if (panel.activeIndex() != null) {\n const i = panel.activeIndex()!;\n const it = items[i];\n this.select(it);\n }\n break;\n case 'Escape':\n e.preventDefault();\n this.close();\n break;\n default:\n break;\n }\n }\n\n @HostListener('blur')\n onBlur() {\n // delay to allow click handlers on overlay to run\n setTimeout(() => {\n if (this.destroyed) return;\n const text = this.host.nativeElement.value?.toString() ?? '';\n const match = this.findMatchingOption(text);\n\n if (this.restrictToList() && !match) {\n // must choose from list -> clear input and selection\n this.selectedChange.set(null);\n this.host.nativeElement.value = '';\n } else if (match) {\n // matched an option -> set selection\n this.selectedChange.set(match);\n } else {\n // no match and free text allowed -> keep input text but do NOT create a custom Option\n this.selectedChange.set(null);\n }\n\n this.blurEvent.set(text || null);\n this.close();\n }, 150);\n }\n\n // helper to create overlay and attach panel\n open() {\n if (this.disabled()) return;\n if (!this.overlayRef) this.createOverlay();\n if (!this.overlayRef!.hasAttached()) {\n const portal = new ComponentPortal(TypeaheadPanelComponent, this.vcr);\n const compRef = this.overlayRef!.attach(portal);\n this.panelRefInst = compRef.instance as TypeaheadPanelComponent;\n\n this.panelRefInst.displayWith.set(this.displayWith());\n this.panelRefInst.optionTemplate = this.asTypeaheadTemplate();\n this.panelRefInst.visibleCount.set(this.visibleCount());\n this.panelRefInst.onSelect = (item: Option) => this.select(item);\n\n const el = this.host.nativeElement;\n el.setAttribute('role', 'combobox');\n el.setAttribute('aria-autocomplete', 'list');\n el.setAttribute('aria-expanded', 'true');\n el.setAttribute('aria-controls', this.panelRefInst.id());\n\n this.openedChange.set(true);\n } else {\n this.overlayRef!.updatePosition();\n }\n }\n\n close() {\n this.detach();\n this.openedChange.set(false);\n }\n\n private detach(dispose = false) {\n if (!this.overlayRef) return;\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n const el = this.host.nativeElement;\n el.removeAttribute('aria-controls');\n el.setAttribute('aria-expanded', 'false');\n el.removeAttribute('aria-activedescendant');\n }\n if (dispose) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.panelRefInst = null;\n }\n }\n\n private createOverlay() {\n const strategy = this.overlay.position()\n .flexibleConnectedTo(this.host)\n .withPositions(this.positions())\n .withPush(true) as FlexibleConnectedPositionStrategy;\n\n strategy.withDefaultOffsetY(4);\n strategy.withDefaultOffsetX(0);\n\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n hasBackdrop: false,\n panelClass: undefined,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n // reposition on strategy changes\n strategy.positionChanges.subscribe(() => {\n setTimeout(() => this.overlayRef?.updatePosition(), 0);\n });\n }\n\n private showAllOptions() {\n const list = this.options() ?? [];\n if (!this.overlayRef || !this.overlayRef.hasAttached()) {\n this.open();\n }\n if (this.panelRefInst) {\n this.panelRefInst.items.set(list);\n this.panelRefInst.activeIndex.set(null);\n }\n }\n\n private filterAndShow(q: string) {\n const list = this.options() ?? [];\n const key = q.toLowerCase();\n const filtered = list.filter(it => {\n if (!it) return false;\n const target = this.filterBy() === 'key' ? String(it.key) : String(it.value);\n return target.toLowerCase().includes(key);\n });\n if (!this.overlayRef || !this.overlayRef.hasAttached()) this.open();\n if (this.panelRefInst) {\n this.panelRefInst.items.set(filtered);\n if (filtered.length > 0) {\n this.panelRefInst.activeIndex.set(0);\n this.scrollToActive();\n } else {\n this.panelRefInst.activeIndex.set(null);\n }\n }\n }\n\n private select(item: Option) {\n this.selectedChange.set(item);\n try {\n this.host.nativeElement.value = this.displayWith()(item);\n } catch { /* ignore */ }\n this.close();\n this.host.nativeElement.focus();\n }\n\n private scrollToActive() {\n const panelEl = this.overlayRef?.overlayElement;\n if (!panelEl || !this.panelRefInst) return;\n const idx = this.panelRefInst.activeIndex();\n if (idx == null) return;\n const optionEl = panelEl.querySelector(`#${this.panelRefInst.optionId(idx)}`) as HTMLElement | null;\n if (optionEl) {\n const panelRect = panelEl.getBoundingClientRect();\n const optRect = optionEl.getBoundingClientRect();\n if (optRect.top < panelRect.top) {\n panelEl.scrollTop -= (panelRect.top - optRect.top);\n } else if (optRect.bottom > panelRect.bottom) {\n panelEl.scrollTop += (optRect.bottom - panelRect.bottom);\n }\n this.host.nativeElement.setAttribute('aria-activedescendant', optionEl.id);\n }\n }\n\n private findMatchingOption(text: string): Option | null {\n const list = this.options() ?? [];\n if (!text) return null;\n const t = text.toLowerCase();\n for (const it of list) {\n if (this.displayWith()(it).toLowerCase() === t) return it;\n if (String(it.key).toLowerCase() === t) return it;\n }\n return null;\n }\n\n private buildPositions(): ConnectedPosition[] {\n const bottomStart: ConnectedPosition = {\n originX: 'start', originY: 'bottom',\n overlayX: 'start', overlayY: 'top',\n offsetY: 4\n };\n const topStart: ConnectedPosition = {\n originX: 'start', originY: 'top',\n overlayX: 'start', overlayY: 'bottom',\n offsetY: -4\n };\n return [bottomStart, topStart];\n }\n\n log(value: any, ...rest: any[]): void {\n if (this.enableLog() || localStorage.getItem('loggerEnable')) {\n console.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS Components -> ${value}`, ...rest);\n }\n }\n}\n","/*\n * Public API Surface of as-components\n */\n\nexport * from './lib/as-components';\nexport * from './lib/modal-container/modal-container.component';\nexport * from './lib/modal-container/base-modal.component';\nexport * from './lib/services/modal-ref';\nexport * from './lib/services/modal.service';\nexport * from './lib/tooltip/tooltip.directive';\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/typeahead/typeahead.directive';\nexport * from './lib/typeahead/typeahead-panel.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentsmith.bgd/as-components",
3
- "version": "21.0.12",
3
+ "version": "21.0.16",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^21.1.0",
6
6
  "@angular/common": "^21.1.0",
@@ -1,18 +1,22 @@
1
- import * as i0 from '@angular/core';
2
- import { ViewContainerRef, WritableSignal, EventEmitter, Type, ComponentRef, Injector, ApplicationRef, EnvironmentInjector, OnDestroy, TemplateRef } from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
+ import { ViewContainerRef, Type, ComponentRef, Injector, ApplicationRef, EnvironmentInjector, OnDestroy, WritableSignal, TemplateRef } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
 
5
5
  declare class AsComponents {
6
- static ɵfac: i0.ɵɵFactoryDeclaration<AsComponents, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<AsComponents, "lib-as-components", never, {}, {}, never, never, true, never>;
6
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsComponents, never>;
7
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsComponents, "lib-as-components", never, {}, {}, never, never, true, never>;
8
8
  }
9
9
 
10
+ interface ResultPayload {
11
+ action: string;
12
+ payload?: unknown;
13
+ }
10
14
  declare class ModalContainerComponent {
11
15
  contentHost: ViewContainerRef;
12
- title: WritableSignal<string | undefined>;
13
- size: WritableSignal<'sm' | 'md' | 'lg'>;
14
- showClose: WritableSignal<boolean>;
15
- closed: EventEmitter<any>;
16
+ title: _angular_core.WritableSignal<string | undefined>;
17
+ size: _angular_core.WritableSignal<"sm" | "md" | "lg">;
18
+ showClose: _angular_core.WritableSignal<boolean>;
19
+ closed: _angular_core.OutputEmitterRef<ResultPayload | undefined>;
16
20
  get sizeClass(): "sm" | "md" | "lg";
17
21
  /**
18
22
  * Create a component inside the container and set inputs.
@@ -24,9 +28,16 @@ declare class ModalContainerComponent {
24
28
  loadComponent<T>(component: Type<T>, inputs?: Partial<T> | any): ComponentRef<T>;
25
29
  private setInput;
26
30
  backdropClick(): void;
27
- close(result?: any): void;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<ModalContainerComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<ModalContainerComponent, "as-modal-container", never, {}, { "closed": "closed"; }, never, never, true, never>;
31
+ close(result?: ResultPayload): void;
32
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalContainerComponent, never>;
33
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalContainerComponent, "as-modal-container", never, {}, { "closed": "closed"; }, never, never, true, never>;
34
+ }
35
+
36
+ declare abstract class BaseModalComponent {
37
+ readonly onClose: _angular_core.OutputEmitterRef<ResultPayload | undefined>;
38
+ protected sendEvent(result?: ResultPayload | undefined): void;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseModalComponent, never>;
40
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseModalComponent, never, never, {}, { "onClose": "onClose"; }, never, never, true, never>;
30
41
  }
31
42
 
32
43
  declare class ModalRef {
@@ -54,16 +65,16 @@ declare class ModalService {
54
65
  show<T>(component: Type<T>, config?: ModalConfig): ModalRef;
55
66
  private setInput;
56
67
  private isWritableSignal;
57
- static ɵfac: i0.ɵɵFactoryDeclaration<ModalService, never>;
58
- static ɵprov: i0.ɵɵInjectableDeclaration<ModalService>;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
69
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
59
70
  }
60
71
 
61
72
  declare class TooltipDirective implements OnDestroy {
62
73
  private readonly overlay;
63
74
  private readonly injector;
64
75
  private readonly host;
65
- readonly asTooltip: i0.InputSignal<string | null>;
66
- readonly asTooltipPlacement: i0.InputSignal<"top" | "bottom" | "left" | "right" | "auto">;
76
+ readonly asTooltip: _angular_core.InputSignal<string | null>;
77
+ readonly asTooltipPlacement: _angular_core.InputSignal<"top" | "bottom" | "left" | "right" | "auto">;
67
78
  private overlayRef;
68
79
  private strategy;
69
80
  private posSub;
@@ -75,16 +86,16 @@ declare class TooltipDirective implements OnDestroy {
75
86
  private detachOverlay;
76
87
  private buildPositions;
77
88
  private mapPositionToPlacement;
78
- static ɵfac: i0.ɵɵFactoryDeclaration<TooltipDirective, never>;
79
- static ɵdir: i0.ɵɵDirectiveDeclaration<TooltipDirective, "[asTooltip]", never, { "asTooltip": { "alias": "asTooltip"; "required": false; "isSignal": true; }; "asTooltipPlacement": { "alias": "asTooltipPlacement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
89
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
90
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[asTooltip]", never, { "asTooltip": { "alias": "asTooltip"; "required": false; "isSignal": true; }; "asTooltipPlacement": { "alias": "asTooltipPlacement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
80
91
  }
81
92
 
82
93
  declare class TooltipComponent {
83
94
  readonly id: WritableSignal<string>;
84
95
  readonly text: WritableSignal<string | null>;
85
96
  readonly placement: WritableSignal<'top' | 'bottom' | 'left' | 'right'>;
86
- static ɵfac: i0.ɵɵFactoryDeclaration<TooltipComponent, never>;
87
- static ɵcmp: i0.ɵɵComponentDeclaration<TooltipComponent, "as-tooltip", never, {}, {}, never, never, true, never>;
97
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
98
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "as-tooltip", never, {}, {}, never, never, true, never>;
88
99
  }
89
100
 
90
101
  interface Option {
@@ -103,29 +114,29 @@ declare class TypeaheadPanelComponent {
103
114
  optionId(i: number): string;
104
115
  setActive(i: number | null): void;
105
116
  select(i: number): void;
106
- static ɵfac: i0.ɵɵFactoryDeclaration<TypeaheadPanelComponent, never>;
107
- static ɵcmp: i0.ɵɵComponentDeclaration<TypeaheadPanelComponent, "as-typeahead-panel", never, {}, {}, never, never, true, never>;
117
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TypeaheadPanelComponent, never>;
118
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TypeaheadPanelComponent, "as-typeahead-panel", never, {}, {}, never, never, true, never>;
108
119
  }
109
120
 
110
121
  declare class TypeaheadDirective implements OnDestroy {
111
122
  private readonly overlay;
112
123
  private readonly host;
113
124
  private readonly vcr;
114
- readonly options: i0.InputSignal<Option[] | null>;
115
- readonly displayWith: i0.InputSignal<(item: Option) => string>;
116
- readonly filterBy: i0.InputSignal<"value" | "key">;
117
- readonly visibleCount: i0.InputSignal<number>;
118
- readonly restrictToList: i0.InputSignal<boolean>;
125
+ readonly options: _angular_core.InputSignal<Option[] | null>;
126
+ readonly displayWith: _angular_core.InputSignal<(item: Option) => string>;
127
+ readonly filterBy: _angular_core.InputSignal<"value" | "key">;
128
+ readonly visibleCount: _angular_core.InputSignal<number>;
129
+ readonly restrictToList: _angular_core.InputSignal<boolean>;
119
130
  readonly selectedChange: WritableSignal<Option | null>;
120
131
  readonly blurEvent: WritableSignal<string | null>;
121
132
  readonly openedChange: WritableSignal<boolean>;
122
- readonly asTypeaheadTemplate: i0.InputSignal<TemplateRef<any> | null>;
123
- readonly disabled: i0.InputSignal<boolean>;
124
- readonly enableLog: i0.InputSignal<boolean>;
133
+ readonly asTypeaheadTemplate: _angular_core.InputSignal<TemplateRef<any> | null>;
134
+ readonly disabled: _angular_core.InputSignal<boolean>;
135
+ readonly enableLog: _angular_core.InputSignal<boolean>;
125
136
  private overlayRef;
126
137
  private panelRefInst;
127
138
  private destroyed;
128
- typeaheadOnSelect: i0.OutputEmitterRef<Option | null>;
139
+ typeaheadOnSelect: _angular_core.OutputEmitterRef<Option | null>;
129
140
  private readonly positions;
130
141
  private _lastEmitted;
131
142
  constructor();
@@ -145,9 +156,9 @@ declare class TypeaheadDirective implements OnDestroy {
145
156
  private findMatchingOption;
146
157
  private buildPositions;
147
158
  log(value: any, ...rest: any[]): void;
148
- static ɵfac: i0.ɵɵFactoryDeclaration<TypeaheadDirective, never>;
149
- static ɵdir: i0.ɵɵDirectiveDeclaration<TypeaheadDirective, "[asTypeahead]", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "visibleCount": { "alias": "visibleCount"; "required": false; "isSignal": true; }; "restrictToList": { "alias": "restrictToList"; "required": false; "isSignal": true; }; "asTypeaheadTemplate": { "alias": "asTypeaheadTemplate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "enableLog": { "alias": "enableLog"; "required": false; "isSignal": true; }; }, { "typeaheadOnSelect": "typeaheadOnSelect"; }, never, never, true, never>;
159
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TypeaheadDirective, never>;
160
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TypeaheadDirective, "[asTypeahead]", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "visibleCount": { "alias": "visibleCount"; "required": false; "isSignal": true; }; "restrictToList": { "alias": "restrictToList"; "required": false; "isSignal": true; }; "asTypeaheadTemplate": { "alias": "asTypeaheadTemplate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "enableLog": { "alias": "enableLog"; "required": false; "isSignal": true; }; }, { "typeaheadOnSelect": "typeaheadOnSelect"; }, never, never, true, never>;
150
161
  }
151
162
 
152
- export { AsComponents, ModalContainerComponent, ModalRef, ModalService, TooltipComponent, TooltipDirective, TypeaheadDirective, TypeaheadPanelComponent };
153
- export type { ModalConfig, Option };
163
+ export { AsComponents, BaseModalComponent, ModalContainerComponent, ModalRef, ModalService, TooltipComponent, TooltipDirective, TypeaheadDirective, TypeaheadPanelComponent };
164
+ export type { ModalConfig, Option, ResultPayload };