@eagami/ui 5.12.2 → 5.13.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eagami/ui",
3
- "version": "5.12.2",
3
+ "version": "5.13.0",
4
4
  "description": "Lightweight, accessible, themeable Angular UI component library and icon set built on CSS custom properties",
5
5
  "author": "Michal Wiraszka <michal@eagami.com>",
6
6
  "license": "MIT",
@@ -168,6 +168,7 @@ interface EagamiMessages {
168
168
  range: (start: string, end: string, total: string) => string;
169
169
  previousPage: string;
170
170
  nextPage: string;
171
+ page: (page: string) => string;
171
172
  };
172
173
  progressBar: {
173
174
  label: string;
@@ -220,6 +221,7 @@ interface EagamiMessages {
220
221
  moveSelectedToSource: string;
221
222
  moveAllToSource: string;
222
223
  empty: string;
224
+ moved: (count: string, listLabel: string) => string;
223
225
  };
224
226
  validation: {
225
227
  required: string;
@@ -1429,6 +1431,10 @@ declare class DataTableComponent<T = Record<string, unknown>> {
1429
1431
  private static readonly PAGE_JUMP;
1430
1432
  readonly columns: _angular_core.InputSignal<DataTableColumn<T>[]>;
1431
1433
  readonly data: _angular_core.InputSignal<T[]>;
1434
+ /** Accessible name for the table, announced when it takes focus as a grid. */
1435
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
1436
+ /** Visible caption rendered above the table; also names it for assistive technology. */
1437
+ readonly caption: _angular_core.InputSignal<string | undefined>;
1432
1438
  readonly trackBy: _angular_core.InputSignal<keyof T | undefined>;
1433
1439
  readonly density: _angular_core.InputSignal<DataTableDensity>;
1434
1440
  /** Visual size of the table; density paddings and icons scale with it. */
@@ -1473,7 +1479,7 @@ declare class DataTableComponent<T = Record<string, unknown>> {
1473
1479
  onGridKeydown(event: KeyboardEvent): void;
1474
1480
  private focusCell;
1475
1481
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
1476
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent<any>, "ea-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "noDataText": { "alias": "noDataText"; "required": false; "isSignal": true; }; "navigable": { "alias": "navigable"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "sorted": "sorted"; "rowActivate": "rowActivate"; }, ["noDataTemplate"], ["ea-paginator"], true, never>;
1482
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent<any>, "ea-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "noDataText": { "alias": "noDataText"; "required": false; "isSignal": true; }; "navigable": { "alias": "navigable"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "sorted": "sorted"; "rowActivate": "rowActivate"; }, ["noDataTemplate"], ["ea-paginator"], true, never>;
1477
1483
  }
1478
1484
 
1479
1485
  /** Visual size of each digit cell. */
@@ -2150,6 +2156,8 @@ declare class InputComponent implements ControlValueAccessor {
2150
2156
  protected readonly i18n: EagamiI18nService;
2151
2157
  /** Text label rendered above the field. */
2152
2158
  readonly label: _angular_core.InputSignal<string | undefined>;
2159
+ /** Accessible name for the control when no visible `label` is set. */
2160
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
2153
2161
  /** Native input type; `password` adds a built-in show/hide toggle. */
2154
2162
  readonly type: _angular_core.InputSignal<InputType>;
2155
2163
  /** Placeholder shown while the field is empty. */
@@ -2242,7 +2250,7 @@ declare class InputComponent implements ControlValueAccessor {
2242
2250
  /** Moves keyboard focus to the underlying native input element. */
2243
2251
  focus(): void;
2244
2252
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
2245
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ea-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "list": { "alias": "list"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "showPasswordToggle": { "alias": "showPasswordToggle"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
2253
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ea-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "list": { "alias": "list"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "showPasswordToggle": { "alias": "showPasswordToggle"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
2246
2254
  }
2247
2255
 
2248
2256
  /** Placement of the menu list relative to its trigger. */
@@ -2338,7 +2346,9 @@ declare class MenuItemComponent {
2338
2346
  */
2339
2347
  declare class MenuTriggerDirective {
2340
2348
  private readonly el;
2349
+ private readonly renderer;
2341
2350
  readonly menu: _angular_core.InputSignal<MenuComponent>;
2351
+ constructor();
2342
2352
  handleClick(): void;
2343
2353
  handleKeydown(event: KeyboardEvent): void;
2344
2354
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
@@ -3420,6 +3430,12 @@ declare class TagComponent {
3420
3430
  readonly removable: _angular_core.InputSignal<boolean>;
3421
3431
  readonly disabled: _angular_core.InputSignal<boolean>;
3422
3432
  readonly removeLabel: _angular_core.InputSignal<string | undefined>;
3433
+ /**
3434
+ * Whether the remove button is a tab stop. Set `false` inside a composite
3435
+ * widget (a combobox trigger, a grid cell) whose own keyboard model owns
3436
+ * navigation, since roles like `combobox` forbid focusable descendants.
3437
+ */
3438
+ readonly removeTabbable: _angular_core.InputSignal<boolean>;
3423
3439
  /** Fires when the user activates the remove button on a `removable` tag. */
3424
3440
  readonly removed: _angular_core.OutputEmitterRef<void>;
3425
3441
  /** Accessible label for the remove button, falling back to the active locale. */
@@ -3430,7 +3446,7 @@ declare class TagComponent {
3430
3446
  }>;
3431
3447
  onRemove(event: MouseEvent): void;
3432
3448
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
3433
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ea-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
3449
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ea-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "removeTabbable": { "alias": "removeTabbable"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
3434
3450
  }
3435
3451
 
3436
3452
  /** Visual size of the textarea. */
@@ -3445,6 +3461,8 @@ type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
3445
3461
  declare class TextareaComponent implements ControlValueAccessor {
3446
3462
  readonly textareaEl: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
3447
3463
  readonly label: _angular_core.InputSignal<string | undefined>;
3464
+ /** Accessible name for the control when no visible `label` is set. */
3465
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
3448
3466
  readonly placeholder: _angular_core.InputSignal<string>;
3449
3467
  readonly size: _angular_core.InputSignal<EaSize>;
3450
3468
  readonly hint: _angular_core.InputSignal<string | undefined>;
@@ -3496,7 +3514,7 @@ declare class TextareaComponent implements ControlValueAccessor {
3496
3514
  /** Moves keyboard focus to the underlying native textarea element. */
3497
3515
  focus(): void;
3498
3516
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
3499
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
3517
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
3500
3518
  }
3501
3519
 
3502
3520
  /** Visual size of the time picker trigger. */
@@ -3916,6 +3934,7 @@ declare class TransferListComponent {
3916
3934
  protected readonly canMoveAllLeft: _angular_core.Signal<boolean>;
3917
3935
  protected readonly resolvedSourceLabel: _angular_core.Signal<string>;
3918
3936
  protected readonly resolvedTargetLabel: _angular_core.Signal<string>;
3937
+ protected readonly announcement: _angular_core.WritableSignal<string>;
3919
3938
  protected readonly hostClasses: _angular_core.Signal<string[]>;
3920
3939
  protected isHighlighted(pane: 'source' | 'target', id: string): boolean;
3921
3940
  protected itemTabindex(pane: 'source' | 'target', index: number, item: TransferListItem): number;
@@ -3931,6 +3950,7 @@ declare class TransferListComponent {
3931
3950
  protected moveAllRight(): void;
3932
3951
  protected moveSelectedLeft(): void;
3933
3952
  protected moveAllLeft(): void;
3953
+ private announceMove;
3934
3954
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TransferListComponent, never>;
3935
3955
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TransferListComponent, "ea-transfer-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "sourceLabel": { "alias": "sourceLabel"; "required": false; "isSignal": true; }; "targetLabel": { "alias": "targetLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selectedIds": "selectedIdsChange"; }, never, never, true, never>;
3936
3956
  }