@ngbase/adk 0.1.12 → 0.1.15

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.
@@ -93,7 +93,7 @@ class NgbDialogContainer extends BaseDialog {
93
93
  this.backdropColor = options.backdropColor || true;
94
94
  }
95
95
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbDialogContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
96
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbDialogContainer, isStandalone: true, selector: "[ngbDialog]", host: { listeners: { "@parentAnimation.done": "animationDone()" }, properties: { "@parentAnimation": "" } }, providers: [provideFocusTrapOptions(() => ({ initial: true }))], viewQueries: [{ propertyName: "myDialog", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.FocusTrap }], ngImport: i0 }); }
96
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbDialogContainer, isStandalone: true, selector: "[ngbDialog]", providers: [provideFocusTrapOptions(() => ({ initial: true }))], viewQueries: [{ propertyName: "myDialog", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.FocusTrap }], ngImport: i0 }); }
97
97
  }
98
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbDialogContainer, decorators: [{
99
99
  type: Directive,
@@ -101,10 +101,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
101
101
  selector: '[ngbDialog]',
102
102
  hostDirectives: [FocusTrap],
103
103
  providers: [provideFocusTrapOptions(() => ({ initial: true }))],
104
- host: {
105
- '[@parentAnimation]': '',
106
- '(@parentAnimation.done)': 'animationDone()',
107
- },
108
104
  }]
109
105
  }], ctorParameters: () => [] });
110
106
  class NgbDialogClose {
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-dialog.mjs","sources":["../../../projects/adk/dialog/dialog.service.ts","../../../projects/adk/dialog/dialog.ts","../../../projects/adk/dialog/dialog.animation.ts","../../../projects/adk/dialog/public-api.ts","../../../projects/adk/dialog/ngbase-adk-dialog.ts"],"sourcesContent":["import { basePortal, DialogInput, DialogOptions } from '@ngbase/adk/portal';\nimport { NgbDialogContainer } from './dialog';\n\nexport function ngbDialogPortal(component: typeof NgbDialogContainer) {\n const NAME = 'dialog';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput, opt?: DialogOptions) {\n const { diaRef } = base.open(\n component,\n (comp, options) => {\n comp.instance.setOptions(options);\n },\n opt,\n );\n\n return diaRef;\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n\nexport type NgbDialog = ReturnType<typeof ngbDialogPortal>;\n","import {\n afterNextRender,\n computed,\n Directive,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { FocusTrap, provideFocusTrapOptions } from '@ngbase/adk/a11y';\nimport { BaseDialog, DialogOptions, NgbPortalClose } from '@ngbase/adk/portal';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[ngbDialogMain]',\n host: {\n '[class]': `classNames()`,\n '[style]': `style()`,\n },\n})\nexport class NgbDialogMain {\n readonly dialog = inject(NgbDialogContainer);\n readonly options = this.dialog.options;\n readonly classNames = computed(() => this.options().classNames?.join(' ') || '');\n readonly style = computed(() => {\n return {\n width: this.options().fullWindow ? '100vw' : this.options().width,\n height: this.options().fullWindow ? '100vh' : this.options().height,\n maxWidth: this.options().fullWindow ? '100vw' : this.options().maxWidth,\n maxHeight: this.options().fullWindow ? '100vh' : this.options().maxHeight || '96vh',\n minHeight: this.options().minHeight,\n minWidth: this.options().minWidth,\n };\n });\n}\n\n@Directive({\n selector: '[ngbDialogBackdrop]',\n host: {\n '(click)': `close()`,\n },\n})\nexport class NgbDialogBackdrop {\n readonly dialog = inject(NgbDialogContainer);\n readonly options = this.dialog.options;\n\n close() {\n if (!this.options().disableClose) {\n this.dialog.close();\n }\n }\n}\n\n@Directive({\n selector: '[ngbDialog]',\n hostDirectives: [FocusTrap],\n providers: [provideFocusTrapOptions(() => ({ initial: true }))],\n host: {\n '[@parentAnimation]': '',\n '(@parentAnimation.done)': 'animationDone()',\n },\n})\nexport class NgbDialogContainer extends BaseDialog {\n readonly myDialog = viewChild('contentContainer', { read: ViewContainerRef });\n\n backdropColor = true;\n isSidePopup = true;\n\n readonly onDone = new Subject<any>();\n readonly options = signal<DialogOptions>(new DialogOptions());\n readonly showBackdrop = computed(() => !this.options().fullWindow && this.options().backdrop);\n isHideHeader = false;\n\n constructor() {\n super();\n afterNextRender(() => {\n this._afterViewSource.next(this.myDialog()!);\n });\n }\n\n override setOptions(options: DialogOptions) {\n this.options.set(options);\n this.isHideHeader = options.header === false;\n this.backdropColor = options.backdropColor || true;\n }\n}\n\n@Directive({\n selector: '[ngbDialogClose]',\n hostDirectives: [{ directive: NgbPortalClose, inputs: ['ngbPortalClose: ngbDialogClose'] }],\n})\nexport class NgbDialogClose {}\n\nexport function aliasDialog(dialog: typeof NgbDialogContainer) {\n return { provide: NgbDialogContainer, useExisting: dialog };\n}\n","import {\n animate,\n AnimationTriggerMetadata,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\nexport const sideAnimation: AnimationTriggerMetadata = trigger('sideAnimation', [\n state('1', style({ transform: 'none' })),\n state('void', style({ transform: '{{outTransform}}' }), {\n params: { outTransform: 'translate3d(100%, 0, 0)' },\n }),\n state('0', style({ transform: '{{outTransform}}' }), {\n params: { outTransform: 'translate3d(100%, 0, 0)' },\n }),\n transition('* => *', animate('300ms cubic-bezier(0.55, 0.31, 0.15, 0.93)')),\n]);\n\nexport const viewAnimation: AnimationTriggerMetadata = trigger('viewAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translate3d(0, 10px, 0) scale(0.99)', opacity: 0 })),\n state('0', style({ transform: 'translate3d(0, 10px, 0)', opacity: 0 })),\n transition('* => *', animate('200ms ease')),\n]);\n// cubic-bezier(0.25, 0.8, 0.25, 1)\n","/*\n * Public API Surface of dialog\n */\n\nexport * from './dialog.service';\nexport * from './dialog';\nexport * from './dialog.animation';\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":"ngbase-adk-dialog.mjs","sources":["../../../projects/adk/dialog/dialog.service.ts","../../../projects/adk/dialog/dialog.ts","../../../projects/adk/dialog/dialog.animation.ts","../../../projects/adk/dialog/public-api.ts","../../../projects/adk/dialog/ngbase-adk-dialog.ts"],"sourcesContent":["import { basePortal, DialogInput, DialogOptions } from '@ngbase/adk/portal';\nimport { NgbDialogContainer } from './dialog';\n\nexport function ngbDialogPortal(component: typeof NgbDialogContainer) {\n const NAME = 'dialog';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput, opt?: DialogOptions) {\n const { diaRef } = base.open(\n component,\n (comp, options) => {\n comp.instance.setOptions(options);\n },\n opt,\n );\n\n return diaRef;\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n\nexport type NgbDialog = ReturnType<typeof ngbDialogPortal>;\n","import {\n afterNextRender,\n computed,\n Directive,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { FocusTrap, provideFocusTrapOptions } from '@ngbase/adk/a11y';\nimport { BaseDialog, DialogOptions, NgbPortalClose } from '@ngbase/adk/portal';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[ngbDialogMain]',\n host: {\n '[class]': `classNames()`,\n '[style]': `style()`,\n },\n})\nexport class NgbDialogMain {\n readonly dialog = inject(NgbDialogContainer);\n readonly options = this.dialog.options;\n readonly classNames = computed(() => this.options().classNames?.join(' ') || '');\n readonly style = computed(() => {\n return {\n width: this.options().fullWindow ? '100vw' : this.options().width,\n height: this.options().fullWindow ? '100vh' : this.options().height,\n maxWidth: this.options().fullWindow ? '100vw' : this.options().maxWidth,\n maxHeight: this.options().fullWindow ? '100vh' : this.options().maxHeight || '96vh',\n minHeight: this.options().minHeight,\n minWidth: this.options().minWidth,\n };\n });\n}\n\n@Directive({\n selector: '[ngbDialogBackdrop]',\n host: {\n '(click)': `close()`,\n },\n})\nexport class NgbDialogBackdrop {\n readonly dialog = inject(NgbDialogContainer);\n readonly options = this.dialog.options;\n\n close() {\n if (!this.options().disableClose) {\n this.dialog.close();\n }\n }\n}\n\n@Directive({\n selector: '[ngbDialog]',\n hostDirectives: [FocusTrap],\n providers: [provideFocusTrapOptions(() => ({ initial: true }))],\n})\nexport class NgbDialogContainer extends BaseDialog {\n readonly myDialog = viewChild('contentContainer', { read: ViewContainerRef });\n\n backdropColor = true;\n isSidePopup = true;\n\n readonly onDone = new Subject<any>();\n readonly options = signal<DialogOptions>(new DialogOptions());\n readonly showBackdrop = computed(() => !this.options().fullWindow && this.options().backdrop);\n isHideHeader = false;\n\n constructor() {\n super();\n afterNextRender(() => {\n this._afterViewSource.next(this.myDialog()!);\n });\n }\n\n override setOptions(options: DialogOptions) {\n this.options.set(options);\n this.isHideHeader = options.header === false;\n this.backdropColor = options.backdropColor || true;\n }\n}\n\n@Directive({\n selector: '[ngbDialogClose]',\n hostDirectives: [{ directive: NgbPortalClose, inputs: ['ngbPortalClose: ngbDialogClose'] }],\n})\nexport class NgbDialogClose {}\n\nexport function aliasDialog(dialog: typeof NgbDialogContainer) {\n return { provide: NgbDialogContainer, useExisting: dialog };\n}\n","import {\n animate,\n AnimationTriggerMetadata,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\nexport const sideAnimation: AnimationTriggerMetadata = trigger('sideAnimation', [\n state('1', style({ transform: 'none' })),\n state('void', style({ transform: '{{outTransform}}' }), {\n params: { outTransform: 'translate3d(100%, 0, 0)' },\n }),\n state('0', style({ transform: '{{outTransform}}' }), {\n params: { outTransform: 'translate3d(100%, 0, 0)' },\n }),\n transition('* => *', animate('300ms cubic-bezier(0.55, 0.31, 0.15, 0.93)')),\n]);\n\nexport const viewAnimation: AnimationTriggerMetadata = trigger('viewAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translate3d(0, 10px, 0) scale(0.99)', opacity: 0 })),\n state('0', style({ transform: 'translate3d(0, 10px, 0)', opacity: 0 })),\n transition('* => *', animate('200ms ease')),\n]);\n// cubic-bezier(0.25, 0.8, 0.25, 1)\n","/*\n * Public API Surface of dialog\n */\n\nexport * from './dialog.service';\nexport * from './dialog';\nexport * from './dialog.animation';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -27,12 +27,14 @@ function statusChange(sControl) {
27
27
  const statusChanges = signal(null, ...(ngDevMode ? [{ debugName: "statusChanges", equal: () => false }] : [{ equal: () => false }]));
