@elasticias/ui 1.0.21 → 1.0.23

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.
@@ -1,12 +1,12 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { PipeTransform, OnInit, OnChanges, TemplateRef, EventEmitter, AfterContentInit, OnDestroy, SimpleChanges, InjectionToken, AfterViewInit } from '@angular/core';
3
+ import * as _elasticias_screens from '@elasticias/screens';
4
+ import { EfDataCardColumn, ScreenContext, EfDetailToolbarAction, EfSearchToolbarAction, EfDataCardSort, EfDataCardExportRequest, EfDateRange, EfDatePresetKey } from '@elasticias/screens';
5
+ export { EfDataCardColumn, EfDataCardColumnAlign, EfDataCardColumnMobileRole, EfDataCardColumnType, EfDataCardSort, EfDataCardSortDirection, EfDatePresetKey, EfDateRange, EfDetailToolbarAction, EfSearchToolbarAction } from '@elasticias/screens';
3
6
  import { Menu } from 'primeng/menu';
4
7
  import * as _elasticias_core from '@elasticias/core';
5
8
  import { EfBuildPackage, EfModule, EfNavSection, EfNavItem, EfModuleId, EfToast, EfToastAction, EfThemeConfigService } from '@elasticias/core';
6
9
  import * as i1 from 'primeng/tooltip';
7
- import * as _elasticias_screens from '@elasticias/screens';
8
- import { ScreenContext, EfDetailToolbarAction, EfSearchToolbarAction, EfDataCardColumn, EfDataCardSort, EfDataCardExportRequest, EfDateRange, EfDatePresetKey } from '@elasticias/screens';
9
- export { EfDataCardColumn, EfDataCardColumnAlign, EfDataCardColumnMobileRole, EfDataCardColumnType, EfDataCardSort, EfDataCardSortDirection, EfDatePresetKey, EfDateRange, EfDetailToolbarAction, EfSearchToolbarAction } from '@elasticias/screens';
10
10
  import { BlockableUI } from 'primeng/api';
11
11
  import { SafeResourceUrl } from '@angular/platform-browser';
12
12
  import { ChartConfiguration } from 'chart.js';
@@ -53,6 +53,14 @@ declare class EfPriceDisplayComponent {
53
53
  }
54
54
 
