@acorex/components 22.0.0-next.9 → 22.0.1-next.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 (205) hide show
  1. package/combo-box/README.md +35 -0
  2. package/emoji/README.md +3 -0
  3. package/emojipicker/README.md +3 -0
  4. package/fesm2022/acorex-components-accordion.mjs +4 -4
  5. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  6. package/fesm2022/acorex-components-action-sheet.mjs +1 -0
  7. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  8. package/fesm2022/acorex-components-alert.mjs +2 -2
  9. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  10. package/fesm2022/acorex-components-audio-wave.mjs +291 -267
  11. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  12. package/fesm2022/acorex-components-bubble.mjs +71 -0
  13. package/fesm2022/acorex-components-bubble.mjs.map +1 -0
  14. package/fesm2022/acorex-components-button-group.mjs +12 -5
  15. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  16. package/fesm2022/acorex-components-button.mjs +6 -6
  17. package/fesm2022/acorex-components-button.mjs.map +1 -1
  18. package/fesm2022/acorex-components-calendar.mjs +328 -127
  19. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  20. package/fesm2022/acorex-components-check-box.mjs +2 -2
  21. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  22. package/fesm2022/acorex-components-combo-box.mjs +973 -0
  23. package/fesm2022/acorex-components-combo-box.mjs.map +1 -0
  24. package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs +19058 -0
  25. package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs.map +1 -0
  26. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs +50 -0
  27. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs.map +1 -0
  28. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs +87 -0
  29. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs.map +1 -0
  30. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs +65 -0
  31. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs.map +1 -0
  32. package/fesm2022/acorex-components-conversation.mjs +1 -22920
  33. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  34. package/fesm2022/acorex-components-cron-job.mjs +1 -1
  35. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  36. package/fesm2022/acorex-components-data-pager.mjs +4 -4
  37. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  38. package/fesm2022/acorex-components-data-table.mjs +310 -90
  39. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  40. package/fesm2022/acorex-components-datetime-box.mjs +14 -16
  41. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  42. package/fesm2022/acorex-components-datetime-input.mjs +61 -32
  43. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  44. package/fesm2022/acorex-components-datetime-picker.mjs +1 -1
  45. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  46. package/fesm2022/acorex-components-decorators.mjs +57 -11
  47. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  48. package/fesm2022/acorex-components-dialog.mjs +7 -4
  49. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  50. package/fesm2022/acorex-components-drawer.mjs +2 -2
  51. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  52. package/fesm2022/acorex-components-dropdown-button.mjs +1 -1
  53. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  54. package/fesm2022/acorex-components-dropdown.mjs +4 -4
  55. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  56. package/fesm2022/acorex-components-emoji.mjs +74 -0
  57. package/fesm2022/acorex-components-emoji.mjs.map +1 -0
  58. package/fesm2022/acorex-components-emojipicker.mjs +425 -0
  59. package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
  60. package/fesm2022/acorex-components-fab.mjs +5 -5
  61. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  62. package/fesm2022/acorex-components-file-viewer.mjs +359 -109
  63. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  64. package/fesm2022/acorex-components-form.mjs +22 -6
  65. package/fesm2022/acorex-components-form.mjs.map +1 -1
  66. package/fesm2022/acorex-components-grid-layout-builder.mjs +238 -36
  67. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  68. package/fesm2022/acorex-components-highlight.mjs +80 -0
  69. package/fesm2022/acorex-components-highlight.mjs.map +1 -0
  70. package/fesm2022/acorex-components-image-editor.mjs +686 -416
  71. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  72. package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
  73. package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
  74. package/fesm2022/acorex-components-kanban.mjs +1 -1
  75. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  76. package/fesm2022/acorex-components-label.mjs +2 -2
  77. package/fesm2022/acorex-components-label.mjs.map +1 -1
  78. package/fesm2022/acorex-components-list.mjs +2 -2
  79. package/fesm2022/acorex-components-list.mjs.map +1 -1
  80. package/fesm2022/acorex-components-loading-dialog.mjs +59 -42
  81. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  82. package/fesm2022/acorex-components-lookup.mjs +3505 -0
  83. package/fesm2022/acorex-components-lookup.mjs.map +1 -0
  84. package/fesm2022/acorex-components-map.mjs +9 -2
  85. package/fesm2022/acorex-components-map.mjs.map +1 -1
  86. package/fesm2022/acorex-components-menu.mjs +322 -79
  87. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  88. package/fesm2022/acorex-components-message-status.mjs +71 -0
  89. package/fesm2022/acorex-components-message-status.mjs.map +1 -0
  90. package/fesm2022/acorex-components-message-time.mjs +36 -0
  91. package/fesm2022/acorex-components-message-time.mjs.map +1 -0
  92. package/fesm2022/acorex-components-message.mjs +120 -0
  93. package/fesm2022/acorex-components-message.mjs.map +1 -0
  94. package/fesm2022/acorex-components-notification.mjs +13 -6
  95. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  96. package/fesm2022/acorex-components-number-box.mjs +30 -29
  97. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  98. package/fesm2022/acorex-components-paint.mjs +1 -1
  99. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  100. package/fesm2022/acorex-components-password-box.mjs +3 -3
  101. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  102. package/fesm2022/acorex-components-popover.mjs +40 -6
  103. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  104. package/fesm2022/acorex-components-popup.mjs +4 -2
  105. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  106. package/fesm2022/acorex-components-radio.mjs +2 -2
  107. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  108. package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
  109. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  110. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  111. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  112. package/fesm2022/acorex-components-reaction.mjs +144 -0
  113. package/fesm2022/acorex-components-reaction.mjs.map +1 -0
  114. package/fesm2022/acorex-components-rest-api-generator.mjs +5 -5
  115. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  116. package/fesm2022/acorex-components-rrule.mjs +1 -1
  117. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  118. package/fesm2022/acorex-components-scheduler-picker.mjs +5 -5
  119. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  120. package/fesm2022/acorex-components-scheduler.mjs +12 -22
  121. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  122. package/fesm2022/acorex-components-select-box.mjs +55 -18
  123. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  124. package/fesm2022/acorex-components-selection-list.mjs +3 -4
  125. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  126. package/fesm2022/acorex-components-switch.mjs +2 -2
  127. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  128. package/fesm2022/acorex-components-tabs.mjs +510 -74
  129. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  130. package/fesm2022/acorex-components-tag-box.mjs +2 -2
  131. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  132. package/fesm2022/acorex-components-text-area.mjs +2 -2
  133. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  134. package/fesm2022/acorex-components-toast.mjs +9 -2
  135. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  136. package/fesm2022/acorex-components-tooltip.mjs +2 -2
  137. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  138. package/fesm2022/acorex-components-tree-view.mjs +86 -6
  139. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  140. package/fesm2022/acorex-components-wysiwyg.mjs +76 -6
  141. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  142. package/highlight/README.md +13 -0
  143. package/inline-reaction/README.md +3 -0
  144. package/lookup/README.md +74 -0
  145. package/message/README.md +3 -0
  146. package/message-status/README.md +3 -0
  147. package/message-time/README.md +3 -0
  148. package/package.json +51 -16
  149. package/reaction/README.md +3 -0
  150. package/select-box/README.md +5 -0
  151. package/types/acorex-components-action-sheet.d.ts +9 -1
  152. package/types/acorex-components-audio-wave.d.ts +132 -73
  153. package/types/acorex-components-bubble.d.ts +31 -0
  154. package/types/acorex-components-button-group.d.ts +4 -0
  155. package/types/acorex-components-button.d.ts +1 -1
  156. package/types/acorex-components-calendar.d.ts +41 -9
  157. package/types/acorex-components-combo-box.d.ts +310 -0
  158. package/types/acorex-components-conversation.d.ts +1806 -1790
  159. package/types/acorex-components-data-table.d.ts +74 -12
  160. package/types/acorex-components-datetime-box.d.ts +2 -0
  161. package/types/acorex-components-datetime-input.d.ts +24 -5
  162. package/types/acorex-components-decorators.d.ts +14 -1
  163. package/types/acorex-components-dialog.d.ts +9 -0
  164. package/types/acorex-components-emoji.d.ts +42 -0
  165. package/types/acorex-components-emojipicker.d.ts +146 -0
  166. package/types/acorex-components-file-viewer.d.ts +48 -4
  167. package/types/acorex-components-grid-layout-builder.d.ts +34 -2
  168. package/types/acorex-components-highlight.d.ts +31 -0
  169. package/types/acorex-components-image-editor.d.ts +68 -48
  170. package/types/acorex-components-inline-reaction.d.ts +52 -0
  171. package/types/acorex-components-loading-dialog.d.ts +12 -4
  172. package/types/acorex-components-lookup.d.ts +962 -0
  173. package/types/acorex-components-map.d.ts +5 -0
  174. package/types/acorex-components-menu.d.ts +43 -7
  175. package/types/acorex-components-message-status.d.ts +23 -0
  176. package/types/acorex-components-message-time.d.ts +19 -0
  177. package/types/acorex-components-message.d.ts +59 -0
  178. package/types/acorex-components-notification.d.ts +11 -1
  179. package/types/acorex-components-number-box.d.ts +3 -1
  180. package/types/acorex-components-popover.d.ts +12 -1
  181. package/types/acorex-components-popup.d.ts +9 -1
  182. package/types/acorex-components-reaction.d.ts +85 -0
  183. package/types/acorex-components-scheduler.d.ts +2 -4
  184. package/types/acorex-components-select-box.d.ts +21 -4
  185. package/types/acorex-components-selection-list.d.ts +1 -1
  186. package/types/acorex-components-tabs.d.ts +148 -19
  187. package/types/acorex-components-toast.d.ts +10 -1
  188. package/types/acorex-components-tree-view.d.ts +39 -2
  189. package/types/acorex-components-wysiwyg.d.ts +13 -0
  190. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs +0 -106
  191. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +0 -1
  192. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs +0 -223
  193. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map +0 -1
  194. package/fesm2022/acorex-components-flow-chart.mjs +0 -735
  195. package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
  196. package/fesm2022/acorex-components-query-builder.mjs +0 -267
  197. package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
  198. package/fesm2022/acorex-components-selection-list-2.mjs +0 -168
  199. package/fesm2022/acorex-components-selection-list-2.mjs.map +0 -1
  200. package/flow-chart/README.md +0 -3
  201. package/query-builder/README.md +0 -3
  202. package/selection-list-2/README.md +0 -3
  203. package/types/acorex-components-flow-chart.d.ts +0 -187
  204. package/types/acorex-components-query-builder.d.ts +0 -52
  205. package/types/acorex-components-selection-list-2.d.ts +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-tabs.mjs","sources":["../../../../packages/components/tabs/src/lib/tab-content.directive.ts","../../../../packages/components/tabs/src/lib/tab-item.component.ts","../../../../packages/components/tabs/src/lib/tabs.class.ts","../../../../packages/components/tabs/src/lib/tabs.component.ts","../../../../packages/components/tabs/src/lib/tabs.module.ts","../../../../packages/components/tabs/src/acorex-components-tabs.ts"],"sourcesContent":["import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[axTabContent]',\n exportAs: 'axTabContent',\n inputs: ['portal: axTabContent'],\n})\nexport class AXTabContentDirective {\n private _viewContainerRef = inject(ViewContainerRef);\n\n private _portal: TemplateRef<any> | undefined;\n public get portal(): TemplateRef<any> | undefined {\n return this._portal;\n }\n public set portal(v: TemplateRef<any> | undefined) {\n if (v) {\n this._portal = v;\n this._viewContainerRef.clear();\n this._viewContainerRef.createEmbeddedView(v, null, 0);\n }\n }\n}\n","import { AXClickEvent, AXComponent, MXComponentOptionChanged, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * @category\n * Represents an individual tab item in a tab component.\n */\n@Component({\n selector: 'ax-tab-item',\n template: `\n @if (headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n text: this.text,\n key: this.key,\n active: this.active,\n disabled: this.disabled,\n },\n }\"\n ></ng-container>\n } @else {\n <div>\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-tab-item-text\">{{ text }}</div>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n }\n <ng-template #content>\n <ng-content select=\"ax-content\"> </ng-content>\n </ng-template>\n `,\n\n encapsulation: ViewEncapsulation.None,\n inputs: ['disabled'],\n outputs: ['disabledChange', 'onClick', 'onBlur', 'onFocus'],\n host: { ngSkipHydration: 'true' },\n imports: [NgTemplateOutlet],\n providers: [{ provide: AXComponent, useExisting: AXTabItemComponent }],\n})\nexport class AXTabItemComponent extends MXInteractiveComponent {\n /**\n * Defines the text content to be displayed within the component.\n */\n @Input()\n text: string;\n\n /**\n * Defines a unique identifier for the component instance.\n */\n @Input()\n key: string;\n\n @ViewChild('content')\n template: TemplateRef<unknown>;\n\n /**\n * Defines a custom template for the component's header.\n */\n @Input()\n headerTemplate: TemplateRef<unknown>;\n\n /**\n * Emits an event when the `active` state of the component changes.\n * @event\n */\n @Output()\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * Emits an event when the component is clicked.\n * @event\n */\n @Output()\n onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n\n /** @ignore */\n private _active = false;\n\n /**\n * Gets or sets the component's active state, controlling its behavior and appearance.\n * @param value {boolean}\n */\n @Input()\n public get active(): boolean {\n return this._active;\n }\n public set active(value: boolean) {\n this.setOption({\n name: 'active',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n /**\n * @ignore\n */\n @HostListener('click', ['$event'])\n __hostClick(e: MouseEvent) {\n if (!this.disabled) {\n this.getHostElement().scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n }\n\n /**\n * @ignore\n */\n protected override internalOptionChanged(option: MXComponentOptionChanged<any>): void {\n //TODO: change to hostbind\n const classListRef = this.getHostElement().classList;\n if (option.name == 'disabled') {\n option.value ? classListRef.add('ax-state-disabled') : classListRef.remove('ax-state-disabled');\n }\n if (option.name == 'active') {\n option.value ? classListRef.add('ax-state-active') : classListRef.remove('ax-state-active');\n }\n }\n\n /**\n * Gets the component's position and size statistics.\n *\n * @returns object with width, height, left, and top properties\n */\n getStats() {\n return {\n width: this.getHostElement().clientWidth,\n height: this.getHostElement().clientHeight,\n left: this.getHostElement().offsetLeft,\n top: this.getHostElement().offsetTop,\n };\n }\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport { AXTabItemComponent } from './tab-item.component';\n\nexport class AXTabStripChangedEvent extends AXEvent {\n tab: AXTabItemComponent;\n index: number;\n}\n\nexport type AXTabLook = 'default' | 'pills' | 'pills-color' | 'with-line' | 'with-line-color' | 'classic' | 'custom';\n\nexport type AXTabLocation = 'top' | 'bottom' | 'start' | 'end';\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n effect,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n input,\n Input,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTabContentDirective } from './tab-content.directive';\nimport { AXTabItemComponent } from './tab-item.component';\nimport { AXTabLocation, AXTabLook, AXTabStripChangedEvent } from './tabs.class';\n\n/**\n * @category\n * A component that serves as a container for tab items.\n */\n@Component({\n selector: 'ax-tabs',\n template: `<div class=\"ax-tabs-scroll-area\">\n <ng-content select=\"ax-tab-item\"></ng-content><span class=\"ax-tab-indicator\" #indicator></span>\n </div>`,\n styleUrl: './tabs.component.css',\n\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXTabsComponent }],\n})\nexport class AXTabsComponent extends MXBaseComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n private readonly renderer = inject(Renderer2);\n /**\n * @ignore\n */\n @ContentChildren(AXTabItemComponent)\n private _contentTabs!: QueryList<AXTabItemComponent>;\n\n /**\n * Sets the appearance style of the tab component.\n * @defaultValue 'default'\n */\n look = input<AXTabLook>('default');\n\n /**\n * Specifies the position of the tab component.\n * @defaultValue 'bottom'\n */\n location = input<AXTabLocation>('bottom');\n\n /**\n * @defaultValue 'false'\n * Specifies whether the component should resize to fit its parent container.\n */\n @Input()\n fitParent = false;\n\n /**\n * @defaultValue 'false'\n * Applies a minimum width constraint to the component.\n */\n @Input()\n minWidth = false;\n\n /**\n * The `AXTabContentDirective` associated with the tab.\n */\n @Input()\n content!: AXTabContentDirective;\n\n private indicator = viewChild<ElementRef<HTMLSpanElement>>('indicator');\n\n private zone = inject(NgZone);\n private platformId = inject(PLATFORM_ID);\n\n /** @ignore */\n private _isUserInteraction = false;\n\n get items(): AXTabItemComponent[] {\n return this._contentTabs.toArray();\n }\n\n /** @ignore */\n private _selectedItem!: AXTabItemComponent;\n\n /** @ignore */\n get selectedIndex(): number {\n return this.items.indexOf(this._selectedItem);\n }\n\n /** @ignore */\n get selectedItem(): AXTabItemComponent {\n return this._selectedItem;\n }\n\n private changes: ResizeObserver;\n private activeTab = signal<AXTabItemComponent>(null);\n\n #tabChange = effect(() => {\n if (this.activeTab() && this.location()) {\n if (this.look() === 'with-line-color' || this.look() === 'with-line') {\n setTimeout(() => {\n this.setIndicatorPosition(this.activeTab());\n });\n }\n }\n });\n\n /**\n * @event\n */\n @Output()\n onActiveTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string[] {\n const cssClasses: string[] = [];\n cssClasses.push(`ax-${this.look()}`);\n cssClasses.push(`ax-${this.location()}`);\n if (this.fitParent) cssClasses.push(`ax-tabs-fit`);\n return cssClasses;\n }\n\n /** @ignore */\n ngAfterContentInit() {\n this._contentTabs.changes.subscribe(() => {\n this._bindOnClickEvent();\n });\n }\n\n /** @ignore */\n ngAfterViewInit() {\n this._bindOnClickEvent();\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.changes = new ResizeObserver((entries) => {\n const activeTab = this.activeTab();\n if (entries[0].contentRect.width && activeTab) {\n this.renderer.setStyle(this.indicator().nativeElement, 'transition', 'none');\n this.setIndicatorPosition(activeTab);\n this.renderer.removeStyle(this.indicator().nativeElement, 'transition');\n }\n });\n const activeTab = this.activeTab();\n if (activeTab) this.changes.observe(activeTab.getHostElement());\n this.changes.observe(this.getHostElement());\n });\n }\n }\n\n ngOnDestroy(): void {\n this.changes?.disconnect();\n }\n\n /** @ignore */\n private _bindOnClickEvent() {\n const selected = this.items.find((c) => c.active) || this.items[0];\n this.select(selected);\n this.items.forEach((c) => {\n if (!c.onClick.length) {\n c.onClick.subscribe((t) => {\n this._isUserInteraction = t.nativeEvent?.isTrusted;\n this.select(c);\n });\n }\n });\n }\n\n /**\n * Activates the specified tab and updates the content.\n *\n * @param tab - The tab to select, either by index (number) or by component instance\n */\n select(tab: number | AXTabItemComponent) {\n const tabItem: AXTabItemComponent = typeof tab == 'number' ? this.items[tab] : tab;\n this.activeTab.set(tabItem);\n //\n if (!tabItem || this.selectedItem == tabItem) return;\n this._selectedItem = tabItem;\n //\n this.items.forEach((c) => (c.active = false));\n tabItem.active = true;\n if (this.content) {\n this.content.portal = tabItem.template;\n }\n this.cdr.markForCheck();\n this.onActiveTabChanged.emit({\n component: this,\n isUserInteraction: this._isUserInteraction,\n tab: tabItem,\n index: this.selectedIndex,\n });\n this._isUserInteraction = false;\n }\n\n private setIndicatorPosition(tabItem: AXTabItemComponent) {\n const indicatorStyle = this.indicator().nativeElement.style;\n const itemStats = tabItem.getStats();\n if (this.location() === 'top' || this.location() === 'bottom') {\n indicatorStyle.width = `${itemStats.width}px`;\n indicatorStyle.height = `var(--ax-comp-tabs-indicator-size)`;\n indicatorStyle.left = `${itemStats.left}px`;\n indicatorStyle.right = `unset`;\n if (this.location() === 'top') {\n indicatorStyle.top = `0px`;\n indicatorStyle.bottom = `unset`;\n }\n if (this.location() === 'bottom') {\n indicatorStyle.top = `unset`;\n indicatorStyle.bottom = `0px`;\n }\n }\n if (this.location() === 'start' || this.location() === 'end') {\n indicatorStyle.width = ` var(--ax-comp-tabs-indicator-size)`;\n indicatorStyle.height = `${itemStats.height}px`;\n indicatorStyle.top = `${itemStats.top}px`;\n indicatorStyle.bottom = `unset`;\n if (this.location() === 'start') {\n indicatorStyle.insetInlineStart = `0px`;\n indicatorStyle.insetInlineEnd = `unset`;\n }\n if (this.location() === 'end') {\n indicatorStyle.insetInlineStart = `unset`;\n indicatorStyle.insetInlineEnd = `0px`;\n }\n }\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXTabContentDirective } from './tab-content.directive';\nimport { AXTabItemComponent } from './tab-item.component';\nimport { AXTabsComponent } from './tabs.component';\n\nconst COMPONENT = [AXTabsComponent, AXTabItemComponent, AXTabContentDirective];\nconst MODULES = [CommonModule, PortalModule, AXDecoratorModule];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-tabs.mjs","sources":["../../../../packages/components/tabs/src/lib/tab-content.directive.ts","../../../../packages/components/tabs/src/lib/tab-panel.directive.ts","../../../../packages/components/tabs/src/lib/tab-item.component.ts","../../../../packages/components/tabs/src/lib/tabs.class.ts","../../../../packages/components/tabs/src/lib/tabs.component.ts","../../../../packages/components/tabs/src/lib/tabs.module.ts","../../../../packages/components/tabs/src/acorex-components-tabs.ts"],"sourcesContent":["import {\n Directive,\n EmbeddedViewRef,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core';\nimport { AXTabsRenderMode } from './tabs.class';\n\ninterface TabContentPane {\n view: EmbeddedViewRef<unknown>;\n host: HTMLElement;\n}\n\n@Directive({\n selector: '[axTabContent]',\n exportAs: 'axTabContent',\n inputs: ['portal: axTabContent'],\n})\nexport class AXTabContentDirective implements OnDestroy {\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly panes = new Map<TemplateRef<unknown>, TabContentPane>();\n\n private _portal: TemplateRef<unknown> | undefined;\n private defaultView: EmbeddedViewRef<unknown> | null = null;\n\n public get portal(): TemplateRef<unknown> | undefined {\n return this._portal;\n }\n\n public set portal(v: TemplateRef<unknown> | undefined) {\n if (v) {\n this._portal = v;\n this.activate(v, 'default');\n }\n }\n\n /**\n * Shows the given tab template using the specified render mode.\n */\n activate(template: TemplateRef<unknown> | undefined, mode: AXTabsRenderMode): void {\n if (!template) {\n return;\n }\n\n this._portal = template;\n\n if (mode === 'default') {\n this.destroyDefaultView();\n this.resetKeepAlivePanes();\n this.viewContainerRef.clear();\n this.defaultView = this.viewContainerRef.createEmbeddedView(template, null, 0);\n return;\n }\n\n this.destroyDefaultView();\n this.ensurePane(template);\n this.showPane(template);\n }\n\n /**\n * Ensures embedded views exist for every tab template (all-tabs mode).\n */\n preload(templates: TemplateRef<unknown>[]): void {\n templates.forEach((template) => this.ensurePane(template));\n }\n\n /**\n * Removes panes whose tab templates are no longer present.\n */\n sync(templates: TemplateRef<unknown>[]): void {\n const activeTemplates = new Set(templates);\n\n for (const [template, pane] of this.panes) {\n if (activeTemplates.has(template)) {\n continue;\n }\n\n this.destroyPane(template, pane);\n }\n }\n\n /**\n * Destroys all cached panes and clears the view container.\n */\n reset(): void {\n this.destroyDefaultView();\n this.resetKeepAlivePanes();\n this.viewContainerRef.clear();\n }\n\n ngOnDestroy(): void {\n this.reset();\n }\n\n private destroyDefaultView(): void {\n if (!this.defaultView) {\n return;\n }\n\n this.defaultView.destroy();\n this.defaultView = null;\n }\n\n private resetKeepAlivePanes(): void {\n for (const [template, pane] of this.panes) {\n this.destroyPane(template, pane);\n }\n\n this.panes.clear();\n }\n\n private ensurePane(template: TemplateRef<unknown>): TabContentPane {\n const existing = this.panes.get(template);\n if (existing && !existing.view.destroyed) {\n return existing;\n }\n\n if (existing) {\n this.panes.delete(template);\n this.renderer.removeChild(existing.host.parentElement, existing.host);\n }\n\n const view = this.viewContainerRef.createEmbeddedView(template, null, this.viewContainerRef.length);\n const host = this.renderer.createElement('div') as HTMLElement;\n this.renderer.addClass(host, 'ax-tab-content-pane');\n this.renderer.setAttribute(host, 'hidden', '');\n\n const anchor = this.viewContainerRef.element.nativeElement;\n this.renderer.insertBefore(anchor.parentElement, host, anchor);\n\n for (const node of view.rootNodes) {\n this.renderer.appendChild(host, node);\n }\n\n const pane: TabContentPane = { view, host };\n this.panes.set(template, pane);\n return pane;\n }\n\n private showPane(template: TemplateRef<unknown>): void {\n for (const [paneTemplate, pane] of this.panes) {\n if (paneTemplate === template) {\n this.renderer.removeAttribute(pane.host, 'hidden');\n } else {\n this.renderer.setAttribute(pane.host, 'hidden', '');\n }\n }\n }\n\n private destroyPane(template: TemplateRef<unknown>, pane: TabContentPane): void {\n if (!pane.view.destroyed) {\n pane.view.destroy();\n }\n\n if (pane.host.parentElement) {\n this.renderer.removeChild(pane.host.parentElement, pane.host);\n }\n\n this.panes.delete(template);\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * Marks an `ng-template` as tab panel content. Use this instead of projecting\n * components directly into `ax-content` when you need `renderMode=\"default\"`\n * to destroy and recreate panel state on each tab switch.\n *\n * @example\n * ```html\n * <ax-tab-item text=\"Account\">\n * <ng-template axTabPanel>\n * <my-panel />\n * </ng-template>\n * </ax-tab-item>\n * ```\n */\n@Directive({\n selector: 'ng-template[axTabPanel]',\n})\nexport class AXTabPanelDirective {\n constructor(readonly template: TemplateRef<unknown>) {}\n}\n","import { AXClickEvent, AXComponent, MXComponentOptionChanged, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { AXDragDirective } from '@acorex/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTabPanelDirective } from './tab-panel.directive';\n\n/**\n * @category\n * Represents an individual tab item in a tab component.\n */\n@Component({\n selector: 'ax-tab-item',\n hostDirectives: [\n {\n directive: AXDragDirective,\n inputs: ['dragStartDelay', 'dragClonedTemplate'],\n },\n ],\n template: `\n @if (headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n text: this.text,\n key: this.key,\n active: this.active,\n disabled: this.disabled,\n },\n }\"\n ></ng-container>\n } @else {\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-tab-item-header\">\n <div class=\"ax-tab-item-text\">{{ text }}</div>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n }\n <ng-template #content>\n <ng-content select=\"ax-content\"> </ng-content>\n </ng-template>\n `,\n\n encapsulation: ViewEncapsulation.None,\n inputs: ['disabled'],\n outputs: ['disabledChange', 'onClick', 'onBlur', 'onFocus'],\n host: { ngSkipHydration: 'true' },\n imports: [NgTemplateOutlet],\n providers: [{ provide: AXComponent, useExisting: AXTabItemComponent }],\n})\nexport class AXTabItemComponent extends MXInteractiveComponent {\n private readonly _drag = inject(AXDragDirective, { self: true });\n\n private _reorderEnabled = false;\n private _panTouchAction: 'none' | 'pan-x' | 'pan-y' = 'none';\n\n constructor() {\n super();\n this._drag.isDragDisabled.set(true);\n this._drag.dragCursorOverride.set('none');\n }\n\n /**\n * Defines the text content to be displayed within the component.\n */\n @Input()\n text: string;\n\n /**\n * Defines a unique identifier for the component instance.\n */\n @Input()\n key: string;\n\n @ContentChild(AXTabPanelDirective)\n private _panel?: AXTabPanelDirective;\n\n @ViewChild('content')\n private _contentTemplate!: TemplateRef<unknown>;\n\n /**\n * Template rendered for this tab's content area.\n * Prefer `ng-template[axTabPanel]` so `renderMode=\"default\"` can recreate panel state.\n */\n get template(): TemplateRef<unknown> {\n return this._panel?.template ?? this._contentTemplate;\n }\n\n /**\n * Defines a custom template for the component's header.\n */\n @Input()\n headerTemplate: TemplateRef<unknown>;\n\n /**\n * Emits an event when the `active` state of the component changes.\n * @event\n */\n @Output()\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * Emits an event when the component is clicked.\n * @event\n */\n @Output()\n onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n\n /** @ignore */\n private _active = false;\n\n /**\n * Gets or sets the component's active state, controlling its behavior and appearance.\n * @param value {boolean}\n */\n @Input()\n public get active(): boolean {\n return this._active;\n }\n public set active(value: boolean) {\n this.setOption({\n name: 'active',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n /** @ignore */\n setReorderEnabled(enabled: boolean, delay = 0, touchAction: 'none' | 'pan-x' | 'pan-y' = 'none'): void {\n this._reorderEnabled = enabled;\n this._panTouchAction = touchAction;\n this._drag.startDelay.set(enabled ? delay : 0);\n this._drag.dragTouchAction.set(touchAction);\n this._drag.dragCursorOverride.set(enabled ? 'grab' : 'none');\n this.updateDragState();\n }\n\n /** @ignore */\n private updateDragState(): void {\n this._drag.isDragDisabled.set(!this._reorderEnabled || this.disabled);\n this.applyScrollTouchAction();\n }\n\n /** @ignore */\n private applyScrollTouchAction(): void {\n const handle = this.getHostElement();\n if (this._reorderEnabled) {\n return;\n }\n\n if (this._panTouchAction !== 'none') {\n handle.style.touchAction = this._panTouchAction;\n } else {\n handle.style.removeProperty('touch-action');\n }\n }\n\n /**\n * @ignore\n */\n @HostListener('click', ['$event'])\n __hostClick(e: MouseEvent) {\n if (!this.disabled) {\n this.getHostElement().scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n }\n\n /**\n * @ignore\n */\n protected override internalOptionChanged(option: MXComponentOptionChanged<any>): void {\n //TODO: change to hostbind\n const classListRef = this.getHostElement().classList;\n if (option.name == 'disabled') {\n option.value ? classListRef.add('ax-state-disabled') : classListRef.remove('ax-state-disabled');\n this.updateDragState();\n }\n if (option.name == 'active') {\n option.value ? classListRef.add('ax-state-active') : classListRef.remove('ax-state-active');\n }\n }\n\n /**\n * Gets the component's position and size statistics.\n *\n * @returns object with width, height, left, and top properties\n */\n getStats() {\n return {\n width: this.getHostElement().offsetWidth,\n height: this.getHostElement().offsetHeight,\n left: this.getHostElement().offsetLeft,\n top: this.getHostElement().offsetTop,\n };\n }\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport { AXTabItemComponent } from './tab-item.component';\n\nexport class AXTabStripChangedEvent extends AXEvent {\n tab: AXTabItemComponent;\n index: number;\n}\n\n/** Event emitted when tab items are reordered via drag and drop. */\nexport class AXTabsReorderedEvent extends AXEvent {\n tab: AXTabItemComponent;\n previousIndex: number;\n currentIndex: number;\n}\n\nexport type AXTabLook = 'default' | 'pills' | 'pills-color' | 'with-line' | 'with-line-color' | 'classic' | 'custom';\n\nexport type AXTabLocation = 'top' | 'bottom' | 'start' | 'end';\n\nexport type AXTabsRenderMode = 'default' | 'all-tabs' | 'on-demand';\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXDropListDirective, AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';\nimport { AXHorizontalScrollDirective } from '@acorex/cdk/horizontal-scroll';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n Component,\n ContentChildren,\n DestroyRef,\n effect,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n input,\n Input,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTabContentDirective } from './tab-content.directive';\nimport { AXTabItemComponent } from './tab-item.component';\nimport { AXTabLocation, AXTabLook, AXTabsRenderMode, AXTabsReorderedEvent, AXTabStripChangedEvent } from './tabs.class';\n\ninterface TabIndicatorStats {\n width: number;\n height: number;\n left: number;\n top: number;\n}\n\n/**\n * @category\n * A component that serves as a container for tab items.\n */\n@Component({\n selector: 'ax-tabs',\n hostDirectives: [AXDropListDirective, AXHorizontalScrollDirective],\n template: `<ng-content select=\"ax-tab-item\"></ng-content><span class=\"ax-tab-indicator\" #indicator></span>`,\n styleUrl: './tabs.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXTabsComponent }],\n})\nexport class AXTabsComponent extends MXBaseComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly _dropList = inject(AXDropListDirective, { self: true });\n private readonly _scroll = inject(AXHorizontalScrollDirective, { self: true });\n\n /**\n * @ignore\n */\n @ContentChildren(AXTabItemComponent)\n private _contentTabs!: QueryList<AXTabItemComponent>;\n\n /**\n * Sets the appearance style of the tab component.\n * @defaultValue 'default'\n */\n look = input<AXTabLook>('default');\n\n /**\n * Specifies the position of the tab component.\n * @defaultValue 'bottom'\n */\n location = input<AXTabLocation>('bottom');\n\n /**\n * Enables drag-and-drop reordering of tab items. Reordering starts only after the user\n * presses and holds a tab for {@link reorderDelay} milliseconds; a quick swipe without\n * holding scrolls the strip instead.\n * @defaultValue false\n */\n reorderable = input(false, { transform: booleanAttribute });\n\n /**\n * Press-and-hold duration in milliseconds before a tab can be dragged to reorder.\n * After this delay the cursor changes to indicate reorder mode. Moving before the\n * delay ends cancels reorder and allows swipe or pan scrolling instead.\n * @defaultValue 250\n */\n reorderDelay = input(250);\n\n /**\n * Controls how tab content is rendered in the DOM.\n *\n * - `default` — Only the active tab's content is in the DOM. Switching tabs replaces content and does not preserve state.\n * - `all-tabs` — All tab contents are rendered and kept in the DOM. State is preserved; higher memory use.\n * - `on-demand` — Only the active tab is rendered initially. Other tabs are rendered on first visit and then kept; state is preserved.\n *\n * @defaultValue 'default'\n */\n renderMode = input<AXTabsRenderMode>('default');\n\n /**\n * When true, stacks prefix, title, and suffix vertically inside each tab header\n * instead of arranging them in a horizontal row.\n * @defaultValue false\n */\n stacked = input(false, { transform: booleanAttribute });\n\n /**\n * @defaultValue 'false'\n * Specifies whether the component should resize to fit its parent container.\n */\n @Input()\n fitParent = false;\n\n /**\n * @defaultValue 'false'\n * Applies a minimum width constraint to the component.\n */\n @Input()\n minWidth = false;\n\n /**\n * The `AXTabContentDirective` associated with the tab.\n */\n @Input()\n set content(value: AXTabContentDirective) {\n this._content = value;\n if (value && this._selectedItem) {\n this._renderContent(this._selectedItem);\n }\n }\n get content(): AXTabContentDirective {\n return this._content;\n }\n\n private _content!: AXTabContentDirective;\n\n private indicator = viewChild<ElementRef<HTMLSpanElement>>('indicator');\n\n private zone = inject(NgZone);\n private platformId = inject(PLATFORM_ID);\n\n /** @ignore */\n private _isUserInteraction = false;\n\n /** @ignore */\n private _clickSubscriptions = new WeakSet<AXTabItemComponent>();\n\n get items(): AXTabItemComponent[] {\n const tabs = this._contentTabs?.toArray() ?? [];\n if (!isPlatformBrowser(this.platformId) || tabs.length < 2) {\n return tabs;\n }\n return [...tabs].sort((a, b) =>\n a.getHostElement().compareDocumentPosition(b.getHostElement()) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1,\n );\n }\n\n /** @ignore */\n private _selectedItem!: AXTabItemComponent;\n\n /** @ignore */\n get selectedIndex(): number {\n return this.items.indexOf(this._selectedItem);\n }\n\n /** @ignore */\n get selectedItem(): AXTabItemComponent {\n return this._selectedItem;\n }\n\n private changes: ResizeObserver;\n private activeTab = signal<AXTabItemComponent | null>(null);\n private viewReady = signal(false);\n private lastRenderMode: AXTabsRenderMode | null = null;\n\n #reorderableEffect = effect(() => {\n this._dropList.isSortingDisabled.set(!this.reorderable());\n this._syncDragState();\n });\n\n #orientationEffect = effect(() => {\n const loc = this.location();\n const vertical = loc === 'start' || loc === 'end';\n const orientation = vertical ? 'vertical' : 'horizontal';\n this._dropList.orientation.set(orientation);\n this._scroll.scrollOrientation.set(orientation);\n });\n\n #tabChange = effect(() => {\n const look = this.look();\n const location = this.location();\n const activeTab = this.activeTab();\n if (!location || !activeTab || !this.viewReady()) {\n return;\n }\n if (look !== 'with-line-color' && look !== 'with-line') {\n return;\n }\n this.scheduleIndicatorUpdate(activeTab);\n });\n\n #renderModeEffect = effect(() => {\n const mode = this.renderMode();\n const selected = this._selectedItem;\n if (!selected || !this.content) {\n return;\n }\n if (this.lastRenderMode !== null && this.lastRenderMode !== mode) {\n this._renderContent(selected);\n }\n });\n\n /**\n * @event\n */\n @Output()\n onActiveTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\n\n /**\n * Emitted when tab items are reordered via drag and drop after the press-and-hold\n * delay has elapsed and the user drags a tab to a new position.\n * @event\n */\n @Output()\n onTabsReordered: EventEmitter<AXTabsReorderedEvent> = new EventEmitter<AXTabsReorderedEvent>();\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string[] {\n const cssClasses: string[] = [];\n cssClasses.push(`ax-${this.look()}`);\n cssClasses.push(`ax-${this.location()}`);\n if (this.fitParent) cssClasses.push(`ax-tabs-fit`);\n if (this.reorderable()) cssClasses.push(`ax-tabs-reorderable`);\n if (this.stacked()) cssClasses.push(`ax-tabs-stacked`);\n return cssClasses;\n }\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.viewReady.set(true);\n this.scheduleIndicatorUpdate(this.activeTab());\n });\n\n const dropSub = this._dropList.dropListDropped.subscribe((event) => {\n if (this.reorderable()) {\n this._applyReorder(event);\n }\n });\n const previewSub = this._dropList.sortPreviewChanged.subscribe(() => {\n this.scheduleIndicatorUpdate(this.activeTab());\n });\n\n this.destroyRef.onDestroy(() => {\n dropSub.unsubscribe();\n previewSub.unsubscribe();\n });\n }\n\n /** @ignore */\n ngAfterContentInit() {\n this._contentTabs.changes.subscribe(() => {\n this._bindOnClickEvent();\n });\n }\n\n /** @ignore */\n ngAfterViewInit() {\n this._bindOnClickEvent();\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.changes = new ResizeObserver((entries) => {\n const activeTab = this.activeTab();\n if (entries[0].contentRect.width && activeTab) {\n const indicatorEl = this.indicator()?.nativeElement;\n if (!indicatorEl) {\n return;\n }\n this.renderer.setStyle(indicatorEl, 'transition', 'none');\n this.setIndicatorPosition(activeTab);\n this.renderer.removeStyle(indicatorEl, 'transition');\n }\n });\n this._observeActiveTabForResize(this.activeTab());\n });\n }\n }\n\n ngOnDestroy(): void {\n this.changes?.disconnect();\n }\n\n /** @ignore */\n private _bindOnClickEvent() {\n const selected = this.items.find((c) => c.active) || this.items[0];\n this.select(selected);\n this.items.forEach((c) => {\n if (this._clickSubscriptions.has(c)) {\n return;\n }\n this._clickSubscriptions.add(c);\n c.onClick.subscribe((t) => {\n this._isUserInteraction = t.nativeEvent?.isTrusted;\n this.select(c);\n });\n });\n this._syncDragState();\n }\n\n /** @ignore */\n private _syncDragState(): void {\n const reorderEnabled = this.reorderable();\n const vertical = this.location() === 'start' || this.location() === 'end';\n const touchAction = vertical ? 'pan-x' : 'pan-y';\n this.items.forEach((tab) => {\n tab.setReorderEnabled(reorderEnabled, this.reorderDelay(), touchAction);\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (reorderEnabled) {\n this.renderer.setStyle(\n tab.getHostElement(),\n 'transition-property',\n 'transform, opacity, translate, background-color, color',\n );\n } else {\n this.renderer.removeStyle(tab.getHostElement(), 'transition-property');\n }\n });\n }\n\n /** @ignore */\n private _applyReorder(event: AXDropListDroppedEvent): void {\n const { previousIndex, currentIndex, item } = event;\n if (previousIndex === currentIndex || previousIndex < 0 || currentIndex < 0) {\n return;\n }\n\n const movedEl = item.element();\n const parent = movedEl.parentElement;\n if (!parent) {\n return;\n }\n\n const tabsBeforeMove = this.items.map((t) => t.getHostElement());\n const tabItem = this.items[previousIndex];\n const indicator = this.indicator()?.nativeElement;\n\n let refNode: Node | null = null;\n if (currentIndex >= tabsBeforeMove.length - 1) {\n refNode = indicator?.parentElement === parent ? indicator : null;\n } else {\n const refIndex = currentIndex > previousIndex ? currentIndex + 1 : currentIndex;\n refNode = tabsBeforeMove[refIndex] ?? (indicator?.parentElement === parent ? indicator : null);\n }\n\n if (refNode) {\n this.renderer.insertBefore(parent, movedEl, refNode);\n } else {\n this.renderer.appendChild(parent, movedEl);\n }\n\n this.zone.run(() => {\n this.onTabsReordered.emit({\n component: this,\n tab: tabItem,\n previousIndex,\n currentIndex,\n });\n });\n\n this.scheduleIndicatorUpdate(this.activeTab());\n setTimeout(() => this.scheduleIndicatorUpdate(this.activeTab()), 200);\n }\n\n /** @ignore */\n private _observeActiveTabForResize(tab: AXTabItemComponent | null): void {\n if (!this.changes || !isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this.changes.disconnect();\n if (tab) {\n this.changes.observe(tab.getHostElement());\n }\n this.changes.observe(this.getHostElement());\n }\n\n /** @ignore */\n private scheduleIndicatorUpdate(tab: AXTabItemComponent | null): void {\n if (!tab || !this.viewReady()) {\n return;\n }\n\n const look = this.look();\n if (look !== 'with-line' && look !== 'with-line-color') {\n return;\n }\n\n queueMicrotask(() => {\n this.setIndicatorPosition(tab);\n });\n }\n\n /**\n * Activates the specified tab and updates the content.\n *\n * @param tab - The tab to select, either by index (number) or by component instance\n */\n select(tab: number | AXTabItemComponent) {\n const tabItem: AXTabItemComponent = typeof tab == 'number' ? this.items[tab] : tab;\n if (!tabItem) {\n return;\n }\n\n const isSameTab = this._selectedItem === tabItem;\n this.activeTab.set(tabItem);\n this._renderContent(tabItem);\n if (isSameTab) {\n return;\n }\n\n this._selectedItem = tabItem;\n this.items.forEach((c) => (c.active = false));\n tabItem.active = true;\n this.cdr.markForCheck();\n this.onActiveTabChanged.emit({\n component: this,\n isUserInteraction: this._isUserInteraction,\n tab: tabItem,\n index: this.selectedIndex,\n });\n this._isUserInteraction = false;\n this._observeActiveTabForResize(tabItem);\n this.scheduleIndicatorUpdate(tabItem);\n }\n\n /** @ignore */\n private _renderContent(tabItem: AXTabItemComponent): void {\n if (!this.content || !tabItem?.template) {\n return;\n }\n\n const mode = this.renderMode();\n const templates = this.items.map((item) => item.template).filter(Boolean);\n\n if (this.lastRenderMode !== null && this.lastRenderMode !== mode) {\n this.content.reset();\n }\n\n this.lastRenderMode = mode;\n\n if (mode === 'default') {\n this.content.activate(tabItem.template, mode);\n return;\n }\n\n this.content.sync(templates);\n\n if (mode === 'all-tabs') {\n this.content.preload(templates);\n }\n\n this.content.activate(tabItem.template, mode);\n }\n\n /** @ignore */\n private getTabIndicatorStats(tabItem: AXTabItemComponent): TabIndicatorStats {\n const tabEl = tabItem.getHostElement();\n const stats = tabItem.getStats();\n\n if (!isPlatformBrowser(this.platformId)) {\n return stats;\n }\n\n const transform = tabEl.style.transform || getComputedStyle(tabEl).transform;\n if (!transform || transform === 'none') {\n return stats;\n }\n\n try {\n const matrix = new DOMMatrixReadOnly(transform);\n return {\n ...stats,\n left: stats.left + matrix.m41,\n top: stats.top + matrix.m42,\n };\n } catch {\n return stats;\n }\n }\n\n private setIndicatorPosition(tabItem: AXTabItemComponent) {\n const indicatorEl = this.indicator()?.nativeElement;\n if (!indicatorEl) {\n return;\n }\n\n const itemStats = this.getTabIndicatorStats(tabItem);\n const indicatorStyle = indicatorEl.style;\n\n if (this.location() === 'top' || this.location() === 'bottom') {\n indicatorStyle.width = `${itemStats.width}px`;\n indicatorStyle.height = `var(--ax-comp-tabs-indicator-size)`;\n indicatorStyle.left = `${itemStats.left}px`;\n indicatorStyle.right = `unset`;\n if (this.location() === 'top') {\n indicatorStyle.top = `0px`;\n indicatorStyle.bottom = `unset`;\n }\n if (this.location() === 'bottom') {\n indicatorStyle.top = `unset`;\n indicatorStyle.bottom = `0px`;\n }\n }\n if (this.location() === 'start' || this.location() === 'end') {\n indicatorStyle.width = ` var(--ax-comp-tabs-indicator-size)`;\n indicatorStyle.height = `${itemStats.height}px`;\n indicatorStyle.top = `${itemStats.top}px`;\n indicatorStyle.bottom = `unset`;\n indicatorStyle.left = `unset`;\n indicatorStyle.right = `unset`;\n if (this.location() === 'start') {\n indicatorStyle.insetInlineStart = `0px`;\n indicatorStyle.insetInlineEnd = `unset`;\n }\n if (this.location() === 'end') {\n indicatorStyle.insetInlineStart = `unset`;\n indicatorStyle.insetInlineEnd = `0px`;\n }\n }\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXTabContentDirective } from './tab-content.directive';\nimport { AXTabItemComponent } from './tab-item.component';\nimport { AXTabPanelDirective } from './tab-panel.directive';\nimport { AXTabsComponent } from './tabs.component';\n\nconst COMPONENT = [AXTabsComponent, AXTabItemComponent, AXTabContentDirective, AXTabPanelDirective];\nconst MODULES = [CommonModule, PortalModule, AXDecoratorModule];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -177,7 +177,7 @@ class AXTagBoxComponent extends classes((MXInputBaseValueComponent), MXLookCompo
177
177
  multi: true,
178
178
  },
179
179
  AXUnsubscriber,
180
- ], queries: [{ propertyName: "autocompleteComponent", first: true, predicate: AXAutocompleteComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n (click)=\"input.focus()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n class=\"ax-editor-container ax-default min-w-0 justify-start! gap-1 {{ look }}\"\n>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div class=\"ax-tags-container flex w-0 min-w-0 flex-1 flex-wrap content-center items-center gap-1\">\n @for (tag of value; track $index; let i = $index) {\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: tag, index: i }\"\n ></ng-container>\n } @else {\n <ax-tag\n [text]=\"(getFieldValue(tag, textField()) ?? '') + ''\"\n look=\"twotone\"\n (onClick)=\"onTagClick.emit($event)\"\n (onDblClick)=\"onTagDblClick.emit($event)\"\n (onContextMenu)=\"onTagContextMenu.emit($event)\"\n >\n @if (!getFieldValue(tag, readonlyField()) && !disabled && !readonly) {\n <ax-suffix>\n <button (click)=\"removeItem(i)\"><ax-icon class=\"ax-icon ax-icon-close\"></ax-icon></button>\n </ax-suffix>\n }\n </ax-tag>\n }\n }\n <input\n #input\n [name]=\"name\"\n [id]=\"id\"\n class=\"ax-input m-0! h-7.5 min-w-16 w-auto! flex-1 basis-16 ps-2\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"emitOnBlurEvent($event)\"\n [attr.placeholder]=\"placeholder\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n [ngModelOptions]=\"{ updateOn: updateOn() }\"\n (ngModelChange)=\"emitOnTextChanged($event, true)\"\n />\n </div>\n <div class=\"ax-tag-box-actions flex shrink-0 grow-0 basis-auto items-center self-center gap-1\">\n @if (!disabled && !readonly && value?.length) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n </div>\n</div>\n<ng-content select=\"ax-autocomplete\"> </ng-content>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["ax-tag-box{display:block;width:100%;min-width:calc(var(--spacing, .25rem) * 0)}ax-tag-box .ax-editor-container{height:auto!important;min-height:var(--ax-sys-size-base,2.5rem);width:100%;min-width:calc(var(--spacing, .25rem) * 0);align-items:center;justify-content:flex-start!important;gap:calc(var(--spacing, .25rem) * 1);padding:calc(var(--spacing, .25rem) * 1)}ax-tag-box .ax-editor-container .ax-tags-container{display:flex!important;width:calc(var(--spacing, .25rem) * 0)!important;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0)!important;flex:1!important;flex-wrap:wrap;align-content:center;align-items:center;gap:calc(var(--spacing, .25rem) * 1)}ax-tag-box .ax-editor-container .ax-tags-container ax-tag{--ax-comp-tag-border-radius: .375rem}ax-tag-box .ax-editor-container .ax-tags-container input.ax-input{margin:calc(var(--spacing, .25rem) * 0)!important;height:calc(var(--spacing, .25rem) * 7.5);width:auto!important;max-width:100%;min-width:calc(var(--spacing, .25rem) * 16)!important;padding-inline-start:calc(var(--spacing, .25rem) * 2);flex:1 1 4rem!important}ax-tag-box .ax-editor-container .ax-tag-box-actions{display:flex!important;flex:none!important;align-items:center;gap:calc(var(--spacing, .25rem) * 1);align-self:center!important}ax-tag-box .ax-editor-container .ax-tag-box-actions ax-suffix,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-clear-button,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-prefix{flex:none!important}ax-tag-box .ax-editor-container .ax-tag-box-actions ax-suffix>ax-button,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-prefix>ax-button{height:auto!important;flex:none!important;align-self:center!important}ax-tag-box .ax-editor-container .ax-tag-box-actions ax-suffix>ax-button>button,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-prefix>ax-button>button{aspect-ratio:1 / 1!important;height:var(--ax-sys-size-base, 2.5rem)!important;width:var(--ax-sys-size-base, 2.5rem)!important;max-width:var(--ax-sys-size-base, 2.5rem)!important;max-height:var(--ax-sys-size-base, 2.5rem)!important}ax-tag-box ax-clear-button{height:calc(var(--spacing, .25rem) * 4);flex-shrink:0}@layer components{app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXTagComponent, selector: "ax-tag", inputs: ["color", "look", "text"], outputs: ["onClick", "onDblClick", "onContextMenu"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
180
+ ], queries: [{ propertyName: "autocompleteComponent", first: true, predicate: AXAutocompleteComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n (click)=\"input.focus()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n class=\"ax-editor-container ax-default min-w-0 justify-start! {{ look }}\"\n>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div class=\"ax-tags-container flex w-0 min-w-0 flex-1 flex-wrap content-center items-center gap-1\">\n @for (tag of value; track $index; let i = $index) {\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: tag, index: i }\"\n ></ng-container>\n } @else {\n <ax-tag\n [text]=\"(getFieldValue(tag, textField()) ?? '') + ''\"\n look=\"twotone\"\n (onClick)=\"onTagClick.emit($event)\"\n (onDblClick)=\"onTagDblClick.emit($event)\"\n (onContextMenu)=\"onTagContextMenu.emit($event)\"\n >\n @if (!getFieldValue(tag, readonlyField()) && !disabled && !readonly) {\n <ax-suffix>\n <button (click)=\"removeItem(i)\"><ax-icon class=\"ax-icon ax-icon-close\"></ax-icon></button>\n </ax-suffix>\n }\n </ax-tag>\n }\n }\n <input\n #input\n [name]=\"name\"\n [id]=\"id\"\n class=\"ax-input m-0! h-7.5 min-w-16 w-auto! flex-1 basis-16 ps-2\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"emitOnBlurEvent($event)\"\n [attr.placeholder]=\"placeholder\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n [ngModelOptions]=\"{ updateOn: updateOn() }\"\n (ngModelChange)=\"emitOnTextChanged($event, true)\"\n />\n </div>\n @if (!disabled && !readonly && value?.length) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n</div>\n<ng-content select=\"ax-autocomplete\"> </ng-content>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["ax-tag-box{display:block;width:100%;min-width:calc(var(--spacing, .25rem) * 0)}ax-tag-box .ax-tags-container ax-tag{--ax-comp-tag-border-radius: .375rem}ax-tag-box .ax-tags-container ax-tag ax-prefix,ax-tag-box .ax-tags-container ax-tag ax-suffix{padding:calc(var(--spacing, .25rem) * 0)!important}ax-tag-box .ax-tags-container input.ax-input{margin:calc(var(--spacing, .25rem) * 0)!important;height:calc(var(--spacing, .25rem) * 7.5);width:auto!important;max-width:100%;min-width:calc(var(--spacing, .25rem) * 16)!important;padding-inline-start:calc(var(--spacing, .25rem) * 2);flex:1 1 4rem!important}ax-tag-box ax-clear-button{height:calc(var(--spacing, .25rem) * 4);flex-shrink:0;align-self:center}@layer components{app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXTagComponent, selector: "ax-tag", inputs: ["color", "look", "text"], outputs: ["onClick", "onDblClick", "onContextMenu"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
181
181
  }
182
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXTagBoxComponent, decorators: [{
183
183
  type: Component,
@@ -217,7 +217,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
217
217
  multi: true,
218
218
  },
219
219
  AXUnsubscriber,
220
- ], imports: [FormsModule, AXDecoratorGenericComponent, AXDecoratorIconComponent, AXTagComponent, NgTemplateOutlet], template: "<div\n (click)=\"input.focus()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n class=\"ax-editor-container ax-default min-w-0 justify-start! gap-1 {{ look }}\"\n>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div class=\"ax-tags-container flex w-0 min-w-0 flex-1 flex-wrap content-center items-center gap-1\">\n @for (tag of value; track $index; let i = $index) {\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: tag, index: i }\"\n ></ng-container>\n } @else {\n <ax-tag\n [text]=\"(getFieldValue(tag, textField()) ?? '') + ''\"\n look=\"twotone\"\n (onClick)=\"onTagClick.emit($event)\"\n (onDblClick)=\"onTagDblClick.emit($event)\"\n (onContextMenu)=\"onTagContextMenu.emit($event)\"\n >\n @if (!getFieldValue(tag, readonlyField()) && !disabled && !readonly) {\n <ax-suffix>\n <button (click)=\"removeItem(i)\"><ax-icon class=\"ax-icon ax-icon-close\"></ax-icon></button>\n </ax-suffix>\n }\n </ax-tag>\n }\n }\n <input\n #input\n [name]=\"name\"\n [id]=\"id\"\n class=\"ax-input m-0! h-7.5 min-w-16 w-auto! flex-1 basis-16 ps-2\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"emitOnBlurEvent($event)\"\n [attr.placeholder]=\"placeholder\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n [ngModelOptions]=\"{ updateOn: updateOn() }\"\n (ngModelChange)=\"emitOnTextChanged($event, true)\"\n />\n </div>\n <div class=\"ax-tag-box-actions flex shrink-0 grow-0 basis-auto items-center self-center gap-1\">\n @if (!disabled && !readonly && value?.length) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n </div>\n</div>\n<ng-content select=\"ax-autocomplete\"> </ng-content>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["ax-tag-box{display:block;width:100%;min-width:calc(var(--spacing, .25rem) * 0)}ax-tag-box .ax-editor-container{height:auto!important;min-height:var(--ax-sys-size-base,2.5rem);width:100%;min-width:calc(var(--spacing, .25rem) * 0);align-items:center;justify-content:flex-start!important;gap:calc(var(--spacing, .25rem) * 1);padding:calc(var(--spacing, .25rem) * 1)}ax-tag-box .ax-editor-container .ax-tags-container{display:flex!important;width:calc(var(--spacing, .25rem) * 0)!important;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0)!important;flex:1!important;flex-wrap:wrap;align-content:center;align-items:center;gap:calc(var(--spacing, .25rem) * 1)}ax-tag-box .ax-editor-container .ax-tags-container ax-tag{--ax-comp-tag-border-radius: .375rem}ax-tag-box .ax-editor-container .ax-tags-container input.ax-input{margin:calc(var(--spacing, .25rem) * 0)!important;height:calc(var(--spacing, .25rem) * 7.5);width:auto!important;max-width:100%;min-width:calc(var(--spacing, .25rem) * 16)!important;padding-inline-start:calc(var(--spacing, .25rem) * 2);flex:1 1 4rem!important}ax-tag-box .ax-editor-container .ax-tag-box-actions{display:flex!important;flex:none!important;align-items:center;gap:calc(var(--spacing, .25rem) * 1);align-self:center!important}ax-tag-box .ax-editor-container .ax-tag-box-actions ax-suffix,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-clear-button,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-prefix{flex:none!important}ax-tag-box .ax-editor-container .ax-tag-box-actions ax-suffix>ax-button,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-prefix>ax-button{height:auto!important;flex:none!important;align-self:center!important}ax-tag-box .ax-editor-container .ax-tag-box-actions ax-suffix>ax-button>button,ax-tag-box .ax-editor-container .ax-tag-box-actions ax-prefix>ax-button>button{aspect-ratio:1 / 1!important;height:var(--ax-sys-size-base, 2.5rem)!important;width:var(--ax-sys-size-base, 2.5rem)!important;max-width:var(--ax-sys-size-base, 2.5rem)!important;max-height:var(--ax-sys-size-base, 2.5rem)!important}ax-tag-box ax-clear-button{height:calc(var(--spacing, .25rem) * 4);flex-shrink:0}@layer components{app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
220
+ ], imports: [FormsModule, AXDecoratorGenericComponent, AXDecoratorIconComponent, AXTagComponent, NgTemplateOutlet], template: "<div\n (click)=\"input.focus()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n class=\"ax-editor-container ax-default min-w-0 justify-start! {{ look }}\"\n>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div class=\"ax-tags-container flex w-0 min-w-0 flex-1 flex-wrap content-center items-center gap-1\">\n @for (tag of value; track $index; let i = $index) {\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: tag, index: i }\"\n ></ng-container>\n } @else {\n <ax-tag\n [text]=\"(getFieldValue(tag, textField()) ?? '') + ''\"\n look=\"twotone\"\n (onClick)=\"onTagClick.emit($event)\"\n (onDblClick)=\"onTagDblClick.emit($event)\"\n (onContextMenu)=\"onTagContextMenu.emit($event)\"\n >\n @if (!getFieldValue(tag, readonlyField()) && !disabled && !readonly) {\n <ax-suffix>\n <button (click)=\"removeItem(i)\"><ax-icon class=\"ax-icon ax-icon-close\"></ax-icon></button>\n </ax-suffix>\n }\n </ax-tag>\n }\n }\n <input\n #input\n [name]=\"name\"\n [id]=\"id\"\n class=\"ax-input m-0! h-7.5 min-w-16 w-auto! flex-1 basis-16 ps-2\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"emitOnBlurEvent($event)\"\n [attr.placeholder]=\"placeholder\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n [ngModelOptions]=\"{ updateOn: updateOn() }\"\n (ngModelChange)=\"emitOnTextChanged($event, true)\"\n />\n </div>\n @if (!disabled && !readonly && value?.length) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n</div>\n<ng-content select=\"ax-autocomplete\"> </ng-content>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["ax-tag-box{display:block;width:100%;min-width:calc(var(--spacing, .25rem) * 0)}ax-tag-box .ax-tags-container ax-tag{--ax-comp-tag-border-radius: .375rem}ax-tag-box .ax-tags-container ax-tag ax-prefix,ax-tag-box .ax-tags-container ax-tag ax-suffix{padding:calc(var(--spacing, .25rem) * 0)!important}ax-tag-box .ax-tags-container input.ax-input{margin:calc(var(--spacing, .25rem) * 0)!important;height:calc(var(--spacing, .25rem) * 7.5);width:auto!important;max-width:100%;min-width:calc(var(--spacing, .25rem) * 16)!important;padding-inline-start:calc(var(--spacing, .25rem) * 2);flex:1 1 4rem!important}ax-tag-box ax-clear-button{height:calc(var(--spacing, .25rem) * 4);flex-shrink:0;align-self:center}@layer components{app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
221
221
  }], propDecorators: { addOnComma: [{ type: i0.Input, args: [{ isSignal: true, alias: "addOnComma", required: false }] }], addOnEnter: [{ type: i0.Input, args: [{ isSignal: true, alias: "addOnEnter", required: false }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], readonlyField: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonlyField", required: false }] }], allowDuplicateValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowDuplicateValues", required: false }] }], tagTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "tagTemplate", required: false }] }], onTagClick: [{ type: i0.Output, args: ["onTagClick"] }], onTagDblClick: [{ type: i0.Output, args: ["onTagDblClick"] }], onTagContextMenu: [{ type: i0.Output, args: ["onTagContextMenu"] }], autocompleteComponent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AXAutocompleteComponent), { isSignal: true }] }], __hostName: [{
222
222
  type: HostBinding,
223
223
  args: ['attr.name']
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-tag-box.mjs","sources":["../../../../packages/components/tag-box/src/lib/tag-box.component.ts","../../../../packages/components/tag-box/src/lib/tag-box.component.html","../../../../packages/components/tag-box/src/lib/tag-box.module.ts","../../../../packages/components/tag-box/src/acorex-components-tag-box.ts"],"sourcesContent":["import {\n AXAutocompleteParentComponent,\n AXClearableComponent,\n AXClickEvent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AXAutocompleteComponent } from '@acorex/components/autocomplete';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTagComponent } from '@acorex/components/tag';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n HostBinding,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n contentChild,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { castArray, cloneDeep, get, isNil, isNull, set } from 'lodash-es';\nimport { classes } from 'polytype';\n\n@Component({\n selector: 'ax-tag-box',\n templateUrl: 'tag-box.component.html',\n styleUrls: ['tag-box.component.css'],\n inputs: [\n 'disabled',\n 'tabIndex',\n 'readonly',\n 'value',\n 'state',\n 'name',\n 'id',\n 'placeholder',\n 'allowNull',\n 'type',\n 'look',\n ],\n outputs: [\n 'onBlur',\n 'onFocus',\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'readonlyChange',\n 'disabledChange',\n 'onKeyDown',\n 'onKeyUp',\n 'onKeyPress',\n ],\n encapsulation: ViewEncapsulation.None,\n\n providers: [\n { provide: AXComponent, useExisting: AXTagBoxComponent },\n { provide: AXValuableComponent, useExisting: AXTagBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXTagBoxComponent },\n { provide: AXClearableComponent, useExisting: AXTagBoxComponent },\n { provide: MXInputBaseValueComponent, useExisting: AXTagBoxComponent },\n { provide: AXAutocompleteParentComponent, useExisting: AXTagBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTagBoxComponent),\n multi: true,\n },\n AXUnsubscriber,\n ],\n imports: [FormsModule, AXDecoratorGenericComponent, AXDecoratorIconComponent, AXTagComponent, NgTemplateOutlet],\n})\nexport class AXTagBoxComponent\n extends classes(MXInputBaseValueComponent<unknown[]>, MXLookComponent, AXAutocompleteParentComponent<unknown[]>)\n implements OnInit\n{\n unsubscriber = inject(AXUnsubscriber);\n\n protected updateOn = signal<'change' | 'blur' | 'submit'>('change');\n\n addOnComma = input(true);\n addOnEnter = input(true);\n valueField = input('id');\n textField = input('text');\n readonlyField = input('readonly');\n allowDuplicateValues = input(false);\n tagTemplate = input<TemplateRef<unknown>>();\n\n onTagClick = output<AXClickEvent>();\n onTagDblClick = output<AXClickEvent>();\n onTagContextMenu = output<AXClickEvent>();\n\n inputValue = signal<string>('');\n\n private autocompleteComponent = contentChild(AXAutocompleteComponent);\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.onKeyDown.pipe(this.unsubscriber.takeUntilDestroy).subscribe((e) => {\n const input = this.inputValue().trim();\n\n if (e.nativeEvent.key === 'Enter' && this.addOnEnter()) {\n if (!input.length) return;\n this.addItems(this.convertString(input));\n }\n\n if (e.nativeEvent.key === ',' && this.addOnComma()) {\n if (!input.length) return;\n e.nativeEvent.preventDefault();\n\n if (!input || input === ',') {\n this.inputValue.set('');\n this.emitOnTextChanged('', true);\n return;\n }\n\n this.addItems(this.convertString(input));\n }\n\n if (e.nativeEvent.key === 'Backspace') {\n if (this.inputValue().length) return;\n this.removeItem(this.value?.length - 1);\n }\n });\n\n this.onItemSelected.pipe(this.unsubscriber.takeUntilDestroy).subscribe((e) => {\n const incomingItems = this.convertString(e.value);\n const currentValue = this.value ?? [];\n const vf = this.valueField();\n const filtered = incomingItems.filter((item) => !currentValue.some((prev) => get(prev, vf) === get(item, vf)));\n this.addItems(filtered);\n });\n }\n\n /**\n * Adds items to the tag box.\n *\n * @param items - Array of objects to add as tags\n */\n addItems(items: object[]) {\n if (this.disabled || this.readonly) {\n return;\n }\n //\n if (isNil(items) || items.length === 0) {\n return;\n }\n //\n const value = cloneDeep(this.value ?? []);\n // filter out duplicates instead of early return\n let itemsToAdd = items;\n if (!this.allowDuplicateValues()) {\n const vf = this.valueField();\n itemsToAdd = items.filter((item) => !value.some((prev) => get(prev, vf) === get(item, vf)));\n if (itemsToAdd.length === 0) {\n this.inputValue.set('');\n this.emitOnTextChanged('', true);\n return;\n }\n }\n\n this.inputValue.set('');\n this.emitOnTextChanged('', true);\n\n this.commitValue(value.concat(itemsToAdd), true);\n\n // sync autocomplete selection to avoid re-adding removed items\n this.syncAutocompleteSelection();\n }\n\n /**\n * Removes a tag at the specified index.\n *\n * @param index - Index of the tag to remove\n */\n removeItem(index: number) {\n if (this.disabled || this.readonly) {\n return;\n }\n const value = cloneDeep(this.value ?? []);\n value.splice(index, 1);\n this.commitValue(value, true);\n\n // sync autocomplete selection to avoid re-adding removed items\n this.syncAutocompleteSelection();\n }\n\n /**\n * Converts input values to tag objects.\n *\n * @param v - Value to convert (string, object, or array)\n * @returns Array of tag objects\n */\n convertString(v: unknown): object[] {\n const array = castArray(v);\n\n return array\n .map((c) => {\n if (!c) return null;\n if (typeof c === 'object') {\n return c;\n }\n const obj: Record<string, unknown> = {};\n set(obj, this.valueField(), c);\n set(obj, this.textField(), c);\n return obj;\n })\n .filter((c) => !isNull(c));\n }\n\n getFieldValue(item: unknown, path: string): unknown {\n return get(item as Record<string, unknown>, path);\n }\n\n /**\n * Keep autocomplete selected values in sync with current tags\n */\n private syncAutocompleteSelection(): void {\n const ac = this.autocompleteComponent();\n if (!ac) return;\n const vf = ac.valueField || this.valueField();\n const values = (this.value ?? []).map((t) => get(t as Record<string, unknown>, vf)).filter((v) => v != null);\n ac.value = ac.multiple ? values : (values[0] ?? null);\n }\n\n protected override internalSetValue(value: unknown): unknown[] {\n const result = this.convertString(value);\n return result;\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n}\n","<div\n (click)=\"input.focus()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n class=\"ax-editor-container ax-default min-w-0 justify-start! gap-1 {{ look }}\"\n>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div class=\"ax-tags-container flex w-0 min-w-0 flex-1 flex-wrap content-center items-center gap-1\">\n @for (tag of value; track $index; let i = $index) {\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: tag, index: i }\"\n ></ng-container>\n } @else {\n <ax-tag\n [text]=\"(getFieldValue(tag, textField()) ?? '') + ''\"\n look=\"twotone\"\n (onClick)=\"onTagClick.emit($event)\"\n (onDblClick)=\"onTagDblClick.emit($event)\"\n (onContextMenu)=\"onTagContextMenu.emit($event)\"\n >\n @if (!getFieldValue(tag, readonlyField()) && !disabled && !readonly) {\n <ax-suffix>\n <button (click)=\"removeItem(i)\"><ax-icon class=\"ax-icon ax-icon-close\"></ax-icon></button>\n </ax-suffix>\n }\n </ax-tag>\n }\n }\n <input\n #input\n [name]=\"name\"\n [id]=\"id\"\n class=\"ax-input m-0! h-7.5 min-w-16 w-auto! flex-1 basis-16 ps-2\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"emitOnBlurEvent($event)\"\n [attr.placeholder]=\"placeholder\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n [ngModelOptions]=\"{ updateOn: updateOn() }\"\n (ngModelChange)=\"emitOnTextChanged($event, true)\"\n />\n </div>\n <div class=\"ax-tag-box-actions flex shrink-0 grow-0 basis-auto items-center self-center gap-1\">\n @if (!disabled && !readonly && value?.length) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n </div>\n</div>\n<ng-content select=\"ax-autocomplete\"> </ng-content>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n","import { NgModule } from '@angular/core';\nimport { AXTagBoxComponent } from './tag-box.component';\n\n@NgModule({\n imports: [AXTagBoxComponent],\n exports: [AXTagBoxComponent],\n providers: [],\n})\nexport class AXTagBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-tag-box.mjs","sources":["../../../../packages/components/tag-box/src/lib/tag-box.component.ts","../../../../packages/components/tag-box/src/lib/tag-box.component.html","../../../../packages/components/tag-box/src/lib/tag-box.module.ts","../../../../packages/components/tag-box/src/acorex-components-tag-box.ts"],"sourcesContent":["import {\n AXAutocompleteParentComponent,\n AXClearableComponent,\n AXClickEvent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AXAutocompleteComponent } from '@acorex/components/autocomplete';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTagComponent } from '@acorex/components/tag';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n HostBinding,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n contentChild,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { castArray, cloneDeep, get, isNil, isNull, set } from 'lodash-es';\nimport { classes } from 'polytype';\n\n@Component({\n selector: 'ax-tag-box',\n templateUrl: 'tag-box.component.html',\n styleUrls: ['tag-box.component.css'],\n inputs: [\n 'disabled',\n 'tabIndex',\n 'readonly',\n 'value',\n 'state',\n 'name',\n 'id',\n 'placeholder',\n 'allowNull',\n 'type',\n 'look',\n ],\n outputs: [\n 'onBlur',\n 'onFocus',\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'readonlyChange',\n 'disabledChange',\n 'onKeyDown',\n 'onKeyUp',\n 'onKeyPress',\n ],\n encapsulation: ViewEncapsulation.None,\n\n providers: [\n { provide: AXComponent, useExisting: AXTagBoxComponent },\n { provide: AXValuableComponent, useExisting: AXTagBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXTagBoxComponent },\n { provide: AXClearableComponent, useExisting: AXTagBoxComponent },\n { provide: MXInputBaseValueComponent, useExisting: AXTagBoxComponent },\n { provide: AXAutocompleteParentComponent, useExisting: AXTagBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTagBoxComponent),\n multi: true,\n },\n AXUnsubscriber,\n ],\n imports: [FormsModule, AXDecoratorGenericComponent, AXDecoratorIconComponent, AXTagComponent, NgTemplateOutlet],\n})\nexport class AXTagBoxComponent\n extends classes(MXInputBaseValueComponent<unknown[]>, MXLookComponent, AXAutocompleteParentComponent<unknown[]>)\n implements OnInit\n{\n unsubscriber = inject(AXUnsubscriber);\n\n protected updateOn = signal<'change' | 'blur' | 'submit'>('change');\n\n addOnComma = input(true);\n addOnEnter = input(true);\n valueField = input('id');\n textField = input('text');\n readonlyField = input('readonly');\n allowDuplicateValues = input(false);\n tagTemplate = input<TemplateRef<unknown>>();\n\n onTagClick = output<AXClickEvent>();\n onTagDblClick = output<AXClickEvent>();\n onTagContextMenu = output<AXClickEvent>();\n\n inputValue = signal<string>('');\n\n private autocompleteComponent = contentChild(AXAutocompleteComponent);\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.onKeyDown.pipe(this.unsubscriber.takeUntilDestroy).subscribe((e) => {\n const input = this.inputValue().trim();\n\n if (e.nativeEvent.key === 'Enter' && this.addOnEnter()) {\n if (!input.length) return;\n this.addItems(this.convertString(input));\n }\n\n if (e.nativeEvent.key === ',' && this.addOnComma()) {\n if (!input.length) return;\n e.nativeEvent.preventDefault();\n\n if (!input || input === ',') {\n this.inputValue.set('');\n this.emitOnTextChanged('', true);\n return;\n }\n\n this.addItems(this.convertString(input));\n }\n\n if (e.nativeEvent.key === 'Backspace') {\n if (this.inputValue().length) return;\n this.removeItem(this.value?.length - 1);\n }\n });\n\n this.onItemSelected.pipe(this.unsubscriber.takeUntilDestroy).subscribe((e) => {\n const incomingItems = this.convertString(e.value);\n const currentValue = this.value ?? [];\n const vf = this.valueField();\n const filtered = incomingItems.filter((item) => !currentValue.some((prev) => get(prev, vf) === get(item, vf)));\n this.addItems(filtered);\n });\n }\n\n /**\n * Adds items to the tag box.\n *\n * @param items - Array of objects to add as tags\n */\n addItems(items: object[]) {\n if (this.disabled || this.readonly) {\n return;\n }\n //\n if (isNil(items) || items.length === 0) {\n return;\n }\n //\n const value = cloneDeep(this.value ?? []);\n // filter out duplicates instead of early return\n let itemsToAdd = items;\n if (!this.allowDuplicateValues()) {\n const vf = this.valueField();\n itemsToAdd = items.filter((item) => !value.some((prev) => get(prev, vf) === get(item, vf)));\n if (itemsToAdd.length === 0) {\n this.inputValue.set('');\n this.emitOnTextChanged('', true);\n return;\n }\n }\n\n this.inputValue.set('');\n this.emitOnTextChanged('', true);\n\n this.commitValue(value.concat(itemsToAdd), true);\n\n // sync autocomplete selection to avoid re-adding removed items\n this.syncAutocompleteSelection();\n }\n\n /**\n * Removes a tag at the specified index.\n *\n * @param index - Index of the tag to remove\n */\n removeItem(index: number) {\n if (this.disabled || this.readonly) {\n return;\n }\n const value = cloneDeep(this.value ?? []);\n value.splice(index, 1);\n this.commitValue(value, true);\n\n // sync autocomplete selection to avoid re-adding removed items\n this.syncAutocompleteSelection();\n }\n\n /**\n * Converts input values to tag objects.\n *\n * @param v - Value to convert (string, object, or array)\n * @returns Array of tag objects\n */\n convertString(v: unknown): object[] {\n const array = castArray(v);\n\n return array\n .map((c) => {\n if (!c) return null;\n if (typeof c === 'object') {\n return c;\n }\n const obj: Record<string, unknown> = {};\n set(obj, this.valueField(), c);\n set(obj, this.textField(), c);\n return obj;\n })\n .filter((c) => !isNull(c));\n }\n\n getFieldValue(item: unknown, path: string): unknown {\n return get(item as Record<string, unknown>, path);\n }\n\n /**\n * Keep autocomplete selected values in sync with current tags\n */\n private syncAutocompleteSelection(): void {\n const ac = this.autocompleteComponent();\n if (!ac) return;\n const vf = ac.valueField || this.valueField();\n const values = (this.value ?? []).map((t) => get(t as Record<string, unknown>, vf)).filter((v) => v != null);\n ac.value = ac.multiple ? values : (values[0] ?? null);\n }\n\n protected override internalSetValue(value: unknown): unknown[] {\n const result = this.convertString(value);\n return result;\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n}\n","<div\n (click)=\"input.focus()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n class=\"ax-editor-container ax-default min-w-0 justify-start! {{ look }}\"\n>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div class=\"ax-tags-container flex w-0 min-w-0 flex-1 flex-wrap content-center items-center gap-1\">\n @for (tag of value; track $index; let i = $index) {\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: tag, index: i }\"\n ></ng-container>\n } @else {\n <ax-tag\n [text]=\"(getFieldValue(tag, textField()) ?? '') + ''\"\n look=\"twotone\"\n (onClick)=\"onTagClick.emit($event)\"\n (onDblClick)=\"onTagDblClick.emit($event)\"\n (onContextMenu)=\"onTagContextMenu.emit($event)\"\n >\n @if (!getFieldValue(tag, readonlyField()) && !disabled && !readonly) {\n <ax-suffix>\n <button (click)=\"removeItem(i)\"><ax-icon class=\"ax-icon ax-icon-close\"></ax-icon></button>\n </ax-suffix>\n }\n </ax-tag>\n }\n }\n <input\n #input\n [name]=\"name\"\n [id]=\"id\"\n class=\"ax-input m-0! h-7.5 min-w-16 w-auto! flex-1 basis-16 ps-2\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [(ngModel)]=\"inputValue\"\n (blur)=\"emitOnBlurEvent($event)\"\n [attr.placeholder]=\"placeholder\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n [ngModelOptions]=\"{ updateOn: updateOn() }\"\n (ngModelChange)=\"emitOnTextChanged($event, true)\"\n />\n </div>\n @if (!disabled && !readonly && value?.length) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n</div>\n<ng-content select=\"ax-autocomplete\"> </ng-content>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n","import { NgModule } from '@angular/core';\nimport { AXTagBoxComponent } from './tag-box.component';\n\n@NgModule({\n imports: [AXTagBoxComponent],\n exports: [AXTagBoxComponent],\n providers: [],\n})\nexport class AXTagBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ class AXTextAreaComponent extends classes((MXInputBaseValueComponent), MXLookCom
39
39
  useExisting: forwardRef(() => AXTextAreaComponent),
40
40
  multi: true,
41
41
  },
