@agentsmith.bgd/as-components 21.0.18 → 21.0.19

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.
@@ -517,187 +517,163 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
517
517
  `, styles: [":host{display:block}.as-typeahead-panel{min-width:160px;overflow:scroll;background:#fff;border:1px solid rgba(0,0,0,.12);box-shadow:0 4px 10px #0000001f;border-radius:4px;padding:4px 0;box-sizing:border-box}.as-typeahead-option{padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;color:#222;display:block}.as-typeahead-option.as-active{background:#f1f1f1}.as-no-results{padding:8px 12px;color:#00000080}.as-empty{min-width:120px}\n"] }]
518
518
  }] });
519
519
 
520
- // typescript
521
520
  class TypeaheadDirective {
521
+ /* ---------------- injections ---------------- */
522
522
  overlay = inject(Overlay);
523
523
  host = inject((ElementRef));
524
524
  vcr = inject(ViewContainerRef);
525
- // data source: predefined Option[] (no async required)
525
+ /* ---------------- inputs ---------------- */
526
526
  options = input(null, ...(ngDevMode ? [{ debugName: "options" }] : []));
527
- // display function (default -> show value)
528
527
  displayWith = input((it) => String(it?.value ?? ''), ...(ngDevMode ? [{ debugName: "displayWith" }] : []));
529
- // when typing, filter by 'key' or 'value'
530
528
  filterBy = input('value', ...(ngDevMode ? [{ debugName: "filterBy" }] : []));
531
- // visible items count (controls panel height / scrollbar)
532
529
  visibleCount = input(5, ...(ngDevMode ? [{ debugName: "visibleCount" }] : []));
533
- // if true user must choose from list; otherwise free text allowed (creates custom option with key = '__custom__')
534
530
  restrictToList = input(false, ...(ngDevMode ? [{ debugName: "restrictToList" }] : []));
535
- // outputs as signals
536
- selectedChange = signal(null, ...(ngDevMode ? [{ debugName: "selectedChange" }] : []));
537
- blurEvent = signal(null, ...(ngDevMode ? [{ debugName: "blurEvent" }] : []));
538
- openedChange = signal(false, ...(ngDevMode ? [{ debugName: "openedChange" }] : []));
539
- // optional custom template
540
531
  asTypeaheadTemplate = input(null, ...(ngDevMode ? [{ debugName: "asTypeaheadTemplate" }] : []));
541
- // convenience disabled getter (signal input optional)
542
532
  disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
543
- enableLog = input(false, ...(ngDevMode ? [{ debugName: "enableLog" }] : []));
533
+ /* ---------------- outputs ---------------- */
534
+ typeaheadOnSelect = output();
535
+ /* ---------------- internal ---------------- */
536
+ cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : []));
537
+ selected = signal(null, ...(ngDevMode ? [{ debugName: "selected" }] : []));
544
538
  overlayRef = null;
545
- panelRefInst = null;
539
+ panel = null;
546
540
  destroyed = false;
547
- typeaheadOnSelect = output();
541
+ onChange = () => { };
542
+ onTouched = () => { };
548
543
  positions = computed(() => this.buildPositions(), ...(ngDevMode ? [{ debugName: "positions" }] : []));
549
- _lastEmitted = null;
550
544
  constructor() {
545
+ /* propagate selection */
551
546
  effect(() => {
552
- const value = this.selectedChange();
553
- if (value !== this._lastEmitted) {
554
- this.typeaheadOnSelect.emit(value);
555
- this._lastEmitted = value;
556
- this.log('selectedChange', value);
557
- }
547
+ const sel = this.selected();
548
+ this.typeaheadOnSelect.emit(sel);
549
+ this.onChange(sel?.key ?? null);
558
550
  });
551
+ /* sync initial value -> input text */
559
552
  effect(() => {
560
- this.log('init', this.options(), this.filterBy(), this.visibleCount(), this.restrictToList(), this.disabled());
561
- // this.open()
562
- // this.showAllOptions();
553
+ const sel = this.selected();
554
+ if (!sel)
555
+ return;
556
+ this.host.nativeElement.value = this.displayWith()(sel);
563
557
  });
564
558
  }
559
+ /* ---------------- CVA ---------------- */
560
+ writeValue(value) {
561
+ if (value == null) {
562
+ this.selected.set(null);
563
+ this.host.nativeElement.value = '';
564
+ return;
565
+ }
566
+ const match = this.options()?.find(o => o.key === value) ?? null;
567
+ this.selected.set(match);
568
+ if (match) {
569
+ this.host.nativeElement.value = this.displayWith()(match);
570
+ }
571
+ else {
572
+ this.host.nativeElement.value = String(value);
573
+ }
574
+ }
575
+ registerOnChange(fn) {
576
+ this.onChange = fn;
577
+ }
578
+ registerOnTouched(fn) {
579
+ this.onTouched = fn;
580
+ }
581
+ setDisabledState(isDisabled) {
582
+ this.cvaDisabled.set(isDisabled);
583
+ }
565
584
  ngOnDestroy() {
566
585
  this.destroyed = true;
567
586
  this.detach(true);
568
587
  }
569
- // open on focus/click and show full list initially
570
- onFocusOrClick() {
571
- if (this.disabled())
588
+ /* ---------------- host events ---------------- */
589
+ onFocus() {
590
+ if (this.isDisabled())
572
591
  return;
573
592
  this.open();
574
- this.showAllOptions();
593
+ this.showAll();
575
594
  }
576
595
  onInput(e) {
577
- if (this.disabled())
596
+ if (this.isDisabled())
578
597
  return;
579
598
  const value = e.target.value;
580
- if (value === '') {
581
- // empty -> show all
582
- this.showAllOptions();
583
- return;
584
- }
585
- this.filterAndShow(value);
599
+ value ? this.filter(value) : this.showAll();
586
600
  }
587
601
  onKeydown(e) {
588
- if (this.disabled())
602
+ if (this.isDisabled() || !this.panel)
589
603
  return;
590
- // open on ArrowDown if closed
591
- if ((!this.overlayRef || !this.overlayRef.hasAttached()) && e.key === 'ArrowDown') {
592
- this.open();
593
- this.showAllOptions();
594
- e.preventDefault();
595
- return;
596
- }
597
- if (!this.overlayRef || !this.overlayRef.hasAttached())
604
+ const items = this.panel.items();
605
+ if (!items.length)
598
606
  return;
599
- const panel = this.panelRefInst;
600
- const items = panel?.items?.() ?? [];
607
+ let idx = this.panel.activeIndex();
601
608
  switch (e.key) {
602
609
  case 'ArrowDown':
603
610
  e.preventDefault();
604
- if (items.length === 0)
605
- return;
606
- const next = (panel.activeIndex() == null) ? 0 : Math.min(items.length - 1, panel.activeIndex() + 1);
607
- panel.activeIndex.set(next);
608
- this.scrollToActive();
611
+ idx = idx == null ? 0 : Math.min(items.length - 1, idx + 1);
612
+ this.panel.setActive(idx);
609
613
  break;
610
614
  case 'ArrowUp':
611
615
  e.preventDefault();
612
- if (items.length === 0)
613
- return;
614
- const prev = (panel.activeIndex() == null) ? items.length - 1 : Math.max(0, panel.activeIndex() - 1);
615
- panel.activeIndex.set(prev);
616
- this.scrollToActive();
616
+ idx = idx == null ? items.length - 1 : Math.max(0, idx - 1);
617
+ this.panel.setActive(idx);
617
618
  break;
618
619
  case 'Enter':
619
620
  e.preventDefault();
620
- if (panel.activeIndex() != null) {
621
- const i = panel.activeIndex();
622
- const it = items[i];
623
- this.select(it);
624
- }
621
+ if (idx != null)
622
+ this.panel.select(idx);
625
623
  break;
626
624
  case 'Escape':
627
- e.preventDefault();
628
625
  this.close();
629
626
  break;
630
- default:
631
- break;
632
627
  }
633
628
  }
634
629
  onBlur() {
635
- // delay to allow click handlers on overlay to run
636
630
  setTimeout(() => {
637
631
  if (this.destroyed)
638
632
  return;
639
- const text = this.host.nativeElement.value?.toString() ?? '';
640
- const match = this.findMatchingOption(text);
641
- if (this.restrictToList() && !match) {
642
- // must choose from list -> clear input and selection
643
- this.selectedChange.set(null);
644
- this.host.nativeElement.value = '';
633
+ const text = this.host.nativeElement.value;
634
+ const match = this.findMatch(text);
635
+ if (this.restrictToList()) {
636
+ this.selected.set(match);
637
+ this.host.nativeElement.value = match
638
+ ? this.displayWith()(match)
639
+ : '';
645
640
  }
646
641
  else if (match) {
647
- // matched an option -> set selection
648
- this.selectedChange.set(match);
642
+ this.selected.set(match);
649
643
  }
650
644
  else {
651
- // no match and free text allowed -> keep input text but do NOT create a custom Option
652
- this.selectedChange.set(null);
645
+ this.selected.set(null);
653
646
  }
654
- this.blurEvent.set(text || null);
647
+ this.onTouched();
655
648
  this.close();
656
649
  }, 150);
657
650
  }
658
- // helper to create overlay and attach panel
651
+ /* ---------------- overlay ---------------- */
659
652
  open() {
660
- if (this.disabled())
661
- return;
662
653
  if (!this.overlayRef)
663
654
  this.createOverlay();
664
655
  if (!this.overlayRef.hasAttached()) {
665
656
  const portal = new ComponentPortal(TypeaheadPanelComponent, this.vcr);
666
- const compRef = this.overlayRef.attach(portal);
667
- this.panelRefInst = compRef.instance;
668
- this.panelRefInst.displayWith.set(this.displayWith());
669
- this.panelRefInst.optionTemplate = this.asTypeaheadTemplate();
670
- this.panelRefInst.visibleCount.set(this.visibleCount());
671
- this.panelRefInst.onSelect = (item) => this.select(item);
672
- const el = this.host.nativeElement;
673
- el.setAttribute('role', 'combobox');
674
- el.setAttribute('aria-autocomplete', 'list');
675
- el.setAttribute('aria-expanded', 'true');
676
- el.setAttribute('aria-controls', this.panelRefInst.id());
677
- this.openedChange.set(true);
678
- }
679
- else {
680
- this.overlayRef.updatePosition();
657
+ const ref = this.overlayRef.attach(portal);
658
+ this.panel = ref.instance;
659
+ this.panel.displayWith.set(this.displayWith());
660
+ this.panel.optionTemplate = this.asTypeaheadTemplate();
661
+ this.panel.visibleCount.set(this.visibleCount());
662
+ this.panel.onSelect = (it) => this.select(it);
681
663
  }
682
664
  }
683
665
  close() {
684
666
  this.detach();
685
- this.openedChange.set(false);
686
667
  }
687
668
  detach(dispose = false) {
688
669
  if (!this.overlayRef)
689
670
  return;
690
- if (this.overlayRef.hasAttached()) {
671
+ if (this.overlayRef.hasAttached())
691
672
  this.overlayRef.detach();
692
- const el = this.host.nativeElement;
693
- el.removeAttribute('aria-controls');
694
- el.setAttribute('aria-expanded', 'false');
695
- el.removeAttribute('aria-activedescendant');
696
- }
697
673
  if (dispose) {
698
674
  this.overlayRef.dispose();
699
675
  this.overlayRef = null;
700
- this.panelRefInst = null;
676
+ this.panel = null;
701
677
  }
702
678
  }
703
679
  createOverlay() {
@@ -706,120 +682,86 @@ class TypeaheadDirective {
706
682
  .withPositions(this.positions())
707
683
  .withPush(true);
708
684
  strategy.withDefaultOffsetY(4);
709
- strategy.withDefaultOffsetX(0);
710
685
  this.overlayRef = this.overlay.create({
711
686
  positionStrategy: strategy,
712
- hasBackdrop: false,
713
- panelClass: undefined,
714
687
  scrollStrategy: this.overlay.scrollStrategies.reposition(),
715
688
  });
716
- // reposition on strategy changes
717
- strategy.positionChanges.subscribe(() => {
718
- setTimeout(() => this.overlayRef?.updatePosition(), 0);
719
- });
720
689
  }
721
- showAllOptions() {
722
- const list = this.options() ?? [];
723
- if (!this.overlayRef || !this.overlayRef.hasAttached()) {
724
- this.open();
725
- }
726
- if (this.panelRefInst) {
727
- this.panelRefInst.items.set(list);
728
- this.panelRefInst.activeIndex.set(null);
729
- }
690
+ /* ---------------- helpers ---------------- */
691
+ showAll() {
692
+ this.open();
693
+ this.panel?.items.set(this.options() ?? []);
694
+ this.panel?.setActive(null);
730
695
  }
731
- filterAndShow(q) {
732
- const list = this.options() ?? [];
696
+ filter(q) {
733
697
  const key = q.toLowerCase();
698
+ const list = this.options() ?? [];
734
699
  const filtered = list.filter(it => {
735
- if (!it)
736
- return false;
737
- const target = this.filterBy() === 'key' ? String(it.key) : String(it.value);
700
+ const target = this.filterBy() === 'key'
701
+ ? String(it.key)
702
+ : String(it.value);
738
703
  return target.toLowerCase().includes(key);
739
704
  });
740
- if (!this.overlayRef || !this.overlayRef.hasAttached())
741
- this.open();
742
- if (this.panelRefInst) {
743
- this.panelRefInst.items.set(filtered);
744
- if (filtered.length > 0) {
745
- this.panelRefInst.activeIndex.set(0);
746
- this.scrollToActive();
747
- }
748
- else {
749
- this.panelRefInst.activeIndex.set(null);
750
- }
751
- }
705
+ this.open();
706
+ this.panel?.items.set(filtered);
707
+ this.panel?.setActive(filtered.length ? 0 : null);
752
708
  }
753
709
  select(item) {
754
- this.selectedChange.set(item);
755
- try {
756
- this.host.nativeElement.value = this.displayWith()(item);
757
- }
758
- catch { /* ignore */ }
710
+ this.selected.set(item);
711
+ this.host.nativeElement.value = this.displayWith()(item);
759
712
  this.close();
760
713
  this.host.nativeElement.focus();
761
714
  }
762
- scrollToActive() {
763
- const panelEl = this.overlayRef?.overlayElement;
764
- if (!panelEl || !this.panelRefInst)
765
- return;
766
- const idx = this.panelRefInst.activeIndex();
767
- if (idx == null)
768
- return;
769
- const optionEl = panelEl.querySelector(`#${this.panelRefInst.optionId(idx)}`);
770
- if (optionEl) {
771
- const panelRect = panelEl.getBoundingClientRect();
772
- const optRect = optionEl.getBoundingClientRect();
773
- if (optRect.top < panelRect.top) {
774
- panelEl.scrollTop -= (panelRect.top - optRect.top);
775
- }
776
- else if (optRect.bottom > panelRect.bottom) {
777
- panelEl.scrollTop += (optRect.bottom - panelRect.bottom);
778
- }
779
- this.host.nativeElement.setAttribute('aria-activedescendant', optionEl.id);
780
- }
781
- }
782
- findMatchingOption(text) {
715
+ findMatch(text) {
783
716
  const list = this.options() ?? [];
784
- if (!text)
785
- return null;
786
- const t = text.toLowerCase();
787
- for (const it of list) {
788
- if (this.displayWith()(it).toLowerCase() === t)
789
- return it;
790
- if (String(it.key).toLowerCase() === t)
791
- return it;
792
- }
793
- return null;
717
+ return (list.find(it => this.displayWith()(it) === text) ??
718
+ list.find(it => String(it.key) === text) ??
719
+ null);
794
720
  }
795
- buildPositions() {
796
- const bottomStart = {
797
- originX: 'start', originY: 'bottom',
798
- overlayX: 'start', overlayY: 'top',
799
- offsetY: 4
800
- };
801
- const topStart = {
802
- originX: 'start', originY: 'top',
803
- overlayX: 'start', overlayY: 'bottom',
804
- offsetY: -4
805
- };
806
- return [bottomStart, topStart];
721
+ isDisabled() {
722
+ return this.disabled() || this.cvaDisabled();
807
723
  }
808
- log(value, ...rest) {
809
- if (this.enableLog() || localStorage.getItem('loggerEnable')) {
810
- console.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS Components -> ${value}`, ...rest);
811
- }
724
+ buildPositions() {
725
+ return [
726
+ {
727
+ originX: 'start',
728
+ originY: 'bottom',
729
+ overlayX: 'start',
730
+ overlayY: 'top',
731
+ offsetY: 4,
732
+ },
733
+ {
734
+ originX: 'start',
735
+ originY: 'top',
736
+ overlayX: 'start',
737
+ overlayY: 'bottom',
738
+ offsetY: -4,
739
+ },
740
+ ];
812
741
  }
813
742
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TypeaheadDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
814
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: TypeaheadDirective, isStandalone: true, selector: "[asTypeahead]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, visibleCount: { classPropertyName: "visibleCount", publicName: "visibleCount", isSignal: true, isRequired: false, transformFunction: null }, restrictToList: { classPropertyName: "restrictToList", publicName: "restrictToList", isSignal: true, isRequired: false, transformFunction: null }, asTypeaheadTemplate: { classPropertyName: "asTypeaheadTemplate", publicName: "asTypeaheadTemplate", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, enableLog: { classPropertyName: "enableLog", publicName: "enableLog", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { typeaheadOnSelect: "typeaheadOnSelect" }, host: { listeners: { "focus": "onFocusOrClick()", "click": "onFocusOrClick()", "input": "onInput($event)", "keydown": "onKeydown($event)", "blur": "onBlur()" } }, ngImport: i0 });
743
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: TypeaheadDirective, isStandalone: true, selector: "[asTypeahead]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, visibleCount: { classPropertyName: "visibleCount", publicName: "visibleCount", isSignal: true, isRequired: false, transformFunction: null }, restrictToList: { classPropertyName: "restrictToList", publicName: "restrictToList", isSignal: true, isRequired: false, transformFunction: null }, asTypeaheadTemplate: { classPropertyName: "asTypeaheadTemplate", publicName: "asTypeaheadTemplate", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { typeaheadOnSelect: "typeaheadOnSelect" }, host: { listeners: { "focus": "onFocus()", "click": "onFocus()", "input": "onInput($event)", "keydown": "onKeydown($event)", "blur": "onBlur()" } }, providers: [
744
+ {
745
+ provide: NG_VALUE_ACCESSOR,
746
+ useExisting: TypeaheadDirective,
747
+ multi: true,
748
+ },
749
+ ], ngImport: i0 });
815
750
  }
816
751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TypeaheadDirective, decorators: [{
817
752
  type: Directive,
818
753
  args: [{
819
754
  selector: '[asTypeahead]',
820
755
  standalone: true,
756
+ providers: [
757
+ {
758
+ provide: NG_VALUE_ACCESSOR,
759
+ useExisting: TypeaheadDirective,
760
+ multi: true,
761
+ },
762
+ ],
821
763
  }]
822
- }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], displayWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayWith", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], visibleCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibleCount", required: false }] }], restrictToList: [{ type: i0.Input, args: [{ isSignal: true, alias: "restrictToList", required: false }] }], asTypeaheadTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "asTypeaheadTemplate", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], enableLog: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLog", required: false }] }], typeaheadOnSelect: [{ type: i0.Output, args: ["typeaheadOnSelect"] }], onFocusOrClick: [{
764
+ }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], displayWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayWith", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], visibleCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibleCount", required: false }] }], restrictToList: [{ type: i0.Input, args: [{ isSignal: true, alias: "restrictToList", required: false }] }], asTypeaheadTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "asTypeaheadTemplate", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], typeaheadOnSelect: [{ type: i0.Output, args: ["typeaheadOnSelect"] }], onFocus: [{
823
765
  type: HostListener,
824
766
  args: ['focus']
825
767
  }, {
@@ -846,6 +788,7 @@ class AsFlatpickrComponent {
846
788
  dateFormat = input('Y-m-d', ...(ngDevMode ? [{ debugName: "dateFormat" }] : []));
847
789
  elementClass = input('form-control form-icon-calendar', ...(ngDevMode ? [{ debugName: "elementClass" }] : []));
848
790
  time24h = input(true, ...(ngDevMode ? [{ debugName: "time24h" }] : []));
791
+ autocomplete = input('off', ...(ngDevMode ? [{ debugName: "autocomplete" }] : []));
849
792
  /* External value (string-based now) */
850
793
  value = input(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
851
794
  valueChange = output();
@@ -1013,20 +956,20 @@ class AsFlatpickrComponent {
1013
956
  this.fp = null;
1014
957
  }
1015
958
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AsFlatpickrComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1016
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: AsFlatpickrComponent, isStandalone: true, selector: "as-flatpickr", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, enableTime: { classPropertyName: "enableTime", publicName: "enableTime", isSignal: true, isRequired: false, transformFunction: null }, timeOnly: { classPropertyName: "timeOnly", publicName: "timeOnly", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, elementClass: { classPropertyName: "elementClass", publicName: "elementClass", isSignal: true, isRequired: false, transformFunction: null }, time24h: { classPropertyName: "time24h", publicName: "time24h", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [
959
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: AsFlatpickrComponent, isStandalone: true, selector: "as-flatpickr", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, enableTime: { classPropertyName: "enableTime", publicName: "enableTime", isSignal: true, isRequired: false, transformFunction: null }, timeOnly: { classPropertyName: "timeOnly", publicName: "timeOnly", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, elementClass: { classPropertyName: "elementClass", publicName: "elementClass", isSignal: true, isRequired: false, transformFunction: null }, time24h: { classPropertyName: "time24h", publicName: "time24h", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [
1017
960
  {
1018
961
  provide: NG_VALUE_ACCESSOR,
1019
962
  useExisting: forwardRef(() => AsFlatpickrComponent),
1020
963
  multi: true,
1021
964
  },
1022
- ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<input #input type="text" [attr.placeholder]="placeholder()" [ngClass]="elementClass()"/>`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
965
+ ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<input #input type="text" [attr.placeholder]="placeholder()" [ngClass]="elementClass()" [autocomplete]="autocomplete()"/>`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1023
966
  }
1024
967
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AsFlatpickrComponent, decorators: [{
1025
968
  type: Component,
1026
969
  args: [{
1027
970
  selector: 'as-flatpickr',
1028
971
  standalone: true,
1029
- template: `<input #input type="text" [attr.placeholder]="placeholder()" [ngClass]="elementClass()"/>`,
972
+ template: `<input #input type="text" [attr.placeholder]="placeholder()" [ngClass]="elementClass()" [autocomplete]="autocomplete()"/>`,
1030
973
  providers: [
1031
974
  {
1032
975
  provide: NG_VALUE_ACCESSOR,
@@ -1036,7 +979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
1036
979
  ],
1037
980
  imports: [NgClass],
1038
981
  }]
1039
- }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], enableTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableTime", required: false }] }], timeOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeOnly", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }], elementClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "elementClass", required: false }] }], time24h: [{ type: i0.Input, args: [{ isSignal: true, alias: "time24h", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], inputEl: [{
982
+ }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], enableTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableTime", required: false }] }], timeOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeOnly", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }], elementClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "elementClass", required: false }] }], time24h: [{ type: i0.Input, args: [{ isSignal: true, alias: "time24h", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], inputEl: [{
1040
983
  type: ViewChild,
1041
984
  args: ['input', { static: true }]
1042
985
  }] } });
