@shival99/z-ui 1.9.13 → 1.9.15

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 (47) hide show
  1. package/fesm2022/shival99-z-ui-components-z-accordion.mjs +129 -12
  2. package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +142 -8
  4. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +65 -16
  6. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-chat.mjs +18 -7
  8. package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-filter.mjs +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +61 -0
  12. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -0
  13. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +13 -33
  14. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-switch.mjs +16 -6
  16. package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-table.mjs +291 -24
  18. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +27 -2
  20. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +5 -3
  22. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-providers.mjs +1 -0
  24. package/fesm2022/shival99-z-ui-providers.mjs.map +1 -1
  25. package/fesm2022/shival99-z-ui-services.mjs +371 -179
  26. package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
  27. package/fesm2022/shival99-z-ui-utils.mjs +6 -1
  28. package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
  29. package/package.json +5 -1
  30. package/types/shival99-z-ui-components-z-accordion.d.ts +22 -4
  31. package/types/shival99-z-ui-components-z-autocomplete.d.ts +34 -8
  32. package/types/shival99-z-ui-components-z-breadcrumb.d.ts +13 -3
  33. package/types/shival99-z-ui-components-z-calendar.d.ts +4 -4
  34. package/types/shival99-z-ui-components-z-chat.d.ts +1 -0
  35. package/types/shival99-z-ui-components-z-editor.d.ts +1 -1
  36. package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
  37. package/types/shival99-z-ui-components-z-popover.d.ts +1 -1
  38. package/types/shival99-z-ui-components-z-select.d.ts +1 -1
  39. package/types/shival99-z-ui-components-z-skeleton-auto.d.ts +35 -0
  40. package/types/shival99-z-ui-components-z-skeleton.d.ts +3 -7
  41. package/types/shival99-z-ui-components-z-switch.d.ts +7 -1
  42. package/types/shival99-z-ui-components-z-table.d.ts +65 -7
  43. package/types/shival99-z-ui-components-z-tabs.d.ts +3 -3
  44. package/types/shival99-z-ui-components-z-timeline.d.ts +7 -1
  45. package/types/shival99-z-ui-components-z-upload.d.ts +3 -3
  46. package/types/shival99-z-ui-services.d.ts +18 -1
  47. package/types/shival99-z-ui-utils.d.ts +2 -1
@@ -28,6 +28,11 @@ const Z_EXCEL_NUMBER_FORMAT_MAP = {
28
28
  };
29
29
 
30
30
  const zMergeClasses = (...inputs) => twMerge(clsx(inputs));