55
55
  declare class EfQuantitySelectorComponent {
56
+ /**
57
+ * PrimeNG's Button reads `autofocus || buttonProps?.autofocus`, so a bare
58
+ * `false` collapses to `undefined` and its AutoFocus directive writes the
59
+ * attribute anyway. Passing the flag here too makes it resolve to `false`.
60
+ */
61
+ protected readonly noAutofocus: {
62
+ autofocus: boolean;
63
+ };
56
64
  readonly quantity: _angular_core.InputSignal<number>;
57
65
  readonly quantityChange: _angular_core.OutputEmitterRef<number>;
58
66
  increment(): void;
@@ -435,8 +443,18 @@ declare class EfOrderBuilderComponent implements OnInit {
435
443
  id: OrderLineItem["id"];
436
444
  field: EditableLineField;
437
445
  }>;
438
- /** Number of table columns, used for the empty-state colspan. */
439
- colCount: _angular_core.Signal<number>;
446
+ /**
447
+ * Columns for the lines table.
448
+ *
449
+ * Only the article column is elastic: it carries no width and so absorbs
450
+ * whatever the fixed columns leave. Every other column holds a number whose
451
+ * magnitude is known in advance, so a fixed track keeps the decimal points
452
+ * aligned down the table instead of letting the longest product description
453
+ * shift them. The `mobile` roles decide what `ef-data-card` shows on a
454
+ * phone before the row is expanded, which is why the article leads and the
455
+ * subtotal reads as the row's status.
456
+ */
457
+ readonly lineColumns: _angular_core.Signal<EfDataCardColumn[]>;
440
458
  isEditingCell(item: OrderLineItem, field: EditableLineField): boolean;
441
459
  startEditCell(item: OrderLineItem, field: EditableLineField): void;
442
460
  stopEditCell(): void;
@@ -448,6 +466,17 @@ declare class EfOrderBuilderComponent implements OnInit {
448
466
  recapColumns: _angular_core.Signal<OrderSummaryItem[][]>;
449
467
  constructor();
450
468
  ngOnInit(): void;
469
+ /**
470
+ * Move a line to a new position.
471
+ *
472
+ * The order of an order's lines is data the operator owns — it is the order
473
+ * the picker walks the shelves in and the order the printed document reads
474
+ * in — so it is reordered by hand rather than derived from a sort.
475
+ */
476
+ reorderLine(ev: {
477
+ from: number;
478
+ to: number;
479
+ }): void;
451
480
  removeOrderLine(id: string | number | undefined): void;
452
481
  onFieldChange(item: OrderLineItem): void;
453
482
  calculateSubtotal(item: OrderLineItem): number;
@@ -571,6 +600,14 @@ interface SelectedFilter {
571
600
  label: string;
572
601
  }
573
602
  declare class EfProductCatalogueFilterComponent {
603
+ /**
604
+ * PrimeNG's Button reads `autofocus || buttonProps?.autofocus`, so a bare
605
+ * `false` collapses to `undefined` and its AutoFocus directive writes the
606
+ * attribute anyway. Passing the flag here too makes it resolve to `false`.
607
+ */
608
+ protected readonly noAutofocus: {
609
+ autofocus: boolean;
610
+ };
574
611
  /** Category groups from reference_data (product_categories items with children) */
575
612
  categoryGroups: _angular_core.InputSignal<CategoryGroup[]>;
576
613
  /** Products to calculate counts */
@@ -1220,6 +1257,28 @@ declare class EfButtonComponent {
1220
1257
  * long-press once the label is hidden by responsive CSS. */
1221
1258
  tooltipKey?: string;
1222
1259
  tooltipPosition: 'top' | 'bottom' | 'left' | 'right';
1260
+ /**
1261
+ * Take focus on load. Bound explicitly rather than left unset: PrimeNG's
1262
+ * AutoFocus directive tests `autofocus === false`, and the control declares
1263
+ * it with no initialiser, so an unbound instance arrives as `undefined`,
1264
+ * misses that check and has a real `autofocus` attribute written onto it.
1265
+ * Every such control on a page then becomes an autofocus candidate, and the
1266
+ * browser scrolls its container to whichever one it picks on load.
1267
+ */
1268
+ set autofocus(v: boolean);
1269
+ get autofocus(): boolean;
1270
+ private _autofocus;
1271
+ /**
1272
+ * PrimeNG's Button resolves its focus flag as
1273
+ * `autofocus || buttonProps?.autofocus`. Passing `false` alone is therefore
1274
+ * not enough: `false || undefined` is `undefined`, which misses the
1275
+ * AutoFocus directive's `=== false` test and writes the attribute anyway.
1276
+ * Supplying the flag through `buttonProps` as well makes the expression
1277
+ * resolve to a real `false`.
1278
+ */
1279
+ protected pnButtonProps: {
1280
+ autofocus: boolean;
1281
+ };
1223
1282
  /** Resolved tooltip translation key — `tooltipKey` if provided,
1224
1283
  * otherwise `labelKey`. Lets responsive icon-only buttons reuse
1225
1284
  * their label as the tooltip without restating it at every call
@@ -1237,13 +1296,14 @@ declare class EfButtonComponent {
1237
1296
  get comptoirInlineColor(): string | null;
1238
1297
  handleClick(event: Event): void;
1239
1298
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfButtonComponent, never>;
1240
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfButtonComponent, "ef-button", never, { "label": { "alias": "label"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "severity": { "alias": "severity"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "outlined": { "alias": "outlined"; "required": false; }; "raised": { "alias": "raised"; "required": false; }; "text": { "alias": "text"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "type": { "alias": "type"; "required": false; }; "badge": { "alias": "badge"; "required": false; }; "badgeSeverity": { "alias": "badgeSeverity"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipKey": { "alias": "tooltipKey"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; }, { "clickEvent": "clickEvent"; }, never, never, true, never>;
1299
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfButtonComponent, "ef-button", never, { "label": { "alias": "label"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "severity": { "alias": "severity"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "outlined": { "alias": "outlined"; "required": false; }; "raised": { "alias": "raised"; "required": false; }; "text": { "alias": "text"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "type": { "alias": "type"; "required": false; }; "badge": { "alias": "badge"; "required": false; }; "badgeSeverity": { "alias": "badgeSeverity"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipKey": { "alias": "tooltipKey"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, { "clickEvent": "clickEvent"; }, never, never, true, never>;
1241
1300
  static ngAcceptInputType_disabled: unknown;
1242
1301
  static ngAcceptInputType_rounded: unknown;
1243
1302
  static ngAcceptInputType_outlined: unknown;
1244
1303
  static ngAcceptInputType_raised: unknown;
1245
1304
  static ngAcceptInputType_text: unknown;
1246
1305
  static ngAcceptInputType_loading: unknown;
1306
+ static ngAcceptInputType_autofocus: unknown;
1247
1307
  }
1248
1308
 
1249
1309
  declare class EfButtonGroupComponent {
@@ -2460,8 +2520,10 @@ declare class EfCardComponent {
2460
2520
  }
2461
2521
 
2462
2522
  /**
2463
- * 12-column form-grid primitive. Children use `.col-2/3/4/6/8/9/12`
2464
- * to claim spans; on viewports < 720px every span collapses to 12.
2523
+ * 12-column form-grid primitive. Children use `.col-1` through
2524
+ * `.col-12` to claim spans; at 767px and below (the shell's own
2525
+ * mobile breakpoint) every span collapses to the full 12, so a
2526
+ * field never carries a per-breakpoint span of its own.
2465
2527
  *
2466
2528
  * ```html
2467
2529
  * <ef-form-grid>
@@ -3248,6 +3310,19 @@ declare class EfSelectComponent extends AbstractEfFormControl implements Control
3248
3310
  filterPlaceholderKey?: string;
3249
3311
  /** Auto-focus the filter input when the panel opens (default: true). */
3250
3312
  autofocusFilter: boolean;
3313
+ /**
3314
+ * Take focus on load. Off by default, and bound explicitly rather than left
3315
+ * unset, which matters more than it looks: PrimeNG's AutoFocus directive
3316
+ * decides with `if (this.autofocus === false)`, and `Select` declares
3317
+ * `autofocus` with no initialiser. An unbound control therefore arrives as
3318
+ * `undefined`, misses that strict check, and gets a real `autofocus="true"`
3319
+ * attribute written onto its label. Every select on a page became an
3320
+ * autofocus candidate, so on load the browser focused one of them and
3321
+ * scrolled its container to it — which is why a dashboard opened partway
3322
+ * down the page. Binding `false` puts the directive back on its intended
3323
+ * branch and removes the attribute.
3324
+ */
3325
+ autofocus: boolean;
3251
3326
  editable: boolean;
3252
3327
  loading: boolean;
3253
3328
  /** Virtual-scroll for long lists (>100 items). Pair with
@@ -3350,13 +3425,14 @@ declare class EfSelectComponent extends AbstractEfFormControl implements Control
3350
3425
  handleNativeSelectChange(rawValue: string): void;
3351
3426
  private applyFilters;
3352
3427
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfSelectComponent, never>;
3353
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfSelectComponent, "ef-select", never, { "options": { "alias": "options"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; }; "dataKey": { "alias": "dataKey"; "required": false; }; "group": { "alias": "group"; "required": false; }; "optionGroupLabel": { "alias": "optionGroupLabel"; "required": false; }; "optionGroupChildren": { "alias": "optionGroupChildren"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "filterBy": { "alias": "filterBy"; "required": false; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; }; "filterPlaceholderKey": { "alias": "filterPlaceholderKey"; "required": false; }; "autofocusFilter": { "alias": "autofocusFilter"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; }; "multiDisplay": { "alias": "multiDisplay"; "required": false; }; "showToggleAll": { "alias": "showToggleAll"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "emptyMessageKey": { "alias": "emptyMessageKey"; "required": false; }; "emptyFilterMessage": { "alias": "emptyFilterMessage"; "required": false; }; "emptyFilterMessageKey": { "alias": "emptyFilterMessageKey"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "panelStyleClass": { "alias": "panelStyleClass"; "required": false; }; "filterByKeys": { "alias": "filterByKeys"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "selectionChangeEvent": "selectionChangeEvent"; "filterChangeEvent": "filterChangeEvent"; "panelShowEvent": "panelShowEvent"; "panelHideEvent": "panelHideEvent"; }, ["itemTemplate", "selectedItemTemplate", "groupTemplate", "headerTemplate", "footerTemplate", "emptyTemplate", "emptyFilterTemplate", "filterTemplate", "loaderTemplate"], never, true, never>;
3428
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfSelectComponent, "ef-select", never, { "options": { "alias": "options"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; }; "dataKey": { "alias": "dataKey"; "required": false; }; "group": { "alias": "group"; "required": false; }; "optionGroupLabel": { "alias": "optionGroupLabel"; "required": false; }; "optionGroupChildren": { "alias": "optionGroupChildren"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "filterBy": { "alias": "filterBy"; "required": false; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; }; "filterPlaceholderKey": { "alias": "filterPlaceholderKey"; "required": false; }; "autofocusFilter": { "alias": "autofocusFilter"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; }; "multiDisplay": { "alias": "multiDisplay"; "required": false; }; "showToggleAll": { "alias": "showToggleAll"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "emptyMessageKey": { "alias": "emptyMessageKey"; "required": false; }; "emptyFilterMessage": { "alias": "emptyFilterMessage"; "required": false; }; "emptyFilterMessageKey": { "alias": "emptyFilterMessageKey"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "panelStyleClass": { "alias": "panelStyleClass"; "required": false; }; "filterByKeys": { "alias": "filterByKeys"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "selectionChangeEvent": "selectionChangeEvent"; "filterChangeEvent": "filterChangeEvent"; "panelShowEvent": "panelShowEvent"; "panelHideEvent": "panelHideEvent"; }, ["itemTemplate", "selectedItemTemplate", "groupTemplate", "headerTemplate", "footerTemplate", "emptyTemplate", "emptyFilterTemplate", "filterTemplate", "loaderTemplate"], never, true, never>;
3354
3429
  static ngAcceptInputType_group: unknown;
3355
3430
  static ngAcceptInputType_fluid: unknown;
3356
3431
  static ngAcceptInputType_inline: unknown;
3357
3432
  static ngAcceptInputType_multiple: unknown;
3358
3433
  static ngAcceptInputType_filter: unknown;
3359
3434
  static ngAcceptInputType_autofocusFilter: unknown;
3435
+ static ngAcceptInputType_autofocus: unknown;
3360
3436
  static ngAcceptInputType_editable: unknown;
3361
3437
  static ngAcceptInputType_loading: unknown;
3362
3438
  static ngAcceptInputType_virtualScroll: unknown;
@@ -3439,6 +3515,14 @@ declare class EfCheckboxComponent extends AbstractEfFormControl implements Contr
3439
3515
  * ```
3440
3516
  */
3441
3517
  declare class EfToggleSwitchComponent extends AbstractEfFormControl implements ControlValueAccessor {
3518
+ /**
3519
+ * Take focus on load. Bound explicitly rather than left unset: PrimeNG's
3520
+ * AutoFocus directive tests `autofocus === false`, and the control declares
3521
+ * it with no initialiser, so an unbound instance arrives as `undefined`,
3522
+ * misses that check and gets a real `autofocus` attribute written onto it.
3523
+ * A table of these then puts one autofocus candidate per row on the page.
3524
+ */
3525
+ autofocus: boolean;
3442
3526
  /** Two-way bindable `[(checked)]` — boolean only. */
3443
3527
  checked: boolean;
3444
3528
  checkedChange: EventEmitter<boolean>;
@@ -3454,7 +3538,8 @@ declare class EfToggleSwitchComponent extends AbstractEfFormControl implements C
3454
3538
  checked: boolean;
3455
3539
  }): void;
3456
3540
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfToggleSwitchComponent, never>;
3457
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfToggleSwitchComponent, "ef-toggleswitch", never, { "checked": { "alias": "checked"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
3541
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfToggleSwitchComponent, "ef-toggleswitch", never, { "autofocus": { "alias": "autofocus"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
3542
+ static ngAcceptInputType_autofocus: unknown;
3458
3543
  }
3459
3544
 
3460
3545
  /**
@@ -3487,6 +3572,15 @@ declare class EfDatepickerComponent implements ControlValueAccessor {
3487
3572
  showButtonBar: boolean;
3488
3573
  minDate?: Date;
3489
3574
  maxDate?: Date;
3575
+ /**
3576
+ * Take focus on load. Bound explicitly rather than left unset: PrimeNG's
3577
+ * AutoFocus directive tests `autofocus === false`, and the control declares
3578
+ * it with no initialiser, so an unbound instance arrives as `undefined`,
3579
+ * misses that check and has a real `autofocus` attribute written onto it.
3580
+ * Every such control on a page then becomes an autofocus candidate, and the
3581
+ * browser scrolls its container to whichever one it picks on load.
3582
+ */
3583
+ autofocus: boolean;
3490
3584
  get isInline(): boolean;
3491
3585
  dateSelectEvent: EventEmitter<any>;
3492
3586
  value: any;
@@ -3507,7 +3601,7 @@ declare class EfDatepickerComponent implements ControlValueAccessor {
3507
3601
  handleChange(value: any): void;
3508
3602
  handleBlur(): void;
3509
3603
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfDatepickerComponent, never>;
3510
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDatepickerComponent, "ef-datepicker", never, { "label": { "alias": "label"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "placeholderKey": { "alias": "placeholderKey"; "required": false; }; "size": { "alias": "size"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "iconDisplay": { "alias": "iconDisplay"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "showButtonBar": { "alias": "showButtonBar"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; }, { "dateSelectEvent": "dateSelectEvent"; }, never, never, true, never>;
3604
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDatepickerComponent, "ef-datepicker", never, { "label": { "alias": "label"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "placeholderKey": { "alias": "placeholderKey"; "required": false; }; "size": { "alias": "size"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "iconDisplay": { "alias": "iconDisplay"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "showButtonBar": { "alias": "showButtonBar"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, { "dateSelectEvent": "dateSelectEvent"; }, never, never, true, never>;
3511
3605
  static ngAcceptInputType_required: unknown;
3512
3606
  static ngAcceptInputType_fluid: unknown;
3513
3607
  static ngAcceptInputType_inline: unknown;
@@ -3515,6 +3609,7 @@ declare class EfDatepickerComponent implements ControlValueAccessor {
3515
3609
  static ngAcceptInputType_showIcon: unknown;
3516
3610
  static ngAcceptInputType_showTime: unknown;
3517
3611
  static ngAcceptInputType_showButtonBar: unknown;
3612
+ static ngAcceptInputType_autofocus: unknown;
3518
3613
  }
3519
3614
 
3520
3615
  /**
@@ -3675,6 +3770,15 @@ declare class EfPasswordComponent extends AbstractEfFormControl implements Contr
3675
3770
  toggleMask: boolean;
3676
3771
  feedback: boolean;
3677
3772
  autocomplete?: string;
3773
+ /**
3774
+ * Take focus on load. Bound explicitly rather than left unset: PrimeNG's
3775
+ * AutoFocus directive tests `autofocus === false`, and the control declares
3776
+ * it with no initialiser, so an unbound instance arrives as `undefined`,
3777
+ * misses that check and has a real `autofocus` attribute written onto it.
3778
+ * Every such control on a page then becomes an autofocus candidate, and the
3779
+ * browser scrolls its container to whichever one it picks on load.
3780
+ */
3781
+ autofocus: boolean;
3678
3782
  get isInline(): boolean;
3679
3783
  valueChangeEvent: EventEmitter<string>;
3680
3784
  value: string;
@@ -3695,11 +3799,12 @@ declare class EfPasswordComponent extends AbstractEfFormControl implements Contr
3695
3799
  handleChange(value: string): void;
3696
3800
  handleBlur(): void;
3697
3801
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfPasswordComponent, never>;
3698
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfPasswordComponent, "ef-password", never, { "size": { "alias": "size"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "toggleMask": { "alias": "toggleMask"; "required": false; }; "feedback": { "alias": "feedback"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; }, { "valueChangeEvent": "valueChangeEvent"; }, never, never, true, never>;
3802
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfPasswordComponent, "ef-password", never, { "size": { "alias": "size"; "required": false; }; "fluid": { "alias": "fluid"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "toggleMask": { "alias": "toggleMask"; "required": false; }; "feedback": { "alias": "feedback"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, { "valueChangeEvent": "valueChangeEvent"; }, never, never, true, never>;
3699
3803
  static ngAcceptInputType_fluid: unknown;
3700
3804
  static ngAcceptInputType_inline: unknown;
3701
3805
  static ngAcceptInputType_toggleMask: unknown;
3702
3806
  static ngAcceptInputType_feedback: unknown;
3807
+ static ngAcceptInputType_autofocus: unknown;
3703
3808
  }
3704
3809
 
3705
3810
  declare class EfMultiSelectComponent extends AbstractEfFormControl implements ControlValueAccessor, OnChanges {
@@ -4496,6 +4601,40 @@ declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
4496
4601
  numberFormat(col: EfDataCardColumn): string;
4497
4602
  /** Which tools panel is open, if any. */
4498
4603
  readonly openTool: _angular_core.WritableSignal<"density" | "columns">;
4604
+ /**
4605
+ * Density this table starts at.
4606
+ *
4607
+ * A viewer's own choice, restored from storage via `tableKey`, still wins;
4608
+ * this only moves the starting point for a table whose rows are meant to be
4609
+ * scanned in bulk (an order's lines, say) rather than read one at a time.
4610
+ */
4611
+ readonly defaultDensity: _angular_core.InputSignal<EfTableDensity>;
4612
+ /**
4613
+ * Let the viewer drag rows into a new order. Off by default: reordering
4614
+ * only means something where the row order is itself data the user owns
4615
+ * (an order's lines), not on a list whose order comes from a sort.
4616
+ *
4617
+ * Adds a leading handle column; the row is only draggable by that handle,
4618
+ * so selecting text in a cell still works.
4619
+ */
4620
+ readonly reorderable: _angular_core.InputSignalWithTransform<boolean, unknown>;
4621
+ /** The moved row's original and new index, once the drag settles. */
4622
+ readonly rowReorder: _angular_core.OutputEmitterRef<{
4623
+ from: number;
4624
+ to: number;
4625
+ }>;
4626
+ /** Index being dragged, and the index it would land on. */
4627
+ readonly dragFrom: _angular_core.WritableSignal<number>;
4628
+ readonly dragTo: _angular_core.WritableSignal<number>;
4629
+ onDragPointerDown(index: number, ev: PointerEvent): void;
4630
+ onDragPointerMove(ev: PointerEvent): void;
4631
+ onDragPointerUp(): void;
4632
+ /**
4633
+ * Keyboard equivalent of the drag. A handle that only answers to a pointer
4634
+ * puts the row order out of reach of anyone not using a mouse, so the same
4635
+ * move is on the arrow keys while the handle has focus.
4636
+ */
4637
+ onDragKeydown(index: number, ev: KeyboardEvent): void;
4499
4638
  /** Row density. Applied as a class on `.tbl-wrap`. */
4500
4639
  readonly density: _angular_core.WritableSignal<EfTableDensity>;
4501
4640
  /** Column ids the viewer has hidden. */
@@ -4568,7 +4707,7 @@ declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
4568
4707
  trackByRow: (_: number, row: TRow) => unknown;
4569
4708
  trackByColumn: (_: number, col: EfDataCardColumn) => string;
4570
4709
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfDataCardComponent<any>, never>;
4571
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDataCardComponent<any>, "ef-data-card", never, { "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "trackByField": { "alias": "trackByField"; "required": false; "isSignal": true; }; "pageNumber": { "alias": "pageNumber"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "hidePager": { "alias": "hidePager"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "loadingKey": { "alias": "loadingKey"; "required": false; "isSignal": true; }; "rowDoubleClickable": { "alias": "rowDoubleClickable"; "required": false; "isSignal": true; }; "hasActionsColumn": { "alias": "hasActionsColumn"; "required": false; "isSignal": true; }; "rowActionsContext": { "alias": "rowActionsContext"; "required": false; "isSignal": true; }; "showViewAction": { "alias": "showViewAction"; "required": false; "isSignal": true; }; "showEditAction": { "alias": "showEditAction"; "required": false; "isSignal": true; }; "showDuplicateAction": { "alias": "showDuplicateAction"; "required": false; "isSignal": true; }; "showDeleteAction": { "alias": "showDeleteAction"; "required": false; "isSignal": true; }; "showDensityControl": { "alias": "showDensityControl"; "required": false; "isSignal": true; }; "showColumnPicker": { "alias": "showColumnPicker"; "required": false; "isSignal": true; }; "showExportControl": { "alias": "showExportControl"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "screenContext": { "alias": "screenContext"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "tableKey": { "alias": "tableKey"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "sortChange": "sortChange"; "rowDoubleClick": "rowDoubleClick"; "rowAction": "rowAction"; "exportRequest": "exportRequest"; "clearSearch": "clearSearch"; }, ["bodyTemplates", "headerTemplates"], ["[tbl-head-info]", "[tbl-head-actions]", "[empty-state-mobile]", "[empty-state]"], true, never>;
4710
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDataCardComponent<any>, "ef-data-card", never, { "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "trackByField": { "alias": "trackByField"; "required": false; "isSignal": true; }; "pageNumber": { "alias": "pageNumber"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "hidePager": { "alias": "hidePager"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "loadingKey": { "alias": "loadingKey"; "required": false; "isSignal": true; }; "rowDoubleClickable": { "alias": "rowDoubleClickable"; "required": false; "isSignal": true; }; "hasActionsColumn": { "alias": "hasActionsColumn"; "required": false; "isSignal": true; }; "rowActionsContext": { "alias": "rowActionsContext"; "required": false; "isSignal": true; }; "showViewAction": { "alias": "showViewAction"; "required": false; "isSignal": true; }; "showEditAction": { "alias": "showEditAction"; "required": false; "isSignal": true; }; "showDuplicateAction": { "alias": "showDuplicateAction"; "required": false; "isSignal": true; }; "showDeleteAction": { "alias": "showDeleteAction"; "required": false; "isSignal": true; }; "showDensityControl": { "alias": "showDensityControl"; "required": false; "isSignal": true; }; "showColumnPicker": { "alias": "showColumnPicker"; "required": false; "isSignal": true; }; "showExportControl": { "alias": "showExportControl"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "screenContext": { "alias": "screenContext"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "tableKey": { "alias": "tableKey"; "required": false; "isSignal": true; }; "defaultDensity": { "alias": "defaultDensity"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "sortChange": "sortChange"; "rowDoubleClick": "rowDoubleClick"; "rowAction": "rowAction"; "exportRequest": "exportRequest"; "clearSearch": "clearSearch"; "rowReorder": "rowReorder"; }, ["bodyTemplates", "headerTemplates"], ["[tbl-head-info]", "[tbl-head-actions]", "[empty-state-mobile]", "[empty-state]"], true, never>;
4572
4711
  }
4573
4712
 
4574
4713
  /**
@@ -4611,6 +4750,42 @@ declare class EfColumnHeaderTemplateDirective {
4611
4750
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<EfColumnHeaderTemplateDirective, "[efColumnHeaderTemplate]", never, { "columnId": { "alias": "efColumnHeaderTemplate"; "required": true; }; }, {}, never, never, true, never>;
4612
4751
  }
4613
4752
 
4753
+ /**
4754
+ * Feeds a cell's full text to the `ef-tooltip` sitting on the same element,
4755
+ * but only when that text is actually clipped.
4756
+ *
4757
+ * A column wide enough for the longest product description would starve every
4758
+ * other column, so the description ellipsises. The operator is then left with
4759
+ * a row they cannot read and nothing telling them the rest exists. This gives
4760
+ * it back on hover, through the same comptoir-skinned tooltip the rest of the
4761
+ * product uses rather than the browser's unstyled `title` bubble.
4762
+ *
4763
+ * The directive is always attached; what varies is whether it has anything to
4764
+ * say. A cell whose text fits gets its tooltip disabled, so hovering a number
4765
+ * that is fully visible does not pop a bubble repeating it.
4766
+ *
4767
+ * Measuring happens on `mouseenter`/`focusin` rather than from a ResizeObserver
4768
+ * per cell: a 150-line table is a thousand observers for information nobody
4769
+ * needs until a pointer is over one of them, and the tooltip's own show delay
4770
+ * leaves ample time to measure.
4771
+ *
4772
+ * Truncation can happen on the cell or on an element inside it (the order
4773
+ * builder ellipsises an inner `.nm` span, not the `td`), so both are checked.
4774
+ */
4775
+ declare class EfOverflowTooltipDirective {
4776
+ private readonly host;
4777
+ /** Provided by the `efTooltip` host directive on the same element. */
4778
+ private readonly tooltip;
4779
+ /** 1px of slack: sub-pixel layout rounding otherwise reads as clipped. */
4780
+ private static readonly SLACK;
4781
+ protected sync(): void;
4782
+ /** The cell itself, or the first descendant whose text is cut off. */
4783
+ private findClipped;
4784
+ private isClipped;
4785
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfOverflowTooltipDirective, never>;
4786
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<EfOverflowTooltipDirective, "[efOverflowTooltip]", never, {}, {}, never, never, true, never>;
4787
+ }
4788
+
4614
4789
  /**
4615
4790
  * Row-actions dropdown — V2 successor to `ef-datatable-actionbar`.
4616
4791
  *
@@ -5648,6 +5823,14 @@ type RangeKey = '7d' | '30d' | '90d';
5648
5823
  * />
5649
5824
  */
5650
5825
  declare class EfEmailMetricsCardComponent {
5826
+ /**
5827
+ * PrimeNG's Button reads `autofocus || buttonProps?.autofocus`, so a bare
5828
+ * `false` collapses to `undefined` and its AutoFocus directive writes the
5829
+ * attribute anyway. Passing the flag here too makes it resolve to `false`.
5830
+ */
5831
+ protected readonly noAutofocus: {
5832
+ autofocus: boolean;
5833
+ };
5651
5834
  metrics: _angular_core.InputSignal<EmailMetrics>;
5652
5835
  recentEvents: _angular_core.InputSignal<EmailEventRecord[]>;
5653
5836
  loading: _angular_core.InputSignal<boolean>;
@@ -5677,5 +5860,5 @@ declare class EfEmailMetricsCardComponent {
5677
5860
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfEmailMetricsCardComponent, "ef-email-metrics-card", never, { "metrics": { "alias": "metrics"; "required": false; "isSignal": true; }; "recentEvents": { "alias": "recentEvents"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, { "rangeChange": "rangeChange"; }, never, never, true, never>;
5678
5861
  }
5679
5862
 
5680
- export { EF_BADGE_BG_COLORS, EF_BADGE_BG_LIGHT_COLORS, EF_BADGE_BORDER_COLORS, EF_BADGE_DEFAULTS, EF_BADGE_TEXT_COLORS, EF_CHART_PALETTE, EF_DATATABLE_ACTIONS_DEFAULTS, EF_DATATABLE_COLUMN_DEFAULTS, EF_DATATABLE_DEFAULTS, EF_DATA_CARD_MOBILE_LAYOUT, EF_STATUS_COLORS, EF_STATUS_COLOR_ALIASES, EfAboutDialogComponent, EfActivationFilterComponent, EfAppMainComponent, EfAppShellComponent, EfAppShellMobileComponent, EfAppTopComponent, EfBadgeComponent, EfBlockUiComponent, EfBlockableDivComponent, EfBottomSheetComponent, EfBuildStampComponent, EfBulkBarComponent, EfButtonComponent, EfButtonGroupComponent, EfCardComponent, EfChangeHistoryComponent, EfChangePasswordComponent, EfChartComponent, EfCheckboxComponent, EfClearButtonComponent, EfColumnHeaderTemplateDirective, EfColumnTemplateDirective, EfCompactPipe, EfConfirmDialogComponent, EfCurrencyPipe, EfDataCardComponent, EfDatatableActionBarComponent, EfDatatableComponent, EfDatepickerAdvancedComponent, EfDatepickerComponent, EfDetailToolbarComponent, EfDialogComponent, EfEmailMetricsCardComponent, EfEmptyStateComponent, EfFabComponent, EfFieldsetComponent, EfFilterDrawerComponent, EfFilterPillComponent, EfFormGridComponent, EfInputNumberComponent, EfInputTextComponent, EfKpiCardComponent, EfLabelComponent, EfModuleRailComponent, EfModuleSideComponent, EfMultiSelectComponent, EfOrderBuilderComponent, EfOrderSummaryComponent, EfPagerComponent, EfPasswordComponent, EfPdfPreviewComponent, EfPillGroupComponent, EfPresetPillComponent, EfPriceDisplayComponent, EfProductCatalogueComponent, EfProductCatalogueFilterComponent, EfProductTypeaheadComponent, EfProfileChipComponent, EfProfileMenuComponent, EfPulseComponent, EfQuantitySelectorComponent, EfQuantityStepperComponent, EfRankListComponent, EfRowActionsComponent, EfSearchToolbarComponent, EfSelectButtonComponent, EfSelectComponent, EfServerErrorsDirective, EfShortcutsDialogComponent, EfSkeletonComponent, EfSmartBarComponent, EfStatsComponent, EfStatusChipComponent, EfTabPanelDirective, EfTabsComponent, EfTextareaComponent, EfThemeConfiguratorComponent, EfThemeToggleComponent, EfTimelineComponent, EfToastRegionComponent, EfToggleSwitchComponent, EfToolbarComponent, EfTooltipDirective, EfTotalsComponent, OrderEntityHelper, OrderLineItemHelper, TruncatePipe, buildChartConfig, getColumnAlignment, mergeColumnDefaults, resolveEfStatusColor };
5863
+ export { EF_BADGE_BG_COLORS, EF_BADGE_BG_LIGHT_COLORS, EF_BADGE_BORDER_COLORS, EF_BADGE_DEFAULTS, EF_BADGE_TEXT_COLORS, EF_CHART_PALETTE, EF_DATATABLE_ACTIONS_DEFAULTS, EF_DATATABLE_COLUMN_DEFAULTS, EF_DATATABLE_DEFAULTS, EF_DATA_CARD_MOBILE_LAYOUT, EF_STATUS_COLORS, EF_STATUS_COLOR_ALIASES, EfAboutDialogComponent, EfActivationFilterComponent, EfAppMainComponent, EfAppShellComponent, EfAppShellMobileComponent, EfAppTopComponent, EfBadgeComponent, EfBlockUiComponent, EfBlockableDivComponent, EfBottomSheetComponent, EfBuildStampComponent, EfBulkBarComponent, EfButtonComponent, EfButtonGroupComponent, EfCardComponent, EfChangeHistoryComponent, EfChangePasswordComponent, EfChartComponent, EfCheckboxComponent, EfClearButtonComponent, EfColumnHeaderTemplateDirective, EfColumnTemplateDirective, EfCompactPipe, EfConfirmDialogComponent, EfCurrencyPipe, EfDataCardComponent, EfDatatableActionBarComponent, EfDatatableComponent, EfDatepickerAdvancedComponent, EfDatepickerComponent, EfDetailToolbarComponent, EfDialogComponent, EfEmailMetricsCardComponent, EfEmptyStateComponent, EfFabComponent, EfFieldsetComponent, EfFilterDrawerComponent, EfFilterPillComponent, EfFormGridComponent, EfInputNumberComponent, EfInputTextComponent, EfKpiCardComponent, EfLabelComponent, EfModuleRailComponent, EfModuleSideComponent, EfMultiSelectComponent, EfOrderBuilderComponent, EfOrderSummaryComponent, EfOverflowTooltipDirective, EfPagerComponent, EfPasswordComponent, EfPdfPreviewComponent, EfPillGroupComponent, EfPresetPillComponent, EfPriceDisplayComponent, EfProductCatalogueComponent, EfProductCatalogueFilterComponent, EfProductTypeaheadComponent, EfProfileChipComponent, EfProfileMenuComponent, EfPulseComponent, EfQuantitySelectorComponent, EfQuantityStepperComponent, EfRankListComponent, EfRowActionsComponent, EfSearchToolbarComponent, EfSelectButtonComponent, EfSelectComponent, EfServerErrorsDirective, EfShortcutsDialogComponent, EfSkeletonComponent, EfSmartBarComponent, EfStatsComponent, EfStatusChipComponent, EfTabPanelDirective, EfTabsComponent, EfTextareaComponent, EfThemeConfiguratorComponent, EfThemeToggleComponent, EfTimelineComponent, EfToastRegionComponent, EfToggleSwitchComponent, EfToolbarComponent, EfTooltipDirective, EfTotalsComponent, OrderEntityHelper, OrderLineItemHelper, TruncatePipe, buildChartConfig, getColumnAlignment, mergeColumnDefaults, resolveEfStatusColor };
5681
5864
  export type { CatalogueProduct, CatalogueProductVariant, CategoryAssignment, CategoryGroup, CategoryItem, DatatableSearchEntity, DocumentConfig, EfAboutServer, EfBadgeColor, EfBadgeConfig, EfBadgeSize, EfBadgeVariant, EfButtonComptoirSeverity, EfButtonPrimeNGSeverity, EfButtonSeverity, EfChangeHistoryEntry, EfChangeHistoryFieldChange, EfChangePasswordSubmit, EfChartSeries, EfChartType, EfDataCardMobileLayout, EfDataCardRowAction, EfDatatableActions, EfDatatableColumn, EfDatatableColumnAlign, EfDatatableColumnType, EfDatatableConfig, EfDateFieldValue, EfDatePreset, EfDialogAction, EfDialogSeverity, EfDialogSize, EfFabPosition, EfKpiDeltaTone, EfKpiSparkline, EfPillItem, EfPresetItem, EfProfileMenuItem, EfRankRow, EfRowAction, EfSkeletonVariant, EfStatsRow, EfStatusColor, EfStatusReferenceItem, EfTabItem, EfTabsModule, EfTabsVariant, EfTimelineItem, EfTimelineState, EfToastRegionPosition, EfTotalsGrand, EfTotalsRow, HighlightSegment, OrderChangeInfo, OrderEntity, OrderLineItem, OrderProductsSummary, OrderSummaryItem, ProductCountGroup, ProductCountGroupLabel, ProductTypeaheadRow, ProductTypeaheadSelection, ProductWithCountGroup, SelectedFilter, ValidationResult };