@acorex/components 22.0.0-next.8 → 22.1.0-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 (52) hide show
  1. package/combo-box/README.md +26 -0
  2. package/fesm2022/acorex-components-calendar.mjs +10 -12
  3. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  4. package/fesm2022/acorex-components-combo-box.mjs +237 -0
  5. package/fesm2022/acorex-components-combo-box.mjs.map +1 -0
  6. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +50 -0
  7. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +1 -0
  8. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs → acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs} +2 -2
  9. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs.map} +1 -1
  10. package/fesm2022/acorex-components-conversation.mjs +2034 -7467
  11. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  12. package/fesm2022/acorex-components-data-table.mjs +135 -45
  13. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  14. package/fesm2022/acorex-components-datetime-box.mjs +14 -16
  15. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  16. package/fesm2022/acorex-components-datetime-input.mjs +61 -32
  17. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  18. package/fesm2022/acorex-components-dialog.mjs +3 -2
  19. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  20. package/fesm2022/acorex-components-file-viewer.mjs +38 -78
  21. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  22. package/fesm2022/acorex-components-grid-layout-builder.mjs +238 -36
  23. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  24. package/fesm2022/acorex-components-list.mjs +2 -2
  25. package/fesm2022/acorex-components-list.mjs.map +1 -1
  26. package/fesm2022/acorex-components-lookup.mjs +1292 -0
  27. package/fesm2022/acorex-components-lookup.mjs.map +1 -0
  28. package/fesm2022/acorex-components-menu.mjs +211 -74
  29. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  30. package/fesm2022/acorex-components-number-box.mjs +30 -29
  31. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  32. package/fesm2022/acorex-components-scheduler.mjs +7 -17
  33. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  34. package/fesm2022/acorex-components-select-box.mjs +2 -2
  35. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  36. package/fesm2022/acorex-components-tag-box.mjs +2 -2
  37. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  38. package/lookup/README.md +47 -0
  39. package/package.json +11 -3
  40. package/types/acorex-components-combo-box.d.ts +114 -0
  41. package/types/acorex-components-conversation.d.ts +317 -94
  42. package/types/acorex-components-data-table.d.ts +35 -3
  43. package/types/acorex-components-datetime-box.d.ts +2 -0
  44. package/types/acorex-components-datetime-input.d.ts +24 -5
  45. package/types/acorex-components-file-viewer.d.ts +15 -52
  46. package/types/acorex-components-grid-layout-builder.d.ts +34 -2
  47. package/types/acorex-components-lookup.d.ts +454 -0
  48. package/types/acorex-components-menu.d.ts +26 -4
  49. package/types/acorex-components-number-box.d.ts +3 -1
  50. package/types/acorex-components-scheduler.d.ts +2 -4
  51. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs +0 -106
  52. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +0 -1
@@ -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,40 @@ 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;
186
218
  /**
187
219
  * Returns the temporary highlight state for a row, if any.
188
220
  */