31
+ const zNormalize = (value) => value
32
+ .trim()
33
+ .toLowerCase()
34
+ .replace(/[^a-z0-9]+/g, '_')
35
+ .replace(/^_+|_+$/g, '');
31
36
  const zTransform = (value) => {
32
37
  if (typeof value === 'string') {
33
38
  return value === '';
@@ -604,5 +609,5 @@ function zCreateEvent(type, event) {
604
609
  * Generated bundle index. Do not edit.
605
610
  */
606
611
 
607
- 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, zRandomColor, zRegisterEchartsTheme, zRemoveVietnamese, zTransform, zTreeBuild, zTreeFlatten, zUuid, zValidForm };
612
+ 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 };
608
613
  //# sourceMappingURL=shival99-z-ui-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-utils.mjs","sources":["../../../../libs/core-ui/utils/types/z-common.types.ts","../../../../libs/core-ui/utils/z-common.utils.ts","../../../../libs/core-ui/utils/z-echarts.utils.ts","../../../../libs/core-ui/utils/z-form.utils.ts","../../../../libs/core-ui/utils/types/z-event.types.ts","../../../../libs/core-ui/utils/types/index.ts","../../../../libs/core-ui/utils/index.ts","../../../../libs/core-ui/utils/shival99-z-ui-utils.ts"],"sourcesContent":["export type ZBrowserName = 'Chrome' | 'Edge' | 'Firefox' | 'Safari' | 'Opera' | 'IE' | 'Unknown' | string;\n\nexport type ZDeviceType = 'mobile' | 'tablet' | 'desktop';\nexport interface ZBrowserInfo {\n name: ZBrowserName;\n version: string;\n agent: string;\n device: ZDeviceType;\n time: string;\n}\n\nexport interface ZNavigatorUABrandVersion {\n brand: string;\n version: string;\n}\n\nexport interface ZNavigatorUAData {\n brands: ZNavigatorUABrandVersion[];\n mobile: boolean;\n platform: string;\n}\n\nexport type ZNumberDivide = 'none' | 'thousand' | 'million' | 'billion';\nexport type ZEmptyCheck = 'strict' | 'includeZero';\n\nexport const Z_DIVIDE_SCALE: Record<ZNumberDivide, number> = {\n none: 1,\n thousand: 1_000,\n million: 1_000_000,\n billion: 1_000_000_000,\n};\n\nexport const Z_LOCALE_MAP: Record<string, string> = {\n vi: 'vi-VN',\n en: 'en-US',\n};\n\nexport interface ZFormatNumOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n locale?: string;\n placeholder?: string;\n}\n\nexport const Z_EXCEL_NUMBER_FORMAT_MAP: Record<string, string> = {\n '1.0-0': '#,##0',\n '1.0-1': '#,##0.0',\n '1.0-2': '#,##0.00',\n '1.0-3': '#,##0.000',\n '1.1-1': '#,##0.0',\n '1.1-2': '#,##0.00',\n '1.1-3': '#,##0.000',\n '1.2-2': '#,##0.00',\n};\n\nexport interface ZFormatNumExcelOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Navigator {\n userAgentData?: ZNavigatorUAData;\n }\n}\n\nexport type ZCapitalizeType = 'all' | 'sentence' | 'first';\n","import { isSignal, type WritableSignal } from '@angular/core';\nimport { type ClassValue, clsx } from 'clsx';\nimport type * as ExcelJS from 'exceljs';\nimport MiniSearch from 'minisearch';\nimport { delay, finalize, type Observable, of } from 'rxjs';\nimport { twMerge } from 'tailwind-merge';\nimport {\n type ZDeviceType,\n type ZBrowserInfo,\n type ZNavigatorUABrandVersion,\n type ZFormatNumOptions,\n type ZFormatNumExcelOptions,\n Z_DIVIDE_SCALE,\n Z_LOCALE_MAP,\n Z_EXCEL_NUMBER_FORMAT_MAP,\n type ZCapitalizeType,\n} from './types/z-common.types';\n\nexport const zMergeClasses = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n\nexport const zTransform = (value: boolean | string): boolean => {\n if (typeof value === 'string') {\n return value === '';\n }\n if (typeof value === 'number') {\n return value === 0;\n }\n return value;\n};\n\nexport const zUuid = (prefix = ''): string => {\n const id = crypto.randomUUID();\n return prefix ? `${prefix}-${id}` : id;\n};\n\nexport const zNoop = () => void 0;\n\nexport const zFormatNum = (value: unknown, options: ZFormatNumOptions = {}): string => {\n const {\n divide = 'none',\n format = '1.0-2',\n percent = false,\n emptyCheck = 'strict',\n locale = 'vi',\n placeholder = '-',\n } = options;\n\n if (value === null || value === undefined) {\n return placeholder;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return placeholder;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return placeholder;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n const matched = format.match(/1\\.(\\d)-(\\d)/);\n const minDigits = matched ? parseInt(matched[1], 10) : 0;\n const maxDigits = matched ? parseInt(matched[2], 10) : 2;\n\n const lang = document.documentElement.lang || locale;\n const formatted = new Intl.NumberFormat(Z_LOCALE_MAP[lang] || 'vi-VN', {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: maxDigits,\n }).format(scaledValue);\n\n return percent ? `${formatted}%` : formatted;\n};\n\nexport const zFormatNumExcel = (\n cell: ExcelJS.Cell | undefined,\n value: unknown,\n options: ZFormatNumExcelOptions = {}\n): number | undefined => {\n const { divide = 'none', format = '1.0-1', percent = false, emptyCheck = 'strict' } = options;\n if (value === null || value === undefined || value === '') {\n return undefined;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return undefined;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return undefined;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n let numFmt = Z_EXCEL_NUMBER_FORMAT_MAP[format] || '#,##0.0';\n\n if (percent) {\n numFmt = numFmt + '\"%\"';\n }\n\n if (cell) {\n cell.value = '\\u200B' + scaledValue;\n cell.numFmt = numFmt;\n }\n\n return scaledValue;\n};\n\nexport const zCapitalCase = (text: string, type: ZCapitalizeType = 'first'): string => {\n if (!text) {\n return '';\n }\n\n switch (type) {\n case 'all':\n return text.toUpperCase();\n\n case 'sentence':\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n\n case 'first':\n default:\n return text\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n};\n\nexport const zDecodeUnicode = (str: string): string => {\n if (!str) {\n return '';\n }\n\n str = str.replace(/\\\\\\\\u/g, '\\\\u');\n str = str.replace(/\\\\u([\\dA-Fa-f]{4})/g, (_, g1) => String.fromCharCode(parseInt(g1, 16)));\n str = str.replace(/(^|[^\\\\])u([\\dA-Fa-f]{4})/g, (_, p1, g1) => p1 + String.fromCharCode(parseInt(g1, 16)));\n\n return str.replace(/([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g, (_, high, low) => {\n const hi = high.charCodeAt(0);\n const lo = low.charCodeAt(0);\n const codePoint = (hi - 0xd800) * 0x400 + (lo - 0xdc00) + 0x10000;\n return String.fromCodePoint(codePoint);\n });\n};\n\nexport const zRandomColor = (): { hex: string; rgb: string; hsl: string } => {\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 40) + 60;\n const l = Math.floor(Math.random() * 20) + 60;\n const hsl = `hsl(${h}, ${s}%, ${l}%)`;\n\n const a = s / 100;\n const b = l / 100;\n const c = (1 - Math.abs(2 * b - 1)) * a;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = b - c / 2;\n\n const hueSegment = Math.floor(h / 60) % 6;\n const rgbMap: [number, number, number][] = [\n [c, x, 0],\n [x, c, 0],\n [0, c, x],\n [0, x, c],\n [x, 0, c],\n [c, 0, x],\n ];\n const [r, g, bl] = rgbMap[hueSegment];\n\n const R = Math.round((r + m) * 255);\n const G = Math.round((g + m) * 255);\n const B = Math.round((bl + m) * 255);\n\n const rgb = `rgb(${R}, ${G}, ${B})`;\n const toHex = (n: number) => n.toString(16).padStart(2, '0');\n const hex = `#${toHex(R)}${toHex(G)}${toHex(B)}`;\n\n return { hex, rgb, hsl };\n};\n\nexport const zConvertColorToArgb = (color: string): string => {\n if (color.startsWith('#')) {\n return 'FF' + color.substring(1).toUpperCase();\n }\n\n if (color.startsWith('rgb')) {\n const matches = color.match(/\\d+/g);\n if (matches && matches.length >= 3) {\n const r = parseInt(matches[0]).toString(16).padStart(2, '0');\n const g = parseInt(matches[1]).toString(16).padStart(2, '0');\n const b = parseInt(matches[2]).toString(16).padStart(2, '0');\n return `FF${r}${g}${b}`.toUpperCase();\n }\n }\n\n return 'FF000000';\n};\n\nexport const zCleanObject = <T = unknown>(obj: T): T => {\n if (obj !== Object(obj)) {\n return obj;\n }\n\n return Object.entries(obj as Record<string, unknown>).reduce(\n (acc, [key, value]) => {\n if (value === null || value === undefined) {\n return acc;\n }\n\n const cleaned = zCleanObject(value);\n if (\n cleaned !== null &&\n cleaned !== undefined &&\n (typeof cleaned !== 'object' || Object.keys(cleaned).length > 0)\n ) {\n (acc as Record<string, unknown>)[key] = cleaned;\n }\n\n return acc;\n },\n {} as Record<string, unknown>\n ) as T;\n};\n\nexport const zTreeFlatten = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const flatten = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.flatMap(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return [{ ...child, level, parentsKey }, ...flatten(keyVal, level + 1, newParents)];\n });\n };\n\n return flatten(null, 0, []);\n};\n\nexport const zTreeBuild = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const buildTree = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.map(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return {\n ...child,\n level,\n parentsKey,\n children: buildTree(keyVal, level + 1, newParents),\n };\n });\n };\n\n return buildTree(null, 0, []);\n};\n\nexport const VIETNAMESE_MAP: Record<string, string> = {\n à: 'a',\n á: 'a',\n ạ: 'a',\n ả: 'a',\n ã: 'a',\n â: 'a',\n ầ: 'a',\n ấ: 'a',\n ậ: 'a',\n ẩ: 'a',\n ẫ: 'a',\n ă: 'a',\n ằ: 'a',\n ắ: 'a',\n ặ: 'a',\n ẳ: 'a',\n ẵ: 'a',\n è: 'e',\n é: 'e',\n ẹ: 'e',\n ẻ: 'e',\n ẽ: 'e',\n ê: 'e',\n ề: 'e',\n ế: 'e',\n ệ: 'e',\n ể: 'e',\n ễ: 'e',\n ì: 'i',\n í: 'i',\n ị: 'i',\n ỉ: 'i',\n ĩ: 'i',\n ò: 'o',\n ó: 'o',\n ọ: 'o',\n ỏ: 'o',\n õ: 'o',\n ô: 'o',\n ồ: 'o',\n ố: 'o',\n ộ: 'o',\n ổ: 'o',\n ỗ: 'o',\n ơ: 'o',\n ờ: 'o',\n ớ: 'o',\n ợ: 'o',\n ở: 'o',\n ỡ: 'o',\n ù: 'u',\n ú: 'u',\n ụ: 'u',\n ủ: 'u',\n ũ: 'u',\n ư: 'u',\n ừ: 'u',\n ứ: 'u',\n ự: 'u',\n ử: 'u',\n ữ: 'u',\n ỳ: 'y',\n ý: 'y',\n ỵ: 'y',\n ỷ: 'y',\n ỹ: 'y',\n đ: 'd',\n À: 'A',\n Á: 'A',\n Ạ: 'A',\n Ả: 'A',\n Ã: 'A',\n Â: 'A',\n Ầ: 'A',\n Ấ: 'A',\n Ậ: 'A',\n Ẩ: 'A',\n Ẫ: 'A',\n Ă: 'A',\n Ằ: 'A',\n Ắ: 'A',\n Ặ: 'A',\n Ẳ: 'A',\n Ẵ: 'A',\n È: 'E',\n É: 'E',\n Ẹ: 'E',\n Ẻ: 'E',\n Ẽ: 'E',\n Ê: 'E',\n Ề: 'E',\n Ế: 'E',\n Ệ: 'E',\n Ể: 'E',\n Ễ: 'E',\n Ì: 'I',\n Í: 'I',\n Ị: 'I',\n Ỉ: 'I',\n Ĩ: 'I',\n Ò: 'O',\n Ó: 'O',\n Ọ: 'O',\n Ỏ: 'O',\n Õ: 'O',\n Ô: 'O',\n Ồ: 'O',\n Ố: 'O',\n Ộ: 'O',\n Ổ: 'O',\n Ỗ: 'O',\n Ơ: 'O',\n Ờ: 'O',\n Ớ: 'O',\n Ợ: 'O',\n Ở: 'O',\n Ỡ: 'O',\n Ù: 'U',\n Ú: 'U',\n Ụ: 'U',\n Ủ: 'U',\n Ũ: 'U',\n Ư: 'U',\n Ừ: 'U',\n Ứ: 'U',\n Ự: 'U',\n Ử: 'U',\n Ữ: 'U',\n Ỳ: 'Y',\n Ý: 'Y',\n Ỵ: 'Y',\n Ỷ: 'Y',\n Ỹ: 'Y',\n Đ: 'D',\n};\n\nexport const zRemoveVietnamese = (str: string): string =>\n str\n .split('')\n .map(char => VIETNAMESE_MAP[char] || char)\n .join('');\n\nconst getDeepValue = (obj: unknown, path: string): string => {\n try {\n const value = path.split('.').reduce((acc: unknown, key: string) => {\n if (acc && typeof acc === 'object' && key in acc) {\n return (acc as Record<string, unknown>)[key];\n }\n return '';\n }, obj);\n\n if (Array.isArray(value)) {\n return value.map(v => String(v)).join(' ');\n }\n\n return value as string;\n } catch {\n return '';\n }\n};\n\nexport const zMiniSearch = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n idField?: keyof T | string\n): T[] => {\n if (!query) {\n return data;\n }\n\n const fieldStrings = fields.map(f => String(f));\n const idFieldString = idField ? String(idField) : '_index';\n const useCustomId = !!idField;\n\n const flatData = data.map((item, index) => ({\n ...item,\n ...(!useCustomId && { _index: index }),\n ...Object.fromEntries(fieldStrings.map(field => [field, getDeepValue(item, field)])),\n }));\n\n const search = new MiniSearch({\n idField: idFieldString,\n fields: fieldStrings,\n storeFields: [idFieldString],\n tokenize: (text: string) =>\n zRemoveVietnamese(text.toLowerCase())\n .split(/[\\s@.\\-_]+/)\n .filter(Boolean),\n processTerm: (term: string) => zRemoveVietnamese(term.toLowerCase()),\n });\n\n search.addAll(flatData);\n const results = search.search(query, { prefix: true });\n\n if (useCustomId) {\n const resultIds = new Set(results.map(result => result.id));\n return data.filter(item => resultIds.has((item as Record<string, unknown>)[idFieldString]));\n }\n\n return results.map(result => data[(result as unknown as { _index: number })._index]);\n};\n\nexport const zMiniSearch$ = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n options?: {\n idField?: keyof T | string;\n loading?: WritableSignal<boolean>;\n fakeDelay?: number;\n }\n): Observable<T[]> => {\n const { idField, loading, fakeDelay = 200 } = options ?? {};\n\n if (loading && isSignal(loading)) {\n loading.set(true);\n }\n\n return of(zMiniSearch(data, query, fields, idField)).pipe(\n delay(fakeDelay),\n finalize(() => {\n if (loading && isSignal(loading)) {\n loading.set(false);\n }\n })\n );\n};\n\nconst _detectDevice = (ua: string): ZDeviceType => {\n if (/Mobi|Android.*Mobile|iPhone|iPod|BlackBerry|IEMobile/i.test(ua)) {\n return 'mobile';\n }\n if (/iPad|Android(?!.*Mobile)|Tablet/i.test(ua)) {\n return 'tablet';\n }\n return 'desktop';\n};\n\nexport const zDetectBrowser = (): ZBrowserInfo => {\n const ua = navigator.userAgent;\n const result: ZBrowserInfo = {\n name: 'Unknown',\n version: '',\n agent: ua,\n device: _detectDevice(ua),\n time: new Date().toISOString(),\n };\n\n if (!navigator.userAgentData) {\n return result;\n }\n\n const brands = navigator.userAgentData.brands || [];\n const isMobile = navigator.userAgentData.mobile;\n\n if (isMobile) {\n result.device = 'mobile';\n }\n\n const mainBrand = brands.find(\n (b: ZNavigatorUABrandVersion) => !['Chromium', 'Not_A Brand', 'Not A;Brand', 'Not/A)Brand'].includes(b.brand)\n );\n\n if (mainBrand) {\n result.name = mainBrand.brand.replace('Google ', '');\n result.version = mainBrand.version;\n return result;\n }\n\n const chromium = brands.find((b: ZNavigatorUABrandVersion) => b.brand === 'Chromium');\n if (chromium) {\n result.name = 'Chrome';\n result.version = chromium.version;\n }\n\n return result;\n};\n","import * as echarts from 'echarts';\nimport type { ZEchartsThemeOptions } from './types/z-echarts.types';\n\nconst Z_ECHARTS_DEFAULT_FONT = `'Lexend', 'Arial', 'Helvetica', 'sans-serif'`;\n\n/**\n * Register custom Z-UI theme for ECharts\n * @param options - Theme configuration options\n */\nexport function zRegisterEchartsTheme(options: ZEchartsThemeOptions = {}): void {\n const { themeName = 'zTheme', fontFamily = Z_ECHARTS_DEFAULT_FONT } = options;\n\n echarts.registerTheme(themeName, {\n textStyle: {\n fontFamily,\n color: '#333',\n },\n title: {\n textStyle: {\n fontFamily,\n fontWeight: '450',\n },\n },\n legend: {\n textStyle: {\n fontFamily,\n fontSize: 13,\n color: '#333',\n },\n },\n tooltip: {\n textStyle: {\n fontFamily,\n color: '#333',\n fontSize: 13,\n },\n },\n axisPointer: {\n lineStyle: { color: '#999' },\n crossStyle: { color: '#999' },\n },\n categoryAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { show: false },\n },\n valueAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { lineStyle: { color: '#eee' } },\n },\n });\n}\n","import { FormArray, FormGroup } from '@angular/forms';\n\n/**\n * Submit form and mark invalid controls as dirty (supports nested FormArray/FormGroup)\n * @param form - FormGroup or FormArray to submit\n * @returns true if form is valid, false otherwise\n */\nexport const zValidForm = (form: FormGroup | FormArray): boolean => {\n if (form.invalid) {\n markFormAsInvalid(form);\n return false;\n }\n\n return true;\n};\n\n/**\n * Recursively mark invalid controls as dirty (handles nested FormArray/FormGroup)\n */\nconst markFormAsInvalid = (form: FormGroup | FormArray): void => {\n Object.values(form.controls).forEach(control => {\n if (control instanceof FormArray) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control instanceof FormGroup) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control?.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n};\n\n/**\n * Debug invalid form controls by logging to console\n * @param form - FormGroup to debug\n * @param parentKey - Parent key for nested controls\n */\nexport const zDebugFormInvalid = (form: FormGroup, parentKey = ''): void => {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n const controlPath = parentKey ? `${parentKey}.${key}` : key;\n\n if (control instanceof FormGroup) {\n zDebugFormInvalid(control, controlPath);\n return;\n }\n\n if (control instanceof FormArray) {\n control.controls.forEach((ctrl, index) => {\n const arrayPath = `${controlPath}[${index}]`;\n\n if (ctrl instanceof FormGroup) {\n zDebugFormInvalid(ctrl, arrayPath);\n return;\n }\n\n if (ctrl?.invalid) {\n console.log(`❌ Field: ${arrayPath}`, ctrl.errors);\n }\n });\n return;\n }\n\n if (control?.invalid) {\n console.log(`❌ Field: ${controlPath}`, control.errors);\n }\n });\n};\n","/**\n * Unified event types for Z-UI form components\n * Allows components to emit native DOM events with type discrimination\n */\n\nexport type ZEventType =\n | 'focus'\n | 'blur'\n | 'keydown'\n | 'keyup'\n | 'keypress'\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mouseup'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseover'\n | 'mouseout'\n | 'touchstart'\n | 'touchend'\n | 'touchmove'\n | 'input'\n | 'change'\n | 'paste'\n | 'copy'\n | 'cut'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'drop';\n\ninterface ZEventBase<T extends ZEventType, E extends Event> {\n type: T;\n event: E;\n}\n\nexport type ZFocusEventData = ZEventBase<'focus', FocusEvent>;\nexport type ZBlurEventData = ZEventBase<'blur', FocusEvent>;\nexport type ZKeydownEventData = ZEventBase<'keydown', KeyboardEvent>;\nexport type ZKeyupEventData = ZEventBase<'keyup', KeyboardEvent>;\nexport type ZKeypressEventData = ZEventBase<'keypress', KeyboardEvent>;\nexport type ZClickEventData = ZEventBase<'click', MouseEvent>;\nexport type ZDblclickEventData = ZEventBase<'dblclick', MouseEvent>;\nexport type ZMousedownEventData = ZEventBase<'mousedown', MouseEvent>;\nexport type ZMouseupEventData = ZEventBase<'mouseup', MouseEvent>;\nexport type ZMouseenterEventData = ZEventBase<'mouseenter', MouseEvent>;\nexport type ZMouseleaveEventData = ZEventBase<'mouseleave', MouseEvent>;\nexport type ZMouseoverEventData = ZEventBase<'mouseover', MouseEvent>;\nexport type ZMouseoutEventData = ZEventBase<'mouseout', MouseEvent>;\nexport type ZTouchstartEventData = ZEventBase<'touchstart', TouchEvent>;\nexport type ZTouchendEventData = ZEventBase<'touchend', TouchEvent>;\nexport type ZTouchmoveEventData = ZEventBase<'touchmove', TouchEvent>;\nexport type ZInputEventData = ZEventBase<'input', InputEvent>;\nexport type ZChangeEventData = ZEventBase<'change', Event>;\nexport type ZPasteEventData = ZEventBase<'paste', ClipboardEvent>;\nexport type ZCopyEventData = ZEventBase<'copy', ClipboardEvent>;\nexport type ZCutEventData = ZEventBase<'cut', ClipboardEvent>;\nexport type ZDragenterEventData = ZEventBase<'dragenter', DragEvent>;\nexport type ZDragleaveEventData = ZEventBase<'dragleave', DragEvent>;\nexport type ZDragoverEventData = ZEventBase<'dragover', DragEvent>;\nexport type ZDropEventData = ZEventBase<'drop', DragEvent>;\n\nexport type ZEvent =\n | ZFocusEventData\n | ZBlurEventData\n | ZKeydownEventData\n | ZKeyupEventData\n | ZKeypressEventData\n | ZClickEventData\n | ZDblclickEventData\n | ZMousedownEventData\n | ZMouseupEventData\n | ZMouseenterEventData\n | ZMouseleaveEventData\n | ZMouseoverEventData\n | ZMouseoutEventData\n | ZTouchstartEventData\n | ZTouchendEventData\n | ZTouchmoveEventData\n | ZInputEventData\n | ZChangeEventData\n | ZPasteEventData\n | ZCopyEventData\n | ZCutEventData\n | ZDragenterEventData\n | ZDragleaveEventData\n | ZDragoverEventData\n | ZDropEventData;\n\nexport function zCreateEvent<T extends ZEventType>(type: T, event: Event): ZEvent {\n return { type, event } as ZEvent;\n}\n","/**\n * Utils types index\n */\n\nexport * from './z-common.types';\nexport * from './z-echarts.types';\nexport * from './z-event.types';\nexport * from './z-form.types';\n","/**\n * Utils index\n */\n\nexport * from './z-common.utils';\nexport * from './z-echarts.utils';\nexport * from './z-form.utils';\n\n// Export all types\nexport * from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAyBO,MAAM,cAAc,GAAkC;AAC3D,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,aAAa;;AAGjB,MAAM,YAAY,GAA2B;AAClD,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,OAAO;;AAYN,MAAM,yBAAyB,GAA2B;AAC/D,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,OAAO,EAAE,UAAU;;;ACpCd,MAAM,aAAa,GAAG,CAAC,GAAG,MAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAEvE,MAAM,UAAU,GAAG,CAAC,KAAuB,KAAa;AAC7D,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,KAAK,EAAE;IACrB;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,KAAK,CAAC;IACpB;AACA,IAAA,OAAO,KAAK;AACd;MAEa,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,KAAY;AAC3C,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;AAC9B,IAAA,OAAO,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,GAAG,EAAE;AACxC;MAEa,KAAK,GAAG,MAAM,KAAK;AAEzB,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,OAAA,GAA6B,EAAE,KAAY;IACpF,MAAM,EACJ,MAAM,GAAG,MAAM,EACf,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,IAAI,EACb,WAAW,GAAG,GAAG,GAClB,GAAG,OAAO;IAEX,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAE9B,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC1B,QAAA,OAAO,WAAW;IACpB;IAEA,IAAI,UAAU,KAAK,aAAa,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClD,QAAA,OAAO,WAAW;IACpB;IAEA,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AACxD,IAAA,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;IAExD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,MAAM;AACpD,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;AACrE,QAAA,qBAAqB,EAAE,SAAS;AAChC,QAAA,qBAAqB,EAAE,SAAS;AACjC,KAAA,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAEtB,OAAO,OAAO,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,CAAG,GAAG,SAAS;AAC9C;AAEO,MAAM,eAAe,GAAG,CAC7B,IAA8B,EAC9B,KAAc,EACd,OAAA,GAAkC,EAAE,KACd;AACtB,IAAA,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAE,GAAG,OAAO;AAC7F,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAE9B,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC1B,QAAA,OAAO,SAAS;IAClB;IAEA,IAAI,UAAU,KAAK,aAAa,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClD,QAAA,OAAO,SAAS;IAClB;IAEA,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IACrD,IAAI,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,IAAI,SAAS;IAE3D,IAAI,OAAO,EAAE;AACX,QAAA,MAAM,GAAG,MAAM,GAAG,KAAK;IACzB;IAEA,IAAI,IAAI,EAAE;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,WAAW;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;AAEA,IAAA,OAAO,WAAW;AACpB;AAEO,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAA,GAAwB,OAAO,KAAY;IACpF,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,EAAE;IACX;IAEA,QAAQ,IAAI;AACV,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAE3B,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAEnE,QAAA,KAAK,OAAO;AACZ,QAAA;AACE,YAAA,OAAO;AACJ,iBAAA,WAAW;iBACX,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxD,IAAI,CAAC,GAAG,CAAC;;AAElB;AAEO,MAAM,cAAc,GAAG,CAAC,GAAW,KAAY;IACpD,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,EAAE;IACX;IAEA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;IAClC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1F,IAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1G,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAI;QACzE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5B,QAAA,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,OAAO;AACjE,QAAA,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;AACxC,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,YAAY,GAAG,MAAgD;AAC1E,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AACzC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;AAC7C,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;IAC7C,MAAM,GAAG,GAAG,CAAA,IAAA,EAAO,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,EAAA,CAAI;AAErC,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG;AACjB,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG;AACjB,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAEnB,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AACzC,IAAA,MAAM,MAAM,GAA+B;AACzC,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACV;AACD,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACnC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACnC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;IAEpC,MAAM,GAAG,GAAG,CAAA,IAAA,EAAO,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAG;IACnC,MAAM,KAAK,GAAG,CAAC,CAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5D,IAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,EAAE;AAEhD,IAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC1B;AAEO,MAAM,mBAAmB,GAAG,CAAC,KAAa,KAAY;AAC3D,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACzB,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAChD;AAEA,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACnC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC5D,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC5D,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC5D,OAAO,CAAA,EAAA,EAAK,CAAC,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,WAAW,EAAE;QACvC;IACF;AAEA,IAAA,OAAO,UAAU;AACnB;AAEO,MAAM,YAAY,GAAG,CAAc,GAAM,KAAO;AACrD,IAAA,IAAI,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,CAAC,MAAM,CAC1D,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QACpB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,OAAO,GAAG;QACZ;AAEA,QAAA,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC;QACnC,IACE,OAAO,KAAK,IAAI;AAChB,YAAA,OAAO,KAAK,SAAS;AACrB,aAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAChE;AACC,YAAA,GAA+B,CAAC,GAAG,CAAC,GAAG,OAAO;QACjD;AAEA,QAAA,OAAO,GAAG;IACZ,CAAC,EACD,EAA6B,CACzB;AACR;AAEO,MAAM,YAAY,GAAG,CAC1B,IAAS,EACT,MAAe,EACf,YAAqB,EACrB,MAA+B,KACoB;AACnD,IAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IACzD,MAAM,QAAQ,GAAwB,EAAE;AAExC,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,MAAM,SAAS,GAAI,IAAI,CAAC,YAAY,CAAY,IAAI,MAAM;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACxB,YAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;QAC1B;QACA,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;IAEA,MAAM,OAAO,GAAG,CACd,SAAwB,EACxB,KAAa,EACb,UAAoB,KAC+B;QACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE;AACpD,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC;YAC1C,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;AACrF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7B;AAEO,MAAM,UAAU,GAAG,CACxB,IAAS,EACT,MAAe,EACf,YAAqB,EACrB,MAA+B,KACyC;AACxE,IAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IACzD,MAAM,QAAQ,GAAwB,EAAE;AAExC,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,MAAM,SAAS,GAAI,IAAI,CAAC,YAAY,CAAY,IAAI,MAAM;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACxB,YAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;QAC1B;QACA,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;IAEA,MAAM,SAAS,GAAG,CAChB,SAAwB,EACxB,KAAa,EACb,UAAoB,KACoD;QACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE;AACpD,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAG;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC;YAC1C,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,KAAK;gBACL,UAAU;gBACV,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC;aACnD;AACH,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/B;AAEO,MAAM,cAAc,GAA2B;AACpD,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAA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"}
1
+ {"version":3,"file":"shival99-z-ui-utils.mjs","sources":["../../../../libs/core-ui/utils/types/z-common.types.ts","../../../../libs/core-ui/utils/z-common.utils.ts","../../../../libs/core-ui/utils/z-echarts.utils.ts","../../../../libs/core-ui/utils/z-form.utils.ts","../../../../libs/core-ui/utils/types/z-event.types.ts","../../../../libs/core-ui/utils/types/index.ts","../../../../libs/core-ui/utils/index.ts","../../../../libs/core-ui/utils/shival99-z-ui-utils.ts"],"sourcesContent":["export type ZBrowserName = 'Chrome' | 'Edge' | 'Firefox' | 'Safari' | 'Opera' | 'IE' | 'Unknown' | string;\n\nexport type ZDeviceType = 'mobile' | 'tablet' | 'desktop';\nexport interface ZBrowserInfo {\n name: ZBrowserName;\n version: string;\n agent: string;\n device: ZDeviceType;\n time: string;\n}\n\nexport interface ZNavigatorUABrandVersion {\n brand: string;\n version: string;\n}\n\nexport interface ZNavigatorUAData {\n brands: ZNavigatorUABrandVersion[];\n mobile: boolean;\n platform: string;\n}\n\nexport type ZNumberDivide = 'none' | 'thousand' | 'million' | 'billion';\nexport type ZEmptyCheck = 'strict' | 'includeZero';\n\nexport const Z_DIVIDE_SCALE: Record<ZNumberDivide, number> = {\n none: 1,\n thousand: 1_000,\n million: 1_000_000,\n billion: 1_000_000_000,\n};\n\nexport const Z_LOCALE_MAP: Record<string, string> = {\n vi: 'vi-VN',\n en: 'en-US',\n};\n\nexport interface ZFormatNumOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n locale?: string;\n placeholder?: string;\n}\n\nexport const Z_EXCEL_NUMBER_FORMAT_MAP: Record<string, string> = {\n '1.0-0': '#,##0',\n '1.0-1': '#,##0.0',\n '1.0-2': '#,##0.00',\n '1.0-3': '#,##0.000',\n '1.1-1': '#,##0.0',\n '1.1-2': '#,##0.00',\n '1.1-3': '#,##0.000',\n '1.2-2': '#,##0.00',\n};\n\nexport interface ZFormatNumExcelOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Navigator {\n userAgentData?: ZNavigatorUAData;\n }\n}\n\nexport type ZCapitalizeType = 'all' | 'sentence' | 'first';\n","import { isSignal, type WritableSignal } from '@angular/core';\nimport { type ClassValue, clsx } from 'clsx';\nimport type * as ExcelJS from 'exceljs';\nimport MiniSearch from 'minisearch';\nimport { delay, finalize, type Observable, of } from 'rxjs';\nimport { twMerge } from 'tailwind-merge';\nimport {\n type ZDeviceType,\n type ZBrowserInfo,\n type ZNavigatorUABrandVersion,\n type ZFormatNumOptions,\n type ZFormatNumExcelOptions,\n Z_DIVIDE_SCALE,\n Z_LOCALE_MAP,\n Z_EXCEL_NUMBER_FORMAT_MAP,\n type ZCapitalizeType,\n} from './types/z-common.types';\n\nexport const zMergeClasses = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n\nexport const zNormalize = (value: string): string =>\n value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '');\n\nexport const zTransform = (value: boolean | string): boolean => {\n if (typeof value === 'string') {\n return value === '';\n }\n if (typeof value === 'number') {\n return value === 0;\n }\n return value;\n};\n\nexport const zUuid = (prefix = ''): string => {\n const id = crypto.randomUUID();\n return prefix ? `${prefix}-${id}` : id;\n};\n\nexport const zNoop = () => void 0;\n\nexport const zFormatNum = (value: unknown, options: ZFormatNumOptions = {}): string => {\n const {\n divide = 'none',\n format = '1.0-2',\n percent = false,\n emptyCheck = 'strict',\n locale = 'vi',\n placeholder = '-',\n } = options;\n\n if (value === null || value === undefined) {\n return placeholder;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return placeholder;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return placeholder;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n const matched = format.match(/1\\.(\\d)-(\\d)/);\n const minDigits = matched ? parseInt(matched[1], 10) : 0;\n const maxDigits = matched ? parseInt(matched[2], 10) : 2;\n\n const lang = document.documentElement.lang || locale;\n const formatted = new Intl.NumberFormat(Z_LOCALE_MAP[lang] || 'vi-VN', {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: maxDigits,\n }).format(scaledValue);\n\n return percent ? `${formatted}%` : formatted;\n};\n\nexport const zFormatNumExcel = (\n cell: ExcelJS.Cell | undefined,\n value: unknown,\n options: ZFormatNumExcelOptions = {}\n): number | undefined => {\n const { divide = 'none', format = '1.0-1', percent = false, emptyCheck = 'strict' } = options;\n if (value === null || value === undefined || value === '') {\n return undefined;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return undefined;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return undefined;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n let numFmt = Z_EXCEL_NUMBER_FORMAT_MAP[format] || '#,##0.0';\n\n if (percent) {\n numFmt = numFmt + '\"%\"';\n }\n\n if (cell) {\n cell.value = '\\u200B' + scaledValue;\n cell.numFmt = numFmt;\n }\n\n return scaledValue;\n};\n\nexport const zCapitalCase = (text: string, type: ZCapitalizeType = 'first'): string => {\n if (!text) {\n return '';\n }\n\n switch (type) {\n case 'all':\n return text.toUpperCase();\n\n case 'sentence':\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n\n case 'first':\n default:\n return text\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n};\n\nexport const zDecodeUnicode = (str: string): string => {\n if (!str) {\n return '';\n }\n\n str = str.replace(/\\\\\\\\u/g, '\\\\u');\n str = str.replace(/\\\\u([\\dA-Fa-f]{4})/g, (_, g1) => String.fromCharCode(parseInt(g1, 16)));\n str = str.replace(/(^|[^\\\\])u([\\dA-Fa-f]{4})/g, (_, p1, g1) => p1 + String.fromCharCode(parseInt(g1, 16)));\n\n return str.replace(/([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g, (_, high, low) => {\n const hi = high.charCodeAt(0);\n const lo = low.charCodeAt(0);\n const codePoint = (hi - 0xd800) * 0x400 + (lo - 0xdc00) + 0x10000;\n return String.fromCodePoint(codePoint);\n });\n};\n\nexport const zRandomColor = (): { hex: string; rgb: string; hsl: string } => {\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 40) + 60;\n const l = Math.floor(Math.random() * 20) + 60;\n const hsl = `hsl(${h}, ${s}%, ${l}%)`;\n\n const a = s / 100;\n const b = l / 100;\n const c = (1 - Math.abs(2 * b - 1)) * a;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = b - c / 2;\n\n const hueSegment = Math.floor(h / 60) % 6;\n const rgbMap: [number, number, number][] = [\n [c, x, 0],\n [x, c, 0],\n [0, c, x],\n [0, x, c],\n [x, 0, c],\n [c, 0, x],\n ];\n const [r, g, bl] = rgbMap[hueSegment];\n\n const R = Math.round((r + m) * 255);\n const G = Math.round((g + m) * 255);\n const B = Math.round((bl + m) * 255);\n\n const rgb = `rgb(${R}, ${G}, ${B})`;\n const toHex = (n: number) => n.toString(16).padStart(2, '0');\n const hex = `#${toHex(R)}${toHex(G)}${toHex(B)}`;\n\n return { hex, rgb, hsl };\n};\n\nexport const zConvertColorToArgb = (color: string): string => {\n if (color.startsWith('#')) {\n return 'FF' + color.substring(1).toUpperCase();\n }\n\n if (color.startsWith('rgb')) {\n const matches = color.match(/\\d+/g);\n if (matches && matches.length >= 3) {\n const r = parseInt(matches[0]).toString(16).padStart(2, '0');\n const g = parseInt(matches[1]).toString(16).padStart(2, '0');\n const b = parseInt(matches[2]).toString(16).padStart(2, '0');\n return `FF${r}${g}${b}`.toUpperCase();\n }\n }\n\n return 'FF000000';\n};\n\nexport const zCleanObject = <T = unknown>(obj: T): T => {\n if (obj !== Object(obj)) {\n return obj;\n }\n\n return Object.entries(obj as Record<string, unknown>).reduce(\n (acc, [key, value]) => {\n if (value === null || value === undefined) {\n return acc;\n }\n\n const cleaned = zCleanObject(value);\n if (\n cleaned !== null &&\n cleaned !== undefined &&\n (typeof cleaned !== 'object' || Object.keys(cleaned).length > 0)\n ) {\n (acc as Record<string, unknown>)[key] = cleaned;\n }\n\n return acc;\n },\n {} as Record<string, unknown>\n ) as T;\n};\n\nexport const zTreeFlatten = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const flatten = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.flatMap(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return [{ ...child, level, parentsKey }, ...flatten(keyVal, level + 1, newParents)];\n });\n };\n\n return flatten(null, 0, []);\n};\n\nexport const zTreeBuild = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const buildTree = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.map(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return {\n ...child,\n level,\n parentsKey,\n children: buildTree(keyVal, level + 1, newParents),\n };\n });\n };\n\n return buildTree(null, 0, []);\n};\n\nexport const VIETNAMESE_MAP: Record<string, string> = {\n à: 'a',\n á: 'a',\n ạ: 'a',\n ả: 'a',\n ã: 'a',\n â: 'a',\n ầ: 'a',\n ấ: 'a',\n ậ: 'a',\n ẩ: 'a',\n ẫ: 'a',\n ă: 'a',\n ằ: 'a',\n ắ: 'a',\n ặ: 'a',\n ẳ: 'a',\n ẵ: 'a',\n è: 'e',\n é: 'e',\n ẹ: 'e',\n ẻ: 'e',\n ẽ: 'e',\n ê: 'e',\n ề: 'e',\n ế: 'e',\n ệ: 'e',\n ể: 'e',\n ễ: 'e',\n ì: 'i',\n í: 'i',\n ị: 'i',\n ỉ: 'i',\n ĩ: 'i',\n ò: 'o',\n ó: 'o',\n ọ: 'o',\n ỏ: 'o',\n õ: 'o',\n ô: 'o',\n ồ: 'o',\n ố: 'o',\n ộ: 'o',\n ổ: 'o',\n ỗ: 'o',\n ơ: 'o',\n ờ: 'o',\n ớ: 'o',\n ợ: 'o',\n ở: 'o',\n ỡ: 'o',\n ù: 'u',\n ú: 'u',\n ụ: 'u',\n ủ: 'u',\n ũ: 'u',\n ư: 'u',\n ừ: 'u',\n ứ: 'u',\n ự: 'u',\n ử: 'u',\n ữ: 'u',\n ỳ: 'y',\n ý: 'y',\n ỵ: 'y',\n ỷ: 'y',\n ỹ: 'y',\n đ: 'd',\n À: 'A',\n Á: 'A',\n Ạ: 'A',\n Ả: 'A',\n Ã: 'A',\n Â: 'A',\n Ầ: 'A',\n Ấ: 'A',\n Ậ: 'A',\n Ẩ: 'A',\n Ẫ: 'A',\n Ă: 'A',\n Ằ: 'A',\n Ắ: 'A',\n Ặ: 'A',\n Ẳ: 'A',\n Ẵ: 'A',\n È: 'E',\n É: 'E',\n Ẹ: 'E',\n Ẻ: 'E',\n Ẽ: 'E',\n Ê: 'E',\n Ề: 'E',\n Ế: 'E',\n Ệ: 'E',\n Ể: 'E',\n Ễ: 'E',\n Ì: 'I',\n Í: 'I',\n Ị: 'I',\n Ỉ: 'I',\n Ĩ: 'I',\n Ò: 'O',\n Ó: 'O',\n Ọ: 'O',\n Ỏ: 'O',\n Õ: 'O',\n Ô: 'O',\n Ồ: 'O',\n Ố: 'O',\n Ộ: 'O',\n Ổ: 'O',\n Ỗ: 'O',\n Ơ: 'O',\n Ờ: 'O',\n Ớ: 'O',\n Ợ: 'O',\n Ở: 'O',\n Ỡ: 'O',\n Ù: 'U',\n Ú: 'U',\n Ụ: 'U',\n Ủ: 'U',\n Ũ: 'U',\n Ư: 'U',\n Ừ: 'U',\n Ứ: 'U',\n Ự: 'U',\n Ử: 'U',\n Ữ: 'U',\n Ỳ: 'Y',\n Ý: 'Y',\n Ỵ: 'Y',\n Ỷ: 'Y',\n Ỹ: 'Y',\n Đ: 'D',\n};\n\nexport const zRemoveVietnamese = (str: string): string =>\n str\n .split('')\n .map(char => VIETNAMESE_MAP[char] || char)\n .join('');\n\nconst getDeepValue = (obj: unknown, path: string): string => {\n try {\n const value = path.split('.').reduce((acc: unknown, key: string) => {\n if (acc && typeof acc === 'object' && key in acc) {\n return (acc as Record<string, unknown>)[key];\n }\n return '';\n }, obj);\n\n if (Array.isArray(value)) {\n return value.map(v => String(v)).join(' ');\n }\n\n return value as string;\n } catch {\n return '';\n }\n};\n\nexport const zMiniSearch = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n idField?: keyof T | string\n): T[] => {\n if (!query) {\n return data;\n }\n\n const fieldStrings = fields.map(f => String(f));\n const idFieldString = idField ? String(idField) : '_index';\n const useCustomId = !!idField;\n\n const flatData = data.map((item, index) => ({\n ...item,\n ...(!useCustomId && { _index: index }),\n ...Object.fromEntries(fieldStrings.map(field => [field, getDeepValue(item, field)])),\n }));\n\n const search = new MiniSearch({\n idField: idFieldString,\n fields: fieldStrings,\n storeFields: [idFieldString],\n tokenize: (text: string) =>\n zRemoveVietnamese(text.toLowerCase())\n .split(/[\\s@.\\-_]+/)\n .filter(Boolean),\n processTerm: (term: string) => zRemoveVietnamese(term.toLowerCase()),\n });\n\n search.addAll(flatData);\n const results = search.search(query, { prefix: true });\n\n if (useCustomId) {\n const resultIds = new Set(results.map(result => result.id));\n return data.filter(item => resultIds.has((item as Record<string, unknown>)[idFieldString]));\n }\n\n return results.map(result => data[(result as unknown as { _index: number })._index]);\n};\n\nexport const zMiniSearch$ = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n options?: {\n idField?: keyof T | string;\n loading?: WritableSignal<boolean>;\n fakeDelay?: number;\n }\n): Observable<T[]> => {\n const { idField, loading, fakeDelay = 200 } = options ?? {};\n\n if (loading && isSignal(loading)) {\n loading.set(true);\n }\n\n return of(zMiniSearch(data, query, fields, idField)).pipe(\n delay(fakeDelay),\n finalize(() => {\n if (loading && isSignal(loading)) {\n loading.set(false);\n }\n })\n );\n};\n\nconst _detectDevice = (ua: string): ZDeviceType => {\n if (/Mobi|Android.*Mobile|iPhone|iPod|BlackBerry|IEMobile/i.test(ua)) {\n return 'mobile';\n }\n if (/iPad|Android(?!.*Mobile)|Tablet/i.test(ua)) {\n return 'tablet';\n }\n return 'desktop';\n};\n\nexport const zDetectBrowser = (): ZBrowserInfo => {\n const ua = navigator.userAgent;\n const result: ZBrowserInfo = {\n name: 'Unknown',\n version: '',\n agent: ua,\n device: _detectDevice(ua),\n time: new Date().toISOString(),\n };\n\n if (!navigator.userAgentData) {\n return result;\n }\n\n const brands = navigator.userAgentData.brands || [];\n const isMobile = navigator.userAgentData.mobile;\n\n if (isMobile) {\n result.device = 'mobile';\n }\n\n const mainBrand = brands.find(\n (b: ZNavigatorUABrandVersion) => !['Chromium', 'Not_A Brand', 'Not A;Brand', 'Not/A)Brand'].includes(b.brand)\n );\n\n if (mainBrand) {\n result.name = mainBrand.brand.replace('Google ', '');\n result.version = mainBrand.version;\n return result;\n }\n\n const chromium = brands.find((b: ZNavigatorUABrandVersion) => b.brand === 'Chromium');\n if (chromium) {\n result.name = 'Chrome';\n result.version = chromium.version;\n }\n\n return result;\n};\n","import * as echarts from 'echarts';\nimport type { ZEchartsThemeOptions } from './types/z-echarts.types';\n\nconst Z_ECHARTS_DEFAULT_FONT = `'Lexend', 'Arial', 'Helvetica', 'sans-serif'`;\n\n/**\n * Register custom Z-UI theme for ECharts\n * @param options - Theme configuration options\n */\nexport function zRegisterEchartsTheme(options: ZEchartsThemeOptions = {}): void {\n const { themeName = 'zTheme', fontFamily = Z_ECHARTS_DEFAULT_FONT } = options;\n\n echarts.registerTheme(themeName, {\n textStyle: {\n fontFamily,\n color: '#333',\n },\n title: {\n textStyle: {\n fontFamily,\n fontWeight: '450',\n },\n },\n legend: {\n textStyle: {\n fontFamily,\n fontSize: 13,\n color: '#333',\n },\n },\n tooltip: {\n textStyle: {\n fontFamily,\n color: '#333',\n fontSize: 13,\n },\n },\n axisPointer: {\n lineStyle: { color: '#999' },\n crossStyle: { color: '#999' },\n },\n categoryAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { show: false },\n },\n valueAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { lineStyle: { color: '#eee' } },\n },\n });\n}\n","import { FormArray, FormGroup } from '@angular/forms';\n\n/**\n * Submit form and mark invalid controls as dirty (supports nested FormArray/FormGroup)\n * @param form - FormGroup or FormArray to submit\n * @returns true if form is valid, false otherwise\n */\nexport const zValidForm = (form: FormGroup | FormArray): boolean => {\n if (form.invalid) {\n markFormAsInvalid(form);\n return false;\n }\n\n return true;\n};\n\n/**\n * Recursively mark invalid controls as dirty (handles nested FormArray/FormGroup)\n */\nconst markFormAsInvalid = (form: FormGroup | FormArray): void => {\n Object.values(form.controls).forEach(control => {\n if (control instanceof FormArray) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control instanceof FormGroup) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control?.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n};\n\n/**\n * Debug invalid form controls by logging to console\n * @param form - FormGroup to debug\n * @param parentKey - Parent key for nested controls\n */\nexport const zDebugFormInvalid = (form: FormGroup, parentKey = ''): void => {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n const controlPath = parentKey ? `${parentKey}.${key}` : key;\n\n if (control instanceof FormGroup) {\n zDebugFormInvalid(control, controlPath);\n return;\n }\n\n if (control instanceof FormArray) {\n control.controls.forEach((ctrl, index) => {\n const arrayPath = `${controlPath}[${index}]`;\n\n if (ctrl instanceof FormGroup) {\n zDebugFormInvalid(ctrl, arrayPath);\n return;\n }\n\n if (ctrl?.invalid) {\n console.log(`❌ Field: ${arrayPath}`, ctrl.errors);\n }\n });\n return;\n }\n\n if (control?.invalid) {\n console.log(`❌ Field: ${controlPath}`, control.errors);\n }\n });\n};\n","/**\n * Unified event types for Z-UI form components\n * Allows components to emit native DOM events with type discrimination\n */\n\nexport type ZEventType =\n | 'focus'\n | 'blur'\n | 'keydown'\n | 'keyup'\n | 'keypress'\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mouseup'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseover'\n | 'mouseout'\n | 'touchstart'\n | 'touchend'\n | 'touchmove'\n | 'input'\n | 'change'\n | 'paste'\n | 'copy'\n | 'cut'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'drop';\n\ninterface ZEventBase<T extends ZEventType, E extends Event> {\n type: T;\n event: E;\n}\n\nexport type ZFocusEventData = ZEventBase<'focus', FocusEvent>;\nexport type ZBlurEventData = ZEventBase<'blur', FocusEvent>;\nexport type ZKeydownEventData = ZEventBase<'keydown', KeyboardEvent>;\nexport type ZKeyupEventData = ZEventBase<'keyup', KeyboardEvent>;\nexport type ZKeypressEventData = ZEventBase<'keypress', KeyboardEvent>;\nexport type ZClickEventData = ZEventBase<'click', MouseEvent>;\nexport type ZDblclickEventData = ZEventBase<'dblclick', MouseEvent>;\nexport type ZMousedownEventData = ZEventBase<'mousedown', MouseEvent>;\nexport type ZMouseupEventData = ZEventBase<'mouseup', MouseEvent>;\nexport type ZMouseenterEventData = ZEventBase<'mouseenter', MouseEvent>;\nexport type ZMouseleaveEventData = ZEventBase<'mouseleave', MouseEvent>;\nexport type ZMouseoverEventData = ZEventBase<'mouseover', MouseEvent>;\nexport type ZMouseoutEventData = ZEventBase<'mouseout', MouseEvent>;\nexport type ZTouchstartEventData = ZEventBase<'touchstart', TouchEvent>;\nexport type ZTouchendEventData = ZEventBase<'touchend', TouchEvent>;\nexport type ZTouchmoveEventData = ZEventBase<'touchmove', TouchEvent>;\nexport type ZInputEventData = ZEventBase<'input', InputEvent>;\nexport type ZChangeEventData = ZEventBase<'change', Event>;\nexport type ZPasteEventData = ZEventBase<'paste', ClipboardEvent>;\nexport type ZCopyEventData = ZEventBase<'copy', ClipboardEvent>;\nexport type ZCutEventData = ZEventBase<'cut', ClipboardEvent>;\nexport type ZDragenterEventData = ZEventBase<'dragenter', DragEvent>;\nexport type ZDragleaveEventData = ZEventBase<'dragleave', DragEvent>;\nexport type ZDragoverEventData = ZEventBase<'dragover', DragEvent>;\nexport type ZDropEventData = ZEventBase<'drop', DragEvent>;\n\nexport type ZEvent =\n | ZFocusEventData\n | ZBlurEventData\n | ZKeydownEventData\n | ZKeyupEventData\n | ZKeypressEventData\n | ZClickEventData\n | ZDblclickEventData\n | ZMousedownEventData\n | ZMouseupEventData\n | ZMouseenterEventData\n | ZMouseleaveEventData\n | ZMouseoverEventData\n | ZMouseoutEventData\n | ZTouchstartEventData\n | ZTouchendEventData\n | ZTouchmoveEventData\n | ZInputEventData\n | ZChangeEventData\n | ZPasteEventData\n | ZCopyEventData\n | ZCutEventData\n | ZDragenterEventData\n | ZDragleaveEventData\n | ZDragoverEventData\n | ZDropEventData;\n\nexport function zCreateEvent<T extends ZEventType>(type: T, event: Event): ZEvent {\n return { type, event } as ZEvent;\n}\n","/**\n * Utils types index\n */\n\nexport * from './z-common.types';\nexport * from './z-echarts.types';\nexport * from './z-event.types';\nexport * from './z-form.types';\n","/**\n * Utils index\n */\n\nexport * from './z-common.utils';\nexport * from './z-echarts.utils';\nexport * from './z-form.utils';\n\n// Export all types\nexport * from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shival99/z-ui",
3
- "version": "1.9.13",
3
+ "version": "1.9.15",
4
4
  "description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 20+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.",
5
5
  "keywords": [
6
6
  "angular",
@@ -221,6 +221,10 @@
221
221
  "types": "./types/shival99-z-ui-components-z-skeleton.d.ts",
222
222
  "default": "./fesm2022/shival99-z-ui-components-z-skeleton.mjs"
223
223
  },
224
+ "./components/z-skeleton-auto": {
225
+ "types": "./types/shival99-z-ui-components-z-skeleton-auto.d.ts",
226
+ "default": "./fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs"
227
+ },
224
228
  "./components/z-steps": {
225
229
  "types": "./types/shival99-z-ui-components-z-steps.d.ts",
226
230
  "default": "./fesm2022/shival99-z-ui-components-z-steps.mjs"
@@ -10,8 +10,14 @@ declare class ZAccordionItemComponent {
10
10
  readonly zTitle: _angular_core.InputSignal<string>;
11
11
  readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
12
12
  protected readonly isOpen: _angular_core.Signal<boolean>;
13
+ protected readonly accordionType: _angular_core.InputSignal<"default" | "ghost" | "outline" | "card" | "elevated" | "icon-list" | "bordered" | "separated" | null | undefined>;
13
14
  protected readonly itemClasses: _angular_core.Signal<string>;
14
15
  protected readonly triggerClasses: _angular_core.Signal<string>;
16
+ protected readonly contentClasses: _angular_core.Signal<string>;
17
+ protected readonly contentInnerClasses: _angular_core.Signal<"pt-0 pb-4" | "px-4 pt-0 pb-4" | "px-4 pt-0 pb-4 pl-12 text-muted-foreground" | "px-5 pt-0 pb-4 text-muted-foreground" | "mt-2 px-4 pb-4">;
18
+ protected readonly iconType: _angular_core.Signal<"lucideMinus" | "lucidePlus" | "lucideChevronDown">;
19
+ protected readonly iconClasses: _angular_core.Signal<string>;
20
+ protected readonly titleWrapperClasses: _angular_core.Signal<"flex items-center gap-4" | "flex items-center gap-2">;
15
21
  protected toggle(): void;
16
22
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZAccordionItemComponent, never>;
17
23
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZAccordionItemComponent, "z-accordion-item", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zId": { "alias": "zId"; "required": true; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": true; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; }, {}, never, ["[zAccordionIcon]", "*"], true, never>;
@@ -19,7 +25,7 @@ declare class ZAccordionItemComponent {
19
25
 
20
26
  declare class ZAccordionComponent {
21
27
  readonly class: _angular_core.InputSignal<ClassValue>;
22
- readonly zType: _angular_core.InputSignal<"default" | "ghost" | "outline" | null | undefined>;
28
+ readonly zType: _angular_core.InputSignal<"default" | "ghost" | "outline" | "card" | "elevated" | "icon-list" | "bordered" | "separated" | null | undefined>;
23
29
  readonly zMultiple: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
24
30
  readonly zCollapsible: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
25
31
  protected readonly items: _angular_core.Signal<readonly ZAccordionItemComponent[]>;
@@ -35,13 +41,25 @@ declare class ZAccordionComponent {
35
41
  }
36
42
 
37
43
  declare const zAccordionVariants: (props?: ({
38
- zType?: "default" | "ghost" | "outline" | null | undefined;
44
+ zType?: "default" | "ghost" | "outline" | "card" | "elevated" | "icon-list" | "bordered" | "separated" | null | undefined;
39
45
  } & class_variance_authority_types.ClassProp) | undefined) => string;
40
46
  declare const zAccordionItemVariants: (props?: ({
47
+ zType?: "default" | "ghost" | "outline" | "card" | "elevated" | "icon-list" | "bordered" | "separated" | null | undefined;
41
48
  isDisabled?: boolean | null | undefined;
49
+ isOpen?: boolean | null | undefined;
50
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
51
+ declare const zAccordionTriggerVariants: (props?: ({
52
+ zType?: "default" | "ghost" | "outline" | "card" | "elevated" | "icon-list" | "bordered" | "separated" | null | undefined;
53
+ isOpen?: boolean | null | undefined;
54
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
55
+ declare const zAccordionContentVariants: (props?: ({
56
+ zType?: "default" | "ghost" | "outline" | "card" | "elevated" | "icon-list" | "bordered" | "separated" | null | undefined;
57
+ isOpen?: boolean | null | undefined;
42
58
  } & class_variance_authority_types.ClassProp) | undefined) => string;
43
59
  type ZAccordionVariants = VariantProps<typeof zAccordionVariants>;
44
60
  type ZAccordionItemVariants = VariantProps<typeof zAccordionItemVariants>;
61
+ type ZAccordionTriggerVariants = VariantProps<typeof zAccordionTriggerVariants>;
62
+ type ZAccordionContentVariants = VariantProps<typeof zAccordionContentVariants>;
45
63
 
46
64
  interface ZAccordionItem {
47
65
  id: string;
@@ -51,5 +69,5 @@ interface ZAccordionItem {
51
69
  icon?: string;
52
70
  }
53
71
 
54
- export { ZAccordionComponent, ZAccordionItemComponent, zAccordionItemVariants, zAccordionVariants };
55
- export type { ZAccordionItem, ZAccordionItemVariants, ZAccordionVariants };
72
+ export { ZAccordionComponent, ZAccordionItemComponent, zAccordionContentVariants, zAccordionItemVariants, zAccordionTriggerVariants, zAccordionVariants };
73
+ export type { ZAccordionContentVariants, ZAccordionItem, ZAccordionItemVariants, ZAccordionTriggerVariants, ZAccordionVariants };
@@ -9,6 +9,12 @@ import { ClassValue } from 'clsx';
9
9
  import * as class_variance_authority_types from 'class-variance-authority/types';
10
10
  import { VariantProps } from 'class-variance-authority';
11
11
 
12
+ declare class ZAutocompleteOptionDirective<T = unknown> {
13
+ readonly templateRef: TemplateRef<any>;
14
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZAutocompleteOptionDirective<any>, never>;
15
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZAutocompleteOptionDirective<any>, "[z-autocomplete-option], [zAutocompleteOption]", never, {}, {}, never, never, true, never>;
16
+ }
17
+
12
18
  interface ZAutocompleteOption<T = unknown> {
13
19
  label: string;
14
20
  value: T;
@@ -44,6 +50,14 @@ interface ZAutocompleteCommitEvent {
44
50
  value: string;
45
51
  source: 'enter' | 'blur';
46
52
  }
53
+ interface ZAutocompleteLoadMoreEvent {
54
+ currentCount: number;
55
+ scrollTop: number;
56
+ }
57
+ interface ZAutocompleteOptionContext<T = unknown> {
58
+ $implicit: ZAutocompleteOption<T>;
59
+ active: boolean;
60
+ }
47
61
  interface ZAutocompleteControl<T = unknown> {
48
62
  focus: () => void;
49
63
  blur: () => void;
@@ -60,10 +74,7 @@ interface ZAutocompleteControl<T = unknown> {
60
74
  */
61
75
  state: Signal<ZAutocompleteState>;
62
76
  }
63
- type ZAutocompleteOptionTemplate<T = unknown> = TemplateRef<{
64
- $implicit: ZAutocompleteOption<T>;
65
- active: boolean;
66
- }>;
77
+ type ZAutocompleteOptionTemplate<T = unknown> = TemplateRef<ZAutocompleteOptionContext<T>>;
67
78
 
68
79
  declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValueAccessor {
69
80
  private readonly _injector;
@@ -74,7 +85,9 @@ declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValu
74
85
  protected readonly dropdownTpl: _angular_core.Signal<TemplateRef<unknown> | undefined>;
75
86
  protected readonly virtualScrollRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
76
87
  protected readonly optionsContainerRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
88
+ protected readonly loadMoreSentinelRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
77
89
  protected readonly virtualOptionElements: _angular_core.Signal<readonly ElementRef<HTMLDivElement>[]>;
90
+ protected readonly customOptionDirective: _angular_core.Signal<ZAutocompleteOptionDirective<any> | undefined>;
78
91
  readonly class: _angular_core.InputSignal<ClassValue>;
79
92
  readonly zOptions: _angular_core.InputSignal<ZAutocompleteOption<T>[]>;
80
93
  readonly zConfig: _angular_core.InputSignal<Partial<ZAutocompleteConfig>>;
@@ -102,8 +115,12 @@ declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValu
102
115
  readonly zNoDataIcon: _angular_core.InputSignal<ZIcon>;
103
116
  readonly zAllowCustomValue: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
104
117
  readonly zDebounceTime: _angular_core.InputSignal<number>;
118
+ readonly zLoadingMore: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
119
+ readonly zEnableLoadMore: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
120
+ readonly zScrollDistance: _angular_core.InputSignal<number>;
105
121
  readonly zOptionTemplate: _angular_core.InputSignal<ZAutocompleteOptionTemplate<T> | null>;
106
122
  readonly zOnSearch: _angular_core.OutputEmitterRef<string>;
123
+ readonly zOnLoadMore: _angular_core.OutputEmitterRef<ZAutocompleteLoadMoreEvent>;
107
124
  readonly zOnSelect: _angular_core.OutputEmitterRef<ZAutocompleteOption<T>>;
108
125
  readonly zOnEnter: _angular_core.OutputEmitterRef<string>;
109
126
  readonly zOnCommit: _angular_core.OutputEmitterRef<ZAutocompleteCommitEvent>;
@@ -133,6 +150,9 @@ declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValu
133
150
  protected readonly dropdownWidth: _angular_core.WritableSignal<number>;
134
151
  private readonly _pendingSearch;
135
152
  private _localLoadingTimeout;
153
+ private _loadMoreObserver;
154
+ private _virtualScrollListener;
155
+ private _lastFilteredOptionsLength;
136
156
  /** Stores input value before keyboard navigation for ESC revert */
137
157
  private _valueBeforeNavigation;
138
158
  protected readonly virtualizer: _shival99_angular_virtual.AngularVirtualizer<HTMLDivElement, Element>;
@@ -146,6 +166,8 @@ declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValu
146
166
  protected readonly effectiveEmptyText: _angular_core.Signal<string>;
147
167
  protected readonly effectiveNoDataText: _angular_core.Signal<string>;
148
168
  protected readonly effectiveDebounceTime: _angular_core.Signal<number>;
169
+ protected readonly effectiveOptionTemplate: _angular_core.Signal<TemplateRef<any> | null>;
170
+ protected readonly hasCustomOptionTemplate: _angular_core.Signal<boolean>;
149
171
  protected readonly highlightQuery: _angular_core.Signal<string>;
150
172
  /**
151
173
  * Local-mode loading state after debounce to avoid quick flicker.
@@ -198,14 +220,18 @@ declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValu
198
220
  private _closePanel;
199
221
  private _setupDebounce;
200
222
  private _clearLocalLoadingTimer;
223
+ private _setupLoadMoreObserver;
224
+ private _cleanupLoadMoreObserver;
225
+ private _setupVirtualScrollLoadMore;
226
+ private _cleanupVirtualScrollListener;
201
227
  private _emitControl;
202
228
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZAutocompleteComponent<any>, never>;
203
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZAutocompleteComponent<any>, "z-autocomplete", ["zAutocomplete"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zOptions": { "alias": "zOptions"; "required": false; "isSignal": true; }; "zConfig": { "alias": "zConfig"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "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; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zReadonly": { "alias": "zReadonly"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zRequired": { "alias": "zRequired"; "required": false; "isSignal": true; }; "zPrefix": { "alias": "zPrefix"; "required": false; "isSignal": true; }; "zSuffix": { "alias": "zSuffix"; "required": false; "isSignal": true; }; "zAllowClear": { "alias": "zAllowClear"; "required": false; "isSignal": true; }; "zVirtualScroll": { "alias": "zVirtualScroll"; "required": false; "isSignal": true; }; "zDynamicSize": { "alias": "zDynamicSize"; "required": false; "isSignal": true; }; "zOptionHeight": { "alias": "zOptionHeight"; "required": false; "isSignal": true; }; "zHeightExpand": { "alias": "zHeightExpand"; "required": false; "isSignal": true; }; "zMaxVisible": { "alias": "zMaxVisible"; "required": false; "isSignal": true; }; "zResetOnSelect": { "alias": "zResetOnSelect"; "required": false; "isSignal": true; }; "zEmptyText": { "alias": "zEmptyText"; "required": false; "isSignal": true; }; "zEmptyIcon": { "alias": "zEmptyIcon"; "required": false; "isSignal": true; }; "zNoDataText": { "alias": "zNoDataText"; "required": false; "isSignal": true; }; "zNoDataIcon": { "alias": "zNoDataIcon"; "required": false; "isSignal": true; }; "zAllowCustomValue": { "alias": "zAllowCustomValue"; "required": false; "isSignal": true; }; "zDebounceTime": { "alias": "zDebounceTime"; "required": false; "isSignal": true; }; "zOptionTemplate": { "alias": "zOptionTemplate"; "required": false; "isSignal": true; }; }, { "zOnSearch": "zOnSearch"; "zOnSelect": "zOnSelect"; "zOnEnter": "zOnEnter"; "zOnCommit": "zOnCommit"; "zValueChange": "zValueChange"; "zOnBlur": "zOnBlur"; "zOnFocus": "zOnFocus"; "zControl": "zControl"; "zEvent": "zEvent"; }, never, never, true, never>;
229
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZAutocompleteComponent<any>, "z-autocomplete", ["zAutocomplete"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zOptions": { "alias": "zOptions"; "required": false; "isSignal": true; }; "zConfig": { "alias": "zConfig"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "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; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zReadonly": { "alias": "zReadonly"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zRequired": { "alias": "zRequired"; "required": false; "isSignal": true; }; "zPrefix": { "alias": "zPrefix"; "required": false; "isSignal": true; }; "zSuffix": { "alias": "zSuffix"; "required": false; "isSignal": true; }; "zAllowClear": { "alias": "zAllowClear"; "required": false; "isSignal": true; }; "zVirtualScroll": { "alias": "zVirtualScroll"; "required": false; "isSignal": true; }; "zDynamicSize": { "alias": "zDynamicSize"; "required": false; "isSignal": true; }; "zOptionHeight": { "alias": "zOptionHeight"; "required": false; "isSignal": true; }; "zHeightExpand": { "alias": "zHeightExpand"; "required": false; "isSignal": true; }; "zMaxVisible": { "alias": "zMaxVisible"; "required": false; "isSignal": true; }; "zResetOnSelect": { "alias": "zResetOnSelect"; "required": false; "isSignal": true; }; "zEmptyText": { "alias": "zEmptyText"; "required": false; "isSignal": true; }; "zEmptyIcon": { "alias": "zEmptyIcon"; "required": false; "isSignal": true; }; "zNoDataText": { "alias": "zNoDataText"; "required": false; "isSignal": true; }; "zNoDataIcon": { "alias": "zNoDataIcon"; "required": false; "isSignal": true; }; "zAllowCustomValue": { "alias": "zAllowCustomValue"; "required": false; "isSignal": true; }; "zDebounceTime": { "alias": "zDebounceTime"; "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; }; "zOptionTemplate": { "alias": "zOptionTemplate"; "required": false; "isSignal": true; }; }, { "zOnSearch": "zOnSearch"; "zOnLoadMore": "zOnLoadMore"; "zOnSelect": "zOnSelect"; "zOnEnter": "zOnEnter"; "zOnCommit": "zOnCommit"; "zValueChange": "zValueChange"; "zOnBlur": "zOnBlur"; "zOnFocus": "zOnFocus"; "zControl": "zControl"; "zEvent": "zEvent"; }, ["customOptionDirective"], never, true, never>;
204
230
  }
205
231
 
206
232
  declare const zAutocompleteInputVariants: (props?: ({
207
233
  zSize?: "sm" | "default" | "lg" | null | undefined;
208
- zStatus?: "default" | "disabled" | "readonly" | "open" | "error" | null | undefined;
234
+ zStatus?: "default" | "open" | "error" | "disabled" | "readonly" | null | undefined;
209
235
  } & class_variance_authority_types.ClassProp) | undefined) => string;
210
236
  type ZAutocompleteInputVariants = VariantProps<typeof zAutocompleteInputVariants>;
211
237
  declare const zAutocompleteOptionVariants: (props?: ({
@@ -214,5 +240,5 @@ declare const zAutocompleteOptionVariants: (props?: ({
214
240
  } & class_variance_authority_types.ClassProp) | undefined) => string;
215
241
  type ZAutocompleteOptionVariants = VariantProps<typeof zAutocompleteOptionVariants>;
216
242
 
217
- export { ZAutocompleteComponent, Z_AUTOCOMPLETE_DEFAULT_CONFIG, zAutocompleteInputVariants, zAutocompleteOptionVariants };
218
- export type { ZAutocompleteCommitEvent, ZAutocompleteConfig, ZAutocompleteControl, ZAutocompleteInputVariants, ZAutocompleteOption, ZAutocompleteOptionTemplate, ZAutocompleteOptionVariants, ZAutocompleteSize, ZAutocompleteState, ZAutocompleteType };
243
+ export { ZAutocompleteComponent, ZAutocompleteOptionDirective, Z_AUTOCOMPLETE_DEFAULT_CONFIG, zAutocompleteInputVariants, zAutocompleteOptionVariants };
244
+ export type { ZAutocompleteCommitEvent, ZAutocompleteConfig, ZAutocompleteControl, ZAutocompleteInputVariants, ZAutocompleteLoadMoreEvent, ZAutocompleteOption, ZAutocompleteOptionContext, ZAutocompleteOptionTemplate, ZAutocompleteOptionVariants, ZAutocompleteSize, ZAutocompleteState, ZAutocompleteType };
@@ -16,12 +16,22 @@ declare class ZBreadcrumbComponent {
16
16
  readonly class: _angular_core.InputSignal<ClassValue>;
17
17
  readonly zItems: _angular_core.InputSignal<ZBreadcrumbItem[]>;
18
18
  readonly zSize: _angular_core.InputSignal<"sm" | "default" | "lg" | null | undefined>;
19
- readonly zSeparator: _angular_core.InputSignal<ZIcon>;
19
+ readonly zSeparator: _angular_core.InputSignal<string>;
20
20
  readonly zSeparatorSize: _angular_core.InputSignal<string | number | null | undefined>;
21
21
  readonly zHomeIcon: _angular_core.InputSignal<ZIcon | undefined>;
22
22
  readonly zShowHome: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
23
- protected readonly zClasses: _angular_core.Signal<string>;
24
- protected getItemClasses(item: ZBreadcrumbItem, isLast: boolean): string;
23
+ protected readonly listClasses: _angular_core.Signal<string>;
24
+ protected readonly homeClasses: _angular_core.Signal<string>;
25
+ protected readonly separatorClasses: _angular_core.Signal<string>;
26
+ protected readonly separatorIsIcon: _angular_core.Signal<boolean>;
27
+ protected readonly displayItems: _angular_core.Signal<{
28
+ isLast: boolean;
29
+ className: string;
30
+ label: string;
31
+ path?: string;
32
+ icon?: ZIcon;
33
+ disabled?: boolean;
34
+ }[]>;
25
35
  protected onItemClick(item: ZBreadcrumbItem, isLast: boolean): void;
26
36
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZBreadcrumbComponent, never>;
27
37
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZBreadcrumbComponent, "z-breadcrumb", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zItems": { "alias": "zItems"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zSeparator": { "alias": "zSeparator"; "required": false; "isSignal": true; }; "zSeparatorSize": { "alias": "zSeparatorSize"; "required": false; "isSignal": true; }; "zHomeIcon": { "alias": "zHomeIcon"; "required": false; "isSignal": true; }; "zShowHome": { "alias": "zShowHome"; "required": false; "isSignal": true; }; }, { "zItemClick": "zItemClick"; }, never, never, true, never>;
@@ -396,16 +396,16 @@ declare class ZCalendarComponent implements OnInit, ControlValueAccessor {
396
396
 
397
397
  declare const zCalendarVariants: (props?: ({
398
398
  zSize?: "sm" | "default" | "lg" | null | undefined;
399
- zStatus?: "default" | "disabled" | "readonly" | "open" | "error" | null | undefined;
399
+ zStatus?: "default" | "disabled" | "open" | "error" | "readonly" | null | undefined;
400
400
  } & class_variance_authority_types.ClassProp) | undefined) => string;
401
401
  declare const zCalendarDayVariants: (props?: ({
402
- state?: "default" | "disabled" | "today" | "selected" | "inRange" | "rangeStart" | "rangeEnd" | "rangeSingle" | "otherMonth" | "hovered" | null | undefined;
402
+ state?: "default" | "today" | "selected" | "inRange" | "rangeStart" | "rangeEnd" | "rangeSingle" | "disabled" | "otherMonth" | "hovered" | null | undefined;
403
403
  } & class_variance_authority_types.ClassProp) | undefined) => string;
404
404
  declare const zCalendarMonthVariants: (props?: ({
405
- state?: "default" | "current" | "disabled" | "selected" | null | undefined;
405
+ state?: "default" | "selected" | "disabled" | "current" | null | undefined;
406
406
  } & class_variance_authority_types.ClassProp) | undefined) => string;
407
407
  declare const zCalendarYearVariants: (props?: ({
408
- state?: "default" | "current" | "disabled" | "selected" | null | undefined;
408
+ state?: "default" | "selected" | "disabled" | "current" | null | undefined;
409
409
  } & class_variance_authority_types.ClassProp) | undefined) => string;
410
410
 
411
411
  export { ZCalendarComponent, zCalendarDayVariants, zCalendarMonthVariants, zCalendarVariants, zCalendarYearVariants };
@@ -121,6 +121,7 @@ declare class ZChatComponent implements OnDestroy {
121
121
  protected onMessagesScrollbarInit(): void;
122
122
  protected onEscapeKey(): void;
123
123
  private _scheduleScrollToBottom;
124
+ private _ensureBottomVisible;
124
125
  private _scrollToBottom;
125
126
  private _focusInputSoon;
126
127
  private _releaseAttachmentUrls;
@@ -120,7 +120,7 @@ declare class ZEditorComponent implements OnInit, ControlValueAccessor {
120
120
 
121
121
  declare const zEditorVariants: (props?: ({
122
122
  zSize?: "sm" | "default" | "lg" | null | undefined;
123
- zStatus?: "default" | "disabled" | "readonly" | "error" | null | undefined;
123
+ zStatus?: "default" | "error" | "disabled" | "readonly" | null | undefined;
124
124
  } & class_variance_authority_types.ClassProp) | undefined) => string;
125
125
  type ZEditorVariants = VariantProps<typeof zEditorVariants>;
126
126
 
@@ -229,7 +229,7 @@ declare class ZModalComponent<T, U> extends BasePortalOutlet implements OnDestro
229
229
  protected readonly effectiveOkText: _angular_core.Signal<string | null | undefined>;
230
230
  protected readonly effectiveCancelText: _angular_core.Signal<string | null | undefined>;
231
231
  protected readonly effectiveOkDestructive: _angular_core.Signal<boolean | undefined>;
232
- protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "error" | "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" | "link" | null | undefined>;
232
+ 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>;
233
233
  protected readonly effectiveOkDisabled: _angular_core.Signal<boolean | undefined>;
234
234
  protected readonly effectiveLoading: _angular_core.Signal<boolean>;
235
235
  protected readonly effectiveContentLoading: _angular_core.Signal<boolean>;
@@ -79,7 +79,7 @@ declare class ZPopoverDirective implements OnInit, OnDestroy {
79
79
  readonly zHideDelay: _angular_core.InputSignal<number>;
80
80
  readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
81
81
  readonly zOffset: _angular_core.InputSignal<number>;
82
- readonly zPopoverWidth: _angular_core.InputSignal<number | "auto" | "trigger">;
82
+ readonly zPopoverWidth: _angular_core.InputSignal<number | "trigger" | "auto">;
83
83
  readonly zManualClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
84
84
  readonly zScrollClose: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
85
85
  readonly zShowArrow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
@@ -275,7 +275,7 @@ declare class ZTagClassesPipe implements PipeTransform {
275
275
 
276
276
  declare const zSelectVariants: (props?: ({
277
277
  zSize?: "sm" | "default" | "lg" | null | undefined;
278
- zStatus?: "default" | "disabled" | "readonly" | "open" | "error" | null | undefined;
278
+ zStatus?: "default" | "open" | "error" | "disabled" | "readonly" | null | undefined;
279
279
  } & class_variance_authority_types.ClassProp) | undefined) => string;
280
280
  declare const zSelectTagVariants: (props?: ({
281
281
  zSize?: "sm" | "default" | "lg" | null | undefined;
@@ -0,0 +1,35 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ClassValue } from 'clsx';
3
+ import { SkeletonResult, ResponsiveBones } from 'boneyard-js';
4
+ import { AnimationStyle } from 'boneyard-js/angular';
5
+
6
+ type ZSkeletonAutoAnimate = AnimationStyle | boolean;
7
+ type ZSkeletonAutoBones = SkeletonResult | ResponsiveBones;
8
+
9
+ declare class ZSkeletonAutoComponent {
10
+ readonly class: _angular_core.InputSignal<ClassValue>;
11
+ readonly zLoading: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
12
+ readonly zName: _angular_core.InputSignal<string>;
13
+ readonly zColor: _angular_core.InputSignal<string | undefined>;
14
+ readonly zDarkColor: _angular_core.InputSignal<string | undefined>;
15
+ readonly zAnimate: _angular_core.InputSignal<ZSkeletonAutoAnimate>;
16
+ readonly zWavePreset: _angular_core.InputSignal<"boneyard" | "legacy-strong">;
17
+ readonly zWaveDuration: _angular_core.InputSignal<number>;
18
+ readonly zInitialBones: _angular_core.InputSignal<ZSkeletonAutoBones | undefined>;
19
+ readonly zStagger: _angular_core.InputSignal<number | boolean>;
20
+ readonly zTransition: _angular_core.InputSignal<number | boolean>;
21
+ readonly zBoneClass: _angular_core.InputSignal<string>;
22
+ readonly zFallbackRows: _angular_core.InputSignal<number>;
23
+ readonly zFallbackGap: _angular_core.InputSignal<number>;
24
+ readonly zFallbackRowHeight: _angular_core.InputSignal<string>;
25
+ readonly zFallbackRadius: _angular_core.InputSignal<string>;
26
+ protected readonly containerClass: _angular_core.Signal<string>;
27
+ protected readonly effectiveAnimate: _angular_core.Signal<ZSkeletonAutoAnimate>;
28
+ protected readonly waveDurationStyle: _angular_core.Signal<string>;
29
+ protected readonly resolvedBoneClass: _angular_core.Signal<string | undefined>;
30
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZSkeletonAutoComponent, never>;
31
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZSkeletonAutoComponent, "z-skeleton-auto", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zName": { "alias": "zName"; "required": false; "isSignal": true; }; "zColor": { "alias": "zColor"; "required": false; "isSignal": true; }; "zDarkColor": { "alias": "zDarkColor"; "required": false; "isSignal": true; }; "zAnimate": { "alias": "zAnimate"; "required": false; "isSignal": true; }; "zWavePreset": { "alias": "zWavePreset"; "required": false; "isSignal": true; }; "zWaveDuration": { "alias": "zWaveDuration"; "required": false; "isSignal": true; }; "zInitialBones": { "alias": "zInitialBones"; "required": false; "isSignal": true; }; "zStagger": { "alias": "zStagger"; "required": false; "isSignal": true; }; "zTransition": { "alias": "zTransition"; "required": false; "isSignal": true; }; "zBoneClass": { "alias": "zBoneClass"; "required": false; "isSignal": true; }; "zFallbackRows": { "alias": "zFallbackRows"; "required": false; "isSignal": true; }; "zFallbackGap": { "alias": "zFallbackGap"; "required": false; "isSignal": true; }; "zFallbackRowHeight": { "alias": "zFallbackRowHeight"; "required": false; "isSignal": true; }; "zFallbackRadius": { "alias": "zFallbackRadius"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
32
+ }
33
+
34
+ export { ZSkeletonAutoComponent };
35
+ export type { ZSkeletonAutoAnimate, ZSkeletonAutoBones };