@shival99/z-ui 1.9.12 → 1.9.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/base.css +0 -16
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs +129 -12
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +142 -8
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +65 -16
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-chat.mjs +18 -7
- package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +7 -2
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +150 -3
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +13 -6
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +61 -0
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +13 -33
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +16 -6
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +510 -24
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +27 -2
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +44 -260
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +1 -4
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-providers.mjs +7 -2
- package/fesm2022/shival99-z-ui-providers.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-services.mjs +441 -182
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-utils.mjs +6 -1
- package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
- package/package.json +5 -1
- package/types/shival99-z-ui-components-z-accordion.d.ts +22 -4
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +33 -7
- package/types/shival99-z-ui-components-z-breadcrumb.d.ts +13 -3
- package/types/shival99-z-ui-components-z-chat.d.ts +1 -0
- package/types/shival99-z-ui-components-z-drawer.d.ts +2 -0
- package/types/shival99-z-ui-components-z-filter.d.ts +17 -0
- package/types/shival99-z-ui-components-z-modal.d.ts +4 -1
- package/types/shival99-z-ui-components-z-select.d.ts +1 -1
- package/types/shival99-z-ui-components-z-skeleton-auto.d.ts +35 -0
- package/types/shival99-z-ui-components-z-skeleton.d.ts +3 -7
- package/types/shival99-z-ui-components-z-switch.d.ts +7 -1
- package/types/shival99-z-ui-components-z-table.d.ts +268 -6
- package/types/shival99-z-ui-components-z-tabs.d.ts +3 -3
- package/types/shival99-z-ui-components-z-timeline.d.ts +24 -60
- package/types/shival99-z-ui-providers.d.ts +6 -2
- package/types/shival99-z-ui-services.d.ts +43 -1
- 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":"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G;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.
|
|
3
|
+
"version": "1.9.14",
|
|
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,9 +220,13 @@ 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"; },
|
|
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?: ({
|
|
@@ -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<
|
|
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
|
|
24
|
-
protected
|
|
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>;
|
|
@@ -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;
|
|
@@ -168,6 +168,7 @@ declare class ZDrawerComponent<T, U> extends BasePortalOutlet implements OnDestr
|
|
|
168
168
|
private readonly _cdr;
|
|
169
169
|
private readonly _zTranslate;
|
|
170
170
|
private readonly _overlayContainerService;
|
|
171
|
+
private readonly _zIndexService;
|
|
171
172
|
private _templateOverlayRef;
|
|
172
173
|
private _originalParent;
|
|
173
174
|
private _originalNextSibling;
|
|
@@ -227,6 +228,7 @@ declare class ZDrawerService {
|
|
|
227
228
|
private readonly _overlay;
|
|
228
229
|
private readonly _injector;
|
|
229
230
|
private readonly _platformId;
|
|
231
|
+
private readonly _zIndexService;
|
|
230
232
|
create<T, U>(config: ZDrawerOptions<T, U>): ZDrawerRef<T>;
|
|
231
233
|
private _open;
|
|
232
234
|
private _createOverlay;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { TemplateRef, ElementRef, PipeTransform } from '@angular/core';
|
|
3
|
+
import { ZCalendarSize, ZDateRange } from '@shival99/z-ui/components/z-calendar';
|
|
3
4
|
import { ZIcon } from '@shival99/z-ui/components/z-icon';
|
|
4
5
|
import { ClassValue } from 'clsx';
|
|
5
6
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
@@ -158,6 +159,11 @@ declare class ZFilterComponent<T = unknown> {
|
|
|
158
159
|
fields: ZFilterFieldConfig<T>[];
|
|
159
160
|
}[]>;
|
|
160
161
|
protected readonly buttonSize: _angular_core.Signal<"sm" | "lg" | "default">;
|
|
162
|
+
protected readonly calendarSize: _angular_core.Signal<ZCalendarSize>;
|
|
163
|
+
protected readonly dateValueMap: _angular_core.Signal<Record<string, Date | null>>;
|
|
164
|
+
protected readonly dateRangeValueMap: _angular_core.Signal<Record<string, ZDateRange | null>>;
|
|
165
|
+
protected readonly timeValueMap: _angular_core.Signal<Record<string, Date | null>>;
|
|
166
|
+
protected readonly dateTimeValueMap: _angular_core.Signal<Record<string, Date | null>>;
|
|
161
167
|
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
162
168
|
protected getItemClasses(): string;
|
|
163
169
|
protected getLabelClasses(): string;
|
|
@@ -175,6 +181,10 @@ declare class ZFilterComponent<T = unknown> {
|
|
|
175
181
|
protected onFieldSelect(field: ZFilterFieldConfig<T>): void;
|
|
176
182
|
protected updateFilterOperator(filter: ZFilter<T>, operator: string): void;
|
|
177
183
|
protected onSelectValueChange(filter: ZFilter<T>, option: ZFilterOption<T>): void;
|
|
184
|
+
protected onDateValueChange(filter: ZFilter<T>, value: Date | null): void;
|
|
185
|
+
protected onDateRangeValueChange(filter: ZFilter<T>, value: ZDateRange | null): void;
|
|
186
|
+
protected onTimeValueChange(filter: ZFilter<T>, value: Date | null): void;
|
|
187
|
+
protected onDateTimeValueChange(filter: ZFilter<T>, value: Date | null): void;
|
|
178
188
|
protected removeFilter(filter: ZFilter<T>): void;
|
|
179
189
|
protected onInputChange(filter: ZFilter<T>, event: Event, index?: number): void;
|
|
180
190
|
protected onBooleanChange(filter: ZFilter<T>, checked: boolean): void;
|
|
@@ -182,6 +192,13 @@ declare class ZFilterComponent<T = unknown> {
|
|
|
182
192
|
protected trackByFilterId(index: number, filter: ZFilter<T>): string;
|
|
183
193
|
protected trackByOptionValue(index: number, option: ZFilterOption<T>): unknown;
|
|
184
194
|
protected trackByFieldKey(index: number, field: ZFilterFieldConfig<T>): string;
|
|
195
|
+
private _updateFilterValues;
|
|
196
|
+
private _parseDateValue;
|
|
197
|
+
private _formatDateValue;
|
|
198
|
+
private _parseTimeValue;
|
|
199
|
+
private _parseDateTimeValue;
|
|
200
|
+
private _formatTimeValue;
|
|
201
|
+
private _formatDateTimeValue;
|
|
185
202
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZFilterComponent<any>, never>;
|
|
186
203
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZFilterComponent<any>, "z-filter", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zFilters": { "alias": "zFilters"; "required": true; "isSignal": true; }; "zFields": { "alias": "zFields"; "required": true; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zI18n": { "alias": "zI18n"; "required": false; "isSignal": true; }; "zShowAddButton": { "alias": "zShowAddButton"; "required": false; "isSignal": true; }; "zAllowMultiple": { "alias": "zAllowMultiple"; "required": false; "isSignal": true; }; "zAddButtonIcon": { "alias": "zAddButtonIcon"; "required": false; "isSignal": true; }; "zAddButtonText": { "alias": "zAddButtonText"; "required": false; "isSignal": true; }; }, { "zFiltersChange": "zFiltersChange"; "zFilterAdd": "zFilterAdd"; "zFilterRemove": "zFilterRemove"; "zFilterUpdate": "zFilterUpdate"; }, ["addButtonTemplate"], never, true, never>;
|
|
187
204
|
}
|
|
@@ -100,7 +100,7 @@ declare class ZModalOptions<T, U> {
|
|
|
100
100
|
zTitle?: string | TemplateRef<T>;
|
|
101
101
|
/** ViewContainerRef for the modal portal */
|
|
102
102
|
zViewContainerRef?: ViewContainerRef;
|
|
103
|
-
/** Modal width
|
|
103
|
+
/** Modal width. In service mode this is applied as the minimum width to allow content to expand naturally. */
|
|
104
104
|
zWidth?: string;
|
|
105
105
|
/** WritableSignal to control content loading state (shows skeleton when true) */
|
|
106
106
|
readonly zContentLoading?: WritableSignal<boolean>;
|
|
@@ -117,6 +117,7 @@ interface ZModalConfirmOptions<U = unknown> {
|
|
|
117
117
|
zOnOk?: () => void | false | Promise<void>;
|
|
118
118
|
zOnCancel?: () => void;
|
|
119
119
|
zMaskClosable?: boolean;
|
|
120
|
+
/** Modal width. In service mode this is applied as the minimum width to allow content to expand naturally. */
|
|
120
121
|
zWidth?: string;
|
|
121
122
|
zData?: U;
|
|
122
123
|
}
|
|
@@ -200,6 +201,7 @@ declare class ZModalComponent<T, U> extends BasePortalOutlet implements OnDestro
|
|
|
200
201
|
private readonly _cdr;
|
|
201
202
|
private readonly _zTranslate;
|
|
202
203
|
private readonly _overlayContainerService;
|
|
204
|
+
private readonly _zIndexService;
|
|
203
205
|
private _templateOverlayRef;
|
|
204
206
|
private _originalParent;
|
|
205
207
|
private _originalNextSibling;
|
|
@@ -259,6 +261,7 @@ declare class ZModalService {
|
|
|
259
261
|
private readonly _injector;
|
|
260
262
|
private readonly _platformId;
|
|
261
263
|
private readonly _zTranslate;
|
|
264
|
+
private readonly _zIndexService;
|
|
262
265
|
create<T, U>(config: ZModalOptions<T, U>): ZModalRef<T>;
|
|
263
266
|
show<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown>;
|
|
264
267
|
info<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown>;
|
|
@@ -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" | "
|
|
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;
|