@@ -200,7 +232,7 @@ declare abstract class AXBaseDataTable extends MXBaseComponent {
200
232
  */
201
233
  getRowCssClass(row: unknown, rowIndex: number): string;
202
234
  /**
203
- * Returns CSS classes for a body cell, merging column `cssClass` with `cellCssClass`.
235
+ * Returns CSS classes for a body cell, merging column `cssClass`, column highlight, and `cellCssClass`.
204
236
  */
205
237
  getCellCssClass(row: unknown, column: AXDataTableColumnComponent, rowIndex: number): string;
206
238
  /**
@@ -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,8 +1,7 @@
1
- import { AXComponentContent, AXComponentInputs } from '@acorex/core/components';
2
1
  import * as _angular_core from '@angular/core';
3
2
  import { OnDestroy, TemplateRef, Type, Provider } from '@angular/core';
3
+ import { AXComponentContent, AXComponentInputs } from '@acorex/core/components';
4
4
  import { Subject } from 'rxjs';
5
- import * as dist_packages_core_types_acorex_core_components from 'dist/packages/core/types/acorex-core-components';
6
5
  import { AXStyleColorType, AXComponentClosedPromise } from '@acorex/cdk/common';
7
6
  import * as _acorex_core_file from '@acorex/core/file';
8
7
  import { AXFileTypeExtensionHint, AXFileType, AXFileTypeViewComponent } from '@acorex/core/file';
@@ -27,18 +26,6 @@ interface AXFileViewerViewPayload {
27
26
  index: number;
28
27
  active: boolean;
29
28
  }
30
- /** Component or template rendered in the file-viewer header center slot. */
31
- type AXFileViewerHeaderContent = AXComponentContent;
32
- /** Inputs passed to {@link AXFileViewerHeaderContent} when it is a component. */
33
- type AXFileViewerHeaderContentInputs = AXComponentInputs;
34
- /** Placeholder component or template shown in the center when {@link AXFileViewerHeaderContent} is omitted. */
35
- type AXFileViewerHeaderPlaceholderContent = AXComponentContent;
36
- /** Inputs passed to the header placeholder when it is a component. */
37
- type AXFileViewerHeaderPlaceholderInputs = AXComponentInputs;
38
- /** Component or template rendered instead of the built-in fallback viewer for `file` type items. */
39
- type AXFileViewerFallbackContent = AXComponentContent;
40
- /** Inputs passed to {@link AXFileViewerFallbackContent} when it is a component. */
41
- type AXFileViewerFallbackContentInputs = AXComponentInputs;
42
29
 
43
30
  /** Carousel state shared between container, slides and thumbnails. Provided per-container. */
44
31
  declare class AXFileViewerService {
@@ -66,22 +53,10 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
66
53
  readonly fullscreen: _angular_core.InputSignal<boolean>;
67
54
  /** When true, opens in a gallery overlay and closes when fullscreen exits. */
68
55
  readonly galleryMode: _angular_core.InputSignal<boolean>;
69
- /** Component or template rendered in the header center slot. */
70
- readonly headerContent: _angular_core.InputSignal<AXFileViewerHeaderContent>;
71
- /** Inputs for {@link headerContent} when it is a component. */
72
- readonly headerContentInputs: _angular_core.InputSignal<dist_packages_core_types_acorex_core_components.AXComponentInputs>;
73
- /** Context data exposed as `$implicit` to header templates. */
74
- readonly headerContentData: _angular_core.InputSignal<unknown>;
75
- /** Custom placeholder when {@link headerContent} is omitted. */
76
- readonly headerContentPlaceholder: _angular_core.InputSignal<AXFileViewerHeaderPlaceholderContent>;
77
- /** Inputs for {@link headerContentPlaceholder} when it is a component. */
78
- readonly headerContentPlaceholderInputs: _angular_core.InputSignal<dist_packages_core_types_acorex_core_components.AXComponentInputs>;
79
- /** Component or template replacing the built-in fallback viewer for `file` type items. */
80
- readonly fallbackContent: _angular_core.InputSignal<AXFileViewerFallbackContent>;
81
- /** Inputs for {@link fallbackContent} when it is a component. */
82
- readonly fallbackContentInputs: _angular_core.InputSignal<dist_packages_core_types_acorex_core_components.AXComponentInputs>;
83
- /** Context data exposed as `$implicit` to fallback templates. */
84
- readonly fallbackContentData: _angular_core.InputSignal<unknown>;
56
+ readonly headerContent: _angular_core.InputSignal<AXComponentContent>;
57
+ readonly headerContentInputs: _angular_core.InputSignal<AXComponentInputs>;
58
+ readonly fallbackContent: _angular_core.InputSignal<AXComponentContent>;
59
+ readonly fallbackContentInputs: _angular_core.InputSignal<AXComponentInputs>;
85
60
  /** External loading flag — show overlay while parent data is being fetched. */
86
61
  readonly loading: _angular_core.InputSignal<boolean>;
87
62
  readonly fullscreenClosed: _angular_core.OutputEmitterRef<void>;
@@ -104,11 +79,8 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
104
79
  readonly slideCounter: _angular_core.Signal<string>;
105
80
  readonly headerTemplateContent: _angular_core.Signal<TemplateRef<any>>;
106
81
  readonly headerComponentContent: _angular_core.Signal<Type<unknown>>;
107
- readonly headerPlaceholderTemplateContent: _angular_core.Signal<TemplateRef<any>>;
108
- readonly headerPlaceholderComponentContent: _angular_core.Signal<Type<unknown>>;
109
82
  readonly hasHeaderCenterContent: _angular_core.Signal<boolean>;
110
83
  readonly headerContentContext: _angular_core.Signal<{
111
- $implicit: unknown;
112
84
  item: AXFileViewerItem;
113
85
  items: AXFileViewerItem[];
114
86
  selectedIndex: number;
@@ -132,7 +104,7 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
132
104
  downloadCurrent(): Promise<void>;
133
105
  ngOnDestroy(): void;
134
106
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerContainerComponent, never>;
135
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "headerContentData": { "alias": "headerContentData"; "required": false; "isSignal": true; }; "headerContentPlaceholder": { "alias": "headerContentPlaceholder"; "required": false; "isSignal": true; }; "headerContentPlaceholderInputs": { "alias": "headerContentPlaceholderInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "fallbackContentData": { "alias": "fallbackContentData"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
107
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
136
108
  }
137
109
 
138
110
  interface AXFileViewerGalleryConfig {
@@ -142,14 +114,10 @@ interface AXFileViewerGalleryConfig {
142
114
  download?: boolean;
143
115
  loading?: boolean;
144
116
  panelClass?: string[];
145
- headerContent?: AXFileViewerHeaderContent | null;
146
- headerContentInputs?: AXFileViewerHeaderContentInputs;
147
- headerContentData?: unknown;
148
- headerContentPlaceholder?: AXFileViewerHeaderPlaceholderContent | null;
149
- headerContentPlaceholderInputs?: AXFileViewerHeaderPlaceholderInputs;
150
- fallbackContent?: AXFileViewerFallbackContent | null;
151
- fallbackContentInputs?: AXFileViewerFallbackContentInputs;
152
- fallbackContentData?: unknown;
117
+ headerContent?: AXComponentContent | null;
118
+ headerContentInputs?: AXComponentInputs | null;
119
+ fallbackContent?: AXComponentContent | null;
120
+ fallbackContentInputs?: AXComponentInputs | null;
153
121
  }
154
122
  interface AXFileViewerGalleryRef<TResult = any> {
155
123
  close: (data?: TResult) => void;
@@ -196,7 +164,7 @@ declare function provideFileViewer(): Provider[];
196
164
 
197
165
  declare function createFileViewerFileTypes(): AXFileType[];
198
166
 
199
- /** Optional center header slot component for use with {@link headerContentPlaceholder}. */
167
+ /** Optional center header slot component for use with {@link headerContent}. */
200
168
  declare class AXFileViewerHeaderPlaceholderComponent {
201
169
  readonly slideCounter: _angular_core.InputSignal<string>;
202
170
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerHeaderPlaceholderComponent, never>;
@@ -206,12 +174,8 @@ declare class AXFileViewerHeaderPlaceholderComponent {
206
174
  declare class AXFileViewerSlideComponent {
207
175
  readonly item: _angular_core.InputSignal<AXFileViewerItem>;
208
176
  readonly index: _angular_core.InputSignal<number>;
209
- /** Component or template replacing the built-in fallback viewer for `file` type items. */
210
- readonly fallbackContent: _angular_core.InputSignal<AXFileViewerFallbackContent>;
211
- /** Inputs for {@link fallbackContent} when it is a component. */
212
- readonly fallbackContentInputs: _angular_core.InputSignal<dist_packages_core_types_acorex_core_components.AXComponentInputs>;
213
- /** Context data exposed as `$implicit` to fallback templates. */
214
- readonly fallbackContentData: _angular_core.InputSignal<unknown>;
177
+ readonly fallbackContent: _angular_core.InputSignal<AXComponentContent>;
178
+ readonly fallbackContentInputs: _angular_core.InputSignal<AXComponentInputs>;
215
179
  private readonly service;
216
180
  readonly fileTypeName: _angular_core.Signal<string>;
217
181
  readonly extensionHint: _angular_core.Signal<_acorex_core_file.AXFileTypeExtensionHint>;
@@ -220,7 +184,6 @@ declare class AXFileViewerSlideComponent {
220
184
  readonly fallbackComponentContent: _angular_core.Signal<Type<unknown>>;
221
185
  readonly useCustomFallback: _angular_core.Signal<boolean>;
222
186
  readonly fallbackContentContext: _angular_core.Signal<{
223
- $implicit: unknown;
224
187
  payload: AXFileViewerViewPayload;
225
188
  item: AXFileViewerItem;
226
189
  index: number;
@@ -230,7 +193,7 @@ declare class AXFileViewerSlideComponent {
230
193
  payload: AXFileViewerViewPayload;
231
194
  }>;
232
195
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerSlideComponent, never>;
233
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerSlideComponent, "ax-file-viewer-slide", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "fallbackContentData": { "alias": "fallbackContentData"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
196
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerSlideComponent, "ax-file-viewer-slide", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
234
197
  }
235
198
 
236
199
  declare class AXFileViewerThumbPreviewComponent {
@@ -306,4 +269,4 @@ declare class AXFileViewerFileFallbackComponent implements AXFileTypeViewCompone
306
269
  }
307
270
 
308
271
  export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerFileFallbackComponent, AXFileViewerGalleryService, AXFileViewerHeaderPlaceholderComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
309
- export type { AXFileViewerFallbackContent, AXFileViewerFallbackContentInputs, AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerHeaderContent, AXFileViewerHeaderContentInputs, AXFileViewerHeaderPlaceholderContent, AXFileViewerHeaderPlaceholderInputs, AXFileViewerItem, AXFileViewerViewPayload };
272
+ export type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerItem, AXFileViewerViewPayload };
@@ -5,6 +5,8 @@ import { NXEvent, NXComponent } from '@acorex/cdk/common';
5
5
  import { Subscription } from 'rxjs';
6
6
  import * as gridstack from 'gridstack';
7
7
 
8
+ /** Grid size preset as `[width, height]` in column/row units. */
9
+ type AXGridLayoutSize = readonly [width: number, height: number];
8
10
  interface AXGridLayoutPosition {
9
11
  /** widget position x (default?: 0) */
10
12
  x?: number;
@@ -22,6 +24,11 @@ interface AXGridLayoutPosition {
22
24
  minWidth?: number;
23
25
  /** minimum height of widget in rows (default?: undefined = un-constrained) */
24
26
  minHeight?: number;
27
+ /**
28
+ * When set, resize is limited to these `[width, height]` presets.
29
+ * Invalid sizes revert to the previous size on resize end. Min/max bounds are derived from this list.
30
+ */
31
+ allowedSizes?: readonly AXGridLayoutSize[];
25
32
  }
26
33
  interface AXGridLayoutWidget extends AXGridLayoutPosition {
27
34
  id?: string;
@@ -318,5 +325,30 @@ declare class AXGridLayoutBuilderModule {
318
325
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXGridLayoutBuilderModule>;
319
326
  }
320
327
 
321
- export { AXGridLayoutBuilderModule, AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent };
322
- export type { AXGridLayout, AXGridLayoutContainerElement, AXGridLayoutEvent, AXGridLayoutNode, AXGridLayoutOptions, AXGridLayoutPosition, AXGridLayoutWidget, AXGridLayoutWidgetElement };
328
+ declare const AX_GRID_LAYOUT_ALLOWED_SIZES_ATTR = "data-ax-allowed-sizes";
329
+ declare function convertAXGridLayoutWidgetToGridStackWidget(widget: AXGridLayoutWidget): gridstack.GridStackWidget;
330
+ declare function convertGridStackWidgetToAXGridLayoutWidget(widget: gridstack.GridStackWidget): AXGridLayoutWidget;
331
+ declare function convertAXGridLayoutNodeToGridStackNode(node: AXGridLayoutNode): gridstack.GridStackNode;
332
+ declare function convertGridStackNodeToAXGridLayoutNode(node: gridstack.GridStackNode): AXGridLayoutNode;
333
+ declare function convertAXGridLayoutOptionsToGridStackOptions(options: AXGridLayoutOptions): gridstack.GridStackOptions;
334
+ declare function convertGridStackOptionsToAXGridLayoutOptions(options: gridstack.GridStackOptions): AXGridLayoutOptions;
335
+ /** remove keys which are undefined */
336
+ declare function removeUndefinedKeys<T extends object>(obj: T): T;
337
+ declare function writeAllowedSizesToElement(element: HTMLElement | undefined, allowedSizes: readonly AXGridLayoutSize[] | undefined): void;
338
+ declare function readAllowedSizesFromElement(element: HTMLElement): readonly AXGridLayoutSize[] | undefined;
339
+ declare const AX_GRID_LAYOUT_RESIZE_INVALID_CLASS = "ax-grid-layout-resize-invalid";
340
+ declare const AX_GRID_LAYOUT_RESIZE_PREV_SIZE_ATTR = "data-ax-resize-prev-size";
341
+ declare function isExactAllowedSize(width: number, height: number, allowedSizes: readonly AXGridLayoutSize[]): boolean;
342
+ declare function updateResizeValidityMarkers(gridEl: HTMLElement, element: gridstack.GridItemHTMLElement): void;
343
+ declare function clearResizeValidityMarkers(gridEl: HTMLElement): void;
344
+ declare function storeResizeStartSize(element: gridstack.GridItemHTMLElement): void;
345
+ declare function clearResizeStartSize(element: HTMLElement): void;
346
+ declare function readResizeStartSize(element: HTMLElement): AXGridLayoutSize | undefined;
347
+ declare function snapToAllowedSize(width: number, height: number, allowedSizes: readonly AXGridLayoutSize[]): AXGridLayoutSize;
348
+ declare function deriveMinMaxFromAllowedSizes(allowedSizes: readonly AXGridLayoutSize[]): Pick<AXGridLayoutWidget, 'minWidth' | 'maxWidth' | 'minHeight' | 'maxHeight'>;
349
+ declare function normalizeLayoutNodeWithAllowedSizes<T extends AXGridLayoutWidget>(node: T): T;
350
+ declare function snapElementToAllowedSize(grid: gridstack.GridStack, element: gridstack.GridItemHTMLElement): boolean;
351
+ declare function revertElementToAllowedSizeIfInvalid(grid: gridstack.GridStack, element: gridstack.GridItemHTMLElement): boolean;
352
+
353
+ export { AXGridLayoutBuilderModule, AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent, AX_GRID_LAYOUT_ALLOWED_SIZES_ATTR, AX_GRID_LAYOUT_RESIZE_INVALID_CLASS, AX_GRID_LAYOUT_RESIZE_PREV_SIZE_ATTR, clearResizeStartSize, clearResizeValidityMarkers, convertAXGridLayoutNodeToGridStackNode, convertAXGridLayoutOptionsToGridStackOptions, convertAXGridLayoutWidgetToGridStackWidget, convertGridStackNodeToAXGridLayoutNode, convertGridStackOptionsToAXGridLayoutOptions, convertGridStackWidgetToAXGridLayoutWidget, deriveMinMaxFromAllowedSizes, isExactAllowedSize, normalizeLayoutNodeWithAllowedSizes, readAllowedSizesFromElement, readResizeStartSize, removeUndefinedKeys, revertElementToAllowedSizeIfInvalid, snapElementToAllowedSize, snapToAllowedSize, storeResizeStartSize, updateResizeValidityMarkers, writeAllowedSizesToElement };
354
+ export type { AXGridLayout, AXGridLayoutContainerElement, AXGridLayoutEvent, AXGridLayoutNode, AXGridLayoutOptions, AXGridLayoutPosition, AXGridLayoutSize, AXGridLayoutWidget, AXGridLayoutWidgetElement };