@tociva/tailng-ui 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs +497 -16
- package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-data-table-structure.mjs +802 -17
- package/fesm2022/tociva-tailng-ui-data-table-structure.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-form-controls.mjs +3096 -17
- package/fesm2022/tociva-tailng-ui-form-controls.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-layout.mjs +438 -17
- package/fesm2022/tociva-tailng-ui-layout.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-navigation.mjs +780 -17
- package/fesm2022/tociva-tailng-ui-navigation.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-popups-overlays.mjs +1115 -17
- package/fesm2022/tociva-tailng-ui-popups-overlays.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-utilities.mjs +129 -16
- package/fesm2022/tociva-tailng-ui-utilities.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui.mjs +15 -17
- package/fesm2022/tociva-tailng-ui.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tociva-tailng-ui-form-controls.mjs","sources":["../../../../libs/ui/form-controls/src/public-api.ts","../../../../libs/ui/form-controls/src/tociva-tailng-ui-form-controls.ts"],"sourcesContent":["export * from './lib';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,YAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,OAAA,CAAA;;ACAA;;AAEG"}
|
|
1
|
+
{"version":3,"file":"tociva-tailng-ui-form-controls.mjs","sources":["../../../../libs/ui/form-controls/src/lib/autocomplete/autocomplete.component.ts","../../../../libs/ui/form-controls/src/lib/autocomplete/autocomplete.component.html","../../../../libs/ui/form-controls/src/lib/button-toggle/button-toggle.component.ts","../../../../libs/ui/form-controls/src/lib/button-toggle/button-toggle.component.html","../../../../libs/ui/form-controls/src/lib/checkbox/checkbox.component.ts","../../../../libs/ui/form-controls/src/lib/checkbox/checkbox.component.html","../../../../libs/ui/form-controls/src/lib/chips/chips.component.ts","../../../../libs/ui/form-controls/src/lib/chips/chips.component.html","../../../../libs/ui/form-controls/src/lib/datepicker/adapters/native-date.adapter.ts","../../../../libs/ui/form-controls/src/lib/datepicker/adapters/tng-date-adapter.ts","../../../../libs/ui/form-controls/src/lib/datepicker/utils/datepicker-input.util.ts","../../../../libs/ui/form-controls/src/lib/datepicker/datepicker.component.ts","../../../../libs/ui/form-controls/src/lib/datepicker/datepicker.component.html","../../../../libs/ui/form-controls/src/lib/file-upload/file-dropzone.directive.ts","../../../../libs/ui/form-controls/src/lib/file-upload/file-upload.component.ts","../../../../libs/ui/form-controls/src/lib/file-upload/file-upload.component.html","../../../../libs/ui/form-controls/src/lib/form-field/form-field.component.ts","../../../../libs/ui/form-controls/src/lib/form-field/form-field.component.html","../../../../libs/ui/form-controls/src/lib/number-input/number-input.component.ts","../../../../libs/ui/form-controls/src/lib/number-input/number-input.component.html","../../../../libs/ui/form-controls/src/lib/radio-button/radio-button.component.ts","../../../../libs/ui/form-controls/src/lib/radio-button/radio-button.component.html","../../../../libs/ui/form-controls/src/lib/select/select.component.ts","../../../../libs/ui/form-controls/src/lib/select/select.component.html","../../../../libs/ui/form-controls/src/lib/slider/slider.component.ts","../../../../libs/ui/form-controls/src/lib/slider/slider.component.html","../../../../libs/ui/form-controls/src/lib/slide-toggle/slide-toggle.component.ts","../../../../libs/ui/form-controls/src/lib/slide-toggle/slide-toggle.component.html","../../../../libs/ui/form-controls/src/lib/textarea/textarea.component.ts","../../../../libs/ui/form-controls/src/lib/textarea/textarea.component.html","../../../../libs/ui/form-controls/src/lib/text-input/text-input.component.ts","../../../../libs/ui/form-controls/src/lib/text-input/text-input.component.html","../../../../libs/ui/form-controls/src/lib/timepicker/timepicker.component.ts","../../../../libs/ui/form-controls/src/lib/timepicker/timepicker.component.html","../../../../libs/ui/form-controls/src/tociva-tailng-ui-form-controls.ts"],"sourcesContent":["// autocomplete.component.ts\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ContentChild,\n ElementRef,\n TemplateRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { OptionTplContext } from '@tociva/tailng-cdk/util';\n\nimport {\n TngConnectedOverlay,\n TngOptionList,\n TngOverlayPanel,\n TngOverlayRef,\n type TngOverlayCloseReason,\n} from '@tociva/tailng-ui/popups-overlays';\n\nexport type AutocompleteCloseReason = TngOverlayCloseReason;\n\n@Component({\n selector: 'tng-autocomplete',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TngConnectedOverlay,\n TngOverlayPanel,\n TngOptionList,\n TngOverlayRef,\n ],\n templateUrl: './autocomplete.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngAutocomplete),\n multi: true,\n },\n ],\n})\nexport class TngAutocomplete<T> implements ControlValueAccessor {\n /* =====================\n * Projected templates\n * ===================== */\n\n // Dropdown option template (list rows)\n @ContentChild('optionTpl', { read: TemplateRef })\n optionTpl?: TemplateRef<OptionTplContext<T>>;\n\n // Selected value template (shown inside input area when not typing)\n @ContentChild('inputTpl', { read: TemplateRef })\n inputTpl?: TemplateRef<{ $implicit: T }>;\n\n @ViewChild('inputEl', { static: true })\n inputEl!: ElementRef<HTMLInputElement>;\n\n // We call optionList.onKeydown(ev) from the INPUT keydown handler\n @ViewChild(TngOptionList)\n optionList?: TngOptionList<T>;\n\n \n /* =====================\n * Inputs / Outputs\n * ===================== */\n readonly inputKlass = input<string>('');\n readonly options = input<T[]>([]);\n readonly placeholder = input<string>('Start typing…');\n\n /** External disabled input (read-only InputSignal) */\n readonly disabled = input<boolean>(false);\n\n /** String representation (used for actual input.value + fallback) */\n readonly displayWith = input<(item: T) => string>((v) => String(v));\n\n /** Raw text for filtering / API search (not the form value) */\n readonly search = output<string>();\n\n /** Optional: non-form usage hook */\n readonly selected = output<T>();\n\n /** Emits whenever overlay closes (selection/escape/outside-click/blur/programmatic) */\n readonly closed = output<AutocompleteCloseReason>();\n\n /* =====================\n * Internal State\n * ===================== */\n readonly inputValue = signal('');\n readonly isOpen = signal(false);\n readonly focusedIndex = signal(-1);\n\n /** eslint-safe + template-safe internal disabled state */\n protected readonly isDisabled = signal(false);\n\n /** Selected item (for inputTpl rendering) */\n readonly selectedValue = signal<T | null>(null);\n\n /**\n * Whether to show rich selected template over the input.\n * Show only when:\n * - inputTpl exists\n * - we have a selected value\n * - overlay is closed (so typing/search UX stays normal)\n */\n readonly showSelectedTpl = computed(\n () => !!this.inputTpl && this.selectedValue() != null && !this.isOpen()\n );\n\n readonly inputKlassFinal = computed(() =>\n ['relative z-0 w-full border rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary bg-bg text-fg', this.inputKlass()].join(' ')\n ); \n\n /** Form value (selected item) */\n private value: T | null = null;\n\n /* =====================\n * ControlValueAccessor\n * ===================== */\n private onChange: (value: T | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n // Sync external [disabled] -> internal state\n effect(() => {\n this.isDisabled.set(this.disabled());\n if (this.isDisabled()) this.close('programmatic');\n });\n }\n\n /* =====================\n * ControlValueAccessor API\n * ===================== */\n writeValue(value: T | null): void {\n this.value = value;\n this.selectedValue.set(value);\n\n if (value == null) {\n this.inputValue.set('');\n this.focusedIndex.set(-1);\n return;\n }\n\n // keep text value for fallback + accessibility\n this.inputValue.set(this.displayWith()(value));\n this.focusedIndex.set(-1);\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n if (isDisabled) this.close('programmatic');\n }\n\n /* =====================\n * Display helper\n * ===================== */\n display(item: T): string {\n return this.displayWith()(item);\n }\n\n /* =====================\n * State Transitions\n * ===================== */\n open(_reason: AutocompleteCloseReason) {\n if (this.isDisabled()) return;\n\n this.isOpen.set(true);\n\n if (this.options().length) {\n const current = this.focusedIndex();\n if (current < 0) this.focusedIndex.set(0);\n } else {\n this.focusedIndex.set(-1);\n }\n }\n\n close(reason: AutocompleteCloseReason) {\n if (!this.isOpen()) return;\n\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n this.closed.emit(reason);\n }\n\n onOverlayClosed(reason: AutocompleteCloseReason) {\n this.close(reason);\n }\n\n onOverlayOpenChange(open: boolean) {\n if (this.isDisabled()) {\n this.isOpen.set(false);\n return;\n }\n\n if (open) this.open('programmatic');\n else this.close('programmatic');\n }\n\n /* =====================\n * UI Events\n * ===================== */\n onInput(ev: Event) {\n if (this.isDisabled()) return;\n\n const text = (ev.target as HTMLInputElement).value ?? '';\n this.inputValue.set(text);\n\n // typing clears selection (so inputTpl disappears)\n this.value = null;\n this.selectedValue.set(null);\n this.onChange(null);\n\n this.search.emit(text);\n this.open('programmatic');\n }\n \n onBlur() {\n this.onTouched();\n \n queueMicrotask(() => {\n if (document.activeElement === this.inputEl.nativeElement) return;\n this.close('blur');\n });\n }\n\n /**\n * Key handling updated to match OptionList architecture:\n * - Escape is handled here (OptionList doesn't close overlays)\n * - Navigation/Enter are delegated to optionList.onKeydown(ev)\n * - Printable keys are NOT delegated (input typing controls filtering)\n */\n onKeydown(ev: KeyboardEvent) {\n if (this.isDisabled()) return;\n \n // Close on escape\n if (ev.key === 'Escape' && this.isOpen()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close('escape');\n return;\n }\n \n // If closed: ArrowDown/Up should open + delegate once overlay is painted\n if (!this.isOpen() && (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')) {\n ev.preventDefault();\n ev.stopPropagation();\n \n this.open('programmatic');\n \n // wait for overlay + optionList to exist\n requestAnimationFrame(() => this.optionList?.onKeydown(ev));\n return;\n }\n \n if (!this.isOpen()) return;\n \n // Delegate only list-navigation keys\n if (!this.isListNavigationKey(ev)) return;\n \n ev.stopPropagation(); // helps if parent/global handlers exist\n this.optionList?.onKeydown(ev);\n }\n\n private isListNavigationKey(ev: KeyboardEvent): boolean {\n // Match the keys handled by OptionList (excluding typeahead)\n switch (ev.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'PageDown':\n case 'PageUp':\n case 'Enter':\n return true;\n default:\n return false;\n }\n }\n\n /* =====================\n * OptionList wiring\n * ===================== */\n onFocusedIndexChange(i: number) {\n this.focusedIndex.set(i);\n }\n\n requestSelectActive() {\n const i = this.focusedIndex();\n const item = this.options()[i];\n if (item !== undefined) this.select(item);\n }\n\n /* =====================\n * Selection\n * ===================== */\n select(item: T) {\n if (this.isDisabled()) return;\n\n this.value = item;\n this.selectedValue.set(item);\n\n // keep input value as text fallback\n this.inputValue.set(this.displayWith()(item));\n\n this.onChange(item);\n this.onTouched();\n\n this.selected.emit(item);\n\n this.close('selection');\n\n queueMicrotask(() => {\n this.inputEl.nativeElement.focus();\n });\n }\n}\n","<!-- autocomplete.component.html -->\n<div class=\"relative\">\n <!-- Selected-value rich display overlay (inside input) -->\n @if (showSelectedTpl()) {\n <div\n class=\"pointer-events-none absolute inset-y-0 left-0 right-0 z-10 flex items-center px-3\"\n aria-hidden=\"true\"\n >\n <ng-container\n [ngTemplateOutlet]=\"inputTpl!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedValue()! }\"\n />\n </div>\n }\n\n <div [class.opacity-60]=\"isDisabled()\" [class.pointer-events-none]=\"isDisabled()\">\n <input\n #inputEl\n type=\"text\"\n [class]=\"inputKlassFinal()\"\n [class.text-transparent]=\"showSelectedTpl()\"\n [class.caret-slate-900]=\"showSelectedTpl()\"\n [class.bg-transparent]=\"showSelectedTpl()\"\n [value]=\"inputValue()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (focus)=\"overlayRef.requestOpen()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n />\n </div>\n\n <tng-overlay-ref\n #overlayRef=\"tngOverlayRef\"\n [open]=\"isOpen()\"\n (openChange)=\"onOverlayOpenChange($event)\"\n (closed)=\"onOverlayClosed($event)\"\n >\n <tng-connected-overlay\n [open]=\"overlayRef.isOpen()\"\n [anchor]=\"inputEl\"\n placement=\"bottom-start\"\n width=\"anchor\"\n (closed)=\"overlayRef.close($event)\"\n >\n <tng-overlay-panel>\n <tng-option-list\n [items]=\"options()\"\n [activeIndex]=\"focusedIndex()\"\n [displayWith]=\"displayWith()\"\n [optionTemplate]=\"optionTpl ?? null\"\n [loop]=\"false\"\n [typeahead]=\"false\"\n (activeIndexChange)=\"onFocusedIndexChange($event)\"\n (requestSelectActive)=\"requestSelectActive()\"\n (optionMouseDown)=\"select($event.item)\"\n (optionHover)=\"focusedIndex.set($event)\"\n />\n </tng-overlay-panel>\n </tng-connected-overlay>\n </tng-overlay-ref>\n</div>\n","import {\n Component,\n computed,\n effect,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type TngButtonToggleValue = string | number;\n\nexport type TngButtonToggleOption<\n T extends TngButtonToggleValue = TngButtonToggleValue,\n> = {\n value: T;\n label: string;\n disabled?: boolean;\n};\n\n/**\n * Value type:\n * - single mode: T | null\n * - multiple mode: T[]\n */\nexport type TngButtonToggleSelection<T extends TngButtonToggleValue> =\n | T\n | null\n | T[];\n\n@Component({\n selector: 'tng-button-toggle',\n standalone: true,\n templateUrl: './button-toggle.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngButtonToggle),\n multi: true,\n },\n ],\n})\nexport class TngButtonToggle<T extends TngButtonToggleValue>\n implements ControlValueAccessor\n{\n /* =====================\n * Inputs / Outputs\n * ===================== */\n\n /** Options for the segmented control */\n options = input<TngButtonToggleOption<T>[]>([]);\n\n /**\n * Direct mode value (optional).\n * In forms mode, CVA is source of truth.\n */\n value = input<TngButtonToggleSelection<T>>(null);\n readonly valueChange = output<TngButtonToggleSelection<T>>();\n\n /** External disabled input (read-only) */\n disabled = input(false);\n\n /** Material-like: single (default) or multiple selection */\n multiple = input(false);\n\n /**\n * Whether selection can be cleared:\n * - single: clicking active option -> null\n * - multiple: allows empty array\n */\n allowDeselect = input(false);\n\n /* =====================\n * Theming / class hooks (section-wise)\n * ===================== */\n\n /** Root wrapper */\n rootKlass = input<string>('block w-full');\n\n /** Group container */\n groupKlass = input<string>('');\n\n /** Button base */\n buttonKlass = input<string>('');\n\n /** Active option button */\n activeButtonKlass = input<string>('');\n\n /** Inactive option button */\n inactiveButtonKlass = input<string>('');\n\n /** Disabled option button */\n disabledButtonKlass = input<string>('');\n\n /* =====================\n * Internal state\n * ===================== */\n\n protected isDisabled = signal(false);\n\n /** Authoritative selected value inside component */\n private selectedValue = signal<TngButtonToggleSelection<T>>(null);\n\n /** When true, CVA owns the value (forms mode) */\n private usingCva = false;\n\n /* =====================\n * ControlValueAccessor\n * ===================== */\n private onChange: (value: TngButtonToggleSelection<T>) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n // sync external disabled -> internal\n effect(() => {\n this.isDisabled.set(this.disabled());\n });\n\n // sync external [value] -> internal only when NOT using CVA\n effect(() => {\n const v = this.value();\n if (this.usingCva) return;\n this.selectedValue.set(this.normalizeIncoming(v));\n });\n\n // ensure internal value shape matches mode when `multiple` changes\n effect(() => {\n const isMulti = this.multiple();\n const cur = this.selectedValue();\n const normalized = isMulti ? this.toArray(cur) : this.toSingle(cur);\n if (!this.shallowEqual(cur, normalized)) {\n this.selectedValue.set(normalized);\n // NOTE: we DO NOT emit onChange here; mode switch is a \"configuration change\"\n }\n });\n }\n\n writeValue(value: TngButtonToggleSelection<T>): void {\n this.usingCva = true;\n this.selectedValue.set(this.normalizeIncoming(value));\n }\n\n registerOnChange(fn: (value: TngButtonToggleSelection<T>) => void): void {\n this.usingCva = true;\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n /* =====================\n * Helpers\n * ===================== */\n\n currentValue = computed(() => this.selectedValue());\n\n isOptionDisabled(opt: TngButtonToggleOption<T>): boolean {\n return this.isDisabled() || !!opt.disabled;\n }\n\n isSelected(opt: TngButtonToggleOption<T>): boolean {\n const v = this.selectedValue();\n if (Array.isArray(v)) return v.includes(opt.value);\n return v === opt.value;\n }\n\n select(opt: TngButtonToggleOption<T>) {\n if (this.isOptionDisabled(opt)) return;\n\n const cur = this.selectedValue();\n let next: TngButtonToggleSelection<T>;\n\n if (this.multiple()) {\n const currArr = this.toArray(cur);\n const toggled = this.toggleInArray(currArr, opt.value);\n\n // if deselect not allowed, prevent empty\n if (!this.allowDeselect() && toggled.length === 0) {\n next = currArr;\n } else {\n next = toggled;\n }\n } else {\n const currSingle = this.toSingle(cur);\n\n next =\n this.allowDeselect() && currSingle === opt.value\n ? null\n : opt.value;\n }\n\n this.selectedValue.set(next);\n\n // CVA\n this.onChange(next);\n this.onTouched();\n\n // direct mode output\n this.valueChange.emit(next);\n }\n\n /* =====================\n * Keyboard support\n * ===================== */\n\n onKeydown(ev: KeyboardEvent) {\n if (this.isDisabled()) return;\n\n const opts = this.options();\n if (!opts.length) return;\n\n const enabledIndexes = opts\n .map((o, i) => ({ o, i }))\n .filter(({ o }) => !this.isOptionDisabled(o))\n .map(({ i }) => i);\n\n if (!enabledIndexes.length) return;\n\n // for keyboard navigation we keep a \"current index\" concept:\n // - single: selected option index\n // - multi: first selected index, otherwise first enabled\n const cur = this.selectedValue();\n const currentIndex = (() => {\n if (Array.isArray(cur)) {\n const first = opts.findIndex((o) => cur.includes(o.value));\n return first;\n }\n return opts.findIndex((o) => o.value === cur);\n })();\n\n const move = (dir: -1 | 1) => {\n ev.preventDefault();\n\n const start = currentIndex >= 0 ? currentIndex : enabledIndexes[0];\n\n let idx = start;\n for (let step = 0; step < opts.length; step++) {\n idx = (idx + dir + opts.length) % opts.length;\n if (enabledIndexes.includes(idx)) {\n this.select(opts[idx]);\n break;\n }\n }\n };\n\n switch (ev.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n move(1);\n break;\n\n case 'ArrowLeft':\n case 'ArrowUp':\n move(-1);\n break;\n\n case 'Enter':\n case ' ':\n ev.preventDefault();\n if (currentIndex >= 0) this.select(opts[currentIndex]);\n break;\n\n default:\n break;\n }\n }\n\n /* =====================\n * Classes\n * ===================== */\n\n /** Group container classes */\n readonly groupClasses = computed(() =>\n (\n 'flex w-full overflow-hidden rounded-md border border-border ' +\n 'bg-bg ' +\n (this.isDisabled() ? 'opacity-60 pointer-events-none ' : '') +\n this.groupKlass()\n ).trim()\n );\n\n /** Button base classes */\n private readonly baseBtn = computed(() =>\n (\n 'flex-1 px-3 py-2 text-sm font-medium text-center ' +\n 'transition-colors select-none ' +\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary ' +\n 'focus-visible:ring-offset-2 focus-visible:ring-offset-background ' +\n 'border-r border-border last:border-r-0 ' +\n this.buttonKlass()\n ).trim()\n );\n\n buttonClasses(opt: TngButtonToggleOption<T>): string {\n const active = this.isSelected(opt);\n const disabled = this.isOptionDisabled(opt);\n\n const state =\n disabled\n ? 'text-disable bg-bg ' + this.disabledButtonKlass()\n : active\n ? 'bg-primary text-on-primary ' + this.activeButtonKlass()\n : 'bg-on-primary text-fg hover:bg-alternate-background ' +\n this.inactiveButtonKlass();\n\n return `${this.baseBtn()} ${state}`.trim();\n }\n\n /* =====================\n * Normalization utilities\n * ===================== */\n\n private normalizeIncoming(\n value: TngButtonToggleSelection<T>,\n ): TngButtonToggleSelection<T> {\n return this.multiple() ? this.toArray(value) : this.toSingle(value);\n }\n\n private toArray(value: TngButtonToggleSelection<T>): T[] {\n if (Array.isArray(value)) return value;\n if (value === null || value === undefined) return [];\n return [value];\n }\n\n private toSingle(value: TngButtonToggleSelection<T>): T | null {\n if (Array.isArray(value)) return value[0] ?? null;\n return value ?? null;\n }\n\n private toggleInArray(arr: T[], value: T): T[] {\n return arr.includes(value) ? arr.filter((x) => x !== value) : [...arr, value];\n }\n\n private shallowEqual(\n a: TngButtonToggleSelection<T>,\n b: TngButtonToggleSelection<T>,\n ): boolean {\n if (a === b) return true;\n const aArr = Array.isArray(a);\n const bArr = Array.isArray(b);\n if (aArr !== bArr) return false;\n if (!aArr || !bArr) return false;\n\n // array shallow equality (order-sensitive)\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n}\n","<div [class]=\"rootKlass()\">\n <div\n role=\"group\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n [class]=\"groupClasses()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (opt of options(); let i = $index; track i) {\n <button\n type=\"button\"\n role=\"button\"\n [attr.aria-pressed]=\"isSelected(opt)\"\n [attr.aria-disabled]=\"isOptionDisabled(opt) ? true : null\"\n [disabled]=\"isOptionDisabled(opt)\"\n [class]=\"buttonClasses(opt)\"\n (click)=\"select(opt)\"\n >\n {{ opt.label }}\n </button>\n }\n </div>\n</div>\n","import {\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'tng-checkbox',\n standalone: true,\n templateUrl: './checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngCheckbox),\n multi: true,\n },\n ],\n})\nexport class TngCheckbox implements ControlValueAccessor {\n readonly id = input<string>('');\n readonly name = input<string>('');\n\n readonly label = input<string>('');\n readonly disabled = input(false);\n readonly required = input(false);\n\n /* =====================\n * Theming / class hooks (section-wise)\n * ===================== */\n /** Root <label> */\n readonly rootKlass = input<string>(\n 'inline-flex items-center gap-2 cursor-pointer select-none'\n );\n\n /** <input type=\"checkbox\"> */\n readonly inputKlass = input<string>('');\n\n /** Label <span> */\n readonly labelKlass = input<string>('text-sm text-fg');\n\n private readonly _value = signal(false);\n readonly value = computed(() => this._value());\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n writeValue(value: boolean | null): void {\n this._value.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /** Final classes */\n readonly classes = computed(() =>\n (\n // size + shape\n `h-4 w-4 rounded ` +\n // theme tokens\n `border border-border bg-bg ` +\n `accent-primary ` +\n // focus ring\n `focus-visible:outline-none ` +\n `focus-visible:ring-2 focus-visible:ring-primary ` +\n `focus-visible:ring-offset-2 focus-visible:ring-offset-background ` +\n // disabled\n `disabled:opacity-50 disabled:pointer-events-none ` +\n // user override\n this.inputKlass()\n ).trim()\n );\n\n onToggle(event: Event): void {\n if (this.isDisabled()) return;\n\n const checked = (event.target as HTMLInputElement).checked;\n this._value.set(checked);\n this.onChange(checked);\n this.onTouched();\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<label [class]=\"rootKlass()\">\n <input\n type=\"checkbox\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [checked]=\"value()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [class]=\"classes()\"\n (change)=\"onToggle($event)\"\n (blur)=\"onBlur()\"\n />\n\n @if (label()) {\n <span [class]=\"labelKlass()\">\n {{ label() }}\n </span>\n }\n</label>\n","// chips.component.ts\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ContentChild,\n effect,\n ElementRef,\n forwardRef,\n input,\n output,\n signal,\n TemplateRef,\n ViewChild,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n TngConnectedOverlay,\n TngOptionList,\n TngOverlayPanel,\n TngOverlayRef,\n type TngOverlayCloseReason,\n} from '@tociva/tailng-ui/popups-overlays';\n\nimport { OptionTplContext } from '@tociva/tailng-cdk/util';\n\nexport type ChipsCloseReason = TngOverlayCloseReason;\nexport type ChipTplContext<T> = { $implicit: T; index: number };\n\n@Component({\n selector: 'tng-chips',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TngConnectedOverlay,\n TngOverlayPanel,\n TngOptionList,\n TngOverlayRef,\n ],\n templateUrl: './chips.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngChips),\n multi: true,\n },\n ],\n})\nexport class TngChips<T> implements ControlValueAccessor {\n /* =====================\n * Projected templates\n * ===================== */\n @ContentChild('chipTpl', { read: TemplateRef })\n chipTpl?: TemplateRef<ChipTplContext<T>>;\n\n @ContentChild('optionTpl', { read: TemplateRef })\n optionTpl?: TemplateRef<OptionTplContext<T>>;\n\n @ViewChild('inputEl', { static: true })\n inputEl!: ElementRef<HTMLInputElement>;\n\n // Delegate list keys to OptionList\n @ViewChild(TngOptionList)\n optionList?: TngOptionList<T>;\n\n /* =====================\n * Inputs / Outputs\n * ===================== */\n readonly value = input<T[]>([]);\n readonly options = input<T[]>([]);\n readonly placeholder = input<string>('Add…');\n readonly disabled = input<boolean>(false);\n\n readonly displayWith = input<(item: T) => string>((v) => String(v));\n\n readonly allowFreeText = input<boolean>(true);\n readonly parse = input<(raw: string) => T>((raw) => raw as unknown as T);\n readonly normalize = input<(raw: string) => string>((raw) => raw.trim());\n readonly preventDuplicates = input<boolean>(true);\n\n readonly search = output<string>();\n readonly valueChange = output<T[]>();\n readonly chipAdded = output<T>();\n readonly chipRemoved = output<T>();\n readonly closed = output<ChipsCloseReason>();\n\n /* =====================\n * Theming\n * ===================== */\n readonly rootKlass = input<string>('relative');\n\n readonly containerKlass = input<string>(\n [\n 'w-full min-h-[42px] px-2 py-1 text-sm',\n 'flex flex-wrap items-center gap-2',\n 'border border-border rounded-md',\n 'bg-bg text-fg',\n 'focus-within:ring-2 focus-within:ring-primary',\n ].join(' ')\n );\n\n readonly chipKlass = input<string>(\n [\n 'inline-flex items-center gap-1 px-2 py-1 rounded-md',\n 'bg-alternate-background border border-border',\n 'text-sm',\n ].join(' ')\n );\n\n readonly chipLabelKlass = input<string>('truncate max-w-[200px]');\n readonly removeButtonKlass = input<string>('ml-1 text-disable hover:text-fg');\n readonly inputKlass = input<string>('flex-1 min-w-[140px] px-2 py-2 outline-none bg-transparent');\n\n /* =====================\n * Internal State\n * ===================== */\n readonly inputValue = signal('');\n readonly isOpen = signal(false);\n readonly focusedIndex = signal(-1);\n\n protected readonly isDisabled = signal(false);\n\n private readonly chipsValue = signal<T[]>([]);\n private usingCva = false;\n\n private onChange: (value: T[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n this.isDisabled.set(this.disabled());\n if (this.isDisabled()) this.close('programmatic');\n });\n\n effect(() => {\n const v = this.value();\n if (this.usingCva) return;\n this.chipsValue.set(v);\n });\n }\n\n /* =====================\n * ControlValueAccessor\n * ===================== */\n writeValue(value: T[] | null): void {\n this.usingCva = true;\n this.chipsValue.set(value ?? []);\n }\n\n registerOnChange(fn: (value: T[]) => void): void {\n this.usingCva = true;\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n if (isDisabled) this.close('programmatic');\n }\n\n /* =====================\n * Template getters\n * ===================== */\n chips(): T[] {\n return this.chipsValue();\n }\n\n readonly placeholderText = computed(() => (this.chipsValue().length ? '' : this.placeholder()));\n\n readonly containerClasses = computed(() =>\n (this.containerKlass() + (this.isDisabled() ? ' opacity-60 pointer-events-none' : '')).trim()\n );\n\n /* =====================\n * Helpers\n * ===================== */\n display(item: T): string {\n return this.displayWith()(item);\n }\n\n private existsAlready(next: T): boolean {\n if (!this.preventDuplicates()) return false;\n const nextKey = this.display(next).toLowerCase();\n return this.chipsValue().some((v) => this.display(v).toLowerCase() === nextKey);\n }\n\n private emitValue(next: T[]) {\n this.chipsValue.set(next);\n this.onChange(next);\n this.valueChange.emit(next);\n }\n\n /* =====================\n * Overlay open/close\n * ===================== */\n open(_reason: ChipsCloseReason) {\n if (this.isDisabled()) return;\n\n this.isOpen.set(true);\n\n if (this.options().length) {\n const current = this.focusedIndex();\n if (current < 0) this.focusedIndex.set(0);\n } else {\n this.focusedIndex.set(-1);\n }\n }\n\n close(reason: ChipsCloseReason) {\n if (!this.isOpen()) return;\n\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n this.closed.emit(reason);\n }\n\n onOverlayOpenChange(open: boolean) {\n if (this.isDisabled()) {\n this.isOpen.set(false);\n return;\n }\n if (open) this.open('programmatic');\n else this.close('programmatic');\n }\n\n onOverlayClosed(reason: ChipsCloseReason) {\n this.close(reason);\n }\n\n /* =====================\n * UI events\n * ===================== */\n onInput(ev: Event) {\n if (this.isDisabled()) return;\n\n const raw = (ev.target as HTMLInputElement).value ?? '';\n this.inputValue.set(raw);\n this.search.emit(raw);\n this.open('programmatic');\n }\n\n onBlur() {\n this.onTouched();\n queueMicrotask(() => {\n if (document.activeElement === this.inputEl.nativeElement) return;\n this.close('blur');\n });\n }\n\n onKeydown(ev: KeyboardEvent) {\n if (this.isDisabled()) return;\n\n // Escape closes\n if (ev.key === 'Escape' && this.isOpen()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close('escape');\n return;\n }\n\n // Backspace removes last chip when input empty\n if (ev.key === 'Backspace' && !this.inputValue()) {\n const current = this.chipsValue();\n if (current.length) {\n ev.preventDefault();\n ev.stopPropagation();\n this.removeAt(current.length - 1);\n }\n return;\n }\n\n // Enter\n if (ev.key === 'Enter') {\n // IMPORTANT: if open, DO NOT preventDefault here — OptionList must see a non-prevented event\n if (this.isOpen()) {\n ev.stopPropagation();\n this.optionList?.onKeydown(ev); // OptionList will preventDefault + emit requestSelectActive\n return;\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n this.addFromInput();\n return;\n }\n\n // Open on arrows when closed (prevent original cursor move),\n // then delegate a *fresh* event to OptionList after mount.\n if (!this.isOpen() && (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.open('programmatic');\n\n requestAnimationFrame(() => {\n const replay = this.cloneKeyboardEvent(ev);\n this.optionList?.onKeydown(replay);\n });\n\n return;\n }\n\n if (!this.isOpen()) return;\n\n // Delegate list-navigation keys (no preventDefault here; OptionList does it)\n if (!this.isListNavigationKey(ev)) return;\n\n ev.stopPropagation();\n this.optionList?.onKeydown(ev);\n }\n\n private isListNavigationKey(ev: KeyboardEvent): boolean {\n switch (ev.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'PageDown':\n case 'PageUp':\n return true;\n default:\n return false;\n }\n }\n\n // Used to replay arrow keys after opening (original event already defaultPrevented)\n private cloneKeyboardEvent(ev: KeyboardEvent): KeyboardEvent {\n return new KeyboardEvent(ev.type, {\n key: ev.key,\n code: ev.code,\n location: ev.location,\n repeat: ev.repeat,\n ctrlKey: ev.ctrlKey,\n shiftKey: ev.shiftKey,\n altKey: ev.altKey,\n metaKey: ev.metaKey,\n bubbles: true,\n cancelable: true,\n });\n }\n\n /* =====================\n * OptionList wiring\n * ===================== */\n requestSelectActive() {\n const i = this.focusedIndex();\n const item = this.options()[i];\n if (item !== undefined) this.selectOption(item);\n }\n\n /* =====================\n * Chip actions\n * ===================== */\n addFromInput() {\n if (this.isDisabled()) return;\n if (!this.allowFreeText()) return;\n\n const normalized = this.normalize()(this.inputValue());\n if (!normalized) return;\n\n const nextChip = this.parse()(normalized);\n\n if (this.existsAlready(nextChip)) {\n this.inputValue.set('');\n this.close('programmatic');\n return;\n }\n\n const next = [...this.chipsValue(), nextChip];\n this.emitValue(next);\n this.chipAdded.emit(nextChip);\n\n this.inputValue.set('');\n this.close('programmatic');\n\n queueMicrotask(() => this.inputEl.nativeElement.focus());\n }\n\n selectOption(item: T) {\n if (this.isDisabled()) return;\n\n if (this.existsAlready(item)) {\n this.inputValue.set('');\n this.close('selection');\n queueMicrotask(() => this.inputEl.nativeElement.focus());\n return;\n }\n\n const next = [...this.chipsValue(), item];\n this.emitValue(next);\n this.chipAdded.emit(item);\n\n this.inputValue.set('');\n this.close('selection');\n\n queueMicrotask(() => this.inputEl.nativeElement.focus());\n }\n\n removeAt(index: number) {\n if (this.isDisabled()) return;\n\n const current = this.chipsValue();\n if (index < 0 || index >= current.length) return;\n\n const removed = current[index];\n const next = current.filter((_, i) => i !== index);\n\n this.emitValue(next);\n this.chipRemoved.emit(removed);\n }\n\n clearAll() {\n if (this.isDisabled()) return;\n\n const current = this.chipsValue();\n if (!current.length) return;\n\n for (const item of current) this.chipRemoved.emit(item);\n this.emitValue([]);\n }\n}\n","<!-- chips.component.html -->\n<div [class]=\"rootKlass()\">\n <!-- Chips row + input -->\n <div [class]=\"containerClasses()\">\n @for (chip of chips(); let i = $index; track i) {\n <span [class]=\"chipKlass()\">\n @if (chipTpl) {\n <ng-container\n [ngTemplateOutlet]=\"chipTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: chip, index: i }\"\n />\n } @else {\n <span [class]=\"chipLabelKlass()\">{{ display(chip) }}</span>\n }\n\n <button\n type=\"button\"\n [class]=\"removeButtonKlass()\"\n [disabled]=\"isDisabled()\"\n (click)=\"removeAt(i)\"\n aria-label=\"Remove chip\"\n >\n ×\n </button>\n </span>\n }\n\n <input\n #inputEl\n type=\"text\"\n [class]=\"inputKlass()\"\n [value]=\"inputValue()\"\n [placeholder]=\"placeholderText()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (focus)=\"open('programmatic')\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n />\n </div>\n\n <!-- Suggestions overlay -->\n <tng-overlay-ref\n #overlayRef=\"tngOverlayRef\"\n [open]=\"isOpen()\"\n (openChange)=\"onOverlayOpenChange($event)\"\n (closed)=\"onOverlayClosed($event)\"\n >\n <tng-connected-overlay\n [open]=\"overlayRef.isOpen()\"\n [anchor]=\"inputEl\"\n placement=\"bottom-start\"\n width=\"anchor\"\n (closed)=\"overlayRef.close($event)\"\n >\n <tng-overlay-panel>\n <tng-option-list\n [items]=\"options()\"\n [activeIndex]=\"focusedIndex()\"\n [displayWith]=\"displayWith()\"\n [optionTemplate]=\"optionTpl ?? null\"\n [loop]=\"false\"\n [typeahead]=\"false\"\n (activeIndexChange)=\"focusedIndex.set($event)\"\n (requestSelectActive)=\"requestSelectActive()\"\n (optionMouseDown)=\"selectOption($event.item)\"\n (optionHover)=\"focusedIndex.set($event)\"\n />\n </tng-overlay-panel>\n </tng-connected-overlay>\n </tng-overlay-ref>\n</div>\n","import { Injectable } from '@angular/core';\nimport { TngDateAdapter, TngDateInput } from './tng-date-adapter';\n\n@Injectable({ providedIn: 'root' })\nexport class TngNativeDateAdapter implements TngDateAdapter {\n now(): Date {\n return new Date();\n }\n\n from(value: TngDateInput): Date | null {\n const d = new Date(value as any);\n return this.isValid(d) ? d : null;\n }\n\n isValid(date: Date): boolean {\n return date instanceof Date && !Number.isNaN(date.getTime());\n }\n\n startOfDay(date: Date): Date {\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n year(date: Date): number { return date.getFullYear(); }\n month(date: Date): number { return date.getMonth(); }\n date(date: Date): number { return date.getDate(); }\n day(date: Date): number { return date.getDay(); }\n\n daysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n setYear(date: Date, year: number): Date {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n }\n\n setMonth(date: Date, month0: number): Date {\n const d = new Date(date);\n d.setMonth(month0);\n return d;\n }\n\n setDate(date: Date, dayOfMonth: number): Date {\n const d = new Date(date);\n d.setDate(dayOfMonth);\n return d;\n }\n\n addDays(date: Date, days: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n }\n\n addMonths(date: Date, months: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + months);\n return d;\n }\n\n startOfMonth(date: Date): Date {\n return this.startOfDay(new Date(this.year(date), this.month(date), 1));\n }\n\n endOfMonth(date: Date): Date {\n return this.startOfDay(new Date(this.year(date), this.month(date) + 1, 0));\n }\n\n startOfYear(date: Date): Date {\n return this.startOfDay(new Date(this.year(date), 0, 1));\n }\n\n endOfYear(date: Date): Date {\n return this.startOfDay(new Date(this.year(date), 11, 31));\n }\n\n isSameDay(a: Date, b: Date): boolean {\n return this.year(a) === this.year(b) && this.month(a) === this.month(b) && this.date(a) === this.date(b);\n }\n\n isBeforeDay(a: Date, b: Date): boolean {\n return this.startOfDay(a).getTime() < this.startOfDay(b).getTime();\n }\n\n isAfterDay(a: Date, b: Date): boolean {\n return this.startOfDay(a).getTime() > this.startOfDay(b).getTime();\n }\n\n format(date: Date, format: string, _locale?: string): string {\n const dd = String(this.date(date)).padStart(2, '0');\n const mm = String(this.month(date) + 1).padStart(2, '0');\n const yyyy = String(this.year(date));\n\n if (format === 'DD/MM/YYYY') return `${dd}/${mm}/${yyyy}`;\n if (format === 'MM/DD/YYYY') return `${mm}/${dd}/${yyyy}`;\n if (format === 'DD-MM-YYYY') return `${dd}-${mm}-${yyyy}`;\n if (format === 'MM-DD-YYYY') return `${mm}-${dd}-${yyyy}`;\n\n const months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];\n if (format === 'DD MMM YYYY') return `${dd} ${months[this.month(date)]} ${yyyy}`;\n\n return `${dd}/${mm}/${yyyy}`;\n }\n\n parse(text: string, format: string, _locale?: string): Date | null {\n const s = text.trim();\n if (!s) return null;\n\n if (format === 'DD/MM/YYYY') {\n const m = s.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (!m) return null;\n\n const dd = Number(m[1]);\n const mm = Number(m[2]);\n const yyyy = Number(m[3]);\n\n const d = new Date(yyyy, mm - 1, dd);\n if (!this.isValid(d)) return null;\n if (this.month(d) !== mm - 1 || this.date(d) !== dd) return null;\n\n return this.startOfDay(d);\n }\n\n if (format === 'MM/DD/YYYY') {\n const m = s.match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (!m) return null;\n\n const mm = Number(m[1]);\n const dd = Number(m[2]);\n const yyyy = Number(m[3]);\n\n const d = new Date(yyyy, mm - 1, dd);\n if (!this.isValid(d)) return null;\n if (this.month(d) !== mm - 1 || this.date(d) !== dd) return null;\n\n return this.startOfDay(d);\n }\n\n if (format === 'DD-MM-YYYY') {\n const m = s.match(/^(\\d{1,2})-(\\d{1,2})-(\\d{4})$/);\n if (!m) return null;\n\n const dd = Number(m[1]);\n const mm = Number(m[2]);\n const yyyy = Number(m[3]);\n\n const d = new Date(yyyy, mm - 1, dd);\n if (!this.isValid(d)) return null;\n if (this.month(d) !== mm - 1 || this.date(d) !== dd) return null;\n\n return this.startOfDay(d);\n }\n\n if (format === 'MM-DD-YYYY') {\n const m = s.match(/^(\\d{1,2})-(\\d{1,2})-(\\d{4})$/);\n if (!m) return null;\n\n const mm = Number(m[1]);\n const dd = Number(m[2]);\n const yyyy = Number(m[3]);\n\n const d = new Date(yyyy, mm - 1, dd);\n if (!this.isValid(d)) return null;\n if (this.month(d) !== mm - 1 || this.date(d) !== dd) return null;\n\n return this.startOfDay(d);\n }\n\n if (format === 'DD MMM YYYY') {\n const m = s.match(/^(\\d{1,2})\\s+([A-Za-z]{3})\\s+(\\d{4})$/);\n if (!m) return null;\n\n const dd = Number(m[1]);\n const mon = m[2].toLowerCase();\n const yyyy = Number(m[3]);\n\n const map: Record<string, number> = {\n jan: 0, feb: 1, mar: 2, apr: 3, may: 4, jun: 5,\n jul: 6, aug: 7, sep: 8, oct: 9, nov: 10, dec: 11,\n };\n const month0 = map[mon];\n if (month0 == null) return null;\n\n const d = new Date(yyyy, month0, dd);\n if (this.month(d) !== month0 || this.date(d) !== dd) return null;\n\n return this.startOfDay(d);\n }\n\n return null;\n }\n}","import { InjectionToken } from '@angular/core';\n\nexport type TngDateInput = Date | string | number;\n\nexport interface TngDateAdapter {\n now(): Date;\n from(value: TngDateInput): Date | null;\n isValid(date: Date): boolean;\n startOfDay(date: Date): Date;\n\n year(date: Date): number;\n month(date: Date): number; // 0-11\n date(date: Date): number; // 1-31\n day(date: Date): number; // 0-6\n daysInMonth(date: Date): number;\n\n setYear(date: Date, year: number): Date;\n setMonth(date: Date, month0: number): Date;\n setDate(date: Date, dayOfMonth: number): Date;\n\n addDays(date: Date, days: number): Date;\n addMonths(date: Date, months: number): Date;\n\n startOfMonth(date: Date): Date;\n endOfMonth(date: Date): Date;\n startOfYear(date: Date): Date;\n endOfYear(date: Date): Date;\n\n isSameDay(a: Date, b: Date): boolean;\n isBeforeDay(a: Date, b: Date): boolean;\n isAfterDay(a: Date, b: Date): boolean;\n\n format(date: Date, format: string, locale?: string): string;\n parse(text: string, format: string, locale?: string): Date | null;\n}\n\nexport const TNG_DATE_ADAPTER = new InjectionToken<TngDateAdapter>('TNG_DATE_ADAPTER');","import { TngDateAdapter } from \"../adapters\";\n\nexport type ParseResult =\n | { kind: 'empty' }\n | { kind: 'partial' } // user is still typing; do not error hard\n | { kind: 'invalid' } // definitely not a date\n | { kind: 'valid'; date: Date };\n\nconst DATE_TOKENS = ['YYYY', 'YY', 'MMMM', 'MMM', 'MM', 'M', 'DD', 'D'] as const;\ntype DateToken = (typeof DATE_TOKENS)[number];\n\ntype FormatPart = { kind: 'token'; token: DateToken } | { kind: 'lit'; text: string };\n\nfunction tokenizeFormat(fmt: string): FormatPart[] {\n const parts: FormatPart[] = [];\n let i = 0;\n\n while (i < fmt.length) {\n let matched: DateToken | null = null;\n\n for (const t of DATE_TOKENS) {\n if (fmt.startsWith(t, i)) {\n matched = t;\n break;\n }\n }\n\n if (matched) {\n parts.push({ kind: 'token', token: matched });\n i += matched.length;\n } else {\n parts.push({ kind: 'lit', text: fmt[i] });\n i += 1;\n }\n }\n\n // merge adjacent literals\n const merged: FormatPart[] = [];\n for (const p of parts) {\n const last = merged[merged.length - 1];\n if (p.kind === 'lit' && last?.kind === 'lit') last.text += p.text;\n else merged.push(p);\n }\n\n return merged;\n}\n\nfunction normalizeFormat(fmt: string): string {\n // Keep only date tokens in order, drop literals.\n return tokenizeFormat(fmt)\n .filter((p) => p.kind === 'token')\n .map((p) => (p as { kind: 'token'; token: DateToken }).token)\n .join('');\n}\n\nfunction normalizeInputAlphaNum(raw: string): string {\n return raw.replace(/[^a-zA-Z0-9]/g, '');\n}\n\nfunction hasLetters(raw: string): boolean {\n return /[a-zA-Z]/.test(raw);\n}\n\nfunction isLikelyPartial(raw: string): boolean {\n // Partial if:\n // - ends with a separator-like char\n // - contains letters but not enough letters for month names yet\n // - too short overall\n const t = raw.trim();\n if (!t) return true;\n if (/[-/.\\s]$/.test(t)) return true;\n if (hasLetters(t) && t.length < 6) return true;\n if (normalizeInputAlphaNum(t).length < 6) return true;\n return false;\n}\n\n/**\n * Smart parse:\n * 1) Try strict parse of raw input using displayFormat (supports separators, MMM, etc.)\n * 2) If fails, try normalized input + normalized format (removes literals),\n * e.g. \"15-May-1981\" -> \"15May1981\" with \"DDMMMYYYY\"\n *\n * Returns partial/invalid/valid.\n */\nexport function parseSmartDate(\n raw: string,\n displayFormat: string,\n adapter: TngDateAdapter,\n locale?: string\n): ParseResult {\n const text = raw.trim();\n if (!text) return { kind: 'empty' };\n\n // 1) strict as-is parse\n const direct = adapter.parse(text, displayFormat, locale);\n if (direct && adapter.isValid(direct)) {\n return { kind: 'valid', date: adapter.startOfDay(direct) };\n }\n\n // If user is still typing, don't mark invalid aggressively\n if (isLikelyPartial(text)) return { kind: 'partial' };\n\n // 2) normalized parse (strip literals)\n const normFmt = normalizeFormat(displayFormat);\n const normInput = normalizeInputAlphaNum(text);\n if (!normInput) return { kind: 'empty' };\n\n const normalized = adapter.parse(normInput, normFmt, locale);\n if (normalized && adapter.isValid(normalized)) {\n return { kind: 'valid', date: adapter.startOfDay(normalized) };\n }\n\n // If contains letters, assume month still being typed (Ma, May, etc.)\n if (hasLetters(text) && text.length < 10) return { kind: 'partial' };\n\n return { kind: 'invalid' };\n}\n\n/**\n * Format a Date using displayFormat and locale.\n */\nexport function formatDate(\n date: Date,\n displayFormat: string,\n adapter: TngDateAdapter,\n locale?: string\n): string {\n return adapter.format(date, displayFormat, locale);\n}\n\n/**\n * Caret preservation:\n * after we programmatically replace input.value, reposition caret to a logical place.\n *\n * Strategy:\n * - Count alphanumeric characters before caret in the \"before\" string.\n * - Find the position in \"after\" string that has the same count of alphanumerics.\n */\nexport function computeNextCaretPos(before: string, beforeCaret: number, after: string): number {\n const countAlphaNum = (s: string) => (s.match(/[a-zA-Z0-9]/g) ?? []).length;\n\n const beforeLeft = before.slice(0, beforeCaret);\n const targetCount = countAlphaNum(beforeLeft);\n\n if (targetCount === 0) return 0;\n\n let seen = 0;\n for (let i = 0; i < after.length; i++) {\n if (/[a-zA-Z0-9]/.test(after[i])) seen++;\n if (seen >= targetCount) return i + 1;\n }\n\n return after.length;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n TngConnectedOverlay,\n TngOverlayPanel,\n TngOverlayRef,\n type TngOverlayCloseReason,\n} from '@tociva/tailng-ui/popups-overlays';\n\nimport { TngNativeDateAdapter } from './adapters/native-date.adapter';\nimport { TNG_DATE_ADAPTER, TngDateAdapter } from './adapters/tng-date-adapter';\nimport {\n computeNextCaretPos,\n parseSmartDate\n} from './utils/datepicker-input.util';\n\nconst MONTHS = [\n { index: 0, label: 'Jan' },\n { index: 1, label: 'Feb' },\n { index: 2, label: 'Mar' },\n { index: 3, label: 'Apr' },\n { index: 4, label: 'May' },\n { index: 5, label: 'Jun' },\n { index: 6, label: 'Jul' },\n { index: 7, label: 'Aug' },\n { index: 8, label: 'Sep' },\n { index: 9, label: 'Oct' },\n { index: 10, label: 'Nov' },\n { index: 11, label: 'Dec' },\n] as const;\n\nconst YEAR_WINDOW_SIZE = 10;\nconst WEEKDAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] as const;\n\ntype CalendarCell = {\n date: Date;\n label: string;\n isOutsideMonth: boolean;\n};\n\n@Component({\n selector: 'tng-datepicker',\n standalone: true,\n imports: [\n TngOverlayRef,\n TngConnectedOverlay,\n TngOverlayPanel,\n ],\n templateUrl: './datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngDatepicker),\n multi: true,\n },\n ],\n})\nexport class TngDatepicker implements ControlValueAccessor {\n /* =====================\n * Inputs\n * ===================== */\n readonly min = input<Date | null>(null);\n readonly max = input<Date | null>(null);\n readonly disabled = input<boolean>(false);\n\n readonly displayFormat = input<string>('DD/MM/YYYY');\n readonly previewFormat = input<string>('DD MMM YYYY');\n\n /** Optional locale for month names (e.g. 'en', 'fr', 'de', 'ml') */\n readonly locale = input<string | null>(null);\n\n readonly dateAdapter = input<TngDateAdapter | null>(null);\n\n /** Klass applied to the text input element */\n readonly inputKlass = input<string>('');\n readonly toggleKlass = input<string>('');\n\n readonly hostKlass = input<string>('');\n readonly disabledKlass = input<string>('');\n readonly fieldKlass = input<string>('');\n readonly toggleIconKlass = input<string>('');\n readonly panelKlass = input<string>('');\n readonly panelFrameKlass = input<string>('');\n readonly panelLayoutKlass = input<string>('');\n readonly monthRailKlass = input<string>('');\n readonly monthListKlass = input<string>('');\n readonly monthItemKlass = input<string>('');\n readonly calendarKlass = input<string>('');\n readonly titleKlass = input<string>('');\n readonly weekdayRowKlass = input<string>('');\n readonly weekdayCellKlass = input<string>('');\n readonly dayGridKlass = input<string>('');\n readonly dayCellKlass = input<string>('');\n readonly previewTextKlass = input<string>('');\n readonly actionBarKlass = input<string>('');\n readonly cancelKlass = input<string>('');\n readonly confirmKlass = input<string>('');\n readonly yearRailKlass = input<string>('');\n readonly yearNavPrevKlass = input<string>('');\n readonly yearListKlass = input<string>('');\n readonly yearItemKlass = input<string>('');\n readonly yearNavNextKlass = input<string>('');\n\n @ViewChild('inputEl', { static: true })\n inputEl!: ElementRef<HTMLInputElement>;\n\n /* =====================\n * Overlay state\n * ===================== */\n readonly isOpen = signal(false);\n readonly isDisabled = signal(false);\n\n private readonly injectedAdapter = inject(TNG_DATE_ADAPTER, { optional: true });\n private readonly nativeAdapter = inject(TngNativeDateAdapter);\n\n readonly adapter = computed(\n () => this.dateAdapter() ?? this.injectedAdapter ?? this.nativeAdapter,\n );\n\n /* =====================\n * Klass (input theming)\n * ===================== */\n readonly inputKlassFinal = computed(() =>\n this.join(\n 'w-full rounded-md border border-border bg-bg px-3 py-2 pr-10 text-sm',\n 'focus:outline-none focus:ring-2 focus:ring-primary',\n this.inputKlass(),\n ),\n );\n\n readonly toggleKlassFinal = computed(() =>\n this.join(\n 'absolute inset-y-0 right-0 flex w-10 items-center justify-center',\n 'rounded-r-md text-fg hover:bg-alternate-background',\n this.toggleKlass(),\n ),\n );\n\n readonly hostKlassFinal = computed(() =>\n this.join('relative', this.hostKlass()),\n );\n readonly disabledKlassFinal = computed(() =>\n this.join(this.disabledKlass()),\n );\n readonly fieldKlassFinal = computed(() =>\n this.join('relative', this.fieldKlass()),\n );\n readonly toggleIconKlassFinal = computed(() =>\n this.join('h-5 w-5', this.toggleIconKlass()),\n );\n readonly panelKlassFinal = computed(() =>\n this.join(\n 'w-[372px] h-[322px] max-h-[322px] p-0',\n this.panelKlass(),\n ),\n );\n readonly panelFrameKlassFinal = computed(() =>\n this.join(\n 'w-[370px] h-[320px] overflow-hidden rounded-lg',\n 'border border-border bg-bg shadow-lg',\n this.panelFrameKlass(),\n ),\n );\n readonly panelLayoutKlassFinal = computed(() =>\n this.join('grid h-full grid-cols-[64px_1fr_64px]', this.panelLayoutKlass()),\n );\n readonly monthRailKlassFinal = computed(() =>\n this.join('bg-bg p-1 text-fg', this.monthRailKlass()),\n );\n readonly monthListKlassFinal = computed(() =>\n this.join('space-y-0.5', this.monthListKlass()),\n );\n readonly monthItemKlassFinal = computed(() =>\n this.join(\n 'w-full rounded px-1 py-0.5 text-[11px] font-semibold transition',\n this.monthItemKlass(),\n ),\n );\n readonly calendarKlassFinal = computed(() =>\n this.join(\n 'flex h-full flex-col p-2 border-r border-l border-border',\n this.calendarKlass(),\n ),\n );\n readonly titleKlassFinal = computed(() =>\n this.join(\n 'mb-1 text-center text-sm font-semibold',\n this.titleKlass(),\n ),\n );\n readonly weekdayRowKlassFinal = computed(() =>\n this.join(\n 'grid grid-cols-7 gap-0.5 text-[10px] font-semibold text-disable',\n this.weekdayRowKlass(),\n ),\n );\n readonly weekdayCellKlassFinal = computed(() =>\n this.join('text-center', this.weekdayCellKlass()),\n );\n readonly dayGridKlassFinal = computed(() =>\n this.join('mt-1 grid grid-cols-7 gap-0.5', this.dayGridKlass()),\n );\n readonly dayCellKlassFinal = computed(() =>\n this.join(\n 'h-7 rounded text-[11px] transition',\n this.dayCellKlass(),\n ),\n );\n readonly previewTextKlassFinal = computed(() =>\n this.join(\n 'pt-2 text-center text-[11px] text-disable',\n this.previewTextKlass(),\n ),\n );\n readonly actionBarKlassFinal = computed(() =>\n this.join(\n 'mt-auto flex items-center justify-end gap-2 pt-4',\n this.actionBarKlass(),\n ),\n );\n readonly cancelKlassFinal = computed(() =>\n this.join(\n 'rounded-md border border-border bg-bg',\n 'px-3 py-1.5 text-[11px] font-semibold text-fg',\n 'shadow-sm hover:bg-alternate-background active:translate-y-[1px]',\n this.cancelKlass(),\n ),\n );\n readonly confirmKlassFinal = computed(() =>\n this.join(\n 'rounded-md bg-fg',\n 'px-3 py-1.5 text-[11px] font-semibold text-bg',\n 'shadow-sm hover:opacity-95 active:translate-y-[1px]',\n this.confirmKlass(),\n ),\n );\n readonly yearRailKlassFinal = computed(() =>\n this.join(\n 'bg-bg p-1 text-fg flex flex-col',\n this.yearRailKlass(),\n ),\n );\n readonly yearNavPrevKlassFinal = computed(() =>\n this.join(\n 'mx-auto mb-1 flex h-6 w-6 items-center justify-center',\n 'rounded bg-bg/10 text-[12px] hover:bg-bg/15 disabled:opacity-40',\n this.yearNavPrevKlass(),\n ),\n );\n readonly yearListKlassFinal = computed(() =>\n this.join('space-y-0.5', this.yearListKlass()),\n );\n readonly yearItemKlassFinal = computed(() =>\n this.join(\n 'w-full rounded px-1 py-0.5 text-[11px] font-semibold transition',\n this.yearItemKlass(),\n ),\n );\n readonly yearNavNextKlassFinal = computed(() =>\n this.join(\n 'mx-auto mt-1 flex h-6 w-6 items-center justify-center',\n 'rounded bg-bg/10 text-[12px] hover:bg-bg/15 disabled:opacity-40',\n this.yearNavNextKlass(),\n ),\n );\n\n private join(...parts: Array<string | null | undefined>): string {\n return parts.map((p) => (p ?? '').trim()).filter(Boolean).join(' ');\n }\n\n /* =====================\n * Form values\n * ===================== */\n private value: Date | null = null;\n readonly draft = signal<Date | null>(null);\n readonly inputValue = signal('');\n\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n /* =====================\n * UI constants\n * ===================== */\n readonly months = MONTHS;\n readonly weekdays = WEEKDAYS;\n \n\n readonly focusedDate = signal<Date | null>(null);\n\n /* =====================\n * Derived bounds\n * ===================== */\n private readonly minD = computed(() =>\n this.min() ? this.adapter().startOfDay(this.min()!) : null\n );\n private readonly maxD = computed(() =>\n this.max() ? this.adapter().startOfDay(this.max()!) : null\n );\n\n /* =====================\n * View base\n * ===================== */\n readonly view = computed(() =>\n (this.draft() ?? this.value ?? this.adapter().startOfDay(new Date()))\n );\n\n readonly selectedYear = computed(() => this.adapter().year(this.view()!));\n readonly selectedMonth = computed(() => this.adapter().month(this.view()!));\n\n readonly yearBase = signal<number>(\n Math.floor(this.adapter().year(new Date()) / YEAR_WINDOW_SIZE) * YEAR_WINDOW_SIZE\n );\n\n readonly years = computed(() => {\n const base = this.yearBase();\n return Array.from({ length: YEAR_WINDOW_SIZE }, (_, i) => base + i);\n });\n\n readonly previewLabel = computed(() => {\n const d = this.draft() ?? this.value;\n if (!d) return '—';\n const loc = this.locale();\n return loc ? this.adapter().format(d, this.previewFormat(), loc) : this.adapter().format(d, this.previewFormat());\n });\n\n readonly calendarCells = computed<CalendarCell[]>(() => {\n const v = this.adapter().startOfMonth(this.view()!);\n const startDow = this.adapter().day(v);\n const gridStart = this.adapter().addDays(v, -startDow);\n\n const cells: CalendarCell[] = [];\n for (let i = 0; i < 42; i++) {\n const d = this.adapter().addDays(gridStart, i);\n cells.push({\n date: d,\n label: String(this.adapter().date(d)),\n isOutsideMonth: this.adapter().month(d) !== this.adapter().month(v),\n });\n }\n return cells;\n });\n\n canPrevYearWindow = computed(() => !this.isYearWindowBlocked(this.yearBase() - YEAR_WINDOW_SIZE));\n canNextYearWindow = computed(() => !this.isYearWindowBlocked(this.yearBase() + YEAR_WINDOW_SIZE));\n\n private isYearWindowBlocked(nextBase: number): boolean {\n const min = this.minD();\n const max = this.maxD();\n if (!min && !max) return false;\n\n const years = Array.from({ length: YEAR_WINDOW_SIZE }, (_, i) => nextBase + i);\n return years.every((y) => this.isYearDisabled(y));\n }\n\n constructor() {\n effect(() => {\n this.isDisabled.set(this.disabled());\n if (this.isDisabled()) this.close('programmatic');\n });\n }\n\n prevYearWindow(): void {\n if (this.isDisabled()) return;\n const next = this.yearBase() - YEAR_WINDOW_SIZE;\n if (this.isYearWindowBlocked(next)) return;\n this.yearBase.set(next);\n }\n\n nextYearWindow(): void {\n if (this.isDisabled()) return;\n const next = this.yearBase() + YEAR_WINDOW_SIZE;\n if (this.isYearWindowBlocked(next)) return;\n this.yearBase.set(next);\n }\n\n /* =====================\n * CVA\n * ===================== */\n writeValue(value: Date | string | number | null): void {\n if (value == null) {\n this.value = null;\n this.draft.set(null);\n this.inputValue.set('');\n return;\n }\n\n const d = this.adapter().startOfDay(new Date(value));\n if (!this.adapter().isValid(d)) return;\n\n const clamped = this.clampToBounds(d);\n this.value = clamped;\n this.draft.set(clamped);\n\n this.yearBase.set(Math.floor(this.adapter().year(clamped) / YEAR_WINDOW_SIZE) * YEAR_WINDOW_SIZE);\n\n const formatted = this.adapter().format(clamped, this.displayFormat(), this.locale() ?? undefined);\n this.inputValue.set(formatted);\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n if (isDisabled) this.close('programmatic');\n }\n\n /* =====================\n * Overlay control\n * ===================== */\n open(_reason: TngOverlayCloseReason) {\n if (this.isDisabled()) return;\n this.isOpen.set(true);\n \n if (this.draft() == null) this.draft.set(this.value ?? this.adapter().startOfDay(new Date()));\n const current = (this.draft() ?? this.value ?? this.adapter().startOfDay(new Date()));\n \n // year window sync (existing)\n const y = this.adapter().year(current);\n this.yearBase.set(Math.floor(y / YEAR_WINDOW_SIZE) * YEAR_WINDOW_SIZE);\n \n // keyboard focus starts from current draft/value\n this.focusedDate.set(current);\n }\n \n\n close(_reason: TngOverlayCloseReason) {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n }\n\n onOverlayOpenChange(open: boolean) {\n if (this.isDisabled()) {\n this.isOpen.set(false);\n return;\n }\n open ? this.open('programmatic') : this.close('programmatic');\n }\n\n onOverlayClosed(reason: TngOverlayCloseReason) {\n this.close(reason);\n }\n\n toggleOverlay() {\n if (this.isDisabled()) return;\n this.isOpen.update((v) => !v);\n if (this.isOpen()) this.open('programmatic');\n queueMicrotask(() => this.inputEl.nativeElement.focus());\n }\n\n /* =====================\n * Input handling (smart)\n * ===================== */\n onInput(ev: Event) {\n if (this.isDisabled()) return;\n\n const input = ev.target as HTMLInputElement;\n const raw = input.value ?? '';\n\n const before = raw;\n const beforeCaret = input.selectionStart ?? before.length;\n\n const res = parseSmartDate(raw, this.displayFormat(), this.adapter(), this.locale() ?? undefined);\n\n // Keep what user typed while partial/invalid; don't hard-clear.\n if (res.kind === 'empty') {\n this.inputValue.set('');\n this.draft.set(null);\n this.onChange(null);\n this.onTouched();\n return;\n }\n\n if (res.kind === 'partial') {\n this.inputValue.set(raw);\n // do not emit null onChange while user is mid-typing\n this.onTouched();\n return;\n }\n\n if (res.kind === 'invalid') {\n this.inputValue.set(raw);\n this.onChange(null);\n this.onTouched();\n return;\n }\n\n // valid\n const clamped = this.clampToBounds(res.date);\n this.draft.set(clamped);\n\n const formatted = this.adapter().format(clamped, this.displayFormat(), this.locale() ?? undefined);\n this.inputValue.set(formatted);\n\n // Apply formatting back to input while preserving caret\n if (formatted !== raw) {\n input.value = formatted;\n const nextCaret = computeNextCaretPos(before, beforeCaret, formatted);\n queueMicrotask(() => input.setSelectionRange(nextCaret, nextCaret));\n }\n\n // don’t commit until day click/confirm (your current UX), but\n // we can still emit null/valid? You already treat typing as draft.\n // Keep existing behavior: do NOT call onChange here.\n this.onTouched();\n }\n\n onBlur() {\n this.onTouched();\n }\n\n private setFocusedDate(next: Date) {\n const d = this.adapter().startOfDay(next);\n \n // clamp to bounds\n const clamped = this.clampToBounds(d);\n \n this.focusedDate.set(clamped);\n \n // If user navigates to another month/year, update draft to keep calendar view in sync\n this.draft.set(clamped);\n \n // Keep year window aligned\n this.yearBase.set(Math.floor(this.adapter().year(clamped) / YEAR_WINDOW_SIZE) * YEAR_WINDOW_SIZE);\n }\n \n private moveFocusedByDays(delta: number) {\n const base = (this.focusedDate() ?? this.draft() ?? this.value ?? this.adapter().startOfDay(new Date()));\n this.setFocusedDate(this.adapter().addDays(base, delta));\n }\n \n private moveFocusedByMonths(delta: number) {\n const base = (this.focusedDate() ?? this.draft() ?? this.value ?? this.adapter().startOfDay(new Date()));\n this.setFocusedDate(this.adapter().addMonths(base, delta));\n }\n \n private moveFocusedToStartOfMonth() {\n const base = (this.focusedDate() ?? this.draft() ?? this.value ?? this.adapter().startOfDay(new Date()));\n this.setFocusedDate(this.adapter().startOfMonth(base));\n }\n \n private moveFocusedToEndOfMonth() {\n const base = (this.focusedDate() ?? this.draft() ?? this.value ?? this.adapter().startOfDay(new Date()));\n this.setFocusedDate(this.adapter().endOfMonth(base));\n }\n \n isCellFocused(cell: CalendarCell): boolean {\n const f = this.focusedDate();\n if (!f) return false;\n return this.adapter().isSameDay(cell.date, f);\n } \n \n onKeydown(ev: KeyboardEvent) {\n if (this.isDisabled()) return;\n \n // ---- TAB / SHIFT+TAB -> close popup ----\n if (ev.key === 'Tab' && this.isOpen()) {\n // Do NOT preventDefault -> allow normal focus navigation\n this.close('blur');\n return;\n }\n \n // Escape closes without commit\n if (ev.key === 'Escape' && this.isOpen()) {\n ev.preventDefault();\n this.close('escape');\n return;\n }\n \n // Open when closed\n if (!this.isOpen() && (ev.key === 'ArrowDown' || ev.key === 'Enter')) {\n ev.preventDefault();\n this.open('programmatic');\n return;\n }\n \n // Keyboard navigation only when open\n if (!this.isOpen()) return;\n \n switch (ev.key) {\n case 'ArrowLeft':\n ev.preventDefault();\n this.moveFocusedByDays(-1);\n return;\n \n case 'ArrowRight':\n ev.preventDefault();\n this.moveFocusedByDays(1);\n return;\n \n case 'ArrowUp':\n ev.preventDefault();\n this.moveFocusedByDays(-7);\n return;\n \n case 'ArrowDown':\n ev.preventDefault();\n this.moveFocusedByDays(7);\n return;\n \n case 'PageUp':\n ev.preventDefault();\n this.moveFocusedByMonths(-1);\n return;\n \n case 'PageDown':\n ev.preventDefault();\n this.moveFocusedByMonths(1);\n return;\n \n case 'Home':\n ev.preventDefault();\n this.moveFocusedToStartOfMonth();\n return;\n \n case 'End':\n ev.preventDefault();\n this.moveFocusedToEndOfMonth();\n return;\n \n case 'Enter': {\n ev.preventDefault();\n const f = this.focusedDate();\n if (!f) return;\n \n const clamped = this.clampToBounds(f);\n this.draft.set(clamped);\n \n this.value = clamped;\n this.inputValue.set(this.adapter().format(clamped, this.displayFormat(), this.locale() ?? undefined));\n this.onChange(clamped);\n this.onTouched();\n \n this.close('selection');\n return;\n }\n }\n } \n\n /* =====================\n * Calendar actions\n * ===================== */\n selectMonth(monthIndex0: number): void {\n if (this.isDisabled()) return;\n\n const base = this.draft() ?? this.value ?? this.adapter().startOfDay(new Date());\n const day = this.adapter().date(base);\n\n const m = this.adapter().setMonth(base, monthIndex0);\n const nextDay = Math.min(day, this.adapter().daysInMonth(m));\n\n this.draft.set(this.clampToBounds(this.adapter().setDate(m, nextDay)));\n }\n\n selectYear(year: number): void {\n if (this.isDisabled()) return;\n\n const base = this.draft() ?? this.value ?? this.adapter().startOfDay(new Date());\n const day = this.adapter().date(base);\n\n const y = this.adapter().setYear(base, year);\n const nextDay = Math.min(day, this.adapter().daysInMonth(y));\n\n this.draft.set(this.clampToBounds(this.adapter().setDate(y, nextDay)));\n }\n\n // day click commits + closes (as you requested)\n selectDay(cell: { date: Date }) {\n if (this.isDisabled()) return;\n\n const d = this.adapter().startOfDay(cell.date);\n if (!this.isWithinBounds(d)) return;\n\n const clamped = this.clampToBounds(d);\n this.draft.set(clamped);\n\n this.value = clamped;\n\n const formatted = this.adapter().format(clamped, this.displayFormat(), this.locale() ?? undefined);\n this.inputValue.set(formatted);\n\n this.onChange(clamped);\n this.onTouched();\n\n this.close('selection');\n }\n\n cancel(): void {\n if (this.isDisabled()) return;\n\n this.draft.set(this.value);\n\n const formatted = this.value\n ? this.adapter().format(this.value, this.displayFormat(), this.locale() ?? undefined)\n : '';\n\n this.inputValue.set(formatted);\n this.close('blur');\n this.onTouched();\n }\n\n confirm(): void {\n if (this.isDisabled()) return;\n\n const d = this.draft();\n if (!d) {\n this.value = null;\n this.inputValue.set('');\n this.onChange(null);\n this.onTouched();\n this.close('selection');\n return;\n }\n\n const clamped = this.clampToBounds(d);\n this.value = clamped;\n\n const formatted = this.adapter().format(clamped, this.displayFormat(), this.locale() ?? undefined);\n this.inputValue.set(formatted);\n\n this.onChange(clamped);\n this.onTouched();\n this.close('selection');\n }\n\n /* =====================\n * Selection helpers\n * ===================== */\n isMonthSelected(monthIndex0: number): boolean {\n return this.selectedMonth() === monthIndex0;\n }\n\n isYearSelected(year: number): boolean {\n return this.selectedYear() === year;\n }\n\n isCellSelected(cell: CalendarCell): boolean {\n const d = this.draft() ?? this.value;\n return !!d && this.adapter().isSameDay(cell.date, d);\n }\n\n isCellDisabled(cell: CalendarCell): boolean {\n return !this.isWithinBounds(cell.date);\n }\n\n isMonthDisabled(monthIndex0: number): boolean {\n const min = this.minD();\n const max = this.maxD();\n if (!min && !max) return false;\n\n const y = this.selectedYear();\n const start = this.adapter().startOfDay(this.adapter().setYear(this.adapter().setMonth(new Date(), monthIndex0), y));\n const end = this.adapter().endOfMonth(start);\n\n if (min && this.adapter().isBeforeDay(end, min)) return true;\n if (max && this.adapter().isAfterDay(start, max)) return true;\n return false;\n }\n\n isYearDisabled(year: number): boolean {\n const min = this.minD();\n const max = this.maxD();\n if (!min && !max) return false;\n\n const start = this.adapter().startOfDay(this.adapter().setYear(this.adapter().setMonth(new Date(), 0), year));\n const end = this.adapter().endOfYear(start);\n\n if (min && this.adapter().isBeforeDay(end, min)) return true;\n if (max && this.adapter().isAfterDay(start, max)) return true;\n return false;\n }\n\n /* =====================\n * Internals\n * ===================== */\n private clampToBounds(d: Date): Date {\n const min = this.minD();\n const max = this.maxD();\n if (min && this.adapter().isBeforeDay(d, min)) return min;\n if (max && this.adapter().isAfterDay(d, max)) return max;\n return d;\n }\n\n private isWithinBounds(d: Date): boolean {\n const min = this.minD();\n const max = this.maxD();\n if (min && this.adapter().isBeforeDay(d, min)) return false;\n if (max && this.adapter().isAfterDay(d, max)) return false;\n return true;\n }\n}\n","<div [class]=\"hostKlassFinal()\">\n <!-- =====================\n Input + calendar icon\n ===================== -->\n <div [class]=\"disabledKlassFinal()\" [class.opacity-60]=\"isDisabled()\" [class.pointer-events-none]=\"isDisabled()\">\n <div [class]=\"fieldKlassFinal()\">\n <input\n #inputEl\n type=\"text\"\n [class]=\"inputKlassFinal()\"\n [value]=\"inputValue()\"\n [placeholder]=\"displayFormat()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (focus)=\"open('programmatic')\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n\n <!-- Calendar icon -->\n <button\n type=\"button\"\n [class]=\"toggleKlassFinal()\"\n (click)=\"toggleOverlay()\"\n aria-label=\"Open calendar\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n [class]=\"toggleIconKlassFinal()\"\n fill=\"currentColor\"\n >\n <path\n d=\"M7 2a1 1 0 0 1 1 1v1h8V3a1 1 0 1 1 2 0v1h1.5A2.5 2.5 0 0 1 22 6.5v14\n A2.5 2.5 0 0 1 19.5 23h-15A2.5 2.5 0 0 1 2 20.5v-14\n A2.5 2.5 0 0 1 4.5 4H6V3a1 1 0 0 1 1-1Zm12.5 8h-15a.5.5 0 0 0-.5.5v10\n a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5Z\"\n />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- =====================\n Overlay\n ===================== -->\n <tng-overlay-ref\n #overlayRef=\"tngOverlayRef\"\n [open]=\"isOpen()\"\n (openChange)=\"onOverlayOpenChange($event)\"\n (closed)=\"onOverlayClosed($event)\"\n >\n <tng-connected-overlay\n [open]=\"overlayRef.isOpen()\"\n [anchor]=\"inputEl\"\n placement=\"bottom-start\"\n width=\"content\"\n [closeOnInsideClick]=\"false\"\n (closed)=\"overlayRef.close($event)\"\n >\n <tng-overlay-panel [klass]=\"panelKlassFinal()\">\n <!-- Popup frame -->\n <div [class]=\"panelFrameKlassFinal()\">\n <!-- =====================\n Body layout\n ===================== -->\n <div [class]=\"panelLayoutKlassFinal()\">\n\n <!-- ========= Months ========= -->\n <div [class]=\"monthRailKlassFinal()\">\n <div [class]=\"monthListKlassFinal()\">\n @for (m of months; track m.index) {\n <button\n type=\"button\"\n [class]=\"monthItemKlassFinal()\"\n [class.bg-fg]=\"isMonthSelected(m.index)\"\n [class.text-bg]=\"isMonthSelected(m.index)\"\n [class.opacity-40]=\"isMonthDisabled(m.index)\"\n [disabled]=\"isMonthDisabled(m.index)\"\n (click)=\"selectMonth(m.index)\"\n >\n {{ m.label }}\n </button>\n }\n </div>\n </div>\n\n <!-- ========= Calendar ========= -->\n <div [class]=\"calendarKlassFinal()\">\n <div [class]=\"titleKlassFinal()\">\n Select Date\n </div>\n\n <!-- Weekdays -->\n <div [class]=\"weekdayRowKlassFinal()\">\n @for (d of weekdays; track d) {\n <div [class]=\"weekdayCellKlassFinal()\">{{ d }}</div>\n }\n </div>\n\n <!-- Days -->\n <div [class]=\"dayGridKlassFinal()\">\n @for (cell of calendarCells(); track $index) {\n <button\n type=\"button\"\n [class]=\"dayCellKlassFinal()\"\n [class.text-fg]=\"cell.isOutsideMonth\"\n [class.hover:bg-fg]=\"!isCellDisabled(cell) && !isCellSelected(cell)\"\n [class.hover:text-bg]=\"!isCellDisabled(cell) && !isCellSelected(cell)\"\n [class.bg-fg]=\"isCellSelected(cell)\"\n [class.text-bg]=\"isCellSelected(cell)\"\n [class.opacity-40]=\"isCellDisabled(cell)\"\n [class.ring-2]=\"isCellFocused(cell) && !isCellSelected(cell)\"\n [class.ring-border]=\"isCellFocused(cell) && !isCellSelected(cell)\"\n [disabled]=\"isCellDisabled(cell)\"\n (click)=\"selectDay(cell)\"\n >\n {{ cell.label }}\n </button>\n }\n </div>\n\n <!-- Preview -->\n <div [class]=\"previewTextKlassFinal()\">\n {{ previewLabel() }}\n </div>\n\n <!-- Actions -->\n <div [class]=\"actionBarKlassFinal()\">\n <button\n type=\"button\"\n [class]=\"cancelKlassFinal()\"\n (click)=\"cancel()\"\n >\n Cancel\n </button>\n\n <button\n type=\"button\"\n [class]=\"confirmKlassFinal()\"\n (click)=\"confirm()\"\n >\n Confirm\n </button>\n </div>\n </div>\n\n <!-- ========= Years (10 at a time) ========= -->\n <div [class]=\"yearRailKlassFinal()\">\n\n <!-- Up -->\n <button\n type=\"button\"\n [class]=\"yearNavPrevKlassFinal()\"\n (click)=\"prevYearWindow()\"\n [disabled]=\"!canPrevYearWindow()\"\n aria-label=\"Previous 10 years\"\n >\n ▲\n </button>\n\n <!-- Year list -->\n <div [class]=\"yearListKlassFinal()\">\n @for (y of years(); track (yearBase() + ':' + y)) {\n <button\n type=\"button\"\n [class]=\"yearItemKlassFinal()\"\n [class.bg-fg]=\"isYearSelected(y)\"\n [class.text-bg]=\"isYearSelected(y)\"\n [class.opacity-40]=\"isYearDisabled(y)\"\n [disabled]=\"isYearDisabled(y)\"\n (click)=\"selectYear(y)\"\n >\n {{ y }}\n </button>\n }\n </div>\n \n <!-- Down -->\n <button\n type=\"button\"\n [class]=\"yearNavNextKlassFinal()\"\n (click)=\"nextYearWindow()\"\n [disabled]=\"!canNextYearWindow()\"\n aria-label=\"Next 10 years\"\n >\n ▼\n </button>\n </div>\n\n </div>\n </div>\n </tng-overlay-panel>\n </tng-connected-overlay>\n </tng-overlay-ref>\n</div>\n","import { Directive, HostListener, input, output, signal, computed } from '@angular/core';\n\nexport type TngFileDrop = {\n files: File[];\n items?: DataTransferItemList;\n raw?: DataTransfer;\n};\n\n@Directive({\n selector: '[tngFileDropzone]',\n standalone: true,\n exportAs: 'tngFileDropzone',\n})\nexport class TngFileDropzone {\n /** Disable drag/drop interactions */\n readonly disabled = input(false);\n\n /** Optional: allow dropping multiple files */\n readonly multiple = input(false);\n\n /** Optional: accept filter like input accept attribute (e.g. \"image/*,.pdf\") */\n readonly accept = input<string>('');\n\n /** Emits when valid files dropped */\n readonly filesDropped = output<File[]>();\n\n /** Emits drag active state changes (optional hook) */\n readonly dragActiveChange = output<boolean>();\n\n private readonly _dragActive = signal(false);\n readonly dragActive = computed(() => this._dragActive());\n\n private setActive(next: boolean) {\n if (this._dragActive() === next) return;\n this._dragActive.set(next);\n this.dragActiveChange.emit(next);\n }\n\n private acceptMatches(file: File): boolean {\n const accept = (this.accept() ?? '').trim();\n if (!accept) return true;\n\n // accept can be: \"image/*,.pdf,application/json\"\n const parts = accept\n .split(',')\n .map((p) => p.trim())\n .filter(Boolean);\n\n if (!parts.length) return true;\n\n const name = file.name.toLowerCase();\n const type = (file.type || '').toLowerCase();\n\n return parts.some((p) => {\n const token = p.toLowerCase();\n if (token === '*/*') return true;\n\n // extension: \".pdf\"\n if (token.startsWith('.')) return name.endsWith(token);\n\n // wildcard mime: \"image/*\"\n if (token.endsWith('/*')) {\n const prefix = token.slice(0, token.length - 1); // keep trailing '/'\n return type.startsWith(prefix);\n }\n\n // exact mime: \"application/pdf\"\n return type === token;\n });\n }\n\n private filterFiles(files: File[]): File[] {\n const accepted = files.filter((f) => this.acceptMatches(f));\n return this.multiple() ? accepted : accepted.slice(0, 1);\n }\n\n private extractFiles(dt: DataTransfer | null): File[] {\n if (!dt) return [];\n\n // Prefer items (better in some browsers)\n const items = dt.items;\n if (items && items.length) {\n const picked: File[] = [];\n for (const item of Array.from(items)) {\n if (item.kind !== 'file') continue;\n const file = item.getAsFile();\n if (file) picked.push(file);\n }\n return this.filterFiles(picked);\n }\n\n const files = dt.files ? Array.from(dt.files) : [];\n return this.filterFiles(files);\n }\n\n @HostListener('dragenter', ['$event'])\n onDragEnter(ev: DragEvent) {\n if (this.disabled()) return;\n ev.preventDefault();\n ev.stopPropagation();\n this.setActive(true);\n }\n\n @HostListener('dragover', ['$event'])\n onDragOver(ev: DragEvent) {\n if (this.disabled()) return;\n ev.preventDefault();\n ev.stopPropagation();\n this.setActive(true);\n if (ev.dataTransfer) ev.dataTransfer.dropEffect = 'copy';\n }\n\n @HostListener('dragleave', ['$event'])\n onDragLeave(ev: DragEvent) {\n if (this.disabled()) return;\n ev.preventDefault();\n ev.stopPropagation();\n this.setActive(false);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(ev: DragEvent) {\n if (this.disabled()) return;\n ev.preventDefault();\n ev.stopPropagation();\n this.setActive(false);\n\n const files = this.extractFiles(ev.dataTransfer ?? null);\n if (files.length) this.filesDropped.emit(files);\n }\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { TngFileDropzone } from './file-dropzone.directive';\n\n@Component({\n selector: 'tng-file-upload',\n standalone: true,\n imports: [TngFileDropzone],\n templateUrl: './file-upload.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngFileUpload),\n multi: true,\n },\n ],\n})\nexport class TngFileUpload implements ControlValueAccessor {\n @ViewChild('fileInput', { static: true })\n fileInput!: ElementRef<HTMLInputElement>;\n\n // config\n readonly disabled = input(false);\n readonly accept = input<string>('');\n readonly multiple = input(false);\n\n // texts\n readonly title = input<string>('Upload files');\n readonly subtitle = input<string>('Drag & drop here or click to browse');\n\n // theming hooks (section-wise)\n readonly rootKlass = input<string>('w-full');\n readonly dropzoneKlass = input<string>(''); // outer box\n readonly titleKlass = input<string>('text-sm font-medium text-fg');\n readonly subtitleKlass = input<string>('text-xs text-disable');\n readonly hintKlass = input<string>('text-xs text-disable');\n readonly fileListKlass = input<string>('mt-2 space-y-1');\n readonly fileItemKlass = input<string>(\n 'flex items-center justify-between rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg'\n );\n readonly clearButtonKlass = input<string>(\n 'text-xs text-danger hover:text-danger-hover'\n );\n\n // optional outputs (non-form usage)\n readonly valueChange = output<File[] | null>();\n\n private readonly _value = signal<File[] | null>(null);\n readonly value = computed(() => this._value());\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n private onChange: (value: File[] | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n // visual state\n readonly dragActive = signal(false);\n\n writeValue(value: File[] | null): void {\n this._value.set(value ?? null);\n }\n\n registerOnChange(fn: (value: File[] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n // computed classes\n readonly dropzoneClasses = computed(() => {\n const base =\n 'relative w-full rounded-md border px-4 py-4 transition ' +\n 'bg-bg text-fg border-border ' +\n 'focus-within:ring-2 focus-within:ring-primary focus-within:ring-offset-2 focus-within:ring-offset-background';\n\n const disabled = this.isDisabled() ? ' opacity-60 pointer-events-none' : ' cursor-pointer';\n const active = this.dragActive()\n ? ' border-primary ring-2 ring-primary ring-offset-2 ring-offset-background'\n : '';\n\n return `${base} ${disabled} ${active} ${this.dropzoneKlass()}`.trim();\n });\n\n openPicker() {\n if (this.isDisabled()) return;\n this.fileInput.nativeElement.click();\n }\n\n private setFiles(next: File[] | null) {\n this._value.set(next);\n this.onChange(next);\n this.valueChange.emit(next);\n }\n\n onNativeChange(event: Event) {\n if (this.isDisabled()) return;\n\n const files = (event.target as HTMLInputElement).files;\n const list = files ? Array.from(files) : [];\n\n this.setFiles(list.length ? list : null);\n }\n\n onDropped(files: File[]) {\n if (this.isDisabled()) return;\n\n this.setFiles(files.length ? files : null);\n\n // reset native input so selecting same file again still triggers change\n this.fileInput.nativeElement.value = '';\n }\n\n clear() {\n if (this.isDisabled()) return;\n this.setFiles(null);\n this.fileInput.nativeElement.value = '';\n }\n\n onBlur() {\n this.onTouched();\n }\n\n onDragActiveChange(active: boolean) {\n this.dragActive.set(active);\n }\n\n trackByName = (_: number, f: File) => `${f.name}-${f.size}-${f.lastModified}`;\n}\n","<div [class]=\"rootKlass()\">\n <!-- Hidden native input -->\n <input\n #fileInput\n type=\"file\"\n class=\"sr-only\"\n [disabled]=\"isDisabled()\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"onBlur()\"\n />\n\n <!-- Dropzone -->\n <div\n tngFileDropzone\n [disabled]=\"isDisabled()\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n (filesDropped)=\"onDropped($event)\"\n (dragActiveChange)=\"onDragActiveChange($event)\"\n [class]=\"dropzoneClasses()\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"openPicker()\"\n (keydown.enter)=\"openPicker()\"\n (keydown.space)=\"openPicker()\"\n >\n <div class=\"flex items-start justify-between gap-4\">\n <div class=\"space-y-1\">\n <div [class]=\"titleKlass()\">{{ title() }}</div>\n <div [class]=\"subtitleKlass()\">{{ subtitle() }}</div>\n </div>\n\n @if (value()?.length) {\n <button\n type=\"button\"\n [class]=\"clearButtonKlass()\"\n (click)=\"$event.stopPropagation(); clear()\"\n >\n Clear\n </button>\n }\n </div>\n\n @if (accept()) {\n <div class=\"mt-2\" [class]=\"hintKlass()\">\n Accepted: {{ accept() }}\n </div>\n }\n </div>\n\n <!-- File list -->\n @if (value()?.length) {\n <div [class]=\"fileListKlass()\">\n @for (f of value()!; track trackByName($index, f)) {\n <div [class]=\"fileItemKlass()\">\n <span class=\"truncate\">{{ f.name }}</span>\n <span class=\"ml-3 text-xs text-disable\">\n {{ (f.size / 1024).toFixed(1) }} KB\n </span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n Component,\n DestroyRef,\n computed,\n contentChild,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, of } from 'rxjs';\n\nexport type TngFormFieldSize = 'sm' | 'md' | 'lg';\nexport type TngFormFieldAppearance = 'outline' | 'filled';\n\n@Component({\n selector: 'tng-form-field',\n standalone: true,\n templateUrl: './form-field.component.html',\n})\nexport class TngFormField {\n // Get NgControl from projected child (input/select/custom CVA)\n private readonly ngControl = contentChild(NgControl, { descendants: true });\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * Bridge Angular Forms mutable state (touched/dirty/errors) into signals world.\n * We bump this tick on any control event so all computed() re-evaluate.\n */\n private readonly _tick = signal(0);\n\n private bump() {\n this._tick.update((v) => v + 1);\n }\n\n /* =====================\n * Content\n * ===================== */\n readonly label = input<string>('');\n readonly hint = input<string>('');\n\n /**\n * Manual overrides:\n * If provided, they take precedence over NgControl state.\n */\n readonly error = input<string>(''); // manual error text (wins)\n readonly invalid = input<boolean | null>(null);\n readonly disabled = input<boolean | null>(null);\n\n /**\n * Required mark:\n * Reliable + explicit. (Auto-detecting Validators.required is not stable.)\n */\n readonly required = input<boolean>(false);\n\n /* =====================\n * Variants\n * ===================== */\n readonly size = input<TngFormFieldSize>('md');\n readonly appearance = input<TngFormFieldAppearance>('outline');\n\n /* =====================\n * Theming / class hooks (section-wise)\n * ===================== */\n readonly rootKlass = input<string>('w-full');\n\n readonly labelKlass = input<string>('text-sm font-medium text-fg');\n readonly requiredMarkKlass = input<string>('text-danger');\n\n readonly hintKlass = input<string>('text-xs text-disable');\n readonly errorKlass = input<string>('text-xs text-danger');\n\n /** Wrapper around projected control */\n readonly controlShellKlass = input<string>('');\n\n readonly prefixKlass = input<string>('text-disable');\n readonly suffixKlass = input<string>('text-disable');\n\n readonly footerKlass = input<string>('mt-1 flex items-start justify-between gap-3');\n\n /* =====================\n * Control wiring\n * ===================== */\n private readonly ctrl = computed(() => this.ngControl()?.control ?? null);\n\n constructor() {\n // Subscribe to control events and bump tick whenever form state changes.\n effect(() => {\n const c = this.ngControl()?.control;\n if (!c) return;\n\n // Angular 17+ provides `events` stream (touched/dirty/etc). Fallback to value/status.\n const anyCtrl = c as any;\n const events$ =\n anyCtrl.events ?? merge(c.valueChanges ?? of(null), c.statusChanges ?? of(null));\n\n events$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.bump());\n\n // initial bump so computed picks up current state\n this.bump();\n });\n }\n\n /* =====================\n * Auto state from control\n * ===================== */\n private readonly autoDisabled = computed(() => {\n this._tick();\n return !!this.ctrl()?.disabled;\n });\n\n private readonly autoInvalid = computed(() => {\n this._tick();\n\n const c = this.ctrl();\n if (!c) return false;\n\n // typical UX: show errors after touched or dirty\n return !!c.invalid && (c.touched || c.dirty);\n });\n\n /** Prefer explicit inputs; fall back to form control. */\n readonly isDisabled = computed(() => this.disabled() ?? this.autoDisabled());\n readonly isInvalid = computed(() => this.invalid() ?? this.autoInvalid());\n readonly isRequired = computed(() => this.required());\n\n /**\n * Auto error message:\n * - manual [error] wins\n * - otherwise derive from control.errors\n */\n readonly errorText = computed(() => {\n this._tick();\n\n const manual = this.error();\n if (manual) return manual;\n\n const c = this.ctrl();\n if (!c || !this.isInvalid()) return '';\n\n const errors = c.errors ?? {};\n if (errors['required']) return 'This field is required';\n if (errors['email']) return 'Please enter a valid email';\n if (errors['minlength']?.requiredLength)\n return `Minimum ${errors['minlength'].requiredLength} characters`;\n if (errors['maxlength']?.requiredLength)\n return `Maximum ${errors['maxlength'].requiredLength} characters`;\n if (errors['min']?.min != null) return `Minimum value is ${errors['min'].min}`;\n if (errors['max']?.max != null) return `Maximum value is ${errors['max'].max}`;\n\n return 'Invalid value';\n });\n\n readonly showHint = computed(() => !!this.hint() && !this.errorText());\n readonly showError = computed(() => !!this.errorText());\n\n /* =====================\n * Classes\n * ===================== */\n private readonly sizeShell = computed(() => {\n switch (this.size()) {\n case 'sm':\n return 'px-2 py-1 text-sm';\n case 'lg':\n return 'px-4 py-3 text-base';\n case 'md':\n default:\n return 'px-3 py-2 text-sm';\n }\n });\n\n private readonly sizeLabel = computed(() => {\n switch (this.size()) {\n case 'sm':\n return 'text-xs';\n case 'lg':\n return 'text-base';\n case 'md':\n default:\n return 'text-sm';\n }\n });\n\n private readonly appearanceShell = computed(() => {\n return this.appearance() === 'filled'\n ? 'bg-alternate-background border-border'\n : 'bg-bg border-border';\n });\n\n readonly controlShellClasses = computed(() => {\n // ensure this recomputes when form state changes\n this._tick();\n\n const base =\n 'w-full flex items-center gap-2 rounded-md border transition text-fg ' +\n 'focus-within:ring-2 focus-within:ring-primary ' +\n 'focus-within:ring-offset-2 focus-within:ring-offset-background';\n\n const border = this.isInvalid() ? ' border-danger' : '';\n const ring = this.isInvalid() ? ' focus-within:ring-danger' : '';\n const disabled = this.isDisabled() ? ' opacity-60 pointer-events-none' : '';\n\n return `${base} ${this.sizeShell()} ${this.appearanceShell()}${border}${ring}${disabled} ${this.controlShellKlass()}`.trim();\n });\n\n readonly labelClasses = computed(() => `${this.labelKlass()} ${this.sizeLabel()}`.trim());\n}\n","<div [class]=\"rootKlass()\">\n @if (label()) {\n <label class=\"mb-1 block\" [class]=\"labelClasses()\">\n {{ label() }}\n @if (isRequired()) {\n <span [class]=\"requiredMarkKlass()\"> *</span>\n }\n </label>\n }\n\n <div [class]=\"controlShellClasses()\">\n <span [class]=\"prefixKlass()\">\n <ng-content select=\"[tngPrefix]\" />\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <ng-content />\n </div>\n\n <span [class]=\"suffixKlass()\">\n <ng-content select=\"[tngSuffix]\" />\n </span>\n </div>\n\n @if (showHint() || showError()) {\n <div [class]=\"footerKlass()\">\n @if (showError()) {\n <div [class]=\"errorKlass()\">{{ errorText() }}</div>\n } @else {\n <div [class]=\"hintKlass()\">{{ hint() }}</div>\n }\n </div>\n }\n</div>\n","import {\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'tng-number-input',\n standalone: true,\n templateUrl: './number-input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngNumberInput),\n multi: true,\n },\n ],\n})\nexport class TngNumberInput implements ControlValueAccessor {\n id = input<string>('');\n name = input<string>('');\n\n placeholder = input<string>('');\n klass = input<string>('');\n\n disabled = input(false);\n readonly = input(false);\n\n // For mobile keypad experience\n inputmode = input<'numeric' | 'decimal'>('decimal');\n autocomplete = input<string>('off');\n\n // numeric constraints\n min = input<number | null>(null);\n max = input<number | null>(null);\n step = input<number | 'any' | null>(null); // e.g. 1, 0.01, 'any'\n\n private readonly _value = signal<number | null>(null);\n readonly value = computed(() => this._value());\n\n private onChange: (value: number | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n writeValue(value: number | null): void {\n this._value.set(value ?? null);\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n classes = computed(() =>\n (\n `h-10 w-full rounded-md px-3 text-sm ` +\n `border border-border bg-bg text-foreground ` +\n `placeholder:text-muted ` +\n `focus-visible:outline-none ` +\n `focus-visible:ring-2 focus-visible:ring-primary ` +\n `focus-visible:ring-offset-2 focus-visible:ring-offset-background ` +\n `disabled:opacity-50 disabled:pointer-events-none ` +\n `read-only:bg-muted/30 read-only:text-muted ` +\n this.klass()\n ).trim(),\n );\n \n\n onInput(event: Event): void {\n const raw = (event.target as HTMLInputElement).value;\n\n // empty means null\n if (raw === '') {\n this._value.set(null);\n this.onChange(null);\n return;\n }\n\n const next = Number(raw);\n\n // protect forms from NaN\n if (Number.isNaN(next)) {\n this._value.set(null);\n this.onChange(null);\n return;\n }\n\n this._value.set(next);\n this.onChange(next);\n }\n\n onBlur(): void {\n // optional clamp on blur (Material doesn't clamp automatically, but it's often nice)\n const v = this._value();\n if (v !== null) {\n const min = this.min();\n const max = this.max();\n\n let clamped = v;\n if (min !== null) clamped = Math.max(min, clamped);\n if (max !== null) clamped = Math.min(max, clamped);\n\n if (clamped !== v) {\n this._value.set(clamped);\n this.onChange(clamped);\n }\n }\n\n this.onTouched();\n }\n}\n","<input\n type=\"number\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [class]=\"classes()\"\n [value]=\"value() ?? ''\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.autocomplete]=\"autocomplete() || null\"\n [attr.inputmode]=\"inputmode() || null\"\n [attr.min]=\"min() ?? null\"\n [attr.max]=\"max() ?? null\"\n [attr.step]=\"step() ?? null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n/>\n","import {\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'tng-radio-button',\n standalone: true,\n templateUrl: './radio-button.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngRadioButton),\n multi: true,\n },\n ],\n})\nexport class TngRadioButton implements ControlValueAccessor {\n readonly id = input<string>('');\n readonly name = input<string>('');\n\n readonly value = input.required<string>();\n readonly label = input<string>('');\n readonly disabled = input(false);\n readonly required = input(false);\n\n /* =====================\n * Theming / class hooks (section-wise)\n * ===================== */\n /** Root <label> */\n readonly rootKlass = input<string>(\n 'inline-flex items-center gap-2 cursor-pointer select-none'\n );\n\n /** <input type=\"radio\"> */\n readonly inputKlass = input<string>('');\n\n /** Label <span> */\n readonly labelKlass = input<string>('text-sm text-fg');\n\n private readonly _formValue = signal<string | null>(null);\n readonly isChecked = computed(() => this._formValue() === this.value());\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n writeValue(value: string | null): void {\n this._formValue.set(value ?? null);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /** Final classes */\n readonly classes = computed(() =>\n (\n // size + shape\n `h-4 w-4 rounded-full ` +\n // theme tokens\n `border border-border bg-bg ` +\n `accent-primary ` +\n // focus ring\n `focus-visible:outline-none ` +\n `focus-visible:ring-2 focus-visible:ring-primary ` +\n `focus-visible:ring-offset-2 focus-visible:ring-offset-background ` +\n // disabled\n `disabled:opacity-50 disabled:pointer-events-none ` +\n // user override\n this.inputKlass()\n ).trim()\n );\n\n onSelect(event: Event): void {\n if (this.isDisabled()) return;\n\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this._formValue.set(this.value());\n this.onChange(this.value());\n this.onTouched();\n }\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<label [class]=\"rootKlass()\">\n <input\n type=\"radio\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [class]=\"classes()\"\n (change)=\"onSelect($event)\"\n (blur)=\"onBlur()\"\n />\n\n @if (label()) {\n <span [class]=\"labelKlass()\">\n {{ label() }}\n </span>\n }\n</label>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ContentChild,\n ElementRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n TngConnectedOverlay,\n TngOptionList,\n TngOverlayPanel,\n TngOverlayRef,\n type TngOverlayCloseReason,\n} from '@tociva/tailng-ui/popups-overlays';\n\nimport { OptionTplContext } from '@tociva/tailng-cdk/util';\n\nexport type SelectCloseReason = TngOverlayCloseReason;\nexport type SelectValueTplContext<T> = { $implicit: T };\n\n@Component({\n selector: 'tng-select',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TngConnectedOverlay,\n TngOverlayPanel,\n TngOptionList,\n TngOverlayRef,\n ],\n templateUrl: './select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngSelect),\n multi: true,\n },\n ],\n})\nexport class TngSelect<T> implements ControlValueAccessor {\n /* =====================\n * Projected templates\n * ===================== */\n\n @ContentChild('optionTpl', { read: TemplateRef })\n optionTpl?: TemplateRef<OptionTplContext<T>>;\n\n @ContentChild('valueTpl', { read: TemplateRef })\n valueTpl?: TemplateRef<SelectValueTplContext<T>>;\n\n @ViewChild('triggerEl', { static: true })\n triggerEl!: ElementRef<HTMLElement>;\n\n // Delegate list navigation keys to OptionList\n @ViewChild(TngOptionList)\n optionList?: TngOptionList<T>;\n\n /* =====================\n * Inputs / Outputs\n * ===================== */\n readonly options = input<T[]>([]);\n readonly value = input<T | null>(null);\n readonly placeholder = input<string>('Select…');\n\n readonly disabled = input<boolean>(false);\n\n readonly displayWith = input<(item: T) => string>((v) => String(v));\n\n readonly selected = output<T>();\n readonly closed = output<SelectCloseReason>();\n\n /* =====================\n * Theming\n * ===================== */\n readonly rootKlass = input<string>('relative');\n\n readonly triggerKlass = input<string>(\n [\n 'w-full',\n 'flex items-center justify-between',\n 'border border-border rounded-md',\n 'px-3 py-2',\n 'text-sm',\n 'bg-bg text-fg',\n 'focus:outline-none',\n 'focus:ring-2 focus:ring-primary',\n ].join(' ')\n );\n\n readonly valueKlass = input<string>('truncate text-left');\n readonly placeholderKlass = input<string>('text-disable');\n readonly iconKlass = input<string>('ml-2 text-disable');\n\n /* =====================\n * State\n * ===================== */\n readonly isOpen = signal(false);\n readonly activeIndex = signal<number>(-1);\n\n protected readonly isDisabled = signal(false);\n\n private readonly selectedValue = signal<T | null>(null);\n private usingCva = false;\n\n /* =====================\n * CVA\n * ===================== */\n private onChange: (value: T | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n this.isDisabled.set(this.disabled());\n if (this.isDisabled()) this.close('programmatic');\n });\n\n effect(() => {\n const v = this.value();\n if (this.usingCva) return;\n this.selectedValue.set(v);\n });\n }\n\n writeValue(value: T | null): void {\n this.usingCva = true;\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.usingCva = true;\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n if (isDisabled) this.close('programmatic');\n }\n\n /* =====================\n * Helpers\n * ===================== */\n display(item: T | null): string {\n return item == null ? '' : this.displayWith()(item);\n }\n\n currentValue(): T | null {\n return this.selectedValue();\n }\n\n readonly triggerClasses = computed(() =>\n (this.triggerKlass() + (this.isDisabled() ? ' opacity-60 pointer-events-none' : '')).trim()\n );\n\n /* =====================\n * Overlay state\n * ===================== */\n open(_reason: SelectCloseReason) {\n if (this.isDisabled()) return;\n\n this.isOpen.set(true);\n\n const current = this.selectedValue();\n if (current != null) {\n const idx = this.options().indexOf(current);\n this.activeIndex.set(idx >= 0 ? idx : 0);\n } else {\n this.activeIndex.set(this.options().length ? 0 : -1);\n }\n\n void _reason;\n }\n\n close(reason: SelectCloseReason) {\n if (!this.isOpen()) return;\n\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n this.closed.emit(reason);\n\n queueMicrotask(() => {\n this.triggerEl.nativeElement.focus();\n });\n }\n\n onOverlayOpenChange(open: boolean) {\n if (this.isDisabled()) {\n this.isOpen.set(false);\n return;\n }\n\n if (open) this.open('programmatic');\n else this.close('programmatic');\n }\n\n onOverlayClosed(reason: SelectCloseReason) {\n this.close(reason);\n }\n\n /* =====================\n * UI Events\n * ===================== */\n onTriggerClick() {\n if (this.isDisabled()) return;\n this.isOpen() ? this.close('programmatic') : this.open('programmatic');\n }\n\n onBlur() {\n this.onTouched();\n // minimal safer blur (prevents weird immediate refocus issues)\n queueMicrotask(() => {\n if (document.activeElement === this.triggerEl.nativeElement) return;\n this.close('blur');\n });\n }\n\n onKeydown(ev: KeyboardEvent) {\n if (this.isDisabled()) return;\n\n // Escape closes\n if (ev.key === 'Escape' && this.isOpen()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close('escape');\n return;\n }\n\n // Open on ArrowDown/ArrowUp when closed (and delegate once mounted)\n if (!this.isOpen() && (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.open('programmatic');\n\n requestAnimationFrame(() => {\n const replay = this.cloneKeyboardEvent(ev);\n this.optionList?.onKeydown(replay);\n });\n return;\n }\n\n if (!this.isOpen()) return;\n\n // Delegate list-navigation keys to OptionList (including Enter)\n if (!this.isListNavigationKey(ev)) return;\n\n // WARNING: DO NOT preventDefault here — OptionList ignores defaultPrevented events\n ev.stopPropagation();\n this.optionList?.onKeydown(ev);\n }\n\n private isListNavigationKey(ev: KeyboardEvent): boolean {\n switch (ev.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'PageDown':\n case 'PageUp':\n case 'Enter':\n return true;\n default:\n return false;\n }\n }\n\n private cloneKeyboardEvent(ev: KeyboardEvent): KeyboardEvent {\n return new KeyboardEvent(ev.type, {\n key: ev.key,\n code: ev.code,\n location: ev.location,\n repeat: ev.repeat,\n ctrlKey: ev.ctrlKey,\n shiftKey: ev.shiftKey,\n altKey: ev.altKey,\n metaKey: ev.metaKey,\n bubbles: true,\n cancelable: true,\n });\n }\n\n /* =====================\n * OptionList wiring\n * ===================== */\n onActiveIndexChange(i: number) {\n this.activeIndex.set(i);\n }\n\n requestSelectActive() {\n const i = this.activeIndex();\n const item = this.options()[i];\n if (item !== undefined) this.select(item);\n }\n\n /* =====================\n * Selection\n * ===================== */\n select(item: T) {\n if (this.isDisabled()) return;\n\n this.selectedValue.set(item);\n\n this.onChange(item);\n this.onTouched();\n\n this.selected.emit(item);\n\n this.close('selection');\n }\n}\n","<div [class]=\"rootKlass()\">\n <!-- Trigger -->\n <button\n #triggerEl\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n >\n <span [class]=\"valueKlass()\">\n @if (currentValue()) {\n @if (valueTpl) {\n <ng-container\n [ngTemplateOutlet]=\"valueTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: currentValue()! }\"\n />\n } @else {\n {{ display(currentValue()) }}\n }\n } @else {\n <span [class]=\"placeholderKlass()\">{{ placeholder() }}</span>\n }\n </span>\n\n <span [class]=\"iconKlass()\">▾</span>\n </button>\n\n <!-- Overlay -->\n <tng-overlay-ref\n #overlayRef=\"tngOverlayRef\"\n [open]=\"isOpen()\"\n (openChange)=\"onOverlayOpenChange($event)\"\n (closed)=\"onOverlayClosed($event)\"\n >\n <tng-connected-overlay\n [open]=\"overlayRef.isOpen()\"\n [anchor]=\"triggerEl\"\n placement=\"bottom-start\"\n width=\"anchor\"\n (closed)=\"overlayRef.close($event)\"\n >\n <tng-overlay-panel>\n <tng-option-list\n [items]=\"options()\"\n [activeIndex]=\"activeIndex()\"\n [displayWith]=\"displayWith()\"\n [optionTemplate]=\"optionTpl ?? null\"\n [loop]=\"false\"\n [typeahead]=\"false\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n (requestSelectActive)=\"requestSelectActive()\"\n (optionMouseDown)=\"select($event.item)\"\n (optionHover)=\"activeIndex.set($event)\"\n />\n </tng-overlay-panel>\n </tng-connected-overlay>\n </tng-overlay-ref>\n</div>\n","import {\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'tng-slider',\n standalone: true,\n templateUrl: './slider.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngSlider),\n multi: true,\n },\n ],\n})\nexport class TngSlider implements ControlValueAccessor {\n // ids\n readonly id = input<string>('');\n readonly name = input<string>('');\n\n // label / accessibility\n readonly ariaLabel = input<string>('Slider');\n\n // slider config\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n\n // disabled\n readonly disabled = input(false);\n\n /**\n * Controlled usage (Angular 21 signals):\n * <tng-slider [value]=\"v()\" (valueChange)=\"v.set($event)\" />\n *\n * When `value` is provided (not null), it becomes the source of truth.\n */\n readonly value = input<number | null>(null);\n readonly valueChange = output<number>();\n\n // theming / section-wise klass hooks\n readonly rootKlass = input<string>('w-full');\n readonly labelKlass = input<string>('text-sm text-fg');\n readonly trackKlass = input<string>(''); // base track\n readonly fillKlass = input<string>(''); // filled part\n readonly thumbKlass = input<string>(''); // thumb\n readonly rangeKlass = input<string>(''); // native input\n\n private readonly _value = signal(0);\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** effective value: controlled `value` wins when provided */\n readonly currentValue = computed(() => {\n const controlled = this.value();\n return controlled ?? this._value();\n });\n\n readonly clampedValue = computed(() => {\n const min = this.min();\n const max = this.max();\n const v = this.currentValue();\n return Math.min(max, Math.max(min, v));\n });\n\n readonly percent = computed(() => {\n const min = this.min();\n const max = this.max();\n const v = this.clampedValue();\n\n const span = max - min;\n if (span <= 0) return 0;\n\n return ((v - min) / span) * 100;\n });\n\n // classes (Tailng theme tokens)\n readonly trackClasses = computed(() => {\n const base =\n 'relative h-2 w-full rounded-full border border-primary bg-on-primary';\n\n const disabled = this.isDisabled() ? ' opacity-60 pointer-events-none' : '';\n return `${base}${disabled} ${this.trackKlass()}`.trim();\n });\n\n readonly fillClasses = computed(() => {\n const base = 'absolute left-0 top-0 h-full rounded-full bg-primary';\n return `${base} ${this.fillKlass()}`.trim();\n });\n\n readonly thumbClasses = computed(() => {\n const base =\n 'absolute top-1/2 -translate-y-1/2 h-4 w-4 rounded-full bg-primary border border-primary ' +\n 'shadow transition-transform';\n\n const disabled = this.isDisabled() ? ' opacity-60 pointer-events-none' : '';\n return `${base}${disabled} ${this.thumbKlass()}`.trim();\n });\n\n readonly rangeClasses = computed(() => {\n // make native range invisible but still interactive + keyboard accessible\n const base =\n 'absolute inset-0 h-full w-full cursor-pointer opacity-0 ' +\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary ' +\n 'focus-visible:ring-offset-2 focus-visible:ring-offset-background';\n\n const disabled = this.isDisabled() ? ' cursor-not-allowed' : '';\n return `${base}${disabled} ${this.rangeKlass()}`.trim();\n });\n\n /* =====================\n * CVA\n * ===================== */\n writeValue(value: number | null): void {\n this._value.set(value ?? this.min());\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /* =====================\n * Events\n * ===================== */\n onInput(ev: Event) {\n if (this.isDisabled()) return;\n\n const raw = (ev.target as HTMLInputElement).value;\n const next = Number(raw);\n\n // internal (CVA path)\n this._value.set(next);\n this.onChange(next);\n\n // controlled (signal) path\n this.valueChange.emit(next);\n }\n\n onBlur() {\n this.onTouched();\n }\n}\n","<div [class]=\"rootKlass()\">\n <!-- Visual slider -->\n <div class=\"relative w-full h-6\">\n <!-- Track -->\n <div [class]=\"trackClasses()\">\n <!-- Fill -->\n <div\n [class]=\"fillClasses()\"\n [style.width.%]=\"percent()\"\n ></div>\n\n <!-- Thumb -->\n <div\n [class]=\"thumbClasses()\"\n [style.left.%]=\"percent()\"\n style=\"transform: translate(-50%, -50%);\"\n ></div>\n\n <!-- Native range (interactive) -->\n <input\n type=\"range\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"clampedValue()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [class]=\"rangeClasses()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n </div>\n\n <!-- Value (optional simple display; remove if you don't want it) -->\n <div class=\"mt-1 text-xs text-disable\">\n {{ clampedValue() }}\n </div>\n</div>\n","import {\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'tng-slide-toggle',\n standalone: true,\n templateUrl: './slide-toggle.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngSlideToggle),\n multi: true,\n },\n ],\n})\nexport class TngSlideToggle implements ControlValueAccessor {\n // ids\n readonly id = input<string>('');\n readonly name = input<string>('');\n\n // texts\n readonly label = input<string>('');\n readonly disabled = input(false);\n readonly required = input(false);\n\n // allow controlled usage (signals) in addition to CVA\n readonly checked = input<boolean | null>(null);\n readonly checkedChange = output<boolean>();\n\n // theming / class hooks (section-wise)\n readonly rootKlass = input<string>('inline-flex items-center gap-2 select-none');\n readonly trackKlass = input<string>('');\n readonly thumbKlass = input<string>('');\n readonly labelKlass = input<string>('text-sm text-fg');\n readonly inputKlass = input<string>('sr-only');\n\n private readonly _value = signal(false);\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** effective value: controlled `checked` wins when provided */\n readonly value = computed(() => (this.checked() ?? this._value()));\n\n writeValue(value: boolean | null): void {\n this._value.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n readonly trackClasses = computed(() => {\n const base =\n 'relative inline-flex h-6 w-11 items-center rounded-full border transition-colors duration-200 ' +\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary ' +\n 'focus-visible:ring-offset-2 focus-visible:ring-offset-background';\n \n const stateOn = 'bg-primary border-primary';\n const stateOff = 'bg-on-primary border-primary';\n \n const disabled = this.isDisabled() ? ' opacity-60 pointer-events-none' : '';\n const state = this.value() ? stateOn : stateOff;\n \n return `${base} ${state}${disabled} ${this.trackKlass()}`.trim();\n });\n\n readonly thumbClasses = computed(() => {\n const base =\n 'inline-block h-5 w-5 rounded-full shadow transition-transform duration-200';\n \n const posOn = 'translate-x-5';\n const posOff = 'translate-x-1';\n \n const colorOn = 'bg-on-primary';\n const colorOff = 'bg-primary';\n \n const pos = this.value() ? posOn : posOff;\n const color = this.value() ? colorOn : colorOff;\n \n return `${base} ${pos} ${color} ${this.thumbKlass()}`.trim();\n });\n \n onToggle(ev: Event): void {\n if (this.isDisabled()) return;\n\n const next = (ev.target as HTMLInputElement).checked;\n\n // internal (CVA path)\n this._value.set(next);\n this.onChange(next);\n this.onTouched();\n\n // controlled usage (signal binding path)\n this.checkedChange.emit(next);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<label [class]=\"rootKlass()\">\n <input\n type=\"checkbox\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [checked]=\"value()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [class]=\"inputKlass()\"\n (change)=\"onToggle($event)\"\n (blur)=\"onBlur()\"\n />\n\n <span [class]=\"trackClasses()\" role=\"switch\" [attr.aria-checked]=\"value()\">\n <span [class]=\"thumbClasses()\"></span>\n </span>\n\n @if (label()) {\n <span [class]=\"labelKlass()\">\n {{ label() }}\n </span>\n }\n</label>\n","import {\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'tng-textarea',\n standalone: true,\n templateUrl: './textarea.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngTextarea),\n multi: true,\n },\n ],\n})\nexport class TngTextarea implements ControlValueAccessor {\n placeholder = input<string>('');\n disabled = input(false);\n rows = input<number>(4);\n klass = input<string>('');\n\n private readonly _value = signal<string>('');\n readonly value = computed(() => this._value());\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string | null): void {\n this._value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n classes = computed(() =>\n (\n `w-full rounded-md border border-gray-300 px-3 py-2 text-sm ` +\n `focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary ` +\n `disabled:opacity-50 disabled:pointer-events-none ${this.klass()}`\n ).trim(),\n );\n\n onInput(event: Event) {\n const next = (event.target as HTMLTextAreaElement).value;\n this._value.set(next);\n this.onChange(next);\n }\n\n onBlur() {\n this.onTouched();\n }\n}\n\n","<textarea\n [disabled]=\"isDisabled()\"\n [placeholder]=\"placeholder()\"\n [rows]=\"rows()\"\n [class]=\"classes()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n></textarea>\n\n","import {\n Component,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'tng-text-input',\n standalone: true,\n templateUrl: './text-input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngTextInput),\n multi: true,\n },\n ],\n})\nexport class TngTextInput implements ControlValueAccessor {\n /* ─────────────────────────\n * Inputs (public API)\n * ───────────────────────── */\n id = input<string>('');\n name = input<string>('');\n\n placeholder = input<string>('');\n\n type = input<'text' | 'email' | 'password' | 'search' | 'tel' | 'url'>('text');\n\n disabled = input(false);\n readonly = input(false);\n\n autocomplete = input<string>('off');\n inputmode = input<string>('text');\n\n minlength = input<number | null>(null);\n maxlength = input<number | null>(null);\n pattern = input<string | null>(null);\n\n /**\n * Prefix: non-clickable by default (safer UX).\n * If you want clickable prefix, set prefixClickable=true and use a <button tngPrefix>.\n */\n prefixClickable = input<boolean>(false);\n\n /* ─────────────────────────\n * Klass hooks (theming)\n * ───────────────────────── */\n rootKlass = input<string>('');\n inputKlass = input<string>('');\n prefixKlass = input<string>('');\n suffixKlass = input<string>('');\n\n /* ─────────────────────────\n * Internal value handling\n * ───────────────────────── */\n private readonly _value = signal<string>('');\n readonly value = computed(() => this._value());\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /* ─────────────────────────\n * Disabled state (forms + input)\n * ───────────────────────── */\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /* ─────────────────────────\n * ControlValueAccessor\n * ───────────────────────── */\n writeValue(value: string | null): void {\n this._value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /* ─────────────────────────\n * Klass finals (defaults + overrides)\n * ───────────────────────── */\n readonly rootKlassFinal = computed(() =>\n this.join(\n 'flex h-10 w-full items-center rounded-md border border-border bg-bg text-foreground',\n 'focus-within:border-transparent',\n 'focus-within:ring-2 focus-within:ring-primary',\n 'focus-within:ring-offset-1 focus-within:ring-offset-background',\n this.isDisabled() ? 'pointer-events-none opacity-50' : '',\n this.readonly() ? 'bg-muted/30 text-muted' : '',\n this.rootKlass(),\n ),\n );\n\n readonly inputKlassFinal = computed(() =>\n this.join(\n 'h-full min-w-0 flex-1 bg-transparent px-3 text-sm outline-none placeholder:text-muted',\n this.inputKlass(),\n ),\n );\n\n readonly prefixKlassFinal = computed(() =>\n this.join(\n // spacing is provided by projected element classes; wrapper stays minimal\n this.prefixClickable() ? '' : 'pointer-events-none',\n this.prefixKlass(),\n ),\n );\n\n readonly suffixKlassFinal = computed(() =>\n this.join(\n this.suffixKlass(),\n ),\n );\n\n /* ─────────────────────────\n * IME-safe input handling\n * ───────────────────────── */\n private composing = false;\n\n onCompositionStart(): void {\n this.composing = true;\n }\n\n onCompositionEnd(event: Event): void {\n this.composing = false;\n this.commitValue(event);\n }\n\n onInput(event: Event): void {\n if (this.composing) return;\n this.commitValue(event);\n }\n\n private commitValue(event: Event): void {\n const next = (event.target as HTMLInputElement).value;\n this._value.set(next);\n this.onChange(next);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n private join(...parts: Array<string | null | undefined>): string {\n return parts.map((p) => (p ?? '').trim()).filter(Boolean).join(' ');\n }\n}","<div [class]=\"rootKlassFinal()\">\n <span [class]=\"prefixKlassFinal()\">\n <ng-content select=\"[tngPrefix]\"></ng-content>\n </span>\n\n <input\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocomplete()\"\n [class]=\"inputKlassFinal()\"\n [value]=\"value()\"\n [attr.inputmode]=\"inputmode() || null\"\n [attr.minlength]=\"minlength() ?? null\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.pattern]=\"pattern() ?? null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd($event)\"\n />\n\n <span [class]=\"suffixKlassFinal()\">\n <ng-content select=\"[tngSuffix]\"></ng-content>\n </span>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tng-timepicker',\n standalone: true,\n templateUrl: './timepicker.component.html',\n})\nexport class TngTimepicker {\n // Welcome hello component - placeholder for Timepicker\n}\n\n","<div class=\"p-4 border border-gray-200 rounded-md\">\n <p class=\"text-gray-600\">Welcome hello component - Timepicker</p>\n</div>\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|