@shival99/z-ui 1.9.22 → 1.9.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.
Files changed (40) hide show
  1. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +26 -186
  2. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +106 -247
  4. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-editor.mjs +5 -0
  6. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-gallery.mjs +109 -6
  8. package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-input.mjs +5 -0
  10. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-kanban.mjs +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-menu.mjs +318 -2
  14. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +1 -1
  16. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-select.mjs +45 -205
  18. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-table.mjs +2 -2
  20. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +15 -10
  22. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-upload.mjs +5 -0
  24. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  25. package/fesm2022/shival99-z-ui-i18n.mjs +8 -0
  26. package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
  27. package/fesm2022/shival99-z-ui-utils.mjs +2 -69
  28. package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/types/shival99-z-ui-components-z-autocomplete.d.ts +6 -37
  31. package/types/shival99-z-ui-components-z-calendar.d.ts +11 -1
  32. package/types/shival99-z-ui-components-z-editor.d.ts +8 -1
  33. package/types/shival99-z-ui-components-z-gallery.d.ts +38 -3
  34. package/types/shival99-z-ui-components-z-input.d.ts +8 -1
  35. package/types/shival99-z-ui-components-z-menu.d.ts +67 -2
  36. package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
  37. package/types/shival99-z-ui-components-z-select.d.ts +12 -38
  38. package/types/shival99-z-ui-components-z-tabs.d.ts +3 -2
  39. package/types/shival99-z-ui-components-z-upload.d.ts +8 -0
  40. package/types/shival99-z-ui-utils.d.ts +2 -47
@@ -4,7 +4,7 @@ import { TemplateRef, Signal, OnInit, ElementRef, PipeTransform } from '@angular
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { ZIcon } from '@shival99/z-ui/components/z-icon';
6
6
  import { ZPopoverPosition, ZPopoverControl } from '@shival99/z-ui/components/z-popover';
7
- import { ZAsyncOptionsConfig, ZEvent } from '@shival99/z-ui/utils';
7
+ import { ZEvent } from '@shival99/z-ui/utils';
8
8
  import { ClassValue } from 'clsx';
9
9
  import { Observable } from 'rxjs';
10
10
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -22,7 +22,12 @@ declare class ZSelectSelectedDirective<T = unknown> {
22
22
  }
23
23
 