@@ -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/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/lib/datepicker/as-flatpickr.component.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","import {\n Component,\n ElementRef,\n ViewChild,\n AfterViewInit,\n effect,\n input,\n output,\n signal,\n NgZone,\n OnDestroy,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.css';\nimport { NgClass } from '@angular/common';\n\nimport { FlatpickrValue, FlatpickrMode, FlatpickrDateFormat } from './flatpickr.types';\n\n@Component({\n selector: 'as-flatpickr',\n standalone: true,\n template: `<input #input type=\"text\" [attr.placeholder]=\"placeholder()\" [ngClass]=\"elementClass()\"/>`,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AsFlatpickrComponent),\n multi: true,\n },\n ],\n imports: [NgClass],\n})\nexport class AsFlatpickrComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n /* ---------------- Inputs ---------------- */\n mode = input<FlatpickrMode>('single');\n enableTime = input(false);\n timeOnly = input(false);\n placeholder = input<string | null>(null);\n dateFormat = input<FlatpickrDateFormat>('Y-m-d');\n elementClass = input<string>('form-control form-icon-calendar');\n time24h = input(true);\n\n /* External value (string-based now) */\n value = input<FlatpickrValue>(null);\n valueChange = output<FlatpickrValue>();\n\n /* ---------------- Internals ---------------- */\n @ViewChild('input', { static: true }) private inputEl!: ElementRef<HTMLInputElement>;\n private fp: flatpickr.Instance | null = null;\n\n private onChange: (value: FlatpickrValue) => void = () => {};\n private onTouched: () => void = () => {};\n private disabled = false;\n\n constructor(private zone: NgZone) {\n /* ---------------- Signal effect for syncing value ---------------- */\n effect(() => {\n const val = this.value();\n if (!this.fp) return;\n\n this.zone.runOutsideAngular(() => {\n const displayFormat = this.getDisplayFormat();\n if (Array.isArray(val)) {\n const dates = val.map(v => flatpickr.parseDate(v, displayFormat));\n this.fp!.setDate(dates as Date[], false);\n } else if (val) {\n const date = flatpickr.parseDate(val, displayFormat);\n this.fp!.setDate(date ?? [], false);\n } else {\n this.fp!.clear();\n }\n });\n });\n }\n\n private handleOpen = () => {\n if (this.disabled) {\n this.fp?.close();\n }\n };\n\n /* ---------------- Initialize Flatpickr ---------------- */\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.fp = flatpickr(this.inputEl.nativeElement, {\n mode: this.mode(),\n enableTime: this.enableTime() || this.timeOnly(),\n noCalendar: this.timeOnly(),\n allowInput: true,\n time_24hr: this.time24h(),\n dateFormat: this.getDisplayFormat(),\n onOpen: this.handleOpen,\n onChange: (dates, _str, instance) => this.handleChange(dates, instance),\n onClose: () => this.zone.run(() => this.onTouched()),\n });\n\n // Manual validation for typed input\n this.inputEl.nativeElement.addEventListener('blur', () => {\n const typedValue = this.inputEl.nativeElement.value;\n const parsed = this.parseTypedValue(typedValue);\n\n this.zone.run(() => {\n if (parsed === null) {\n this.onChange(null);\n } else {\n this.onChange(parsed);\n }\n });\n });\n });\n }\n\n /* ---------------- CVA Implementation ---------------- */\n writeValue(value: FlatpickrValue): void {\n if (!this.fp) return;\n const displayFormat = this.getDisplayFormat();\n if (Array.isArray(value)) {\n const dates = value.map(v => flatpickr.parseDate(v, displayFormat));\n this.fp.setDate(dates as Date[], false);\n } else if (value) {\n const date = flatpickr.parseDate(value, displayFormat);\n this.fp.setDate(date ?? [], false);\n } else {\n this.fp.clear();\n }\n }\n\n registerOnChange(fn: (value: FlatpickrValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n if (this.inputEl) this.inputEl.nativeElement.disabled = disabled;\n }\n\n /* ---------------- Handle Flatpickr changes ---------------- */\n private handleChange(dates: Date[], instance: flatpickr.Instance) {\n const format = this.dateFormat() ?? this.getDefaultDateFormat();\n let value: FlatpickrValue = null;\n\n if (this.mode() === 'range') {\n if (dates.length === 2) {\n value = dates.map(d => flatpickr.formatDate(d, format)) as [string, string];\n }\n } else if (dates[0]) {\n if (this.enableTime() || this.timeOnly()) {\n const timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n value = flatpickr.formatDate(dates[0], `${format} ${timeFormat}`);\n } else {\n value = flatpickr.formatDate(dates[0], format);\n }\n\n // ✅ REMOVE automatic close here\n // instance.close();\n }\n\n this.zone.run(() => {\n this.onChange(value);\n this.valueChange.emit(value);\n });\n }\n\n /* ---------------- Typed input parsing ---------------- */\n private parseTypedValue(inputValue: string): FlatpickrValue {\n try {\n const displayFormat = this.getDisplayFormat();\n if (!inputValue) return null;\n\n if (this.mode() === 'range') {\n const parts = inputValue.split(' to ').map(s => s.trim());\n if (parts.length !== 2) return null;\n\n const start = flatpickr.parseDate(parts[0], displayFormat);\n const end = flatpickr.parseDate(parts[1], displayFormat);\n if (!start || !end || start > end) return null;\n\n return [flatpickr.formatDate(start, displayFormat), flatpickr.formatDate(end, displayFormat)];\n } else {\n const parsed = flatpickr.parseDate(inputValue, displayFormat);\n return parsed ? flatpickr.formatDate(parsed, displayFormat) : null;\n }\n } catch {\n return null;\n }\n }\n\n /* ---------------- Format helpers ---------------- */\n private getDefaultDateFormat(): string {\n if (this.timeOnly()) return 'H:i';\n if (this.enableTime()) return 'Y-m-d';\n return 'Y-m-d';\n }\n\n /** Combine dateFormat + optional time for display/input */\n private getDisplayFormat(): string {\n const baseFormat = this.dateFormat() ?? this.getDefaultDateFormat();\n if (this.enableTime() || this.timeOnly()) {\n const timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n return `${baseFormat} ${timeFormat}`;\n }\n return baseFormat;\n }\n\n /* ---------------- Cleanup ---------------- */\n ngOnDestroy() {\n this.fp?.destroy();\n this.fp = null;\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';\nexport * from './lib/datepicker/as-flatpickr.component';\nexport * from './lib/datepicker/flatpickr.types';\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/lib/datepicker/as-flatpickr.component.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","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n computed,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n effect,\n output,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport {\n Overlay,\n OverlayRef,\n FlexibleConnectedPositionStrategy,\n ConnectedPosition,\n} 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 providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: TypeaheadDirective,\n multi: true,\n },\n ],\n})\nexport class TypeaheadDirective\n implements ControlValueAccessor, OnDestroy {\n\n /* ---------------- injections ---------------- */\n private readonly overlay = inject(Overlay);\n private readonly host = inject(ElementRef<HTMLInputElement>);\n private readonly vcr = inject(ViewContainerRef);\n\n /* ---------------- inputs ---------------- */\n readonly options = input<Option[] | null>(null);\n readonly displayWith = input<(item: Option) => string>(\n (it: Option) => String(it?.value ?? '')\n );\n readonly filterBy = input<'key' | 'value'>('value');\n readonly visibleCount = input<number>(5);\n readonly restrictToList = input<boolean>(false);\n readonly asTypeaheadTemplate = input<TemplateRef<any> | null>(null);\n readonly disabled = input<boolean>(false);\n\n /* ---------------- outputs ---------------- */\n readonly typeaheadOnSelect = output<Option | null>();\n\n /* ---------------- internal ---------------- */\n private readonly cvaDisabled = signal(false);\n private readonly selected = signal<Option | null>(null);\n\n private overlayRef: OverlayRef | null = null;\n private panel: TypeaheadPanelComponent | null = null;\n private destroyed = false;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n private readonly positions = computed(() => this.buildPositions());\n\n constructor() {\n /* propagate selection */\n effect(() => {\n const sel = this.selected();\n this.typeaheadOnSelect.emit(sel);\n this.onChange(sel?.key ?? null);\n });\n\n /* sync initial value -> input text */\n effect(() => {\n const sel = this.selected();\n if (!sel) return;\n this.host.nativeElement.value = this.displayWith()(sel);\n });\n }\n\n /* ---------------- CVA ---------------- */\n writeValue(value: any): void {\n if (value == null) {\n this.selected.set(null);\n this.host.nativeElement.value = '';\n return;\n }\n\n const match = this.options()?.find(o => o.key === value) ?? null;\n this.selected.set(match);\n\n if (match) {\n this.host.nativeElement.value = this.displayWith()(match);\n } else {\n this.host.nativeElement.value = String(value);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n this.detach(true);\n }\n\n /* ---------------- host events ---------------- */\n @HostListener('focus')\n @HostListener('click')\n onFocus() {\n if (this.isDisabled()) return;\n this.open();\n this.showAll();\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n if (this.isDisabled()) return;\n const value = (e.target as HTMLInputElement).value;\n value ? this.filter(value) : this.showAll();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(e: KeyboardEvent) {\n if (this.isDisabled() || !this.panel) return;\n\n const items = this.panel.items();\n if (!items.length) return;\n\n let idx = this.panel.activeIndex();\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n idx = idx == null ? 0 : Math.min(items.length - 1, idx + 1);\n this.panel.setActive(idx);\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n idx = idx == null ? items.length - 1 : Math.max(0, idx - 1);\n this.panel.setActive(idx);\n break;\n\n case 'Enter':\n e.preventDefault();\n if (idx != null) this.panel.select(idx);\n break;\n\n case 'Escape':\n this.close();\n break;\n }\n }\n\n @HostListener('blur')\n onBlur() {\n setTimeout(() => {\n if (this.destroyed) return;\n\n const text = this.host.nativeElement.value;\n const match = this.findMatch(text);\n\n if (this.restrictToList()) {\n this.selected.set(match);\n this.host.nativeElement.value = match\n ? this.displayWith()(match)\n : '';\n } else if (match) {\n this.selected.set(match);\n } else {\n this.selected.set(null);\n }\n\n this.onTouched();\n this.close();\n }, 150);\n }\n\n /* ---------------- overlay ---------------- */\n private open() {\n if (!this.overlayRef) this.createOverlay();\n if (!this.overlayRef!.hasAttached()) {\n const portal = new ComponentPortal(TypeaheadPanelComponent, this.vcr);\n const ref = this.overlayRef!.attach(portal);\n this.panel = ref.instance;\n\n this.panel.displayWith.set(this.displayWith());\n this.panel.optionTemplate = this.asTypeaheadTemplate();\n this.panel.visibleCount.set(this.visibleCount());\n this.panel.onSelect = (it: Option) => this.select(it);\n }\n }\n\n private close() {\n this.detach();\n }\n\n private detach(dispose = false) {\n if (!this.overlayRef) return;\n if (this.overlayRef.hasAttached()) this.overlayRef.detach();\n if (dispose) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.panel = 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\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n }\n\n /* ---------------- helpers ---------------- */\n private showAll() {\n this.open();\n this.panel?.items.set(this.options() ?? []);\n this.panel?.setActive(null);\n }\n\n private filter(q: string) {\n const key = q.toLowerCase();\n const list = this.options() ?? [];\n const filtered = list.filter(it => {\n const target =\n this.filterBy() === 'key'\n ? String(it.key)\n : String(it.value);\n return target.toLowerCase().includes(key);\n });\n\n this.open();\n this.panel?.items.set(filtered);\n this.panel?.setActive(filtered.length ? 0 : null);\n }\n\n private select(item: Option) {\n this.selected.set(item);\n this.host.nativeElement.value = this.displayWith()(item);\n this.close();\n this.host.nativeElement.focus();\n }\n\n private findMatch(text: string): Option | null {\n const list = this.options() ?? [];\n return (\n list.find(it => this.displayWith()(it) === text) ??\n list.find(it => String(it.key) === text) ??\n null\n );\n }\n\n private isDisabled(): boolean {\n return this.disabled() || this.cvaDisabled();\n }\n\n private buildPositions(): ConnectedPosition[] {\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ];\n }\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n AfterViewInit,\n effect,\n input,\n output,\n signal,\n NgZone,\n OnDestroy,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.css';\nimport { NgClass } from '@angular/common';\n\nimport { FlatpickrValue, FlatpickrMode, FlatpickrDateFormat } from './flatpickr.types';\n\n@Component({\n selector: 'as-flatpickr',\n standalone: true,\n template: `<input #input type=\"text\" [attr.placeholder]=\"placeholder()\" [ngClass]=\"elementClass()\" [autocomplete]=\"autocomplete()\"/>`,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AsFlatpickrComponent),\n multi: true,\n },\n ],\n imports: [NgClass],\n})\nexport class AsFlatpickrComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n /* ---------------- Inputs ---------------- */\n mode = input<FlatpickrMode>('single');\n enableTime = input(false);\n timeOnly = input(false);\n placeholder = input<string | null>(null);\n dateFormat = input<FlatpickrDateFormat>('Y-m-d');\n elementClass = input<string>('form-control form-icon-calendar');\n time24h = input(true);\n autocomplete = input<'on' | 'off'>('off');\n\n /* External value (string-based now) */\n value = input<FlatpickrValue>(null);\n valueChange = output<FlatpickrValue>();\n\n /* ---------------- Internals ---------------- */\n @ViewChild('input', { static: true }) private inputEl!: ElementRef<HTMLInputElement>;\n private fp: flatpickr.Instance | null = null;\n\n private onChange: (value: FlatpickrValue) => void = () => {};\n private onTouched: () => void = () => {};\n private disabled = false;\n\n constructor(private zone: NgZone) {\n /* ---------------- Signal effect for syncing value ---------------- */\n effect(() => {\n const val = this.value();\n if (!this.fp) return;\n\n this.zone.runOutsideAngular(() => {\n const displayFormat = this.getDisplayFormat();\n if (Array.isArray(val)) {\n const dates = val.map(v => flatpickr.parseDate(v, displayFormat));\n this.fp!.setDate(dates as Date[], false);\n } else if (val) {\n const date = flatpickr.parseDate(val, displayFormat);\n this.fp!.setDate(date ?? [], false);\n } else {\n this.fp!.clear();\n }\n });\n });\n }\n\n private handleOpen = () => {\n if (this.disabled) {\n this.fp?.close();\n }\n };\n\n /* ---------------- Initialize Flatpickr ---------------- */\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.fp = flatpickr(this.inputEl.nativeElement, {\n mode: this.mode(),\n enableTime: this.enableTime() || this.timeOnly(),\n noCalendar: this.timeOnly(),\n allowInput: true,\n time_24hr: this.time24h(),\n dateFormat: this.getDisplayFormat(),\n onOpen: this.handleOpen,\n onChange: (dates, _str, instance) => this.handleChange(dates, instance),\n onClose: () => this.zone.run(() => this.onTouched()),\n });\n\n // Manual validation for typed input\n this.inputEl.nativeElement.addEventListener('blur', () => {\n const typedValue = this.inputEl.nativeElement.value;\n const parsed = this.parseTypedValue(typedValue);\n\n this.zone.run(() => {\n if (parsed === null) {\n this.onChange(null);\n } else {\n this.onChange(parsed);\n }\n });\n });\n });\n }\n\n /* ---------------- CVA Implementation ---------------- */\n writeValue(value: FlatpickrValue): void {\n if (!this.fp) return;\n const displayFormat = this.getDisplayFormat();\n if (Array.isArray(value)) {\n const dates = value.map(v => flatpickr.parseDate(v, displayFormat));\n this.fp.setDate(dates as Date[], false);\n } else if (value) {\n const date = flatpickr.parseDate(value, displayFormat);\n this.fp.setDate(date ?? [], false);\n } else {\n this.fp.clear();\n }\n }\n\n registerOnChange(fn: (value: FlatpickrValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n if (this.inputEl) this.inputEl.nativeElement.disabled = disabled;\n }\n\n /* ---------------- Handle Flatpickr changes ---------------- */\n private handleChange(dates: Date[], instance: flatpickr.Instance) {\n const format = this.dateFormat() ?? this.getDefaultDateFormat();\n let value: FlatpickrValue = null;\n\n if (this.mode() === 'range') {\n if (dates.length === 2) {\n value = dates.map(d => flatpickr.formatDate(d, format)) as [string, string];\n }\n } else if (dates[0]) {\n if (this.enableTime() || this.timeOnly()) {\n const timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n value = flatpickr.formatDate(dates[0], `${format} ${timeFormat}`);\n } else {\n value = flatpickr.formatDate(dates[0], format);\n }\n\n // ✅ REMOVE automatic close here\n // instance.close();\n }\n\n this.zone.run(() => {\n this.onChange(value);\n this.valueChange.emit(value);\n });\n }\n\n /* ---------------- Typed input parsing ---------------- */\n private parseTypedValue(inputValue: string): FlatpickrValue {\n try {\n const displayFormat = this.getDisplayFormat();\n if (!inputValue) return null;\n\n if (this.mode() === 'range') {\n const parts = inputValue.split(' to ').map(s => s.trim());\n if (parts.length !== 2) return null;\n\n const start = flatpickr.parseDate(parts[0], displayFormat);\n const end = flatpickr.parseDate(parts[1], displayFormat);\n if (!start || !end || start > end) return null;\n\n return [flatpickr.formatDate(start, displayFormat), flatpickr.formatDate(end, displayFormat)];\n } else {\n const parsed = flatpickr.parseDate(inputValue, displayFormat);\n return parsed ? flatpickr.formatDate(parsed, displayFormat) : null;\n }\n } catch {\n return null;\n }\n }\n\n /* ---------------- Format helpers ---------------- */\n private getDefaultDateFormat(): string {\n if (this.timeOnly()) return 'H:i';\n if (this.enableTime()) return 'Y-m-d';\n return 'Y-m-d';\n }\n\n /** Combine dateFormat + optional time for display/input */\n private getDisplayFormat(): string {\n const baseFormat = this.dateFormat() ?? this.getDefaultDateFormat();\n if (this.enableTime() || this.timeOnly()) {\n const timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n return `${baseFormat} ${timeFormat}`;\n }\n return baseFormat;\n }\n\n /* ---------------- Cleanup ---------------- */\n ngOnDestroy() {\n this.fp?.destroy();\n this.fp = null;\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';\nexport * from './lib/datepicker/as-flatpickr.component';\nexport * from './lib/datepicker/flatpickr.types';\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.18",
3
+ "version": "21.0.19",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^21.1.0",
6
6
  "@angular/common": "^21.1.0",
@@ -119,7 +119,7 @@ declare class TypeaheadPanelComponent {
119
119
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TypeaheadPanelComponent, "as-typeahead-panel", never, {}, {}, never, never, true, never>;
120
120
  }
121
121
 
122
- declare class TypeaheadDirective implements OnDestroy {
122
+ declare class TypeaheadDirective implements ControlValueAccessor, OnDestroy {
123
123
  private readonly overlay;
124
124
  private readonly host;
125
125
  private readonly vcr;
@@ -128,37 +128,39 @@ declare class TypeaheadDirective implements OnDestroy {
128
128
  readonly filterBy: _angular_core.InputSignal<"value" | "key">;
129
129
  readonly visibleCount: _angular_core.InputSignal<number>;
130
130
  readonly restrictToList: _angular_core.InputSignal<boolean>;
131
- readonly selectedChange: WritableSignal<Option | null>;
132
- readonly blurEvent: WritableSignal<string | null>;
133
- readonly openedChange: WritableSignal<boolean>;
134
131
  readonly asTypeaheadTemplate: _angular_core.InputSignal<TemplateRef<any> | null>;
135
132
  readonly disabled: _angular_core.InputSignal<boolean>;
136
- readonly enableLog: _angular_core.InputSignal<boolean>;
133
+ readonly typeaheadOnSelect: _angular_core.OutputEmitterRef<Option | null>;
134
+ private readonly cvaDisabled;
135
+ private readonly selected;
137
136
  private overlayRef;
138
- private panelRefInst;
137
+ private panel;
139
138
  private destroyed;
140
- typeaheadOnSelect: _angular_core.OutputEmitterRef<Option | null>;
139
+ private onChange;
140
+ private onTouched;
141
141
  private readonly positions;
142
- private _lastEmitted;
143
142
  constructor();
143
+ writeValue(value: any): void;
144
+ registerOnChange(fn: any): void;
145
+ registerOnTouched(fn: any): void;
146
+ setDisabledState(isDisabled: boolean): void;
144
147
  ngOnDestroy(): void;
145
- onFocusOrClick(): void;
148
+ onFocus(): void;
146
149
  onInput(e: Event): void;
147
150
  onKeydown(e: KeyboardEvent): void;
148
151
  onBlur(): void;
149
- open(): void;
150
- close(): void;
152
+ private open;
153
+ private close;
151
154
  private detach;
152
155
  private createOverlay;
153
- private showAllOptions;
154
- private filterAndShow;
156
+ private showAll;
157
+ private filter;
155
158
  private select;
156
- private scrollToActive;
157
- private findMatchingOption;
159
+ private findMatch;
160
+ private isDisabled;
158
161
  private buildPositions;
159
- log(value: any, ...rest: any[]): void;
160
162
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TypeaheadDirective, never>;
161
- 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>;
163
+ 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; }; }, { "typeaheadOnSelect": "typeaheadOnSelect"; }, never, never, true, never>;
162
164
  }
163
165
 
164
166
  type FlatpickrValue = string | [string, string] | null;
@@ -174,6 +176,7 @@ declare class AsFlatpickrComponent implements ControlValueAccessor, AfterViewIni
174
176
  dateFormat: _angular_core.InputSignal<FlatpickrDateFormat>;
175
177
  elementClass: _angular_core.InputSignal<string>;
176
178
  time24h: _angular_core.InputSignal<boolean>;
179
+ autocomplete: _angular_core.InputSignal<"on" | "off">;
177
180
  value: _angular_core.InputSignal<FlatpickrValue>;
178
181
  valueChange: _angular_core.OutputEmitterRef<FlatpickrValue>;
179
182
  private inputEl;
@@ -195,7 +198,7 @@ declare class AsFlatpickrComponent implements ControlValueAccessor, AfterViewIni
195
198
  private getDisplayFormat;
196
199
  ngOnDestroy(): void;
197
200
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsFlatpickrComponent, never>;
198
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsFlatpickrComponent, "as-flatpickr", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "enableTime": { "alias": "enableTime"; "required": false; "isSignal": true; }; "timeOnly": { "alias": "timeOnly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "elementClass": { "alias": "elementClass"; "required": false; "isSignal": true; }; "time24h": { "alias": "time24h"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
201
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsFlatpickrComponent, "as-flatpickr", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "enableTime": { "alias": "enableTime"; "required": false; "isSignal": true; }; "timeOnly": { "alias": "timeOnly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "elementClass": { "alias": "elementClass"; "required": false; "isSignal": true; }; "time24h": { "alias": "time24h"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
199
202
  }
200
203
 
201
204
  export { AsComponents, AsFlatpickrComponent, BaseModalComponent, ModalContainerComponent, ModalRef, ModalService, TooltipComponent, TooltipDirective, TypeaheadDirective, TypeaheadPanelComponent };