28
28
  effect(cleanup => {
29
29
  const control = sControl();
30
- if (control) {
31
- const sub = control.statusChanges?.subscribe(() => {
32
- statusChanges.set(control.status);
33
- });
30
+ if (control?.statusChanges) {
31
+ const sub = control.statusChanges.subscribe(() => statusChanges.set(control.status));
34
32
  cleanup(() => sub?.unsubscribe());
35
33
  }
34
+ else if (control?.field) {
35
+ // For standalone controls without statusChanges observable
36
+ statusChanges.set(control.field().valid() ? 'VALID' : 'INVALID');
37
+ }
36
38
  });
37
39
  return statusChanges;
38
40
  }
@@ -58,17 +60,28 @@ class NgbInputError {
58
60
  }, []);
59
61
  }, ...(ngDevMode ? [{ debugName: "errorNames" }] : []));
60
62
  this.isFieldInvalid = computed(() => {
61
- const control = this.formField._control();
62
- const status = this.formField.status();
63
- const names = this.errorNames();
64
- return (status === 'INVALID' &&
65
- control?.touched &&
66
- names.every(n => !!control.errors?.[n.name] !== n.negated));
63
+ const control = this.formField.__control?.();
64
+ return control ? this.fieldInvalidFn(control) : this.oldIsFieldInvalid();
67
65
  }, ...(ngDevMode ? [{ debugName: "isFieldInvalid" }] : []));
68
66
  this.isInvalid = computed(() => {
69
67
  return this.invalid() ?? this.isFieldInvalid();
70
68
  }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
71
69
  }
