@shival99/z-ui 1.0.1 → 1.0.3

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 (115) hide show
  1. package/README.md +50 -77
  2. package/assets/css/animations.css +207 -0
  3. package/assets/css/base.css +76 -0
  4. package/assets/css/tailwind.css +53 -0
  5. package/assets/css/themes/gray.css +73 -0
  6. package/assets/css/themes/green.css +75 -0
  7. package/assets/css/themes/hospital.css +79 -0
  8. package/assets/css/themes/neutral.css +73 -0
  9. package/assets/css/themes/orange.css +73 -0
  10. package/assets/css/themes/slate.css +73 -0
  11. package/assets/css/themes/stone.css +73 -0
  12. package/assets/css/themes/violet.css +73 -0
  13. package/assets/css/themes/zinc.css +73 -0
  14. package/assets/images/avatar.svg +6 -0
  15. package/assets/images/logo.svg +6 -0
  16. package/fesm2022/shival99-z-ui-components-z-accordion.mjs +148 -0
  17. package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -0
  18. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +74 -0
  19. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -0
  20. package/fesm2022/shival99-z-ui-components-z-button.mjs +155 -0
  21. package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -0
  22. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +2335 -0
  23. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -0
  24. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +240 -0
  25. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -0
  26. package/fesm2022/shival99-z-ui-components-z-code.mjs +139 -0
  27. package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -0
  28. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +664 -0
  29. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -0
  30. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +55 -0
  31. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -0
  32. package/fesm2022/shival99-z-ui-components-z-editor.mjs +411 -0
  33. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -0
  34. package/fesm2022/shival99-z-ui-components-z-filter.mjs +794 -0
  35. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -0
  36. package/fesm2022/shival99-z-ui-components-z-icon.mjs +451 -0
  37. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -0
  38. package/fesm2022/shival99-z-ui-components-z-input.mjs +804 -0
  39. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -0
  40. package/fesm2022/shival99-z-ui-components-z-loading.mjs +105 -0
  41. package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -0
  42. package/fesm2022/shival99-z-ui-components-z-menu.mjs +351 -0
  43. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -0
  44. package/fesm2022/shival99-z-ui-components-z-modal.mjs +722 -0
  45. package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -0
  46. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +131 -0
  47. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -0
  48. package/fesm2022/shival99-z-ui-components-z-popover.mjs +917 -0
  49. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -0
  50. package/fesm2022/shival99-z-ui-components-z-radio.mjs +154 -0
  51. package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -0
  52. package/fesm2022/shival99-z-ui-components-z-select.mjs +998 -0
  53. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -0
  54. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +139 -0
  55. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -0
  56. package/fesm2022/shival99-z-ui-components-z-switch.mjs +127 -0
  57. package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -0
  58. package/fesm2022/shival99-z-ui-components-z-table.mjs +2628 -0
  59. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -0
  60. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +259 -0
  61. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -0
  62. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +335 -0
  63. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -0
  64. package/fesm2022/shival99-z-ui-components-z-toast.mjs +93 -0
  65. package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -0
  66. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +660 -0
  67. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -0
  68. package/fesm2022/shival99-z-ui-components-z-upload.mjs +504 -0
  69. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -0
  70. package/fesm2022/shival99-z-ui-i18n.mjs +258 -0
  71. package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -0
  72. package/fesm2022/shival99-z-ui-pipes.mjs +116 -0
  73. package/fesm2022/shival99-z-ui-pipes.mjs.map +1 -0
  74. package/fesm2022/shival99-z-ui-providers.mjs +203 -0
  75. package/fesm2022/shival99-z-ui-providers.mjs.map +1 -0
  76. package/fesm2022/shival99-z-ui-services.mjs +919 -0
  77. package/fesm2022/shival99-z-ui-services.mjs.map +1 -0
  78. package/fesm2022/shival99-z-ui-utils.mjs +591 -0
  79. package/fesm2022/shival99-z-ui-utils.mjs.map +1 -0
  80. package/fesm2022/z-ui.mjs +3 -19924
  81. package/fesm2022/z-ui.mjs.map +1 -1
  82. package/package.json +132 -4
  83. package/types/shival99-z-ui-components-z-accordion.d.ts +55 -0
  84. package/types/shival99-z-ui-components-z-breadcrumb.d.ts +36 -0
  85. package/types/shival99-z-ui-components-z-button.d.ts +41 -0
  86. package/types/shival99-z-ui-components-z-calendar.d.ts +300 -0
  87. package/types/shival99-z-ui-components-z-checkbox.d.ts +84 -0
  88. package/types/shival99-z-ui-components-z-code.d.ts +35 -0
  89. package/types/shival99-z-ui-components-z-drawer.d.ts +232 -0
  90. package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +50 -0
  91. package/types/shival99-z-ui-components-z-editor.d.ts +115 -0
  92. package/types/shival99-z-ui-components-z-filter.d.ts +268 -0
  93. package/types/shival99-z-ui-components-z-icon.d.ts +291 -0
  94. package/types/shival99-z-ui-components-z-input.d.ts +188 -0
  95. package/types/shival99-z-ui-components-z-loading.d.ts +46 -0
  96. package/types/shival99-z-ui-components-z-menu.d.ts +116 -0
  97. package/types/shival99-z-ui-components-z-modal.d.ts +270 -0
  98. package/types/shival99-z-ui-components-z-pagination.d.ts +52 -0
  99. package/types/shival99-z-ui-components-z-popover.d.ts +134 -0
  100. package/types/shival99-z-ui-components-z-radio.d.ts +63 -0
  101. package/types/shival99-z-ui-components-z-select.d.ts +268 -0
  102. package/types/shival99-z-ui-components-z-skeleton.d.ts +55 -0
  103. package/types/shival99-z-ui-components-z-switch.d.ts +48 -0
  104. package/types/shival99-z-ui-components-z-table.d.ts +482 -0
  105. package/types/shival99-z-ui-components-z-tabs.d.ts +75 -0
  106. package/types/shival99-z-ui-components-z-timeline.d.ts +98 -0
  107. package/types/shival99-z-ui-components-z-toast.d.ts +61 -0
  108. package/types/shival99-z-ui-components-z-tooltip.d.ts +85 -0
  109. package/types/shival99-z-ui-components-z-upload.d.ts +136 -0
  110. package/types/shival99-z-ui-i18n.d.ts +50 -0
  111. package/types/shival99-z-ui-pipes.d.ts +36 -0
  112. package/types/shival99-z-ui-providers.d.ts +132 -0
  113. package/types/shival99-z-ui-services.d.ts +364 -0
  114. package/types/shival99-z-ui-utils.d.ts +145 -0
  115. package/types/z-ui.d.ts +3 -4977
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shival99-z-ui-components-z-filter.mjs","sources":["../../../../libs/core-ui/components/z-filter/z-filter.utils.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-field.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-input-pattern.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-is-between-operator.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-is-value-hidden.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-operator-label.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-operators.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-selected-options.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-unselected-options.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/index.ts","../../../../libs/core-ui/components/z-filter/z-filter.types.ts","../../../../libs/core-ui/components/z-filter/z-filter.variants.ts","../../../../libs/core-ui/components/z-filter/z-filter.component.ts","../../../../libs/core-ui/components/z-filter/z-filter.component.html","../../../../libs/core-ui/components/z-filter/shival99-z-ui-components-z-filter.ts"],"sourcesContent":["import type {\n ZFilter,\n ZFilterFieldConfig,\n ZFilterFieldGroup,\n ZFilterFieldsConfig,\n ZFilterI18nConfig,\n ZFilterOperator,\n} from './z-filter.types';\n\nexport function generateFilterId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;\n}\n\nexport function createFilter<T = unknown>(field: string, operator = 'is', values: T[] = []): ZFilter<T> {\n return {\n id: generateFilterId(),\n field,\n operator,\n values,\n };\n}\n\nexport function isFieldGroup<T = unknown>(\n item: ZFilterFieldConfig<T> | ZFilterFieldGroup<T>\n): item is ZFilterFieldGroup<T> {\n return 'fields' in item && Array.isArray(item.fields);\n}\n\nexport function isGroupLevelField<T = unknown>(field: ZFilterFieldConfig<T>): boolean {\n return Boolean(field.group && field.fields);\n}\n\nexport function flattenFields<T = unknown>(fields: ZFilterFieldsConfig<T>): ZFilterFieldConfig<T>[] {\n return fields.reduce<ZFilterFieldConfig<T>[]>((acc, item) => {\n if (isFieldGroup(item)) {\n return [...acc, ...item.fields];\n }\n if (isGroupLevelField(item) && item.fields) {\n return [...acc, ...item.fields];\n }\n return [...acc, item];\n }, []);\n}\n\nexport function getFieldsMap<T = unknown>(fields: ZFilterFieldsConfig<T>): Record<string, ZFilterFieldConfig<T>> {\n const flatFields = flattenFields(fields);\n return flatFields.reduce(\n (acc, field) => {\n if (field.key) {\n acc[field.key] = field;\n }\n return acc;\n },\n {} as Record<string, ZFilterFieldConfig<T>>\n );\n}\n\nexport function createOperatorsFromI18n(i18n: ZFilterI18nConfig): Record<string, ZFilterOperator[]> {\n return {\n select: [\n { value: 'is', label: i18n.operators.is },\n { value: 'is_not', label: i18n.operators.isNot },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n multiselect: [\n { value: 'is_any_of', label: i18n.operators.isAnyOf },\n { value: 'is_not_any_of', label: i18n.operators.isNotAnyOf },\n { value: 'includes_all', label: i18n.operators.includesAll },\n { value: 'excludes_all', label: i18n.operators.excludesAll },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n date: [\n { value: 'before', label: i18n.operators.before },\n { value: 'after', label: i18n.operators.after },\n { value: 'is', label: i18n.operators.is },\n { value: 'is_not', label: i18n.operators.isNot },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n daterange: [\n { value: 'between', label: i18n.operators.between },\n { value: 'not_between', label: i18n.operators.notBetween },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n text: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n number: [\n { value: 'equals', label: i18n.operators.equals },\n { value: 'not_equals', label: i18n.operators.notEquals },\n { value: 'greater_than', label: i18n.operators.greaterThan },\n { value: 'less_than', label: i18n.operators.lessThan },\n { value: 'between', label: i18n.operators.between },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n numberrange: [\n { value: 'between', label: i18n.operators.between },\n { value: 'overlaps', label: i18n.operators.overlaps },\n { value: 'contains', label: i18n.operators.contains },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n boolean: [\n { value: 'is', label: i18n.operators.is },\n { value: 'is_not', label: i18n.operators.isNot },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n email: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n url: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n tel: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n time: [\n { value: 'before', label: i18n.operators.before },\n { value: 'after', label: i18n.operators.after },\n { value: 'is', label: i18n.operators.is },\n { value: 'between', label: i18n.operators.between },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n datetime: [\n { value: 'before', label: i18n.operators.before },\n { value: 'after', label: i18n.operators.after },\n { value: 'is', label: i18n.operators.is },\n { value: 'between', label: i18n.operators.between },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n };\n}\n\nexport function getOperatorsForField<T = unknown>(\n field: ZFilterFieldConfig<T>,\n values: T[],\n i18n: ZFilterI18nConfig\n): ZFilterOperator[] {\n if (field.operators) {\n return field.operators;\n }\n\n const operators = createOperatorsFromI18n(i18n);\n let fieldType = field.type || 'select';\n\n if (fieldType === 'select' && values.length > 1) {\n fieldType = 'multiselect';\n }\n\n if (fieldType === 'multiselect' || field.type === 'multiselect') {\n return operators['multiselect'];\n }\n\n return operators[fieldType] || operators['select'];\n}\n\nexport function formatOperator(operator: string): string {\n return operator.replace(/_/g, ' ');\n}\n\nexport function getDefaultOperator(fieldType: string): string {\n switch (fieldType) {\n case 'daterange':\n case 'numberrange':\n return 'between';\n case 'boolean':\n return 'is';\n case 'multiselect':\n return 'is_any_of';\n default:\n return 'is';\n }\n}\n\nexport function getDefaultValues<T = unknown>(fieldType: string, field: ZFilterFieldConfig<T>): unknown[] {\n switch (fieldType) {\n case 'text':\n case 'number':\n case 'date':\n case 'email':\n case 'url':\n case 'tel':\n case 'time':\n case 'datetime':\n return [''];\n case 'daterange':\n return ['', ''];\n case 'numberrange':\n return [field.min || 0, field.max || 100];\n case 'boolean':\n return [false];\n default:\n return [];\n }\n}\n\nexport function getInputPattern(fieldType: string): string | undefined {\n switch (fieldType) {\n case 'email':\n return '^[^@\\\\s]+@[^@\\\\s]+\\\\.[^@\\\\s]+$';\n case 'url':\n return '^https?:\\\\/\\\\/(www\\\\.)?[-a-zA-Z0-9@:%._\\\\+~#=]{1,256}\\\\.[a-zA-Z0-9()]{1,6}\\\\b([-a-zA-Z0-9()@:%_\\\\+.~#?&//=]*)$';\n case 'tel':\n return '^[\\\\+]?[1-9][\\\\d]{0,15}$';\n default:\n return undefined;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldConfig, ZFilterFieldsConfig } from '../z-filter.types';\nimport { getFieldsMap } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterField',\n standalone: true,\n pure: true,\n})\nexport class ZFilterFieldPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig): ZFilterFieldConfig | undefined {\n const fieldsMap = getFieldsMap(fields);\n return fieldsMap[filter.field];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilterFieldConfig } from '../z-filter.types';\n\n@Pipe({\n name: 'zFilterInputPattern',\n standalone: true,\n pure: true,\n})\nexport class ZFilterInputPatternPipe implements PipeTransform {\n transform(field: ZFilterFieldConfig): string {\n switch (field.type) {\n case 'email':\n return '[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,}$';\n case 'url':\n return 'https?://.+';\n case 'tel':\n return '[0-9+\\\\-\\\\s()]+';\n default:\n return field.pattern || '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter } from '../z-filter.types';\n\n@Pipe({\n name: 'zFilterIsBetweenOperator',\n standalone: true,\n pure: true,\n})\nexport class ZFilterIsBetweenOperatorPipe implements PipeTransform {\n transform(filter: ZFilter): boolean {\n return filter.operator === 'between' || filter.operator === 'not_between';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter } from '../z-filter.types';\n\n@Pipe({\n name: 'zFilterIsValueHidden',\n standalone: true,\n pure: true,\n})\nexport class ZFilterIsValueHiddenPipe implements PipeTransform {\n transform(filter: ZFilter): boolean {\n const { operator } = filter;\n return operator === 'is_empty' || operator === 'is_not_empty';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterI18nConfig } from '../z-filter.types';\nimport { formatOperator, getFieldsMap, getOperatorsForField } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterOperatorLabel',\n standalone: true,\n pure: true,\n})\nexport class ZFilterOperatorLabelPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig, i18n: ZFilterI18nConfig): string {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field) {\n return '';\n }\n const operators = getOperatorsForField(field, filter.values, i18n);\n const op = operators.find(o => o.value === filter.operator);\n return op?.label || formatOperator(filter.operator);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterI18nConfig, ZFilterOperator } from '../z-filter.types';\nimport { getFieldsMap, getOperatorsForField } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterOperators',\n standalone: true,\n pure: true,\n})\nexport class ZFilterOperatorsPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig, i18n: ZFilterI18nConfig): ZFilterOperator[] {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field) {\n return [];\n }\n return getOperatorsForField(field, filter.values, i18n);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterOption } from '../z-filter.types';\nimport { getFieldsMap } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterSelectedOptions',\n standalone: true,\n pure: true,\n})\nexport class ZFilterSelectedOptionsPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig): ZFilterOption[] {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => filter.values.includes(opt.value));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterOption } from '../z-filter.types';\nimport { getFieldsMap } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterUnselectedOptions',\n standalone: true,\n pure: true,\n})\nexport class ZFilterUnselectedOptionsPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig): ZFilterOption[] {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => !filter.values.includes(opt.value));\n }\n}\n","import { ZFilterFieldPipe } from './z-filter-field.pipe';\nimport { ZFilterInputPatternPipe } from './z-filter-input-pattern.pipe';\nimport { ZFilterIsBetweenOperatorPipe } from './z-filter-is-between-operator.pipe';\nimport { ZFilterIsValueHiddenPipe } from './z-filter-is-value-hidden.pipe';\nimport { ZFilterOperatorLabelPipe } from './z-filter-operator-label.pipe';\nimport { ZFilterOperatorsPipe } from './z-filter-operators.pipe';\nimport { ZFilterSelectedOptionsPipe } from './z-filter-selected-options.pipe';\nimport { ZFilterUnselectedOptionsPipe } from './z-filter-unselected-options.pipe';\n\nexport const Z_FILTER_PIPES = [\n ZFilterFieldPipe,\n ZFilterOperatorLabelPipe,\n ZFilterOperatorsPipe,\n ZFilterSelectedOptionsPipe,\n ZFilterUnselectedOptionsPipe,\n ZFilterInputPatternPipe,\n ZFilterIsValueHiddenPipe,\n ZFilterIsBetweenOperatorPipe,\n] as const;\n","import type { TemplateRef } from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\n\nexport type ZFilterSize = 'sm' | 'md' | 'lg';\n\nexport type ZFilterFieldType =\n | 'select'\n | 'multiselect'\n | 'date'\n | 'daterange'\n | 'text'\n | 'number'\n | 'numberrange'\n | 'boolean'\n | 'email'\n | 'url'\n | 'tel'\n | 'time'\n | 'datetime'\n | 'custom'\n | 'separator';\n\nexport interface ZFilterOption<T = unknown> {\n value: T;\n label: string;\n icon?: ZIcon;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ZFilterOperator {\n value: string;\n label: string;\n supportsMultiple?: boolean;\n}\n\nexport interface ZFilterCustomRendererContext<T = unknown> {\n field: ZFilterFieldConfig<T>;\n values: T[];\n operator: string;\n onChange: (values: T[]) => void;\n}\n\nexport interface ZFilterFieldConfig<T = unknown> {\n key?: string;\n label?: string;\n icon?: ZIcon;\n type?: ZFilterFieldType;\n group?: string;\n fields?: ZFilterFieldConfig<T>[];\n options?: ZFilterOption<T>[];\n operators?: ZFilterOperator[];\n customRenderer?: TemplateRef<ZFilterCustomRendererContext<T>>;\n customValueRenderer?: TemplateRef<{ values: T[]; options: ZFilterOption<T>[] }>;\n placeholder?: string;\n searchable?: boolean;\n maxSelections?: number;\n min?: number;\n max?: number;\n step?: number;\n prefix?: string;\n suffix?: string;\n pattern?: string;\n validation?: (value: unknown) => boolean;\n allowCustomValues?: boolean;\n className?: string;\n popoverContentClassName?: string;\n selectedOptionsClassName?: string;\n onLabel?: string;\n offLabel?: string;\n defaultOperator?: string;\n}\n\nexport interface ZFilterFieldGroup<T = unknown> {\n group?: string;\n fields: ZFilterFieldConfig<T>[];\n}\n\nexport type ZFilterFieldsConfig<T = unknown> = ZFilterFieldConfig<T>[] | ZFilterFieldGroup<T>[];\n\nexport interface ZFilter<T = unknown> {\n id: string;\n field: string;\n operator: string;\n values: T[];\n}\n\nexport interface ZFilterI18nConfig {\n addFilter: string;\n searchFields: string;\n noFieldsFound: string;\n noResultsFound: string;\n select: string;\n true: string;\n false: string;\n min: string;\n max: string;\n to: string;\n selected: string;\n selectedCount: string;\n addFilterTitle: string;\n operators: {\n is: string;\n isNot: string;\n isAnyOf: string;\n isNotAnyOf: string;\n includesAll: string;\n excludesAll: string;\n before: string;\n after: string;\n between: string;\n notBetween: string;\n contains: string;\n notContains: string;\n startsWith: string;\n endsWith: string;\n isExactly: string;\n equals: string;\n notEquals: string;\n greaterThan: string;\n lessThan: string;\n overlaps: string;\n includes: string;\n excludes: string;\n includesAllOf: string;\n includesAnyOf: string;\n empty: string;\n notEmpty: string;\n };\n placeholders: {\n enterField: string;\n selectField: string;\n searchField: string;\n enterKey: string;\n enterValue: string;\n };\n validation: {\n invalidEmail: string;\n invalidUrl: string;\n invalidTel: string;\n invalid: string;\n };\n}\n\nexport const DEFAULT_FILTER_I18N: ZFilterI18nConfig = {\n addFilter: 'Add filter',\n searchFields: 'Search fields...',\n noFieldsFound: 'No fields found.',\n noResultsFound: 'No results found.',\n select: 'Select...',\n true: 'True',\n false: 'False',\n min: 'Min',\n max: 'Max',\n to: 'to',\n selected: 'selected',\n selectedCount: 'selected',\n addFilterTitle: 'Add filter',\n operators: {\n is: 'is',\n isNot: 'is not',\n isAnyOf: 'is any of',\n isNotAnyOf: 'is not any of',\n includesAll: 'includes all',\n excludesAll: 'excludes all',\n before: 'before',\n after: 'after',\n between: 'between',\n notBetween: 'not between',\n contains: 'contains',\n notContains: 'does not contain',\n startsWith: 'starts with',\n endsWith: 'ends with',\n isExactly: 'is exactly',\n equals: 'equals',\n notEquals: 'not equals',\n greaterThan: 'greater than',\n lessThan: 'less than',\n overlaps: 'overlaps',\n includes: 'includes',\n excludes: 'excludes',\n includesAllOf: 'includes all of',\n includesAnyOf: 'includes any of',\n empty: 'is empty',\n notEmpty: 'is not empty',\n },\n placeholders: {\n enterField: 'Enter value...',\n selectField: 'Select...',\n searchField: 'Search...',\n enterKey: 'Enter key...',\n enterValue: 'Enter value...',\n },\n validation: {\n invalidEmail: 'Invalid email format',\n invalidUrl: 'Invalid URL format',\n invalidTel: 'Invalid phone format',\n invalid: 'Invalid input format',\n },\n};\n\nexport interface ZFilterControl<T = unknown> {\n addFilter: (fieldKey: string) => void;\n removeFilter: (filterId: string) => void;\n updateFilter: (filterId: string, updates: Partial<ZFilter<T>>) => void;\n clearAll: () => void;\n filters: ZFilter<T>[];\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zFilterContainerVariants = cva('flex flex-wrap items-center gap-2', {\n variants: {\n size: {\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const zFilterItemVariants = cva(\n 'inline-flex items-stretch rounded-[4px] border border-input bg-background shadow-xs overflow-hidden',\n {\n variants: {\n size: {\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const zFilterFieldLabelVariants = cva(\n 'flex items-center gap-1.5 bg-background font-medium text-muted-foreground border-r border-input',\n {\n variants: {\n size: {\n sm: 'px-2 text-xs',\n md: 'px-2.5 text-sm',\n lg: 'px-3 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const zFilterInputVariants = cva('flex items-center bg-background px-2 focus-within:bg-muted/50', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const zFilterRemoveButtonVariants = cva(\n 'flex items-center justify-center cursor-pointer bg-background text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive focus:outline-none border-l border-input',\n {\n variants: {\n size: {\n sm: 'px-1.5',\n md: 'px-2',\n lg: 'px-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const zFilterBetweenVariants = cva('text-muted-foreground flex items-center', {\n variants: {\n size: {\n sm: 'px-1 text-xs',\n md: 'px-1.5 text-xs',\n lg: 'px-2 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport type ZFilterContainerVariantsProps = VariantProps<typeof zFilterContainerVariants>;\nexport type ZFilterItemVariantsProps = VariantProps<typeof zFilterItemVariants>;\nexport type ZFilterFieldLabelVariantsProps = VariantProps<typeof zFilterFieldLabelVariants>;\nexport type ZFilterInputVariantsProps = VariantProps<typeof zFilterInputVariants>;\nexport type ZFilterRemoveButtonVariantsProps = VariantProps<typeof zFilterRemoveButtonVariants>;\nexport type ZFilterBetweenVariantsProps = VariantProps<typeof zFilterBetweenVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport { ZSwitchComponent } from '@shival99/z-ui/components/z-switch';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { Z_FILTER_PIPES } from './pipes';\nimport type {\n ZFilter,\n ZFilterFieldConfig,\n ZFilterFieldsConfig,\n ZFilterI18nConfig,\n ZFilterOperator,\n ZFilterOption,\n ZFilterSize,\n} from './z-filter.types';\nimport { DEFAULT_FILTER_I18N } from './z-filter.types';\nimport {\n createFilter,\n flattenFields,\n formatOperator,\n getDefaultOperator,\n getDefaultValues,\n getFieldsMap,\n getInputPattern,\n getOperatorsForField,\n} from './z-filter.utils';\nimport {\n zFilterBetweenVariants,\n zFilterContainerVariants,\n zFilterFieldLabelVariants,\n zFilterInputVariants,\n zFilterItemVariants,\n zFilterRemoveButtonVariants,\n} from './z-filter.variants';\n\n@Component({\n selector: 'z-filter',\n imports: [ZIconComponent, NgTemplateOutlet, ZSwitchComponent, ZButtonComponent, ZPopoverDirective, ...Z_FILTER_PIPES],\n standalone: true,\n templateUrl: './z-filter.component.html',\n styleUrl: './z-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n 'data-slot': 'z-filter',\n },\n})\nexport class ZFilterComponent<T = unknown> {\n public readonly class = input<ClassValue>('');\n public readonly zFilters = input.required<ZFilter<T>[]>();\n public readonly zFields = input.required<ZFilterFieldsConfig<T>>();\n public readonly zSize = input<ZFilterSize>('md');\n public readonly zI18n = input<Partial<ZFilterI18nConfig>>({});\n public readonly zShowAddButton = input<boolean>(true);\n public readonly zAllowMultiple = input<boolean>(true);\n public readonly zAddButtonIcon = input<ZIcon>('lucidePlus');\n public readonly zAddButtonText = input<string>();\n\n public readonly zFiltersChange = output<ZFilter<T>[]>();\n public readonly zFilterAdd = output<ZFilter<T>>();\n public readonly zFilterRemove = output<ZFilter<T>>();\n public readonly zFilterUpdate = output<{ filter: ZFilter<T>; updates: Partial<ZFilter<T>> }>();\n\n public readonly addButtonTemplate = contentChild<TemplateRef<unknown>>('addButton');\n\n protected readonly addFilterOpen = signal(false);\n protected readonly searchQuery = signal('');\n protected readonly operatorPopoverOpen = signal<string | null>(null);\n protected readonly valuePopoverOpen = signal<string | null>(null);\n\n protected readonly addFilterSearchInput = viewChild<ElementRef<HTMLInputElement>>('addFilterSearchInput');\n\n protected focusSearchInput(): void {\n setTimeout(() => {\n this.addFilterSearchInput()?.nativeElement?.focus();\n }, 50);\n }\n\n protected focusSelectSearch(filterId: string): void {\n setTimeout(() => {\n const input = document.getElementById(`select-search-${filterId}`) as HTMLInputElement;\n input?.focus();\n }, 50);\n }\n\n protected readonly i18n = computed<ZFilterI18nConfig>(() => {\n const custom = this.zI18n();\n return {\n ...DEFAULT_FILTER_I18N,\n ...custom,\n operators: { ...DEFAULT_FILTER_I18N.operators, ...custom.operators },\n placeholders: { ...DEFAULT_FILTER_I18N.placeholders, ...custom.placeholders },\n validation: { ...DEFAULT_FILTER_I18N.validation, ...custom.validation },\n };\n });\n\n protected readonly fieldsMap = computed(() => getFieldsMap(this.zFields()));\n\n protected readonly selectableFields = computed(() => {\n const flatFields = flattenFields(this.zFields());\n const filters = this.zFilters();\n return flatFields.filter(field => {\n if (!field.key || field.type === 'separator') {\n return false;\n }\n if (this.zAllowMultiple()) {\n return true;\n }\n return !filters.some(filter => filter.field === field.key);\n });\n });\n\n protected readonly filteredFields = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n if (!query) {\n return this.selectableFields();\n }\n return this.selectableFields().filter(\n field => field.label?.toLowerCase().includes(query) || field.key?.toLowerCase().includes(query)\n );\n });\n\n protected readonly groupedFields = computed(() => {\n const allFields = this.zFields();\n const query = this.searchQuery().toLowerCase().trim();\n const filters = this.zFilters();\n const allowMultiple = this.zAllowMultiple();\n\n const filterField = (field: ZFilterFieldConfig<T>) => {\n if (!field.key || field.type === 'separator') {\n return false;\n }\n if (!allowMultiple && filters.some(f => f.field === field.key)) {\n return false;\n }\n if (query && !field.label?.toLowerCase().includes(query) && !field.key?.toLowerCase().includes(query)) {\n return false;\n }\n return true;\n };\n\n const groups: { group: string; fields: ZFilterFieldConfig<T>[] }[] = [];\n\n for (const item of allFields) {\n if ('fields' in item && Array.isArray(item.fields)) {\n const groupName = (item as { group?: string }).group || '';\n const filteredGroupFields = item.fields.filter(filterField);\n if (filteredGroupFields.length > 0) {\n groups.push({ group: groupName, fields: filteredGroupFields });\n }\n } else {\n const field = item as ZFilterFieldConfig<T>;\n if (filterField(field)) {\n const groupName = field.group || '';\n const existingGroup = groups.find(g => g.group === groupName);\n if (existingGroup) {\n existingGroup.fields.push(field);\n } else {\n groups.push({ group: groupName, fields: [field] });\n }\n }\n }\n }\n\n return groups;\n });\n\n protected readonly buttonSize = computed(() => {\n const size = this.zSize();\n if (size === 'sm') {\n return 'sm';\n }\n if (size === 'lg') {\n return 'lg';\n }\n return 'default';\n });\n\n protected readonly hostClasses = computed(() =>\n zMergeClasses(zFilterContainerVariants({ size: this.zSize() }), this.class())\n );\n\n protected getItemClasses(): string {\n return zFilterItemVariants({ size: this.zSize() });\n }\n\n protected getLabelClasses(): string {\n return zFilterFieldLabelVariants({ size: this.zSize() });\n }\n\n protected getInputClasses(): string {\n return zFilterInputVariants({ size: this.zSize() });\n }\n\n protected getRemoveButtonClasses(): string {\n return zFilterRemoveButtonVariants({ size: this.zSize() });\n }\n\n protected getBetweenClasses(): string {\n return zFilterBetweenVariants({ size: this.zSize() });\n }\n\n protected getFieldForFilter(filter: ZFilter<T>): ZFilterFieldConfig<T> | undefined {\n return this.fieldsMap()[filter.field];\n }\n\n protected getOperatorsForFilter(filter: ZFilter<T>): ZFilterOperator[] {\n const field = this.getFieldForFilter(filter);\n if (!field) {\n return [];\n }\n return getOperatorsForField(field, filter.values, this.i18n());\n }\n\n protected getOperatorLabel(filter: ZFilter<T>): string {\n const operators = this.getOperatorsForFilter(filter);\n const op = operators.find(o => o.value === filter.operator);\n return op?.label || formatOperator(filter.operator);\n }\n\n protected getSelectedOptions(filter: ZFilter<T>): ZFilterOption<T>[] {\n const field = this.getFieldForFilter(filter);\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => filter.values.includes(opt.value));\n }\n\n protected getUnselectedOptions(filter: ZFilter<T>): ZFilterOption<T>[] {\n const field = this.getFieldForFilter(filter);\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => !filter.values.includes(opt.value));\n }\n\n protected isValueHidden(filter: ZFilter<T>): boolean {\n return filter.operator === 'empty' || filter.operator === 'not_empty';\n }\n\n protected isBetweenOperator(filter: ZFilter<T>): boolean {\n return filter.operator === 'between';\n }\n\n protected getInputPattern(field: ZFilterFieldConfig<T>): string | undefined {\n return field.pattern || getInputPattern(field.type || '');\n }\n\n protected onFieldSelect(field: ZFilterFieldConfig<T>): void {\n if (!field.key) {\n return;\n }\n\n const defaultOperator = field.defaultOperator || getDefaultOperator(field.type || 'select');\n const defaultValues = getDefaultValues(field.type || 'select', field);\n\n const newFilter = createFilter<T>(field.key, defaultOperator, defaultValues as T[]);\n const newFilters = [...this.zFilters(), newFilter];\n this.zFiltersChange.emit(newFilters);\n this.zFilterAdd.emit(newFilter);\n this.addFilterOpen.set(false);\n this.searchQuery.set('');\n }\n\n protected updateFilterOperator(filter: ZFilter<T>, operator: string): void {\n const updates: Partial<ZFilter<T>> = { operator };\n if (operator === 'empty' || operator === 'not_empty') {\n updates.values = [] as T[];\n }\n\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, ...updates };\n }\n return f;\n });\n\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates });\n this.operatorPopoverOpen.set(null);\n }\n\n protected onSelectValueChange(filter: ZFilter<T>, option: ZFilterOption<T>): void {\n const field = this.getFieldForFilter(filter);\n const isMultiSelect = field?.type === 'multiselect';\n const isSelected = filter.values.includes(option.value);\n\n let newValues: T[];\n if (isMultiSelect) {\n newValues = isSelected ? filter.values.filter(v => v !== option.value) : [...filter.values, option.value];\n } else {\n newValues = isSelected ? [] : [option.value];\n }\n\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, values: newValues };\n }\n return f;\n });\n\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates: { values: newValues } });\n }\n\n protected removeFilter(filter: ZFilter<T>): void {\n const updatedFilters = this.zFilters().filter(f => f.id !== filter.id);\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterRemove.emit(filter);\n }\n\n protected onInputChange(filter: ZFilter<T>, event: Event, index = 0): void {\n const input = event.target as HTMLInputElement;\n const newValues = [...filter.values];\n newValues[index] = input.value as T;\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, values: newValues };\n }\n return f;\n });\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates: { values: newValues } });\n }\n\n protected onBooleanChange(filter: ZFilter<T>, checked: boolean): void {\n const newValues = [checked as unknown as T];\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, values: newValues };\n }\n return f;\n });\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates: { values: newValues } });\n }\n\n protected onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.searchQuery.set(input.value);\n }\n\n protected trackByFilterId(index: number, filter: ZFilter<T>): string {\n return filter.id;\n }\n\n protected trackByOptionValue(index: number, option: ZFilterOption<T>): unknown {\n return option.value;\n }\n\n protected trackByFieldKey(index: number, field: ZFilterFieldConfig<T>): string {\n return field.key || `field-${index}`;\n }\n}\n","<!-- Add Filter Button -->\n@if (zShowAddButton() && selectableFields().length > 0) {\n @if (addButtonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"addButtonTemplate()!\" />\n } @else {\n <button\n z-button\n zType=\"outline\"\n [zSize]=\"buttonSize()\"\n z-popover\n [zPopoverContent]=\"addFilterPopover\"\n zTrigger=\"click\"\n zPosition=\"bottom-left\"\n [zOffset]=\"6\"\n (zShow)=\"addFilterOpen.set(true); focusSearchInput()\"\n (zHide)=\"addFilterOpen.set(false); searchQuery.set('')\">\n <z-icon [zType]=\"zAddButtonIcon()\" zSize=\"14\" />\n {{ zAddButtonText() || i18n().addFilter }}\n </button>\n }\n}\n\n<ng-template #addFilterPopover let-close=\"close\">\n <div class=\"w-[200px]\">\n <div class=\"border-border flex items-center border-b px-3\">\n <z-icon zType=\"lucideSearch\" zSize=\"16\" class=\"text-muted-foreground/50 mr-2 shrink-0\" />\n <input\n #addFilterSearchInput\n type=\"text\"\n [placeholder]=\"i18n().searchFields\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n class=\"placeholder:text-muted-foreground text-foreground flex h-10 w-full bg-transparent py-3 text-sm outline-none\" />\n </div>\n <div class=\"flex max-h-[300px] flex-col gap-0.5 overflow-y-auto p-1\">\n @for (group of groupedFields(); track group.group; let groupIndex = $index) {\n @if (group.group) {\n <div\n class=\"text-muted-foreground px-2 py-1.5 text-xs font-medium\"\n [class.border-border]=\"groupIndex > 0\"\n [class.mt-2]=\"groupIndex > 0\"\n [class.border-t]=\"groupIndex > 0\"\n [class.ml-1]=\"groupIndex > 0\">\n {{ group.group }}\n </div>\n }\n @for (field of group.fields; track trackByFieldKey($index, field)) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors\"\n (click)=\"onFieldSelect(field); close()\">\n @if (field.icon) {\n <z-icon [zType]=\"field.icon\" zSize=\"14\" class=\"text-muted-foreground\" />\n }\n <span>{{ field.label }}</span>\n </button>\n }\n } @empty {\n <div class=\"text-muted-foreground py-6 text-center text-sm\">\n {{ i18n().noFieldsFound }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Filter Items -->\n@for (filter of zFilters(); track trackByFilterId($index, filter)) {\n @if (filter | zFilterField: $any(zFields()); as field) {\n <div [class]=\"getItemClasses()\" data-slot=\"filter-item\">\n <!-- Field Label -->\n <div [class]=\"getLabelClasses()\">\n @if (field.icon) {\n <z-icon [zType]=\"field.icon\" zSize=\"14\" />\n }\n {{ field.label }}\n </div>\n\n <!-- Operator Dropdown -->\n <button\n type=\"button\"\n z-popover\n [zPopoverContent]=\"operatorDropdown\"\n zTrigger=\"click\"\n zPosition=\"bottom-left\"\n [zOffset]=\"4\"\n (zShow)=\"operatorPopoverOpen.set(filter.id)\"\n (zHide)=\"operatorPopoverOpen.set(null)\"\n class=\"text-muted-foreground hover:text-foreground hover:bg-muted flex cursor-pointer items-center px-2.5 text-sm transition-colors\"\n [class.text-foreground]=\"operatorPopoverOpen() === filter.id\"\n [class.bg-muted]=\"operatorPopoverOpen() === filter.id\">\n {{ filter | zFilterOperatorLabel: $any(zFields()) : i18n() }}\n <z-icon zType=\"lucideChevronDown\" zSize=\"12\" class=\"ml-1\" />\n </button>\n\n <ng-template #operatorDropdown let-close=\"close\">\n <div class=\"flex w-fit min-w-32 flex-col gap-0.5 p-1\">\n @for (op of filter | zFilterOperators: $any(zFields()) : i18n(); track op.value) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center justify-between gap-4 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none\"\n (click)=\"updateFilterOperator(filter, op.value); close()\">\n <span>{{ op.label }}</span>\n @if (op.value === filter.operator) {\n <z-icon zType=\"lucideCheck\" zSize=\"14\" class=\"text-primary\" />\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Value Selector -->\n @if (!(filter | zFilterIsValueHidden)) {\n <!-- Boolean Field -->\n @if (field.type === 'boolean') {\n <div class=\"flex items-center gap-2 px-2.5\">\n <z-switch [zChecked]=\"filter.values[0] === true\" (zChange)=\"onBooleanChange(filter, $event)\" zSize=\"sm\" />\n @if (field.onLabel && field.offLabel) {\n <span class=\"text-muted-foreground text-xs\">\n {{ filter.values[0] === true ? field.onLabel : field.offLabel }}\n </span>\n }\n </div>\n }\n\n <!-- Text/Email/URL/Tel Input -->\n @else if (field.type === 'text' || field.type === 'email' || field.type === 'url' || field.type === 'tel') {\n <div [class]=\"getInputClasses()\" class=\"w-36\">\n @if (field.prefix) {\n <span class=\"text-muted-foreground mr-1\">{{ field.prefix }}</span>\n }\n <input\n type=\"{{\n field.type === 'email' ? 'email' : field.type === 'url' ? 'url' : field.type === 'tel' ? 'tel' : 'text'\n }}\"\n [value]=\"filter.values[0] || ''\"\n [placeholder]=\"field.placeholder || i18n().placeholders.enterField\"\n [pattern]=\"field | zFilterInputPattern\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event)\" />\n @if (field.suffix) {\n <span class=\"text-muted-foreground ml-1\">{{ field.suffix }}</span>\n }\n </div>\n }\n\n <!-- Number Input -->\n @else if (field.type === 'number') {\n @if (filter | zFilterIsBetweenOperator) {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-20\">\n @if (field.prefix) {\n <span class=\"text-muted-foreground mr-1\">{{ field.prefix }}</span>\n }\n <input\n type=\"number\"\n [value]=\"filter.values[0] || ''\"\n [placeholder]=\"i18n().min\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n [step]=\"field.step\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-20\">\n <input\n type=\"number\"\n [value]=\"filter.values[1] || ''\"\n [placeholder]=\"i18n().max\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n [step]=\"field.step\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event, 1)\" />\n @if (field.suffix) {\n <span class=\"text-muted-foreground ml-1\">{{ field.suffix }}</span>\n }\n </div>\n </div>\n } @else {\n <div [class]=\"getInputClasses()\" class=\"w-24\">\n @if (field.prefix) {\n <span class=\"text-muted-foreground mr-1\">{{ field.prefix }}</span>\n }\n <input\n type=\"number\"\n [value]=\"filter.values[0] || ''\"\n [placeholder]=\"field.placeholder || i18n().placeholders.enterField\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n [step]=\"field.step\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event)\" />\n @if (field.suffix) {\n <span class=\"text-muted-foreground ml-1\">{{ field.suffix }}</span>\n }\n </div>\n }\n }\n\n <!-- Date Input -->\n @else if (field.type === 'date') {\n <div [class]=\"getInputClasses()\" class=\"w-36\">\n <input\n type=\"date\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event)\" />\n </div>\n }\n\n <!-- Date Range Input -->\n @else if (field.type === 'daterange') {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-32\">\n <input\n type=\"date\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-32\">\n <input\n type=\"date\"\n [value]=\"filter.values[1] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 1)\" />\n </div>\n </div>\n }\n\n <!-- Time Input -->\n @else if (field.type === 'time') {\n @if (filter | zFilterIsBetweenOperator) {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-28\">\n <input\n type=\"time\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-28\">\n <input\n type=\"time\"\n [value]=\"filter.values[1] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 1)\" />\n </div>\n </div>\n } @else {\n <div [class]=\"getInputClasses()\" class=\"w-28\">\n <input\n type=\"time\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event)\" />\n </div>\n }\n }\n\n <!-- DateTime Input -->\n @else if (field.type === 'datetime') {\n @if (filter | zFilterIsBetweenOperator) {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-44\">\n <input\n type=\"datetime-local\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-44\">\n <input\n type=\"datetime-local\"\n [value]=\"filter.values[1] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 1)\" />\n </div>\n </div>\n } @else {\n <div [class]=\"getInputClasses()\" class=\"w-44\">\n <input\n type=\"datetime-local\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event)\" />\n </div>\n }\n }\n\n <!-- Select/Multiselect -->\n @else if (field.type === 'select' || field.type === 'multiselect' || field.options) {\n <button\n type=\"button\"\n z-popover\n [zPopoverContent]=\"selectPopover\"\n zTrigger=\"click\"\n zPosition=\"bottom-left\"\n [zOffset]=\"4\"\n (zShow)=\"valuePopoverOpen.set(filter.id); focusSelectSearch(filter.id)\"\n (zHide)=\"valuePopoverOpen.set(null)\"\n class=\"hover:bg-muted flex cursor-pointer items-center gap-1.5 px-2.5 text-sm transition-colors\"\n [class.bg-muted]=\"valuePopoverOpen() === filter.id\">\n @if (filter | zFilterSelectedOptions: $any(zFields()); as selectedOpts) {\n @if (selectedOpts.length > 0) {\n <div class=\"flex items-center -space-x-1.5\">\n @for (opt of selectedOpts.slice(0, 3); track $any(opt).value) {\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"14\" />\n }\n }\n </div>\n @if (selectedOpts.length === 1) {\n {{ selectedOpts[0].label }}\n } @else {\n {{ selectedOpts.length }} {{ i18n().selectedCount }}\n }\n } @else {\n <span class=\"text-muted-foreground\">{{ i18n().select }}</span>\n }\n }\n <z-icon zType=\"lucideChevronDown\" zSize=\"12\" class=\"text-muted-foreground ml-1\" />\n </button>\n\n <ng-template #selectPopover let-close=\"close\">\n <div class=\"w-[200px]\">\n @if (field.searchable !== false) {\n <div class=\"border-border flex items-center border-b px-3\">\n <z-icon zType=\"lucideSearch\" zSize=\"16\" class=\"text-muted-foreground/50 mr-2 shrink-0\" />\n <input\n [id]=\"'select-search-' + filter.id\"\n type=\"text\"\n [placeholder]=\"i18n().placeholders.searchField\"\n class=\"placeholder:text-muted-foreground text-foreground flex h-9 w-full bg-transparent py-2 text-sm outline-none\" />\n </div>\n }\n <div class=\"flex max-h-[200px] flex-col gap-0.5 overflow-y-auto p-1\">\n <!-- Selected Options -->\n @for (opt of filter | zFilterSelectedOptions: $any(zFields()); track $any(opt).value) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors\"\n (click)=\"onSelectValueChange(filter, $any(opt)); field.type !== 'multiselect' && close()\">\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"14\" />\n }\n <span class=\"truncate\">{{ opt.label }}</span>\n <z-icon zType=\"lucideCheck\" zSize=\"14\" class=\"text-primary ml-auto\" />\n </button>\n }\n\n <!-- Separator -->\n @if (\n (filter | zFilterSelectedOptions: $any(zFields())).length > 0 &&\n (filter | zFilterUnselectedOptions: $any(zFields())).length > 0\n ) {\n <div class=\"bg-border my-1 ml-1 h-px\"></div>\n }\n\n <!-- Unselected Options -->\n @for (opt of filter | zFilterUnselectedOptions: $any(zFields()); track $any(opt).value) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors\"\n (click)=\"onSelectValueChange(filter, $any(opt)); field.type !== 'multiselect' && close()\">\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"14\" />\n }\n <span class=\"truncate\">{{ opt.label }}</span>\n </button>\n }\n\n @if (\n (filter | zFilterSelectedOptions: $any(zFields())).length === 0 &&\n (filter | zFilterUnselectedOptions: $any(zFields())).length === 0\n ) {\n <div class=\"text-muted-foreground py-6 text-center text-sm\">\n {{ i18n().noResultsFound }}\n </div>\n }\n </div>\n </div>\n </ng-template>\n }\n }\n\n <!-- Remove Button -->\n <button type=\"button\" [class]=\"getRemoveButtonClasses()\" data-slot=\"filter-remove\" (click)=\"removeFilter(filter)\">\n <z-icon zType=\"lucideX\" zSize=\"14\" />\n </button>\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ZFilterFieldPipe","i2.ZFilterOperatorLabelPipe","i3.ZFilterOperatorsPipe","i4.ZFilterSelectedOptionsPipe","i5.ZFilterUnselectedOptionsPipe","i6.ZFilterInputPatternPipe","i7.ZFilterIsValueHiddenPipe","i8.ZFilterIsBetweenOperatorPipe"],"mappings":"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"}