@shival99/z-ui 2.0.6 → 2.0.8

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 (81) hide show
  1. package/assets/css/themes/hospital.css +9 -9
  2. package/fesm2022/shival99-z-ui-components-z-accordion.mjs +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
  4. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +2 -2
  5. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-avatar.mjs +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
  8. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-button.mjs +32 -9
  11. package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +102 -27
  13. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  14. package/fesm2022/shival99-z-ui-components-z-card.mjs +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
  16. package/fesm2022/shival99-z-ui-components-z-chat.mjs +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
  18. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
  20. package/fesm2022/shival99-z-ui-components-z-code.mjs +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
  22. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +10 -3
  23. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
  24. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +1 -1
  25. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  26. package/fesm2022/shival99-z-ui-components-z-editor.mjs +1 -1
  27. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  28. package/fesm2022/shival99-z-ui-components-z-empty.mjs +1 -1
  29. package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
  30. package/fesm2022/shival99-z-ui-components-z-filter.mjs +1 -1
  31. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  32. package/fesm2022/shival99-z-ui-components-z-gallery.mjs +3 -3
  33. package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
  34. package/fesm2022/shival99-z-ui-components-z-icon.mjs +72 -5
  35. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
  36. package/fesm2022/shival99-z-ui-components-z-input.mjs +2 -2
  37. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  38. package/fesm2022/shival99-z-ui-components-z-kanban.mjs +1 -1
  39. package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
  40. package/fesm2022/shival99-z-ui-components-z-menu.mjs +16 -6
  41. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  42. package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +1 -1
  43. package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
  44. package/fesm2022/shival99-z-ui-components-z-modal.mjs +11 -3
  45. package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
  46. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +1 -1
  47. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
  48. package/fesm2022/shival99-z-ui-components-z-popover.mjs +77 -9
  49. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  50. package/fesm2022/shival99-z-ui-components-z-select.mjs +2 -2
  51. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  52. package/fesm2022/shival99-z-ui-components-z-steps.mjs +1 -1
  53. package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
  54. package/fesm2022/shival99-z-ui-components-z-switch.mjs +1 -1
  55. package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
  56. package/fesm2022/shival99-z-ui-components-z-table.mjs +1264 -421
  57. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  58. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +95 -5
  59. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  60. package/fesm2022/shival99-z-ui-components-z-tags.mjs +1 -1
  61. package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
  62. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +1 -1
  63. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
  64. package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -2
  65. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  66. package/fesm2022/shival99-z-ui-i18n.mjs +66 -8
  67. package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
  68. package/package.json +7 -3
  69. package/types/shival99-z-ui-components-z-autocomplete.d.ts +1 -1
  70. package/types/shival99-z-ui-components-z-button.d.ts +7 -4
  71. package/types/shival99-z-ui-components-z-calendar.d.ts +8 -1
  72. package/types/shival99-z-ui-components-z-drawer.d.ts +8 -1
  73. package/types/shival99-z-ui-components-z-editor.d.ts +1 -1
  74. package/types/shival99-z-ui-components-z-icon.d.ts +27 -4
  75. package/types/shival99-z-ui-components-z-menu.d.ts +3 -1
  76. package/types/shival99-z-ui-components-z-modal.d.ts +10 -2
  77. package/types/shival99-z-ui-components-z-popover.d.ts +9 -2
  78. package/types/shival99-z-ui-components-z-select.d.ts +1 -1
  79. package/types/shival99-z-ui-components-z-table.d.ts +129 -53
  80. package/types/shival99-z-ui-components-z-tabs.d.ts +15 -7
  81. package/types/shival99-z-ui-components-z-upload.d.ts +4 -3
@@ -1,9 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { EnvironmentProviders } from '@angular/core';
2
+ import { Type, EnvironmentProviders } from '@angular/core';
3
3
  import { ClassValue } from 'clsx';
4
4
  import * as saxBoldIcons from '@ng-icons/iconsax/bold';
5
5
  import * as saxOutlineIcons from '@ng-icons/iconsax/outline';
6
6
  import * as lucideIcons from '@ng-icons/lucide';
7
+ import * as animatedIcons from 'ng-animated-icons';
7
8
  import * as class_variance_authority_types from 'class-variance-authority/types';
8
9
  import { VariantProps } from 'class-variance-authority';
9
10
 
@@ -12,24 +13,46 @@ type ZSaxIcon = Extract<keyof typeof saxBoldIcons | keyof typeof saxOutlineIcons
12
13
  declare const Z_ICONS: {};
13
14
  type ZIcon = ZLucideIcon | ZSaxIcon;
14
15
 
