@shival99/z-ui 1.9.7 → 1.9.9

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 (28) hide show
  1. package/assets/css/base.css +29 -0
  2. package/assets/css/tailwind.css +4 -4
  3. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +4 -4
  4. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-button.mjs +5 -5
  6. package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +9 -7
  8. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-filter.mjs +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-input.mjs +4 -4
  14. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-popover.mjs +2 -2
  16. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-select.mjs +8 -9
  18. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +7 -12
  20. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-tags.mjs +3 -3
  22. package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-upload.mjs +4 -4
  24. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/types/shival99-z-ui-components-z-calendar.d.ts +5 -4
  27. package/types/shival99-z-ui-components-z-select.d.ts +1 -1
  28. package/types/shival99-z-ui-components-z-table.d.ts +1 -1
@@ -8,7 +8,7 @@ import { cva } from 'class-variance-authority';
8
8
 
9
9
  const zCheckboxVariants = cva([
10
10
  'relative inline-flex items-center justify-center shrink-0 cursor-pointer',
11
- 'rounded-[0.25rem] border border-input bg-background dark:border-border dark:bg-input/25',
11
+ 'rounded-sm border border-input bg-background dark:border-border dark:bg-input/25',
12
12
  'transition-colors duration-150',
13
13
  'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',
14
14
  'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-checkbox.mjs","sources":["../../../../libs/core-ui/components/z-checkbox/z-checkbox.variants.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.html","../../../../libs/core-ui/components/z-checkbox/shival99-z-ui-components-z-checkbox.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCheckboxVariants = cva(\n [\n 'relative inline-flex items-center justify-center shrink-0 cursor-pointer',\n 'rounded-[0.25rem] border border-input bg-background dark:border-border dark:bg-input/25',\n 'transition-colors duration-150',\n 'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-white data-[state=checked]:hover:bg-primary/90',\n 'data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-white data-[state=indeterminate]:hover:bg-primary/90',\n ],\n {\n variants: {\n zSize: {\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zCheckboxLabelVariants = cva(\n 'select-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n {\n variants: {\n zSize: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport type ZCheckboxVariants = VariantProps<typeof zCheckboxVariants>;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZCheckboxControl,\n ZCheckboxOption,\n ZCheckboxOrientation,\n ZCheckboxSize,\n ZCheckboxType,\n} from './z-checkbox.types';\nimport { zCheckboxLabelVariants, zCheckboxVariants } from './z-checkbox.variants';\n\n@Component({\n selector: 'z-checkbox',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n private readonly _zTranslate = inject(ZTranslateService);\n\n private readonly _checkboxRef = viewChild<ElementRef<HTMLButtonElement>>('checkboxBtn');\n\n public readonly zChange = output<boolean>();\n public readonly zGroupChange = output<(string | number)[]>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zControl = output<ZCheckboxControl>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZCheckboxType>('default');\n public readonly zSize = input<ZCheckboxSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zText = input<string>('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zIndeterminate = input(false, { transform: zTransform });\n public readonly zValue = input<string | number>('');\n public readonly zOptions = input<ZCheckboxOption[]>([]);\n public readonly zOrientation = input<ZCheckboxOrientation>('vertical');\n public readonly zCheckAll = input(false, { transform: zTransform });\n public readonly zCheckAllText = input<string>('');\n\n public readonly zChecked = model<boolean>(false);\n public readonly zGroupValue = model<(string | number)[]>([]);\n\n private readonly _disabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.zDisabled() || this._disabled());\n protected readonly effectiveCheckAllText = computed(() => {\n this._zTranslate.currentLang();\n return this.zCheckAllText() || this._zTranslate.instant('i18n_z_ui_checkbox_check_all');\n });\n\n protected readonly enabledOptions = computed(() => this.zOptions().filter(opt => !opt.disabled));\n\n protected readonly isAllChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n if (enabledOpts.length === 0) {\n return false;\n }\n return enabledOpts.every(opt => this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isNoneChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n return enabledOpts.every(opt => !this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isIndeterminateState = computed(() => !this.isAllChecked() && !this.isNoneChecked());\n\n protected readonly hostClasses = computed(() => {\n const hasLabel = !!this.zLabel();\n if (this.zType() === 'group') {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n if (hasLabel) {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n return zMergeClasses('inline-flex items-center gap-2', this.class());\n });\n\n protected readonly groupClasses = computed(() => {\n const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';\n return `flex ${orientation} gap-2`;\n });\n\n protected readonly checkboxClasses = computed(() => zCheckboxVariants({ zSize: this.zSize() }));\n\n protected readonly labelClasses = computed(() => zCheckboxLabelVariants({ zSize: this.zSize() }));\n\n protected readonly checkboxState = computed(() => {\n if (this.zIndeterminate()) {\n return 'indeterminate';\n }\n if (this.zChecked()) {\n return 'checked';\n }\n return 'unchecked';\n });\n\n protected readonly iconSize = computed(() => {\n const sizeMap: Record<ZCheckboxSize, string> = {\n sm: '12',\n default: '14',\n lg: '16',\n };\n return sizeMap[this.zSize()] as '12' | '14' | '16';\n });\n\n private _onChange: (value: boolean | (string | number)[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n public ngAfterViewInit(): void {\n if (this.zType() === 'group' && this.zCheckAll()) {\n this.zControl.emit({\n checkAll: () => this._checkAllOptions(),\n uncheckAll: () => this._uncheckAllOptions(),\n toggleAll: () => this._toggleAllOptions(),\n isAllChecked: this.isAllChecked,\n isIndeterminate: this.isIndeterminateState,\n });\n }\n }\n\n public writeValue(value: boolean | (string | number)[] | null): void {\n if (this.zType() === 'group') {\n this.zGroupValue.set(Array.isArray(value) ? value : []);\n return;\n }\n this.zChecked.set(!!value);\n }\n\n public registerOnChange(fn: (value: boolean | (string | number)[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public focus(): void {\n this._checkboxRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this._checkboxRef()?.nativeElement.blur();\n }\n\n protected onFocus(event: FocusEvent): void {\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n }\n\n protected onBlur(event: FocusEvent): void {\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n this._onTouched();\n }\n\n protected onCheckboxClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const newValue = !this.zChecked();\n this.zChecked.set(newValue);\n this.zChange.emit(newValue);\n this._onChange(newValue);\n this._onTouched();\n }\n\n protected onOptionClick(option: ZCheckboxOption): void {\n if (this.isDisabled() || option.disabled) {\n return;\n }\n\n const currentValues = [...this.zGroupValue()];\n const index = currentValues.indexOf(option.value);\n\n if (index === -1) {\n currentValues.push(option.value);\n }\n\n if (index !== -1) {\n currentValues.splice(index, 1);\n }\n\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n protected onCheckAllClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n\n protected isOptionChecked(option: ZCheckboxOption): boolean {\n return this.zGroupValue().includes(option.value);\n }\n\n protected getOptionState(option: ZCheckboxOption): string {\n return this.isOptionChecked(option) ? 'checked' : 'unchecked';\n }\n\n protected getCheckAllState(): string {\n if (this.isAllChecked()) {\n return 'checked';\n }\n if (this.isIndeterminateState()) {\n return 'indeterminate';\n }\n return 'unchecked';\n }\n\n private _checkAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = [...this.zGroupValue()];\n const newValues = [...new Set([...currentValues, ...enabledValues])];\n this.zGroupValue.set(newValues);\n this.zGroupChange.emit(newValues);\n this._onChange(newValues);\n this._onTouched();\n }\n\n private _uncheckAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = this.zGroupValue().filter(v => !enabledValues.includes(v));\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n private _toggleAllOptions(): void {\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n}\n","<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n <!-- Check All option -->\n @if (zCheckAll()) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2\"\n [class.opacity-50]=\"isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isAllChecked()\"\n [attr.data-state]=\"getCheckAllState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckAllClick()\">\n @if (isIndeterminateState()) {\n <i z-icon zType=\"lucideMinus\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n @if (isAllChecked()) {\n <i z-icon zType=\"lucideCheck\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n </button>\n <span [class]=\"labelClasses()\">{{ effectiveCheckAllText() }}</span>\n </label>\n }\n\n <!-- Options -->\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\">\n @if (isOptionChecked(option)) {\n <i z-icon zType=\"lucideCheck\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single checkbox) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2\">\n <button\n #checkboxBtn\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"zChecked()\"\n [attr.data-state]=\"checkboxState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckboxClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n @if (zIndeterminate()) {\n <i z-icon zType=\"lucideMinus\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n @if (!zIndeterminate() && zChecked()) {\n <i z-icon zType=\"lucideCheck\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onCheckboxClick()\">{{ zText() }}</label>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-checkbox.mjs","sources":["../../../../libs/core-ui/components/z-checkbox/z-checkbox.variants.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.html","../../../../libs/core-ui/components/z-checkbox/shival99-z-ui-components-z-checkbox.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCheckboxVariants = cva(\n [\n 'relative inline-flex items-center justify-center shrink-0 cursor-pointer',\n 'rounded-sm border border-input bg-background dark:border-border dark:bg-input/25',\n 'transition-colors duration-150',\n 'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-white data-[state=checked]:hover:bg-primary/90',\n 'data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-white data-[state=indeterminate]:hover:bg-primary/90',\n ],\n {\n variants: {\n zSize: {\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zCheckboxLabelVariants = cva(\n 'select-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n {\n variants: {\n zSize: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport type ZCheckboxVariants = VariantProps<typeof zCheckboxVariants>;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZCheckboxControl,\n ZCheckboxOption,\n ZCheckboxOrientation,\n ZCheckboxSize,\n ZCheckboxType,\n} from './z-checkbox.types';\nimport { zCheckboxLabelVariants, zCheckboxVariants } from './z-checkbox.variants';\n\n@Component({\n selector: 'z-checkbox',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n private readonly _zTranslate = inject(ZTranslateService);\n\n private readonly _checkboxRef = viewChild<ElementRef<HTMLButtonElement>>('checkboxBtn');\n\n public readonly zChange = output<boolean>();\n public readonly zGroupChange = output<(string | number)[]>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zControl = output<ZCheckboxControl>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZCheckboxType>('default');\n public readonly zSize = input<ZCheckboxSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zText = input<string>('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zIndeterminate = input(false, { transform: zTransform });\n public readonly zValue = input<string | number>('');\n public readonly zOptions = input<ZCheckboxOption[]>([]);\n public readonly zOrientation = input<ZCheckboxOrientation>('vertical');\n public readonly zCheckAll = input(false, { transform: zTransform });\n public readonly zCheckAllText = input<string>('');\n\n public readonly zChecked = model<boolean>(false);\n public readonly zGroupValue = model<(string | number)[]>([]);\n\n private readonly _disabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.zDisabled() || this._disabled());\n protected readonly effectiveCheckAllText = computed(() => {\n this._zTranslate.currentLang();\n return this.zCheckAllText() || this._zTranslate.instant('i18n_z_ui_checkbox_check_all');\n });\n\n protected readonly enabledOptions = computed(() => this.zOptions().filter(opt => !opt.disabled));\n\n protected readonly isAllChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n if (enabledOpts.length === 0) {\n return false;\n }\n return enabledOpts.every(opt => this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isNoneChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n return enabledOpts.every(opt => !this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isIndeterminateState = computed(() => !this.isAllChecked() && !this.isNoneChecked());\n\n protected readonly hostClasses = computed(() => {\n const hasLabel = !!this.zLabel();\n if (this.zType() === 'group') {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n if (hasLabel) {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n return zMergeClasses('inline-flex items-center gap-2', this.class());\n });\n\n protected readonly groupClasses = computed(() => {\n const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';\n return `flex ${orientation} gap-2`;\n });\n\n protected readonly checkboxClasses = computed(() => zCheckboxVariants({ zSize: this.zSize() }));\n\n protected readonly labelClasses = computed(() => zCheckboxLabelVariants({ zSize: this.zSize() }));\n\n protected readonly checkboxState = computed(() => {\n if (this.zIndeterminate()) {\n return 'indeterminate';\n }\n if (this.zChecked()) {\n return 'checked';\n }\n return 'unchecked';\n });\n\n protected readonly iconSize = computed(() => {\n const sizeMap: Record<ZCheckboxSize, string> = {\n sm: '12',\n default: '14',\n lg: '16',\n };\n return sizeMap[this.zSize()] as '12' | '14' | '16';\n });\n\n private _onChange: (value: boolean | (string | number)[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n public ngAfterViewInit(): void {\n if (this.zType() === 'group' && this.zCheckAll()) {\n this.zControl.emit({\n checkAll: () => this._checkAllOptions(),\n uncheckAll: () => this._uncheckAllOptions(),\n toggleAll: () => this._toggleAllOptions(),\n isAllChecked: this.isAllChecked,\n isIndeterminate: this.isIndeterminateState,\n });\n }\n }\n\n public writeValue(value: boolean | (string | number)[] | null): void {\n if (this.zType() === 'group') {\n this.zGroupValue.set(Array.isArray(value) ? value : []);\n return;\n }\n this.zChecked.set(!!value);\n }\n\n public registerOnChange(fn: (value: boolean | (string | number)[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public focus(): void {\n this._checkboxRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this._checkboxRef()?.nativeElement.blur();\n }\n\n protected onFocus(event: FocusEvent): void {\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n }\n\n protected onBlur(event: FocusEvent): void {\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n this._onTouched();\n }\n\n protected onCheckboxClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const newValue = !this.zChecked();\n this.zChecked.set(newValue);\n this.zChange.emit(newValue);\n this._onChange(newValue);\n this._onTouched();\n }\n\n protected onOptionClick(option: ZCheckboxOption): void {\n if (this.isDisabled() || option.disabled) {\n return;\n }\n\n const currentValues = [...this.zGroupValue()];\n const index = currentValues.indexOf(option.value);\n\n if (index === -1) {\n currentValues.push(option.value);\n }\n\n if (index !== -1) {\n currentValues.splice(index, 1);\n }\n\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n protected onCheckAllClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n\n protected isOptionChecked(option: ZCheckboxOption): boolean {\n return this.zGroupValue().includes(option.value);\n }\n\n protected getOptionState(option: ZCheckboxOption): string {\n return this.isOptionChecked(option) ? 'checked' : 'unchecked';\n }\n\n protected getCheckAllState(): string {\n if (this.isAllChecked()) {\n return 'checked';\n }\n if (this.isIndeterminateState()) {\n return 'indeterminate';\n }\n return 'unchecked';\n }\n\n private _checkAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = [...this.zGroupValue()];\n const newValues = [...new Set([...currentValues, ...enabledValues])];\n this.zGroupValue.set(newValues);\n this.zGroupChange.emit(newValues);\n this._onChange(newValues);\n this._onTouched();\n }\n\n private _uncheckAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = this.zGroupValue().filter(v => !enabledValues.includes(v));\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n private _toggleAllOptions(): void {\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n}\n","<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n <!-- Check All option -->\n @if (zCheckAll()) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2\"\n [class.opacity-50]=\"isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isAllChecked()\"\n [attr.data-state]=\"getCheckAllState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckAllClick()\">\n @if (isIndeterminateState()) {\n <i z-icon zType=\"lucideMinus\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n @if (isAllChecked()) {\n <i z-icon zType=\"lucideCheck\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n </button>\n <span [class]=\"labelClasses()\">{{ effectiveCheckAllText() }}</span>\n </label>\n }\n\n <!-- Options -->\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\">\n @if (isOptionChecked(option)) {\n <i z-icon zType=\"lucideCheck\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single checkbox) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2\">\n <button\n #checkboxBtn\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"zChecked()\"\n [attr.data-state]=\"checkboxState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckboxClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n @if (zIndeterminate()) {\n <i z-icon zType=\"lucideMinus\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n @if (!zIndeterminate() && zChecked()) {\n <i z-icon zType=\"lucideCheck\" [zSize]=\"iconSize()\" [zStrokeWidth]=\"3\" class=\"text-current\"></i>\n }\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onCheckboxClick()\">{{ zText() }}</label>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -456,7 +456,7 @@ const zFilterContainerVariants = cva('flex flex-wrap items-center gap-2', {
456
456
  size: 'md',
457
457
  },
458
458
  });
459
- const zFilterItemVariants = cva('inline-flex items-stretch rounded-[0.25rem] border border-input bg-background shadow-xs overflow-hidden', {
459
+ const zFilterItemVariants = cva('inline-flex items-stretch rounded-sm border border-input bg-background shadow-xs overflow-hidden', {
460
460
  variants: {
461
461
  size: {
462
462
  sm: 'h-8',
@@ -1 +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-[0.25rem] 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 addButtonTemplate = contentChild<TemplateRef<unknown>>('addButton');\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 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 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 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 continue;\n }\n\n const field = item as ZFilterFieldConfig<T>;\n if (!filterField(field)) {\n continue;\n }\n\n const groupName = field.group || '';\n const existingGroup = groups.find(g => g.group === groupName);\n if (existingGroup) {\n existingGroup.fields.push(field);\n continue;\n }\n\n groups.push({ group: groupName, fields: [field] });\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 isSelected = filter.values.includes(option.value);\n const valueMulti = isSelected ? filter.values.filter(v => v !== option.value) : [...filter.values, option.value];\n const valueSingle = isSelected ? [] : [option.value];\n const newValues = (field?.type === 'multiselect' ? valueMulti : valueSingle) as T[];\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-[12.5rem]\">\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-[18.75rem] 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-[12.5rem]\">\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-[12.5rem] 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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"}
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-sm 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 addButtonTemplate = contentChild<TemplateRef<unknown>>('addButton');\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 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 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 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 continue;\n }\n\n const field = item as ZFilterFieldConfig<T>;\n if (!filterField(field)) {\n continue;\n }\n\n const groupName = field.group || '';\n const existingGroup = groups.find(g => g.group === groupName);\n if (existingGroup) {\n existingGroup.fields.push(field);\n continue;\n }\n\n groups.push({ group: groupName, fields: [field] });\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 isSelected = filter.values.includes(option.value);\n const valueMulti = isSelected ? filter.values.filter(v => v !== option.value) : [...filter.values, option.value];\n const valueSingle = isSelected ? [] : [option.value];\n const newValues = (field?.type === 'multiselect' ? valueMulti : valueSingle) as T[];\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-[12.5rem]\">\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-[18.75rem] 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-[12.5rem]\">\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-[12.5rem] 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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"}