42
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n>\n <textarea\n #input\n [name]=\"name\"\n [id]=\"id\"\n type=\"text\"\n [rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [class.ax-state-no-resizing]=\"!allowResize\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n ></textarea>\n @if (showCounter) {\n <div class=\"ax-counter\">\n {{ input.value.length }}\n @if (maxLength) {\n <span>/ {{ maxLength }}</span>\n }\n </div>\n }\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer components{ax-text-area{width:100%}ax-text-area .ax-editor-container{height:auto!important;padding-inline:calc(var(--spacing, .25rem) * 0)!important;padding-bottom:calc(var(--spacing, .25rem) * 0)!important}ax-text-area textarea{height:fit-content;width:100%;background-color:inherit;padding-inline:calc(var(--spacing, .25rem) * 3)}ax-text-area textarea:focus{--tw-outline-style: none;outline-style:none}ax-text-area>ax-prefix,ax-text-area>ax-suffix{margin-bottom:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 3)}ax-text-area .ax-counter{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 2);bottom:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:50%}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
42
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n>\n <textarea\n #input\n [name]=\"name\"\n [id]=\"id\"\n type=\"text\"\n [rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [class.ax-state-no-resizing]=\"!allowResize\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n ></textarea>\n @if (showCounter) {\n <div class=\"ax-counter\">\n {{ input.value.length }}\n @if (maxLength) {\n <span>/ {{ maxLength }}</span>\n }\n </div>\n }\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer components{ax-text-area{width:100%}ax-text-area .ax-editor-container{height:auto!important;min-height:var(--ax-sys-size-base);align-items:stretch;padding:calc(var(--spacing, .25rem) * 0)!important}ax-text-area textarea{box-sizing:border-box;height:auto;min-height:var(--ax-sys-size-base);width:100%;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2)}ax-text-area textarea:focus{--tw-outline-style: none;outline-style:none}ax-text-area>ax-prefix,ax-text-area>ax-suffix{margin-bottom:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 3)}ax-text-area .ax-counter{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 2);bottom:calc(var(--spacing, .25rem) * 2);z-index:2;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:50%}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
43
43
  }
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXTextAreaComponent, decorators: [{
45
45
  type: Component,
@@ -64,7 +64,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
64
64
  useExisting: forwardRef(() => AXTextAreaComponent),
65
65
  multi: true,
66
66
  },
67
- ], imports: [FormsModule], template: "<div\n class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n>\n <textarea\n #input\n [name]=\"name\"\n [id]=\"id\"\n type=\"text\"\n [rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [class.ax-state-no-resizing]=\"!allowResize\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n ></textarea>\n @if (showCounter) {\n <div class=\"ax-counter\">\n {{ input.value.length }}\n @if (maxLength) {\n <span>/ {{ maxLength }}</span>\n }\n </div>\n }\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer components{ax-text-area{width:100%}ax-text-area .ax-editor-container{height:auto!important;padding-inline:calc(var(--spacing, .25rem) * 0)!important;padding-bottom:calc(var(--spacing, .25rem) * 0)!important}ax-text-area textarea{height:fit-content;width:100%;background-color:inherit;padding-inline:calc(var(--spacing, .25rem) * 3)}ax-text-area textarea:focus{--tw-outline-style: none;outline-style:none}ax-text-area>ax-prefix,ax-text-area>ax-suffix{margin-bottom:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 3)}ax-text-area .ax-counter{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 2);bottom:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:50%}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
67
+ ], imports: [FormsModule], template: "<div\n class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n>\n <textarea\n #input\n [name]=\"name\"\n [id]=\"id\"\n type=\"text\"\n [rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [class.ax-state-no-resizing]=\"!allowResize\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n ></textarea>\n @if (showCounter) {\n <div class=\"ax-counter\">\n {{ input.value.length }}\n @if (maxLength) {\n <span>/ {{ maxLength }}</span>\n }\n </div>\n }\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer components{ax-text-area{width:100%}ax-text-area .ax-editor-container{height:auto!important;min-height:var(--ax-sys-size-base);align-items:stretch;padding:calc(var(--spacing, .25rem) * 0)!important}ax-text-area textarea{box-sizing:border-box;height:auto;min-height:var(--ax-sys-size-base);width:100%;background-color:transparent;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2)}ax-text-area textarea:focus{--tw-outline-style: none;outline-style:none}ax-text-area>ax-prefix,ax-text-area>ax-suffix{margin-bottom:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 3)}ax-text-area .ax-counter{position:absolute;inset-inline-end:calc(var(--spacing, .25rem) * 2);bottom:calc(var(--spacing, .25rem) * 2);z-index:2;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));opacity:50%}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
68
68
  }], propDecorators: { input: [{
69
69
  type: ViewChild,
70
70
  args: ['input']
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-text-area.mjs","sources":["../../../../packages/components/text-area/src/lib/text-area.component.ts","../../../../packages/components/text-area/src/lib/text-area.component.html","../../../../packages/components/text-area/src/lib/text-area.module.ts","../../../../packages/components/text-area/src/acorex-components-text-area.ts"],"sourcesContent":["import {\n AXClearableComponent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\n\nimport { Component, ElementRef, HostBinding, Input, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\n/**\n * A component that provides a multi-line text input field with support for resizing, validation, and custom styling.\n */\n@Component({\n selector: 'ax-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.css'],\n inputs: ['disabled', 'tabIndex', 'readonly', 'value', 'state', 'name', 'placeholder', 'maxLength', 'look'],\n outputs: [\n 'onBlur',\n 'onFocus',\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'readonlyChange',\n 'disabledChange',\n 'onKeyDown',\n 'onKeyUp',\n 'onKeyPress',\n ],\n encapsulation: ViewEncapsulation.None,\n\n providers: [\n { provide: AXComponent, useExisting: AXTextAreaComponent },\n { provide: AXFocusableComponent, useExisting: AXTextAreaComponent },\n { provide: AXClearableComponent, useExisting: AXTextAreaComponent },\n { provide: AXValuableComponent, useExisting: AXTextAreaComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTextAreaComponent),\n multi: true,\n },\n ],\n imports: [FormsModule],\n})\nexport class AXTextAreaComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n /** @ignore */\n @ViewChild('input')\n input: ElementRef<HTMLInputElement>;\n\n /**\n * Specifies the number of rows for the component, typically used for configuring the size of a text area or similar input field.\n */\n @Input()\n rows = 0;\n\n /**\n * Indicates whether the component allows resizing.\n */\n @Input()\n allowResize = true;\n\n /**\n * Determines whether a counter is displayed in the component.\n */\n @Input()\n public showCounter: boolean;\n\n /**\n * Specifies the maximum number of characters allowed in the input field.\n */\n @Input()\n public maxLength: number;\n\n /**\n * CSS classes to apply to the component.\n */\n @Input('class')\n classNames: string;\n\n /** @ignore */\n protected _handleModelChange(value: string | null) {\n this.commitValue(value, true);\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n // @HostBinding('class')\n // get __hostClass(): string[] {\n // return [\n // 'ax-editor-container',\n // `ax-${this.look}`,\n // `${this.disabled ? 'ax-state-disabled' : ''}`,\n // this.classNames,\n // ];\n // }\n}\n","<div\n class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n>\n <textarea\n #input\n [name]=\"name\"\n [id]=\"id\"\n type=\"text\"\n [rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [class.ax-state-no-resizing]=\"!allowResize\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n ></textarea>\n @if (showCounter) {\n <div class=\"ax-counter\">\n {{ input.value.length }}\n @if (maxLength) {\n <span>/ {{ maxLength }}</span>\n }\n </div>\n }\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTextAreaComponent } from './text-area.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, AXTextAreaComponent],\n exports: [AXTextAreaComponent],\n})\nexport class AXTextAreaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-text-area.mjs","sources":["../../../../packages/components/text-area/src/lib/text-area.component.ts","../../../../packages/components/text-area/src/lib/text-area.component.html","../../../../packages/components/text-area/src/lib/text-area.module.ts","../../../../packages/components/text-area/src/acorex-components-text-area.ts"],"sourcesContent":["import {\n AXClearableComponent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\n\nimport { Component, ElementRef, HostBinding, Input, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\n/**\n * A component that provides a multi-line text input field with support for resizing, validation, and custom styling.\n */\n@Component({\n selector: 'ax-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.css'],\n inputs: ['disabled', 'tabIndex', 'readonly', 'value', 'state', 'name', 'placeholder', 'maxLength', 'look'],\n outputs: [\n 'onBlur',\n 'onFocus',\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'readonlyChange',\n 'disabledChange',\n 'onKeyDown',\n 'onKeyUp',\n 'onKeyPress',\n ],\n encapsulation: ViewEncapsulation.None,\n\n providers: [\n { provide: AXComponent, useExisting: AXTextAreaComponent },\n { provide: AXFocusableComponent, useExisting: AXTextAreaComponent },\n { provide: AXClearableComponent, useExisting: AXTextAreaComponent },\n { provide: AXValuableComponent, useExisting: AXTextAreaComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTextAreaComponent),\n multi: true,\n },\n ],\n imports: [FormsModule],\n})\nexport class AXTextAreaComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n /** @ignore */\n @ViewChild('input')\n input: ElementRef<HTMLInputElement>;\n\n /**\n * Specifies the number of rows for the component, typically used for configuring the size of a text area or similar input field.\n */\n @Input()\n rows = 0;\n\n /**\n * Indicates whether the component allows resizing.\n */\n @Input()\n allowResize = true;\n\n /**\n * Determines whether a counter is displayed in the component.\n */\n @Input()\n public showCounter: boolean;\n\n /**\n * Specifies the maximum number of characters allowed in the input field.\n */\n @Input()\n public maxLength: number;\n\n /**\n * CSS classes to apply to the component.\n */\n @Input('class')\n classNames: string;\n\n /** @ignore */\n protected _handleModelChange(value: string | null) {\n this.commitValue(value, true);\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n // @HostBinding('class')\n // get __hostClass(): string[] {\n // return [\n // 'ax-editor-container',\n // `ax-${this.look}`,\n // `${this.disabled ? 'ax-state-disabled' : ''}`,\n // this.classNames,\n // ];\n // }\n}\n","<div\n class=\"ax-editor-container ax-default {{ classNames }} {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n>\n <textarea\n #input\n [name]=\"name\"\n [id]=\"id\"\n type=\"text\"\n [rows]=\"rows\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [class.ax-state-no-resizing]=\"!allowResize\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n ></textarea>\n @if (showCounter) {\n <div class=\"ax-counter\">\n {{ input.value.length }}\n @if (maxLength) {\n <span>/ {{ maxLength }}</span>\n }\n </div>\n }\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n<div class=\"ax-error-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTextAreaComponent } from './text-area.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, AXTextAreaComponent],\n exports: [AXTextAreaComponent],\n})\nexport class AXTextAreaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -142,6 +142,7 @@ class AXToastService {
142
142
  location: config.location,
143
143
  timeOut: config.timeOut,
144
144
  timeOutProgress: config.timeOutProgress,
145
+ contextElement: config.contextElement,
145
146
  });
146
147
  if (this.defaultConfig.limit > 0 && this.activeToasts().length >= this.defaultConfig.limit) {
147
148
  const reservedRef = {
@@ -188,6 +189,8 @@ class AXToastService {
188
189
  config: toastData,
189
190
  onClose: closeToast,
190
191
  },
192
+ contextElement: config.contextElement,
193
+ visualContextScope: 'theme',
191
194
  centered: false,
192
195
  panelClass: ['animate-animated', 'animate-fadeIn', 'animate-faster'],
193
196
  onDispose: () => {
@@ -205,6 +208,7 @@ class AXToastService {
205
208
  id: toastId,
206
209
  overlayRef,
207
210
  config: toastData,
211
+ contextElement: config.contextElement,
208
212
  close: closeToast,
209
213
  };
210
214
  // Position the toast BEFORE adding to activeToasts (so getPosition calculates correctly)
@@ -296,11 +300,14 @@ class AXToastService {
296
300
  }
297
301
  }
298
302
  };
303
+ const counterContextElement = this.moreToastsConfig().contextElement ?? this.activeToasts()[0]?.contextElement;
299
304
  const overlayRef = await this.overlayService.create(AXToastComponent, {
300
305
  inputs: {
301
306
  config: opt,
302
307
  onClose: closeCounter,
303
308
  },
309
+ contextElement: counterContextElement,
310
+ visualContextScope: 'theme',
304
311
  centered: false,
305
312
  panelClass: ['animate-animated', 'animate-fadeIn', 'animate-faster'],
306
313
  });
@@ -555,7 +562,7 @@ class AXToastComponent extends MXBaseComponent {
555
562
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXToastComponent, isStandalone: true, selector: "ax-toast", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, onClose: { classPropertyName: "onClose", publicName: "onClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClass()" } }, providers: [
556
563
  { provide: AXClosableComponent, useExisting: AXToastComponent },
557
564
  { provide: AXComponent, useExisting: AXToastComponent },
558
- ], usesInheritance: true, ngImport: i0, template: "<span class=\"ax-toast-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-toast-content\">\n <div class=\"ax-toast-title\" [class.ax-mb-2]=\"config().title && config().content\">\n {{ config().title | translate | async }}\n </div>\n <div class=\"ax-toast-body\" [innerHTML]=\"config().content | translate | async\"></div>\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n} @else if (config().closeAllButton) {\n <ax-close-button [closeAll]=\"true\"></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut) {\n <div\n class=\"ax-toast-progress\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-toast{position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);background-color:var(--ax-comp-bg,var(--color-lighter));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-comp-text,var(--color-on-lighter));--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(min-width:48rem){ax-toast{width:24rem}}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg,var(--color-darker))}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){color:var(--ax-comp-text,var(--color-on-darker))}ax-toast.ax-outline,ax-toast.ax-twotone{border-style:var(--tw-border-style);border-width:1px;border-color:var(--ax-comp-border,var(--color-border-lighter))}ax-toast .ax-toast-icon,ax-toast .ax-icon-close{max-width:fit-content;align-items:flex-start;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}ax-toast .ax-toast-icon{margin-inline-end:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content{display:flex;flex:1;flex-direction:column}ax-toast .ax-toast-content .ax-toast-title{--tw-leading: calc(var(--spacing, .25rem) * 6);line-height:calc(var(--spacing, .25rem) * 6);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-toast .ax-toast-content .ax-toast-buttons{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content .ax-toast-body{white-space:pre-line}ax-toast ax-icon-close{height:fit-content}ax-toast ax-icon-close:hover{opacity:75%}ax-toast .ax-toast-progress{position:absolute;inset-inline:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg-darker,var(--color-darkest));transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s))}ax-toast .ax-toast-progress:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg-darker,var(--color-lightest))}}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
565
+ ], usesInheritance: true, ngImport: i0, template: "<span class=\"ax-toast-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-toast-content\">\n <div class=\"ax-toast-title\" [class.ax-mb-2]=\"config().title && config().content\">\n {{ config().title | translate | async }}\n </div>\n <div class=\"ax-toast-body\" [innerHTML]=\"config().content | translate | async\"></div>\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n} @else if (config().closeAllButton) {\n <ax-close-button [closeAll]=\"true\"></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut) {\n <div\n class=\"ax-toast-progress\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-toast{--ax-comp-toast-shadow-rest: var(--ax-sys-effect-floating);--ax-comp-toast-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-toast-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-toast-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-toast-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-toast-surface-overlay-rest: var(--ax-sys-surface-overlay-floating);position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);background-color:var(--ax-comp-bg,var(--color-lighter));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-comp-text,var(--color-on-lighter));background-image:linear-gradient(var(--ax-comp-toast-contrast-surface-overlay-rest),var(--ax-comp-toast-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-toast-surface-overlay-rest),var(--ax-comp-toast-surface-overlay-rest));box-shadow:var(--ax-comp-toast-contrast-inner-border-rest),var(--ax-comp-toast-inner-border-rest),var(--ax-comp-toast-shadow-rest);backdrop-filter:var(--ax-comp-toast-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-toast-backdrop-filter-rest)}@media(min-width:48rem){ax-toast{width:24rem}}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg,var(--color-darker))}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){color:var(--ax-comp-text,var(--color-on-darker))}ax-toast.ax-outline,ax-toast.ax-twotone{border-style:var(--tw-border-style);border-width:1px;border-color:var(--ax-comp-border,var(--color-border-lighter))}ax-toast .ax-toast-icon,ax-toast .ax-icon-close{max-width:fit-content;align-items:flex-start;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}ax-toast .ax-toast-icon{margin-inline-end:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content{display:flex;flex:1;flex-direction:column}ax-toast .ax-toast-content .ax-toast-title{--tw-leading: calc(var(--spacing, .25rem) * 6);line-height:calc(var(--spacing, .25rem) * 6);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-toast .ax-toast-content .ax-toast-buttons{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content .ax-toast-body{white-space:pre-line}ax-toast ax-icon-close{height:fit-content}ax-toast ax-icon-close:hover{opacity:75%}ax-toast .ax-toast-progress{position:absolute;inset-inline:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg-darker,var(--color-darkest));transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s))}ax-toast .ax-toast-progress:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg-darker,var(--color-lightest))}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
559
566
  }
560
567
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXToastComponent, decorators: [{
561
568
  type: Component,
@@ -564,7 +571,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
564
571
  }, providers: [
565
572
  { provide: AXClosableComponent, useExisting: AXToastComponent },
566
573
  { provide: AXComponent, useExisting: AXToastComponent },
567
- ], imports: [AXDecoratorCloseButtonComponent, AsyncPipe, AXTranslatorPipe], template: "<span class=\"ax-toast-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-toast-content\">\n <div class=\"ax-toast-title\" [class.ax-mb-2]=\"config().title && config().content\">\n {{ config().title | translate | async }}\n </div>\n <div class=\"ax-toast-body\" [innerHTML]=\"config().content | translate | async\"></div>\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n} @else if (config().closeAllButton) {\n <ax-close-button [closeAll]=\"true\"></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut) {\n <div\n class=\"ax-toast-progress\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-toast{position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);background-color:var(--ax-comp-bg,var(--color-lighter));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-comp-text,var(--color-on-lighter));--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(min-width:48rem){ax-toast{width:24rem}}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg,var(--color-darker))}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){color:var(--ax-comp-text,var(--color-on-darker))}ax-toast.ax-outline,ax-toast.ax-twotone{border-style:var(--tw-border-style);border-width:1px;border-color:var(--ax-comp-border,var(--color-border-lighter))}ax-toast .ax-toast-icon,ax-toast .ax-icon-close{max-width:fit-content;align-items:flex-start;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}ax-toast .ax-toast-icon{margin-inline-end:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content{display:flex;flex:1;flex-direction:column}ax-toast .ax-toast-content .ax-toast-title{--tw-leading: calc(var(--spacing, .25rem) * 6);line-height:calc(var(--spacing, .25rem) * 6);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-toast .ax-toast-content .ax-toast-buttons{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content .ax-toast-body{white-space:pre-line}ax-toast ax-icon-close{height:fit-content}ax-toast ax-icon-close:hover{opacity:75%}ax-toast .ax-toast-progress{position:absolute;inset-inline:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg-darker,var(--color-darkest));transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s))}ax-toast .ax-toast-progress:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg-darker,var(--color-lightest))}}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
574
+ ], imports: [AXDecoratorCloseButtonComponent, AsyncPipe, AXTranslatorPipe], template: "<span class=\"ax-toast-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-toast-content\">\n <div class=\"ax-toast-title\" [class.ax-mb-2]=\"config().title && config().content\">\n {{ config().title | translate | async }}\n </div>\n <div class=\"ax-toast-body\" [innerHTML]=\"config().content | translate | async\"></div>\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n} @else if (config().closeAllButton) {\n <ax-close-button [closeAll]=\"true\"></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut) {\n <div\n class=\"ax-toast-progress\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-toast{--ax-comp-toast-shadow-rest: var(--ax-sys-effect-floating);--ax-comp-toast-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-toast-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-toast-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-toast-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-toast-surface-overlay-rest: var(--ax-sys-surface-overlay-floating);position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);background-color:var(--ax-comp-bg,var(--color-lighter));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-comp-text,var(--color-on-lighter));background-image:linear-gradient(var(--ax-comp-toast-contrast-surface-overlay-rest),var(--ax-comp-toast-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-toast-surface-overlay-rest),var(--ax-comp-toast-surface-overlay-rest));box-shadow:var(--ax-comp-toast-contrast-inner-border-rest),var(--ax-comp-toast-inner-border-rest),var(--ax-comp-toast-shadow-rest);backdrop-filter:var(--ax-comp-toast-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-toast-backdrop-filter-rest)}@media(min-width:48rem){ax-toast{width:24rem}}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg,var(--color-darker))}ax-toast:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){color:var(--ax-comp-text,var(--color-on-darker))}ax-toast.ax-outline,ax-toast.ax-twotone{border-style:var(--tw-border-style);border-width:1px;border-color:var(--ax-comp-border,var(--color-border-lighter))}ax-toast .ax-toast-icon,ax-toast .ax-icon-close{max-width:fit-content;align-items:flex-start;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}ax-toast .ax-toast-icon{margin-inline-end:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content{display:flex;flex:1;flex-direction:column}ax-toast .ax-toast-content .ax-toast-title{--tw-leading: calc(var(--spacing, .25rem) * 6);line-height:calc(var(--spacing, .25rem) * 6);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-toast .ax-toast-content .ax-toast-buttons{margin-block:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 2)}ax-toast .ax-toast-content .ax-toast-body{white-space:pre-line}ax-toast ax-icon-close{height:fit-content}ax-toast ax-icon-close:hover{opacity:75%}ax-toast .ax-toast-progress{position:absolute;inset-inline:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg-darker,var(--color-darkest));transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s))}ax-toast .ax-toast-progress:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--ax-comp-bg-darker,var(--color-lightest))}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
568
575
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], onClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "onClose", required: false }] }] } });
569
576
 
570
577
  const COMPONENT = [AXToastComponent];