@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
@@ -155,6 +155,7 @@ declare abstract class AXBaseDataTable extends MXBaseComponent {
155
155
  set highlightText(value: string | undefined);
156
156
  selectedRowsChange: EventEmitter<unknown[]>;
157
157
  protected readonly highlightedRows: WritableSignal<Map<string | number, AXDataTableRowHighlight>>;
158
+ protected readonly highlightedColumns: WritableSignal<Map<string, AXDataTableRowColorType>>;
158
159
  private readonly rowCssClassCache;
159
160
  private readonly cellCssClassCache;
160
161
  private readonly highlightService;
@@ -180,9 +181,44 @@ declare abstract class AXBaseDataTable extends MXBaseComponent {
180
181
  */
181
182
  highlightRows(rows: unknown[], options?: AXDataTableRowHighlightOptions): void;
182
183
  /**
183
- * Clears all temporary row highlights.
184
+ * Applies a color highlight to rows by their key (id) values.
185
+ * Unlike `highlightRow`, no badge, pulse, or pinning is applied.
186
+ *
187
+ * @param keys - Key (id) values of the rows to highlight.
188
+ * @param color - Semantic highlight color. @defaultValue `'primary'`
189
+ */
190
+ highlightRowsByKey(keys: (string | number)[], color?: AXDataTableRowColorType): void;
191
+ /**
192
+ * Clears temporary row highlights.
193
+ *
194
+ * @param keys - When provided, only highlights of rows with these key (id) values are cleared.
195
+ */
196
+ clearRowHighlights(keys?: (string | number)[]): void;
197
+ /**
198
+ * Applies a color highlight to one or more columns.
199
+ *
200
+ * @param columnNames - Column identifiers; either the column `name` (e.g. `cl-firstName`) or its `dataField`.
201
+ * @param color - Semantic highlight color. @defaultValue `'primary'`
202
+ */
203
+ highlightColumns(columnNames: string | string[], color?: AXDataTableRowColorType): void;
204
+ /**
205
+ * Clears column highlights.
206
+ *
207
+ * @param columnNames - When provided, only highlights of these columns are cleared.
208
+ */
209
+ clearColumnHighlights(columnNames?: string | string[]): void;
210
+ /**
211
+ * Returns the highlight color of a column, if any.
212
+ */
213
+ getColumnHighlightColor(column: AXDataTableColumnComponent): AXDataTableRowColorType | null;
214
+ /**
215
+ * Returns the CSS class of a highlighted column, applied to its header and body cells.
184
216
  */
185
- clearRowHighlights(): void;
217
+ getColumnCssClass(column: AXDataTableColumnComponent): string;
218
+ /**
219
+ * Header `<th>` classes: column highlight + column `cssClass` (e.g. `ax-select-column`).
220
+ */
221
+ getHeadColumnCssClass(column: AXDataTableColumnComponent): string;
186
222
  /**
187
223
  * Returns the temporary highlight state for a row, if any.
188
224
  */
@@ -200,7 +236,7 @@ declare abstract class AXBaseDataTable extends MXBaseComponent {
200
236
  */
201
237
  getRowCssClass(row: unknown, rowIndex: number): string;
202
238
  /**
203
- * Returns CSS classes for a body cell, merging column `cssClass` with `cellCssClass`.
239
+ * Returns CSS classes for a body cell, merging column `cssClass`, column highlight, and `cellCssClass`.
204
240
  */
205
241
  getCellCssClass(row: unknown, column: AXDataTableColumnComponent, rowIndex: number): string;
206
242
  /**
@@ -350,6 +386,10 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
350
386
  * @defaultValue false
351
387
  */
352
388
  wrapText: boolean;
389
+ /**
390
+ * When `true`, cell values are resolved as i18n expressions (e.g. `@acorex:common.actions.cancel`).
391
+ */
392
+ translate: boolean;
353
393
  /**
354
394
  * Provides a custom template for rendering cells within the column.
355
395
  */
@@ -396,7 +436,7 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
396
436
  /**
397
437
  * @ignore
398
438
  */
399
- protected handleExpandRow(row: any): Promise<void>;
439
+ protected handleExpandRow(row: any, event?: Event): Promise<void>;
400
440
  /**
401
441
  * Generates a unique name based on the `dataField` value.
402
442
  */
@@ -409,6 +449,7 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
409
449
  * @ignore
410
450
  */
411
451
  private formatService;
452
+ private translationService;
412
453
  protected getDisplayText(rowData: unknown, dataField: string): string;
413
454
  /**
414
455
  * Defines the format string for displaying values in the component.
@@ -419,7 +460,7 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
419
460
  */
420
461
  formatOptions: AXFormatOptions;
421
462
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableTextColumnComponent, never>;
422
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableTextColumnComponent, "ax-text-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "allowSorting": { "alias": "allowSorting"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "hasTitle": { "alias": "hasTitle"; "required": false; }; "customExpandIcon": { "alias": "customExpandIcon"; "required": false; }; "customCollapseIcon": { "alias": "customCollapseIcon"; "required": false; }; "dataField": { "alias": "dataField"; "required": false; }; "expandHandler": { "alias": "expandHandler"; "required": false; }; "wrapText": { "alias": "wrapText"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "format": { "alias": "format"; "required": false; }; "formatOptions": { "alias": "formatOptions"; "required": false; }; }, {}, never, never, true, never>;
463
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableTextColumnComponent, "ax-text-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "allowSorting": { "alias": "allowSorting"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "hasTitle": { "alias": "hasTitle"; "required": false; }; "customExpandIcon": { "alias": "customExpandIcon"; "required": false; }; "customCollapseIcon": { "alias": "customCollapseIcon"; "required": false; }; "dataField": { "alias": "dataField"; "required": false; }; "expandHandler": { "alias": "expandHandler"; "required": false; }; "wrapText": { "alias": "wrapText"; "required": false; }; "translate": { "alias": "translate"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "format": { "alias": "format"; "required": false; }; "formatOptions": { "alias": "formatOptions"; "required": false; }; }, {}, never, never, true, never>;
423
464
  }
424
465
 
425
466
  type AXRowCommandItem = AXButtonItemListItem & {
@@ -609,7 +650,7 @@ declare class AXRowExpandColumnComponent extends AXDataTableColumnComponent {
609
650
  /**
610
651
  * @ignore
611
652
  */
612
- protected handleExpandRow(row: any): Promise<void>;
653
+ protected handleExpandRow(row: any, event?: Event): Promise<void>;
613
654
  /**
614
655
  * Indicates whether loading is enabled for the column.
615
656
  */
@@ -821,15 +862,21 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
821
862
  * @ignore
822
863
  */
823
864
  protected normalColumnsList: Signal<any[]>;
865
+ /**
866
+ * True when a text column owns the tree expander. That column stays `width: auto`
867
+ * so leftover table space is used for nested indent instead of the empty spacer.
868
+ */
869
+ protected hasTreeFillColumn: Signal<boolean>;
824
870
  /**
825
871
  * @ignore
826
872
  */
827
873
  protected resizeColumnProp: {
828
874
  startX: number;
829
875
  startWidth: number;
830
- columnIndex: number;
831
- newColumnWidth: number;
832
- thElement: any;
876
+ column: AXDataTableColumnComponent | null;
877
+ thElement: HTMLElement | null;
878
+ /** True when the resize handle sits on the column's trailing edge in screen coordinates. */
879
+ resizeFromTrailingEdge: boolean;
833
880
  };
834
881
  /**
835
882
  * Columns that used `width="auto"` and received header-only sizing before rows were available.
@@ -1019,11 +1066,16 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
1019
1066
  * @ignore
1020
1067
  */
1021
1068
  ngOnInit(): void;
1069
+ private applyLoadedRows;
1022
1070
  /**
1023
1071
  * @ignore
1024
1072
  */
1025
1073
  ngAfterViewInit(): void;
1026
1074
  private captureAutoFitIntentColumns;
1075
+ /**
1076
+ * Tree expand columns must keep `width: auto` so nested indent can use leftover table space.
1077
+ */
1078
+ private isTreeFillColumn;
1027
1079
  /**
1028
1080
  * Returns the display text for a cell. Used for the cell tooltip when the column has `hasTitle`.
1029
1081
  */
@@ -1040,10 +1092,20 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
1040
1092
  protected toggleExpanded(rows: any[], expandedItem: any, children: any[]): any[];
1041
1093
  protected refreshExpandedItem(id: string | number): Promise<void>;
1042
1094
  private updateChildren;
1095
+ /**
1096
+ * CDK sort-predicate indices follow physical left-to-right order; map them to `columnsList` order.
1097
+ * @ignore
1098
+ */
1099
+ private cdkSortIndexToColumnIndex;
1100
+ /**
1101
+ * Restricts column reordering to non-fixed columns only.
1102
+ * @ignore
1103
+ */
1104
+ protected columnReorderSortPredicate: (index: number) => boolean;
1043
1105
  /**
1044
1106
  * @ignore
1045
1107
  */
1046
- protected drop(event: CdkDragDrop<any, any, any>): void;
1108
+ protected drop(event: CdkDragDrop<AXDataTableColumnComponent>): void;
1047
1109
  /**
1048
1110
  * @ignore
1049
1111
  */
@@ -1107,11 +1169,11 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
1107
1169
  * @param columnIndex - The index of the column to auto-fit
1108
1170
  * @ignore
1109
1171
  */
1110
- protected onResizeHandlerDoubleClick(event: MouseEvent, columnIndex: number): void;
1172
+ protected onResizeHandlerDoubleClick(event: MouseEvent, column: AXDataTableColumnComponent): void;
1111
1173
  /**
1112
1174
  * @ignore
1113
1175
  */
1114
- protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void;
1176
+ protected onResizeColumnStart(event: MouseEvent, column: AXDataTableColumnComponent): void;
1115
1177
  /**
1116
1178
  * @ignore
1117
1179
  */
@@ -37,6 +37,7 @@ declare const AXDateTimeBoxComponent_base: polytype.Polytype.ClusteredConstructo
37
37
  * @category Components
38
38
  */
39
39
  declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
40
+ private readonly defaultConfig;
40
41
  /**
41
42
  * @ignore
42
43
  */
@@ -59,6 +60,7 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
59
60
  * Indicates whether typing is allowed in the input.
60
61
  * When false, clicking the input (or the calendar icon) opens the picker.
61
62
  * When true, the input is for typing and the picker opens from the calendar button.
63
+ * Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.
62
64
  *
63
65
  * @defaultValue false
64
66
  */
@@ -1,6 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { InjectionToken } from '@angular/core';
2
3
  import { MXInputBaseValueComponent, AXClickEvent } from '@acorex/cdk/common';
3
4
  import { AXDateTimePickerType } from '@acorex/components/calendar';
5
+ import { AXLocaleProfile } from '@acorex/core/locale';
4
6
 
5
7
  /**
6
8
  * A component for date and time input with segment-based typing, keyboard navigation,
@@ -10,9 +12,9 @@ import { AXDateTimePickerType } from '@acorex/components/calendar';
10
12
  */
11
13
  declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
12
14
  #private;
13
- private platformService;
14
15
  private localeService;
15
16
  private calendarService;
17
+ private readonly defaultConfig;
16
18
  /** @ignore */
17
19
  private readonly _editingParts;
18
20
  /** @ignore */
@@ -24,6 +26,7 @@ declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
24
26
  /**
25
27
  * When true, the user can type digits and navigate segments with the keyboard.
26
28
  * When false, keyboard input is blocked (used by datetime-box picker mode).
29
+ * Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.
27
30
  * @defaultValue false
28
31
  */
29
32
  allowTyping: _angular_core.InputSignal<boolean>;
@@ -46,6 +49,8 @@ declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
46
49
  protected readonly _calendarSystem: _angular_core.Signal<string>;
47
50
  protected readonly _resolvedFormat: _angular_core.Signal<string>;
48
51
  /** @ignore */
52
+ protected readonly _isHijriRtl: _angular_core.Signal<boolean>;
53
+ /** @ignore */
49
54
  private _editingDate;
50
55
  /** @ignore */
51
56
  private inputRef;
@@ -54,9 +59,7 @@ declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
54
59
  /**
55
60
  * @description check if page is in rtl or ltr
56
61
  */
57
- protected isRtl: _angular_core.WritableSignal<boolean>;
58
- /** @ignore */
59
- protected ngOnInit(): void;
62
+ protected readonly isRtl: _angular_core.Signal<boolean>;
60
63
  /**
61
64
  * Formats a part using the calendar already attached to the AXDateTime.
62
65
  * @ignore
@@ -67,6 +70,8 @@ declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
67
70
  /** @ignore */
68
71
  private _getOrderedParts;
69
72
  /** @ignore */
73
+ private _getNavigationParts;
74
+ /** @ignore */
70
75
  private _clearInputBuffer;
71
76
  /** @ignore */
72
77
  private _updateText;
@@ -108,10 +113,24 @@ declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
108
113
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXDateTimeInputComponent, "ax-datetime-input", never, { "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; "isSignal": true; }; "calendar": { "alias": "calendar"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "picker": { "alias": "picker"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onKeyDown": "onKeyDown"; "onKeyUp": "onKeyUp"; "onKeyPress": "onKeyPress"; "onClick": "onClick"; }, never, ["ax-validation-rule"], true, never>;
109
114
  }
110
115
 
116
+ interface AXDateTimeInputConfig {
117
+ allowTyping: boolean;
118
+ }
119
+ declare const AXDateTimeInputDefaultConfig: AXDateTimeInputConfig;
120
+ declare const AX_DATETIME_INPUT_CONFIG: InjectionToken<AXDateTimeInputConfig>;
121
+ declare function resolveDateTimeInputFormat(options: {
122
+ customFormat: string | null | undefined;
123
+ calendarSystem: string;
124
+ picker: AXDateTimePickerType;
125
+ isRtl: boolean;
126
+ localeFormats: AXLocaleProfile['formats'];
127
+ }): string;
128
+
111
129
  declare class AXDateTimeInputModule {
112
130
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDateTimeInputModule, never>;
113
131
  static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXDateTimeInputModule, never, [typeof AXDateTimeInputComponent], [typeof AXDateTimeInputComponent]>;
114
132
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXDateTimeInputModule>;
115
133
  }
116
134
 
117
- export { AXDateTimeInputComponent, AXDateTimeInputModule };
135
+ export { AXDateTimeInputComponent, AXDateTimeInputDefaultConfig, AXDateTimeInputModule, AX_DATETIME_INPUT_CONFIG, resolveDateTimeInputFormat };
136
+ export type { AXDateTimeInputConfig };
@@ -1,5 +1,6 @@
1
1
  import { MXBaseComponent, AXSurfaceType } from '@acorex/cdk/common';
2
2
  import * as i0 from '@angular/core';
3
+ import { AXFullScreenMode } from '@acorex/core/full-screen';
3
4
  import * as i1 from '@angular/common';
4
5
 
5
6
  /**
@@ -8,6 +9,7 @@ import * as i1 from '@angular/common';
8
9
  * @category Components
9
10
  */
10
11
  declare class AXDecoratorClearButtonComponent extends MXBaseComponent {
12
+ #private;
11
13
  private _parent;
12
14
  /**
13
15
  * @ignore
@@ -75,10 +77,21 @@ declare class AXDecoratorFullScreenButtonComponent extends MXBaseComponent {
75
77
  #private;
76
78
  private readonly fullScreenService;
77
79
  private readonly elementRef;
80
+ /**
81
+ * Target element to fullscreen. Falls back to the closest decorated parent when omitted.
82
+ */
78
83
  element: i0.ModelSignal<HTMLElement>;
84
+ /**
85
+ * Whether fullscreen mode is active.
86
+ */
79
87
  isActive: i0.ModelSignal<boolean>;
88
+ /**
89
+ * Fullscreen implementation mode.
90
+ * @defaultValue 'overlay'
91
+ */
92
+ mode: i0.InputSignal<AXFullScreenMode>;
80
93
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDecoratorFullScreenButtonComponent, never>;
81
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDecoratorFullScreenButtonComponent, "ax-fullscreen-button", never, { "element": { "alias": "element"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; }, { "element": "elementChange"; "isActive": "isActiveChange"; }, never, never, true, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDecoratorFullScreenButtonComponent, "ax-fullscreen-button", never, { "element": { "alias": "element"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "element": "elementChange"; "isActive": "isActiveChange"; }, never, never, true, never>;
82
95
  }
83
96
 
84
97
  /**
@@ -2,6 +2,7 @@ import * as i2 from '@acorex/cdk/common';
2
2
  import { AXStyleColorType, AXStyleLookType, AXHotKeyAction, MXBaseComponent } from '@acorex/cdk/common';
3
3
  import { AXOverlayRef } from '@acorex/cdk/overlay';
4
4
  import * as i0 from '@angular/core';
5
+ import { ElementRef } from '@angular/core';
5
6
  import * as i1 from '@angular/common';
6
7
  import * as i3 from '@angular/cdk/drag-drop';
7
8
  import * as i4 from '@angular/cdk/a11y';
@@ -34,6 +35,14 @@ interface AXDialogConfig {
34
35
  icon?: string | 'none';
35
36
  draggable?: boolean;
36
37
  direction?: 'rtl' | 'ltr';
38
+ /**
39
+ * Element used to resolve inherited visual context for overlays rendered
40
+ * outside the originating DOM subtree.
41
+ *
42
+ * This affects Appearance, Light/Dark theme, Contrast, Size, and supported
43
+ * Density context. It does not affect overlay positioning.
44
+ */
45
+ contextElement?: HTMLElement | ElementRef<HTMLElement>;
37
46
  }
38
47
  interface AXDialogRef {
39
48
  close(): void;
@@ -0,0 +1,42 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AXEmoji } from '@acorex/core/constants';
3
+
4
+ /**
5
+ * Renders a single emoji using its Unicode character from metadata.
6
+ *
7
+ * @category Components
8
+ */
9
+ declare class AXEmojiComponent {
10
+ /**
11
+ * Emoji metadata to render.
12
+ */
13
+ readonly emoji: _angular_core.InputSignal<AXEmoji>;
14
+ /**
15
+ * Emoji rendering style.
16
+ * - `google`: Noto Color Emoji (Android/Google look) on all platforms, including Windows.
17
+ * - `native`: OS default fonts (Segoe UI Emoji on Windows).
18
+ *
19
+ * @defaultValue 'google'
20
+ */
21
+ readonly appearance: _angular_core.InputSignal<"google" | "native">;
22
+ /**
23
+ * Rendered size in pixels.
24
+ *
25
+ * @defaultValue 20
26
+ */
27
+ readonly size: _angular_core.InputSignal<number>;
28
+ /** Unicode glyph to display. */
29
+ protected readonly glyph: _angular_core.Signal<string>;
30
+ /** Accessible label sourced from emoji metadata. */
31
+ protected readonly ariaLabel: _angular_core.Signal<string>;
32
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiComponent, never>;
33
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEmojiComponent, "ax-emoji", never, { "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
34
+ }
35
+
36
+ declare class AXEmojiModule {
37
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiModule, never>;
38
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXEmojiModule, never, [typeof AXEmojiComponent], [typeof AXEmojiComponent]>;
39
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXEmojiModule>;
40
+ }
41
+
42
+ export { AXEmojiComponent, AXEmojiModule };
@@ -0,0 +1,146 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AXValueChangedEvent } from '@acorex/cdk/common';
3
+ import { AXGestureEvent } from '@acorex/cdk/gesture';
4
+ import { AXTabStripChangedEvent } from '@acorex/components/tabs';
5
+ import { AXEmoji, AXEmojiCategory, AXEmojiPickerCategoryId, AXEmojiCategoryMeta } from '@acorex/core/constants';
6
+
7
+ /**
8
+ * Telegram-style emoji picker with category tabs, search, and recent emojis.
9
+ *
10
+ * @category Components
11
+ */
12
+ declare class AXEmojiPickerComponent {
13
+ private readonly hostRef;
14
+ private readonly destroyRef;
15
+ /** Emoji entries available in the picker. */
16
+ readonly items: _angular_core.InputSignal<readonly AXEmoji[]>;
17
+ /** Rendered emoji size in the grid. */
18
+ readonly size: _angular_core.InputSignal<number>;
19
+ /**
20
+ * Emoji rendering style passed to {@link AXEmojiComponent}.
21
+ * `google` uses Noto Color Emoji (Android/Google look) on Windows too.
22
+ *
23
+ * @defaultValue 'google'
24
+ */
25
+ readonly appearance: _angular_core.InputSignal<"google" | "native">;
26
+ /** Whether the search box is shown. */
27
+ readonly showSearch: _angular_core.InputSignal<boolean>;
28
+ /** Whether the recent category tab is shown. */
29
+ readonly showRecent: _angular_core.InputSignal<boolean>;
30
+ /** Number of emoji columns in the virtualized grid. */
31
+ readonly columns: _angular_core.InputSignal<number>;
32
+ /** Search box placeholder text. */
33
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
34
+ /** Unicode emoji group categories to hide from tabs and results. */
35
+ readonly excludeCategories: _angular_core.InputSignal<readonly AXEmojiCategory[]>;
36
+ /** `AXEmoji.code` values to hide (e.g. `1f595`). */
37
+ readonly excludeCodes: _angular_core.InputSignal<readonly string[]>;
38
+ /** `AXEmoji.unicode` glyph values to hide (e.g. `🖕`). */
39
+ readonly excludeUnicode: _angular_core.InputSignal<readonly string[]>;
40
+ /** Emits when the user selects an emoji. */
41
+ readonly selected: _angular_core.OutputEmitterRef<AXEmoji>;
42
+ /**
43
+ * Recently used emojis supplied by the parent (e.g. API, LocalStorage).
44
+ * Rendered in the Recent tab when {@link showRecent} is enabled.
45
+ */
46
+ readonly recentItems: _angular_core.InputSignal<readonly AXEmoji[]>;
47
+ /** Emits the updated recent list after the user selects an allowed emoji. */
48
+ readonly recentChanged: _angular_core.OutputEmitterRef<readonly AXEmoji[]>;
49
+ /** Current search query. */
50
+ protected readonly searchQuery: _angular_core.WritableSignal<string>;
51
+ /** Active category tab. */
52
+ protected readonly activeCategoryId: _angular_core.WritableSignal<AXEmojiPickerCategoryId>;
53
+ private readonly containerWidth;
54
+ protected readonly effectiveColumns: _angular_core.Signal<number>;
55
+ protected readonly availableWidthCss: _angular_core.Signal<string>;
56
+ constructor();
57
+ /** Items after picker exclusions are applied. */
58
+ protected readonly filteredItems: _angular_core.Signal<readonly AXEmoji[]>;
59
+ private readonly categoryIndex;
60
+ /** Recent items after active exclusions are applied for display. */
61
+ protected readonly visibleRecentItems: _angular_core.Signal<AXEmoji[]>;
62
+ protected onCategorySwipe(event: AXGestureEvent): void;
63
+ /** Visible category tabs. */
64
+ protected readonly categories: _angular_core.Signal<readonly AXEmojiCategoryMeta[]>;
65
+ /** Emojis shown in the current view (category or search results). */
66
+ protected readonly visibleEmojis: _angular_core.Signal<readonly AXEmoji[]>;
67
+ /** Rows used by the virtual scroll viewport. */
68
+ protected readonly emojiRows: _angular_core.Signal<readonly (readonly AXEmoji[])[]>;
69
+ /** Virtual scroll row height in pixels. */
70
+ protected readonly rowHeight: _angular_core.Signal<number>;
71
+ /** Whether the user is searching. */
72
+ protected readonly isSearching: _angular_core.Signal<boolean>;
73
+ /** Whether the current view has no emojis. */
74
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
75
+ /** Keeps the active tab valid when exclusions change. */
76
+ private readonly syncActiveCategory;
77
+ /** Selects a category tab and clears search. */
78
+ protected selectCategory(categoryId: AXEmojiPickerCategoryId): void;
79
+ /** Whether the given category tab is active. */
80
+ protected isCategoryActive(categoryId: AXEmojiPickerCategoryId): boolean;
81
+ /** Whether the category tab is the virtual recent group. */
82
+ protected isRecentCategory(categoryId: AXEmojiPickerCategoryId): boolean;
83
+ /** Syncs the active emoji category when a tab is selected. */
84
+ protected onCategoryTabChanged(event: AXTabStripChangedEvent): void;
85
+ /** Updates the search query from the search box. */
86
+ protected onSearchChanged(event: AXValueChangedEvent<string>): void;
87
+ /** Emits the selected emoji and notifies the parent of the updated recent list. */
88
+ protected selectEmoji(emoji: AXEmoji): void;
89
+ /** @ignore */
90
+ protected trackRow(index: number, row: readonly AXEmoji[]): string;
91
+ private rememberRecent;
92
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiPickerComponent, never>;
93
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEmojiPickerComponent, "ax-emoji-picker", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showRecent": { "alias": "showRecent"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "excludeCategories": { "alias": "excludeCategories"; "required": false; "isSignal": true; }; "excludeCodes": { "alias": "excludeCodes"; "required": false; "isSignal": true; }; "excludeUnicode": { "alias": "excludeUnicode"; "required": false; "isSignal": true; }; "recentItems": { "alias": "recentItems"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "recentChanged": "recentChanged"; }, never, never, true, never>;
94
+ }
95
+
96
+ /** Maximum number of emojis kept in the recent list. */
97
+ declare const RECENT_EMOJI_LIMIT = 20;
98
+ /** Grid cell size in px (`--ax-comp-emoji-picker-cell-size`). */
99
+ declare const EMOJI_PICKER_CELL_SIZE_PX = 36;
100
+ /** Grid cell size in px on narrow viewports. */
101
+ declare const EMOJI_PICKER_CELL_SIZE_PX_COMPACT = 32;
102
+ /** Gap between grid cells in px (`--ax-comp-emoji-picker-cell-gap`). */
103
+ declare const EMOJI_PICKER_CELL_GAP_PX = 2;
104
+ /** Horizontal padding around the emoji grid in px. */
105
+ declare const EMOJI_PICKER_GRID_PADDING_PX = 24;
106
+ /** Minimum column count. */
107
+ declare const EMOJI_PICKER_MIN_COLUMNS = 1;
108
+ /** Nearest ancestor that participates in layout (skips `display: contents`). */
109
+ declare function getEmojiPickerLayoutContainer(element: HTMLElement): HTMLElement;
110
+ /**
111
+ * Available width for the picker grid.
112
+ * Uses the tightest ancestor content box and the visible viewport slot so an
113
+ * overflowing parent cannot keep an 8-column grid that is clipped off-screen.
114
+ */
115
+ declare function resolveEmojiPickerContainerWidth(element: HTMLElement): number;
116
+ /** Resolves column count from container width while keeping a fixed cell size and gap. */
117
+ declare function resolveEmojiPickerColumns(containerWidth: number, requested: number): number;
118
+ /** Maximum number of emojis returned by search. */
119
+ declare const SEARCH_RESULT_LIMIT = 200;
120
+ /** User-defined exclusions for picker emoji lists. */
121
+ interface AXEmojiPickerFilter {
122
+ /** Unicode emoji group categories to hide from tabs and results. */
123
+ readonly excludeCategories?: readonly AXEmojiCategory[];
124
+ /** `AXEmoji.code` values to hide (hyphen-separated code points, e.g. `1f595`). */
125
+ readonly excludeCodes?: readonly string[];
126
+ /** `AXEmoji.unicode` glyph values to hide (e.g. `👋`). */
127
+ readonly excludeUnicode?: readonly string[];
128
+ }
129
+ /** Applies picker exclusions and default people-body curation. */
130
+ declare function filterPickerItems(items: readonly AXEmoji[], filter?: AXEmojiPickerFilter): readonly AXEmoji[];
131
+ /**
132
+ * Builds a category index for picker rendering.
133
+ * Expects items to be pre-filtered with {@link filterPickerItems}.
134
+ */
135
+ declare function buildEmojiPickerIndex(items: readonly AXEmoji[]): ReadonlyMap<AXEmojiCategory, readonly AXEmoji[]>;
136
+ /** Searches pre-filtered emoji metadata by name and keywords. */
137
+ declare function searchPickerEmojis(items: readonly AXEmoji[], query: string, limit?: number): readonly AXEmoji[];
138
+
139
+ declare class AXEmojiPickerModule {
140
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiPickerModule, never>;
141
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXEmojiPickerModule, never, [typeof AXEmojiPickerComponent], [typeof AXEmojiPickerComponent]>;
142
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXEmojiPickerModule>;
143
+ }
144
+
145
+ export { AXEmojiPickerComponent, AXEmojiPickerModule, EMOJI_PICKER_CELL_GAP_PX, EMOJI_PICKER_CELL_SIZE_PX, EMOJI_PICKER_CELL_SIZE_PX_COMPACT, EMOJI_PICKER_GRID_PADDING_PX, EMOJI_PICKER_MIN_COLUMNS, RECENT_EMOJI_LIMIT, SEARCH_RESULT_LIMIT, buildEmojiPickerIndex, filterPickerItems, getEmojiPickerLayoutContainer, resolveEmojiPickerColumns, resolveEmojiPickerContainerWidth, searchPickerEmojis };
146
+ export type { AXEmojiPickerFilter };