@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,24 +1,21 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, EventEmitter, AfterViewInit, AfterContentInit, OnDestroy } from '@angular/core';
2
+ import { TemplateRef, EventEmitter, OnDestroy, AfterViewInit, AfterContentInit } from '@angular/core';
3
3
  import { MXInteractiveComponent, AXClickEvent, MXComponentOptionChanged, AXEvent, MXBaseComponent } from '@acorex/cdk/common';
4
- import * as i1 from '@angular/common';
5
- import * as i2 from '@angular/cdk/portal';
4
+ import * as i1 from '@acorex/cdk/drag-drop';
5
+ import * as i2 from '@acorex/cdk/horizontal-scroll';
6
+ import * as i1$1 from '@angular/common';
7
+ import * as i2$1 from '@angular/cdk/portal';
6
8
  import * as i3 from '@acorex/components/decorators';
7
9
 
8
- declare class AXTabContentDirective {
9
- private _viewContainerRef;
10
- private _portal;
11
- get portal(): TemplateRef<any> | undefined;
12
- set portal(v: TemplateRef<any> | undefined);
13
- static ɵfac: i0.ɵɵFactoryDeclaration<AXTabContentDirective, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<AXTabContentDirective, "[axTabContent]", ["axTabContent"], { "portal": { "alias": "axTabContent"; "required": false; }; }, {}, never, never, true, never>;
15
- }
16
-
17
10
  /**
18
11
  * @category
19
12
  * Represents an individual tab item in a tab component.
20
13
  */