24
24
  interface ZSelectControl<T = unknown> {
25
- /** Trigger validation and return true if has error */
25
+ /** Trigger validation and return true if valid */
26
+ valid: () => boolean;
27
+ /**
28
+ * Trigger validation and return true if has error.
29
+ * @deprecated Use `valid()` for boolean form-submit checks.
30
+ */
26
31
  validate: () => boolean;
27
32
  /** Reset component to initial state */
28
33
  reset: () => void;
@@ -57,15 +62,6 @@ interface ZSelectOption<T = unknown> {
57
62
  group?: string;
58
63
  icon?: string;
59
64
  }
60
- interface ZSelectConfig<T = unknown> {
61
- /** Số ký tự tối thiểu trước khi gọi async.load khi người dùng search. */
62
- minLength: number;
63
- /** Debounce search tính bằng mili giây, ưu tiên hơn zDebounce khi được truyền trong zConfig. */
64
- debounceTime: number;
65
- /** Config để component tự search, load-more, loading và append options. */
66
- async?: ZAsyncOptionsConfig<ZSelectOption<T>>;
67
- }
68
- declare const Z_SELECT_DEFAULT_CONFIG: Omit<ZSelectConfig, 'async'>;
69
65
  interface ZSelectAsyncValidator<T = unknown> {
70
66
  error: string;
71
67
  message: string;
@@ -141,7 +137,6 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
141
137
  readonly zVirtualScroll: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
142
138
  readonly zShowAction: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
143
139
  readonly zOptions: _angular_core.InputSignal<ZSelectOption<T>[]>;
144
- readonly zConfig: _angular_core.InputSignal<Partial<ZSelectConfig<T>>>;
145
140
  readonly zTranslateLabels: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
146
141
  readonly zKey: _angular_core.InputSignal<string>;
147
142
  readonly zSearchServer: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
@@ -166,12 +161,6 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
166
161
  private readonly _allKnownOptions;
167
162
  private readonly _asyncErrors;
168
163
  private readonly _customError;
169
- private readonly _asyncOptions;
170
- private readonly _asyncKeyword;
171
- private readonly _asyncPage;
172
- private readonly _asyncHasMore;
173
- private readonly _asyncLoading;
174
- private readonly _asyncLoadingMore;
175
164
  protected readonly uiState: _angular_core.WritableSignal<{
176
165
  isOpen: boolean;
177
166
  hasScrollShadow: boolean;
@@ -185,13 +174,6 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
185
174
  protected readonly searchText: _angular_core.WritableSignal<string>;
186
175
  protected readonly dropdownWidth: _angular_core.WritableSignal<number>;
187
176
  protected readonly currentValue: _angular_core.Signal<T | T[] | null>;
188
- protected readonly config: _angular_core.Signal<ZSelectConfig<T>>;
189
- protected readonly hasAsyncOptions: _angular_core.Signal<boolean>;
190
- protected readonly sourceOptions: _angular_core.Signal<ZSelectOption<T>[]>;
191
- protected readonly isLoading: _angular_core.Signal<boolean>;
192
- protected readonly isLoadingMore: _angular_core.Signal<boolean>;
193
- protected readonly canLoadMore: _angular_core.Signal<boolean>;
194
- protected readonly effectiveDebounceTime: _angular_core.Signal<number>;
195
177
  protected readonly virtualizer: _shival99_angular_virtual.AngularVirtualizer<HTMLDivElement, Element>;
196
178
  protected readonly isDisabled: _angular_core.Signal<boolean>;
197
179
  protected readonly isReadonly: _angular_core.Signal<boolean>;
@@ -208,7 +190,6 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
208
190
  protected readonly isTagsMode: _angular_core.Signal<boolean>;
209
191
  protected readonly effectiveSelectedTemplate: _angular_core.Signal<TemplateRef<any> | null>;
210
192
  protected readonly effectiveOptionTemplate: _angular_core.Signal<TemplateRef<any> | null>;
211
- protected readonly knownOptions: _angular_core.Signal<ZSelectOption<T>[]>;
212
193
  protected readonly shouldUseVirtualScroll: _angular_core.Signal<boolean>;
213
194
  protected readonly selectedOption: _angular_core.Signal<ZSelectOption<T> | null>;
214
195
  protected readonly selectedOptions: _angular_core.Signal<ZSelectOption<T>[]>;
@@ -234,8 +215,6 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
234
215
  private readonly _asyncValidationSubject;
235
216
  private _loadMoreObserver;
236
217
  private _virtualScrollListener;
237
- private _asyncLoadSubscription;
238
- private _asyncRequestId;
239
218
  private _asyncValidationAbortController;
240
219
  private _onChange;
241
220
  private _onTouched;
@@ -250,7 +229,9 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
250
229
  reset(): void;
251
230
  focus(): void;
252
231
  blur(): void;
232
+ /** @deprecated Use `valid()` for boolean form-submit checks. */
253
233
  validate(): boolean;
234
+ valid(): boolean;
254
235
  setErrorMessage(message: string | null): void;
255
236
  protected onTriggerKeydown(event: KeyboardEvent): void;
256
237
  protected onTriggerMousedown(): void;
@@ -269,23 +250,16 @@ declare class ZSelectComponent<T = unknown> implements OnInit, ControlValueAcces
269
250
  protected toggleSelectAllAction(): void;
270
251
  protected trackByValue: (_index: number, option: ZSelectOption<T>) => unknown;
271
252
  private _emitControl;
272
- private _loadAsyncOptionsOnFocus;
273
- private _loadAsyncOptions;
274
- private _handleAsyncOptionsError;
275
- private _getAsyncOptionsScrollTop;
276
- private _restoreAsyncOptionsScrollTop;
277
- private _resetAsyncOptions;
278
253
  private _setupLoadMoreObserver;
279
254
  private _cleanupLoadMoreObserver;
280
255
  private _setupVirtualScrollLoadMore;
281
256
  private _cleanupVirtualScrollListener;
282
- private _handleLoadMore;
283
257
  private _getValidationErrors;
284
258
  private _runAsyncValidation;
285
259
  private _cancelAsyncValidation;
286
260
  private _triggerAsyncValidation;
287
261
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZSelectComponent<any>, never>;
288
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZSelectComponent<any>, "z-select", ["zSelect"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zMode": { "alias": "zMode"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zLabel": { "alias": "zLabel"; "required": false; "isSignal": true; }; "zLabelClass": { "alias": "zLabelClass"; "required": false; "isSignal": true; }; "zPlaceholder": { "alias": "zPlaceholder"; "required": false; "isSignal": true; }; "zRequired": { "alias": "zRequired"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zReadonly": { "alias": "zReadonly"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zPrefix": { "alias": "zPrefix"; "required": false; "isSignal": true; }; "zAllowClear": { "alias": "zAllowClear"; "required": false; "isSignal": true; }; "zWrap": { "alias": "zWrap"; "required": false; "isSignal": true; }; "zShowSearch": { "alias": "zShowSearch"; "required": false; "isSignal": true; }; "zPlaceholderSearch": { "alias": "zPlaceholderSearch"; "required": false; "isSignal": true; }; "zDebounce": { "alias": "zDebounce"; "required": false; "isSignal": true; }; "zNotFoundText": { "alias": "zNotFoundText"; "required": false; "isSignal": true; }; "zEmptyText": { "alias": "zEmptyText"; "required": false; "isSignal": true; }; "zEmptyIcon": { "alias": "zEmptyIcon"; "required": false; "isSignal": true; }; "zMaxTagCount": { "alias": "zMaxTagCount"; "required": false; "isSignal": true; }; "zDropdownMaxHeight": { "alias": "zDropdownMaxHeight"; "required": false; "isSignal": true; }; "zOptionHeight": { "alias": "zOptionHeight"; "required": false; "isSignal": true; }; "zVirtualScroll": { "alias": "zVirtualScroll"; "required": false; "isSignal": true; }; "zShowAction": { "alias": "zShowAction"; "required": false; "isSignal": true; }; "zOptions": { "alias": "zOptions"; "required": false; "isSignal": true; }; "zConfig": { "alias": "zConfig"; "required": false; "isSignal": true; }; "zTranslateLabels": { "alias": "zTranslateLabels"; "required": false; "isSignal": true; }; "zKey": { "alias": "zKey"; "required": false; "isSignal": true; }; "zSearchServer": { "alias": "zSearchServer"; "required": false; "isSignal": true; }; "zLoadingMore": { "alias": "zLoadingMore"; "required": false; "isSignal": true; }; "zEnableLoadMore": { "alias": "zEnableLoadMore"; "required": false; "isSignal": true; }; "zScrollDistance": { "alias": "zScrollDistance"; "required": false; "isSignal": true; }; "zMaxVisible": { "alias": "zMaxVisible"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zSelectedTemplate": { "alias": "zSelectedTemplate"; "required": false; "isSignal": true; }; "zOptionTemplate": { "alias": "zOptionTemplate"; "required": false; "isSignal": true; }; "zActionTemplate": { "alias": "zActionTemplate"; "required": false; "isSignal": true; }; "zAsyncValidators": { "alias": "zAsyncValidators"; "required": false; "isSignal": true; }; "zAsyncDebounce": { "alias": "zAsyncDebounce"; "required": false; "isSignal": true; }; "zAsyncValidateOn": { "alias": "zAsyncValidateOn"; "required": false; "isSignal": true; }; "zValidators": { "alias": "zValidators"; "required": false; "isSignal": true; }; }, { "zOnSearch": "zOnSearch"; "zOnLoadMore": "zOnLoadMore"; "zOnBlur": "zOnBlur"; "zOnFocus": "zOnFocus"; "zControl": "zControl"; "zEvent": "zEvent"; }, ["customSelectedDirective", "customOptionDirective"], never, true, never>;
262
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZSelectComponent<any>, "z-select", ["zSelect"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zMode": { "alias": "zMode"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zLabel": { "alias": "zLabel"; "required": false; "isSignal": true; }; "zLabelClass": { "alias": "zLabelClass"; "required": false; "isSignal": true; }; "zPlaceholder": { "alias": "zPlaceholder"; "required": false; "isSignal": true; }; "zRequired": { "alias": "zRequired"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zReadonly": { "alias": "zReadonly"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zPrefix": { "alias": "zPrefix"; "required": false; "isSignal": true; }; "zAllowClear": { "alias": "zAllowClear"; "required": false; "isSignal": true; }; "zWrap": { "alias": "zWrap"; "required": false; "isSignal": true; }; "zShowSearch": { "alias": "zShowSearch"; "required": false; "isSignal": true; }; "zPlaceholderSearch": { "alias": "zPlaceholderSearch"; "required": false; "isSignal": true; }; "zDebounce": { "alias": "zDebounce"; "required": false; "isSignal": true; }; "zNotFoundText": { "alias": "zNotFoundText"; "required": false; "isSignal": true; }; "zEmptyText": { "alias": "zEmptyText"; "required": false; "isSignal": true; }; "zEmptyIcon": { "alias": "zEmptyIcon"; "required": false; "isSignal": true; }; "zMaxTagCount": { "alias": "zMaxTagCount"; "required": false; "isSignal": true; }; "zDropdownMaxHeight": { "alias": "zDropdownMaxHeight"; "required": false; "isSignal": true; }; "zOptionHeight": { "alias": "zOptionHeight"; "required": false; "isSignal": true; }; "zVirtualScroll": { "alias": "zVirtualScroll"; "required": false; "isSignal": true; }; "zShowAction": { "alias": "zShowAction"; "required": false; "isSignal": true; }; "zOptions": { "alias": "zOptions"; "required": false; "isSignal": true; }; "zTranslateLabels": { "alias": "zTranslateLabels"; "required": false; "isSignal": true; }; "zKey": { "alias": "zKey"; "required": false; "isSignal": true; }; "zSearchServer": { "alias": "zSearchServer"; "required": false; "isSignal": true; }; "zLoadingMore": { "alias": "zLoadingMore"; "required": false; "isSignal": true; }; "zEnableLoadMore": { "alias": "zEnableLoadMore"; "required": false; "isSignal": true; }; "zScrollDistance": { "alias": "zScrollDistance"; "required": false; "isSignal": true; }; "zMaxVisible": { "alias": "zMaxVisible"; "required": false; "isSignal": true; }; "zScrollClose": { "alias": "zScrollClose"; "required": false; "isSignal": true; }; "zPosition": { "alias": "zPosition"; "required": false; "isSignal": true; }; "zSelectedTemplate": { "alias": "zSelectedTemplate"; "required": false; "isSignal": true; }; "zOptionTemplate": { "alias": "zOptionTemplate"; "required": false; "isSignal": true; }; "zActionTemplate": { "alias": "zActionTemplate"; "required": false; "isSignal": true; }; "zAsyncValidators": { "alias": "zAsyncValidators"; "required": false; "isSignal": true; }; "zAsyncDebounce": { "alias": "zAsyncDebounce"; "required": false; "isSignal": true; }; "zAsyncValidateOn": { "alias": "zAsyncValidateOn"; "required": false; "isSignal": true; }; "zValidators": { "alias": "zValidators"; "required": false; "isSignal": true; }; }, { "zOnSearch": "zOnSearch"; "zOnLoadMore": "zOnLoadMore"; "zOnBlur": "zOnBlur"; "zOnFocus": "zOnFocus"; "zControl": "zControl"; "zEvent": "zEvent"; }, ["customSelectedDirective", "customOptionDirective"], never, true, never>;
289
263
  }
290
264
 
291
265
  declare class ZIsSelectedPipe implements PipeTransform {
@@ -329,5 +303,5 @@ declare function filterOptions<T>(options: {
329
303
  disabled?: boolean;
330
304
  }[];
331
305
 
332
- export { TAG_COLORS, ZIsSelectedPipe, ZOptionClassesPipe, ZSelectComponent, ZSelectOptionDirective, ZSelectSelectedDirective, ZTagClassesPipe, Z_SELECT_DEFAULT_CONFIG, filterOptions, getTagColor, zSelectOptionVariants, zSelectTagVariants, zSelectVariants };
333
- export type { ZSelectAsyncValidateOn, ZSelectAsyncValidator, ZSelectConfig, ZSelectControl, ZSelectLabelTemplate, ZSelectLoadMoreEvent, ZSelectMode, ZSelectOption, ZSelectOptionGroup, ZSelectOptionTemplate, ZSelectSize, ZSelectTagColor, ZSelectValidator };
306
+ export { TAG_COLORS, ZIsSelectedPipe, ZOptionClassesPipe, ZSelectComponent, ZSelectOptionDirective, ZSelectSelectedDirective, ZTagClassesPipe, filterOptions, getTagColor, zSelectOptionVariants, zSelectTagVariants, zSelectVariants };
307
+ export type { ZSelectAsyncValidateOn, ZSelectAsyncValidator, ZSelectControl, ZSelectLabelTemplate, ZSelectLoadMoreEvent, ZSelectMode, ZSelectOption, ZSelectOptionGroup, ZSelectOptionTemplate, ZSelectSize, ZSelectTagColor, ZSelectValidator };
@@ -34,6 +34,7 @@ declare class ZTabsComponent implements AfterViewInit, OnDestroy {
34
34
  readonly zSize: _angular_core.InputSignal<ZTabsSize>;
35
35
  readonly zOrientation: _angular_core.InputSignal<ZTabsOrientation>;
36
36
  readonly zLazy: _angular_core.InputSignal<boolean>;
37
+ readonly zDestroyInactive: _angular_core.InputSignal<boolean>;
37
38
  readonly zTabsOnly: _angular_core.InputSignal<boolean>;
38
39
  readonly zReloadable: _angular_core.InputSignal<boolean>;
39
40
  readonly activeTab: _angular_core.ModelSignal<string>;
@@ -41,6 +42,7 @@ declare class ZTabsComponent implements AfterViewInit, OnDestroy {
41
42
  protected readonly loadedTabs: _angular_core.WritableSignal<Set<string>>;
42
43
  protected readonly canScrollLeft: _angular_core.WritableSignal<boolean>;
43
44
  protected readonly canScrollRight: _angular_core.WritableSignal<boolean>;
45
+ protected readonly panelRenderStates: _angular_core.Signal<Map<string, boolean>>;
44
46
  private _resizeObserver?;
45
47
  constructor();
46
48
  ngAfterViewInit(): void;
@@ -49,7 +51,6 @@ declare class ZTabsComponent implements AfterViewInit, OnDestroy {
49
51
  protected getTabItemClasses(_tab: ZTab): string;
50
52
  protected selectTab(tab: ZTab, scrollToView?: boolean): void;
51
53
  protected isTabActive(tab: ZTab): boolean;
52
- protected shouldRenderPanel(tabValue: string): boolean;
53
54
  protected onTabKeydown(event: KeyboardEvent, currentIndex: number): void;
54
55
  protected checkScroll(): void;
55
56
  protected scrollLeft(): void;
@@ -58,7 +59,7 @@ declare class ZTabsComponent implements AfterViewInit, OnDestroy {
58
59
  private _setupResizeObserver;
59
60
  protected scrollToActiveDropdownItem(): void;
60
61
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTabsComponent, never>;
61
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZTabsComponent, "z-tabs", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zTabs": { "alias": "zTabs"; "required": true; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zOrientation": { "alias": "zOrientation"; "required": false; "isSignal": true; }; "zLazy": { "alias": "zLazy"; "required": false; "isSignal": true; }; "zTabsOnly": { "alias": "zTabsOnly"; "required": false; "isSignal": true; }; "zReloadable": { "alias": "zReloadable"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; "zTabChange": "zTabChange"; }, ["tabPanels"], never, true, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZTabsComponent, "z-tabs", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zTabs": { "alias": "zTabs"; "required": true; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zOrientation": { "alias": "zOrientation"; "required": false; "isSignal": true; }; "zLazy": { "alias": "zLazy"; "required": false; "isSignal": true; }; "zDestroyInactive": { "alias": "zDestroyInactive"; "required": false; "isSignal": true; }; "zTabsOnly": { "alias": "zTabsOnly"; "required": false; "isSignal": true; }; "zReloadable": { "alias": "zReloadable"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; "zTabChange": "zTabChange"; }, ["tabPanels"], never, true, never>;
62
63
  }
63
64
 
64
65
  declare const zTabsVariants: (props?: ({
@@ -28,6 +28,12 @@ interface ZUploadValidator {
28
28
  validate?: (files: ZUploadFile[]) => boolean;
29
29
  }
30
30
  interface ZUploadControl {
31
+ /** Trigger validation and return true if valid */
32
+ valid: () => boolean;
33
+ /**
34
+ * Trigger validation and return true if has error.
35
+ * @deprecated Use `valid()` for boolean form-submit checks.
36
+ */
31
37
  validate: () => boolean;
32
38
  reset: () => void;
33
39
  clearFiles: () => void;
@@ -106,7 +112,9 @@ declare class ZUploadComponent implements OnInit, ControlValueAccessor {
106
112
  updateProgress(fileId: string, progress: number): void;
107
113
  setFileStatus(fileId: string, status: ZUploadFile['status']): void;
108
114
  clearFiles(): void;
115
+ /** @deprecated Use `valid()` for boolean form-submit checks. */
109
116
  validate(): boolean;
117
+ valid(): boolean;
110
118
  reset(): void;
111
119
  markAsTouched(): void;
112
120
  markAsUntouched(): void;
@@ -83,51 +83,6 @@ declare const zMiniSearch$: <T>(data: T[], query: string, fields: (keyof T | str
83
83
  }) => Observable<T[]>;
84
84
  declare const zDetectBrowser: () => ZBrowserInfo;
85
85
 
86
- /** Thông tin truy vấn dùng cho autocomplete/select tự tải dữ liệu. */
87
- interface ZAsyncOptionsQuery {
88
- /** Từ khóa hiện tại người dùng đang nhập. */
89
- keyword: string;
90
- /** Trang cần tải, bắt đầu từ 1. */
91
- page: number;
92
- /** Số lượng option mong muốn trên mỗi trang. */
93
- pageSize: number;
94
- }
95
- /** Kết quả trả về từ hàm tải option bất đồng bộ. */
96
- interface ZAsyncOptionsResult<TOption> {
97
- /** Danh sách option của trang hiện tại. */
98
- items: TOption[];
99
- /** Tổng số option trên server, dùng để component tự tính còn trang tiếp theo hay không. */
100
- total?: number;
101
- /** Đặt trực tiếp còn dữ liệu hay không khi API không trả total. */
102
- hasMore?: boolean;
103
- }
104
- /** Kiểu dữ liệu hàm load có thể trả về: sync, Promise hoặc Observable. */
105
- type ZAsyncOptionsLoadResult<TOption> = ZAsyncOptionsResult<TOption> | Promise<ZAsyncOptionsResult<TOption>> | Observable<ZAsyncOptionsResult<TOption>>;
106
- /** Hàm tải option theo keyword/page/pageSize. */
107
- type ZAsyncOptionsLoadFn<TOption> = (query: ZAsyncOptionsQuery) => ZAsyncOptionsLoadResult<TOption>;
108
- /** Config giúp component tự xử lý search, phân trang, loading và chống trùng option. */
109
- interface ZAsyncOptionsConfig<TOption> {
110
- /** Hàm gọi API hoặc nguồn dữ liệu bất đồng bộ. */
111
- load: ZAsyncOptionsLoadFn<TOption>;
112
- /** Số item mỗi lần tải, mặc định 20. */
113
- pageSize?: number;
114
- /** Tự tải trang đầu khi dropdown mở/focus, kể cả keyword rỗng. */
115
- loadOnFocus?: boolean;
116
- /** Khóa chống trùng khi append trang mới, ví dụ: option => option.value.code. */
117
- dedupeBy?: (option: TOption) => unknown;
118
- }
119
-
120
- /** Số option mặc định mỗi lần component tự gọi load. */
121
- declare const Z_ASYNC_OPTIONS_DEFAULT_PAGE_SIZE = 20;
122
- /** Chuẩn hóa kết quả sync/Promise/Observable về Observable để component xử lý thống nhất. */
123
- declare function zToAsyncOptionsObservable<TOption>(result: ZAsyncOptionsLoadResult<TOption>): Observable<ZAsyncOptionsResult<TOption>>;
124
- /** Gộp option mới vào danh sách cũ và loại bỏ phần tử trùng theo dedupeBy/default key. */
125
- declare function zMergeAsyncOptions<TOption>(current: TOption[], next: TOption[], dedupeBy?: ZAsyncOptionsConfig<TOption>['dedupeBy']): TOption[];
126
- /** Tính còn dữ liệu để load-more dựa trên hasMore, total hoặc độ dài page vừa trả về. */
127
- declare function zResolveAsyncOptionsHasMore<TOption>(result: ZAsyncOptionsResult<TOption>, pageSize: number, loadedCount: number): boolean;
128
- /** Lấy khóa ổn định cho option, hỗ trợ value là object và vẫn cho phép truyền dedupeBy riêng. */
129
- declare function zGetAsyncOptionKey<TOption>(option: TOption, dedupeBy?: ZAsyncOptionsConfig<TOption>['dedupeBy']): unknown;
130
-
131
86
  interface ZEchartsThemeOptions {
132
87
  /** Theme name (default: 'zTheme') */
133
88
  themeName?: string;
@@ -197,5 +152,5 @@ interface ZFormDebugOptions {
197
152
  logLevel?: 'error' | 'warn' | 'log';
198
153
  }
199
154
 
200
- export { VIETNAMESE_MAP, Z_ASYNC_OPTIONS_DEFAULT_PAGE_SIZE, Z_DIVIDE_SCALE, Z_EXCEL_NUMBER_FORMAT_MAP, Z_LOCALE_MAP, zCapitalCase, zCleanObject, zConvertColorToArgb, zCreateEvent, zDebugFormInvalid, zDecodeUnicode, zDetectBrowser, zFormatNum, zFormatNumExcel, zGetAsyncOptionKey, zMergeAsyncOptions, zMergeClasses, zMiniSearch, zMiniSearch$, zNoop, zNormalize, zRandomColor, zRegisterEchartsTheme, zRemoveVietnamese, zResolveAsyncOptionsHasMore, zToAsyncOptionsObservable, zTransform, zTreeBuild, zTreeFlatten, zUuid, zValidForm };
201
- export type { ZAsyncOptionsConfig, ZAsyncOptionsLoadFn, ZAsyncOptionsLoadResult, ZAsyncOptionsQuery, ZAsyncOptionsResult, ZBlurEventData, ZBrowserInfo, ZBrowserName, ZCapitalizeType, ZChangeEventData, ZClickEventData, ZCopyEventData, ZCutEventData, ZDblclickEventData, ZDeviceType, ZDragenterEventData, ZDragleaveEventData, ZDragoverEventData, ZDropEventData, ZEchartsThemeOptions, ZEmptyCheck, ZEvent, ZEventType, ZFocusEventData, ZFormDebugOptions, ZFormSubmitResult, ZFormatNumExcelOptions, ZFormatNumOptions, ZInputEventData, ZKeydownEventData, ZKeypressEventData, ZKeyupEventData, ZMousedownEventData, ZMouseenterEventData, ZMouseleaveEventData, ZMouseoutEventData, ZMouseoverEventData, ZMouseupEventData, ZNavigatorUABrandVersion, ZNavigatorUAData, ZNumberDivide, ZPasteEventData, ZTouchendEventData, ZTouchmoveEventData, ZTouchstartEventData };
155
+ export { VIETNAMESE_MAP, Z_DIVIDE_SCALE, Z_EXCEL_NUMBER_FORMAT_MAP, Z_LOCALE_MAP, zCapitalCase, zCleanObject, zConvertColorToArgb, zCreateEvent, zDebugFormInvalid, zDecodeUnicode, zDetectBrowser, zFormatNum, zFormatNumExcel, zMergeClasses, zMiniSearch, zMiniSearch$, zNoop, zNormalize, zRandomColor, zRegisterEchartsTheme, zRemoveVietnamese, zTransform, zTreeBuild, zTreeFlatten, zUuid, zValidForm };
156
+ export type { ZBlurEventData, ZBrowserInfo, ZBrowserName, ZCapitalizeType, ZChangeEventData, ZClickEventData, ZCopyEventData, ZCutEventData, ZDblclickEventData, ZDeviceType, ZDragenterEventData, ZDragleaveEventData, ZDragoverEventData, ZDropEventData, ZEchartsThemeOptions, ZEmptyCheck, ZEvent, ZEventType, ZFocusEventData, ZFormDebugOptions, ZFormSubmitResult, ZFormatNumExcelOptions, ZFormatNumOptions, ZInputEventData, ZKeydownEventData, ZKeypressEventData, ZKeyupEventData, ZMousedownEventData, ZMouseenterEventData, ZMouseleaveEventData, ZMouseoutEventData, ZMouseoverEventData, ZMouseupEventData, ZNavigatorUABrandVersion, ZNavigatorUAData, ZNumberDivide, ZPasteEventData, ZTouchendEventData, ZTouchmoveEventData, ZTouchstartEventData };