@tailng-ui/components 0.13.0 → 0.15.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.
Files changed (184) hide show
  1. package/package.json +3 -2
  2. package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -1
  3. package/src/lib/feedback/empty/tng-empty.component.js +0 -5
  4. package/src/lib/feedback/empty/tng-empty.component.js.map +1 -1
  5. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -1
  6. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +0 -1
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -1
  8. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -1
  9. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +0 -1
  10. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -1
  11. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -1
  12. package/src/lib/feedback/skeleton/tng-skeleton.component.js +0 -1
  13. package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -1
  14. package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
  15. package/src/lib/feedback/toast/tng-toast.component.js +0 -1
  16. package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
  17. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -1
  18. package/src/lib/form/autocomplete/tng-autocomplete.component.js +0 -1
  19. package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -1
  20. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +2 -2
  21. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -1
  22. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +0 -1
  23. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -1
  24. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -1
  25. package/src/lib/form/button-toggle/tng-button-toggle.component.js +0 -1
  26. package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -1
  27. package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -1
  28. package/src/lib/form/checkbox/tng-checkbox.component.js +0 -1
  29. package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -1
  30. package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
  31. package/src/lib/form/chips/tng-chips.component.js +0 -1
  32. package/src/lib/form/chips/tng-chips.component.js.map +1 -1
  33. package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -1
  34. package/src/lib/form/combobox/tng-combobox.component.js +0 -1
  35. package/src/lib/form/combobox/tng-combobox.component.js.map +1 -1
  36. package/src/lib/form/datepicker/tng-datepicker.component.d.ts +236 -0
  37. package/src/lib/form/datepicker/tng-datepicker.component.d.ts.map +1 -0
  38. package/src/lib/form/datepicker/tng-datepicker.component.js +684 -0
  39. package/src/lib/form/datepicker/tng-datepicker.component.js.map +1 -0
  40. package/src/lib/form/index.d.ts +2 -0
  41. package/src/lib/form/index.d.ts.map +1 -1
  42. package/src/lib/form/index.js +2 -0
  43. package/src/lib/form/index.js.map +1 -1
  44. package/src/lib/form/input/tng-input.component.d.ts.map +1 -1
  45. package/src/lib/form/input/tng-input.component.js +0 -1
  46. package/src/lib/form/input/tng-input.component.js.map +1 -1
  47. package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -1
  48. package/src/lib/form/input-otp/tng-input-otp.component.js +0 -1
  49. package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -1
  50. package/src/lib/form/label/tng-label.component.d.ts.map +1 -1
  51. package/src/lib/form/label/tng-label.component.js +0 -1
  52. package/src/lib/form/label/tng-label.component.js.map +1 -1
  53. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -1
  54. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +0 -1
  55. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -1
  56. package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -1
  57. package/src/lib/form/multiselect/tng-multiselect.component.js +0 -1
  58. package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -1
  59. package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
  60. package/src/lib/form/radio/tng-radio.component.js +0 -1
  61. package/src/lib/form/radio/tng-radio.component.js.map +1 -1
  62. package/src/lib/form/select/tng-select.component.d.ts.map +1 -1
  63. package/src/lib/form/select/tng-select.component.js +0 -1
  64. package/src/lib/form/select/tng-select.component.js.map +1 -1
  65. package/src/lib/form/select/tng-select.slots.d.ts.map +1 -1
  66. package/src/lib/form/select/tng-select.slots.js +0 -2
  67. package/src/lib/form/select/tng-select.slots.js.map +1 -1
  68. package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -1
  69. package/src/lib/form/slider/tng-slider.component.js +0 -1
  70. package/src/lib/form/slider/tng-slider.component.js.map +1 -1
  71. package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -1
  72. package/src/lib/form/switch/tng-switch.component.js +0 -1
  73. package/src/lib/form/switch/tng-switch.component.js.map +1 -1
  74. package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
  75. package/src/lib/form/textarea/tng-textarea.component.js +0 -1
  76. package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
  77. package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -1
  78. package/src/lib/form/toggle/tng-toggle.component.js +0 -1
  79. package/src/lib/form/toggle/tng-toggle.component.js.map +1 -1
  80. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -1
  81. package/src/lib/form/toggle-group/tng-toggle-group.component.js +0 -1
  82. package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -1
  83. package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -1
  84. package/src/lib/layout/accordion/tng-accordion.component.js +0 -4
  85. package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -1
  86. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -1
  87. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +0 -1
  88. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -1
  89. package/src/lib/layout/card/tng-card.component.d.ts +1 -1
  90. package/src/lib/layout/card/tng-card.component.d.ts.map +1 -1
  91. package/src/lib/layout/card/tng-card.component.js +0 -10
  92. package/src/lib/layout/card/tng-card.component.js.map +1 -1
  93. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -1
  94. package/src/lib/layout/collapsible/tng-collapsible.component.js +0 -1
  95. package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -1
  96. package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -1
  97. package/src/lib/layout/drawer/tng-drawer.component.js +0 -1
  98. package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -1
  99. package/src/lib/layout/grid/tng-grid.component.d.ts +4 -1
  100. package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -1
  101. package/src/lib/layout/grid/tng-grid.component.js +101 -5
  102. package/src/lib/layout/grid/tng-grid.component.js.map +1 -1
  103. package/src/lib/layout/index.d.ts +1 -1
  104. package/src/lib/layout/index.d.ts.map +1 -1
  105. package/src/lib/layout/index.js +1 -1
  106. package/src/lib/layout/index.js.map +1 -1
  107. package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -1
  108. package/src/lib/layout/separator/tng-separator.component.js +0 -1
  109. package/src/lib/layout/separator/tng-separator.component.js.map +1 -1
  110. package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -1
  111. package/src/lib/layout/stepper/tng-stepper.component.js +0 -1
  112. package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -1
  113. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
  114. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +0 -1
  115. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
  116. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -1
  117. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +0 -1
  118. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -1
  119. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -1
  120. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +0 -1
  121. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -1
  122. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -1
  123. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +0 -1
  124. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -1
  125. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -1
  126. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +0 -1
  127. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -1
  128. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -1
  129. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +0 -1
  130. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -1
  131. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -1
  132. package/src/lib/navigation/context-menu/tng-context-menu.component.js +0 -1
  133. package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -1
  134. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -1
  135. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +0 -1
  136. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -1
  137. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -1
  138. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +0 -1
  139. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -1
  140. package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -1
  141. package/src/lib/navigation/menu/tng-menu.component.js +0 -1
  142. package/src/lib/navigation/menu/tng-menu.component.js.map +1 -1
  143. package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -1
  144. package/src/lib/navigation/menubar/tng-menubar.component.js +0 -1
  145. package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -1
  146. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -1
  147. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +0 -1
  148. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -1
  149. package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -1
  150. package/src/lib/navigation/tabs/tng-tabs.component.js +0 -1
  151. package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -1
  152. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -1
  153. package/src/lib/navigation/toolbar/tng-toolbar.component.js +0 -1
  154. package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -1
  155. package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -1
  156. package/src/lib/overlay/dialog/tng-dialog.component.js +0 -1
  157. package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -1
  158. package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
  159. package/src/lib/overlay/popover/tng-popover.component.js +0 -1
  160. package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
  161. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
  162. package/src/lib/overlay/tooltip/tng-tooltip.component.js +0 -1
  163. package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
  164. package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
  165. package/src/lib/utility/avatar/tng-avatar.component.js +0 -1
  166. package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
  167. package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -1
  168. package/src/lib/utility/badge/tng-badge.component.js +0 -1
  169. package/src/lib/utility/badge/tng-badge.component.js.map +1 -1
  170. package/src/lib/utility/button/tng-button.component.d.ts.map +1 -1
  171. package/src/lib/utility/button/tng-button.component.js +0 -1
  172. package/src/lib/utility/button/tng-button.component.js.map +1 -1
  173. package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -1
  174. package/src/lib/utility/code-block/tng-code-block.component.js +0 -1
  175. package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -1
  176. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -1
  177. package/src/lib/utility/copy-button/tng-copy-button.component.js +0 -1
  178. package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -1
  179. package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
  180. package/src/lib/utility/tag/tng-tag.component.js +0 -1
  181. package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
  182. package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -1
  183. package/src/lib/utility/tree/tng-tree.component.js +0 -1
  184. package/src/lib/utility/tree/tng-tree.component.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-datepicker.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/datepicker/tng-datepicker.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ElementRef,\n HostBinding,\n LOCALE_ID,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\nimport type { OnDestroy } from '@angular/core';\nimport {\n computeOverlayPosition,\n type TngOverlayCollisionOptions,\n type TngOverlayOffset,\n type TngOverlayPlacement,\n} from '@tailng-ui/cdk';\nimport {\n createDatepickerController,\n type TngCalendarView,\n type TngDateCell,\n type TngDateAdapter,\n type TngDateInputValue,\n type TngDateSelectionInput,\n type TngDateValue,\n type TngDatepickerCloseReason,\n type TngDatepickerDirection,\n type TngDatepickerOutputs,\n type TngDatepickerSelectionMode,\n type TngMonthOption,\n type TngWeekdayIndex,\n type TngYearOption,\n} from '@tailng-ui/primitives';\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\ntype TngDatepickerPlacement = 'auto' | 'bottom' | 'top';\n\ntype MaybeRect = Readonly<{\n height: number;\n left: number;\n top: number;\n width: number;\n}>;\n\nconst OVERLAY_VIEWPORT_MARGIN = 12;\nconst OVERLAY_OFFSET = 9;\n\nfunction rectFromClientRect(rect: DOMRect | ClientRect): MaybeRect {\n return {\n height: rect.height,\n left: rect.left,\n top: rect.top,\n width: rect.width,\n };\n}\n\nfunction viewportRect(windowRef: Window): MaybeRect {\n return {\n height: windowRef.innerHeight || 768,\n left: 0,\n top: 0,\n width: windowRef.innerWidth || 1024,\n };\n}\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\nfunction normalizeNumberInput(value: number | string): number {\n return typeof value === 'number' ? value : Number(value);\n}\n\nfunction normalizeWeekdayInput(value: TngWeekdayIndex | number | string): TngWeekdayIndex {\n const normalized = Math.max(0, Math.min(6, Math.trunc(normalizeNumberInput(value))));\n return normalized as TngWeekdayIndex;\n}\n\nfunction isKeyboardEventTarget(value: EventTarget | null): value is HTMLElement {\n return value instanceof HTMLElement;\n}\n\nlet nextDatepickerInputId = 0;\n\nfunction createDatepickerInputId(): string {\n nextDatepickerInputId += 1;\n return `tng-datepicker-input-${nextDatepickerInputId}`;\n}\n\n@Component({\n selector: 'tng-datepicker',\n templateUrl: './tng-datepicker.component.html',\n styleUrl: './tng-datepicker.component.css',\n})\nexport class TngDatepickerComponent<TDate = Date> implements OnDestroy {\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly defaultLocale = inject(LOCALE_ID);\n private readonly fallbackInputId = createDatepickerInputId();\n private readonly ownerDocument = this.hostElement.nativeElement.ownerDocument ?? null;\n private readonly ownerWindow = this.ownerDocument?.defaultView ?? null;\n private readonly renderVersion = signal(0);\n private readonly overlayOpen = signal(false);\n private readonly resolvedOverlayPlacement = signal<'bottom' | 'top'>('bottom');\n private readonly anchorRef = viewChild<ElementRef<HTMLElement>>('anchorShell');\n private readonly triggerRef = viewChild<ElementRef<HTMLElement>>('triggerButton');\n private readonly overlayRef = viewChild<ElementRef<HTMLElement>>('overlayPanel');\n private overlayPlaceholder: Comment | null = null;\n private overlayOriginalParent: Node | null = null;\n private removeResizeListener: (() => void) | null = null;\n private removeScrollListener: (() => void) | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private overlayLayoutFrame: number | null = null;\n private appliedInitialState = false;\n private readonly controller = createDatepickerController<TDate>({\n allowManualInput: true,\n autoCommitView: false,\n closeOnEscape: true,\n closeOnOutsideClick: true,\n closeOnSelect: true,\n locale: this.defaultLocale,\n ownerDocument: this.ownerDocument,\n restoreFocus: true,\n showOutsideDays: true,\n trapFocus: true,\n value: null,\n });\n private readonly unsubscribe = this.controller.subscribe((event) => {\n this.renderVersion.update((value) => value + 1);\n\n switch (event.type) {\n case 'activeChange':\n this.activeDateChange.emit(event.activeDate);\n break;\n case 'closed':\n this.overlayOpen.set(false);\n this.openChange.emit(false);\n this.closed.emit(event.reason);\n break;\n case 'monthChange':\n this.monthChange.emit(event.visibleMonth);\n break;\n case 'opened':\n this.overlayOpen.set(true);\n this.openChange.emit(true);\n this.queueOverlayFocusSync();\n break;\n case 'valueChange':\n this.valueChange.emit(event.value);\n break;\n case 'viewChange':\n this.viewChange.emit(event.view);\n break;\n case 'yearChange':\n this.yearChange.emit(event.year);\n break;\n }\n });\n\n public readonly adapter = input<TngDateAdapter<TDate> | undefined>(undefined);\n public readonly allowDeselect = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly allowManualInput = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly ariaLabel = input<string | null>(null);\n public readonly ariaLabelledBy = input<string | null>(null);\n public readonly autoCommitView = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsideClick = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnSelect = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOthersOnOpen = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly defaultOpen = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly defaultValue = input<TngDateSelectionInput<TDate> | undefined>(undefined);\n public readonly direction = input<TngDatepickerDirection>('ltr');\n public readonly disableDate = input<((date: TDate) => boolean) | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly fullWidth = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly id = input<string | null>(null);\n public readonly inputAriaLabel = input<string>('Date input');\n public readonly invalid = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly locale = input<string>(this.defaultLocale);\n public readonly maxDate = input<TngDateInputValue<TDate> | undefined>(undefined);\n public readonly minDate = input<TngDateInputValue<TDate> | undefined>(undefined);\n public readonly open = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n transform: normalizeOptionalBooleanInput,\n });\n public readonly overlaySize = input<number, number | string>(320, {\n transform: normalizeNumberInput,\n });\n public readonly placement = input<TngDatepickerPlacement>('auto');\n public readonly placeholder = input<string>('MM-DD-YYYY');\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly restoreFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly selectionMode = input<TngDatepickerSelectionMode>('single');\n public readonly showOutsideDays = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly today = input<TngDateInputValue<TDate> | undefined>(undefined);\n public readonly trapFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly value = input<TngDateSelectionInput<TDate> | undefined>(undefined);\n public readonly weekStartsOn = input<TngWeekdayIndex, TngWeekdayIndex | number | string>(0, {\n transform: normalizeWeekdayInput,\n });\n public readonly yearPageSize = input<number, number | string>(24, {\n transform: normalizeNumberInput,\n });\n\n public readonly activeDateChange = output<TDate>();\n public readonly closed = output<TngDatepickerCloseReason>();\n public readonly monthChange = output<TDate>();\n public readonly openChange = output<boolean>();\n public readonly valueChange = output<TngDateValue<TDate>>();\n public readonly viewChange = output<TngCalendarView>();\n public readonly yearChange = output<number>();\n\n protected readonly outputs = computed(() => {\n this.renderVersion();\n return this.controller.getOutputs();\n });\n\n protected readonly invalidState = computed(\n () => this.invalid() || this.outputs().validationError !== null,\n );\n protected readonly currentOverlayPlacement = computed(() => this.resolvedOverlayPlacement());\n\n protected readonly materialPeriodLabel = computed(() => {\n const outputs = this.outputs();\n if (outputs.view === 'year') {\n const startYear = outputs.yearOptions[0]?.year;\n const endYear = outputs.yearOptions[outputs.yearOptions.length - 1]?.year;\n if (startYear !== undefined && endYear !== undefined) {\n return `${startYear} - ${endYear}`;\n }\n }\n\n if (outputs.view === 'month') {\n return this.controller.formatDate(outputs.visibleMonth, 'year-label');\n }\n\n return outputs.labelMonthYear;\n });\n\n @HostBinding('attr.data-full-width')\n protected get dataFullWidth(): '' | null {\n return this.fullWidth() ? '' : null;\n }\n\n public constructor() {\n effect(() => {\n const trigger = this.triggerRef()?.nativeElement ?? null;\n this.controller.registerTrigger(trigger);\n });\n\n effect(() => {\n const overlay = this.overlayRef()?.nativeElement ?? null;\n this.controller.registerOverlay(overlay);\n this.initializeOverlayPortal(overlay);\n this.renderVersion.update((value) => value + 1);\n });\n\n effect(() => {\n const overlay = this.overlayRef()?.nativeElement;\n if (overlay === undefined) {\n return;\n }\n\n if (this.overlayOpen()) {\n this.mountOverlayToBodyAndPosition();\n return;\n }\n\n this.restoreOverlayToPlaceholder();\n });\n\n effect(() => {\n this.placement();\n this.direction();\n this.overlaySize();\n\n if (!this.overlayOpen()) {\n return;\n }\n\n this.scheduleOverlayLayoutSync();\n });\n\n effect(() => {\n this.controller.setConfig({\n adapter: this.adapter(),\n allowDeselect: this.allowDeselect(),\n allowManualInput: this.allowManualInput(),\n ariaDescribedBy: this.ariaDescribedBy(),\n ariaLabel: this.ariaLabel(),\n ariaLabelledBy: this.ariaLabelledBy(),\n autoCommitView: this.autoCommitView(),\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsideClick: this.closeOnOutsideClick(),\n closeOnSelect: this.closeOnSelect(),\n closeOthersOnOpen: this.closeOthersOnOpen(),\n direction: this.direction(),\n disableDate: this.disableDate() ?? undefined,\n disabled: this.disabled(),\n id: this.id() ?? undefined,\n locale: this.locale(),\n maxDate: this.maxDate(),\n minDate: this.minDate(),\n overlaySize: this.overlaySize(),\n ownerDocument: this.ownerDocument,\n restoreFocus: this.restoreFocus(),\n selectionMode: this.selectionMode(),\n showOutsideDays: this.showOutsideDays(),\n today: this.today(),\n trapFocus: this.trapFocus(),\n weekStartsOn: this.weekStartsOn(),\n yearPageSize: this.yearPageSize(),\n });\n\n const controlledValue = this.value();\n if (controlledValue !== undefined) {\n this.controller.setValue(controlledValue);\n }\n\n const controlledOpen = this.open();\n const currentOpen = this.controller.getOutputs().open;\n if (controlledOpen !== undefined) {\n this.controller.setOpen(controlledOpen);\n }\n\n if (!this.appliedInitialState) {\n if (controlledValue === undefined && this.defaultValue() !== undefined) {\n this.controller.setValue(this.defaultValue() as TngDateSelectionInput<TDate>);\n }\n\n if (controlledOpen === undefined && this.defaultOpen()) {\n this.controller.setOpen(true);\n }\n\n this.appliedInitialState = true;\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (this.overlayLayoutFrame !== null && this.ownerWindow !== null) {\n this.ownerWindow.cancelAnimationFrame(this.overlayLayoutFrame);\n this.overlayLayoutFrame = null;\n }\n\n this.teardownOverlayRepositionListeners();\n this.restoreOverlayToPlaceholder(true);\n this.unsubscribe();\n this.controller.destroy();\n }\n\n public clear(): void {\n this.controller.clear();\n this.controller.showDaysPanel();\n this.queueOverlayFocusSync();\n }\n\n public close(reason: TngDatepickerCloseReason = 'programmatic'): void {\n this.controller.close(reason);\n }\n\n public openDatepicker(): void {\n this.controller.open();\n }\n\n public showDaysPanel(): void {\n this.controller.showDaysPanel();\n this.queueOverlayFocusSync();\n }\n\n public showMonthsPanel(): void {\n this.controller.showMonthsPanel();\n this.queueOverlayFocusSync();\n }\n\n public showYearsPanel(): void {\n this.controller.showYearsPanel();\n this.queueOverlayFocusSync();\n }\n\n public toggleOpen(): void {\n this.controller.toggleOpen();\n }\n\n protected resolveInputId(): string {\n const id = this.id()?.trim();\n if (id !== undefined && id !== '') {\n return `${id}-input`;\n }\n\n return this.fallbackInputId;\n }\n\n protected isDayView(): boolean {\n return this.outputs().view === 'day';\n }\n\n protected isMonthView(): boolean {\n return this.outputs().view === 'month';\n }\n\n protected isYearView(): boolean {\n return this.outputs().view === 'year';\n }\n\n protected onDayCellClick(cell: Readonly<TngDateCell<TDate>>): void {\n if (cell.disabled || cell.hidden) {\n return;\n }\n\n this.controller.handleCellClick(cell.date);\n }\n\n protected onInputBlur(): void {\n if (!this.allowManualInput()) {\n return;\n }\n\n this.controller.commitInputText();\n this.renderVersion.update((value) => value + 1);\n }\n\n protected onInputChange(event: Event): void {\n if (!this.allowManualInput()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n this.controller.setInputText(target.value);\n this.renderVersion.update((value) => value + 1);\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' && this.allowManualInput()) {\n event.preventDefault();\n this.controller.commitInputText();\n this.renderVersion.update((value) => value + 1);\n return;\n }\n\n if (event.key === 'ArrowDown' && !this.outputs().open) {\n event.preventDefault();\n this.controller.open();\n }\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n this.controller.handleGridKeyDown(event);\n if (this.shouldSyncOverlayFocusAfterPickerKey(event.key)) {\n this.queueOverlayFocusSync();\n }\n }\n\n protected onMonthKeydown(event: KeyboardEvent): void {\n this.controller.handleMonthGridKeyDown(event);\n if (this.isPickerActivationKey(event.key)) {\n this.controller.showDaysPanel();\n }\n if (this.shouldSyncOverlayFocusAfterPickerKey(event.key)) {\n this.queueOverlayFocusSync();\n }\n }\n\n protected onMonthOptionClick(option: Readonly<TngMonthOption<TDate>>): void {\n if (option.disabled) {\n return;\n }\n\n this.controller.selectMonth(option.index);\n this.controller.showDaysPanel();\n this.queueOverlayFocusSync();\n }\n\n protected onOverlayKeydown(event: KeyboardEvent): void {\n this.controller.handleOverlayKeyDown(event);\n }\n\n protected onTriggerClick(): void {\n if (this.disabled()) {\n return;\n }\n\n this.controller.toggleOpen();\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n this.controller.handleTriggerKeyDown(event);\n }\n\n protected onPeriodButtonClick(): void {\n if (this.isYearView()) {\n return;\n }\n\n this.controller.showYearsPanel();\n this.queueOverlayFocusSync();\n }\n\n protected onYearKeydown(event: KeyboardEvent): void {\n this.controller.handleYearGridKeyDown(event);\n if (this.isPickerActivationKey(event.key)) {\n this.controller.showMonthsPanel();\n }\n if (this.shouldSyncOverlayFocusAfterPickerKey(event.key)) {\n this.queueOverlayFocusSync();\n }\n }\n\n protected onYearOptionClick(option: Readonly<TngYearOption<TDate>>): void {\n if (option.disabled) {\n return;\n }\n\n this.controller.selectYear(option.year);\n this.controller.showMonthsPanel();\n this.queueOverlayFocusSync();\n }\n\n protected pageBackward(): void {\n if (this.isDayView()) {\n this.controller.prevMonth();\n this.queueOverlayFocusSync();\n return;\n }\n\n if (this.isMonthView() || this.isYearView()) {\n this.controller.prevYear();\n this.queueOverlayFocusSync();\n return;\n }\n }\n\n protected pageForward(): void {\n if (this.isDayView()) {\n this.controller.nextMonth();\n this.queueOverlayFocusSync();\n return;\n }\n\n if (this.isMonthView() || this.isYearView()) {\n this.controller.nextYear();\n this.queueOverlayFocusSync();\n return;\n }\n }\n\n private queueOverlayFocusSync(): void {\n this.scheduleOverlayLayoutSync();\n\n queueMicrotask(() => {\n const focusActiveTarget = (): void => {\n const outputs = this.outputs();\n if (!outputs.open || this.ownerDocument === null) {\n return;\n }\n\n const targetId = this.resolveCurrentFocusTargetId(outputs);\n if (targetId === null) {\n return;\n }\n\n const target = this.ownerDocument.getElementById(targetId);\n if (!isKeyboardEventTarget(target)) {\n return;\n }\n\n target.focus();\n };\n\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n focusActiveTarget();\n });\n return;\n }\n\n setTimeout(() => {\n focusActiveTarget();\n }, 0);\n });\n }\n\n private resolveCurrentFocusTargetId(outputs: TngDatepickerOutputs<TDate>): string | null {\n if (outputs.view === 'day') {\n return outputs.cells.find((cell) => cell.active)?.id ?? null;\n }\n\n if (outputs.view === 'month') {\n return outputs.monthOptions.find((option) => option.active)?.id ?? null;\n }\n\n if (outputs.view === 'year') {\n return outputs.yearOptions.find((option) => option.active)?.id ?? null;\n }\n\n return null;\n }\n\n private shouldSyncOverlayFocusAfterPickerKey(key: string): boolean {\n return (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight' ||\n key === 'Home' ||\n key === 'End' ||\n key === 'PageUp' ||\n key === 'PageDown' ||\n key === 'Enter' ||\n key === ' ' ||\n key === 'Escape'\n );\n }\n\n private isPickerActivationKey(key: string): boolean {\n return key === 'Enter' || key === ' ';\n }\n\n private scheduleOverlayLayoutSync(): void {\n if (!this.overlayOpen() || this.ownerWindow === null) {\n return;\n }\n\n if (this.overlayLayoutFrame !== null) {\n this.ownerWindow.cancelAnimationFrame(this.overlayLayoutFrame);\n }\n\n this.overlayLayoutFrame = this.ownerWindow.requestAnimationFrame(() => {\n this.overlayLayoutFrame = null;\n this.positionOverlay();\n });\n }\n\n private initializeOverlayPortal(overlay: HTMLElement | null): void {\n if (overlay === null || this.overlayPlaceholder !== null) {\n return;\n }\n\n const placeholderDocument = this.ownerDocument ?? document;\n this.overlayPlaceholder = placeholderDocument.createComment('tng-datepicker-overlay-anchor');\n this.overlayOriginalParent = overlay.parentNode;\n this.overlayOriginalParent?.insertBefore(this.overlayPlaceholder, overlay);\n }\n\n private positionOverlay(): void {\n const overlay = this.overlayRef()?.nativeElement;\n const anchor = this.anchorRef()?.nativeElement;\n if (overlay === undefined || anchor === undefined || this.ownerWindow === null) {\n return;\n }\n\n const anchorRect = rectFromClientRect(anchor.getBoundingClientRect());\n const viewport = viewportRect(this.ownerWindow);\n const width = Math.max(\n 0,\n Math.min(anchorRect.width, viewport.width - OVERLAY_VIEWPORT_MARGIN * 2),\n );\n\n overlay.style.width = `${width}px`;\n overlay.style.maxWidth = `${Math.max(0, viewport.width - OVERLAY_VIEWPORT_MARGIN * 2)}px`;\n overlay.style.maxHeight = '';\n\n const overlayRect = rectFromClientRect(overlay.getBoundingClientRect());\n const result = computeOverlayPosition({\n anchorRect,\n collision: this.resolveOverlayCollision(this.placement()),\n direction: this.direction(),\n offset: this.resolveOverlayOffset(),\n overlayRect,\n placement: this.resolveOverlayPlacement(this.placement()),\n viewportRect: viewport,\n });\n\n overlay.style.left = `${result.x}px`;\n overlay.style.top = `${result.y}px`;\n\n const anchorBottom = anchorRect.top + anchorRect.height;\n const availableHeight =\n result.side === 'top'\n ? Math.max(0, Math.floor(anchorRect.top - OVERLAY_VIEWPORT_MARGIN - OVERLAY_OFFSET))\n : Math.max(\n 0,\n Math.floor(viewport.height - anchorBottom - OVERLAY_VIEWPORT_MARGIN - OVERLAY_OFFSET),\n );\n\n if (availableHeight > 0) {\n overlay.style.maxHeight = `${availableHeight}px`;\n }\n\n this.resolvedOverlayPlacement.set(result.side === 'top' ? 'top' : 'bottom');\n overlay.style.visibility = '';\n }\n\n private mountOverlayToBodyAndPosition(): void {\n const overlay = this.overlayRef()?.nativeElement;\n if (overlay === undefined || this.ownerDocument === null) {\n return;\n }\n\n this.initializeOverlayPortal(overlay);\n this.setupOverlayRepositionListeners();\n\n if (overlay.parentNode !== this.ownerDocument.body) {\n this.ownerDocument.body.appendChild(overlay);\n }\n\n overlay.style.position = 'fixed';\n overlay.style.left = '0px';\n overlay.style.top = '0px';\n overlay.style.visibility = 'hidden';\n overlay.style.zIndex = '1000';\n\n queueMicrotask(() => {\n if (!this.overlayOpen()) {\n return;\n }\n\n this.positionOverlay();\n });\n }\n\n private restoreOverlayToPlaceholder(force = false): void {\n const overlay = this.overlayRef()?.nativeElement;\n if (overlay === undefined) {\n return;\n }\n\n if (!force && overlay.parentNode !== this.ownerDocument?.body) {\n return;\n }\n\n const placeholder = this.overlayPlaceholder;\n if (placeholder?.parentNode !== null && placeholder !== null) {\n placeholder.parentNode.insertBefore(overlay, placeholder);\n } else if (this.overlayOriginalParent !== null) {\n this.overlayOriginalParent.appendChild(overlay);\n }\n\n this.teardownOverlayRepositionListeners();\n this.resolvedOverlayPlacement.set(this.placement() === 'top' ? 'top' : 'bottom');\n overlay.style.left = '';\n overlay.style.maxHeight = '';\n overlay.style.maxWidth = '';\n overlay.style.position = '';\n overlay.style.top = '';\n overlay.style.visibility = '';\n overlay.style.width = '';\n overlay.style.zIndex = '';\n }\n\n private setupOverlayRepositionListeners(): void {\n if (this.ownerWindow === null || this.removeResizeListener !== null || this.removeScrollListener !== null) {\n return;\n }\n\n const schedule = (): void => {\n this.scheduleOverlayLayoutSync();\n };\n\n this.ownerWindow.addEventListener('resize', schedule);\n this.ownerWindow.addEventListener('scroll', schedule, true);\n this.removeResizeListener = () => this.ownerWindow?.removeEventListener('resize', schedule);\n this.removeScrollListener = () => this.ownerWindow?.removeEventListener('scroll', schedule, true);\n\n if ('ResizeObserver' in this.ownerWindow) {\n this.resizeObserver = new this.ownerWindow.ResizeObserver(() => {\n this.scheduleOverlayLayoutSync();\n });\n\n const anchor = this.anchorRef()?.nativeElement;\n if (anchor !== undefined) {\n this.resizeObserver.observe(anchor);\n }\n\n const overlay = this.overlayRef()?.nativeElement;\n if (overlay !== undefined) {\n this.resizeObserver.observe(overlay);\n }\n }\n }\n\n private teardownOverlayRepositionListeners(): void {\n this.removeResizeListener?.();\n this.removeScrollListener?.();\n this.removeResizeListener = null;\n this.removeScrollListener = null;\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n }\n\n private resolveOverlayCollision(\n placement: TngDatepickerPlacement,\n ): TngOverlayCollisionOptions {\n return {\n flip: placement === 'auto',\n padding: OVERLAY_VIEWPORT_MARGIN,\n shift: true,\n };\n }\n\n private resolveOverlayOffset(): TngOverlayOffset {\n return { side: OVERLAY_OFFSET };\n }\n\n private resolveOverlayPlacement(placement: TngDatepickerPlacement): TngOverlayPlacement {\n return {\n align: 'start',\n side: placement === 'top' ? 'top' : 'bottom',\n };\n }\n}\n"]}
@@ -10,6 +10,8 @@ export * from './chips/tng-chips.component';
10
10
  export { TngChipsComponent } from './chips/tng-chips.component';
11
11
  export * from './combobox/tng-combobox.component';
12
12
  export { TngComboboxComponent } from './combobox/tng-combobox.component';
13
+ export * from './datepicker/tng-datepicker.component';
14
+ export { TngDatepickerComponent } from './datepicker/tng-datepicker.component';
13
15
  export * from './input/tng-input.component';
14
16
  export { TngInputComponent } from './input/tng-input.component';
15
17
  export * from './input-otp';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACjG,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAC,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACjG,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAC,MAAM,2CAA2C,CAAC"}
@@ -10,6 +10,8 @@ export * from './chips/tng-chips.component';
10
10
  export { TngChipsComponent } from './chips/tng-chips.component';
11
11
  export * from './combobox/tng-combobox.component';
12
12
  export { TngComboboxComponent } from './combobox/tng-combobox.component';
13
+ export * from './datepicker/tng-datepicker.component';
14
+ export { TngDatepickerComponent } from './datepicker/tng-datepicker.component';
13
15
  export * from './input/tng-input.component';
14
16
  export { TngInputComponent } from './input/tng-input.component';
15
17
  export * from './input-otp';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACjG,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAC,MAAM,2CAA2C,CAAC","sourcesContent":["export * from './autocomplete/tng-autocomplete.component';\nexport { TngAutocompleteComponent } from './autocomplete/tng-autocomplete.component';\nexport * from './button-toggle/tng-button-toggle.component';\nexport { TngButtonToggleComponent } from './button-toggle/tng-button-toggle.component';\nexport * from './button-toggle/tng-button-toggle-group.component';\nexport { TngButtonToggleGroupComponent} from './button-toggle/tng-button-toggle-group.component';\nexport * from './checkbox/tng-checkbox.component';\nexport { TngCheckboxComponent} from './checkbox/tng-checkbox.component';\nexport * from './chips/tng-chips.component';\nexport { TngChipsComponent} from './chips/tng-chips.component';\nexport * from './combobox/tng-combobox.component';\nexport { TngComboboxComponent} from './combobox/tng-combobox.component';\nexport * from './input/tng-input.component';\nexport { TngInputComponent} from './input/tng-input.component';\nexport * from './input-otp';\nexport { TngInputOtpComponent } from './input-otp';\nexport * from './label/tng-label.component';\nexport { TngLabelComponent} from './label/tng-label.component';\nexport * from './multi-autocomplete/tng-multi-autocomplete.component';\nexport { TngMultiAutocompleteComponent } from './multi-autocomplete/tng-multi-autocomplete.component';\nexport * from './multiselect/tng-multiselect.component';\nexport { TngMultiSelectComponent } from './multiselect/tng-multiselect.component';\nexport * from './radio/tng-radio.component';\nexport { TngRadioComponent} from './radio/tng-radio.component';\nexport * from './select/tng-select.component';\nexport { TngSelectComponent} from './select/tng-select.component';\nexport * from './slider/tng-slider.component';\nexport { TngSliderComponent} from './slider/tng-slider.component';\nexport * from './switch/tng-switch.component';\nexport { TngSwitchComponent} from './switch/tng-switch.component';\nexport * from './textarea/tng-textarea.component';\nexport { TngTextareaComponent} from './textarea/tng-textarea.component';\nexport * from './toggle/tng-toggle.component';\nexport { TngToggleComponent} from './toggle/tng-toggle.component';\nexport * from './toggle-group/tng-toggle-group.component';\nexport { TngToggleGroupComponent} from './toggle-group/tng-toggle-group.component';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAC,MAAM,mDAAmD,CAAC;AACjG,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACxE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAC,MAAM,2CAA2C,CAAC","sourcesContent":["export * from './autocomplete/tng-autocomplete.component';\nexport { TngAutocompleteComponent } from './autocomplete/tng-autocomplete.component';\nexport * from './button-toggle/tng-button-toggle.component';\nexport { TngButtonToggleComponent } from './button-toggle/tng-button-toggle.component';\nexport * from './button-toggle/tng-button-toggle-group.component';\nexport { TngButtonToggleGroupComponent} from './button-toggle/tng-button-toggle-group.component';\nexport * from './checkbox/tng-checkbox.component';\nexport { TngCheckboxComponent} from './checkbox/tng-checkbox.component';\nexport * from './chips/tng-chips.component';\nexport { TngChipsComponent} from './chips/tng-chips.component';\nexport * from './combobox/tng-combobox.component';\nexport { TngComboboxComponent} from './combobox/tng-combobox.component';\nexport * from './datepicker/tng-datepicker.component';\nexport { TngDatepickerComponent } from './datepicker/tng-datepicker.component';\nexport * from './input/tng-input.component';\nexport { TngInputComponent} from './input/tng-input.component';\nexport * from './input-otp';\nexport { TngInputOtpComponent } from './input-otp';\nexport * from './label/tng-label.component';\nexport { TngLabelComponent} from './label/tng-label.component';\nexport * from './multi-autocomplete/tng-multi-autocomplete.component';\nexport { TngMultiAutocompleteComponent } from './multi-autocomplete/tng-multi-autocomplete.component';\nexport * from './multiselect/tng-multiselect.component';\nexport { TngMultiSelectComponent } from './multiselect/tng-multiselect.component';\nexport * from './radio/tng-radio.component';\nexport { TngRadioComponent} from './radio/tng-radio.component';\nexport * from './select/tng-select.component';\nexport { TngSelectComponent} from './select/tng-select.component';\nexport * from './slider/tng-slider.component';\nexport { TngSliderComponent} from './slider/tng-slider.component';\nexport * from './switch/tng-switch.component';\nexport { TngSwitchComponent} from './switch/tng-switch.component';\nexport * from './textarea/tng-textarea.component';\nexport { TngTextareaComponent} from './textarea/tng-textarea.component';\nexport * from './toggle/tng-toggle.component';\nexport { TngToggleComponent} from './toggle/tng-toggle.component';\nexport * from './toggle-group/tng-toggle-group.component';\nexport { TngToggleGroupComponent} from './toggle-group/tng-toggle-group.component';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-input.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input/tng-input.component.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExE,qBAOa,iBAAiB;IAC5B,SAAgB,UAAU,0DAAwC;IAClE,SAAgB,IAAI,oDAA6B;IACjD,SAAgB,IAAI,oDAAkC;IAEtD,2DAA2D;IAC3D,SAAgB,SAAS,8EAEtB;IAGH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;IAGvD,SAAS,KAAK,cAAc,IAAI,kBAAkB,CAEjD;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,CAErC;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,CAErC;IAGD,SAAS,KAAK,aAAa,IAAI,EAAE,GAAG,IAAI,CAEvC;CACF"}
1
+ {"version":3,"file":"tng-input.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input/tng-input.component.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExE,qBAMa,iBAAiB;IAC5B,SAAgB,UAAU,0DAAwC;IAClE,SAAgB,IAAI,oDAA6B;IACjD,SAAgB,IAAI,oDAAkC;IAEtD,2DAA2D;IAC3D,SAAgB,SAAS,8EAEtB;IAGH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;IAGvD,SAAS,KAAK,cAAc,IAAI,kBAAkB,CAEjD;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,CAErC;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,CAErC;IAGD,SAAS,KAAK,aAAa,IAAI,EAAE,GAAG,IAAI,CAEvC;CACF"}
@@ -42,7 +42,6 @@ __decorate([
42
42
  TngInputComponent = __decorate([
43
43
  Component({
44
44
  selector: 'tng-input',
45
- standalone: true,
46
45
  imports: [TngInputGroup, TngInputLeading, TngInputTrailing],
47
46
  templateUrl: './tng-input.component.html',
48
47
  styleUrl: './tng-input.component.css',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-input.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input/tng-input.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAalF,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,UAAU,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,CAAe,IAAI,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,CAAe,SAAS,CAAC,CAAC;IAEtD,2DAA2D;IAC3C,SAAS,GAAG,KAAK,CAA4B,IAAI,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAGgB,QAAQ,GAAG,eAAwB,CAAC;IAGvD,IAAc,cAAc;QAC1B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;CACF,CAAA;AArBoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;mDACyB;AAGvD;IADC,WAAW,CAAC,sBAAsB,CAAC;uDAGnC;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;iDAG7B;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;iDAG7B;AAGD;IADC,WAAW,CAAC,sBAAsB,CAAC;sDAGnC;AA/BU,iBAAiB;IAP7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC;QAC3D,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAgC7B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\n\nimport { TngInputGroup, TngInputLeading, TngInputTrailing } from '@tailng-ui/primitives';\n\nexport type TngInputAppearance = 'outline' | 'solid' | 'ghost';\nexport type TngInputSize = 'sm' | 'md' | 'lg';\nexport type TngInputTone = 'neutral' | 'primary' | 'success' | 'danger';\n\n@Component({\n selector: 'tng-input',\n standalone: true,\n imports: [TngInputGroup, TngInputLeading, TngInputTrailing],\n templateUrl: './tng-input.component.html',\n styleUrl: './tng-input.component.css',\n})\nexport class TngInputComponent {\n public readonly appearance = input<TngInputAppearance>('outline');\n public readonly size = input<TngInputSize>('md');\n public readonly tone = input<TngInputTone>('neutral');\n\n /** Default true so forms look consistent out-of-the-box */\n public readonly fullWidth = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'input-wrapper' as const;\n\n @HostBinding('attr.data-appearance')\n protected get dataAppearance(): TngInputAppearance {\n return this.appearance();\n }\n\n @HostBinding('attr.data-size')\n protected get dataSize(): TngInputSize {\n return this.size();\n }\n\n @HostBinding('attr.data-tone')\n protected get dataTone(): TngInputTone {\n return this.tone();\n }\n\n @HostBinding('attr.data-full-width')\n protected get dataFullWidth(): '' | null {\n return this.fullWidth() ? '' : null;\n }\n}\n"]}
1
+ {"version":3,"file":"tng-input.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input/tng-input.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAYlF,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,UAAU,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,CAAe,IAAI,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,CAAe,SAAS,CAAC,CAAC;IAEtD,2DAA2D;IAC3C,SAAS,GAAG,KAAK,CAA4B,IAAI,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAGgB,QAAQ,GAAG,eAAwB,CAAC;IAGvD,IAAc,cAAc;QAC1B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,aAAa;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;CACF,CAAA;AArBoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;mDACyB;AAGvD;IADC,WAAW,CAAC,sBAAsB,CAAC;uDAGnC;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;iDAG7B;AAGD;IADC,WAAW,CAAC,gBAAgB,CAAC;iDAG7B;AAGD;IADC,WAAW,CAAC,sBAAsB,CAAC;sDAGnC;AA/BU,iBAAiB;IAN7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC;QAC3D,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAgC7B","sourcesContent":["import { Component, HostBinding, input } from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\n\nimport { TngInputGroup, TngInputLeading, TngInputTrailing } from '@tailng-ui/primitives';\n\nexport type TngInputAppearance = 'outline' | 'solid' | 'ghost';\nexport type TngInputSize = 'sm' | 'md' | 'lg';\nexport type TngInputTone = 'neutral' | 'primary' | 'success' | 'danger';\n\n@Component({\n selector: 'tng-input',\n imports: [TngInputGroup, TngInputLeading, TngInputTrailing],\n templateUrl: './tng-input.component.html',\n styleUrl: './tng-input.component.css',\n})\nexport class TngInputComponent {\n public readonly appearance = input<TngInputAppearance>('outline');\n public readonly size = input<TngInputSize>('md');\n public readonly tone = input<TngInputTone>('neutral');\n\n /** Default true so forms look consistent out-of-the-box */\n public readonly fullWidth = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'input-wrapper' as const;\n\n @HostBinding('attr.data-appearance')\n protected get dataAppearance(): TngInputAppearance {\n return this.appearance();\n }\n\n @HostBinding('attr.data-size')\n protected get dataSize(): TngInputSize {\n return this.size();\n }\n\n @HostBinding('attr.data-tone')\n protected get dataTone(): TngInputTone {\n return this.tone();\n }\n\n @HostBinding('attr.data-full-width')\n protected get dataFullWidth(): '' | null {\n return this.fullWidth() ? '' : null;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-input-otp.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input-otp/tng-input-otp.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tng-input-otp.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input-otp/tng-input-otp.component.ts"],"names":[],"mappings":"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"}
@@ -481,7 +481,6 @@ let TngInputOtpComponent = class TngInputOtpComponent {
481
481
  TngInputOtpComponent = __decorate([
482
482
  Component({
483
483
  selector: 'tng-input-otp',
484
- standalone: true,
485
484
  imports: [TngInputOtpPrimitive],
486
485
  templateUrl: './tng-input-otp.component.html',
487
486
  styleUrl: './tng-input-otp.component.css',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-input-otp.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input-otp/tng-input-otp.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,SAAS,EACT,QAAQ,EACR,MAAM,EACN,UAAU,EACV,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAwB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,IAAI,oBAAoB,GACpC,MAAM,uBAAuB,CAAC;AAK/B,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAElD,IAAI,0BAA0B,GAAG,CAAC,CAAC;AAEnC,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,IAAqB,EACrB,OAA+B;IAE/B,MAAM,eAAe,GACnB,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,OAAO,KAAK,IAAI;gBAChB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,cAAc,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QAED,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,SAAS;QACX,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAa;IACzD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9D,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,UAAkB,EAClB,UAA6B,EAC7B,SAAiB;IAEjB,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM;QACR,CAAC;QAED,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9B,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,KAAa;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,MAAc;IACnE,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QACnC,OAAO,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAc;IACjE,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,MAAc;IAClD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;QACxB,OAAO,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAgBM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACd,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7B,WAAW,GAAG,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;IACvE,aAAa,GAAwB,IAAI,CAAC;IAC1C,0BAA0B,GAAG,KAAK,CAAC;IAEnC,gBAAgB,GAA4B,GAAG,EAAE,CAAC,SAAS,CAAC;IAC5D,iBAAiB,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IAEvC,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,GAAG,KAAK,CAA0B,CAAC,EAAE;QACzD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAC5C,qBAAqB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3E,CAAC,CAAC;IACa,UAAU,GAAG,KAAK,CAA4B,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,CAAkB,SAAS,CAAC,CAAC;IACzC,OAAO,GAAG,KAAK,CAAyB,IAAI,CAAC,CAAC;IAE9C,IAAI,GAAG,KAAK,CAA4B,KAAK,EAAE;QAC7D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,aAAa,GAAG,KAAK,CAA4B,KAAK,EAAE;QACtE,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,OAAO,GAAG,KAAK,CAA4B,KAAK,EAAE;QAChE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAA4B,KAAK,EAAE;QAClE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,aAAa,GAAG,KAAK,CAA4B,IAAI,EAAE;QACrE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEa,eAAe,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAClC,EAAE,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAClC,YAAY,GAAG,KAAK,CAAS,eAAe,CAAC,CAAC;IAC9C,SAAS,GAAG,KAAK,CAA8B,IAAI,CAAC,CAAC;IACrD,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,cAAc,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAC5C,eAAe,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAE7C,WAAW,GAAG,MAAM,EAAU,CAAC;IAC/B,QAAQ,GAAG,MAAM,EAAU,CAAC;IAEzB,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACxE,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9C,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxD,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IAEvD,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEgB,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1E,eAAe,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAEzF,iBAAiB,GAAG,QAAQ,CAAuB,GAAG,EAAE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,CAAC,CAAC,CAAC;IAEgB,aAAa,GAAG,QAAQ,CAAsB,GAAG,EAAE,CACpE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAClC,CAAC;IAEe,qBAAqB,GAAG,MAAM,CAC7C,GAAG,EAAE;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAC1E,CAAC;YACJ,CAAC;YAED,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACrC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3E,IAAI,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC,CACF,CAAC;IAEK,eAAe;QACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEM,UAAU,CAAC,KAAoB;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,EAA2B;QACjD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC7B,CAAC;IAEM,iBAAiB,CAAC,EAAc;QACrC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEM,gBAAgB,CAAC,UAAmB;QACzC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,KAAiB;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,MAAM,YAAY,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;YAC/D,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAES,UAAU,CAAC,KAAiB;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC1C,IAAI,aAAa,YAAY,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QAED,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAES,aAAa,CAAC,KAAa,EAAE,KAAoB;QACzD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE5B,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,KAAY;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAM,IAAI,WAAW,CAAC;QACnE,MAAM,6BAA6B,GAAG,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;QAC3E,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,SAAS,GACb,sBAAsB,IAAI,6BAA6B;YACrD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,WAAW;gBAC/B,CAAC,CAAC,WAAW,GAAG,CAAC;gBACjB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5F,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,KAAqB;QACxD,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,wBAAwB,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClG,MAAM,SAAS,GACb,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAES,SAAS,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,IAAI,aAAa,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7D,CAAC;IAES,cAAc,CAAC,KAAa;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;IACtC,CAAC;IAEO,eAAe,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,SAAiB,EAAE,cAAsB;QAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,UAAU,KAAK,aAAa,CAAC;QAE/C,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAExE,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAElC,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,KAAK,UAAU,EAAE,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAAa;QACxC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC;QAEtD,IAAI,kBAAkB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAEO,SAAS,CAAC,KAAa,EAAE,MAAe;QAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CACnD,uBAAuB,SAAS,IAAI,CACrC,CAAC;QAEF,IAAI,CAAC,CAAC,IAAI,YAAY,gBAAgB,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,mBAAmB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAmB,qBAAqB,CAAC,CAAC;QACxG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YACtC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;QAC/D,MAAM,aAAa,GAAG,aAAa,EAAE,aAAa,CAAC;QACnD,OAAO,aAAa,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7F,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,uBAAuB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,SAAS,GACb,MAAM,KAAK,IAAI;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,CAAC,SAAS,YAAY,eAAe,CAAC,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;YACjE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA3dY,oBAAoB;IAdhC,SAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,+BAA+B;QACzC,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;gBACnD,KAAK,EAAE,IAAI;aACZ;SACF;KACF,CAAC;GACW,oBAAoB,CA2dhC","sourcesContent":["import {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n clampTngOtpValue,\n normalizeTngOtpLength,\n resolveTngOtpState,\n TngInputOtp as TngInputOtpPrimitive,\n} from '@tailng-ui/primitives';\n\nexport type TngInputOtpType = 'numeric' | 'alphanumeric' | 'custom';\nexport type TngInputOtpInputMode = 'numeric' | 'text' | 'tel' | 'decimal';\n\nconst tngOtpDigitPattern = /^\\d$/;\nconst tngOtpAlphanumericPattern = /^[a-zA-Z0-9]$/;\n\nlet tngInputOtpInstanceCounter = 0;\n\nfunction toNonGlobalRegex(pattern: RegExp): RegExp {\n const flags = pattern.flags.replace(/g/g, '');\n return new RegExp(pattern.source, flags);\n}\n\nexport function sanitizeTngOtpCharacters(\n value: string,\n mode: TngInputOtpType,\n pattern: string | RegExp | null,\n): readonly string[] {\n const compiledPattern =\n mode !== 'custom'\n ? null\n : typeof pattern === 'string'\n ? new RegExp(pattern)\n : pattern === null\n ? null\n : toNonGlobalRegex(pattern);\n\n const acceptedChars: string[] = [];\n for (const char of Array.from(value)) {\n if (mode === 'numeric' && !tngOtpDigitPattern.test(char)) {\n continue;\n }\n\n if (mode === 'alphanumeric' && !tngOtpAlphanumericPattern.test(char)) {\n continue;\n }\n\n if (compiledPattern && !compiledPattern.test(char)) {\n continue;\n }\n\n acceptedChars.push(char);\n }\n\n return acceptedChars;\n}\n\nexport function toTngOtpSlots(length: number, value: string): readonly string[] {\n const safeLength = normalizeTngOtpLength(length);\n const slots = Array.from({ length: safeLength }, () => '');\n const chars = Array.from(clampTngOtpValue(value, safeLength));\n\n for (const [index, char] of chars.entries()) {\n if (index >= safeLength) {\n break;\n }\n\n slots[index] = char;\n }\n\n return slots;\n}\n\nexport function applyTngOtpCharacters(\n value: string,\n startIndex: number,\n characters: readonly string[],\n maxLength: number,\n): string {\n const safeLength = normalizeTngOtpLength(maxLength);\n const nextChars = Array.from(clampTngOtpValue(value, safeLength));\n const safeStart = Math.max(0, Math.min(startIndex, safeLength - 1));\n\n let cursor = nextChars.length < safeLength ? Math.min(safeStart, nextChars.length) : safeStart;\n for (const char of characters) {\n if (cursor >= safeLength) {\n break;\n }\n\n if (cursor < nextChars.length) {\n nextChars[cursor] = char;\n } else {\n nextChars.push(char);\n }\n\n cursor += 1;\n }\n\n return nextChars.slice(0, safeLength).join('');\n}\n\nexport function removeTngOtpCharacter(value: string, index: number): string {\n const chars = Array.from(value);\n if (index < 0 || index >= chars.length) {\n return value;\n }\n\n chars.splice(index, 1);\n return chars.join('');\n}\n\nexport function resolveTngOtpEntryIndex(value: string, length: number): number {\n const safeLength = normalizeTngOtpLength(length);\n const safeValue = clampTngOtpValue(value, safeLength);\n if (safeValue.length >= safeLength) {\n return safeLength - 1;\n }\n\n return safeValue.length;\n}\n\nexport function resolveTngOtpEndIndex(value: string, length: number): number {\n const safeLength = normalizeTngOtpLength(length);\n const safeValue = clampTngOtpValue(value, safeLength);\n if (safeValue.length === 0) {\n return safeLength - 1;\n }\n\n return Math.max(0, safeValue.length - 1);\n}\n\nfunction clampOtpIndex(index: number, length: number): number {\n const safeLength = normalizeTngOtpLength(length);\n if (!Number.isFinite(index)) {\n return 0;\n }\n\n if (index < 0) {\n return 0;\n }\n\n if (index >= safeLength) {\n return safeLength - 1;\n }\n\n return Math.trunc(index);\n}\n\n@Component({\n selector: 'tng-input-otp',\n standalone: true,\n imports: [TngInputOtpPrimitive],\n templateUrl: './tng-input-otp.component.html',\n styleUrl: './tng-input-otp.component.css',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngInputOtpComponent),\n multi: true,\n },\n ],\n})\nexport class TngInputOtpComponent implements AfterViewInit, ControlValueAccessor {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly generatedId = `tng-input-otp-${++tngInputOtpInstanceCounter}`;\n private resetUnlisten: (() => void) | null = null;\n private hasInitializedUncontrolled = false;\n\n private onChangeCallback: (value: string) => void = () => undefined;\n private onTouchedCallback: () => void = () => undefined;\n\n private readonly uncontrolledValue = signal('');\n private readonly formsDisabled = signal(false);\n private readonly focusedState = signal(false);\n private readonly focusVisibleState = signal(false);\n private readonly keyboardInteraction = signal(false);\n private readonly activeIndexState = signal(0);\n\n public readonly length = input<number, number | string>(6, {\n transform: (value: number | string): number =>\n normalizeTngOtpLength(typeof value === 'number' ? value : Number(value)),\n });\n public readonly valueInput = input<string | null | undefined>(undefined, { alias: 'value' });\n public readonly defaultValue = input<string>('');\n public readonly type = input<TngInputOtpType>('numeric');\n public readonly pattern = input<string | RegExp | null>(null);\n\n public readonly mask = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabledInput = input<boolean, boolean | string>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly invalid = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly autoFocus = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly selectOnFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n public readonly placeholderChar = input<string>('');\n public readonly name = input<string | null>(null);\n public readonly id = input<string | null>(null);\n public readonly form = input<string | null>(null);\n public readonly autocomplete = input<string>('one-time-code');\n public readonly inputMode = input<TngInputOtpInputMode | null>(null);\n public readonly ariaLabel = input<string | null>(null);\n public readonly ariaLabelledby = input<string | null>(null);\n public readonly ariaDescribedby = input<string | null>(null);\n\n public readonly valueChange = output<string>();\n public readonly complete = output<string>();\n\n protected readonly disabled = computed(() => this.disabledInput() || this.formsDisabled());\n protected readonly focused = computed(() => this.focusedState());\n protected readonly focusVisible = computed(() => this.focusVisibleState());\n protected readonly activeIndex = computed(() => clampOtpIndex(this.activeIndexState(), this.length()));\n protected readonly rootId = computed(() => this.id() ?? this.generatedId);\n\n protected readonly currentValue = computed(() => {\n const controlled = this.valueInput();\n if (controlled !== undefined) {\n return this.normalizeAndClamp(controlled ?? '');\n }\n\n return this.normalizeAndClamp(this.uncontrolledValue());\n });\n\n protected readonly slots = computed(() => toTngOtpSlots(this.length(), this.currentValue()));\n protected readonly completionState = computed(() => resolveTngOtpState(this.length(), this.currentValue()));\n\n protected readonly resolvedInputMode = computed<TngInputOtpInputMode>(() => {\n const explicit = this.inputMode();\n if (explicit !== null) {\n return explicit;\n }\n\n return this.type() === 'numeric' ? 'numeric' : 'text';\n });\n\n protected readonly slotInputType = computed<'password' | 'text'>(() =>\n this.mask() ? 'password' : 'text',\n );\n\n private readonly syncUncontrolledState = effect(\n () => {\n const controlled = this.valueInput();\n const length = this.length();\n this.type();\n this.pattern();\n\n if (controlled !== undefined) {\n if (!this.focusedState()) {\n this.activeIndexState.set(\n resolveTngOtpEntryIndex(this.normalizeAndClamp(controlled ?? ''), length),\n );\n }\n\n return;\n }\n\n const normalizedDefault = this.normalizeAndClamp(this.defaultValue());\n if (!this.hasInitializedUncontrolled) {\n this.hasInitializedUncontrolled = true;\n this.uncontrolledValue.set(normalizedDefault);\n this.activeIndexState.set(resolveTngOtpEntryIndex(normalizedDefault, length));\n return;\n }\n\n const normalizedCurrent = this.normalizeAndClamp(this.uncontrolledValue());\n if (normalizedCurrent !== this.uncontrolledValue()) {\n this.uncontrolledValue.set(normalizedCurrent);\n }\n\n this.activeIndexState.update((index) => clampOtpIndex(index, length));\n },\n );\n\n public ngAfterViewInit(): void {\n this.attachFormResetListener();\n\n if (!this.autoFocus() || this.disabled()) {\n return;\n }\n\n queueMicrotask(() => {\n if (this.disabled()) {\n return;\n }\n\n this.focusSlot(resolveTngOtpEntryIndex(this.currentValue(), this.length()), this.selectOnFocus());\n });\n }\n\n public ngOnDestroy(): void {\n this.resetUnlisten?.();\n this.resetUnlisten = null;\n }\n\n public writeValue(value: string | null): void {\n const normalized = this.normalizeAndClamp(value ?? '');\n this.hasInitializedUncontrolled = true;\n this.uncontrolledValue.set(normalized);\n\n if (!this.focusedState()) {\n this.activeIndexState.set(resolveTngOtpEntryIndex(normalized, this.length()));\n }\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.onChangeCallback = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.formsDisabled.set(isDisabled);\n }\n\n protected onSlotPointerDown(): void {\n this.keyboardInteraction.set(false);\n }\n\n protected onSlotFocus(index: number, event: FocusEvent): void {\n const target = event.target;\n const nextIndex = this.resolveEditableIndex(index);\n this.activeIndexState.set(nextIndex);\n this.focusedState.set(true);\n\n if (target instanceof HTMLElement && target.matches(':focus-visible')) {\n this.focusVisibleState.set(true);\n } else {\n this.focusVisibleState.set(this.keyboardInteraction());\n }\n\n if (this.selectOnFocus() && target instanceof HTMLInputElement) {\n target.select();\n }\n }\n\n protected onSlotBlur(event: FocusEvent): void {\n const host = this.hostRef.nativeElement;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && host.contains(relatedTarget)) {\n return;\n }\n\n queueMicrotask(() => {\n if (this.isFocusWithinHost()) {\n return;\n }\n\n this.focusedState.set(false);\n this.focusVisibleState.set(false);\n this.onTouchedCallback();\n });\n }\n\n protected onSlotKeydown(index: number, event: KeyboardEvent): void {\n this.keyboardInteraction.set(true);\n\n const editableIndex = this.resolveEditableIndex(index);\n const total = this.length();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.focusSlot(Math.max(0, editableIndex - 1), true);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.focusSlot(Math.min(total - 1, editableIndex + 1), true);\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n this.focusSlot(0, true);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.focusSlot(resolveTngOtpEndIndex(this.currentValue(), total), true);\n return;\n }\n\n if (event.key === 'Backspace') {\n event.preventDefault();\n this.handleBackspace(editableIndex);\n return;\n }\n\n if (event.key === 'Delete') {\n event.preventDefault();\n this.handleDelete(editableIndex);\n return;\n }\n\n if ((this.disabled() || this.readonly()) && event.key.length === 1) {\n event.preventDefault();\n }\n }\n\n protected onSlotInput(index: number, event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n if (this.disabled() || this.readonly()) {\n target.value = this.slotValue(this.resolveEditableIndex(index));\n return;\n }\n\n const chars = sanitizeTngOtpCharacters(target.value, this.type(), this.pattern());\n if (chars.length === 0) {\n const nextValue = removeTngOtpCharacter(this.currentValue(), this.resolveEditableIndex(index));\n this.commitValue(nextValue, this.resolveEditableIndex(index));\n return;\n }\n\n const previousValue = this.currentValue();\n const totalLength = this.length();\n const editableIndex = this.resolveEditableIndex(index);\n const wasCompleteBeforeInput = previousValue.length >= totalLength;\n const wasReplacingExistingCharacter = editableIndex < previousValue.length;\n const nextValue = applyTngOtpCharacters(previousValue, editableIndex, chars, totalLength);\n const nextFocus =\n wasCompleteBeforeInput || wasReplacingExistingCharacter\n ? Math.min(totalLength - 1, editableIndex + chars.length)\n : nextValue.length >= totalLength\n ? totalLength - 1\n : Math.min(totalLength - 1, Math.max(editableIndex + chars.length, nextValue.length));\n\n this.commitValue(nextValue, nextFocus);\n }\n\n protected onSlotPaste(index: number, event: ClipboardEvent): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const clipboardValue = event.clipboardData?.getData('text') ?? '';\n const chars = sanitizeTngOtpCharacters(clipboardValue, this.type(), this.pattern());\n if (chars.length === 0) {\n event.preventDefault();\n return;\n }\n\n event.preventDefault();\n const editableIndex = this.resolveEditableIndex(index);\n const nextValue = applyTngOtpCharacters(this.currentValue(), editableIndex, chars, this.length());\n const nextFocus =\n nextValue.length >= this.length()\n ? this.length() - 1\n : Math.min(this.length() - 1, nextValue.length);\n\n this.commitValue(nextValue, nextFocus);\n }\n\n protected slotValue(index: number): string {\n const slot = this.slots()[index];\n return slot ?? '';\n }\n\n protected slotPlaceholder(index: number): string | null {\n if (this.placeholderChar().length === 0) {\n return null;\n }\n\n return this.slotValue(index) === '' ? this.placeholderChar() : null;\n }\n\n protected slotAriaLabel(index: number): string {\n const prefix = this.ariaLabel();\n const base = prefix?.trim() ? `${prefix.trim()} - ` : '';\n return `${base}Character ${index + 1} of ${this.length()}`;\n }\n\n protected isSlotTabbable(index: number): boolean {\n return this.activeIndex() === index;\n }\n\n private handleBackspace(index: number): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const currentValue = this.currentValue();\n if (currentValue.length === 0) {\n return;\n }\n\n if (index < currentValue.length) {\n const nextValue = removeTngOtpCharacter(currentValue, index);\n const nextFocus = Math.min(index, Math.max(0, nextValue.length));\n this.commitValue(nextValue, nextFocus);\n return;\n }\n\n const previousIndex = Math.max(0, currentValue.length - 1);\n const nextValue = removeTngOtpCharacter(currentValue, previousIndex);\n this.commitValue(nextValue, Math.max(0, previousIndex));\n }\n\n private handleDelete(index: number): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (index >= this.currentValue().length) {\n return;\n }\n\n const nextValue = removeTngOtpCharacter(this.currentValue(), index);\n this.commitValue(nextValue, index);\n }\n\n private commitValue(nextValue: string, nextFocusIndex: number): void {\n const previousValue = this.currentValue();\n const normalized = this.normalizeAndClamp(nextValue);\n const didChange = normalized !== previousValue;\n\n if (this.valueInput() === undefined) {\n this.uncontrolledValue.set(normalized);\n }\n\n this.activeIndexState.set(clampOtpIndex(nextFocusIndex, this.length()));\n\n if (didChange) {\n this.valueChange.emit(normalized);\n this.onChangeCallback(normalized);\n\n if (resolveTngOtpState(this.length(), normalized) === 'complete') {\n this.complete.emit(normalized);\n }\n }\n\n queueMicrotask(() => {\n this.syncSlotInputValues();\n if (!this.focusedState() && !this.isFocusWithinHost()) {\n return;\n }\n\n this.focusSlot(this.activeIndex(), this.selectOnFocus());\n });\n }\n\n private resolveEditableIndex(index: number): number {\n const safeIndex = clampOtpIndex(index, this.length());\n const currentValueLength = this.currentValue().length;\n\n if (currentValueLength >= this.length()) {\n return safeIndex;\n }\n\n return Math.min(safeIndex, currentValueLength);\n }\n\n private focusSlot(index: number, select: boolean): void {\n const safeIndex = clampOtpIndex(index, this.length());\n const slot = this.hostRef.nativeElement.querySelector<HTMLInputElement>(\n `[data-tng-otp-slot='${safeIndex}']`,\n );\n\n if (!(slot instanceof HTMLInputElement)) {\n return;\n }\n\n slot.focus();\n if (select) {\n slot.select();\n }\n\n this.activeIndexState.set(safeIndex);\n }\n\n private syncSlotInputValues(): void {\n const slotValues = this.slots();\n const slotInputs = this.hostRef.nativeElement.querySelectorAll<HTMLInputElement>('.tng-input-otp-slot');\n slotInputs.forEach((slotInput, index) => {\n slotInput.value = slotValues[index] ?? '';\n });\n }\n\n private isFocusWithinHost(): boolean {\n const ownerDocument = this.hostRef.nativeElement.ownerDocument;\n const activeElement = ownerDocument?.activeElement;\n return activeElement instanceof Node && this.hostRef.nativeElement.contains(activeElement);\n }\n\n private normalizeAndClamp(value: string): string {\n const chars = sanitizeTngOtpCharacters(value, this.type(), this.pattern());\n const safeLength = this.length();\n return chars.slice(0, safeLength).join('');\n }\n\n private attachFormResetListener(): void {\n const formId = this.form();\n const ownerForm =\n formId !== null\n ? this.hostRef.nativeElement.ownerDocument?.getElementById(formId)\n : this.hostRef.nativeElement.closest('form');\n\n if (!(ownerForm instanceof HTMLFormElement)) {\n return;\n }\n\n this.resetUnlisten?.();\n this.resetUnlisten = this.renderer.listen(ownerForm, 'reset', () => {\n if (this.valueInput() !== undefined) {\n return;\n }\n\n const resetValue = this.normalizeAndClamp(this.defaultValue());\n this.uncontrolledValue.set(resetValue);\n this.activeIndexState.set(resolveTngOtpEntryIndex(resetValue, this.length()));\n this.valueChange.emit(resetValue);\n this.onChangeCallback(resetValue);\n });\n }\n}\n"]}
1
+ {"version":3,"file":"tng-input-otp.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/input-otp/tng-input-otp.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n clampTngOtpValue,\n normalizeTngOtpLength,\n resolveTngOtpState,\n TngInputOtp as TngInputOtpPrimitive,\n} from '@tailng-ui/primitives';\n\nexport type TngInputOtpType = 'numeric' | 'alphanumeric' | 'custom';\nexport type TngInputOtpInputMode = 'numeric' | 'text' | 'tel' | 'decimal';\n\nconst tngOtpDigitPattern = /^\\d$/;\nconst tngOtpAlphanumericPattern = /^[a-zA-Z0-9]$/;\n\nlet tngInputOtpInstanceCounter = 0;\n\nfunction toNonGlobalRegex(pattern: RegExp): RegExp {\n const flags = pattern.flags.replace(/g/g, '');\n return new RegExp(pattern.source, flags);\n}\n\nexport function sanitizeTngOtpCharacters(\n value: string,\n mode: TngInputOtpType,\n pattern: string | RegExp | null,\n): readonly string[] {\n const compiledPattern =\n mode !== 'custom'\n ? null\n : typeof pattern === 'string'\n ? new RegExp(pattern)\n : pattern === null\n ? null\n : toNonGlobalRegex(pattern);\n\n const acceptedChars: string[] = [];\n for (const char of Array.from(value)) {\n if (mode === 'numeric' && !tngOtpDigitPattern.test(char)) {\n continue;\n }\n\n if (mode === 'alphanumeric' && !tngOtpAlphanumericPattern.test(char)) {\n continue;\n }\n\n if (compiledPattern && !compiledPattern.test(char)) {\n continue;\n }\n\n acceptedChars.push(char);\n }\n\n return acceptedChars;\n}\n\nexport function toTngOtpSlots(length: number, value: string): readonly string[] {\n const safeLength = normalizeTngOtpLength(length);\n const slots = Array.from({ length: safeLength }, () => '');\n const chars = Array.from(clampTngOtpValue(value, safeLength));\n\n for (const [index, char] of chars.entries()) {\n if (index >= safeLength) {\n break;\n }\n\n slots[index] = char;\n }\n\n return slots;\n}\n\nexport function applyTngOtpCharacters(\n value: string,\n startIndex: number,\n characters: readonly string[],\n maxLength: number,\n): string {\n const safeLength = normalizeTngOtpLength(maxLength);\n const nextChars = Array.from(clampTngOtpValue(value, safeLength));\n const safeStart = Math.max(0, Math.min(startIndex, safeLength - 1));\n\n let cursor = nextChars.length < safeLength ? Math.min(safeStart, nextChars.length) : safeStart;\n for (const char of characters) {\n if (cursor >= safeLength) {\n break;\n }\n\n if (cursor < nextChars.length) {\n nextChars[cursor] = char;\n } else {\n nextChars.push(char);\n }\n\n cursor += 1;\n }\n\n return nextChars.slice(0, safeLength).join('');\n}\n\nexport function removeTngOtpCharacter(value: string, index: number): string {\n const chars = Array.from(value);\n if (index < 0 || index >= chars.length) {\n return value;\n }\n\n chars.splice(index, 1);\n return chars.join('');\n}\n\nexport function resolveTngOtpEntryIndex(value: string, length: number): number {\n const safeLength = normalizeTngOtpLength(length);\n const safeValue = clampTngOtpValue(value, safeLength);\n if (safeValue.length >= safeLength) {\n return safeLength - 1;\n }\n\n return safeValue.length;\n}\n\nexport function resolveTngOtpEndIndex(value: string, length: number): number {\n const safeLength = normalizeTngOtpLength(length);\n const safeValue = clampTngOtpValue(value, safeLength);\n if (safeValue.length === 0) {\n return safeLength - 1;\n }\n\n return Math.max(0, safeValue.length - 1);\n}\n\nfunction clampOtpIndex(index: number, length: number): number {\n const safeLength = normalizeTngOtpLength(length);\n if (!Number.isFinite(index)) {\n return 0;\n }\n\n if (index < 0) {\n return 0;\n }\n\n if (index >= safeLength) {\n return safeLength - 1;\n }\n\n return Math.trunc(index);\n}\n\n@Component({\n selector: 'tng-input-otp',\n imports: [TngInputOtpPrimitive],\n templateUrl: './tng-input-otp.component.html',\n styleUrl: './tng-input-otp.component.css',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TngInputOtpComponent),\n multi: true,\n },\n ],\n})\nexport class TngInputOtpComponent implements AfterViewInit, ControlValueAccessor {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly generatedId = `tng-input-otp-${++tngInputOtpInstanceCounter}`;\n private resetUnlisten: (() => void) | null = null;\n private hasInitializedUncontrolled = false;\n\n private onChangeCallback: (value: string) => void = () => undefined;\n private onTouchedCallback: () => void = () => undefined;\n\n private readonly uncontrolledValue = signal('');\n private readonly formsDisabled = signal(false);\n private readonly focusedState = signal(false);\n private readonly focusVisibleState = signal(false);\n private readonly keyboardInteraction = signal(false);\n private readonly activeIndexState = signal(0);\n\n public readonly length = input<number, number | string>(6, {\n transform: (value: number | string): number =>\n normalizeTngOtpLength(typeof value === 'number' ? value : Number(value)),\n });\n public readonly valueInput = input<string | null | undefined>(undefined, { alias: 'value' });\n public readonly defaultValue = input<string>('');\n public readonly type = input<TngInputOtpType>('numeric');\n public readonly pattern = input<string | RegExp | null>(null);\n\n public readonly mask = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabledInput = input<boolean, boolean | string>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly invalid = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly autoFocus = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly selectOnFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n\n public readonly placeholderChar = input<string>('');\n public readonly name = input<string | null>(null);\n public readonly id = input<string | null>(null);\n public readonly form = input<string | null>(null);\n public readonly autocomplete = input<string>('one-time-code');\n public readonly inputMode = input<TngInputOtpInputMode | null>(null);\n public readonly ariaLabel = input<string | null>(null);\n public readonly ariaLabelledby = input<string | null>(null);\n public readonly ariaDescribedby = input<string | null>(null);\n\n public readonly valueChange = output<string>();\n public readonly complete = output<string>();\n\n protected readonly disabled = computed(() => this.disabledInput() || this.formsDisabled());\n protected readonly focused = computed(() => this.focusedState());\n protected readonly focusVisible = computed(() => this.focusVisibleState());\n protected readonly activeIndex = computed(() => clampOtpIndex(this.activeIndexState(), this.length()));\n protected readonly rootId = computed(() => this.id() ?? this.generatedId);\n\n protected readonly currentValue = computed(() => {\n const controlled = this.valueInput();\n if (controlled !== undefined) {\n return this.normalizeAndClamp(controlled ?? '');\n }\n\n return this.normalizeAndClamp(this.uncontrolledValue());\n });\n\n protected readonly slots = computed(() => toTngOtpSlots(this.length(), this.currentValue()));\n protected readonly completionState = computed(() => resolveTngOtpState(this.length(), this.currentValue()));\n\n protected readonly resolvedInputMode = computed<TngInputOtpInputMode>(() => {\n const explicit = this.inputMode();\n if (explicit !== null) {\n return explicit;\n }\n\n return this.type() === 'numeric' ? 'numeric' : 'text';\n });\n\n protected readonly slotInputType = computed<'password' | 'text'>(() =>\n this.mask() ? 'password' : 'text',\n );\n\n private readonly syncUncontrolledState = effect(\n () => {\n const controlled = this.valueInput();\n const length = this.length();\n this.type();\n this.pattern();\n\n if (controlled !== undefined) {\n if (!this.focusedState()) {\n this.activeIndexState.set(\n resolveTngOtpEntryIndex(this.normalizeAndClamp(controlled ?? ''), length),\n );\n }\n\n return;\n }\n\n const normalizedDefault = this.normalizeAndClamp(this.defaultValue());\n if (!this.hasInitializedUncontrolled) {\n this.hasInitializedUncontrolled = true;\n this.uncontrolledValue.set(normalizedDefault);\n this.activeIndexState.set(resolveTngOtpEntryIndex(normalizedDefault, length));\n return;\n }\n\n const normalizedCurrent = this.normalizeAndClamp(this.uncontrolledValue());\n if (normalizedCurrent !== this.uncontrolledValue()) {\n this.uncontrolledValue.set(normalizedCurrent);\n }\n\n this.activeIndexState.update((index) => clampOtpIndex(index, length));\n },\n );\n\n public ngAfterViewInit(): void {\n this.attachFormResetListener();\n\n if (!this.autoFocus() || this.disabled()) {\n return;\n }\n\n queueMicrotask(() => {\n if (this.disabled()) {\n return;\n }\n\n this.focusSlot(resolveTngOtpEntryIndex(this.currentValue(), this.length()), this.selectOnFocus());\n });\n }\n\n public ngOnDestroy(): void {\n this.resetUnlisten?.();\n this.resetUnlisten = null;\n }\n\n public writeValue(value: string | null): void {\n const normalized = this.normalizeAndClamp(value ?? '');\n this.hasInitializedUncontrolled = true;\n this.uncontrolledValue.set(normalized);\n\n if (!this.focusedState()) {\n this.activeIndexState.set(resolveTngOtpEntryIndex(normalized, this.length()));\n }\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.onChangeCallback = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.formsDisabled.set(isDisabled);\n }\n\n protected onSlotPointerDown(): void {\n this.keyboardInteraction.set(false);\n }\n\n protected onSlotFocus(index: number, event: FocusEvent): void {\n const target = event.target;\n const nextIndex = this.resolveEditableIndex(index);\n this.activeIndexState.set(nextIndex);\n this.focusedState.set(true);\n\n if (target instanceof HTMLElement && target.matches(':focus-visible')) {\n this.focusVisibleState.set(true);\n } else {\n this.focusVisibleState.set(this.keyboardInteraction());\n }\n\n if (this.selectOnFocus() && target instanceof HTMLInputElement) {\n target.select();\n }\n }\n\n protected onSlotBlur(event: FocusEvent): void {\n const host = this.hostRef.nativeElement;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && host.contains(relatedTarget)) {\n return;\n }\n\n queueMicrotask(() => {\n if (this.isFocusWithinHost()) {\n return;\n }\n\n this.focusedState.set(false);\n this.focusVisibleState.set(false);\n this.onTouchedCallback();\n });\n }\n\n protected onSlotKeydown(index: number, event: KeyboardEvent): void {\n this.keyboardInteraction.set(true);\n\n const editableIndex = this.resolveEditableIndex(index);\n const total = this.length();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.focusSlot(Math.max(0, editableIndex - 1), true);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.focusSlot(Math.min(total - 1, editableIndex + 1), true);\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n this.focusSlot(0, true);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.focusSlot(resolveTngOtpEndIndex(this.currentValue(), total), true);\n return;\n }\n\n if (event.key === 'Backspace') {\n event.preventDefault();\n this.handleBackspace(editableIndex);\n return;\n }\n\n if (event.key === 'Delete') {\n event.preventDefault();\n this.handleDelete(editableIndex);\n return;\n }\n\n if ((this.disabled() || this.readonly()) && event.key.length === 1) {\n event.preventDefault();\n }\n }\n\n protected onSlotInput(index: number, event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n if (this.disabled() || this.readonly()) {\n target.value = this.slotValue(this.resolveEditableIndex(index));\n return;\n }\n\n const chars = sanitizeTngOtpCharacters(target.value, this.type(), this.pattern());\n if (chars.length === 0) {\n const nextValue = removeTngOtpCharacter(this.currentValue(), this.resolveEditableIndex(index));\n this.commitValue(nextValue, this.resolveEditableIndex(index));\n return;\n }\n\n const previousValue = this.currentValue();\n const totalLength = this.length();\n const editableIndex = this.resolveEditableIndex(index);\n const wasCompleteBeforeInput = previousValue.length >= totalLength;\n const wasReplacingExistingCharacter = editableIndex < previousValue.length;\n const nextValue = applyTngOtpCharacters(previousValue, editableIndex, chars, totalLength);\n const nextFocus =\n wasCompleteBeforeInput || wasReplacingExistingCharacter\n ? Math.min(totalLength - 1, editableIndex + chars.length)\n : nextValue.length >= totalLength\n ? totalLength - 1\n : Math.min(totalLength - 1, Math.max(editableIndex + chars.length, nextValue.length));\n\n this.commitValue(nextValue, nextFocus);\n }\n\n protected onSlotPaste(index: number, event: ClipboardEvent): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const clipboardValue = event.clipboardData?.getData('text') ?? '';\n const chars = sanitizeTngOtpCharacters(clipboardValue, this.type(), this.pattern());\n if (chars.length === 0) {\n event.preventDefault();\n return;\n }\n\n event.preventDefault();\n const editableIndex = this.resolveEditableIndex(index);\n const nextValue = applyTngOtpCharacters(this.currentValue(), editableIndex, chars, this.length());\n const nextFocus =\n nextValue.length >= this.length()\n ? this.length() - 1\n : Math.min(this.length() - 1, nextValue.length);\n\n this.commitValue(nextValue, nextFocus);\n }\n\n protected slotValue(index: number): string {\n const slot = this.slots()[index];\n return slot ?? '';\n }\n\n protected slotPlaceholder(index: number): string | null {\n if (this.placeholderChar().length === 0) {\n return null;\n }\n\n return this.slotValue(index) === '' ? this.placeholderChar() : null;\n }\n\n protected slotAriaLabel(index: number): string {\n const prefix = this.ariaLabel();\n const base = prefix?.trim() ? `${prefix.trim()} - ` : '';\n return `${base}Character ${index + 1} of ${this.length()}`;\n }\n\n protected isSlotTabbable(index: number): boolean {\n return this.activeIndex() === index;\n }\n\n private handleBackspace(index: number): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const currentValue = this.currentValue();\n if (currentValue.length === 0) {\n return;\n }\n\n if (index < currentValue.length) {\n const nextValue = removeTngOtpCharacter(currentValue, index);\n const nextFocus = Math.min(index, Math.max(0, nextValue.length));\n this.commitValue(nextValue, nextFocus);\n return;\n }\n\n const previousIndex = Math.max(0, currentValue.length - 1);\n const nextValue = removeTngOtpCharacter(currentValue, previousIndex);\n this.commitValue(nextValue, Math.max(0, previousIndex));\n }\n\n private handleDelete(index: number): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (index >= this.currentValue().length) {\n return;\n }\n\n const nextValue = removeTngOtpCharacter(this.currentValue(), index);\n this.commitValue(nextValue, index);\n }\n\n private commitValue(nextValue: string, nextFocusIndex: number): void {\n const previousValue = this.currentValue();\n const normalized = this.normalizeAndClamp(nextValue);\n const didChange = normalized !== previousValue;\n\n if (this.valueInput() === undefined) {\n this.uncontrolledValue.set(normalized);\n }\n\n this.activeIndexState.set(clampOtpIndex(nextFocusIndex, this.length()));\n\n if (didChange) {\n this.valueChange.emit(normalized);\n this.onChangeCallback(normalized);\n\n if (resolveTngOtpState(this.length(), normalized) === 'complete') {\n this.complete.emit(normalized);\n }\n }\n\n queueMicrotask(() => {\n this.syncSlotInputValues();\n if (!this.focusedState() && !this.isFocusWithinHost()) {\n return;\n }\n\n this.focusSlot(this.activeIndex(), this.selectOnFocus());\n });\n }\n\n private resolveEditableIndex(index: number): number {\n const safeIndex = clampOtpIndex(index, this.length());\n const currentValueLength = this.currentValue().length;\n\n if (currentValueLength >= this.length()) {\n return safeIndex;\n }\n\n return Math.min(safeIndex, currentValueLength);\n }\n\n private focusSlot(index: number, select: boolean): void {\n const safeIndex = clampOtpIndex(index, this.length());\n const slot = this.hostRef.nativeElement.querySelector<HTMLInputElement>(\n `[data-tng-otp-slot='${safeIndex}']`,\n );\n\n if (!(slot instanceof HTMLInputElement)) {\n return;\n }\n\n slot.focus();\n if (select) {\n slot.select();\n }\n\n this.activeIndexState.set(safeIndex);\n }\n\n private syncSlotInputValues(): void {\n const slotValues = this.slots();\n const slotInputs = this.hostRef.nativeElement.querySelectorAll<HTMLInputElement>('.tng-input-otp-slot');\n slotInputs.forEach((slotInput, index) => {\n slotInput.value = slotValues[index] ?? '';\n });\n }\n\n private isFocusWithinHost(): boolean {\n const ownerDocument = this.hostRef.nativeElement.ownerDocument;\n const activeElement = ownerDocument?.activeElement;\n return activeElement instanceof Node && this.hostRef.nativeElement.contains(activeElement);\n }\n\n private normalizeAndClamp(value: string): string {\n const chars = sanitizeTngOtpCharacters(value, this.type(), this.pattern());\n const safeLength = this.length();\n return chars.slice(0, safeLength).join('');\n }\n\n private attachFormResetListener(): void {\n const formId = this.form();\n const ownerForm =\n formId !== null\n ? this.hostRef.nativeElement.ownerDocument?.getElementById(formId)\n : this.hostRef.nativeElement.closest('form');\n\n if (!(ownerForm instanceof HTMLFormElement)) {\n return;\n }\n\n this.resetUnlisten?.();\n this.resetUnlisten = this.renderer.listen(ownerForm, 'reset', () => {\n if (this.valueInput() !== undefined) {\n return;\n }\n\n const resetValue = this.normalizeAndClamp(this.defaultValue());\n this.uncontrolledValue.set(resetValue);\n this.activeIndexState.set(resolveTngOtpEntryIndex(resetValue, this.length()));\n this.valueChange.emit(resetValue);\n this.onChangeCallback(resetValue);\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-label.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/label/tng-label.component.ts"],"names":[],"mappings":"AAGA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnE;AAED,qBAOa,iBAAiB;IAC5B,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAAqB;IAC1C,SAAgB,QAAQ,8EAErB;IAEI,cAAc,IAAI,MAAM,GAAG,IAAI;CAGvC"}
1
+ {"version":3,"file":"tng-label.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/label/tng-label.component.ts"],"names":[],"mappings":"AAGA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnE;AAED,qBAMa,iBAAiB;IAC5B,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,8CAAqB;IAC1C,SAAgB,QAAQ,8EAErB;IAEI,cAAc,IAAI,MAAM,GAAG,IAAI;CAGvC"}
@@ -19,7 +19,6 @@ let TngLabelComponent = class TngLabelComponent {
19
19
  };
20
20
  TngLabelComponent = __decorate([
21
21
  Component({
22
- standalone: true,
23
22
  selector: 'tng-label',
24
23
  imports: [TngLabelPrimitive],
25
24
  templateUrl: './tng-label.component.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tng-label.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/label/tng-label.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AASM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC1B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEI,cAAc;QACnB,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AAZY,iBAAiB;IAP7B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAY7B","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport { TngLabel as TngLabelPrimitive } from '@tailng-ui/primitives';\n\nexport function resolveTngLabelForAttr(forId: string): string | null {\n const trimmedId = forId.trim();\n return trimmedId.length > 0 ? trimmedId : null;\n}\n\n@Component({\n standalone: true,\n selector: 'tng-label',\n imports: [TngLabelPrimitive],\n templateUrl: './tng-label.component.html',\n styleUrl: './tng-label.component.css',\n})\nexport class TngLabelComponent {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly forId = input<string>('');\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public resolveForAttr(): string | null {\n return resolveTngLabelForAttr(this.forId());\n }\n}\n"]}
1
+ {"version":3,"file":"tng-label.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/label/tng-label.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAQM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACZ,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC1B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEI,cAAc;QACnB,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AAZY,iBAAiB;IAN7B,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GACW,iBAAiB,CAY7B","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport { TngLabel as TngLabelPrimitive } from '@tailng-ui/primitives';\n\nexport function resolveTngLabelForAttr(forId: string): string | null {\n const trimmedId = forId.trim();\n return trimmedId.length > 0 ? trimmedId : null;\n}\n\n@Component({\n selector: 'tng-label',\n imports: [TngLabelPrimitive],\n templateUrl: './tng-label.component.html',\n styleUrl: './tng-label.component.css',\n})\nexport class TngLabelComponent {\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly forId = input<string>('');\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public resolveForAttr(): string | null {\n return resolveTngLabelForAttr(this.forId());\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multi-autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EAOrB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,4BAA4B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AACjE,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AACpE,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAEhF,MAAM,MAAM,+BAA+B,CAAC,CAAC,EAAE,CAAC,IAAI;IAClD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,EAAE,CAAC,IAAI;IACpD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,CAAC;QACV,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI;IACxB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,qBAsBa,6BAA6B,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACjE,SAAS,CAAC,QAAQ,CAAC,SAAS,0BAAyD;IAErF,QAAQ,CAAC,OAAO,oDAA2B;IAC3C,QAAQ,CAAC,WAAW,8CAAoC;IACxD,QAAQ,CAAC,SAAS,8CAA+B;IACjD,QAAQ,CAAC,SAAS,8CAAuC;IAEzD,QAAQ,CAAC,cAAc,0EAErB;IACF,QAAQ,CAAC,cAAc,uEAOrB;IACF,QAAQ,CAAC,gBAAgB,yEAGvB;IACF,QAAQ,CAAC,OAAO,sEAGb;IAGH,OAAO,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG7D,SAAS,CAAC,EAAE,WAAW,CAAC,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,QAAQ,CAAC,aAAa,gEAa7B;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,+CAmB/B;IAEH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;IAWtF,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC;IAexE,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAI9B,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,gBAAgB;CAMzB"}
1
+ {"version":3,"file":"tng-multi-autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EAOrB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,4BAA4B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AACjE,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AACpE,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAEhF,MAAM,MAAM,+BAA+B,CAAC,CAAC,EAAE,CAAC,IAAI;IAClD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,EAAE,CAAC,IAAI;IACpD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,CAAC;QACV,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI;IACxB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,qBAqBa,6BAA6B,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACjE,SAAS,CAAC,QAAQ,CAAC,SAAS,0BAAyD;IAErF,QAAQ,CAAC,OAAO,oDAA2B;IAC3C,QAAQ,CAAC,WAAW,8CAAoC;IACxD,QAAQ,CAAC,SAAS,8CAA+B;IACjD,QAAQ,CAAC,SAAS,8CAAuC;IAEzD,QAAQ,CAAC,cAAc,0EAErB;IACF,QAAQ,CAAC,cAAc,uEAOrB;IACF,QAAQ,CAAC,gBAAgB,yEAGvB;IACF,QAAQ,CAAC,OAAO,sEAGb;IAGH,OAAO,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG7D,SAAS,CAAC,EAAE,WAAW,CAAC,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,QAAQ,CAAC,aAAa,gEAa7B;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,+CAmB/B;IAEH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;IAWtF,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC;IAexE,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAI9B,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,gBAAgB;CAMzB"}
@@ -101,7 +101,6 @@ __decorate([
101
101
  TngMultiAutocompleteComponent = __decorate([
102
102
  Component({
103
103
  selector: 'tng-multi-autocomplete',
104
- standalone: true,
105
104
  imports: [
106
105
  NgTemplateOutlet,
107
106
  TngMultiAutocompleteChip,
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multi-autocomplete.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ContentChild,\n TemplateRef,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport {\n TngMultiAutocomplete,\n TngMultiAutocompleteChip,\n TngMultiAutocompleteContent,\n TngMultiAutocompleteListbox,\n TngMultiAutocompleteOption,\n TngMultiAutocompleteOverlay,\n TngMultiAutocompleteTrigger,\n} from '@tailng-ui/primitives';\n\nexport type TngMultiAutocompleteGetValue<O, V> = (opt: O) => V;\nexport type TngMultiAutocompleteGetLabel<O> = (opt: O) => string;\nexport type TngMultiAutocompleteIsDisabled<O> = (opt: O) => boolean;\nexport type TngMultiAutocompleteTrackBy<O> = (index: number, opt: O) => unknown;\n\nexport type TngMultiAutocompleteChipContext<O, V> = {\n $implicit: {\n option: O | null;\n value: V;\n label: string;\n removeItem: (item: V) => void;\n };\n};\n\nexport type TngMultiAutocompleteOptionContext<O, V> = {\n $implicit: {\n option: O;\n value: V;\n label: string;\n disabled: boolean;\n selected: boolean;\n active: boolean;\n };\n};\n\ntype SelectedItem<O, V> = {\n option: O | null;\n value: V;\n label: string;\n trackId: unknown;\n};\n\n@Component({\n selector: 'tng-multi-autocomplete',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TngMultiAutocompleteChip,\n TngMultiAutocompleteTrigger,\n TngMultiAutocompleteContent,\n TngMultiAutocompleteOverlay,\n TngMultiAutocompleteListbox,\n TngMultiAutocompleteOption,\n ],\n hostDirectives: [\n {\n directive: TngMultiAutocomplete,\n inputs: ['open', 'value', 'disabled', 'loading', 'invalid'],\n outputs: ['openChange', 'valueChange'],\n },\n ],\n templateUrl: './tng-multi-autocomplete.component.html',\n styleUrl: './tng-multi-autocomplete.component.css',\n})\nexport class TngMultiAutocompleteComponent<O = unknown, V = unknown> {\n protected readonly primitive = inject<TngMultiAutocomplete<V>>(TngMultiAutocomplete);\n\n readonly options = input<readonly O[]>([]);\n readonly placeholder = input<string>('Type to search…');\n readonly emptyText = input<string>('No matches');\n readonly ariaLabel = input<string>('Multi autocomplete');\n\n readonly getOptionValue = input<TngMultiAutocompleteGetValue<O, V>>(\n ((opt: unknown) => (opt as { value?: V })?.value) as TngMultiAutocompleteGetValue<O, V>,\n );\n readonly getOptionLabel = input<TngMultiAutocompleteGetLabel<O>>(\n ((opt: unknown) =>\n String(\n (opt as { label?: string; value?: unknown })?.label ??\n (opt as { value?: unknown })?.value ??\n opt,\n )) as TngMultiAutocompleteGetLabel<O>,\n );\n readonly isOptionDisabled = input<TngMultiAutocompleteIsDisabled<O>>(\n ((opt: unknown) =>\n !!(opt as { disabled?: boolean })?.disabled) as TngMultiAutocompleteIsDisabled<O>,\n );\n readonly trackBy = input<TngMultiAutocompleteTrackBy<O>>((_, opt) => {\n const o = opt as Record<string, unknown> | null | undefined;\n return o?.['value'] ?? o?.['id'] ?? opt;\n });\n\n @ContentChild('tngMultiAutocompleteChipTpl', { read: TemplateRef })\n chipTpl?: TemplateRef<TngMultiAutocompleteChipContext<O, V>>;\n\n @ContentChild('tngMultiAutocompleteOptionTpl', { read: TemplateRef })\n optionTpl?: TemplateRef<TngMultiAutocompleteOptionContext<O, V>>;\n\n protected readonly selectedItems = computed<readonly SelectedItem<O, V>[]>(() => {\n const values = this.primitive.value();\n const getLabel = this.getOptionLabel();\n\n return values.map((value) => {\n const option = this.findOption(value);\n return {\n option,\n value,\n label: option ? getLabel(option) : String(value),\n trackId: value as unknown,\n };\n });\n });\n\n protected readonly filteredOptions = computed<readonly O[]>(() => {\n const q = this.primitive.query().toLowerCase().trim();\n const list = this.options();\n const getLabel = this.getOptionLabel();\n const getValue = this.getOptionValue();\n const selected = this.primitive.value();\n\n const matches = q\n ? list.filter((opt) => getLabel(opt).toLowerCase().includes(q))\n : list;\n\n const pinnedSelected = matches.filter((opt) =>\n this.hasSelectedValue(getValue(opt), selected),\n );\n const remaining = matches.filter(\n (opt) => !this.hasSelectedValue(getValue(opt), selected),\n );\n\n return [...pinnedSelected, ...remaining];\n });\n\n protected chipContext(item: SelectedItem<O, V>): TngMultiAutocompleteChipContext<O, V> {\n return {\n $implicit: {\n option: item.option,\n value: item.value,\n label: item.label,\n removeItem: (value: V) => this.removeSelectedItem(value),\n },\n };\n }\n\n protected optionContext(opt: O): TngMultiAutocompleteOptionContext<O, V> {\n const value = this.getOptionValue()(opt);\n\n return {\n $implicit: {\n option: opt,\n value,\n label: this.getOptionLabel()(opt),\n disabled: this.isOptionDisabled()(opt),\n selected: this.hasSelectedValue(value),\n active: false,\n },\n };\n }\n\n addSelectedItem(item: V): void {\n this.primitive.add(item);\n }\n\n removeSelectedItem(item: V): void {\n this.primitive.remove(item);\n }\n\n toggleSelectedItem(item: V): void {\n this.primitive.toggle(item);\n }\n\n clear(): void {\n this.primitive.clear();\n }\n\n private findOption(value: V): O | null {\n const getValue = this.getOptionValue();\n\n for (const opt of this.options()) {\n if (Object.is(getValue(opt), value)) return opt;\n }\n\n return null;\n }\n\n private hasSelectedValue(\n value: V,\n selected: readonly V[] = this.primitive.value(),\n ): boolean {\n return selected.some((entry) => Object.is(entry, value));\n }\n}\n"]}
1
+ {"version":3,"file":"tng-multi-autocomplete.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ContentChild,\n TemplateRef,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport {\n TngMultiAutocomplete,\n TngMultiAutocompleteChip,\n TngMultiAutocompleteContent,\n TngMultiAutocompleteListbox,\n TngMultiAutocompleteOption,\n TngMultiAutocompleteOverlay,\n TngMultiAutocompleteTrigger,\n} from '@tailng-ui/primitives';\n\nexport type TngMultiAutocompleteGetValue<O, V> = (opt: O) => V;\nexport type TngMultiAutocompleteGetLabel<O> = (opt: O) => string;\nexport type TngMultiAutocompleteIsDisabled<O> = (opt: O) => boolean;\nexport type TngMultiAutocompleteTrackBy<O> = (index: number, opt: O) => unknown;\n\nexport type TngMultiAutocompleteChipContext<O, V> = {\n $implicit: {\n option: O | null;\n value: V;\n label: string;\n removeItem: (item: V) => void;\n };\n};\n\nexport type TngMultiAutocompleteOptionContext<O, V> = {\n $implicit: {\n option: O;\n value: V;\n label: string;\n disabled: boolean;\n selected: boolean;\n active: boolean;\n };\n};\n\ntype SelectedItem<O, V> = {\n option: O | null;\n value: V;\n label: string;\n trackId: unknown;\n};\n\n@Component({\n selector: 'tng-multi-autocomplete',\n imports: [\n NgTemplateOutlet,\n TngMultiAutocompleteChip,\n TngMultiAutocompleteTrigger,\n TngMultiAutocompleteContent,\n TngMultiAutocompleteOverlay,\n TngMultiAutocompleteListbox,\n TngMultiAutocompleteOption,\n ],\n hostDirectives: [\n {\n directive: TngMultiAutocomplete,\n inputs: ['open', 'value', 'disabled', 'loading', 'invalid'],\n outputs: ['openChange', 'valueChange'],\n },\n ],\n templateUrl: './tng-multi-autocomplete.component.html',\n styleUrl: './tng-multi-autocomplete.component.css',\n})\nexport class TngMultiAutocompleteComponent<O = unknown, V = unknown> {\n protected readonly primitive = inject<TngMultiAutocomplete<V>>(TngMultiAutocomplete);\n\n readonly options = input<readonly O[]>([]);\n readonly placeholder = input<string>('Type to search…');\n readonly emptyText = input<string>('No matches');\n readonly ariaLabel = input<string>('Multi autocomplete');\n\n readonly getOptionValue = input<TngMultiAutocompleteGetValue<O, V>>(\n ((opt: unknown) => (opt as { value?: V })?.value) as TngMultiAutocompleteGetValue<O, V>,\n );\n readonly getOptionLabel = input<TngMultiAutocompleteGetLabel<O>>(\n ((opt: unknown) =>\n String(\n (opt as { label?: string; value?: unknown })?.label ??\n (opt as { value?: unknown })?.value ??\n opt,\n )) as TngMultiAutocompleteGetLabel<O>,\n );\n readonly isOptionDisabled = input<TngMultiAutocompleteIsDisabled<O>>(\n ((opt: unknown) =>\n !!(opt as { disabled?: boolean })?.disabled) as TngMultiAutocompleteIsDisabled<O>,\n );\n readonly trackBy = input<TngMultiAutocompleteTrackBy<O>>((_, opt) => {\n const o = opt as Record<string, unknown> | null | undefined;\n return o?.['value'] ?? o?.['id'] ?? opt;\n });\n\n @ContentChild('tngMultiAutocompleteChipTpl', { read: TemplateRef })\n chipTpl?: TemplateRef<TngMultiAutocompleteChipContext<O, V>>;\n\n @ContentChild('tngMultiAutocompleteOptionTpl', { read: TemplateRef })\n optionTpl?: TemplateRef<TngMultiAutocompleteOptionContext<O, V>>;\n\n protected readonly selectedItems = computed<readonly SelectedItem<O, V>[]>(() => {\n const values = this.primitive.value();\n const getLabel = this.getOptionLabel();\n\n return values.map((value) => {\n const option = this.findOption(value);\n return {\n option,\n value,\n label: option ? getLabel(option) : String(value),\n trackId: value as unknown,\n };\n });\n });\n\n protected readonly filteredOptions = computed<readonly O[]>(() => {\n const q = this.primitive.query().toLowerCase().trim();\n const list = this.options();\n const getLabel = this.getOptionLabel();\n const getValue = this.getOptionValue();\n const selected = this.primitive.value();\n\n const matches = q\n ? list.filter((opt) => getLabel(opt).toLowerCase().includes(q))\n : list;\n\n const pinnedSelected = matches.filter((opt) =>\n this.hasSelectedValue(getValue(opt), selected),\n );\n const remaining = matches.filter(\n (opt) => !this.hasSelectedValue(getValue(opt), selected),\n );\n\n return [...pinnedSelected, ...remaining];\n });\n\n protected chipContext(item: SelectedItem<O, V>): TngMultiAutocompleteChipContext<O, V> {\n return {\n $implicit: {\n option: item.option,\n value: item.value,\n label: item.label,\n removeItem: (value: V) => this.removeSelectedItem(value),\n },\n };\n }\n\n protected optionContext(opt: O): TngMultiAutocompleteOptionContext<O, V> {\n const value = this.getOptionValue()(opt);\n\n return {\n $implicit: {\n option: opt,\n value,\n label: this.getOptionLabel()(opt),\n disabled: this.isOptionDisabled()(opt),\n selected: this.hasSelectedValue(value),\n active: false,\n },\n };\n }\n\n addSelectedItem(item: V): void {\n this.primitive.add(item);\n }\n\n removeSelectedItem(item: V): void {\n this.primitive.remove(item);\n }\n\n toggleSelectedItem(item: V): void {\n this.primitive.toggle(item);\n }\n\n clear(): void {\n this.primitive.clear();\n }\n\n private findOption(value: V): O | null {\n const getValue = this.getOptionValue();\n\n for (const opt of this.options()) {\n if (Object.is(getValue(opt), value)) return opt;\n }\n\n return null;\n }\n\n private hasSelectedValue(\n value: V,\n selected: readonly V[] = this.primitive.value(),\n ): boolean {\n return selected.some((entry) => Object.is(entry, value));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tng-multiselect.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multiselect/tng-multiselect.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EAQf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACzD,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAC3D,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAC9D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAE1E,MAAM,MAAM,0BAA0B,CAAC,CAAC,EAAE,CAAC,IAAI;IAC7C,SAAS,EAAE;QACT,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH,CAAC;AACF,MAAM,MAAM,2BAA2B,CAAC,CAAC,EAAE,CAAC,IAAI;IAC9C,SAAS,EAAE;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1G,CAAC;AAEF,qBAgCa,uBAAuB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAC3D,SAAS,CAAC,QAAQ,CAAC,SAAS,oBAA6C;IAEzE,QAAQ,CAAC,OAAO,oDAA2B;IAC3C,QAAQ,CAAC,WAAW,8CAA4B;IAEhD,QAAQ,CAAC,cAAc,oEAErB;IACF,QAAQ,CAAC,cAAc,iEAErB;IACF,QAAQ,CAAC,gBAAgB,mEAEvB;IACF,QAAQ,CAAC,OAAO,gEAA+D;IAE/E,QAAQ,CAAC,QAAQ,8CAAsB;IAEwB,QAAQ,CAAC,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3H,SAAS,CAAC,QAAQ,CAAC,eAAe,+CAS/B;IAEH,SAAS,CAAC,QAAQ,CAAC,aAAa,yCAI7B;IAEH,SAAS,CAAC,YAAY,IAAI,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC;IAc1D,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;IAUlE,6DAA6D;IAC7D,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAI9B,kEAAkE;IAClE,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,gEAAgE;IAChE,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,oDAAoD;IACpD,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"tng-multiselect.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/form/multiselect/tng-multiselect.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EAQf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACzD,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAC3D,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAC9D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAE1E,MAAM,MAAM,0BAA0B,CAAC,CAAC,EAAE,CAAC,IAAI;IAC7C,SAAS,EAAE;QACT,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH,CAAC;AACF,MAAM,MAAM,2BAA2B,CAAC,CAAC,EAAE,CAAC,IAAI;IAC9C,SAAS,EAAE;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1G,CAAC;AAEF,qBA+Ba,uBAAuB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAC3D,SAAS,CAAC,QAAQ,CAAC,SAAS,oBAA6C;IAEzE,QAAQ,CAAC,OAAO,oDAA2B;IAC3C,QAAQ,CAAC,WAAW,8CAA4B;IAEhD,QAAQ,CAAC,cAAc,oEAErB;IACF,QAAQ,CAAC,cAAc,iEAErB;IACF,QAAQ,CAAC,gBAAgB,mEAEvB;IACF,QAAQ,CAAC,OAAO,gEAA+D;IAE/E,QAAQ,CAAC,QAAQ,8CAAsB;IAEwB,QAAQ,CAAC,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3H,SAAS,CAAC,QAAQ,CAAC,eAAe,+CAS/B;IAEH,SAAS,CAAC,QAAQ,CAAC,aAAa,yCAI7B;IAEH,SAAS,CAAC,YAAY,IAAI,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC;IAc1D,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;IAUlE,6DAA6D;IAC7D,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAI9B,kEAAkE;IAClE,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,gEAAgE;IAChE,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAIjC,oDAAoD;IACpD,KAAK,IAAI,IAAI;CAGd"}
@@ -77,7 +77,6 @@ __decorate([
77
77
  TngMultiSelectComponent = __decorate([
78
78
  Component({
79
79
  selector: 'tng-multiselect',
80
- standalone: true,
81
80
  imports: [
82
81
  NgTemplateOutlet,
83
82
  TngSelectTrigger,