21
14
  declare class AXTabItemComponent extends MXInteractiveComponent {
15
+ private readonly _drag;
16
+ private _reorderEnabled;
17
+ private _panTouchAction;
18
+ constructor();
22
19
  /**
23
20
  * Defines the text content to be displayed within the component.
24
21
  */
@@ -27,7 +24,13 @@ declare class AXTabItemComponent extends MXInteractiveComponent {
27
24
  * Defines a unique identifier for the component instance.
28
25
  */
29
26
  key: string;
30
- template: TemplateRef<unknown>;
27
+ private _panel?;
28
+ private _contentTemplate;
29
+ /**
30
+ * Template rendered for this tab's content area.
31
+ * Prefer `ng-template[axTabPanel]` so `renderMode="default"` can recreate panel state.
32
+ */
33
+ get template(): TemplateRef<unknown>;
31
34
  /**
32
35
  * Defines a custom template for the component's header.
33
36
  */
@@ -50,6 +53,12 @@ declare class AXTabItemComponent extends MXInteractiveComponent {
50
53
  */
51
54
  get active(): boolean;
52
55
  set active(value: boolean);
56
+ /** @ignore */
57
+ setReorderEnabled(enabled: boolean, delay?: number, touchAction?: 'none' | 'pan-x' | 'pan-y'): void;
58
+ /** @ignore */
59
+ private updateDragState;
60
+ /** @ignore */
61
+ private applyScrollTouchAction;
53
62
  /**
54
63
  * @ignore
55
64
  */
@@ -70,15 +79,77 @@ declare class AXTabItemComponent extends MXInteractiveComponent {
70
79
  top: number;
71
80
  };
72
81
  static ɵfac: i0.ɵɵFactoryDeclaration<AXTabItemComponent, never>;
73
- static ɵcmp: i0.ɵɵComponentDeclaration<AXTabItemComponent, "ax-tab-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "text": { "alias": "text"; "required": false; }; "key": { "alias": "key"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "active": { "alias": "active"; "required": false; }; }, { "disabledChange": "disabledChange"; "onClick": "onClick"; "onBlur": "onBlur"; "onFocus": "onFocus"; "activeChange": "activeChange"; }, never, ["ax-prefix", "ax-suffix", "ax-content"], true, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXTabItemComponent, "ax-tab-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "text": { "alias": "text"; "required": false; }; "key": { "alias": "key"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "active": { "alias": "active"; "required": false; }; }, { "disabledChange": "disabledChange"; "onClick": "onClick"; "onBlur": "onBlur"; "onFocus": "onFocus"; "activeChange": "activeChange"; }, ["_panel"], ["ax-prefix", "ax-suffix", "ax-content"], true, [{ directive: typeof i1.AXDragDirective; inputs: { "dragStartDelay": "dragStartDelay"; "dragClonedTemplate": "dragClonedTemplate"; }; outputs: {}; }]>;
74
83
  }
75
84
 
76
85
  declare class AXTabStripChangedEvent extends AXEvent {
77
86
  tab: AXTabItemComponent;
78
87
  index: number;
79
88
  }
89
+ /** Event emitted when tab items are reordered via drag and drop. */
90
+ declare class AXTabsReorderedEvent extends AXEvent {
91
+ tab: AXTabItemComponent;
92
+ previousIndex: number;
93
+ currentIndex: number;
94
+ }
80
95
  type AXTabLook = 'default' | 'pills' | 'pills-color' | 'with-line' | 'with-line-color' | 'classic' | 'custom';
81
96
  type AXTabLocation = 'top' | 'bottom' | 'start' | 'end';
97
+ type AXTabsRenderMode = 'default' | 'all-tabs' | 'on-demand';
98
+
99
+ declare class AXTabContentDirective implements OnDestroy {
100
+ private readonly viewContainerRef;
101
+ private readonly renderer;
102
+ private readonly panes;
103
+ private _portal;
104
+ private defaultView;
105
+ get portal(): TemplateRef<unknown> | undefined;
106
+ set portal(v: TemplateRef<unknown> | undefined);
107
+ /**
108
+ * Shows the given tab template using the specified render mode.
109
+ */
110
+ activate(template: TemplateRef<unknown> | undefined, mode: AXTabsRenderMode): void;
111
+ /**
112
+ * Ensures embedded views exist for every tab template (all-tabs mode).
113
+ */
114
+ preload(templates: TemplateRef<unknown>[]): void;
115
+ /**
116
+ * Removes panes whose tab templates are no longer present.
117
+ */
118
+ sync(templates: TemplateRef<unknown>[]): void;
119
+ /**
120
+ * Destroys all cached panes and clears the view container.
121
+ */
122
+ reset(): void;
123
+ ngOnDestroy(): void;
124
+ private destroyDefaultView;
125
+ private resetKeepAlivePanes;
126
+ private ensurePane;
127
+ private showPane;
128
+ private destroyPane;
129
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXTabContentDirective, never>;
130
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXTabContentDirective, "[axTabContent]", ["axTabContent"], { "portal": { "alias": "axTabContent"; "required": false; }; }, {}, never, never, true, never>;
131
+ }
132
+
133
+ /**
134
+ * Marks an `ng-template` as tab panel content. Use this instead of projecting
135
+ * components directly into `ax-content` when you need `renderMode="default"`
136
+ * to destroy and recreate panel state on each tab switch.
137
+ *
138
+ * @example
139
+ * ```html
140
+ * <ax-tab-item text="Account">
141
+ * <ng-template axTabPanel>
142
+ * <my-panel />
143
+ * </ng-template>
144
+ * </ax-tab-item>
145
+ * ```
146
+ */
147
+ declare class AXTabPanelDirective {
148
+ readonly template: TemplateRef<unknown>;
149
+ constructor(template: TemplateRef<unknown>);
150
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXTabPanelDirective, never>;
151
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXTabPanelDirective, "ng-template[axTabPanel]", never, {}, {}, never, never, true, never>;
152
+ }
82
153
 
83
154
  /**
84
155
  * @category
@@ -87,6 +158,9 @@ type AXTabLocation = 'top' | 'bottom' | 'start' | 'end';
87
158
  declare class AXTabsComponent extends MXBaseComponent implements AfterViewInit, AfterContentInit, OnDestroy {
88
159
  #private;
89
160
  private readonly renderer;
161
+ private readonly destroyRef;
162
+ private readonly _dropList;
163
+ private readonly _scroll;
90
164
  /**
91
165
  * @ignore
92
166
  */
@@ -101,6 +175,36 @@ declare class AXTabsComponent extends MXBaseComponent implements AfterViewInit,
101
175
  * @defaultValue 'bottom'
102
176
  */
103
177
  location: i0.InputSignal<AXTabLocation>;
178
+ /**
179
+ * Enables drag-and-drop reordering of tab items. Reordering starts only after the user
180
+ * presses and holds a tab for {@link reorderDelay} milliseconds; a quick swipe without
181
+ * holding scrolls the strip instead.
182
+ * @defaultValue false
183
+ */
184
+ reorderable: i0.InputSignalWithTransform<boolean, unknown>;
185
+ /**
186
+ * Press-and-hold duration in milliseconds before a tab can be dragged to reorder.
187
+ * After this delay the cursor changes to indicate reorder mode. Moving before the
188
+ * delay ends cancels reorder and allows swipe or pan scrolling instead.
189
+ * @defaultValue 250
190
+ */
191
+ reorderDelay: i0.InputSignal<number>;
192
+ /**
193
+ * Controls how tab content is rendered in the DOM.
194
+ *
195
+ * - `default` — Only the active tab's content is in the DOM. Switching tabs replaces content and does not preserve state.
196
+ * - `all-tabs` — All tab contents are rendered and kept in the DOM. State is preserved; higher memory use.
197
+ * - `on-demand` — Only the active tab is rendered initially. Other tabs are rendered on first visit and then kept; state is preserved.
198
+ *
199
+ * @defaultValue 'default'
200
+ */
201
+ renderMode: i0.InputSignal<AXTabsRenderMode>;
202
+ /**
203
+ * When true, stacks prefix, title, and suffix vertically inside each tab header
204
+ * instead of arranging them in a horizontal row.
205
+ * @defaultValue false
206
+ */
207
+ stacked: i0.InputSignalWithTransform<boolean, unknown>;
104
208
  /**
105
209
  * @defaultValue 'false'
106
210
  * Specifies whether the component should resize to fit its parent container.
@@ -114,12 +218,16 @@ declare class AXTabsComponent extends MXBaseComponent implements AfterViewInit,
114
218
  /**
115
219
  * The `AXTabContentDirective` associated with the tab.
116
220
  */
117
- content: AXTabContentDirective;
221
+ set content(value: AXTabContentDirective);
222
+ get content(): AXTabContentDirective;
223
+ private _content;
118
224
  private indicator;
119
225
  private zone;
120
226
  private platformId;
121
227
  /** @ignore */
122
228
  private _isUserInteraction;
229
+ /** @ignore */
230
+ private _clickSubscriptions;
123
231
  get items(): AXTabItemComponent[];
124
232
  /** @ignore */
125
233
  private _selectedItem;
@@ -129,12 +237,21 @@ declare class AXTabsComponent extends MXBaseComponent implements AfterViewInit,
129
237
  get selectedItem(): AXTabItemComponent;
130
238
  private changes;
131
239
  private activeTab;
240
+ private viewReady;
241
+ private lastRenderMode;
132
242
  /**
133
243
  * @event
134
244
  */
135
245
  onActiveTabChanged: EventEmitter<AXTabStripChangedEvent>;
246
+ /**
247
+ * Emitted when tab items are reordered via drag and drop after the press-and-hold
248
+ * delay has elapsed and the user drags a tab to a new position.
249
+ * @event
250
+ */
251
+ onTabsReordered: EventEmitter<AXTabsReorderedEvent>;
136
252
  /** @ignore */
137
253
  private get __hostClass();
254
+ constructor();
138
255
  /** @ignore */
139
256
  ngAfterContentInit(): void;
140
257
  /** @ignore */
@@ -142,22 +259,34 @@ declare class AXTabsComponent extends MXBaseComponent implements AfterViewInit,
142
259
  ngOnDestroy(): void;
143
260
  /** @ignore */
144
261
  private _bindOnClickEvent;
262
+ /** @ignore */
263
+ private _syncDragState;
264
+ /** @ignore */
265
+ private _applyReorder;
266
+ /** @ignore */
267
+ private _observeActiveTabForResize;
268
+ /** @ignore */
269
+ private scheduleIndicatorUpdate;
145
270
  /**
146
271
  * Activates the specified tab and updates the content.
147
272
  *
148
273
  * @param tab - The tab to select, either by index (number) or by component instance
149
274
  */
150
275
  select(tab: number | AXTabItemComponent): void;
276
+ /** @ignore */
277
+ private _renderContent;
278
+ /** @ignore */
279
+ private getTabIndicatorStats;
151
280
  private setIndicatorPosition;
152
281
  static ɵfac: i0.ɵɵFactoryDeclaration<AXTabsComponent, never>;
153
- static ɵcmp: i0.ɵɵComponentDeclaration<AXTabsComponent, "ax-tabs", never, { "look": { "alias": "look"; "required": false; "isSignal": true; }; "location": { "alias": "location"; "required": false; "isSignal": true; }; "fitParent": { "alias": "fitParent"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "content": { "alias": "content"; "required": false; }; }, { "onActiveTabChanged": "onActiveTabChanged"; }, ["_contentTabs"], ["ax-tab-item"], true, never>;
282
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXTabsComponent, "ax-tabs", never, { "look": { "alias": "look"; "required": false; "isSignal": true; }; "location": { "alias": "location"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "reorderDelay": { "alias": "reorderDelay"; "required": false; "isSignal": true; }; "renderMode": { "alias": "renderMode"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "fitParent": { "alias": "fitParent"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "content": { "alias": "content"; "required": false; }; }, { "onActiveTabChanged": "onActiveTabChanged"; "onTabsReordered": "onTabsReordered"; }, ["_contentTabs"], ["ax-tab-item"], true, [{ directive: typeof i1.AXDropListDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.AXHorizontalScrollDirective; inputs: {}; outputs: {}; }]>;
154
283
  }
155
284
 
156
285
  declare class AXTabsModule {
157
286
  static ɵfac: i0.ɵɵFactoryDeclaration<AXTabsModule, never>;
158
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXTabsModule, never, [typeof i1.CommonModule, typeof i2.PortalModule, typeof i3.AXDecoratorModule, typeof AXTabsComponent, typeof AXTabItemComponent, typeof AXTabContentDirective], [typeof AXTabsComponent, typeof AXTabItemComponent, typeof AXTabContentDirective]>;
287
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXTabsModule, never, [typeof i1$1.CommonModule, typeof i2$1.PortalModule, typeof i3.AXDecoratorModule, typeof AXTabsComponent, typeof AXTabItemComponent, typeof AXTabContentDirective, typeof AXTabPanelDirective], [typeof AXTabsComponent, typeof AXTabItemComponent, typeof AXTabContentDirective, typeof AXTabPanelDirective]>;
159
288
  static ɵinj: i0.ɵɵInjectorDeclaration<AXTabsModule>;
160
289
  }
161
290
 
162
- export { AXTabContentDirective, AXTabItemComponent, AXTabStripChangedEvent, AXTabsComponent, AXTabsModule };
163
- export type { AXTabLocation, AXTabLook };
291
+ export { AXTabContentDirective, AXTabItemComponent, AXTabPanelDirective, AXTabStripChangedEvent, AXTabsComponent, AXTabsModule, AXTabsReorderedEvent };
292
+ export type { AXTabLocation, AXTabLook, AXTabsRenderMode };
@@ -1,7 +1,7 @@
1
1
  import { AXLocation, AXStyleColorType, AXStyleLookType, MXBaseComponent } from '@acorex/cdk/common';
2
2
  import { AXOverlayRef } from '@acorex/cdk/overlay';
3
3
  import * as i0 from '@angular/core';
4
- import { OnInit, InjectionToken } from '@angular/core';
4
+ import { ElementRef, OnInit, InjectionToken } from '@angular/core';
5
5
  import * as i2 from '@acorex/components/button';
6
6
  import { AXButtonItem } from '@acorex/components/button';
7
7
  import * as i1 from '@angular/common';
@@ -20,6 +20,14 @@ interface AXToastDisplayConfig {
20
20
  timeOut?: number;
21
21
  timeOutProgress?: boolean;
22
22
  pauseOnHover?: boolean;
23
+ /**
24
+ * Element used to resolve inherited visual context for overlays rendered
25
+ * outside the originating DOM subtree.
26
+ *
27
+ * This affects Appearance, Light/Dark theme, Contrast, Size, and supported
28
+ * Density context. It does not affect overlay positioning.
29
+ */
30
+ contextElement?: HTMLElement | ElementRef<HTMLElement>;
23
31
  }
24
32
  interface AXToastData {
25
33
  icon?: string;
@@ -45,6 +53,7 @@ interface AXToastInternalRef {
45
53
  id: string;
46
54
  overlayRef: AXOverlayRef<unknown>;
47
55
  config: AXToastData;
56
+ contextElement?: HTMLElement | ElementRef<HTMLElement>;
48
57
  close: () => void;
49
58
  }
50
59
 
@@ -1,6 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, EventEmitter } from '@angular/core';
3
3
  import { AXEvent, AXHtmlEvent, AXValueChangedEvent } from '@acorex/cdk/common';
4
+ import { AXGestureEvent } from '@acorex/cdk/gesture';
4
5
  import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';
5
6
 
6
7
  /**
@@ -150,6 +151,11 @@ interface AXTreeViewItemTemplateContext {
150
151
  dragArea: AXTreeViewDragArea;
151
152
  /** Whether the drag handle should be shown (dragArea === 'handler' && dragBehavior !== 'none') */
152
153
  showDragHandle: boolean;
154
+ /**
155
+ * The active search query. The default node label highlights it automatically;
156
+ * custom templates must render it themselves (e.g. with `ax-highlight-text`).
157
+ */
158
+ highlightText: string;
153
159
  }
154
160
  type AXTreeViewViewLook = 'default' | 'card' | 'with-line';
155
161
  type AXTreeViewDragArea = 'handler' | 'item';
@@ -236,12 +242,24 @@ declare class AXTreeViewComponent {
236
242
  readonly indentSize: _angular_core.InputSignal<number>;
237
243
  /** Visual style variant. Default: `'default'` */
238
244
  readonly look: _angular_core.InputSignal<AXTreeViewViewLook>;
239
- /** Custom template for tree items. Default: `undefined` */
245
+ /**
246
+ * When `true`, visible nodes use alternating background colors (flattened visual order,
247
+ * including expanded children). Default: `false`.
248
+ */
249
+ readonly alternate: _angular_core.InputSignal<boolean>;
250
+ /**
251
+ * Custom template for tree items. Default: `undefined`
252
+ *
253
+ * Context includes `highlightText`; the default node label is replaced by the template,
254
+ * so search highlighting must be rendered by the template itself.
255
+ */
240
256
  readonly nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
241
257
  /** Field name for node ID. Default: `'id'` */
242
258
  readonly idField: _angular_core.InputSignal<string>;
243
259
  /** Field name for node title. Default: `'title'` */
244
260
  readonly titleField: _angular_core.InputSignal<string>;
261
+ /** When set, matching characters in the default node label are highlighted. */
262
+ readonly highlightText: _angular_core.InputSignal<string>;
245
263
  /** Field name for node tooltip. Default: `'tooltip'` */
246
264
  readonly tooltipField: _angular_core.InputSignal<string>;
247
265
  /** Field name for node icon. Default: `'icon'` */
@@ -312,6 +330,9 @@ declare class AXTreeViewComponent {
312
330
  /** Computed chevron icons that flip for RTL */
313
331
  protected readonly directionExpandedIcon: _angular_core.Signal<string>;
314
332
  protected readonly directionCollapsedIcon: _angular_core.Signal<string>;
333
+ /** Visible-row index (DFS of expanded, non-hidden nodes) used for alternate striping. */
334
+ protected readonly alternateRowIndexById: _angular_core.Signal<Map<string, number>>;
335
+ protected isAlternateNode(node: AXTreeViewNode): boolean;
315
336
  /** Flag to prevent infinite loops when syncing datasource */
316
337
  private isUpdatingFromDatasource;
317
338
  /** Bumped when controlled selection changes so stale async sync is ignored. */
@@ -704,6 +725,22 @@ declare class AXTreeViewComponent {
704
725
  * Handle node double click
705
726
  */
706
727
  onNodeDoubleClickHandle(node: AXTreeViewNode, event: Event): Promise<void>;
728
+ /**
729
+ * Handle tap gesture on a node (single click).
730
+ */
731
+ onNodeGestureTap(node: AXTreeViewNode, event: AXGestureEvent): void;
732
+ /**
733
+ * Handle double-tap gesture on a node.
734
+ */
735
+ onNodeGestureDoubleTap(node: AXTreeViewNode, event: AXGestureEvent): void;
736
+ /**
737
+ * Handle native click when gesture recognition is disabled for the node.
738
+ */
739
+ onNodeNativeClick(node: AXTreeViewNode, event: Event): void;
740
+ /**
741
+ * Handle native double-click when gesture recognition is disabled for the node.
742
+ */
743
+ onNodeNativeDoubleClick(node: AXTreeViewNode, event: Event): void;
707
744
  /**
708
745
  * Handle node click handle
709
746
  */
@@ -838,7 +875,7 @@ declare class AXTreeViewComponent {
838
875
  */
839
876
  private handleError;
840
877
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewComponent, never>;
841
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "dragArea": { "alias": "dragArea"; "required": false; "isSignal": true; }; "dragBehavior": { "alias": "dragBehavior"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "showChildrenBadge": { "alias": "showChildrenBadge"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; "isSignal": true; }; "titleField": { "alias": "titleField"; "required": false; "isSignal": true; }; "tooltipField": { "alias": "tooltipField"; "required": false; "isSignal": true; }; "iconField": { "alias": "iconField"; "required": false; "isSignal": true; }; "expandedField": { "alias": "expandedField"; "required": false; "isSignal": true; }; "selectedField": { "alias": "selectedField"; "required": false; "isSignal": true; }; "indeterminateField": { "alias": "indeterminateField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "hiddenField": { "alias": "hiddenField"; "required": false; "isSignal": true; }; "childrenField": { "alias": "childrenField"; "required": false; "isSignal": true; }; "childrenCountField": { "alias": "childrenCountField"; "required": false; "isSignal": true; }; "dataField": { "alias": "dataField"; "required": false; "isSignal": true; }; "inheritDisabled": { "alias": "inheritDisabled"; "required": false; "isSignal": true; }; "expandOnDoubleClick": { "alias": "expandOnDoubleClick"; "required": false; "isSignal": true; }; "doubleClickDuration": { "alias": "doubleClickDuration"; "required": false; "isSignal": true; }; "tooltipDelay": { "alias": "tooltipDelay"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "controlledSelection"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; }, { "datasource": "datasourceChange"; "selectedIds": "selectedIdsChange"; "onBeforeDrop": "onBeforeDrop"; "onNodeToggle": "onNodeToggle"; "onNodeSelect": "onNodeSelect"; "onNodeDoubleClick": "onNodeDoubleClick"; "onNodeClick": "onNodeClick"; "onSelectionChange": "onSelectionChange"; "onOrderChange": "onOrderChange"; "onMoveChange": "onMoveChange"; "onItemsChange": "onItemsChange"; }, never, never, true, never>;
878
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "dragArea": { "alias": "dragArea"; "required": false; "isSignal": true; }; "dragBehavior": { "alias": "dragBehavior"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "showChildrenBadge": { "alias": "showChildrenBadge"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; "isSignal": true; }; "titleField": { "alias": "titleField"; "required": false; "isSignal": true; }; "highlightText": { "alias": "highlightText"; "required": false; "isSignal": true; }; "tooltipField": { "alias": "tooltipField"; "required": false; "isSignal": true; }; "iconField": { "alias": "iconField"; "required": false; "isSignal": true; }; "expandedField": { "alias": "expandedField"; "required": false; "isSignal": true; }; "selectedField": { "alias": "selectedField"; "required": false; "isSignal": true; }; "indeterminateField": { "alias": "indeterminateField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "hiddenField": { "alias": "hiddenField"; "required": false; "isSignal": true; }; "childrenField": { "alias": "childrenField"; "required": false; "isSignal": true; }; "childrenCountField": { "alias": "childrenCountField"; "required": false; "isSignal": true; }; "dataField": { "alias": "dataField"; "required": false; "isSignal": true; }; "inheritDisabled": { "alias": "inheritDisabled"; "required": false; "isSignal": true; }; "expandOnDoubleClick": { "alias": "expandOnDoubleClick"; "required": false; "isSignal": true; }; "doubleClickDuration": { "alias": "doubleClickDuration"; "required": false; "isSignal": true; }; "tooltipDelay": { "alias": "tooltipDelay"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "controlledSelection"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; }, { "datasource": "datasourceChange"; "selectedIds": "selectedIdsChange"; "onBeforeDrop": "onBeforeDrop"; "onNodeToggle": "onNodeToggle"; "onNodeSelect": "onNodeSelect"; "onNodeDoubleClick": "onNodeDoubleClick"; "onNodeClick": "onNodeClick"; "onSelectionChange": "onSelectionChange"; "onOrderChange": "onOrderChange"; "onMoveChange": "onMoveChange"; "onItemsChange": "onItemsChange"; }, never, never, true, never>;
842
879
  }
843
880
 
844
881
  declare class AXTreeViewModule {
@@ -79,6 +79,19 @@ declare class AXWysiwygContainerComponent extends AXWysiwygContainerComponent_ba
79
79
  */
80
80
  declare class AXWysiwygToolbarComponent {
81
81
  toolbar: i0.Signal<ElementRef<HTMLDivElement>>;
82
+ private readonly host;
83
+ private readonly renderer;
84
+ private readonly platformId;
85
+ private readonly destroyRef;
86
+ private readonly zIndexService;
87
+ private observer;
88
+ private overlayState;
89
+ constructor();
90
+ private setupPickerOverlay;
91
+ private syncPickerOverlay;
92
+ private openPickerOverlay;
93
+ private closePickerOverlay;
94
+ private teardownPickerOverlay;
82
95
  static ɵfac: i0.ɵɵFactoryDeclaration<AXWysiwygToolbarComponent, never>;
83
96
  static ɵcmp: i0.ɵɵComponentDeclaration<AXWysiwygToolbarComponent, "ax-wysiwyg-toolbar", never, {}, {}, never, ["ax-prefix", "ax-suffix"], true, never>;
84
97
  }
@@ -1,106 +0,0 @@
1
- import { AXComponentCloseEvent, AXClosableComponent } from '@acorex/cdk/common';
2
- import { AXTranslationService } from '@acorex/core/translation';
3
- import * as i0 from '@angular/core';
4
- import { inject, input, computed, EventEmitter, Component } from '@angular/core';
5
-
6
- class AXConversationComposerActionChoiceDialogComponent {
7
- constructor() {
8
- this.translation = inject(AXTranslationService);
9
- this.actions = input.required(/* @ts-ignore */
10
- ...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
11
- this.fileCount = input(1, /* @ts-ignore */
12
- ...(ngDevMode ? [{ debugName: "fileCount" }] : /* istanbul ignore next */ []));
13
- this.composerActionRegistry = input.required(/* @ts-ignore */
14
- ...(ngDevMode ? [{ debugName: "composerActionRegistry" }] : /* istanbul ignore next */ []));
15
- this.__popup__ = input(/* @ts-ignore */
16
- ...(ngDevMode ? [undefined, { debugName: "__popup__" }] : /* istanbul ignore next */ []));
17
- this.hintText = computed(() => {
18
- const count = this.fileCount();
19
- if (count === 1) {
20
- return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-single');
21
- }
22
- return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-multiple', {
23
- params: { count },
24
- });
25
- }, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "hintText" }] : /* istanbul ignore next */ []));
27
- this.onClosed = new EventEmitter();
28
- }
29
- getActionLabel(action) {
30
- return this.composerActionRegistry().getActionLabel(action);
31
- }
32
- getActionTooltip(action) {
33
- return this.composerActionRegistry().getActionTooltip(action);
34
- }
35
- choose(action) {
36
- const event = new AXComponentCloseEvent();
37
- event.component = this;
38
- event.data = action;
39
- this.onClosed.emit(event);
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationComposerActionChoiceDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXConversationComposerActionChoiceDialogComponent, isStandalone: true, selector: "ax-conversation-composer-action-choice-dialog", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: true, transformFunction: null }, fileCount: { classPropertyName: "fileCount", publicName: "fileCount", isSignal: true, isRequired: false, transformFunction: null }, composerActionRegistry: { classPropertyName: "composerActionRegistry", publicName: "composerActionRegistry", isSignal: true, isRequired: true, transformFunction: null }, __popup__: { classPropertyName: "__popup__", publicName: "__popup__", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXClosableComponent, useExisting: AXConversationComposerActionChoiceDialogComponent }], ngImport: i0, template: `
43
- <div class="composer-action-choice" role="dialog" aria-modal="true">
44
- <p class="composer-action-choice__hint">{{ hintText() }}</p>
45
- <ul class="composer-action-choice__list" role="listbox">
46
- @for (action of actions(); track action.id) {
47
- <li role="presentation">
48
- <button
49
- type="button"
50
- class="composer-action-choice__option"
51
- role="option"
52
- (click)="choose(action)"
53
- [attr.aria-label]="getActionLabel(action)"
54
- >
55
- <span class="composer-action-choice__icon" aria-hidden="true">
56
- <i [class]="action.icon"></i>
57
- </span>
58
- <span class="composer-action-choice__text">
59
- <span class="composer-action-choice__title">{{ getActionLabel(action) }}</span>
60
- @if (getActionTooltip(action); as tip) {
61
- <span class="composer-action-choice__subtitle">{{ tip }}</span>
62
- }
63
- </span>
64
- <i class="fa-light fa-chevron-right composer-action-choice__chevron" aria-hidden="true"></i>
65
- </button>
66
- </li>
67
- }
68
- </ul>
69
- </div>
70
- `, isInline: true, styles: [":host{display:block}.composer-action-choice{display:flex;flex-direction:column;gap:.75rem;padding:.5rem;min-width:16rem}.composer-action-choice__hint{margin:0;font-size:.8125rem;line-height:1.45;color:rgba(var(--ax-sys-color-on-surface),.7)}.composer-action-choice__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.composer-action-choice__option{display:flex;align-items:center;gap:.75rem;width:100%;padding:.625rem .75rem;border:1px solid rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius, .5rem);background:rgb(var(--ax-sys-color-surface));cursor:pointer;text-align:start;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.composer-action-choice__option:hover,.composer-action-choice__option:focus-visible{border-color:rgb(var(--ax-sys-color-primary-500));background:rgba(var(--ax-sys-color-primary-500),.06);outline:none;box-shadow:0 0 0 1px rgba(var(--ax-sys-color-primary-500),.25)}.composer-action-choice__icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:var(--ax-sys-border-radius, .375rem);background:rgba(var(--ax-sys-color-primary-500),.1);color:rgb(var(--ax-sys-color-primary-600));font-size:1.125rem}.composer-action-choice__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.composer-action-choice__title{font-size:.875rem;font-weight:600;color:rgb(var(--ax-sys-color-on-surface))}.composer-action-choice__subtitle{font-size:.75rem;color:rgba(var(--ax-sys-color-on-surface),.6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-action-choice__chevron{flex-shrink:0;font-size:.75rem;color:rgba(var(--ax-sys-color-on-surface),.45)}\n"] }); }
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationComposerActionChoiceDialogComponent, decorators: [{
73
- type: Component,
74
- args: [{ selector: 'ax-conversation-composer-action-choice-dialog', template: `
75
- <div class="composer-action-choice" role="dialog" aria-modal="true">
76
- <p class="composer-action-choice__hint">{{ hintText() }}</p>
77
- <ul class="composer-action-choice__list" role="listbox">
78
- @for (action of actions(); track action.id) {
79
- <li role="presentation">
80
- <button
81
- type="button"
82
- class="composer-action-choice__option"
83
- role="option"
84
- (click)="choose(action)"
85
- [attr.aria-label]="getActionLabel(action)"
86
- >
87
- <span class="composer-action-choice__icon" aria-hidden="true">
88
- <i [class]="action.icon"></i>
89
- </span>
90
- <span class="composer-action-choice__text">
91
- <span class="composer-action-choice__title">{{ getActionLabel(action) }}</span>
92
- @if (getActionTooltip(action); as tip) {
93
- <span class="composer-action-choice__subtitle">{{ tip }}</span>
94
- }
95
- </span>
96
- <i class="fa-light fa-chevron-right composer-action-choice__chevron" aria-hidden="true"></i>
97
- </button>
98
- </li>
99
- }
100
- </ul>
101
- </div>
102
- `, providers: [{ provide: AXClosableComponent, useExisting: AXConversationComposerActionChoiceDialogComponent }], styles: [":host{display:block}.composer-action-choice{display:flex;flex-direction:column;gap:.75rem;padding:.5rem;min-width:16rem}.composer-action-choice__hint{margin:0;font-size:.8125rem;line-height:1.45;color:rgba(var(--ax-sys-color-on-surface),.7)}.composer-action-choice__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.composer-action-choice__option{display:flex;align-items:center;gap:.75rem;width:100%;padding:.625rem .75rem;border:1px solid rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius, .5rem);background:rgb(var(--ax-sys-color-surface));cursor:pointer;text-align:start;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.composer-action-choice__option:hover,.composer-action-choice__option:focus-visible{border-color:rgb(var(--ax-sys-color-primary-500));background:rgba(var(--ax-sys-color-primary-500),.06);outline:none;box-shadow:0 0 0 1px rgba(var(--ax-sys-color-primary-500),.25)}.composer-action-choice__icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:var(--ax-sys-border-radius, .375rem);background:rgba(var(--ax-sys-color-primary-500),.1);color:rgb(var(--ax-sys-color-primary-600));font-size:1.125rem}.composer-action-choice__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.composer-action-choice__title{font-size:.875rem;font-weight:600;color:rgb(var(--ax-sys-color-on-surface))}.composer-action-choice__subtitle{font-size:.75rem;color:rgba(var(--ax-sys-color-on-surface),.6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-action-choice__chevron{flex-shrink:0;font-size:.75rem;color:rgba(var(--ax-sys-color-on-surface),.45)}\n"] }]
103
- }], propDecorators: { actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: true }] }], fileCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileCount", required: false }] }], composerActionRegistry: [{ type: i0.Input, args: [{ isSignal: true, alias: "composerActionRegistry", required: true }] }], __popup__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popup__", required: false }] }] } });
104
-
105
- export { AXConversationComposerActionChoiceDialogComponent };
106
- //# sourceMappingURL=acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs","sources":["../../../../packages/components/conversation/src/lib/components/message-list/composer-action-choice-dialog.component.ts"],"sourcesContent":["import { AXClosableComponent, AXComponentCloseEvent } from '@acorex/cdk/common';\nimport type { AXPopupRef } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Component, EventEmitter, computed, inject, input } from '@angular/core';\nimport type {\n AXConversationComposerAction,\n AXConversationComposerActionRegistry,\n} from '../../registries/composer-action.registry';\n\n@Component({\n selector: 'ax-conversation-composer-action-choice-dialog',\n\n template: `\n <div class=\"composer-action-choice\" role=\"dialog\" aria-modal=\"true\">\n <p class=\"composer-action-choice__hint\">{{ hintText() }}</p>\n <ul class=\"composer-action-choice__list\" role=\"listbox\">\n @for (action of actions(); track action.id) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n class=\"composer-action-choice__option\"\n role=\"option\"\n (click)=\"choose(action)\"\n [attr.aria-label]=\"getActionLabel(action)\"\n >\n <span class=\"composer-action-choice__icon\" aria-hidden=\"true\">\n <i [class]=\"action.icon\"></i>\n </span>\n <span class=\"composer-action-choice__text\">\n <span class=\"composer-action-choice__title\">{{ getActionLabel(action) }}</span>\n @if (getActionTooltip(action); as tip) {\n <span class=\"composer-action-choice__subtitle\">{{ tip }}</span>\n }\n </span>\n <i class=\"fa-light fa-chevron-right composer-action-choice__chevron\" aria-hidden=\"true\"></i>\n </button>\n </li>\n }\n </ul>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .composer-action-choice {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0.5rem;\n min-width: 16rem;\n }\n\n .composer-action-choice__hint {\n margin: 0;\n font-size: 0.8125rem;\n line-height: 1.45;\n color: rgba(var(--ax-sys-color-on-surface), 0.7);\n }\n\n .composer-action-choice__list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n }\n\n .composer-action-choice__option {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.625rem 0.75rem;\n border: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n border-radius: var(--ax-sys-border-radius, 0.5rem);\n background: rgb(var(--ax-sys-color-surface));\n cursor: pointer;\n text-align: start;\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n }\n\n .composer-action-choice__option:hover,\n .composer-action-choice__option:focus-visible {\n border-color: rgb(var(--ax-sys-color-primary-500));\n background: rgba(var(--ax-sys-color-primary-500), 0.06);\n outline: none;\n box-shadow: 0 0 0 1px rgba(var(--ax-sys-color-primary-500), 0.25);\n }\n\n .composer-action-choice__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n flex-shrink: 0;\n border-radius: var(--ax-sys-border-radius, 0.375rem);\n background: rgba(var(--ax-sys-color-primary-500), 0.1);\n color: rgb(var(--ax-sys-color-primary-600));\n font-size: 1.125rem;\n }\n\n .composer-action-choice__text {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n }\n\n .composer-action-choice__title {\n font-size: 0.875rem;\n font-weight: 600;\n color: rgb(var(--ax-sys-color-on-surface));\n }\n\n .composer-action-choice__subtitle {\n font-size: 0.75rem;\n color: rgba(var(--ax-sys-color-on-surface), 0.6);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .composer-action-choice__chevron {\n flex-shrink: 0;\n font-size: 0.75rem;\n color: rgba(var(--ax-sys-color-on-surface), 0.45);\n }\n `,\n ],\n providers: [{ provide: AXClosableComponent, useExisting: AXConversationComposerActionChoiceDialogComponent }],\n})\nexport class AXConversationComposerActionChoiceDialogComponent {\n private readonly translation = inject(AXTranslationService);\n\n readonly actions = input.required<AXConversationComposerAction[]>();\n readonly fileCount = input(1);\n readonly composerActionRegistry = input.required<AXConversationComposerActionRegistry>();\n readonly __popup__ = input<AXPopupRef | undefined>();\n\n readonly hintText = computed(() => {\n const count = this.fileCount();\n if (count === 1) {\n return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-single');\n }\n return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-multiple', {\n params: { count },\n });\n });\n\n readonly onClosed = new EventEmitter<AXComponentCloseEvent>();\n\n getActionLabel(action: AXConversationComposerAction): string {\n return this.composerActionRegistry().getActionLabel(action);\n }\n\n getActionTooltip(action: AXConversationComposerAction): string | undefined {\n return this.composerActionRegistry().getActionTooltip(action);\n }\n\n choose(action: AXConversationComposerAction): void {\n const event = new AXComponentCloseEvent();\n event.component = this;\n event.data = action;\n this.onClosed.emit(event);\n }\n}\n"],"names":[],"mappings":";;;;;MA4Ia,iDAAiD,CAAA;AAnI9D,IAAA,WAAA,GAAA;AAoImB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAElD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ;oFAAkC;QAC1D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,CAAC;sFAAC;QACpB,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ;mGAAwC;AAC/E,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK;iGAA0B;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,oDAAoD,CAAC;YAC7F;AACA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,sDAAsD,EAAE;gBAC5F,MAAM,EAAE,EAAE,KAAK,EAAE;AAClB,aAAA,CAAC;QACJ,CAAC;qFAAC;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAyB;AAgB9D,IAAA;AAdC,IAAA,cAAc,CAAC,MAAoC,EAAA;QACjD,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;IAC7D;AAEA,IAAA,gBAAgB,CAAC,MAAoC,EAAA;QACnD,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAC/D;AAEA,IAAA,MAAM,CAAC,MAAoC,EAAA;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,qBAAqB,EAAE;AACzC,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI;AACtB,QAAA,KAAK,CAAC,IAAI,GAAG,MAAM;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;8GAjCW,iDAAiD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iDAAiD,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFjD,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9HnG;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6tDAAA,CAAA,EAAA,CAAA,CAAA;;2FAoGU,iDAAiD,EAAA,UAAA,EAAA,CAAA;kBAnI7D,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+CAA+C,EAAA,QAAA,EAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT,EAAA,SAAA,EAkGU,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,iDAAmD,EAAE,CAAC,EAAA,MAAA,EAAA,CAAA,6tDAAA,CAAA,EAAA;;;;;"}