@elasticias/ui 1.0.11 → 1.0.13

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": "@elasticias/ui",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0",
@@ -1586,7 +1586,8 @@
1586
1586
  }
1587
1587
  }
1588
1588
 
1589
- .row-actions__item {
1589
+ .row-actions__item,
1590
+ .ef-menu__item {
1590
1591
  appearance: none;
1591
1592
  background: transparent;
1592
1593
  border: 0;
@@ -1606,19 +1607,24 @@
1606
1607
  }
1607
1608
 
1608
1609
  .row-actions__item:hover,
1609
- .row-actions__item:focus-visible {
1610
+ .row-actions__item:focus-visible,
1611
+ .ef-menu__item:hover,
1612
+ .ef-menu__item:focus-visible {
1610
1613
  background: var(--paper);
1611
1614
  outline: 0;
1612
1615
  }
1613
1616
 
1614
- .row-actions__item[disabled] {
1617
+ .row-actions__item[disabled],
1618
+ .ef-menu__item[disabled] {
1615
1619
  opacity: 0.45;
1616
1620
  cursor: not-allowed;
1617
1621
  background: transparent;
1618
1622
  }
1619
1623
 
1620
1624
  .row-actions__item .ico,
1621
- .row-actions__item i {
1625
+ .row-actions__item i,
1626
+ .ef-menu__item .ico,
1627
+ .ef-menu__item i {
1622
1628
  width: 16px;
1623
1629
  height: 16px;
1624
1630
  font-size: 16px;
@@ -1633,11 +1639,16 @@
1633
1639
  .row-actions__item:hover .ico,
1634
1640
  .row-actions__item:hover i,
1635
1641
  .row-actions__item:focus-visible .ico,
1636
- .row-actions__item:focus-visible i {
1642
+ .row-actions__item:focus-visible i,
1643
+ .ef-menu__item:hover .ico,
1644
+ .ef-menu__item:hover i,
1645
+ .ef-menu__item:focus-visible .ico,
1646
+ .ef-menu__item:focus-visible i {
1637
1647
  color: var(--text);
1638
1648
  }
1639
1649
 
1640
- .row-actions__item .kbd {
1650
+ .row-actions__item .kbd,
1651
+ .ef-menu__item .kbd {
1641
1652
  margin-inline-start: auto;
1642
1653
  font-family: 'JetBrains Mono', monospace;
1643
1654
  font-size: 10px;
@@ -1650,26 +1661,142 @@
1650
1661
  line-height: 1;
1651
1662
  }
1652
1663
 
1653
- .row-actions__item.danger {
1664
+ .row-actions__item.danger,
1665
+ .ef-menu__item.danger {
1654
1666
  color: var(--st-cancelled-fg);
1655
1667
  }
1656
1668
 
1657
1669
  .row-actions__item.danger .ico,
1658
- .row-actions__item.danger i {
1670
+ .row-actions__item.danger i,
1671
+ .ef-menu__item.danger .ico,
1672
+ .ef-menu__item.danger i {
1659
1673
  color: var(--st-cancelled-fg);
1660
1674
  }
1661
1675
 
1662
1676
  .row-actions__item.danger:hover,
1663
- .row-actions__item.danger:focus-visible {
1677
+ .row-actions__item.danger:focus-visible,
1678
+ .ef-menu__item.danger:hover,
1679
+ .ef-menu__item.danger:focus-visible {
1664
1680
  background: var(--st-cancelled-bg);
1665
1681
  }
1666
1682
 
1667
- .row-actions__divider {
1683
+ .row-actions__divider,
1684
+ .ef-menu__divider {
1668
1685
  height: 1px;
1669
1686
  background: var(--rule);
1670
1687
  margin: 4px;
1671
1688
  }
1672
1689
 
1690
+ /* ──────────── MENU (shared) ─────────────────────────────────────
1691
+ The panel half of the menu language above, without the absolute
1692
+ positioning `.row-actions__menu` needs for its own trigger. Anything
1693
+ that already owns its placement (a popover, a bottom sheet) styles its
1694
+ surface with `.ef-menu` and fills it with `.ef-menu__item`. */
1695
+
1696
+ .ef-menu {
1697
+ display: grid;
1698
+ /* A grid track defaults to auto, so one long row would size the column and
1699
+ widen the whole panel. minmax(0, 1fr) is what lets a label truncate. */
1700
+ grid-template-columns: minmax(0, 1fr);
1701
+ gap: 1px;
1702
+ min-width: 212px;
1703
+ padding: 6px;
1704
+ background: var(--paper-alt);
1705
+ border: 1px solid var(--rule);
1706
+ border-radius: var(--r-xl);
1707
+ box-shadow: var(--shadow-3);
1708
+ }
1709
+
1710
+ /* Identity block at the top of a menu: a name and a secondary line.
1711
+ Sized to sit level with the items rather than tower over them. */
1712
+ .ef-menu__head {
1713
+ display: grid;
1714
+ gap: 1px;
1715
+ min-width: 0;
1716
+ padding: 8px 12px 7px;
1717
+ margin-bottom: 4px;
1718
+ border-bottom: 1px solid var(--rule);
1719
+ }
1720
+
1721
+ .ef-menu__head-name {
1722
+ min-width: 0;
1723
+ overflow: hidden;
1724
+ text-overflow: ellipsis;
1725
+ white-space: nowrap;
1726
+ font-size: 13.5px;
1727
+ font-weight: 700;
1728
+ line-height: 1.3;
1729
+ color: var(--text);
1730
+ }
1731
+
1732
+ .ef-menu__head-sub {
1733
+ min-width: 0;
1734
+ overflow: hidden;
1735
+ text-overflow: ellipsis;
1736
+ white-space: nowrap;
1737
+ font-size: 12px;
1738
+ line-height: 1.3;
1739
+ color: var(--text-mute);
1740
+ }
1741
+
1742
+ /* A nested group, revealed by expanding its parent row. Indented to the
1743
+ label column so the children line up under the text, not the icon. */
1744
+ /* Label takes the free space so a trailing chip or caret can sit at the
1745
+ inline end, and a long name truncates instead of widening the panel. */
1746
+ .ef-menu__label {
1747
+ flex: 1 1 auto;
1748
+ min-width: 0;
1749
+ overflow: hidden;
1750
+ text-overflow: ellipsis;
1751
+ white-space: nowrap;
1752
+ }
1753
+
1754
+ .ef-menu__item .ef-menu__caret {
1755
+ margin-inline-start: auto;
1756
+ width: 12px;
1757
+ height: 12px;
1758
+ font-size: 12px;
1759
+ }
1760
+
1761
+ .ef-menu__item .ef-menu__badge {
1762
+ margin-inline-start: auto;
1763
+ flex: 0 0 auto;
1764
+ padding: 1px 7px;
1765
+ border-radius: var(--r-pill);
1766
+ background: var(--st-cancelled-fg);
1767
+ color: #fff;
1768
+ font-size: 11px;
1769
+ font-weight: 700;
1770
+ line-height: 1.5;
1771
+ }
1772
+
1773
+ /* A popover reduced to a placement mechanism. The `.ef-menu` inside draws
1774
+ the surface, so PrimeNG must not draw a second panel or an arrow. */
1775
+ .p-popover.ef-menu-popover {
1776
+ background: transparent;
1777
+ border: 0;
1778
+ box-shadow: none;
1779
+ padding: 0;
1780
+ }
1781
+
1782
+ .p-popover.ef-menu-popover .p-popover-content {
1783
+ padding: 0;
1784
+ }
1785
+
1786
+ .p-popover.ef-menu-popover:before,
1787
+ .p-popover.ef-menu-popover:after {
1788
+ display: none;
1789
+ }
1790
+
1791
+ .ef-menu__sublist {
1792
+ display: grid;
1793
+ gap: 1px;
1794
+ margin: 0;
1795
+ padding: 0 0 2px 28px;
1796
+ list-style: none;
1797
+ min-width: 0;
1798
+ }
1799
+
1673
1800
  /* When a row-actions menu is open inside a data card, the table-wrap
1674
1801
  should let the popover escape its overflow. The data-card binds
1675
1802
  .has-open-menu when any descendant trigger is in `.open` state. */
@@ -1079,6 +1079,35 @@ declare class EfTooltipDirective {
1079
1079
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<EfTooltipDirective, "[efTooltip]", never, {}, {}, never, never, true, [{ directive: typeof i1.Tooltip; inputs: { "pTooltip": "efTooltip"; "tooltipPosition": "efTooltipPosition"; "tooltipDisabled": "efTooltipDisabled"; "tooltipStyleClass": "efTooltipStyleClass"; "tooltipEvent": "efTooltipEvent"; "showDelay": "efTooltipShowDelay"; "hideDelay": "efTooltipHideDelay"; "appendTo": "efTooltipAppendTo"; "autoHide": "efTooltipAutoHide"; "escape": "efTooltipEscape"; "life": "efTooltipLife"; }; outputs: {}; }]>;
1080
1080
  }
1081
1081
 
1082
+ /**
1083
+ * The keyboard-shortcuts reference: every registration currently sitting
1084
+ * in `EfShortcutService`, grouped and rendered with the same `.kbd` chip
1085
+ * `ef-row-actions` and `ef-menu` already use, so a chip means one thing
1086
+ * everywhere it appears.
1087
+ *
1088
+ * Reads `EfShortcutService.list()` directly, so it stays live: open it
1089
+ * while a row menu is on screen and its row-scoped shortcuts are already
1090
+ * listed under "Row actions". Close the row menu and, since a row's
1091
+ * shortcuts unregister with it, they're gone from here too.
1092
+ *
1093
+ * ```html
1094
+ * <ef-shortcuts-dialog [(visible)]="shortcutsOpen" />
1095
+ * ```
1096
+ */
1097
+ declare class EfShortcutsDialogComponent {
1098
+ private readonly shortcutService;
1099
+ /** Two-way open state. */
1100
+ readonly visible: _angular_core.ModelSignal<boolean>;
1101
+ protected readonly groups: _angular_core.Signal<_elasticias_core.EfShortcutGroup[]>;
1102
+ /** Only macOS reads `⌘` at a glance. Everyone else needs the line
1103
+ * spelling out that it means Ctrl. */
1104
+ protected readonly isMacPlatform: boolean;
1105
+ protected readonly closeAction: EfDialogAction[];
1106
+ protected formatKeys(keys: string): string;
1107
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfShortcutsDialogComponent, never>;
1108
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfShortcutsDialogComponent, "ef-shortcuts-dialog", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; }, never, never, true, never>;
1109
+ }
1110
+
1082
1111
  declare class EfFieldsetComponent {
1083
1112
  /** Direct legend text (not translated) */
1084
1113
  legend?: string;
@@ -1920,6 +1949,89 @@ declare class EfProfileChipComponent {
1920
1949
  static ngAcceptInputType_readonly: unknown;
1921
1950
  }
1922
1951
 
1952
+ /**
1953
+ * One row in `ef-profile-menu`.
1954
+ *
1955
+ * Navigation is a `command` like everything else: a host that wants to
1956
+ * route passes `command: () => this.router.navigate([...])`, which keeps
1957
+ * the lib free of `RouterModule`.
1958
+ */
1959
+ interface EfProfileMenuItem {
1960
+ /** Stable identifier, used for tracking and for expansion state. */
1961
+ id: string;
1962
+ /** Translation key for the row label. */
1963
+ labelKey: string;
1964
+ /** PrimeIcons class, e.g. `'pi pi-user'`. */
1965
+ icon?: string;
1966
+ /** Trailing count pill. `0` renders; `undefined` and `null` do not. */
1967
+ badge?: string | number;
1968
+ /** `'danger'` tints the row, for log out and other one-way actions. */
1969
+ severity?: 'default' | 'danger';
1970
+ /** Draw a separating rule above this row. */
1971
+ groupStart?: boolean;
1972
+ /** Rows shown when this one is expanded. A row with children never
1973
+ * runs its own `command`; choosing it toggles the group. */
1974
+ children?: EfProfileMenuItem[];
1975
+ /** What choosing the row does. */
1976
+ command?: () => void;
1977
+ }
1978
+
1979
+ /** The slice of PrimeNG's Popover this component actually calls. Typing it
1980
+ * structurally keeps the template ref usable and the tests free of PrimeNG. */
1981
+ interface Dismissible {
1982
+ hide: () => void;
1983
+ /** PrimeNG positions a popover once, when it opens. Expanding a group
1984
+ * changes the panel's height afterwards, so the host has to ask for a
1985
+ * reposition or the panel grows past the edge it was anchored to. */
1986
+ align?: () => void;
1987
+ }
1988
+ /**
1989
+ * The signed-in user's menu.
1990
+ *
1991
+ * Two renderings of one `items` array. `variant="chip"` (the default) shows
1992
+ * an `ef-profile-chip` that opens a popover, for the side footer on a
1993
+ * desktop. `variant="list"` renders the same rows flat, with no popover,
1994
+ * for the mobile sheet: `ef-app-shell` does not render the side footer on a
1995
+ * phone, and this menu is the only way to sign out, so it cannot live only
1996
+ * there.
1997
+ *
1998
+ * ```html
1999
+ * <ef-profile-menu
2000
+ * side-footer
2001
+ * [name]="userName()"
2002
+ * [secondary]="userEmail()"
2003
+ * [initial]="userInitial()"
2004
+ * [items]="menuItems()"
2005
+ * />
2006
+ * ```
2007
+ */
2008
+ declare class EfProfileMenuComponent {
2009
+ /** Display name, shown on the chip and in the panel header. */
2010
+ readonly name: _angular_core.InputSignal<string>;
2011
+ /** Second header line. The email, usually. */
2012
+ readonly secondary: _angular_core.InputSignal<string>;
2013
+ /** Chip subtitle. Falls back to `secondary` when empty. */
2014
+ readonly role: _angular_core.InputSignal<string>;
2015
+ /** Avatar glyph. Up to two characters; falls back to the first of `name`. */
2016
+ readonly initial: _angular_core.InputSignal<string>;
2017
+ readonly tone: _angular_core.InputSignal<"tenant" | "neutral">;
2018
+ readonly items: _angular_core.InputSignal<readonly EfProfileMenuItem[]>;
2019
+ readonly variant: _angular_core.InputSignal<"chip" | "list">;
2020
+ readonly itemSelected: _angular_core.OutputEmitterRef<EfProfileMenuItem>;
2021
+ /** Id of the one expanded group, or null. One at a time: a menu that
2022
+ * grows in two directions at once stops being scannable. */
2023
+ private readonly expandedId;
2024
+ readonly chipRole: _angular_core.Signal<string>;
2025
+ isExpanded(id: string): boolean;
2026
+ /**
2027
+ * Choose a row. A row with children toggles its group and leaves the
2028
+ * popover open; a leaf runs its command, reports it, and dismisses.
2029
+ */
2030
+ select(item: EfProfileMenuItem, popover?: Dismissible): void;
2031
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfProfileMenuComponent, never>;
2032
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfProfileMenuComponent, "ef-profile-menu", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "initial": { "alias": "initial"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "itemSelected": "itemSelected"; }, never, never, true, never>;
2033
+ }
2034
+
1923
2035
  declare class EfBlockUiComponent {
1924
2036
  isLoading: boolean;
1925
2037
  contentPanel: any;
@@ -4246,7 +4358,11 @@ declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
4246
4358
  /** Items array for the auto row-actions cell. Rebuilt per call so
4247
4359
  * the ef-row-actions component receives a fresh closure per row.
4248
4360
  * Visibility is filtered later by ef-row-actions against
4249
- * `rowActionsContext` (ScreenContext.isGranted). */
4361
+ * `rowActionsContext` (ScreenContext.isGranted).
4362
+ *
4363
+ * `kbd` is rendered through `formatShortcut()`, not a literal glyph:
4364
+ * `ef-row-actions` binds these same keys for real while the row's
4365
+ * menu is open, and a hardcoded `'⌘D'` would lie to a Windows user. */
4250
4366
  defaultRowActions(row: TRow): ReadonlyArray<EfRowAction>;
4251
4367
  bodyTemplate(columnId: string): TemplateRef<unknown> | undefined;
4252
4368
  headerTemplate(columnId: string): TemplateRef<unknown> | undefined;
@@ -4355,11 +4471,11 @@ declare class EfColumnHeaderTemplateDirective {
4355
4471
  *
4356
4472
  * ```ts
4357
4473
  * actions: ReadonlyArray<EfRowAction> = [
4358
- * { id: 'view', labelKey: 'common_view', icon: 'pi pi-eye', kbd: '',
4474
+ * { id: 'view', labelKey: 'common_view', icon: 'pi pi-eye', kbd: formatShortcut('enter'),
4359
4475
  * permission: Permissions.Read, command: () => view(row) },
4360
- * { id: 'edit', labelKey: 'common_edit', icon: 'pi pi-pencil', kbd: 'E',
4476
+ * { id: 'edit', labelKey: 'common_edit', icon: 'pi pi-pencil', kbd: formatShortcut('e'),
4361
4477
  * permission: Permissions.Edit, command: () => edit(row) },
4362
- * { id: 'duplicate', labelKey: 'common_duplicate', icon: 'pi pi-copy',
4478
+ * { id: 'duplicate', labelKey: 'common_duplicate', icon: 'pi pi-copy', kbd: formatShortcut('mod+d'),
4363
4479
  * command: () => duplicate(row) },
4364
4480
  * { separator: true },
4365
4481
  * { id: 'delete', labelKey: 'common_delete', icon: 'pi pi-trash', severity: 'danger',
@@ -4385,9 +4501,25 @@ declare class EfColumnHeaderTemplateDirective {
4385
4501
  * Permission filtering: pass `[context]="..."` (a `ScreenContext`); items
4386
4502
  * declaring a `permission` are hidden unless that permission is granted.
4387
4503
  * Items with no `permission` always show.
4504
+ *
4505
+ * The `kbd` hint is decorative unless it's one of `view` / `edit` /
4506
+ * `duplicate`: this component registers Enter, `E` and `mod+D` against
4507
+ * `EfShortcutService`, gated on `open()`, so they only fire while this
4508
+ * row's menu is on screen. Render `kbd` through `formatShortcut()` (as
4509
+ * above): a hardcoded `'⌘D'` is wrong for a Windows user, which is
4510
+ * exactly the bug this wiring fixes.
4388
4511
  */
4389
4512
  declare class EfRowActionsComponent {
4390
4513
  private readonly host;
4514
+ private readonly shortcuts;
4515
+ /** Distinguishes this instance's registrations from every other row's:
4516
+ * each row on screen constructs its own component, and ids must not
4517
+ * collide or one row's disposer (and its `when`) would clobber
4518
+ * another's still-live registration. */
4519
+ private static nextInstanceId;
4520
+ private readonly instanceId;
4521
+ constructor();
4522
+ private isFocusInsideMenu;
4391
4523
  /** Action descriptors. */
4392
4524
  readonly items: _angular_core.InputSignal<readonly EfRowAction[]>;
4393
4525
  /** Optional context — when present, items with a `permission` are
@@ -4732,6 +4864,58 @@ declare class EfClearButtonComponent {
4732
4864
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfClearButtonComponent, "ef-clear-button", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "clear": "clear"; }, never, never, true, never>;
4733
4865
  }
4734
4866
 
4867
+ /** What the form hands back. `currentPassword` is absent when the host
4868
+ * did not ask for one (an administrator resetting someone else's). */
4869
+ interface EfChangePasswordSubmit {
4870
+ currentPassword?: string;
4871
+ newPassword: string;
4872
+ }
4873
+ /**
4874
+ * Password form, deliberately without an API client.
4875
+ *
4876
+ * `@elasticias/ui` cannot import an app's generated HTTP client, and that
4877
+ * limitation is what makes one component serve two different endpoints: a
4878
+ * user changing their own password proves the old one, an administrator
4879
+ * resetting someone else's does not. The host reads `canSubmit()`, calls
4880
+ * `submit()` from its dialog footer, and listens to `submitted`.
4881
+ *
4882
+ * ```html
4883
+ * <ef-change-password
4884
+ * #form
4885
+ * [requireCurrent]="!userId()"
4886
+ * [busy]="saving()"
4887
+ * [errors]="serverErrors()"
4888
+ * (submitted)="save($event)"
4889
+ * />
4890
+ * ```
4891
+ *
4892
+ * There is no `reset()`: hosts mount it under `@if`, so every open is a
4893
+ * fresh instance.
4894
+ */
4895
+ declare class EfChangePasswordComponent {
4896
+ /** Ask for the existing password. False for an administrator reset. */
4897
+ readonly requireCurrent: _angular_core.InputSignalWithTransform<boolean, unknown>;
4898
+ /** A request is in flight: the form refuses to submit again. */
4899
+ readonly busy: _angular_core.InputSignalWithTransform<boolean, unknown>;
4900
+ /** Already-translated server messages, rendered under the fields. */
4901
+ readonly errors: _angular_core.InputSignal<readonly string[]>;
4902
+ /** Minimum length. Kept in step with the backend validator's 8. */
4903
+ readonly minLength: _angular_core.InputSignal<number>;
4904
+ readonly submitted: _angular_core.OutputEmitterRef<EfChangePasswordSubmit>;
4905
+ readonly currentPassword: _angular_core.WritableSignal<string>;
4906
+ readonly newPassword: _angular_core.WritableSignal<string>;
4907
+ readonly confirmation: _angular_core.WritableSignal<string>;
4908
+ /**
4909
+ * Translation keys for every rule the current input breaks. Empty while
4910
+ * the user has typed nothing, so the form does not scold on open.
4911
+ */
4912
+ readonly validationKeys: _angular_core.Signal<string[]>;
4913
+ readonly canSubmit: _angular_core.Signal<boolean>;
4914
+ submit(): void;
4915
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfChangePasswordComponent, never>;
4916
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfChangePasswordComponent, "ef-change-password", never, { "requireCurrent": { "alias": "requireCurrent"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, never, true, never>;
4917
+ }
4918
+
4735
4919
  /**
4736
4920
  * Native Comptoir textarea — no PrimeNG wrapper. Pairs with the
4737
4921
  * `.ef-textarea` rule in `@elasticias/ui/styles/patterns` (focus
@@ -5318,5 +5502,5 @@ declare class EfEmailMetricsCardComponent {
5318
5502
  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>;
5319
5503
  }
5320
5504
 
5321
- 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, 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, EfPulseComponent, EfQuantitySelectorComponent, EfQuantityStepperComponent, EfRankListComponent, EfRowActionsComponent, EfSearchToolbarComponent, EfSelectButtonComponent, EfSelectComponent, EfServerErrorsDirective, EfSkeletonComponent, EfSmartBarComponent, EfStatsComponent, EfStatusChipComponent, EfTabPanelDirective, EfTabsComponent, EfTextareaComponent, EfThemeConfiguratorComponent, EfThemeToggleComponent, EfTimelineComponent, EfToastRegionComponent, EfToggleSwitchComponent, EfToolbarComponent, EfTooltipDirective, EfTotalsComponent, OrderEntityHelper, OrderLineItemHelper, TruncatePipe, buildChartConfig, getColumnAlignment, mergeColumnDefaults, resolveEfStatusColor };
5322
- export type { CatalogueProduct, CatalogueProductVariant, CategoryAssignment, CategoryGroup, CategoryItem, DatatableSearchEntity, DocumentConfig, EfAboutServer, EfBadgeColor, EfBadgeConfig, EfBadgeSize, EfBadgeVariant, EfButtonComptoirSeverity, EfButtonPrimeNGSeverity, EfButtonSeverity, EfChangeHistoryEntry, EfChangeHistoryFieldChange, EfChartSeries, EfChartType, EfDataCardMobileLayout, EfDataCardRowAction, EfDatatableActions, EfDatatableColumn, EfDatatableColumnAlign, EfDatatableColumnType, EfDatatableConfig, EfDateFieldValue, EfDatePreset, EfDialogAction, EfDialogSeverity, EfDialogSize, EfFabPosition, EfKpiDeltaTone, EfKpiSparkline, EfPillItem, EfPresetItem, 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 };
5505
+ 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 };
5506
+ 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 };