70
+ oldIsFieldInvalid() {
71
+ const control = this.formField._control();
72
+ const status = this.formField.status();
73
+ const names = this.errorNames();
74
+ return (status === 'INVALID' &&
75
+ control?.touched &&
76
+ names.every(n => !!control.errors?.[n.name] !== n.negated));
77
+ }
78
+ fieldInvalidFn(control) {
79
+ // const control = this.formField.__control();
80
+ const names = this.errorNames();
81
+ const field = control?.field()();
82
+ return (field?.touched() &&
83
+ names.every(n => !!field?.errors().some((x) => x.kind == n.name) !== n.negated));
84
+ }
72
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbInputError, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
86
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbInputError, isStandalone: true, selector: "[ngbError]", inputs: { ngbError: { classPropertyName: "ngbError", publicName: "ngbError", isSignal: true, isRequired: true, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "hidden": "!animate() && !isInvalid()" } }, ngImport: i0 }); }
74
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/currency-mask.ng.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control) {\n const sub = control.statusChanges?.subscribe(() => {\n statusChanges.set(control.status);\n });\n cleanup(() => sub?.unsubscribe());\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n });\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: 'input[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setInputValue($event)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n protected setInputValue(ev: Event): void {\n const value = (ev.target as HTMLInputElement).value;\n this.setValue(value, true);\n }\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from './input';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n private ngbInput = inject(InputBase, { optional: true });\n\n readonly maxHeight = input<number>();\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n\n effect(() => {\n const _ = this.ngbInput?.value();\n this.update();\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n const height = el.scrollHeight + borderHeight;\n const maxHeight = this.maxHeight();\n if (maxHeight) {\n el.style.height = Math.min(height, maxHeight) + 'px';\n } else {\n el.style.height = height + 'px';\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","import { Directive, ElementRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[numberFormat]',\n providers: [provideValueAccessor(NumberFormat)],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class NumberFormat implements ControlValueAccessor {\n // Input signals with default values\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n readonly decimals = input<number>(2);\n readonly decimalSeparator = input<string>('.');\n readonly thousandSeparator = input<string>(',');\n\n // Private members\n private onChange = (_: any) => {};\n private onTouched = () => {};\n private rawValue = '';\n\n private readonly specialKeys = [\n 'Backspace',\n 'Tab',\n 'End',\n 'Home',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n ];\n\n // Handles input changes\n onInput(ev: Event) {\n const value = (ev.target as any).value.toString();\n const position = this.el.nativeElement.selectionStart;\n const cleanedValue = this.cleanValue(value);\n\n if (this.isValidNumber(cleanedValue)) {\n this.rawValue = cleanedValue;\n this.formatDisplayValue(cleanedValue);\n this.onChange(this.rawValue);\n this.onTouched();\n this.updateCursorPosition(value, position ?? 0);\n }\n }\n\n // Handles keydown events to validate input\n onKeyDown(event: KeyboardEvent) {\n if (this.specialKeys.includes(event.key)) return;\n\n const value = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n\n // Handle decimal separator\n if (event.key === this.decimalSeparator()) {\n if (value.includes(this.decimalSeparator())) {\n event.preventDefault();\n }\n return;\n }\n\n // Only allow digits\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n // Check decimal digits limit\n if (this.isDecimalPartFull(value, position ?? 0)) {\n event.preventDefault();\n }\n }\n\n // Handle blur event\n onBlur() {\n if (this.rawValue) {\n this.formatDisplayValue(this.rawValue);\n }\n this.onTouched();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string) {\n if (value) {\n const cleanValue = this.cleanValue(value);\n this.rawValue = cleanValue;\n this.formatDisplayValue(cleanValue);\n } else {\n this.reset();\n }\n }\n\n private reset() {\n this.el.nativeElement.value = '';\n this.rawValue = '';\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.el.nativeElement.disabled = isDisabled;\n }\n\n // Private helper methods\n private cleanValue(value: string | number): string {\n return value\n .toString()\n .replace(new RegExp(`[^\\\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');\n }\n\n private isValidNumber(value: string): boolean {\n const parts = value.split(this.decimalSeparator());\n return parts.length <= 2 && parts.every(part => /^\\d*$/.test(part));\n }\n\n private formatDisplayValue(value: string) {\n if (!value) {\n this.reset();\n return;\n }\n\n const parts = value.split(this.decimalSeparator());\n let integerPart = parts[0]\n .replace(/^0+(?=\\d)/, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandSeparator());\n const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;\n\n this.el.nativeElement.value =\n decimalPart !== undefined\n ? `${integerPart}${this.decimalSeparator()}${decimalPart}`\n : integerPart;\n }\n\n private updateCursorPosition(originalValue: string, originalPosition: number) {\n setTimeout(() => {\n const el = this.el.nativeElement;\n if (originalPosition === originalValue.length) {\n // If cursor was at the end, keep it at the end\n el.setSelectionRange(el.value.length, el.value.length);\n return;\n }\n\n // Calculate new cursor position based on thousand separators\n const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));\n const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);\n const newSeparatorCount = this.countSeparators(newValueUpToOldPos);\n\n const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);\n el.setSelectionRange(newPosition, newPosition);\n }, 0);\n }\n\n private countSeparators(value: string): number {\n const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');\n return (value.match(regex) || []).length;\n }\n\n private isDecimalPartFull(value: string, position: number): boolean {\n const decimalPos = value.indexOf(this.decimalSeparator());\n return (\n decimalPos !== -1 &&\n position > decimalPos &&\n value.substring(decimalPos + 1).length >= this.decimals()\n );\n }\n\n private escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAiBa,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,SAAS,4CAAI,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAAnB,EAAE,WAAW,EAAE,IAAI,EAAE,GAAC;QACzD,IAAG,CAAA,GAAA,GAAG,QAAQ,EAAE;;AAGhB,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,oDAC9D;QAEQ,IAAM,CAAA,MAAA,GAAG,eAAe,CAAgB,UAAU,CAAC,MAAM,aAAa,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACxE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC/F;8GAZY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACU,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MASwB,aAAa,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAVpE,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC3C,iBAAA;;AAeD,SAAS,YAAY,CAAC,QAAuC,EAAA;IAC3D,MAAM,aAAa,GAAG,MAAM,CAAgB,IAAI,EAAI,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,KAAK,EAAE,MAAM,KAAK,EAApB,CAAA,GAAA,CAAA,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,CAAA,CAAA,CAAC;IACzE,MAAM,CAAC,OAAO,IAAG;AACf,QAAA,MAAM,OAAO,GAAG,QAAQ,EAAE;QAC1B,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,MAAK;AAChD,gBAAA,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AACnC,aAAC,CAAC;YACF,OAAO,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,CAAC;;AAErC,KAAC,CAAC;AACF,IAAA,OAAO,aAAa;AACtB;;MChCa,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AACjD;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAU;QACnC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAC1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;AAEf,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC1C,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;YACjD,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,CAAC,KAAI;AACT,gBAAA,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE;gBACxB,IAAI,OAAO,EAAE;oBACX,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;oBACvC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;;AAE7D,gBAAA,OAAO,GAAG;aACX,EACD,EAA0C,CAC3C;AACH,SAAC,sDAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;YAE/B,QACE,MAAM,KAAK,SAAS;AACpB,gBAAA,OAAO,EAAE,OAAO;gBAChB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAE9D,SAAC,0DAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACjC,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AAChD,SAAC,qDAAC;AACH;8GAvCY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,4BAA4B;AACzC,qBAAA;AACF,iBAAA;;AA0Ce,SAAA,mBAAmB,CACjC,OAAwB,EACxB,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAA;IAEzC,IAAI,OAAO,YAAY,SAAS,IAAI,OAAO,YAAY,SAAS,EAAE;QAChE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;IAE/E,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,aAAa,EAAE;IAC1C,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,aAAa,EAAE;IAC5C,OAAO,CAAC,sBAAsB,EAAE;AAClC;AAEa,MAAA,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE;AAC5C,IAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,IAAA,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,UAAU,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACjE,CAAA;;MCrDY,SAAS,CAAA;AAVtB,IAAA,WAAA,GAAA;QAWW,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAI,EAAS,iDAAC;QAE3B,IAAE,CAAA,EAAA,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,QAAQ,EAAE;AA6BhD;AAxBW,IAAA,aAAa,CAAC,EAAS,EAAA;AAC/B,QAAA,MAAM,KAAK,GAAI,EAAE,CAAC,MAA2B,CAAC,KAAK;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;;AAG5B,IAAA,QAAQ,CAAC,KAAU,EAAE,SAAS,GAAG,KAAK,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,SAAS,IAAI;;;AAItB,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGtB,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;8GA/BV,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,4XART,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAQjC,SAAS,EAAA,UAAA,EAAA,CAAA;kBAVrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE,CAAC,oBAAoB,CAAA,SAAA,CAAW,CAAC;AAC5C,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,SAAS,EAAE,uBAAuB;AACnC,qBAAA;AACF,iBAAA;;;MCCY,UAAU,CAAA;AAOrB,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA+B,UAAU,CAAC;QACrD,IAAK,CAAA,KAAA,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE/C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAIlC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAE3C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,CAAC,OAAO,IAAG;;YAEf,IAAI,CAAC,MAAM,EAAE;AAEb,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,IAAG;gBAClD,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;oBACrC,IAAI,CAAC,MAAM,EAAE;;qBACR;;;AAGL,oBAAA,eAAe,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;;AAEtD,aAAC,CAAC;YACF,OAAO,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,CAAC;AAEjC,YAAA,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;AACtC,gBAAA,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;oBACzB,IAAI,CAAC,MAAM,EAAE;;AAEjB,aAAC,CAAC;;YAGF,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;YACjC,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;AAChC,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;YAChC,IAAI,CAAC,MAAM,EAAE;AACf,SAAC,CAAC;;IAGI,MAAM,GAAA;AACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAChC,QAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;;QAExB,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY;AACtD,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,GAAG,YAAY;AAC7C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,SAAS,EAAE;AACb,YAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;;aAC/C;YACL,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI;;;8GAtDxB,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA;;;MCLY,QAAQ,CAAA;AANrB,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAA,CAAA,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG;AACjC;8GAHY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBANpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,IAAI;AACnB,qBAAA;AACF,iBAAA;;;MCKY,YAAY,CAAA;AATzB,IAAA,WAAA,GAAA;;AAWmB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA+B,UAAU,CAAC;AAE7D,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;AAC3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,GAAG,4DAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAS,GAAG,6DAAC;;AAGvC,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;QACpB,IAAQ,CAAA,QAAA,GAAG,EAAE;AAEJ,QAAA,IAAA,CAAA,WAAW,GAAG;YAC7B,WAAW;YACX,KAAK;YACL,KAAK;YACL,MAAM;YACN,WAAW;YACX,YAAY;YACZ,QAAQ;SACT;AAkJF;;AA/IC,IAAA,OAAO,CAAC,EAAS,EAAA;QACf,MAAM,KAAK,GAAI,EAAE,CAAC,MAAc,CAAC,KAAK,CAAC,QAAQ,EAAE;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAE3C,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;;;;AAKnD,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE;QAE1C,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;;QAGrD,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,EAAE,EAAE;YACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;gBAC3C,KAAK,CAAC,cAAc,EAAE;;YAExB;;;QAIF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;YACtB;;;QAIF,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE;;;;IAK1B,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;;QAExC,IAAI,CAAC,SAAS,EAAE;;;AAIlB,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,KAAK,EAAE;YACT,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACzC,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;;aAC9B;YACL,IAAI,CAAC,KAAK,EAAE;;;IAIR,KAAK,GAAA;QACX,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAClC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU;;;AAIrC,IAAA,UAAU,CAAC,KAAsB,EAAA;AACvC,QAAA,OAAO;AACJ,aAAA,QAAQ;aACR,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;;AAGhF,IAAA,aAAa,CAAC,KAAa,EAAA;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAG7D,IAAA,kBAAkB,CAAC,KAAa,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,KAAK,EAAE;YACZ;;QAGF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClD,QAAA,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;AACtB,aAAA,OAAO,CAAC,WAAW,EAAE,EAAE;aACvB,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7D,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS;AAEzF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;AACzB,YAAA,WAAW,KAAK;kBACZ,CAAG,EAAA,WAAW,CAAG,EAAA,IAAI,CAAC,gBAAgB,EAAE,CAAG,EAAA,WAAW,CAAE;kBACxD,WAAW;;IAGX,oBAAoB,CAAC,aAAqB,EAAE,gBAAwB,EAAA;QAC1E,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAChC,YAAA,IAAI,gBAAgB,KAAK,aAAa,CAAC,MAAM,EAAE;;AAE7C,gBAAA,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBACtD;;;AAIF,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC5F,YAAA,MAAM,kBAAkB,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;YAElE,MAAM,WAAW,GAAG,gBAAgB,IAAI,iBAAiB,GAAG,iBAAiB,CAAC;AAC9E,YAAA,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC;SAC/C,EAAE,CAAC,CAAC;;AAGC,IAAA,eAAe,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC;AAC1E,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM;;IAGlC,iBAAiB,CAAC,KAAa,EAAE,QAAgB,EAAA;QACvD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzD,QAAA,QACE,UAAU,KAAK,CAAC,CAAC;AACjB,YAAA,QAAQ,GAAG,UAAU;AACrB,YAAA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAIrD,IAAA,YAAY,CAAC,GAAW,EAAA;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;;8GArKxC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,wmBAPZ,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAOpC,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE,CAAC,oBAAoB,CAAA,YAAA,CAAc,CAAC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,WAAW,EAAE,mBAAmB;AACjC,qBAAA;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngbase-adk-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/currency-mask.ng.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control?.statusChanges) {\n const sub = control.statusChanges.subscribe(() => statusChanges.set(control.status));\n cleanup(() => sub?.unsubscribe());\n } else if ((control as any)?.field) {\n // For standalone controls without statusChanges observable\n statusChanges.set((control as any).field().valid() ? 'VALID' : 'INVALID');\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = (this.formField as any).__control?.();\n return control ? this.fieldInvalidFn(control) : this.oldIsFieldInvalid();\n });\n\n oldIsFieldInvalid() {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n }\n\n fieldInvalidFn(control: any) {\n // const control = this.formField.__control();\n const names = this.errorNames();\n const field = control?.field()();\n\n return (\n field?.touched() &&\n names.every(n => !!field?.errors().some((x: any) => x.kind == n.name) !== n.negated)\n );\n }\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: 'input[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setInputValue($event)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n protected setInputValue(ev: Event): void {\n const value = (ev.target as HTMLInputElement).value;\n this.setValue(value, true);\n }\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from './input';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n private ngbInput = inject(InputBase, { optional: true });\n\n readonly maxHeight = input<number>();\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n\n effect(() => {\n const _ = this.ngbInput?.value();\n this.update();\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n const height = el.scrollHeight + borderHeight;\n const maxHeight = this.maxHeight();\n if (maxHeight) {\n el.style.height = Math.min(height, maxHeight) + 'px';\n } else {\n el.style.height = height + 'px';\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","import { Directive, ElementRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[numberFormat]',\n providers: [provideValueAccessor(NumberFormat)],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class NumberFormat implements ControlValueAccessor {\n // Input signals with default values\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n readonly decimals = input<number>(2);\n readonly decimalSeparator = input<string>('.');\n readonly thousandSeparator = input<string>(',');\n\n // Private members\n private onChange = (_: any) => {};\n private onTouched = () => {};\n private rawValue = '';\n\n private readonly specialKeys = [\n 'Backspace',\n 'Tab',\n 'End',\n 'Home',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n ];\n\n // Handles input changes\n onInput(ev: Event) {\n const value = (ev.target as any).value.toString();\n const position = this.el.nativeElement.selectionStart;\n const cleanedValue = this.cleanValue(value);\n\n if (this.isValidNumber(cleanedValue)) {\n this.rawValue = cleanedValue;\n this.formatDisplayValue(cleanedValue);\n this.onChange(this.rawValue);\n this.onTouched();\n this.updateCursorPosition(value, position ?? 0);\n }\n }\n\n // Handles keydown events to validate input\n onKeyDown(event: KeyboardEvent) {\n if (this.specialKeys.includes(event.key)) return;\n\n const value = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n\n // Handle decimal separator\n if (event.key === this.decimalSeparator()) {\n if (value.includes(this.decimalSeparator())) {\n event.preventDefault();\n }\n return;\n }\n\n // Only allow digits\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n // Check decimal digits limit\n if (this.isDecimalPartFull(value, position ?? 0)) {\n event.preventDefault();\n }\n }\n\n // Handle blur event\n onBlur() {\n if (this.rawValue) {\n this.formatDisplayValue(this.rawValue);\n }\n this.onTouched();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string) {\n if (value) {\n const cleanValue = this.cleanValue(value);\n this.rawValue = cleanValue;\n this.formatDisplayValue(cleanValue);\n } else {\n this.reset();\n }\n }\n\n private reset() {\n this.el.nativeElement.value = '';\n this.rawValue = '';\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.el.nativeElement.disabled = isDisabled;\n }\n\n // Private helper methods\n private cleanValue(value: string | number): string {\n return value\n .toString()\n .replace(new RegExp(`[^\\\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');\n }\n\n private isValidNumber(value: string): boolean {\n const parts = value.split(this.decimalSeparator());\n return parts.length <= 2 && parts.every(part => /^\\d*$/.test(part));\n }\n\n private formatDisplayValue(value: string) {\n if (!value) {\n this.reset();\n return;\n }\n\n const parts = value.split(this.decimalSeparator());\n let integerPart = parts[0]\n .replace(/^0+(?=\\d)/, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandSeparator());\n const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;\n\n this.el.nativeElement.value =\n decimalPart !== undefined\n ? `${integerPart}${this.decimalSeparator()}${decimalPart}`\n : integerPart;\n }\n\n private updateCursorPosition(originalValue: string, originalPosition: number) {\n setTimeout(() => {\n const el = this.el.nativeElement;\n if (originalPosition === originalValue.length) {\n // If cursor was at the end, keep it at the end\n el.setSelectionRange(el.value.length, el.value.length);\n return;\n }\n\n // Calculate new cursor position based on thousand separators\n const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));\n const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);\n const newSeparatorCount = this.countSeparators(newValueUpToOldPos);\n\n const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);\n el.setSelectionRange(newPosition, newPosition);\n }, 0);\n }\n\n private countSeparators(value: string): number {\n const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');\n return (value.match(regex) || []).length;\n }\n\n private isDecimalPartFull(value: string, position: number): boolean {\n const decimalPos = value.indexOf(this.decimalSeparator());\n return (\n decimalPos !== -1 &&\n position > decimalPos &&\n value.substring(decimalPos + 1).length >= this.decimals()\n );\n }\n\n private escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -9,8 +9,10 @@ declare class NgbInputError {
9
9
  readonly invalid: i0.InputSignal<boolean | undefined>;
10
10
  readonly animate: i0.WritableSignal<boolean>;
11
11
  private readonly errorNames;
12
- readonly isFieldInvalid: i0.Signal<boolean | null | undefined>;
13
- readonly isInvalid: i0.Signal<boolean | null | undefined>;
12
+ readonly isFieldInvalid: i0.Signal<any>;
13
+ oldIsFieldInvalid(): boolean | null | undefined;
14
+ fieldInvalidFn(control: any): any;
15
+ readonly isInvalid: i0.Signal<any>;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbInputError, never>;
15
17
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbInputError, "[ngbError]", never, { "ngbError": { "alias": "ngbError"; "required": true; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngbase/adk",
3
- "version": "0.1.12",
3
+ "version": "0.1.15",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ng-base/ngbase.git"
@@ -44,17 +44,17 @@
44
44
  "types": "./bidi/index.d.ts",
45
45
  "default": "./fesm2022/ngbase-adk-bidi.mjs"
46
46
  },
47
- "./autocomplete": {
48
- "types": "./autocomplete/index.d.ts",
49
- "default": "./fesm2022/ngbase-adk-autocomplete.mjs"
47
+ "./breadcrumb": {
48
+ "types": "./breadcrumb/index.d.ts",
49
+ "default": "./fesm2022/ngbase-adk-breadcrumb.mjs"
50
50
  },
51
51
  "./avatar": {
52
52
  "types": "./avatar/index.d.ts",
53
53
  "default": "./fesm2022/ngbase-adk-avatar.mjs"
54
54
  },
55
- "./breadcrumb": {
56
- "types": "./breadcrumb/index.d.ts",
57
- "default": "./fesm2022/ngbase-adk-breadcrumb.mjs"
55
+ "./autocomplete": {
56
+ "types": "./autocomplete/index.d.ts",
57
+ "default": "./fesm2022/ngbase-adk-autocomplete.mjs"
58
58
  },
59
59
  "./cache": {
60
60
  "types": "./cache/index.d.ts",
@@ -64,14 +64,6 @@
64
64
  "types": "./carousel/index.d.ts",
65
65
  "default": "./fesm2022/ngbase-adk-carousel.mjs"
66
66
  },
67
- "./checkbox": {
68
- "types": "./checkbox/index.d.ts",
69
- "default": "./fesm2022/ngbase-adk-checkbox.mjs"
70
- },
71
- "./clipboard": {
72
- "types": "./clipboard/index.d.ts",
73
- "default": "./fesm2022/ngbase-adk-clipboard.mjs"
74
- },
75
67
  "./chip": {
76
68
  "types": "./chip/index.d.ts",
77
69
  "default": "./fesm2022/ngbase-adk-chip.mjs"
@@ -84,29 +76,29 @@
84
76
  "types": "./color-picker/index.d.ts",
85
77
  "default": "./fesm2022/ngbase-adk-color-picker.mjs"
86
78
  },
87
- "./dialog": {
88
- "types": "./dialog/index.d.ts",
89
- "default": "./fesm2022/ngbase-adk-dialog.mjs"
90
- },
91
79
  "./cookies": {
92
80
  "types": "./cookies/index.d.ts",
93
81
  "default": "./fesm2022/ngbase-adk-cookies.mjs"
94
82
  },
95
- "./drag": {
96
- "types": "./drag/index.d.ts",
97
- "default": "./fesm2022/ngbase-adk-drag.mjs"
98
- },
99
- "./form-field": {
100
- "types": "./form-field/index.d.ts",
101
- "default": "./fesm2022/ngbase-adk-form-field.mjs"
102
- },
103
83
  "./datepicker": {
104
84
  "types": "./datepicker/index.d.ts",
105
85
  "default": "./fesm2022/ngbase-adk-datepicker.mjs"
106
86
  },
107
- "./icon": {
108
- "types": "./icon/index.d.ts",
109
- "default": "./fesm2022/ngbase-adk-icon.mjs"
87
+ "./clipboard": {
88
+ "types": "./clipboard/index.d.ts",
89
+ "default": "./fesm2022/ngbase-adk-clipboard.mjs"
90
+ },
91
+ "./dialog": {
92
+ "types": "./dialog/index.d.ts",
93
+ "default": "./fesm2022/ngbase-adk-dialog.mjs"
94
+ },
95
+ "./checkbox": {
96
+ "types": "./checkbox/index.d.ts",
97
+ "default": "./fesm2022/ngbase-adk-checkbox.mjs"
98
+ },
99
+ "./drag": {
100
+ "types": "./drag/index.d.ts",
101
+ "default": "./fesm2022/ngbase-adk-drag.mjs"
110
102
  },
111
103
  "./hover-card": {
112
104
  "types": "./hover-card/index.d.ts",
@@ -120,6 +112,10 @@
120
112
  "types": "./inline-edit/index.d.ts",
121
113
  "default": "./fesm2022/ngbase-adk-inline-edit.mjs"
122
114
  },
115
+ "./form-field": {
116
+ "types": "./form-field/index.d.ts",
117
+ "default": "./fesm2022/ngbase-adk-form-field.mjs"
118
+ },
123
119
  "./keys": {
124
120
  "types": "./keys/index.d.ts",
125
121
  "default": "./fesm2022/ngbase-adk-keys.mjs"
@@ -128,6 +124,10 @@
128
124
  "types": "./layout/index.d.ts",
129
125
  "default": "./fesm2022/ngbase-adk-layout.mjs"
130
126
  },
127
+ "./icon": {
128
+ "types": "./icon/index.d.ts",
129
+ "default": "./fesm2022/ngbase-adk-icon.mjs"
130
+ },
131
131
  "./list": {
132
132
  "types": "./list/index.d.ts",
133
133
  "default": "./fesm2022/ngbase-adk-list.mjs"
@@ -136,37 +136,33 @@
136
136
  "types": "./mask/index.d.ts",
137
137
  "default": "./fesm2022/ngbase-adk-mask.mjs"
138
138
  },
139
- "./network": {
140
- "types": "./network/index.d.ts",
141
- "default": "./fesm2022/ngbase-adk-network.mjs"
142
- },
143
139
  "./menu": {
144
140
  "types": "./menu/index.d.ts",
145
141
  "default": "./fesm2022/ngbase-adk-menu.mjs"
146
142
  },
143
+ "./pagination": {
144
+ "types": "./pagination/index.d.ts",
145
+ "default": "./fesm2022/ngbase-adk-pagination.mjs"
146
+ },
147
147
  "./otp": {
148
148
  "types": "./otp/index.d.ts",
149
149
  "default": "./fesm2022/ngbase-adk-otp.mjs"
150
150
  },
151
- "./pagination": {
152
- "types": "./pagination/index.d.ts",
153
- "default": "./fesm2022/ngbase-adk-pagination.mjs"
151
+ "./network": {
152
+ "types": "./network/index.d.ts",
153
+ "default": "./fesm2022/ngbase-adk-network.mjs"
154
154
  },
155
155
  "./popover": {
156
156
  "types": "./popover/index.d.ts",
157
157
  "default": "./fesm2022/ngbase-adk-popover.mjs"
158
158
  },
159
- "./portal": {
160
- "types": "./portal/index.d.ts",
161
- "default": "./fesm2022/ngbase-adk-portal.mjs"
162
- },
163
159
  "./progress": {
164
160
  "types": "./progress/index.d.ts",
165
161
  "default": "./fesm2022/ngbase-adk-progress.mjs"
166
162
  },
167
- "./radio": {
168
- "types": "./radio/index.d.ts",
169
- "default": "./fesm2022/ngbase-adk-radio.mjs"
163
+ "./portal": {
164
+ "types": "./portal/index.d.ts",
165
+ "default": "./fesm2022/ngbase-adk-portal.mjs"
170
166
  },
171
167
  "./resizable": {
172
168
  "types": "./resizable/index.d.ts",
@@ -180,6 +176,10 @@
180
176
  "types": "./select/index.d.ts",
181
177
  "default": "./fesm2022/ngbase-adk-select.mjs"
182
178
  },
179
+ "./radio": {
180
+ "types": "./radio/index.d.ts",
181
+ "default": "./fesm2022/ngbase-adk-radio.mjs"
182
+ },
183
183
  "./sheet": {
184
184
  "types": "./sheet/index.d.ts",
185
185
  "default": "./fesm2022/ngbase-adk-sheet.mjs"
@@ -188,26 +188,26 @@
188
188
  "types": "./selectable/index.d.ts",
189
189
  "default": "./fesm2022/ngbase-adk-selectable.mjs"
190
190
  },
191
- "./sidenav": {
192
- "types": "./sidenav/index.d.ts",
193
- "default": "./fesm2022/ngbase-adk-sidenav.mjs"
194
- },
195
191
  "./slider": {
196
192
  "types": "./slider/index.d.ts",
197
193
  "default": "./fesm2022/ngbase-adk-slider.mjs"
198
194
  },
195
+ "./sidenav": {
196
+ "types": "./sidenav/index.d.ts",
197
+ "default": "./fesm2022/ngbase-adk-sidenav.mjs"
198
+ },
199
199
  "./sonner": {
200
200
  "types": "./sonner/index.d.ts",
201
201
  "default": "./fesm2022/ngbase-adk-sonner.mjs"
202
202
  },
203
- "./stepper": {
204
- "types": "./stepper/index.d.ts",
205
- "default": "./fesm2022/ngbase-adk-stepper.mjs"
206
- },
207
203
  "./switch": {
208
204
  "types": "./switch/index.d.ts",
209
205
  "default": "./fesm2022/ngbase-adk-switch.mjs"
210
206
  },
207
+ "./stepper": {
208
+ "types": "./stepper/index.d.ts",
209
+ "default": "./fesm2022/ngbase-adk-stepper.mjs"
210
+ },
211
211
  "./table": {
212
212
  "types": "./table/index.d.ts",
213
213
  "default": "./fesm2022/ngbase-adk-table.mjs"
@@ -220,6 +220,10 @@
220
220
  "types": "./tabs/index.d.ts",
221
221
  "default": "./fesm2022/ngbase-adk-tabs.mjs"
222
222
  },
223
+ "./toggle": {
224
+ "types": "./toggle/index.d.ts",
225
+ "default": "./fesm2022/ngbase-adk-toggle.mjs"
226
+ },
223
227
  "./toggle-group": {
224
228
  "types": "./toggle-group/index.d.ts",
225
229
  "default": "./fesm2022/ngbase-adk-toggle-group.mjs"
@@ -228,9 +232,9 @@
228
232
  "types": "./tooltip/index.d.ts",
229
233
  "default": "./fesm2022/ngbase-adk-tooltip.mjs"
230
234
  },
231
- "./toggle": {
232
- "types": "./toggle/index.d.ts",
233
- "default": "./fesm2022/ngbase-adk-toggle.mjs"
235
+ "./tree": {
236
+ "types": "./tree/index.d.ts",
237
+ "default": "./fesm2022/ngbase-adk-tree.mjs"
234
238
  },
235
239
  "./tour": {
236
240
  "types": "./tour/index.d.ts",
@@ -240,10 +244,6 @@
240
244
  "types": "./translate/index.d.ts",
241
245
  "default": "./fesm2022/ngbase-adk-translate.mjs"
242
246
  },
243
- "./tree": {
244
- "types": "./tree/index.d.ts",
245
- "default": "./fesm2022/ngbase-adk-tree.mjs"
246
- },
247
247
  "./utils": {
248
248
  "types": "./utils/index.d.ts",
249
249
  "default": "./fesm2022/ngbase-adk-utils.mjs"
@@ -1,34 +1,22 @@
1
1
  # MEE Alert
2
2
 
3
3
  ```typescript
4
- import { alertPortal } from '@/ui/alert';
4
+ import { Alert } from '@/ui/alert';
5
5
  ```
6
6
 
7
- ## Usage
7
+ ## Components
8
+
9
+ ### `<<%= name %>-alert>`
8
10
 
9
- ```ts
10
- const alert = alertPortal();
11
- alert.open({
12
- title: 'Alert',
13
- description: 'This is an alert',
14
- actions: [
15
- {
16
- text: 'Cancel',
17
- type: 'secondary', // ButtonVariant
18
- handler: close => close(),
19
- },
20
- {
21
- text: 'OK',
22
- type: 'primary', // ButtonVariant
23
- handler: close => {
24
- okHandler();
25
- close();
26
- },
27
- },
28
- ],
29
- });
11
+ - **Inputs:**
12
+ - `variant`: 'error' | 'default' | 'success' | 'info' = 'default' - The variant of the alert
13
+
14
+ ## Usage
30
15
 
31
- function okHandler() {
32
- console.log('OK');
33
- }
16
+ ```html
17
+ <<%= name %>-alert variant="info">
18
+ <ng-container class="a-title">Info</ng-container>
19
+ This is an info alert
20
+ </<%= name %>-alert>
21
+ <<%= name %>-alert variant="success"> This is a success alert </<%= name %>-alert>
34
22
  ```
@@ -1,62 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
2
- import { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';
3
- import { Button, ButtonVariant } from '<%= basepath %>/button';
4
- import { dialogPortal } from '<%= basepath %>/dialog';
5
-
6
- export interface AlertOptions {
7
- title?: string;
8
- description?: string;
9
- actions?: {
10
- text: string;
11
- type?: ButtonVariant;
12
- handler: (fn: VoidFunction) => any;
13
- }[];
14
- }
15
-
16
- export function alertPortal() {
17
- const base = dialogPortal();
18
-
19
- function open<T>(opt: AlertOptions, comp?: DialogInput<T>) {
20
- const options: DialogOptions = {
21
- ...new DialogOptions(),
22
- data: opt,
23
- title: opt.title,
24
- width: '32rem',
25
- maxWidth: '95vw',
26
- disableClose: true,
27
- header: true,
28
- focusTrap: true,
29
- };
30
-
31
- const diaRef = base.open(comp || Alert, options);
32
-
33
- return diaRef;
34
- }
35
-
36
- function closeAll() {
37
- base.closeAll();
38
- }
39
- return { open, closeAll };
40
- }
41
-
42
- @Component({
43
- selector: '<%= name %>-alert',
44
- changeDetection: ChangeDetectionStrategy.OnPush,
45
- imports: [Button],
46
- template: `
47
- <h4 class="mb-2 text-base font-bold">{{ data?.title }}</h4>
48
- <p class="pb-3 text-muted-foreground">{{ data?.description }}</p>
49
- <div class="flex justify-end gap-4 pt-1">
50
- @for (action of data?.actions; track action) {
51
- <button [<%= name %>Button]="action.type || 'primary'" (click)="action.handler(diaRef.close)">
52
- {{ action.text }}
53
- </button>
54
- }
55
- </div>
56
- `,
57
- })
58
- export class Alert {
59
- diaRef = inject<DialogRef<AlertOptions>>(DialogRef);
60
-
61
- data = this.diaRef.options?.data;
62
- }
@@ -2,6 +2,20 @@ import { ChangeDetectionStrategy, Component, computed, inject, input } from '@an
2
2
  import { NgbAvatar, NgbAvatarGroup, aliasAvatar } from '@ngbase/adk/avatar';
3
3
 
4
4
  type AvatarSize = 'xs' | 'sm' | 'md' | 'lg';
5
+ export type AvatarVariant = 'primary' | 'secondary' | 'default';
6
+
7
+ const avatarSizesStyles = {
8
+ xs: 'h-5 w-5 text-[10px] !border',
9
+ sm: 'h-6 w-6',
10
+ md: 'h-8 w-8 text-xs',
11
+ lg: 'h-10 w-10',
12
+ };
13
+
14
+ const avatarVariantStyles = {
15
+ primary: ' bg-primary text-white',
16
+ secondary: ' bg-primary-foreground text-primary',
17
+ default: ' bg-background text-muted-foreground border-2 border-muted',
18
+ };
5
19
 
6
20
  @Component({
7
21
  selector: '<%= name %>-avatar-group',
@@ -29,14 +43,19 @@ export class AvatarGroup {
29
43
  `,
30
44
  host: {
31
45
  class:
32
- 'inline-flex aspect-square rounded-full overflow-hidden border-2 border-muted relative bg-background text-muted-foreground items-center justify-center',
33
- '[class]': `aSize() === 'xs' ? 'h-5 w-5 text-[10px] !border' : aSize() === 'sm' ? 'h-6 w-6' : aSize() === 'md' ? 'h-8 w-8' : aSize() === 'lg' ? 'h-10 w-10' : ''`,
46
+ 'inline-flex aspect-square rounded-full overflow-hidden relative items-center justify-center flex-none',
47
+ '[class]': `classess()`,
34
48
  },
35
49
  })
36
50
  export class Avatar extends NgbAvatar {
37
51
  readonly group = inject(AvatarGroup, { optional: true });
38
52
 
39
53
  readonly size = input<AvatarSize>();
54
+ readonly variant = input<AvatarVariant>('default');
40
55
 
41
56
  readonly aSize = computed(() => this.size() ?? this.group?.size() ?? 'md');
57
+
58
+ readonly classess = computed(() => {
59
+ return `${avatarSizesStyles[this.aSize()]} ${avatarVariantStyles[this.variant()]}`;
60
+ });
42
61
  }
@@ -1,5 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
2
 
3
+ export type BadgeVariant = 'default' | 'secondary' | 'outline' | 'destructive';
4
+
3
5
  @Component({
4
6
  selector: '<%= name %>-badge, [<%= name %>Badge]',
5
7
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -7,7 +9,7 @@ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
7
9
  host: {
8
10
  class: 'inline-flex items-center gap-1 rounded-md border px-2.5 py-0.5 text-xs font-semibold',
9
11
  '[class]': `variant() === 'default'
10
- ? 'bg-primary text-primary-foreground hover:bg-primary/80 border-transparent'
12
+ ? 'bg-primary text-primary-foreground border-transparent'
11
13
  : variant() === 'secondary' ? 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent'
12
14
  : variant() === 'outline' ? 'text-foreground border-input bg-background hover:bg-accent border-border'
13
15
  : variant() === 'destructive' ? 'bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent'
@@ -15,5 +17,5 @@ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
15
17
  },
16
18
  })
17
19
  export class Badge {
18
- readonly variant = input<'default' | 'secondary' | 'outline' | 'destructive'>('default');
20
+ readonly variant = input<BadgeVariant>('default');
19
21
  }
@@ -0,0 +1,34 @@
1
+ # MEE Confirmation
2
+
3
+ ```typescript
4
+ import { confirmationPortal } from '@/ui/confirmation';
5
+ ```
6
+
7
+ ## Usage
8
+
9
+ ```ts
10
+ const confirmation = confirmationPortal();
11
+ confirmation.open({
12
+ title: 'Confirmation',
13
+ description: 'This is a confirmation dialog.',
14
+ actions: [
15
+ {
16
+ text: 'Cancel',
17
+ type: 'secondary', // ButtonVariant
18
+ handler: close => close(),
19
+ },
20
+ {
21
+ text: 'OK',
22
+ type: 'primary', // ButtonVariant
23
+ handler: close => {
24
+ okHandler();
25
+ close();
26
+ },
27
+ },
28
+ ],
29
+ });
30
+
31
+ function okHandler() {
32
+ console.log('OK');
33
+ }
34
+ ```
@@ -0,0 +1,62 @@
1
+ import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
2
+ import { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';
3
+ import { Button, ButtonVariant } from '<%= basepath %>/button';
4
+ import { dialogPortal } from '<%= basepath %>/dialog';
5
+
6
+ export interface ConfirmationOptions {
7
+ title?: string;
8
+ description?: string;
9
+ actions?: {
10
+ text: string;
11
+ type?: ButtonVariant;
12
+ handler: (fn: (v?: any) => any) => any;
13
+ }[];
14
+ }
15
+
16
+ export function ConfirmationPortal() {
17
+ const base = dialogPortal();
18
+
19
+ function open<T>(opt: ConfirmationOptions, comp?: DialogInput<T>) {
20
+ const options: DialogOptions = {
21
+ ...new DialogOptions(),
22
+ data: opt,
23
+ title: opt.title,
24
+ width: '32rem',
25
+ maxWidth: '95vw',
26
+ disableClose: true,
27
+ header: true,
28
+ focusTrap: true,
29
+ };
30
+
31
+ const diaRef = base.open(comp || Confirmation, options);
32
+
33
+ return diaRef;
34
+ }
35
+
36
+ function closeAll() {
37
+ base.closeAll();
38
+ }
39
+ return { open, closeAll };
40
+ }
41
+
42
+ @Component({
43
+ selector: '<%= name %>-confirmation',
44
+ changeDetection: ChangeDetectionStrategy.OnPush,
45
+ imports: [Button],
46
+ template: `
47
+ <!-- <h4 class="mb-2 text-base font-bold">{{ data?.title }}</h4> -->
48
+ <p class="text-muted-foreground pb-3">{{ data?.description }}</p>
49
+ <div class="flex justify-end gap-4 pt-1">
50
+ @for (action of data?.actions; track action) {
51
+ <button [<%= name %>Button]="action.type || 'primary'" (click)="action.handler(diaRef.close)">
52
+ {{ action.text }}
53
+ </button>
54
+ }
55
+ </div>
56
+ `,
57
+ })
58
+ export class Confirmation {
59
+ diaRef = inject<DialogRef<ConfirmationOptions>>(DialogRef);
60
+
61
+ data = this.diaRef.options?.data;
62
+ }
@@ -0,0 +1 @@
1
+ export * from './confirmation';
@@ -40,7 +40,8 @@ export class DatePicker<D> extends NgbDatePicker<D> {}
40
40
  exportAs: '<%= name %>DatepickerTrigger',
41
41
  providers: [registerDatePicker(DatePicker), aliasDatePickerTrigger(DatepickerTrigger)],
42
42
  host: {
43
- class: 'cursor-pointer hover:bg-muted outline-none w-full bg-transparent',
43
+ class:
44
+ 'cursor-pointer hover:bg-muted outline-none w-full bg-transparent placeholder:text-gray-400',
44
45
  },
45
46
  })
46
47
  export class DatepickerTrigger<D> extends NgbDatepickerTrigger<D> {}
@@ -51,19 +51,30 @@ export class AddTaskComponent {
51
51
  }
52
52
  }
53
53
 
54
- const ref = dialog.open(AddTaskComponent, {
55
- backdrop: true,
56
- hideOverlay: false,
57
- data: {},
58
- });
54
+ @Component({
55
+ selector: 'app-root',
56
+ templateUrl: './app.component.html',
57
+ })
58
+ export class AppComponent {
59
+ readonly dialog = dialogPortal();
60
+
61
+ open() {
62
+ const ref = dialog.open(AddTaskComponent, {
63
+ backdrop: true,
64
+ hideOverlay: false,
65
+ data: {},
66
+ });
59
67
 
60
- ref.afterClosed.subscribe(data => {
61
- console.log(data);
62
- });
68
+ ref.afterClosed.subscribe(data => {
69
+ console.log(data);
70
+ });
63
71
 
64
- dialog.open(dialogContent(), {
65
- backdrop: true,
66
- hideOverlay: false,
67
- data: {},
68
- });
72
+ // or with template
73
+ dialog.open(dialogContent(), {
74
+ backdrop: true,
75
+ hideOverlay: false,
76
+ data: {},
77
+ });
78
+ }
79
+ }
69
80
  ```
@@ -64,6 +64,8 @@ import { createHostAnimation, fadeAnimation } from '@ngbase/adk/utils';
64
64
  `,
65
65
  host: {
66
66
  class: 'fixed block top-0 bottom-0 left-0 right-0 overflow-auto pointer-events-none z-p',
67
+ '[@parentAnimation]': '',
68
+ '(@parentAnimation.done)': 'animationDone()',
67
69
  },
68
70
  animations: [
69
71
  createHostAnimation(['@viewAnimation', '@fadeAnimation']),
@@ -49,7 +49,7 @@ export class FormField {
49
49
  selector: '[<%= name %>Input]',
50
50
  hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],
51
51
  host: {
52
- class: 'outline-none w-full bg-transparent',
52
+ class: 'outline-none w-full bg-transparent placeholder:text-gray-400',
53
53
  '[class.border-red-500]': 'formField?.hasErrors()',
54
54
  },
55
55
  })
@@ -5,12 +5,13 @@ import { IconType, NgIconComponent } from '@ng-icons/core';
5
5
  selector: '<%= name %>-icon',
6
6
  imports: [NgIconComponent],
7
7
  changeDetection: ChangeDetectionStrategy.OnPush,
8
- template: `<ng-icon [name]="name()" [size]="size()"></ng-icon>`,
8
+ template: `<ng-icon [name]="name()" [svg]="svg()" [size]="size()"></ng-icon>`,
9
9
  host: {
10
10
  class: 'inline-flex items-center justify-center',
11
11
  },
12
12
  })
13
13
  export class Icon {
14
- readonly name = input.required<IconType>();
14
+ readonly name = input<IconType>();
15
15
  readonly size = input<string>('1rem');
16
+ readonly svg = input<string>();
16
17
  }
@@ -37,7 +37,7 @@ export class SelectOption<T> {}
37
37
  <button
38
38
  ngbSelectValue
39
39
  [class.opacity-50]="disabled()"
40
- class="flex min-h-5 w-full items-center gap-1 text-left whitespace-nowrap outline-none"
40
+ class="flex min-h-5 w-full cursor-pointer items-center gap-1 text-left whitespace-nowrap outline-none"
41
41
  >
42
42
  <!-- Prefix template -->
43
43
  <ng-content select=".select-prefix" />
@@ -1,4 +1,4 @@
1
- import { Component, input } from '@angular/core';
1
+ import { Component, input, numberAttribute } from '@angular/core';
2
2
 
3
3
  @Component({
4
4
  selector: '<%= name %>-spinner',
@@ -45,7 +45,7 @@ import { Component, input } from '@angular/core';
45
45
  })
46
46
  export class Spinner {
47
47
  readonly mode = input<'light' | 'dark' | ''>('light');
48
- readonly diameter = input<number>(35);
49
- readonly strokeWidth = input<any>(3);
48
+ readonly diameter = input(35, { transform: numberAttribute });
49
+ readonly strokeWidth = input(3, { transform: numberAttribute });
50
50
  readonly root = input<boolean>(false);
51
51
  }