16
+ type ZIconAnimationTrigger = 'manual' | 'hover' | 'focus' | 'interaction' | 'always';
15
17
  declare class ZIconComponent {
16
18
  readonly class: _angular_core.InputSignal<ClassValue>;
17
19
  readonly zType: _angular_core.InputSignal<ZIcon | undefined>;
20
+ readonly zAnimatedType: _angular_core.InputSignal<("accessibility" | "activity" | "play" | "airplay" | "check" | "alarm-clock-check" | "clock" | "alarm-clock" | "alarm-clock-off" | "align-horizontal-space-around" | "align-vertical-space-around" | "anvil" | "archive" | "arrow-big-down-dash" | "arrow-big-down" | "arrow-big-left-dash" | "arrow-big-left" | "arrow-big-right-dash" | "arrow-big-right" | "arrow-big-up-dash" | "arrow-big-up" | "arrow-down-01" | "arrow-down-10" | "arrow-down-a-z" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-down-z-a" | "arrow-left" | "arrow-left-right" | "arrow-right" | "arrow-right-left" | "arrow-up-01" | "arrow-up-10" | "arrow-up-a-z" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "arrow-up-z-a" | "award" | "x" | "axe" | "axis-3d" | "badge-alert" | "badge-check" | "badge-question-mark" | "battery-charging" | "battery-full" | "battery" | "battery-low" | "battery-medium" | "battery-warning" | "bean-off" | "beer-off" | "bell" | "bell-off" | "bell-ring" | "between-horizontal-end" | "between-horizontal-start" | "between-vertical-end" | "between-vertical-start" | "binary" | "blend" | "blocks" | "bluetooth-off" | "bold" | "bolt" | "bone" | "book-a" | "book-audio" | "book-check" | "book-dashed" | "book-down" | "book-headphones" | "heart" | "book-heart" | "book" | "book-image" | "key" | "book-key" | "book-lock" | "book-marked" | "minus" | "book-minus" | "book-open-check" | "book-open-text" | "plus" | "book-plus" | "book-text" | "book-type" | "book-up-2" | "book-up" | "user" | "book-user" | "book-x" | "bookmark-check" | "bookmark" | "bookmark-minus" | "bookmark-plus" | "bookmark-x" | "bot" | "bot-off" | "boxes" | "cog" | "brain-cog" | "briefcase-business" | "briefcase-conveyor-belt" | "briefcase" | "briefcase-medical" | "brush-cleaning" | "brush" | "bug-off" | "calendar-check-2" | "calendar-check" | "calendar-cog" | "calendar-days" | "calendar-off" | "calendar-sync" | "camera-off" | "candy-off" | "captions-off" | "cast" | "cctv" | "chart-bar-decreasing" | "chart-bar" | "chart-bar-increasing" | "chart-column-decreasing" | "chart-column" | "chart-column-increasing" | "chart-gantt" | "chart-line" | "chart-no-axes-column-decreasing" | "chart-no-axes-column" | "chart-no-axes-column-increasing" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie" | "chart-scatter" | "chart-spline" | "check-check" | "cherry" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chevrons-down" | "chevrons-down-up" | "chevrons-left" | "chevrons-left-right" | "chevrons-right" | "chevrons-right-left" | "chevrons-up-down" | "chevrons-up" | "cigarette-off" | "circle-alert" | "circle-arrow-down" | "circle-arrow-left" | "circle-arrow-out-down-left" | "circle-arrow-out-down-right" | "circle-arrow-out-up-left" | "circle-arrow-out-up-right" | "circle-arrow-right" | "circle-arrow-up" | "circle-check-big" | "circle-check" | "circle-chevron-down" | "circle-chevron-left" | "circle-chevron-right" | "circle-chevron-up" | "circle-off" | "circle-parking-off" | "circle-plus" | "circle-question-mark" | "clapperboard" | "clipboard-check" | "clipboard" | "clipboard-list" | "pen" | "clipboard-pen" | "pen-line" | "clipboard-pen-line" | "clipboard-x" | "clock-10" | "clock-11" | "clock-12" | "clock-1" | "clock-2" | "clock-3" | "clock-4" | "clock-5" | "clock-6" | "clock-7" | "clock-8" | "clock-9" | "cloud-cog" | "download" | "cloud-download" | "cloud-moon" | "cloud-off" | "upload" | "cloud-upload" | "compass" | "contrast" | "copy-check" | "copy" | "cpu" | "crop" | "diamond-plus" | "dice-1" | "dice-2" | "dice-3" | "dice-4" | "dice-5" | "dice-6" | "diff" | "dna-off" | "droplet-off" | "drum" | "ear-off" | "eclipse" | "egg-off" | "expand" | "eye-off" | "file-chart-column" | "file-chart-column-increasing" | "file-chart-line" | "file-check-corner" | "file-check" | "file-cog" | "file-down" | "file-exclamation-point" | "file-minus" | "file-pen" | "file-pen-line" | "file-plus" | "file-question-mark" | "file-sliders" | "file-stack" | "terminal" | "file-terminal" | "file-up" | "fish-off" | "flag-off" | "flashlight-off" | "flask-conical-off" | "folder-check" | "folder-cog" | "folder-down" | "kanban" | "folder-kanban" | "folder-pen" | "folder-plus" | "folder-sync" | "folder-up" | "folder-x" | "frame" | "funnel-x" | "gallery-horizontal-end" | "gallery-horizontal" | "gallery-thumbnails" | "gallery-vertical-end" | "gallery-vertical" | "gauge" | "gavel" | "grid-2x2-check" | "grip-horizontal" | "grip" | "grip-vertical" | "hammer" | "hand-coins" | "hand-heart" | "hard-drive-download" | "hard-drive-upload" | "phone-off" | "headphone-off" | "heart-off" | "history" | "hop-off" | "house" | "wifi" | "house-wifi" | "image-down" | "image-off" | "image-up" | "images" | "infinity" | "key-round" | "key-square" | "keyboard" | "keyboard-off" | "landmark" | "layers" | "layout-dashboard" | "layout-grid" | "layout-panel-left" | "layout-panel-top" | "layout-template" | "lightbulb" | "lightbulb-off" | "link2-off" | "list-check" | "list-checks" | "list-restart" | "list-todo" | "loader-pinwheel" | "locate-off" | "log-out" | "mail-check" | "map-pin-check" | "map-pin-check-inside" | "pin-off" | "map-pin-off" | "maximize-2" | "maximize" | "megaphone-off" | "message-circle" | "message-circle-more" | "message-circle-off" | "message-circle-question-mark" | "message-circle-warning" | "message-square" | "message-square-more" | "message-square-off" | "mic-off" | "milk-off" | "minimize-2" | "minimize" | "monitor-check" | "monitor-cog" | "monitor-down" | "monitor-off" | "monitor-up" | "mouse-off" | "mouse-pointer-2" | "mouse-pointer" | "move-diagonal-2" | "move-diagonal" | "move-down" | "move-down-left" | "move-down-right" | "move-horizontal" | "move-left" | "move-right" | "move-up" | "move-up-left" | "move-up-right" | "move-vertical" | "navigation2-off" | "navigation-off" | "nfc" | "notebook-pen" | "nut-off" | "octagon-alert" | "orbit" | "package-check" | "paintbrush" | "panel-bottom-close" | "panel-bottom-open" | "panel-left-close" | "panel-left-open" | "panel-right-close" | "panel-right-open" | "panel-top-close" | "panel-top-open" | "paperclip" | "pen-off" | "pencil" | "pencil-line" | "pencil-off" | "pickaxe" | "plane" | "pointer-off" | "power-off" | "printer-check" | "rabbit" | "radar" | "radio" | "radio-tower" | "rainbow" | "redo-dot" | "redo" | "refresh-ccw-dot" | "refresh-ccw" | "refresh-cw" | "refresh-cw-off" | "rocket" | "rocking-chair" | "rotate-ccw" | "rotate-ccw-key" | "rotate-cw" | "route" | "route-off" | "rss" | "save-off" | "scan-text" | "scissors" | "search-check" | "search" | "send-horizontal" | "send" | "server-cog" | "server-off" | "settings" | "shield-alert" | "shield-check" | "shield-off" | "shield-plus" | "shield-question-mark" | "ship" | "ship-wheel" | "shopping-cart" | "shovel" | "shower-head" | "shrink" | "signal-high" | "signal" | "signal-low" | "signal-medium" | "signal-zero" | "signature" | "sliders-horizontal" | "sliders-vertical" | "smartphone-nfc" | "snowflake" | "sparkle" | "sparkles" | "speech" | "spell-check" | "square-arrow-down" | "square-arrow-down-left" | "square-arrow-down-right" | "square-arrow-left" | "square-arrow-out-down-left" | "square-arrow-out-down-right" | "square-arrow-out-up-left" | "square-arrow-out-up-right" | "square-arrow-right" | "square-arrow-up" | "square-arrow-up-left" | "square-arrow-up-right" | "square-chart-gantt" | "square-check-big" | "square-check" | "square-chevron-down" | "square-chevron-left" | "square-chevron-right" | "square-chevron-up" | "square-dashed-kanban" | "square-kanban" | "square-parking-off" | "square-pen" | "square-plus" | "square-scissors" | "square-stack" | "square-terminal" | "star" | "star-off" | "sun" | "sword" | "tag" | "telescope" | "text-align-center" | "text-cursor" | "text-cursor-input" | "text-search" | "thermometer" | "thumbs-down" | "thumbs-up" | "ticket-check" | "timer" | "timer-off" | "toggle-left" | "toggle-right" | "tornado" | "touchpad-off" | "trash-2" | "trash" | "triangle-alert" | "umbrella-off" | "undo-dot" | "undo" | "unfold-horizontal" | "unfold-vertical" | "unplug" | "user-check" | "user-cog" | "user-pen" | "user-round-check" | "user-round-cog" | "user-round" | "user-round-pen" | "vibrate" | "vibrate-off" | "video-off" | "volume-off" | "vote" | "waves" | "webhook-off" | "wheat-off" | "wifi-high" | "wifi-low" | "wifi-off" | "wifi-pen" | "wifi-zero" | "wine-off" | "zap-off") | undefined>;
21
+ readonly zAnimate: _angular_core.InputSignal<boolean>;
22
+ readonly zAnimationTrigger: _angular_core.InputSignal<ZIconAnimationTrigger>;
18
23
  readonly zSize: _angular_core.InputSignal<string | number | null | undefined>;
19
24
  readonly zStrokeWidth: _angular_core.InputSignal<number>;
20
25
  readonly zSvg: _angular_core.InputSignal<string>;
21
26
  protected readonly resolvedSvg: _angular_core.WritableSignal<string>;
27
+ protected readonly isHoverActive: _angular_core.WritableSignal<boolean>;
28
+ protected readonly isFocusActive: _angular_core.WritableSignal<boolean>;
29
+ protected readonly isTouchActive: _angular_core.WritableSignal<boolean>;
22
30
  protected readonly normalizedSize: _angular_core.Signal<string>;
23
31
  private readonly _svgFetchError;
24
32
  protected readonly zClasses: _angular_core.Signal<string>;
33
+ protected readonly animatedIcon: _angular_core.Signal<Type<unknown> | null>;
34
+ protected readonly animatedIconInputs: _angular_core.Signal<Record<string, unknown>>;
35
+ protected readonly shouldAnimate: _angular_core.Signal<boolean>;
25
36
  constructor();
26
37
  private _isRawSvg;
38
+ protected setHoverActive(isActive: boolean): void;
39
+ protected setFocusActive(isActive: boolean): void;
40
+ protected setTouchActive(isActive: boolean): void;
27
41
  private _isSvgPath;
28
42
  private _normalizeCustomSvg;
29
43
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZIconComponent, never>;
30
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZIconComponent, "z-icon, [z-icon]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zStrokeWidth": { "alias": "zStrokeWidth"; "required": false; "isSignal": true; }; "zSvg": { "alias": "zSvg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZIconComponent, "z-icon, [z-icon]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zAnimatedType": { "alias": "zAnimatedType"; "required": false; "isSignal": true; }; "zAnimate": { "alias": "zAnimate"; "required": false; "isSignal": true; }; "zAnimationTrigger": { "alias": "zAnimationTrigger"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zStrokeWidth": { "alias": "zStrokeWidth"; "required": false; "isSignal": true; }; "zSvg": { "alias": "zSvg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
31
45
  }
32
46
 
47
+ type ZAnimatedIconExport = Extract<keyof typeof animatedIcons, `${string}Icon`>;
48
+ type ZBrokenAnimatedIconExport = 'AudioLinesIcon';
49
+ type ZSafeAnimatedIconExport = Exclude<ZAnimatedIconExport, ZBrokenAnimatedIconExport>;
50
+ type ZStripIconSuffix<T extends string> = T extends `${infer Name}Icon` ? Name : T;
51
+ type ZKebabCase<T extends string, Previous extends string = ''> = T extends `${infer Head}${infer Tail}` ? Tail extends Uncapitalize<Tail> ? Head extends `${number}` ? Previous extends '' | '-' | `${number}` ? `${Head}${ZKebabCase<Tail, Head>}` : `-${Head}${ZKebabCase<Tail, Head>}` : `${Lowercase<Head>}${ZKebabCase<Tail, Head>}` : `${Lowercase<Head>}-${ZKebabCase<Tail, '-'>}` : T;
52
+ type ZAnimatedIconName = ZKebabCase<ZStripIconSuffix<ZSafeAnimatedIconExport>>;
53
+ type ZAnimatedIcon = ZAnimatedIconName;
54
+ declare const Z_ANIMATED_ICONS: Record<ZAnimatedIcon, Type<unknown>>;
55
+
33
56
  declare const zIconVariants: (props?: ({
34
57
  zSize?: string | number | null | undefined;
35
58
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -37,5 +60,5 @@ type ZIconVariants = VariantProps<typeof zIconVariants>;
37
60
 
38
61
  declare function provideZIconLoader(): EnvironmentProviders;
39
62
 
40
- export { ZIconComponent, Z_ICONS, provideZIconLoader, zIconVariants };
41
- export type { ZIcon, ZIconVariants };
63
+ export { ZIconComponent, Z_ANIMATED_ICONS, Z_ICONS, provideZIconLoader, zIconVariants };
64
+ export type { ZAnimatedIcon, ZIcon, ZIconAnimationTrigger, ZIconVariants };
@@ -160,6 +160,7 @@ declare class ZMenuV2Component {
160
160
  readonly zCurrentPath: _angular_core.InputSignal<string>;
161
161
  readonly zKey: _angular_core.InputSignal<string>;
162
162
  readonly zClass: _angular_core.InputSignal<string>;
163
+ readonly zTitle: _angular_core.InputSignal<string>;
163
164
  readonly zCollapsedWidth: _angular_core.InputSignal<number>;
164
165
  readonly zExpandedWidth: _angular_core.InputSignal<number>;
165
166
  readonly zExpandMode: _angular_core.InputSignal<ZMenuV2ExpandMode>;
@@ -180,6 +181,7 @@ declare class ZMenuV2Component {
180
181
  private readonly _isMobile$;
181
182
  readonly isMobile: _angular_core.Signal<boolean>;
182
183
  protected readonly mobileLogo: _angular_core.Signal<string>;
184
+ protected readonly effectiveTitle: _angular_core.Signal<string>;
183
185
  protected readonly avatarSrc: _angular_core.Signal<string>;
184
186
  protected readonly visibleUserActions: _angular_core.Signal<ZMenuUserAction[]>;
185
187
  private readonly _routerPath;
@@ -212,7 +214,7 @@ declare class ZMenuV2Component {
212
214
  private _findDeepestPrefixMatch;
213
215
  private _getStateMenuCollapsed;
214
216
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZMenuV2Component, never>;
215
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZMenuV2Component, "z-menu-v2", never, { "zLogo": { "alias": "zLogo"; "required": false; "isSignal": true; }; "zLogoMobile": { "alias": "zLogoMobile"; "required": false; "isSignal": true; }; "zMenus": { "alias": "zMenus"; "required": false; "isSignal": true; }; "zUser": { "alias": "zUser"; "required": false; "isSignal": true; }; "zUserActions": { "alias": "zUserActions"; "required": false; "isSignal": true; }; "zCurrentPath": { "alias": "zCurrentPath"; "required": false; "isSignal": true; }; "zKey": { "alias": "zKey"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zCollapsedWidth": { "alias": "zCollapsedWidth"; "required": false; "isSignal": true; }; "zExpandedWidth": { "alias": "zExpandedWidth"; "required": false; "isSignal": true; }; "zExpandMode": { "alias": "zExpandMode"; "required": false; "isSignal": true; }; "zShowMobileBar": { "alias": "zShowMobileBar"; "required": false; "isSignal": true; }; }, { "zOnSelect": "zOnSelect"; "zOnMenuAction": "zOnMenuAction"; "zControl": "zControl"; }, never, never, true, never>;
217
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZMenuV2Component, "z-menu-v2", never, { "zLogo": { "alias": "zLogo"; "required": false; "isSignal": true; }; "zLogoMobile": { "alias": "zLogoMobile"; "required": false; "isSignal": true; }; "zMenus": { "alias": "zMenus"; "required": false; "isSignal": true; }; "zUser": { "alias": "zUser"; "required": false; "isSignal": true; }; "zUserActions": { "alias": "zUserActions"; "required": false; "isSignal": true; }; "zCurrentPath": { "alias": "zCurrentPath"; "required": false; "isSignal": true; }; "zKey": { "alias": "zKey"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zCollapsedWidth": { "alias": "zCollapsedWidth"; "required": false; "isSignal": true; }; "zExpandedWidth": { "alias": "zExpandedWidth"; "required": false; "isSignal": true; }; "zExpandMode": { "alias": "zExpandMode"; "required": false; "isSignal": true; }; "zShowMobileBar": { "alias": "zShowMobileBar"; "required": false; "isSignal": true; }; }, { "zOnSelect": "zOnSelect"; "zOnMenuAction": "zOnMenuAction"; "zControl": "zControl"; }, never, never, true, never>;
216
218
  }
217
219
 
218
220
  export { ZMenuComponent, ZMenuV2Component };
@@ -33,6 +33,8 @@ declare class ZModalOptions<T, U> {
33
33
  zContent?: string | TemplateRef<T> | Type<T>;
34
34
  /** Custom CSS classes for the modal */
35
35
  class?: ClassValue;
36
+ /** Custom CSS classes for the modal body */
37
+ zBodyClass?: ClassValue;
36
38
  /** Data to be passed to the content component via Z_MODAL_DATA token */
37
39
  zData?: U;
38
40
  /**
@@ -170,6 +172,7 @@ declare class ZModalComponent<T, U> extends BasePortalOutlet implements OnDestro
170
172
  zAfterClose: _angular_core.OutputEmitterRef<void>;
171
173
  readonly zScrollbar: _angular_core.OutputEmitterRef<NgScrollbar>;
172
174
  readonly class: _angular_core.InputSignal<ClassValue>;
175
+ readonly zBodyClass: _angular_core.InputSignal<ClassValue>;
173
176
  readonly zVisible: _angular_core.ModelSignal<boolean>;
174
177
  readonly zTitle: _angular_core.InputSignal<string | TemplateRef<unknown> | undefined>;
175
178
  readonly zDescription: _angular_core.InputSignal<string | TemplateRef<unknown> | undefined>;
@@ -225,13 +228,18 @@ declare class ZModalComponent<T, U> extends BasePortalOutlet implements OnDestro
225
228
  protected readonly confirmIconColors: _angular_core.Signal<ZModalConfirmIconColors>;
226
229
  protected readonly effectiveTitle: _angular_core.Signal<string | TemplateRef<unknown> | undefined>;
227
230
  protected readonly effectiveDescription: _angular_core.Signal<string | TemplateRef<unknown> | undefined>;
231
+ protected readonly hasEffectiveDescription: _angular_core.Signal<boolean>;
232
+ protected readonly headerContentClasses: _angular_core.Signal<string>;
233
+ protected readonly effectiveBodyClass: _angular_core.Signal<ClassValue>;
234
+ protected readonly templateBodyClasses: _angular_core.Signal<string>;
235
+ protected readonly serviceBodyClasses: _angular_core.Signal<string>;
228
236
  protected readonly effectiveClosable: _angular_core.Signal<boolean>;
229
237
  protected readonly effectiveHideFooter: _angular_core.Signal<boolean | undefined>;
230
238
  protected readonly effectiveHideHeader: _angular_core.Signal<boolean | undefined>;
231
239
  protected readonly effectiveOkText: _angular_core.Signal<string | null | undefined>;
232
240
  protected readonly effectiveCancelText: _angular_core.Signal<string | null | undefined>;
233
241
  protected readonly effectiveOkDestructive: _angular_core.Signal<boolean | undefined>;
234
- protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "error" | "link" | "default" | "primary" | "secondary" | "destructive" | "success" | "outline" | "outline-primary" | "outline-secondary" | "outline-success" | "outline-info" | "outline-warning" | "outline-error" | "outline-destructive" | "outline-success-secondary" | "outline-info-secondary" | "outline-warning-secondary" | "outline-error-secondary" | "outline-destructive-secondary" | "outline-primary-secondary" | "ghost" | "ghost-primary" | "ghost-success" | "ghost-info" | "ghost-warning" | "ghost-error" | "ghost-destructive" | "subtle" | "subtle-primary" | "subtle-success" | "subtle-info" | "subtle-warning" | "subtle-destructive" | null | undefined>;
242
+ protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "error" | "default" | "primary" | "secondary" | "destructive" | "destructive-heartbeat" | "success" | "outline" | "outline-primary" | "outline-secondary" | "outline-success" | "outline-info" | "outline-warning" | "outline-error" | "outline-destructive" | "outline-shimmer" | "outline-success-secondary" | "outline-info-secondary" | "outline-warning-secondary" | "outline-error-secondary" | "outline-destructive-secondary" | "outline-primary-secondary" | "outline-primary-soft" | "outline-success-soft" | "outline-info-soft" | "outline-warning-soft" | "outline-error-soft" | "outline-destructive-soft" | "outline-primary-soft-border" | "outline-success-soft-border" | "outline-info-soft-border" | "outline-warning-soft-border" | "outline-error-soft-border" | "outline-destructive-soft-border" | "ghost" | "ghost-primary" | "ghost-success" | "ghost-info" | "ghost-warning" | "ghost-error" | "ghost-destructive" | "subtle" | "subtle-primary" | "subtle-success" | "subtle-info" | "subtle-warning" | "subtle-destructive" | "subtle-outline" | "subtle-primary-outline" | "subtle-success-outline" | "subtle-info-outline" | "subtle-warning-outline" | "subtle-destructive-outline" | "link" | null | undefined>;
235
243
  protected readonly effectiveOkDisabled: _angular_core.Signal<boolean | undefined>;
236
244
  protected readonly effectiveLoading: _angular_core.Signal<boolean>;
237
245
  protected readonly effectiveContentLoading: _angular_core.Signal<boolean>;
@@ -257,7 +265,7 @@ declare class ZModalComponent<T, U> extends BasePortalOutlet implements OnDestro
257
265
  private _clearCloseTimeout;
258
266
  private _disposeTemplateOverlay;
259
267
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZModalComponent<any, any>, never>;
260
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZModalComponent<any, any>, "z-modal", ["zModal"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zVisible": { "alias": "zVisible"; "required": false; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zDescription": { "alias": "zDescription"; "required": false; "isSignal": true; }; "zWidth": { "alias": "zWidth"; "required": false; "isSignal": true; }; "zClosable": { "alias": "zClosable"; "required": false; "isSignal": true; }; "zMaskClosable": { "alias": "zMaskClosable"; "required": false; "isSignal": true; }; "zHideHeader": { "alias": "zHideHeader"; "required": false; "isSignal": true; }; "zHideFooter": { "alias": "zHideFooter"; "required": false; "isSignal": true; }; "zOkText": { "alias": "zOkText"; "required": false; "isSignal": true; }; "zCancelText": { "alias": "zCancelText"; "required": false; "isSignal": true; }; "zOkDestructive": { "alias": "zOkDestructive"; "required": false; "isSignal": true; }; "zOkDisabled": { "alias": "zOkDisabled"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zContentLoading": { "alias": "zContentLoading"; "required": false; "isSignal": true; }; "zSkeletonRows": { "alias": "zSkeletonRows"; "required": false; "isSignal": true; }; "zOverlay": { "alias": "zOverlay"; "required": false; "isSignal": true; }; }, { "zOk": "zOk"; "zCancel": "zCancel"; "zAfterClose": "zAfterClose"; "zScrollbar": "zScrollbar"; "zVisible": "zVisibleChange"; }, ["customHeader", "customContent", "customFooter"], ["*"], true, never>;
268
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZModalComponent<any, any>, "z-modal", ["zModal"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zBodyClass": { "alias": "zBodyClass"; "required": false; "isSignal": true; }; "zVisible": { "alias": "zVisible"; "required": false; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zDescription": { "alias": "zDescription"; "required": false; "isSignal": true; }; "zWidth": { "alias": "zWidth"; "required": false; "isSignal": true; }; "zClosable": { "alias": "zClosable"; "required": false; "isSignal": true; }; "zMaskClosable": { "alias": "zMaskClosable"; "required": false; "isSignal": true; }; "zHideHeader": { "alias": "zHideHeader"; "required": false; "isSignal": true; }; "zHideFooter": { "alias": "zHideFooter"; "required": false; "isSignal": true; }; "zOkText": { "alias": "zOkText"; "required": false; "isSignal": true; }; "zCancelText": { "alias": "zCancelText"; "required": false; "isSignal": true; }; "zOkDestructive": { "alias": "zOkDestructive"; "required": false; "isSignal": true; }; "zOkDisabled": { "alias": "zOkDisabled"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zContentLoading": { "alias": "zContentLoading"; "required": false; "isSignal": true; }; "zSkeletonRows": { "alias": "zSkeletonRows"; "required": false; "isSignal": true; }; "zOverlay": { "alias": "zOverlay"; "required": false; "isSignal": true; }; }, { "zOk": "zOk"; "zCancel": "zCancel"; "zAfterClose": "zAfterClose"; "zScrollbar": "zScrollbar"; "zVisible": "zVisibleChange"; }, ["customHeader", "customContent", "customFooter"], ["*"], true, never>;
261
269
  }
262
270
 
263
271
  declare class ZModalService {
@@ -15,6 +15,7 @@ interface ZPopoverControl {
15
15
  }
16
16
 
17
17
  declare class ZPopoverComponent implements OnInit, OnDestroy {
18
+ private static readonly _openPopovers;
18
19
  private readonly _overlay;
19
20
  private readonly _overlayPositionBuilder;
20
21
  private readonly _renderer;
@@ -35,6 +36,7 @@ declare class ZPopoverComponent implements OnInit, OnDestroy {
35
36
  readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
36
37
  readonly zOffset: _angular_core.InputSignal<number>;
37
38
  readonly zManualClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
39
+ readonly zOutsideClickClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
38
40
  readonly zScrollClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
39
41
  readonly zShowArrow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
40
42
  private _overlayRef;
@@ -63,16 +65,18 @@ declare class ZPopoverComponent implements OnInit, OnDestroy {
63
65
  private _delay;
64
66
  private _setupScrollClose;
65
67
  private _showPopover;
68
+ private _isNestedPopoverTarget;
66
69
  private _setupResizeObserver;
67
70
  private _setupPopoverHover;
68
71
  private _hidePopover;
69
72
  private _clearHideTimeout;
70
73
  private _cleanupListeners;
71
74
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZPopoverComponent, never>;
72
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZPopoverComponent, "z-popover", never, { "zContent": { "alias": "zContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zManualClose": { "alias": "zManualClose"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zShowArrow": { "alias": "zShowArrow"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; "zControl": "zControl"; }, never, ["*"], true, never>;
75
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZPopoverComponent, "z-popover", never, { "zContent": { "alias": "zContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zManualClose": { "alias": "zManualClose"; "required": false; "isSignal": true; }; "zOutsideClickClose": { "alias": "zOutsideClickClose"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zShowArrow": { "alias": "zShowArrow"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; "zControl": "zControl"; }, never, ["*"], true, never>;
73
76
  }
74
77
 
75
78
  declare class ZPopoverDirective implements OnInit, OnDestroy {
79
+ private static readonly _openPopovers;
76
80
  readonly zContent: _angular_core.InputSignal<ZPopoverContent | null>;
77
81
  readonly zPosition: _angular_core.InputSignal<ZPopoverPosition>;
78
82
  readonly zTrigger: _angular_core.InputSignal<ZPopoverTrigger>;
@@ -84,6 +88,7 @@ declare class ZPopoverDirective implements OnInit, OnDestroy {
84
88
  readonly zPopoverWidth: _angular_core.InputSignal<number | "trigger" | "auto">;
85
89
  readonly zTriggerRef: _angular_core.InputSignal<HTMLElement | ElementRef<HTMLElement> | null>;
86
90
  readonly zManualClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
91
+ readonly zOutsideClickClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
87
92
  readonly zScrollClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
88
93
  readonly zShowArrow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
89
94
  readonly zShow: _angular_core.OutputEmitterRef<void>;
@@ -118,6 +123,7 @@ declare class ZPopoverDirective implements OnInit, OnDestroy {
118
123
  hideImmediate(): void;
119
124
  toggle(): void;
120
125
  isOpen(): boolean;
126
+ updatePosition(): void;
121
127
  private _createOverlay;
122
128
  private _getWidthConfig;
123
129
  private _getTriggerElement;
@@ -128,13 +134,14 @@ declare class ZPopoverDirective implements OnInit, OnDestroy {
128
134
  private _setupScrollClose;
129
135
  private _delay;
130
136
  private _showPopover;
137
+ private _isNestedPopoverTarget;
131
138
  private _setupResizeObserver;
132
139
  private _setupPopoverHover;
133
140
  private _hidePopover;
134
141
  private _clearHideTimeout;
135
142
  private _cleanupListeners;
136
143
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZPopoverDirective, never>;
137
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZPopoverDirective, "[z-popover]", ["zPopover"], { "zContent": { "alias": "zPopoverContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zPopoverWidth": { "alias": "zPopoverWidth"; "required": false; "isSignal": true; }; "zTriggerRef": { "alias": "zTriggerRef"; "required": false; "isSignal": true; }; "zManualClose": { "alias": "zManualClose"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zShowArrow": { "alias": "zShowArrow"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; "zHideStart": "zHideStart"; "zControl": "zControl"; "zPositionChange": "zPositionChange"; }, never, never, true, never>;
144
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZPopoverDirective, "[z-popover]", ["zPopover"], { "zContent": { "alias": "zPopoverContent"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zTrigger": { "alias": "zTrigger"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zShowDelay": { "alias": "zShowDelay"; "required": false; "isSignal": true; }; "zHideDelay": { "alias": "zHideDelay"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zOffset": { "alias": "zOffset"; "required": false; "isSignal": true; }; "zPopoverWidth": { "alias": "zPopoverWidth"; "required": false; "isSignal": true; }; "zTriggerRef": { "alias": "zTriggerRef"; "required": false; "isSignal": true; }; "zManualClose": { "alias": "zManualClose"; "required": false; "isSignal": true; }; "zOutsideClickClose": { "alias": "zOutsideClickClose"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zShowArrow": { "alias": "zShowArrow"; "required": false; "isSignal": true; }; }, { "zShow": "zShow"; "zHide": "zHide"; "zHideStart": "zHideStart"; "zControl": "zControl"; "zPositionChange": "zPositionChange"; }, never, never, true, never>;
138
145
  }
139
146
 
140
147
  declare const zPopoverVariants: (props?: ({
@@ -315,7 +315,7 @@ declare class ZTagClassesPipe implements PipeTransform {
315
315
 
316
316
  declare const zSelectVariants: (props?: ({
317
317
  zSize?: "sm" | "default" | "lg" | null | undefined;
318
- zStatus?: "default" | "open" | "error" | "disabled" | "readonly" | null | undefined;
318
+ zStatus?: "default" | "disabled" | "readonly" | "open" | "error" | null | undefined;
319
319
  } & class_variance_authority_types.ClassProp) | undefined) => string;
320
320
  declare const zSelectTagVariants: (props?: ({
321
321
  zSize?: "sm" | "default" | "lg" | null | undefined;
@@ -4,20 +4,19 @@ import * as _shival99_angular_virtual from '@shival99/angular-virtual';
4
4
  import * as _shival99_z_ui_components_z_input from '@shival99/z-ui/components/z-input';
5
5
  import { ZInputSize } from '@shival99/z-ui/components/z-input';
6
6
  import * as _angular_core from '@angular/core';
7
- import { TemplateRef, Type, AfterViewInit, ElementRef, OnDestroy, OnInit } from '@angular/core';
7
+ import { TemplateRef, Type, AfterViewInit, ElementRef, OnInit } from '@angular/core';
8
8
  import { CdkDragDrop, CdkDragEnd } from '@angular/cdk/drag-drop';
9
9
  import { ConnectedPosition } from '@angular/cdk/overlay';
10
+ import { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';
10
11
  import { ClassValue } from 'clsx';
11
12
  import { NgScrollbar } from 'ngx-scrollbar';
12
13
  import { ZAutocompleteType, ZAutocompleteOption } from '@shival99/z-ui/components/z-autocomplete';
13
14
  import { ZButtonVariants } from '@shival99/z-ui/components/z-button';
14
15
  import { ZIcon, ZIconVariants } from '@shival99/z-ui/components/z-icon';
15
- import * as _shival99_z_ui_components_z_select from '@shival99/z-ui/components/z-select';
16
- import { ZSelectOption } from '@shival99/z-ui/components/z-select';
16
+ import { ZSelectOption, ZSelectConfig } from '@shival99/z-ui/components/z-select';
17
17
  import * as _shival99_z_ui_components_z_tooltip from '@shival99/z-ui/components/z-tooltip';
18
18
  import { ZTooltipConfig, ZTooltipContent } from '@shival99/z-ui/components/z-tooltip';
19
19
  import { ZExcelColumnConfig, ZExcelExportOptions } from '@shival99/z-ui/services';
20
- import * as _shival99_z_ui_components_z_table from '@shival99/z-ui/components/z-table';
21
20
  import { ZDateRange } from '@shival99/z-ui/components/z-calendar';
22
21
  import { ZDropdownMenuItem } from '@shival99/z-ui/components/z-dropdown-menu';
23
22
 
@@ -67,8 +66,34 @@ type ZTableCellContent<T> = string | number | TemplateRef<{
67
66
  type ZTableHeaderContent<T> = string | TemplateRef<unknown> | Type<unknown> | (() => string) | ((info: HeaderContext<T, unknown>) => string);
68
67
  /** Alias for ZTableColumnConfig — kept for backward compatibility */
69
68
  type ZTableColumn<T = unknown> = ZTableColumnConfig<T>;
70
- /** Available column filter input types */
71
- type ZTableFilterType = 'text' | 'number' | 'select' | 'multi-select' | 'date' | 'date-range' | 'range' | 'tags';
69
+ /** Available column filter value input hints */
70
+ type ZTableFilterValueType = 'text' | 'number';
71
+ type ZTableFilterUi = 'basic' | 'advanced' | 'custom';
72
+ type ZTableAdvancedFilterType = 'text' | 'number' | 'range' | 'date' | 'date-range' | 'time' | 'select' | 'multi-select' | 'tags';
73
+ type ZTableFilterOptionSource = 'faceted' | 'table';
74
+ /** Available column filter operators */
75
+ type ZTableFilterOperator = 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'equals' | 'notEquals' | 'greaterThan' | 'greaterThanOrEqual' | 'lessThan' | 'lessThanOrEqual' | 'empty' | 'notEmpty';
76
+ type ZTableFilterJoinOperator = 'and' | 'or';
77
+ interface ZTableFilterCondition {
78
+ joinWithPrev?: ZTableFilterJoinOperator;
79
+ operator: ZTableFilterOperator;
80
+ value?: unknown;
81
+ }
82
+ interface ZTableDraftFilterCondition {
83
+ readonly id: string;
84
+ readonly joinWithPrev?: ZTableFilterJoinOperator;
85
+ operator: ZTableFilterOperator | null;
86
+ value?: unknown;
87
+ }
88
+ interface ZTableFilterConditionView extends ZTableDraftFilterCondition {
89
+ readonly inputType: 'text' | 'number';
90
+ readonly isJoinGroupStart: boolean;
91
+ readonly isValueLess: boolean;
92
+ readonly joinLabelKey: string;
93
+ readonly joinTone: 'and' | 'or';
94
+ readonly operatorOptions: ZSelectOption<ZTableFilterOperator>[];
95
+ }
96
+ type ZTableLegacyAdvancedFilterType = Exclude<ZTableAdvancedFilterType, 'text' | 'number'>;
72
97
  /** Available inline cell edit input types */
73
98
  type ZTableEditType = 'text' | 'number' | 'select' | 'date' | 'checkbox' | 'textarea' | 'toggle' | 'autocomplete';
74
99
  /**
@@ -92,11 +117,28 @@ type ZTableCustomFilterFn<T> = (row: Row<T>, columnId: string, filterValue: unkn
92
117
  interface ZTableFilterConfig<T = unknown> {
93
118
  enabled?: boolean;
94
119
  mode?: ZTableMode;
95
- type?: ZTableFilterType;
120
+ valueType?: ZTableFilterValueType;
121
+ ui?: ZTableFilterUi;
122
+ advancedType?: ZTableAdvancedFilterType;
96
123
  options?: ZSelectOption[];
124
+ selectConfig?: Partial<ZSelectConfig<unknown>>;
125
+ optionSource?: ZTableFilterOptionSource;
97
126
  allowClear?: boolean;
127
+ label?: string;
98
128
  placeholder?: string;
99
129
  filterFn?: ZTableBuiltInFilterFn | ZTableCustomFilterFn<T>;
130
+ /**
131
+ * @deprecated Dùng `advancedType` thay thế.
132
+ */
133
+ type?: ZTableAdvancedFilterType;
134
+ /**
135
+ * @deprecated Dùng `advancedType` thay thế.
136
+ */
137
+ filterType?: ZTableAdvancedFilterType;
138
+ /**
139
+ * @deprecated Dùng `options` thay thế.
140
+ */
141
+ filterOptions?: ZSelectOption[];
100
142
  }
101
143
  type ZTableEditSize = 'sm' | 'default' | 'lg';
102
144
  interface ZTableEditConfig<T = unknown> {
@@ -150,29 +192,6 @@ interface ZTableEditConfig<T = unknown> {
150
192
  /** Allow typing custom values when no options match. Default: false */
151
193
  autocompleteAllowCustomValue?: boolean;
152
194
  }
153
- /** Minimal column info stored alongside saved config for cache invalidation */
154
- interface ZTableSavedColumnInfo {
155
- id: string;
156
- accessorKey?: string;
157
- }
158
- /**
159
- * Shape of the persisted table configuration (via ZCacheService).
160
- * Restored when a table with matching zKey re-mounts.
161
- * columnInfo is used to detect schema changes and invalidate stale caches.
162
- */
163
- interface ZTableSavedConfig {
164
- columnOrder: string[];
165
- columnSizing: Record<string, number>;
166
- columnPinning: {
167
- left?: string[];
168
- right?: string[];
169
- };
170
- columnVisibility: Record<string, boolean>;
171
- columnInfo: ZTableSavedColumnInfo[];
172
- showHeaderFooterShadow: boolean;
173
- showHorizontalBorder: boolean;
174
- showVerticalBorder: boolean;
175
- }
176
195
  /**
177
196
  * Imperative control handle emitted via `zControl` output.
178
197
  * Allows parent components to programmatically manipulate table state
@@ -876,6 +895,7 @@ declare class ZTableComponent<T> implements AfterViewInit {
876
895
  protected readonly virtualRightSpacerWidth: _angular_core.Signal<number>;
877
896
  protected readonly renderedColumnCount: _angular_core.Signal<number>;
878
897
  protected readonly orderedLeafColumns: _angular_core.Signal<Column<T, unknown>[]>;
898
+ protected readonly hideableColumns: _angular_core.Signal<Column<T, unknown>[]>;
879
899
  protected readonly orderedHeaderGroups: _angular_core.Signal<{
880
900
  id: string;
881
901
  headers: _tanstack_angular_table.Header<T, unknown>[];
@@ -959,7 +979,10 @@ declare class ZTableComponent<T> implements AfterViewInit {
959
979
  hasRightPinnedColumns(): boolean;
960
980
  onTbodyScroll(event: Event): void;
961
981
  private _syncScrollLeft;
962
- /** Handles sort click; auto-adds shiftKey for multi-sort when enabled */
982
+ /**
983
+ * @deprecated Header sort now lives in the column filter popover.
984
+ * Giữ tạm để các consumer/template cũ còn compile trong giai đoạn chuyển đổi.
985
+ */
963
986
  handleSort(event: Event, handler?: (event: unknown) => void): void;
964
987
  onColumnDrop(event: CdkDragDrop<string[]>): void;
965
988
  onRowDragStarted(): void;
@@ -982,6 +1005,9 @@ declare class ZTableComponent<T> implements AfterViewInit {
982
1005
  onToggleColumnVisibility(columnId: string): void;
983
1006
  onToggleColumnPin(columnId: string, position: 'left' | 'right'): void;
984
1007
  handleColumnPin(columnId: string, position: 'left' | 'right' | false): void;
1008
+ toggleColumnVisibility(columnId: string): void;
1009
+ refreshColumnPopoverPositions(...popovers: ZPopoverDirective[]): void;
1010
+ private _isColumnHiddenFromVisibilityMenu;
985
1011
  moveColumnLeft(columnId: string): void;
986
1012
  moveColumnRight(columnId: string): void;
987
1013
  isFirstMovableColumn(columnId: string): boolean;
@@ -1013,35 +1039,85 @@ declare class ZTableComponent<T> implements AfterViewInit {
1013
1039
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZTableComponent<any>, "z-table", ["zTable"], { "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zConfig": { "alias": "zConfig"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zKey": { "alias": "zKey"; "required": false; "isSignal": true; }; "zVariant": { "alias": "zVariant"; "required": false; "isSignal": true; }; }, { "zChange": "zChange"; "zControl": "zControl"; }, never, never, true, never>;
1014
1040
  }
1015
1041
 
1016
- declare class ZTableFilterComponent<T> implements OnDestroy {
1042
+ declare class ZTableFilterComponent<T> {
1017
1043
  readonly zColumn: _angular_core.InputSignal<Column<unknown, unknown>>;
1018
1044
  readonly zTable: _angular_core.InputSignal<Table<T>>;
1019
- private _debounceTimeout;
1020
- private readonly _debounceMs;
1021
1045
  private readonly _columnDef;
1022
- readonly filterType: _angular_core.Signal<_shival99_z_ui_components_z_table.ZTableFilterType | undefined>;
1023
- readonly columnFilterValue: _angular_core.Signal<unknown>;
1024
- readonly minValue: _angular_core.Signal<number | "">;
1025
- readonly maxValue: _angular_core.Signal<number | "">;
1026
- readonly rangeMinValue: _angular_core.Signal<any>;
1027
- readonly rangeMaxValue: _angular_core.Signal<any>;
1028
- readonly dateValue: _angular_core.Signal<Date | null>;
1029
- readonly dateRangeValue: _angular_core.Signal<ZDateRange | null>;
1030
- readonly selectValue: _angular_core.Signal<{} | null>;
1031
- readonly multiSelectValue: _angular_core.Signal<any[]>;
1032
- readonly selectOptions: _angular_core.Signal<_shival99_z_ui_components_z_select.ZSelectOption<unknown>[] | {
1046
+ private readonly _appliedFilterConditions;
1047
+ private readonly _appliedLegacyFilterValue;
1048
+ private readonly _appliedSortState;
1049
+ protected readonly sortOptions: _angular_core.Signal<ZSelectOption<string>[]>;
1050
+ protected readonly draftFilters: _angular_core.WritableSignal<ZTableDraftFilterCondition[]>;
1051
+ protected readonly draftLegacyFilterValue: _angular_core.WritableSignal<unknown>;
1052
+ protected readonly draftSortState: _angular_core.WritableSignal<false | "asc" | "desc">;
1053
+ protected readonly columnFilterValue: _angular_core.Signal<unknown>;
1054
+ protected readonly effectiveFilterValue: _angular_core.Signal<unknown>;
1055
+ protected readonly sortState: _angular_core.Signal<false | _tanstack_angular_table.SortDirection>;
1056
+ protected readonly effectiveSortState: _angular_core.Signal<false | _tanstack_angular_table.SortDirection>;
1057
+ protected readonly canSort: _angular_core.Signal<boolean>;
1058
+ protected readonly canFilter: _angular_core.Signal<boolean>;
1059
+ protected readonly filterUi: _angular_core.Signal<ZTableFilterUi>;
1060
+ protected readonly advancedType: _angular_core.Signal<ZTableAdvancedFilterType>;
1061
+ protected readonly isAdvancedUi: _angular_core.Signal<boolean>;
1062
+ protected readonly isBuilderMode: _angular_core.Signal<boolean>;
1063
+ protected readonly legacyAdvancedType: _angular_core.Signal<ZTableLegacyAdvancedFilterType>;
1064
+ protected readonly popoverContentClass: _angular_core.Signal<string>;
1065
+ protected readonly popoverWidth: _angular_core.Signal<number>;
1066
+ protected readonly sortLabelKey: _angular_core.Signal<string>;
1067
+ protected readonly legacyFilterLabelKey: _angular_core.Signal<string>;
1068
+ protected readonly filterConditions: _angular_core.Signal<ZTableFilterCondition[]>;
1069
+ protected readonly filterConditionViews: _angular_core.Signal<ZTableFilterConditionView[]>;
1070
+ protected readonly canAddFilterCondition: _angular_core.Signal<boolean>;
1071
+ protected readonly filterBadgeCount: _angular_core.Signal<number>;
1072
+ protected readonly hasFilterValue: _angular_core.Signal<boolean>;
1073
+ protected readonly isActive: _angular_core.Signal<boolean>;
1074
+ protected readonly draftSortValue: _angular_core.Signal<"asc" | "desc" | "none">;
1075
+ protected readonly rangeMinValue: _angular_core.Signal<any>;
1076
+ protected readonly rangeMaxValue: _angular_core.Signal<any>;
1077
+ protected readonly dateValue: _angular_core.Signal<Date | null>;
1078
+ protected readonly timeValue: _angular_core.Signal<Date | null>;
1079
+ protected readonly dateRangeValue: _angular_core.Signal<ZDateRange | null>;
1080
+ protected readonly selectValue: _angular_core.Signal<{} | null>;
1081
+ protected readonly multiSelectValue: _angular_core.Signal<any[]>;
1082
+ protected readonly selectOptions: _angular_core.Signal<{
1033
1083
  label: string;
1034
- value: string;
1084
+ value: any;
1035
1085
  }[]>;
1036
- ngOnDestroy(): void;
1086
+ protected readonly selectConfig: _angular_core.Signal<Partial<ZSelectConfig<unknown>>>;
1087
+ syncDraft(): void;
1088
+ toggleBasicSort(): void;
1089
+ addDraftFilter(joinWithPrev: ZTableFilterJoinOperator): void;
1090
+ removeDraftFilter(id: string): void;
1091
+ updateFilterOperator(id: string, operator: ZTableFilterOperator | null): void;
1092
+ updateFilterValue(id: string, value: unknown): void;
1093
+ updateDraftSort(value: string | null): void;
1094
+ resetFilters(): void;
1095
+ applyFilters(): void;
1037
1096
  onMinChangeDebounced(value: string | number | null): void;
1038
1097
  onMaxChangeDebounced(value: string | number | null): void;
1039
- onTextChangeDebounced(value: string | number | null): void;
1040
- onSelectChange(value: unknown): void;
1041
- onMultiSelectChange(value: unknown[]): void;
1042
1098
  onDateChange(value: Date | null): void;
1099
+ onTimeChange(value: Date | null): void;
1043
1100
  onDateRangeChange(value: ZDateRange | null): void;
1044
- private _debounce;
1101
+ onSelectChange(value: unknown): void;
1102
+ onMultiSelectChange(value: unknown[]): void;
1103
+ private _normalizeFilterUi;
1104
+ private _normalizeAdvancedType;
1105
+ private _defaultLegacyFilterLabelKey;
1106
+ private _normalizeFilterConditions;
1107
+ private _isFilterCondition;
1108
+ private _operatorDefinitions;
1109
+ private _operatorOptions;
1110
+ private _operatorOptionsForDraft;
1111
+ private _conditionJoinTone;
1112
+ private _withDraftId;
1113
+ private _createDraftId;
1114
+ private _isApplicableCondition;
1115
+ private _isValueLessOperator;
1116
+ private _applySortState;
1117
+ private _normalizeSortState;
1118
+ private _hasLegacyFilterValue;
1119
+ private _normalizeLegacyFilterValue;
1120
+ private _syncAppliedStateFromColumn;
1045
1121
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTableFilterComponent<any>, never>;
1046
1122
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZTableFilterComponent<any>, "z-table-filter", never, { "zColumn": { "alias": "zColumn"; "required": true; "isSignal": true; }; "zTable": { "alias": "zTable"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1047
1123
  }
@@ -1063,7 +1139,7 @@ declare class ZTableActionsComponent<T = unknown> {
1063
1139
  readonly zConfig: _angular_core.InputSignal<ZTableActionColumnConfig<T>>;
1064
1140
  readonly zRow: _angular_core.InputSignal<T>;
1065
1141
  readonly zRowId: _angular_core.InputSignal<string>;
1066
- readonly zDropdownButtonSize: _angular_core.InputSignal<"sm" | "default" | "lg" | "xs" | "xl" | null | undefined>;
1142
+ readonly zDropdownButtonSize: _angular_core.InputSignal<"default" | "sm" | "lg" | "xs" | "xl" | null | undefined>;
1067
1143
  readonly zActionClick: _angular_core.OutputEmitterRef<ZTableActionClickEvent<T>>;
1068
1144
  protected readonly allActions: _angular_core.Signal<ZTableActionItem<T>[]>;
1069
1145
  protected readonly shouldShowAsButtons: _angular_core.Signal<boolean>;
@@ -1213,4 +1289,4 @@ declare const findColumnConfig: <T>(columnId: string, columns: ZTableColumnConfi
1213
1289
  declare function columnConfigToColumnDef<T>(config: ZTableColumnConfig<T>): ColumnDef<T>;
1214
1290
 
1215
1291
  export { ZTableActionsComponent, ZTableComponent, ZTableEditCellComponent, ZTableFilterComponent, ZTableIconTextComponent, columnConfigToColumnDef, findColumnConfig, getBodyConfig, getFooterConfig, getHeaderConfig, isBodyConfig, isFooterConfig, isHeaderConfig };
1216
- export type { ZTableActionBodyConfig, ZTableActionClickEvent, ZTableActionColumnConfig, ZTableActionItem, ZTableActionList, ZTableBulkActionClickEvent, ZTableBulkActionConfig, ZTableBulkActionContext, ZTableBulkActionHandlerContext, ZTableBulkActionItem, ZTableBulkActionList, ZTableBulkActionOptions, ZTableBulkActionViewItem, ZTableCellEditChange, ZTableCellEditEvent, ZTableChangeEvent, ZTableColumn, ZTableColumnConfig, ZTableConfig, ZTableControl, ZTableEditCellChangeEvent, ZTableEditConfig, ZTableEditSize, ZTableEditType, ZTableExcelExportConfig, ZTableExcelExportContext, ZTableExcelExportScope, ZTableFilterChangeEvent, ZTableFilterConfig, ZTableFilterType, ZTablePageChangeEvent, ZTablePaginationConfig, ZTableRowExpandEvent, ZTableRowSelectEvent, ZTableSavedConfig, ZTableSearchChangeEvent, ZTableSearchConfig, ZTableSortChangeEvent, ZTableSortConfig };
1292
+ export type { ZTableActionBodyConfig, ZTableActionClickEvent, ZTableActionColumnConfig, ZTableActionItem, ZTableActionList, ZTableAdvancedFilterType, ZTableBulkActionClickEvent, ZTableBulkActionConfig, ZTableBulkActionContext, ZTableBulkActionHandlerContext, ZTableBulkActionItem, ZTableBulkActionList, ZTableBulkActionOptions, ZTableBulkActionViewItem, ZTableCellEditChange, ZTableCellEditEvent, ZTableChangeEvent, ZTableColumn, ZTableColumnConfig, ZTableConfig, ZTableControl, ZTableEditCellChangeEvent, ZTableEditConfig, ZTableEditSize, ZTableEditType, ZTableExcelExportConfig, ZTableExcelExportContext, ZTableExcelExportScope, ZTableFilterChangeEvent, ZTableFilterCondition, ZTableFilterConfig, ZTableFilterJoinOperator, ZTableFilterOperator, ZTableFilterOptionSource, ZTableFilterUi, ZTableFilterValueType, ZTablePageChangeEvent, ZTablePaginationConfig, ZTableRowExpandEvent, ZTableRowSelectEvent, ZTableSearchChangeEvent, ZTableSearchConfig, ZTableSortChangeEvent, ZTableSortConfig };