@shival99/z-ui 1.8.13 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/tailwind.css +7 -11
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +45 -71
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button.mjs +21 -11
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +61 -32
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-card.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-chat.mjs +429 -0
- package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-code.mjs +51 -21
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +8 -3
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +169 -90
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +143 -360
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +131 -8
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +8 -3
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +31 -7
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +31 -29
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +131 -15
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +57 -13
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +6 -6
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tags.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +6 -6
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +5 -4
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-i18n.mjs +12 -0
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-pipes.mjs +18 -0
- package/fesm2022/shival99-z-ui-pipes.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-providers.mjs +30 -13
- package/fesm2022/shival99-z-ui-providers.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-services.mjs +53 -29
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/fesm2022/z-ui.mjs +0 -4
- package/fesm2022/z-ui.mjs.map +1 -1
- package/package.json +6 -1
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +25 -38
- package/types/shival99-z-ui-components-z-breadcrumb.d.ts +4 -4
- package/types/shival99-z-ui-components-z-button.d.ts +5 -4
- package/types/shival99-z-ui-components-z-chat.d.ts +148 -0
- package/types/shival99-z-ui-components-z-drawer.d.ts +3 -1
- package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +2 -2
- package/types/shival99-z-ui-components-z-empty.d.ts +3 -3
- package/types/shival99-z-ui-components-z-filter.d.ts +2 -2
- package/types/shival99-z-ui-components-z-gallery.d.ts +6 -3
- package/types/shival99-z-ui-components-z-icon.d.ts +18 -304
- package/types/shival99-z-ui-components-z-input.d.ts +42 -1
- package/types/shival99-z-ui-components-z-modal.d.ts +4 -2
- package/types/shival99-z-ui-components-z-select.d.ts +5 -2
- package/types/shival99-z-ui-components-z-steps.d.ts +4 -4
- package/types/shival99-z-ui-components-z-switch.d.ts +25 -4
- package/types/shival99-z-ui-components-z-table.d.ts +2 -0
- package/types/shival99-z-ui-pipes.d.ts +2 -0
- package/types/shival99-z-ui-providers.d.ts +10 -16
- package/types/shival99-z-ui-services.d.ts +6 -1
- package/types/z-ui.d.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-autocomplete.mjs","sources":["../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.types.ts","../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.variants.ts","../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.component.ts","../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.component.html","../../../../libs/core-ui/components/z-autocomplete/shival99-z-ui-components-z-autocomplete.ts"],"sourcesContent":["import type { Signal, TemplateRef } from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\n\nexport interface ZAutocompleteOption<T = unknown> {\n label: string;\n value: T;\n disabled?: boolean;\n description?: string;\n icon?: ZIcon;\n}\n\nexport interface ZAutocompleteConfig {\n minLength: number;\n debounceTime: number;\n maxDisplayed: number;\n highlightMatch: boolean;\n emptyMessage: string;\n noDataMessage: string;\n closeOnSelect: boolean;\n optionHeight: number;\n dropdownMaxHeight: number;\n /** Skip local filtering when using server-side search */\n serverSearch: boolean;\n}\n\nexport const Z_AUTOCOMPLETE_DEFAULT_CONFIG: ZAutocompleteConfig = {\n minLength: 1,\n debounceTime: 0,\n maxDisplayed: 0,\n highlightMatch: true,\n emptyMessage: 'i18n_z_ui_autocomplete_no_results',\n noDataMessage: 'i18n_z_ui_autocomplete_no_data',\n closeOnSelect: true,\n optionHeight: 36,\n dropdownMaxHeight: 280,\n serverSearch: false,\n};\n\nexport type ZAutocompleteSize = 'sm' | 'default' | 'lg';\n\nexport type ZAutocompleteType = 'default' | 'address_bar';\n\nexport interface ZAutocompleteState {\n focused: boolean;\n touched: boolean;\n dirty: boolean;\n disabled: boolean;\n readonly: boolean;\n open: boolean;\n}\n\nexport interface ZAutocompleteCommitEvent {\n value: string;\n source: 'enter' | 'blur';\n}\n\nexport interface ZAutocompleteControl<T = unknown> {\n focus: () => void;\n blur: () => void;\n clear: () => void;\n reset: () => void;\n open: () => void;\n close: () => void;\n setValue: (value: string) => void;\n value: Signal<string>;\n selectedOption: Signal<ZAutocompleteOption<T> | null>;\n /**\n * @deprecated Use individual event outputs (zOnFocus, zOnBlur, etc.) instead.\n * Will be removed in a future version.\n */\n state: Signal<ZAutocompleteState>;\n}\n\nexport type ZAutocompleteOptionTemplate<T = unknown> = TemplateRef<{\n $implicit: ZAutocompleteOption<T>;\n active: boolean;\n}>;\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zAutocompleteInputVariants = cva(\n [\n 'flex w-full items-center rounded-[6px] border border-input bg-white shadow-xs',\n 'transition-[border-color,box-shadow,background-color,color,opacity,border-radius] duration-200',\n 'dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n 'outline-none',\n 'text-sm',\n ],\n {\n variants: {\n zSize: {\n sm: 'h-8 px-2 gap-2 text-sm',\n default: 'h-9 px-2.5 gap-2 text-sm',\n lg: 'h-10 px-3 gap-2.5 text-sm',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n open: 'border-ring',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'cursor-default bg-muted/50 text-muted-foreground',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZAutocompleteInputVariants = VariantProps<typeof zAutocompleteInputVariants>;\n\nexport const zAutocompleteOptionVariants = cva(\n 'flex items-center gap-2 px-2 py-1.5 cursor-pointer transition-colors text-sm rounded-[4px] outline-none',\n {\n variants: {\n active: {\n true: 'bg-primary/15 text-primary',\n false: 'hover:bg-primary/10 hover:text-foreground',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n active: false,\n disabled: false,\n },\n }\n);\n\nexport type ZAutocompleteOptionVariants = VariantProps<typeof zAutocompleteOptionVariants>;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type AbstractControl, ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { injectVirtualizer } from '@shival99/angular-virtual';\nimport { ZEmptyComponent } from '@shival99/z-ui/components/z-empty';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZLoadingComponent } from '@shival99/z-ui/components/z-loading';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport type { ZPopoverControl, ZPopoverPosition } from '@shival99/z-ui/components/z-popover';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZHighlightPipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { zUuid, zMergeClasses, zTransform, zRemoveVietnamese, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { debounceTime, distinctUntilChanged, Subject } from 'rxjs';\nimport type {\n ZAutocompleteOption,\n ZAutocompleteConfig,\n ZAutocompleteSize,\n ZAutocompleteType,\n ZAutocompleteState,\n ZAutocompleteControl,\n ZAutocompleteOptionTemplate,\n ZAutocompleteCommitEvent,\n} from './z-autocomplete.types';\nimport { Z_AUTOCOMPLETE_DEFAULT_CONFIG } from './z-autocomplete.types';\nimport { zAutocompleteInputVariants, zAutocompleteOptionVariants } from './z-autocomplete.variants';\n\n@Component({\n selector: 'z-autocomplete',\n imports: [\n FormsModule,\n NgClass,\n NgTemplateOutlet,\n ZIconComponent,\n ZLoadingComponent,\n ZPopoverDirective,\n ZTooltipDirective,\n ZEmptyComponent,\n ZHighlightPipe,\n ZSafeHtmlPipe,\n ],\n standalone: true,\n templateUrl: './z-autocomplete.component.html',\n styleUrl: './z-autocomplete.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZAutocompleteComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zAutocomplete',\n})\nexport class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValueAccessor {\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _query$ = new Subject<string>();\n\n protected readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('triggerEl');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected readonly dropdownTpl = viewChild<TemplateRef<unknown>>('dropdownTpl');\n protected readonly virtualScrollRef = viewChild<ElementRef<HTMLDivElement>>('virtualScrollElement');\n protected readonly optionsContainerRef = viewChild<ElementRef<HTMLDivElement>>('optionsContainer');\n protected readonly virtualOptionElements = viewChildren<ElementRef<HTMLDivElement>>('virtualOptionEl');\n\n public readonly class = input<ClassValue>('');\n public readonly zOptions = input<ZAutocompleteOption<T>[]>([]);\n public readonly zConfig = input<Partial<ZAutocompleteConfig>>({});\n public readonly zSize = input<ZAutocompleteSize>('default');\n public readonly zType = input<ZAutocompleteType>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zPrefix = input<ZIcon | ''>('');\n public readonly zSuffix = input<ZIcon | ''>('');\n public readonly zAllowClear = input(true, { transform: zTransform });\n public readonly zVirtualScroll = input(false, { transform: zTransform });\n public readonly zDynamicSize = input(true, { transform: zTransform });\n public readonly zOptionHeight = input<number>(36);\n public readonly zHeightExpand = input<number>(280);\n public readonly zMaxVisible = input<number | null>(null);\n public readonly zResetOnSelect = input(true, { transform: zTransform });\n public readonly zEmptyText = input<string>('');\n public readonly zEmptyIcon = input<ZIcon>('lucideSearchX');\n public readonly zNoDataText = input<string>('');\n public readonly zNoDataIcon = input<ZIcon>('lucidePackageOpen');\n public readonly zAllowCustomValue = input(false, { transform: zTransform });\n public readonly zDebounceTime = input<number>(200);\n public readonly zOptionTemplate = input<ZAutocompleteOptionTemplate<T> | null>(null);\n\n public readonly zOnSearch = output<string>();\n public readonly zOnSelect = output<ZAutocompleteOption<T>>();\n public readonly zOnEnter = output<string>();\n public readonly zOnCommit = output<ZAutocompleteCommitEvent>();\n public readonly zValueChange = output<string>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zControl = output<ZAutocompleteControl<T>>();\n public readonly zEvent = output<ZEvent>();\n\n private readonly _value = signal<string>('');\n private readonly _disabled = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _popoverControl = signal<ZPopoverControl | null>(null);\n private readonly _selectedOption = signal<ZAutocompleteOption<T> | null>(null);\n\n protected readonly uiState = signal({\n isOpen: false,\n isFocused: false,\n touched: false,\n dirty: false,\n });\n\n protected readonly actualPosition = signal<ZPopoverPosition>('bottom');\n protected readonly autocompleteId = zUuid('z-autocomplete');\n protected readonly dropdownId = `${this.autocompleteId}-dropdown`;\n protected readonly inputValue = signal('');\n protected readonly searchQuery = signal('');\n protected readonly isTyping = signal(false);\n protected readonly activeIndex = signal(-1);\n protected readonly dropdownWidth = signal(0);\n\n private readonly _isActivelyTyping = signal(false);\n private readonly _pendingSearch = signal(false);\n\n /** Stores input value before keyboard navigation for ESC revert */\n private _valueBeforeNavigation: string | null = null;\n\n /** Track previous zOptions reference to detect changes */\n private _prevOptionsRef: ZAutocompleteOption<T>[] | null = null;\n\n /**\n * Effect to reset _pendingSearch when parent responds.\n * Handles both:\n * - API calls: parent sets zLoading = true (takes over loading state)\n * - Local filtering: parent updates zOptions without zLoading\n */\n private readonly _pendingSearchEffect = effect(() => {\n const loading = this.zLoading();\n const options = this.zOptions();\n\n if (!this._pendingSearch()) {\n this._prevOptionsRef = options;\n return;\n }\n\n // Parent set zLoading = true → parent takes over loading state\n if (loading) {\n this._pendingSearch.set(false);\n this._prevOptionsRef = options;\n return;\n }\n\n // zOptions changed (local filter or API response without zLoading)\n if (this._prevOptionsRef !== null && options !== this._prevOptionsRef) {\n this._pendingSearch.set(false);\n }\n\n this._prevOptionsRef = options;\n });\n\n protected readonly virtualizer = injectVirtualizer(() => ({\n scrollElement: this.virtualScrollRef(),\n count: this.filteredOptions().length,\n estimateSize: () => this.effectiveOptionHeight(),\n measureElement: (element: Element) => element.getBoundingClientRect().height,\n overscan: 5,\n }));\n\n private readonly _measureVirtualItems = effect(() => {\n if (!this.zDynamicSize()) {\n return;\n }\n\n const elements = this.virtualOptionElements();\n for (const el of elements) {\n this.virtualizer.measureElement(el.nativeElement);\n }\n });\n\n protected readonly config = computed<ZAutocompleteConfig>(() => ({\n ...Z_AUTOCOMPLETE_DEFAULT_CONFIG,\n ...this.zConfig(),\n }));\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly isReadonly = computed(() => this.zReadonly());\n protected readonly isInteractionDisabled = computed(() => this.isDisabled() || this.isReadonly() || this.zLoading());\n\n protected readonly effectiveOptionHeight = computed(() => this.zOptionHeight() || this.config().optionHeight);\n protected readonly effectiveHeightExpand = computed(() => this.zHeightExpand() || this.config().dropdownMaxHeight);\n\n protected readonly effectiveEmptyText = computed(() => this.zEmptyText() || this.config().emptyMessage);\n protected readonly effectiveNoDataText = computed(() => this.zNoDataText() || this.config().noDataMessage);\n\n protected readonly effectiveDebounceTime = computed(() => this.zDebounceTime());\n\n protected readonly highlightQuery = computed(() =>\n this.zType() === 'address_bar' ? this.searchQuery() : this.inputValue()\n );\n\n /**\n * Internal loading state that bridges typing debounce and parent response.\n * Shows loading when:\n * - User is actively typing (debounce in progress)\n * - Waiting for parent to respond after zOnSearch emitted (_pendingSearch)\n *\n * For server search mode, this is only used during typing debounce.\n * Parent controls the actual loading state via zLoading input.\n */\n protected readonly isLoadingState = computed(() => {\n const hasInput = this.inputValue().trim() !== '';\n // Show loading during typing (debounce) or waiting for parent response\n return hasInput && (this.isTyping() || this._pendingSearch());\n });\n\n protected readonly isPositionTop = computed(() => {\n const pos = this.actualPosition();\n return pos.startsWith('top');\n });\n\n protected readonly shouldUseVirtualScroll = computed(() => {\n if (this.zVirtualScroll()) {\n return true;\n }\n\n const maxVisible = this.zMaxVisible();\n if (maxVisible !== null && this.zOptions().length > maxVisible) {\n return true;\n }\n\n return this.zOptions().length > 50;\n });\n\n protected readonly filteredOptions = computed(() => {\n const options = this.zOptions();\n const isAddressBarMode = this.zType() === 'address_bar';\n const cfg = this.config();\n const allowCustom = this.zAllowCustomValue();\n const isActivelyTyping = this._isActivelyTyping();\n const query = isAddressBarMode ? this.searchQuery() : this.inputValue();\n\n // If server search is enabled, skip local filtering - just apply maxDisplayed limit\n if (cfg.serverSearch) {\n let result = options;\n if (cfg.maxDisplayed && options.length > cfg.maxDisplayed) {\n result = options.slice(0, cfg.maxDisplayed);\n }\n\n // Allow custom value: if no results from server, show typed text as option\n if (allowCustom && result.length === 0 && query.trim() !== '') {\n return [{ label: query.trim(), value: query.trim() as T }];\n }\n\n return result;\n }\n\n if (!isActivelyTyping) {\n if (cfg.maxDisplayed && options.length > cfg.maxDisplayed) {\n return options.slice(0, cfg.maxDisplayed);\n }\n return options;\n }\n\n if (!query || query.trim() === '') {\n if (cfg.maxDisplayed && options.length > cfg.maxDisplayed) {\n return options.slice(0, cfg.maxDisplayed);\n }\n return options;\n }\n\n const normalizedQuery = zRemoveVietnamese(query.toLowerCase());\n let filtered = options.filter(opt => {\n const normalizedLabel = zRemoveVietnamese(opt.label.toLowerCase());\n return normalizedLabel.includes(normalizedQuery);\n });\n\n if (cfg.maxDisplayed && filtered.length > cfg.maxDisplayed) {\n filtered = filtered.slice(0, cfg.maxDisplayed);\n }\n\n if (allowCustom && filtered.length === 0 && query.trim() !== '') {\n return [{ label: query.trim(), value: query.trim() as T }];\n }\n\n return filtered;\n });\n\n protected readonly hasValue = computed(() => {\n const value = this.inputValue();\n return value !== null && value !== undefined && value.trim() !== '';\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n\n if (this.isReadonly()) {\n return 'readonly';\n }\n\n if (this.uiState().isOpen) {\n return 'open';\n }\n\n return 'default';\n });\n\n protected readonly inputClasses = computed(() =>\n zMergeClasses(\n zAutocompleteInputVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus() as 'default' | 'open' | 'error' | 'disabled' | 'readonly',\n }),\n this.class()\n )\n );\n\n public readonly state = computed<ZAutocompleteState>(() => ({\n focused: this.uiState().isFocused,\n touched: this.uiState().touched,\n dirty: this.uiState().dirty,\n disabled: this.isDisabled(),\n readonly: this.isReadonly(),\n open: this.uiState().isOpen,\n }));\n\n private _onChange: (value: string) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n private _isNavigationFilling = false;\n\n constructor() {\n effect(onCleanup => {\n const triggerEl = this.triggerRef()?.nativeElement;\n if (!triggerEl) {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n this.dropdownWidth.set(triggerEl.getBoundingClientRect().width);\n });\n\n observer.observe(triggerEl);\n this.dropdownWidth.set(triggerEl.getBoundingClientRect().width);\n\n onCleanup(() => {\n observer.disconnect();\n });\n });\n\n effect(() => {\n const options = this.filteredOptions();\n const { isOpen } = this.uiState();\n\n if (isOpen && options.length > 0) {\n this.activeIndex.set(0);\n }\n });\n\n effect(() => {\n const idx = this.activeIndex();\n const { isOpen } = this.uiState();\n\n if (!isOpen || idx < 0) {\n return;\n }\n\n if (!this.shouldUseVirtualScroll()) {\n const container = this.optionsContainerRef()?.nativeElement;\n if (!container) {\n return;\n }\n\n const options = container.querySelectorAll('.z-autocomplete-option');\n const activeOption = options[idx] as HTMLElement;\n if (activeOption) {\n activeOption.scrollIntoView({ block: 'nearest' });\n }\n }\n });\n }\n\n ngOnInit(): void {\n this._setupDebounce();\n this._emitControl();\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n if (this._ngControl?.control) {\n this._formControl.set(this._ngControl.control);\n }\n } catch {\n this._ngControl = null;\n }\n });\n }\n\n public writeValue(value: string): void {\n this._value.set(value ?? '');\n this.inputValue.set(value ?? '');\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(value ?? '');\n }\n }\n\n public registerOnChange(fn: (value: string) => 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 protected onInput(event: Event): void {\n const { value } = event.target as HTMLInputElement;\n this.inputValue.set(value);\n this._value.set(value);\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._onChange(value);\n\n this._isActivelyTyping.set(true);\n this.isTyping.set(true);\n if (!this._isNavigationFilling) {\n this._query$.next(value);\n }\n\n this.zValueChange.emit(value);\n\n if (!this.uiState().isOpen) {\n this._openPanel();\n }\n\n this._selectedOption.set(null);\n }\n\n protected onFocus(event: FocusEvent): void {\n this.uiState.update(s => ({ ...s, isFocused: true }));\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n this._openPanel();\n }\n\n protected onInputClick(): void {\n if (this.uiState().isOpen) {\n return;\n }\n this._openPanel();\n }\n\n protected onBlur(event: FocusEvent): void {\n this.uiState.update(s => ({ ...s, isFocused: false }));\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n\n if (this.uiState().dirty) {\n this.uiState.update(s => ({ ...s, touched: true }));\n }\n\n this._onTouched();\n const currentValue = this.inputValue();\n this.zOnCommit.emit({ value: currentValue, source: 'blur' });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isInteractionDisabled()) {\n return;\n }\n\n const { isOpen } = this.uiState();\n const options = this.filteredOptions();\n const currentValue = this.inputValue();\n const isAddressBarMode = this.zType() === 'address_bar';\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!isOpen) {\n this._openPanel();\n return;\n }\n\n this._handleEnterKey(options, currentValue);\n return;\n }\n\n if (!isOpen) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this._openPanel();\n }\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (this._valueBeforeNavigation === null) {\n this._valueBeforeNavigation = currentValue;\n }\n this.activeIndex.update(i => (i < options.length - 1 ? i + 1 : 0));\n if (isAddressBarMode) {\n this._fillInputFromActiveOption();\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (this._valueBeforeNavigation === null) {\n this._valueBeforeNavigation = currentValue;\n }\n this.activeIndex.update(i => (i > 0 ? i - 1 : options.length - 1));\n if (isAddressBarMode) {\n this._fillInputFromActiveOption();\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n if (isAddressBarMode && this._valueBeforeNavigation !== null) {\n this._revertToValueBeforeNavigation();\n }\n this._valueBeforeNavigation = null;\n this._closePanel();\n break;\n\n case 'Tab':\n this._valueBeforeNavigation = null;\n this._closePanel();\n break;\n }\n }\n\n private _handleEnterKey(options: ZAutocompleteOption<T>[], currentValue: string): void {\n const trimmedValue = currentValue.trim();\n this._valueBeforeNavigation = null;\n this.zOnCommit.emit({ value: trimmedValue, source: 'enter' });\n\n if (this.zType() === 'address_bar') {\n this._closePanel();\n return;\n }\n\n const idx = this.activeIndex();\n if (options.length > 0) {\n const selectedIdx = idx >= 0 && idx < options.length ? idx : 0;\n this.selectOption(options[selectedIdx]);\n return;\n }\n\n if (this.zAllowCustomValue() && trimmedValue) {\n this.zOnEnter.emit(trimmedValue);\n this._resetInput();\n }\n }\n\n private _fillInputFromActiveOption(): void {\n const idx = this.activeIndex();\n const options = this.filteredOptions();\n\n if (idx < 0 || idx >= options.length) {\n return;\n }\n\n const option = options[idx];\n this._isNavigationFilling = true;\n this.inputValue.set(option.label);\n this._value.set(option.label);\n this._onChange(option.label);\n this.zValueChange.emit(option.label);\n\n const inputEl = this.inputRef()?.nativeElement;\n if (inputEl) {\n inputEl.value = option.label;\n }\n\n setTimeout(() => {\n this._isNavigationFilling = false;\n }, 0);\n }\n\n private _revertToValueBeforeNavigation(): void {\n if (this._valueBeforeNavigation === null) {\n return;\n }\n\n const value = this._valueBeforeNavigation;\n this._isNavigationFilling = true;\n this.inputValue.set(value);\n this._value.set(value);\n this._onChange(value);\n this.zValueChange.emit(value);\n\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(value);\n }\n\n const inputEl = this.inputRef()?.nativeElement;\n if (inputEl) {\n inputEl.value = value;\n }\n\n this._valueBeforeNavigation = null;\n setTimeout(() => {\n this._isNavigationFilling = false;\n }, 0);\n }\n\n private _resetInput(): void {\n if (!this.zResetOnSelect()) {\n this._closePanel();\n this.activeIndex.set(-1);\n return;\n }\n\n this.inputValue.set('');\n this._value.set('');\n this._onChange('');\n this.zValueChange.emit('');\n this._query$.next('');\n this._closePanel();\n this.activeIndex.set(-1);\n }\n\n protected onPopoverControl(control: ZPopoverControl): void {\n this._popoverControl.set(control);\n }\n\n protected onPopoverShow(): void {\n this.uiState.update(s => ({ ...s, isOpen: true }));\n\n setTimeout(() => {\n this.inputRef()?.nativeElement.focus();\n }, 50);\n }\n\n protected onPopoverHideStart(): void {\n this.uiState.update(s => ({ ...s, isOpen: false }));\n this.activeIndex.set(-1);\n this._isActivelyTyping.set(false);\n this._query$.next('');\n }\n\n protected onPopoverHideEnd(): void {\n this.actualPosition.set('bottom');\n }\n\n protected onPositionChange(position: ZPopoverPosition): void {\n this.actualPosition.set(position);\n }\n\n protected selectOption(option: ZAutocompleteOption<T>): void {\n if (option.disabled) {\n return;\n }\n\n this.uiState.update(s => ({ ...s, dirty: true }));\n this.zOnSelect.emit(option);\n this._selectedOption.set(option);\n\n const newValue = this.zResetOnSelect() ? '' : option.label;\n this.inputValue.set(newValue);\n this._value.set(newValue);\n this._onChange(newValue);\n this.zValueChange.emit(newValue);\n this._isActivelyTyping.set(false);\n this._valueBeforeNavigation = null;\n\n if (this.config().closeOnSelect) {\n this._closePanel();\n }\n\n this.activeIndex.set(-1);\n }\n\n protected clearInput(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.inputValue.set('');\n this._value.set('');\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._onChange('');\n this.zValueChange.emit('');\n this._selectedOption.set(null);\n this._closePanel();\n this.isTyping.set(false);\n this._isActivelyTyping.set(false);\n\n if (this.zType() === 'address_bar') {\n this.searchQuery.set('');\n }\n\n this._query$.next('');\n this.zOnCommit.emit({ value: '', source: 'blur' });\n setTimeout(() => {\n this.inputRef()?.nativeElement.focus();\n });\n }\n\n protected getOptionClasses(option: ZAutocompleteOption<T>, index: number): string {\n return zAutocompleteOptionVariants({\n active: this.activeIndex() === index,\n disabled: option.disabled ?? false,\n });\n }\n\n protected trackByValue = (_index: number, option: ZAutocompleteOption<T>): unknown => option.value;\n\n public focus(): void {\n this.inputRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this.inputRef()?.nativeElement.blur();\n }\n\n public clear(): void {\n this.inputValue.set('');\n this._value.set('');\n this._onChange('');\n this.zValueChange.emit('');\n this._selectedOption.set(null);\n this._closePanel();\n this.isTyping.set(false);\n this._isActivelyTyping.set(false);\n if (this.zType() === 'address_bar') {\n this.searchQuery.set('');\n }\n }\n\n public reset(): void {\n this.clear();\n this.uiState.update(s => ({ ...s, touched: false, dirty: false }));\n }\n\n public open(): void {\n this._openPanel();\n }\n\n public close(): void {\n this._closePanel();\n }\n\n public setValue(value: string): void {\n this._value.set(value);\n this.inputValue.set(value);\n this._selectedOption.set(null);\n this._onChange(value);\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(value);\n }\n }\n\n private _openPanel(): void {\n if (this.isInteractionDisabled()) {\n return;\n }\n\n this._popoverControl()?.show();\n }\n\n private _closePanel(): void {\n this._popoverControl()?.close();\n }\n\n private _setupDebounce(): void {\n this._query$\n .pipe(debounceTime(this.effectiveDebounceTime()), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe(query => {\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(query);\n }\n\n this.isTyping.set(false);\n this._pendingSearch.set(true);\n this.zOnSearch.emit(query);\n\n // Only use fallback timeout for local search mode\n // For server search, parent controls loading via zLoading input\n if (!this.config().serverSearch) {\n setTimeout(() => {\n if (this._pendingSearch()) {\n this._pendingSearch.set(false);\n }\n }, 50);\n }\n });\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n focus: () => this.focus(),\n blur: () => this.blur(),\n clear: () => this.clear(),\n reset: () => this.reset(),\n open: () => this.open(),\n close: () => this.close(),\n setValue: (val: string) => this.setValue(val),\n value: this._value.asReadonly(),\n selectedOption: this._selectedOption.asReadonly(),\n state: this.state,\n });\n }\n}\n","<div class=\"z-autocomplete-wrapper relative flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"autocompleteId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div\n #triggerEl\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n [zOffset]=\"0\"\n [zDisabled]=\"isInteractionDisabled()\"\n zTrigger=\"manual\"\n zPosition=\"bottom\"\n zClass=\"border-0 shadow-none bg-transparent p-0\"\n (zControl)=\"onPopoverControl($event)\"\n (zShow)=\"onPopoverShow()\"\n (zHideStart)=\"onPopoverHideStart()\"\n (zHide)=\"onPopoverHideEnd()\"\n (zPositionChange)=\"onPositionChange($event)\"\n class=\"z-autocomplete-trigger\"\n [class]=\"inputClasses()\"\n [class.z-autocomplete-open]=\"uiState().isOpen\"\n [class.z-autocomplete-open-top]=\"uiState().isOpen && isPositionTop()\"\n [class.z-autocomplete-open-bottom]=\"uiState().isOpen && !isPositionTop()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"uiState().isOpen\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"dropdownId\">\n @if (zPrefix()) {\n <z-icon [zType]=\"zPrefix() || 'lucideSearch'\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n\n <input\n #inputEl\n [id]=\"autocompleteId\"\n type=\"text\"\n class=\"z-autocomplete-input min-w-0 flex-1 bg-transparent outline-none\"\n [class.text-sm]=\"zSize() === 'sm' || zSize() === 'default'\"\n [placeholder]=\"zPlaceholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"isReadonly()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (click)=\"onInputClick()\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\" />\n\n @if (zLoading() || isLoadingState()) {\n <z-icon zType=\"lucideLoaderCircle\" zSize=\"16\" class=\"text-muted-foreground shrink-0 animate-spin\" />\n } @else {\n @if (zAllowClear() && hasValue() && !isDisabled() && !isReadonly()) {\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:text-foreground flex shrink-0 cursor-pointer items-center justify-center transition-colors\"\n (mousedown)=\"clearInput($event)\"\n tabindex=\"-1\">\n <z-icon zType=\"lucideX\" zSize=\"14\" class=\"cursor-pointer!\" />\n </button>\n }\n\n @if (zSuffix()) {\n <z-icon [zType]=\"zSuffix() || 'lucideSearch'\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n }\n </div>\n</div>\n\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n [id]=\"dropdownId\"\n class=\"z-autocomplete-dropdown bg-popover border-ring overflow-hidden border shadow-lg\"\n [class.z-autocomplete-dropdown-bottom]=\"!isPositionTop()\"\n [class.rounded-b-[6px]]=\"!isPositionTop()\"\n [class.rounded-t-[6px]]=\"isPositionTop()\"\n [class.border-t-0]=\"!isPositionTop()\"\n [class.border-b-0]=\"isPositionTop()\"\n [style.width.px]=\"dropdownWidth()\"\n role=\"listbox\"\n (mousedown)=\"$event.preventDefault()\">\n @if (zLoading() || isLoadingState()) {\n <div\n class=\"z-autocomplete-content-state flex flex-col items-center justify-center\"\n [style.minHeight.px]=\"effectiveHeightExpand()\">\n <z-loading [zLoading]=\"true\" zSize=\"default\" />\n </div>\n } @else {\n @if (filteredOptions().length === 0) {\n <!-- Empty State -->\n <div\n class=\"z-autocomplete-content-state flex flex-col items-center justify-center p-1\"\n [style.minHeight.px]=\"effectiveHeightExpand()\">\n @if (inputValue().trim() !== '') {\n <!-- Searched but no results -->\n <z-empty [zIcon]=\"zEmptyIcon()\" zSize=\"sm\" [zMessage]=\"effectiveEmptyText()\" />\n } @else {\n <!-- No data initially -->\n <z-empty [zIcon]=\"zNoDataIcon()\" zSize=\"sm\" [zMessage]=\"effectiveNoDataText()\" />\n }\n </div>\n } @else if (shouldUseVirtualScroll()) {\n <!-- Virtual Scroll Mode -->\n <div\n #virtualScrollElement\n class=\"z-autocomplete-content-state z-autocomplete-options z-autocomplete-virtual-scroll relative overflow-x-hidden overflow-y-auto overscroll-y-contain p-1\"\n [style.height.px]=\"effectiveHeightExpand()\">\n <div class=\"z-autocomplete-virtual-inner relative\" [style.height.px]=\"virtualizer.getTotalSize()\">\n @for (virtualItem of virtualizer.getVirtualItems(); track virtualItem.index) {\n @let opt = filteredOptions()[virtualItem.index];\n @let isActive = activeIndex() === virtualItem.index;\n <div\n #virtualOptionEl\n class=\"z-autocomplete-option absolute right-0 left-0 min-w-0\"\n [ngClass]=\"getOptionClasses(opt, virtualItem.index)\"\n [attr.data-index]=\"virtualItem.index\"\n [style.height.px]=\"zDynamicSize() ? null : effectiveOptionHeight()\"\n [style.minHeight.px]=\"zDynamicSize() ? effectiveOptionHeight() : null\"\n [style.transform]=\"'translateY(' + virtualItem.start + 'px)'\"\n [attr.aria-selected]=\"isActive\"\n role=\"option\"\n (mouseenter)=\"activeIndex.set(virtualItem.index)\"\n (click)=\"selectOption(opt)\">\n @if (zOptionTemplate()) {\n <ng-container *ngTemplateOutlet=\"zOptionTemplate()!; context: { $implicit: opt, active: isActive }\" />\n } @else {\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <div class=\"min-w-0 flex-1\">\n <span\n class=\"block min-w-0 truncate\"\n z-tooltip\n [zContent]=\"opt.label\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"virtualOptionEl\"\n [innerHTML]=\"\n config().highlightMatch ? (opt.label | zHighlight: highlightQuery() | zSafeHtml) : opt.label\n \"></span>\n @if (opt.description) {\n <span class=\"text-muted-foreground block min-w-0 truncate text-xs\">{{ opt.description }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Normal Scroll Mode -->\n <div\n #optionsContainer\n class=\"z-autocomplete-content-state z-autocomplete-options flex flex-col gap-0.75 overflow-x-hidden overflow-y-auto overscroll-y-contain p-1\"\n [style.minHeight.px]=\"effectiveHeightExpand()\"\n [style.maxHeight.px]=\"effectiveHeightExpand()\">\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n @let isActive = activeIndex() === i;\n <div\n #optionEl2\n class=\"z-autocomplete-option relative min-w-0\"\n [ngClass]=\"getOptionClasses(opt, i)\"\n [style.minHeight.px]=\"effectiveOptionHeight()\"\n [attr.aria-selected]=\"isActive\"\n role=\"option\"\n (mouseenter)=\"activeIndex.set(i)\"\n (click)=\"selectOption(opt)\">\n @if (zOptionTemplate()) {\n <ng-container *ngTemplateOutlet=\"zOptionTemplate()!; context: { $implicit: opt, active: isActive }\" />\n } @else {\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <div class=\"min-w-0 flex-1\">\n <span\n class=\"block min-w-0 truncate\"\n z-tooltip\n [zContent]=\"opt.label\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"optionEl2\"\n [innerHTML]=\"\n config().highlightMatch ? (opt.label | zHighlight: highlightQuery() | zSafeHtml) : opt.label\n \"></span>\n @if (opt.description) {\n <span class=\"text-muted-foreground block min-w-0 truncate text-xs\">{{ opt.description }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n</ng-template>\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-autocomplete.mjs","sources":["../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.types.ts","../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.variants.ts","../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.component.ts","../../../../libs/core-ui/components/z-autocomplete/z-autocomplete.component.html","../../../../libs/core-ui/components/z-autocomplete/shival99-z-ui-components-z-autocomplete.ts"],"sourcesContent":["import type { Signal, TemplateRef } from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\n\nexport interface ZAutocompleteOption<T = unknown> {\n label: string;\n value: T;\n disabled?: boolean;\n description?: string;\n icon?: ZIcon;\n}\n\nexport interface ZAutocompleteConfig {\n minLength: number;\n debounceTime: number;\n maxDisplayed: number;\n highlightMatch: boolean;\n emptyMessage: string;\n noDataMessage: string;\n closeOnSelect: boolean;\n optionHeight: number;\n dropdownMaxHeight: number;\n /** Skip local filtering when using server-side search */\n serverSearch: boolean;\n}\n\nexport const Z_AUTOCOMPLETE_DEFAULT_CONFIG: ZAutocompleteConfig = {\n minLength: 1,\n debounceTime: 0,\n maxDisplayed: 0,\n highlightMatch: true,\n emptyMessage: 'i18n_z_ui_autocomplete_no_results',\n noDataMessage: 'i18n_z_ui_autocomplete_no_data',\n closeOnSelect: true,\n optionHeight: 36,\n dropdownMaxHeight: 280,\n serverSearch: false,\n};\n\nexport type ZAutocompleteSize = 'sm' | 'default' | 'lg';\n\nexport type ZAutocompleteType = 'default' | 'address_bar';\n\nexport interface ZAutocompleteState {\n focused: boolean;\n touched: boolean;\n dirty: boolean;\n disabled: boolean;\n readonly: boolean;\n open: boolean;\n}\n\nexport interface ZAutocompleteCommitEvent {\n value: string;\n source: 'enter' | 'blur';\n}\n\nexport interface ZAutocompleteControl<T = unknown> {\n focus: () => void;\n blur: () => void;\n clear: () => void;\n reset: () => void;\n open: () => void;\n close: () => void;\n setValue: (value: string) => void;\n value: Signal<string>;\n selectedOption: Signal<ZAutocompleteOption<T> | null>;\n /**\n * @deprecated Use individual event outputs (zOnFocus, zOnBlur, etc.) instead.\n * Will be removed in a future version.\n */\n state: Signal<ZAutocompleteState>;\n}\n\nexport type ZAutocompleteOptionTemplate<T = unknown> = TemplateRef<{\n $implicit: ZAutocompleteOption<T>;\n active: boolean;\n}>;\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zAutocompleteInputVariants = cva(\n [\n 'flex w-full items-center rounded-[0.375rem] border border-input bg-white shadow-xs',\n 'transition-[border-color,box-shadow,background-color,color,opacity,border-radius] duration-200',\n 'dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n 'outline-none',\n 'text-sm',\n ],\n {\n variants: {\n zSize: {\n sm: 'h-8 px-2 gap-2 text-sm',\n default: 'h-9 px-2.5 gap-2 text-sm',\n lg: 'h-10 px-3 gap-2.5 text-sm',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n open: 'border-ring',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'cursor-default bg-muted/50 text-muted-foreground',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZAutocompleteInputVariants = VariantProps<typeof zAutocompleteInputVariants>;\n\nexport const zAutocompleteOptionVariants = cva(\n 'flex items-center gap-2 px-2 py-1.5 cursor-pointer transition-colors text-sm rounded-[0.25rem] outline-none',\n {\n variants: {\n active: {\n true: 'bg-primary/15 text-primary',\n false: 'hover:bg-primary/10 hover:text-foreground',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n active: false,\n disabled: false,\n },\n }\n);\n\nexport type ZAutocompleteOptionVariants = VariantProps<typeof zAutocompleteOptionVariants>;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type AbstractControl, ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { injectVirtualizer } from '@shival99/angular-virtual';\nimport { ZEmptyComponent } from '@shival99/z-ui/components/z-empty';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZLoadingComponent } from '@shival99/z-ui/components/z-loading';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport type { ZPopoverControl, ZPopoverPosition } from '@shival99/z-ui/components/z-popover';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZHighlightPipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { zUuid, zMergeClasses, zTransform, zRemoveVietnamese, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { debounceTime, distinctUntilChanged, Subject } from 'rxjs';\nimport type {\n ZAutocompleteOption,\n ZAutocompleteConfig,\n ZAutocompleteSize,\n ZAutocompleteType,\n ZAutocompleteState,\n ZAutocompleteControl,\n ZAutocompleteOptionTemplate,\n ZAutocompleteCommitEvent,\n} from './z-autocomplete.types';\nimport { Z_AUTOCOMPLETE_DEFAULT_CONFIG } from './z-autocomplete.types';\nimport { zAutocompleteInputVariants, zAutocompleteOptionVariants } from './z-autocomplete.variants';\n\n@Component({\n selector: 'z-autocomplete',\n imports: [\n FormsModule,\n NgClass,\n NgTemplateOutlet,\n ZIconComponent,\n ZLoadingComponent,\n ZPopoverDirective,\n ZTooltipDirective,\n ZEmptyComponent,\n ZHighlightPipe,\n ZSafeHtmlPipe,\n ],\n standalone: true,\n templateUrl: './z-autocomplete.component.html',\n styleUrl: './z-autocomplete.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZAutocompleteComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zAutocomplete',\n})\nexport class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValueAccessor {\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _query$ = new Subject<string>();\n\n protected readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('triggerEl');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected readonly dropdownTpl = viewChild<TemplateRef<unknown>>('dropdownTpl');\n protected readonly virtualScrollRef = viewChild<ElementRef<HTMLDivElement>>('virtualScrollElement');\n protected readonly optionsContainerRef = viewChild<ElementRef<HTMLDivElement>>('optionsContainer');\n protected readonly virtualOptionElements = viewChildren<ElementRef<HTMLDivElement>>('virtualOptionEl');\n\n public readonly class = input<ClassValue>('');\n public readonly zOptions = input<ZAutocompleteOption<T>[]>([]);\n public readonly zConfig = input<Partial<ZAutocompleteConfig>>({});\n public readonly zSize = input<ZAutocompleteSize>('default');\n public readonly zType = input<ZAutocompleteType>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zPrefix = input<ZIcon | ''>('');\n public readonly zSuffix = input<ZIcon | ''>('');\n public readonly zAllowClear = input(true, { transform: zTransform });\n public readonly zVirtualScroll = input(false, { transform: zTransform });\n public readonly zDynamicSize = input(true, { transform: zTransform });\n public readonly zOptionHeight = input<number>(36);\n public readonly zHeightExpand = input<number>(280);\n public readonly zMaxVisible = input<number | null>(null);\n public readonly zResetOnSelect = input(true, { transform: zTransform });\n public readonly zEmptyText = input<string>('');\n public readonly zEmptyIcon = input<ZIcon>('lucideSearchX');\n public readonly zNoDataText = input<string>('');\n public readonly zNoDataIcon = input<ZIcon>('lucidePackageOpen');\n public readonly zAllowCustomValue = input(false, { transform: zTransform });\n public readonly zDebounceTime = input<number>(200);\n public readonly zOptionTemplate = input<ZAutocompleteOptionTemplate<T> | null>(null);\n\n public readonly zOnSearch = output<string>();\n public readonly zOnSelect = output<ZAutocompleteOption<T>>();\n public readonly zOnEnter = output<string>();\n public readonly zOnCommit = output<ZAutocompleteCommitEvent>();\n public readonly zValueChange = output<string>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zControl = output<ZAutocompleteControl<T>>();\n public readonly zEvent = output<ZEvent>();\n\n private readonly _value = signal<string>('');\n private readonly _disabled = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _popoverControl = signal<ZPopoverControl | null>(null);\n private readonly _selectedOption = signal<ZAutocompleteOption<T> | null>(null);\n\n protected readonly uiState = signal({\n isOpen: false,\n isFocused: false,\n touched: false,\n dirty: false,\n });\n\n protected readonly actualPosition = signal<ZPopoverPosition>('bottom');\n protected readonly autocompleteId = zUuid('z-autocomplete');\n protected readonly dropdownId = `${this.autocompleteId}-dropdown`;\n protected readonly inputValue = signal('');\n protected readonly debouncedQuery = signal('');\n protected readonly searchQuery = signal('');\n protected readonly activeIndex = signal(-1);\n protected readonly dropdownWidth = signal(0);\n\n private readonly _pendingSearch = signal(false);\n private _localLoadingTimeout: ReturnType<typeof setTimeout> | null = null;\n\n /** Stores input value before keyboard navigation for ESC revert */\n private _valueBeforeNavigation: string | null = null;\n\n protected readonly virtualizer = injectVirtualizer(() => ({\n scrollElement: this.virtualScrollRef(),\n count: this.filteredOptions().length,\n estimateSize: () => this.effectiveOptionHeight(),\n measureElement: (element: Element) => element.getBoundingClientRect().height,\n overscan: 5,\n }));\n\n private readonly _measureVirtualItems = effect(() => {\n if (!this.zDynamicSize()) {\n return;\n }\n\n const elements = this.virtualOptionElements();\n for (const el of elements) {\n this.virtualizer.measureElement(el.nativeElement);\n }\n });\n\n protected readonly config = computed<ZAutocompleteConfig>(() => ({\n ...Z_AUTOCOMPLETE_DEFAULT_CONFIG,\n ...this.zConfig(),\n }));\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly isReadonly = computed(() => this.zReadonly());\n protected readonly isInteractionDisabled = computed(() => this.isDisabled() || this.isReadonly() || this.zLoading());\n\n protected readonly effectiveOptionHeight = computed(() => this.zOptionHeight() || this.config().optionHeight);\n protected readonly effectiveHeightExpand = computed(() => this.zHeightExpand() || this.config().dropdownMaxHeight);\n\n protected readonly effectiveEmptyText = computed(() => this.zEmptyText() || this.config().emptyMessage);\n protected readonly effectiveNoDataText = computed(() => this.zNoDataText() || this.config().noDataMessage);\n\n protected readonly effectiveDebounceTime = computed(() => this.zDebounceTime());\n\n protected readonly highlightQuery = computed(() =>\n this.zType() === 'address_bar' ? this.searchQuery() : this.debouncedQuery()\n );\n\n /**\n * Local-mode loading state after debounce to avoid quick flicker.\n * Server mode relies only on zLoading from parent.\n */\n protected readonly isLoadingState = computed(() => {\n if (this.config().serverSearch) {\n return false;\n }\n\n const hasInput = this.inputValue().trim() !== '';\n return hasInput && this._pendingSearch();\n });\n\n protected readonly isPositionTop = computed(() => {\n const pos = this.actualPosition();\n return pos.startsWith('top');\n });\n\n protected readonly shouldUseVirtualScroll = computed(() => {\n if (this.zVirtualScroll()) {\n return true;\n }\n\n const maxVisible = this.zMaxVisible();\n if (maxVisible !== null && this.zOptions().length > maxVisible) {\n return true;\n }\n\n return this.zOptions().length > 50;\n });\n\n protected readonly filteredOptions = computed(() => {\n const options = this.zOptions();\n const cfg = this.config();\n const allowCustom = this.zAllowCustomValue();\n const query = this.zType() === 'address_bar' ? this.searchQuery() : this.debouncedQuery();\n\n // If server search is enabled, skip local filtering - just apply maxDisplayed limit\n if (cfg.serverSearch) {\n let result = options;\n if (cfg.maxDisplayed && options.length > cfg.maxDisplayed) {\n result = options.slice(0, cfg.maxDisplayed);\n }\n\n // Allow custom value: if no results from server, show typed text as option\n if (allowCustom && result.length === 0 && query.trim() !== '') {\n return [{ label: query.trim(), value: query.trim() as T }];\n }\n\n return result;\n }\n\n if (!query || query.trim() === '') {\n if (cfg.maxDisplayed && options.length > cfg.maxDisplayed) {\n return options.slice(0, cfg.maxDisplayed);\n }\n return options;\n }\n\n const normalizedQuery = zRemoveVietnamese(query.toLowerCase());\n let filtered = options.filter(opt => {\n const normalizedLabel = zRemoveVietnamese(opt.label.toLowerCase());\n return normalizedLabel.includes(normalizedQuery);\n });\n\n if (cfg.maxDisplayed && filtered.length > cfg.maxDisplayed) {\n filtered = filtered.slice(0, cfg.maxDisplayed);\n }\n\n if (allowCustom && filtered.length === 0 && query.trim() !== '') {\n return [{ label: query.trim(), value: query.trim() as T }];\n }\n\n return filtered;\n });\n\n protected readonly hasValue = computed(() => {\n const value = this.inputValue();\n return value !== null && value !== undefined && value.trim() !== '';\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n\n if (this.isReadonly()) {\n return 'readonly';\n }\n\n if (this.uiState().isOpen) {\n return 'open';\n }\n\n return 'default';\n });\n\n protected readonly inputClasses = computed(() =>\n zMergeClasses(\n zAutocompleteInputVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus() as 'default' | 'open' | 'error' | 'disabled' | 'readonly',\n }),\n this.class()\n )\n );\n\n public readonly state = computed<ZAutocompleteState>(() => ({\n focused: this.uiState().isFocused,\n touched: this.uiState().touched,\n dirty: this.uiState().dirty,\n disabled: this.isDisabled(),\n readonly: this.isReadonly(),\n open: this.uiState().isOpen,\n }));\n\n private _onChange: (value: string) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n private _isNavigationFilling = false;\n\n constructor() {\n effect(onCleanup => {\n const triggerEl = this.triggerRef()?.nativeElement;\n if (!triggerEl) {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n this.dropdownWidth.set(triggerEl.getBoundingClientRect().width);\n });\n\n observer.observe(triggerEl);\n this.dropdownWidth.set(triggerEl.getBoundingClientRect().width);\n\n onCleanup(() => {\n observer.disconnect();\n });\n });\n\n effect(() => {\n const options = this.filteredOptions();\n const { isOpen } = this.uiState();\n\n if (isOpen && options.length > 0) {\n this.activeIndex.set(0);\n }\n });\n\n effect(() => {\n const idx = this.activeIndex();\n const { isOpen } = this.uiState();\n\n if (!isOpen || idx < 0) {\n return;\n }\n\n if (!this.shouldUseVirtualScroll()) {\n const container = this.optionsContainerRef()?.nativeElement;\n if (!container) {\n return;\n }\n\n const options = container.querySelectorAll('.z-autocomplete-option');\n const activeOption = options[idx] as HTMLElement;\n if (activeOption) {\n activeOption.scrollIntoView({ block: 'nearest' });\n }\n }\n });\n }\n\n ngOnInit(): void {\n this._setupDebounce();\n this._emitControl();\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n if (this._ngControl?.control) {\n this._formControl.set(this._ngControl.control);\n }\n } catch {\n this._ngControl = null;\n }\n });\n }\n\n public writeValue(value: string): void {\n this._value.set(value ?? '');\n this.inputValue.set(value ?? '');\n this.debouncedQuery.set(value ?? '');\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(value ?? '');\n }\n }\n\n public registerOnChange(fn: (value: string) => 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 protected onInput(event: Event): void {\n const { value } = event.target as HTMLInputElement;\n this._clearLocalLoadingTimer();\n this._pendingSearch.set(false);\n this.inputValue.set(value);\n this._value.set(value);\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._onChange(value);\n if (!this._isNavigationFilling) {\n this._query$.next(value);\n }\n\n this.zValueChange.emit(value);\n\n if (!this.uiState().isOpen) {\n this._openPanel();\n }\n\n this._selectedOption.set(null);\n }\n\n protected onFocus(event: FocusEvent): void {\n this.uiState.update(s => ({ ...s, isFocused: true }));\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n this._openPanel();\n }\n\n protected onInputClick(): void {\n if (this.uiState().isOpen) {\n return;\n }\n this._openPanel();\n }\n\n protected onBlur(event: FocusEvent): void {\n this.uiState.update(s => ({ ...s, isFocused: false }));\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n\n if (this.uiState().dirty) {\n this.uiState.update(s => ({ ...s, touched: true }));\n }\n\n this._onTouched();\n const currentValue = this.inputValue();\n this.zOnCommit.emit({ value: currentValue, source: 'blur' });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isInteractionDisabled()) {\n return;\n }\n\n const { isOpen } = this.uiState();\n const options = this.filteredOptions();\n const currentValue = this.inputValue();\n const isAddressBarMode = this.zType() === 'address_bar';\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!isOpen) {\n this._openPanel();\n return;\n }\n\n this._handleEnterKey(options, currentValue);\n return;\n }\n\n if (!isOpen) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this._openPanel();\n }\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (this._valueBeforeNavigation === null) {\n this._valueBeforeNavigation = currentValue;\n }\n this.activeIndex.update(i => (i < options.length - 1 ? i + 1 : 0));\n if (isAddressBarMode) {\n this._fillInputFromActiveOption();\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (this._valueBeforeNavigation === null) {\n this._valueBeforeNavigation = currentValue;\n }\n this.activeIndex.update(i => (i > 0 ? i - 1 : options.length - 1));\n if (isAddressBarMode) {\n this._fillInputFromActiveOption();\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n if (isAddressBarMode && this._valueBeforeNavigation !== null) {\n this._revertToValueBeforeNavigation();\n }\n this._valueBeforeNavigation = null;\n this._closePanel();\n break;\n\n case 'Tab':\n this._valueBeforeNavigation = null;\n this._closePanel();\n break;\n }\n }\n\n private _handleEnterKey(options: ZAutocompleteOption<T>[], currentValue: string): void {\n const trimmedValue = currentValue.trim();\n this._valueBeforeNavigation = null;\n this.zOnCommit.emit({ value: trimmedValue, source: 'enter' });\n\n if (this.zType() === 'address_bar') {\n this._closePanel();\n return;\n }\n\n const idx = this.activeIndex();\n if (options.length > 0) {\n const selectedIdx = idx >= 0 && idx < options.length ? idx : 0;\n this.selectOption(options[selectedIdx]);\n return;\n }\n\n if (this.zAllowCustomValue() && trimmedValue) {\n this.zOnEnter.emit(trimmedValue);\n this._resetInput();\n }\n }\n\n private _fillInputFromActiveOption(): void {\n const idx = this.activeIndex();\n const options = this.filteredOptions();\n\n if (idx < 0 || idx >= options.length) {\n return;\n }\n\n const option = options[idx];\n this._isNavigationFilling = true;\n this.inputValue.set(option.label);\n this._value.set(option.label);\n this._onChange(option.label);\n this.zValueChange.emit(option.label);\n\n const inputEl = this.inputRef()?.nativeElement;\n if (inputEl) {\n inputEl.value = option.label;\n }\n\n setTimeout(() => {\n this._isNavigationFilling = false;\n }, 0);\n }\n\n private _revertToValueBeforeNavigation(): void {\n if (this._valueBeforeNavigation === null) {\n return;\n }\n\n const value = this._valueBeforeNavigation;\n this._isNavigationFilling = true;\n this.inputValue.set(value);\n this._value.set(value);\n this._onChange(value);\n this.zValueChange.emit(value);\n\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(value);\n }\n\n const inputEl = this.inputRef()?.nativeElement;\n if (inputEl) {\n inputEl.value = value;\n }\n\n this._valueBeforeNavigation = null;\n setTimeout(() => {\n this._isNavigationFilling = false;\n }, 0);\n }\n\n private _resetInput(): void {\n if (!this.zResetOnSelect()) {\n this._closePanel();\n this.activeIndex.set(-1);\n return;\n }\n\n this.inputValue.set('');\n this._value.set('');\n this._onChange('');\n this.zValueChange.emit('');\n this._query$.next('');\n this._closePanel();\n this.activeIndex.set(-1);\n }\n\n protected onPopoverControl(control: ZPopoverControl): void {\n this._popoverControl.set(control);\n }\n\n protected onPopoverShow(): void {\n this.uiState.update(s => ({ ...s, isOpen: true }));\n\n setTimeout(() => {\n this.inputRef()?.nativeElement.focus();\n }, 50);\n }\n\n protected onPopoverHideStart(): void {\n this.uiState.update(s => ({ ...s, isOpen: false }));\n this.activeIndex.set(-1);\n this._clearLocalLoadingTimer();\n this._pendingSearch.set(false);\n this.debouncedQuery.set('');\n this._query$.next('');\n }\n\n protected onPopoverHideEnd(): void {\n this.actualPosition.set('bottom');\n }\n\n protected onPositionChange(position: ZPopoverPosition): void {\n this.actualPosition.set(position);\n }\n\n protected selectOption(option: ZAutocompleteOption<T>): void {\n if (option.disabled) {\n return;\n }\n\n this.uiState.update(s => ({ ...s, dirty: true }));\n this.zOnSelect.emit(option);\n this._selectedOption.set(option);\n\n const newValue = this.zResetOnSelect() ? '' : option.label;\n this.inputValue.set(newValue);\n this._value.set(newValue);\n this.debouncedQuery.set(newValue);\n this._onChange(newValue);\n this.zValueChange.emit(newValue);\n this._valueBeforeNavigation = null;\n\n if (this.config().closeOnSelect) {\n this._closePanel();\n }\n\n this.activeIndex.set(-1);\n }\n\n protected clearInput(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.inputValue.set('');\n this._value.set('');\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._onChange('');\n this.zValueChange.emit('');\n this._selectedOption.set(null);\n this._closePanel();\n this._clearLocalLoadingTimer();\n this._pendingSearch.set(false);\n this.debouncedQuery.set('');\n\n if (this.zType() === 'address_bar') {\n this.searchQuery.set('');\n }\n\n this._query$.next('');\n this.zOnCommit.emit({ value: '', source: 'blur' });\n setTimeout(() => {\n this.inputRef()?.nativeElement.focus();\n });\n }\n\n protected getOptionClasses(option: ZAutocompleteOption<T>, index: number): string {\n return zAutocompleteOptionVariants({\n active: this.activeIndex() === index,\n disabled: option.disabled ?? false,\n });\n }\n\n protected trackByValue = (_index: number, option: ZAutocompleteOption<T>): unknown => option.value;\n\n public focus(): void {\n this.inputRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this.inputRef()?.nativeElement.blur();\n }\n\n public clear(): void {\n this.inputValue.set('');\n this._value.set('');\n this.debouncedQuery.set('');\n this._onChange('');\n this.zValueChange.emit('');\n this._selectedOption.set(null);\n this._closePanel();\n this._clearLocalLoadingTimer();\n this._pendingSearch.set(false);\n if (this.zType() === 'address_bar') {\n this.searchQuery.set('');\n }\n }\n\n public reset(): void {\n this.clear();\n this.uiState.update(s => ({ ...s, touched: false, dirty: false }));\n }\n\n public open(): void {\n this._openPanel();\n }\n\n public close(): void {\n this._closePanel();\n }\n\n public setValue(value: string): void {\n this._value.set(value);\n this.inputValue.set(value);\n this.debouncedQuery.set(value);\n this._selectedOption.set(null);\n this._onChange(value);\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(value);\n }\n }\n\n private _openPanel(): void {\n if (this.isInteractionDisabled()) {\n return;\n }\n\n this._popoverControl()?.show();\n }\n\n private _closePanel(): void {\n this._popoverControl()?.close();\n }\n\n private _setupDebounce(): void {\n this._query$\n .pipe(debounceTime(this.effectiveDebounceTime()), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe(query => {\n if (this.zType() === 'address_bar') {\n this.searchQuery.set(query);\n }\n\n this.debouncedQuery.set(query);\n this.zOnSearch.emit(query);\n\n if (this.config().serverSearch) {\n return;\n }\n\n this._clearLocalLoadingTimer();\n this._pendingSearch.set(true);\n this._localLoadingTimeout = setTimeout(() => {\n this._pendingSearch.set(false);\n this._localLoadingTimeout = null;\n }, 100);\n });\n }\n\n private _clearLocalLoadingTimer(): void {\n if (!this._localLoadingTimeout) {\n return;\n }\n\n clearTimeout(this._localLoadingTimeout);\n this._localLoadingTimeout = null;\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n focus: () => this.focus(),\n blur: () => this.blur(),\n clear: () => this.clear(),\n reset: () => this.reset(),\n open: () => this.open(),\n close: () => this.close(),\n setValue: (val: string) => this.setValue(val),\n value: this._value.asReadonly(),\n selectedOption: this._selectedOption.asReadonly(),\n state: this.state,\n });\n }\n}\n","<div class=\"z-autocomplete-wrapper relative flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"autocompleteId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div\n #triggerEl\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n [zOffset]=\"0\"\n [zDisabled]=\"isInteractionDisabled()\"\n zTrigger=\"manual\"\n zPosition=\"bottom\"\n zClass=\"border-0 shadow-none bg-transparent p-0\"\n (zControl)=\"onPopoverControl($event)\"\n (zShow)=\"onPopoverShow()\"\n (zHideStart)=\"onPopoverHideStart()\"\n (zHide)=\"onPopoverHideEnd()\"\n (zPositionChange)=\"onPositionChange($event)\"\n class=\"z-autocomplete-trigger\"\n [class]=\"inputClasses()\"\n [class.z-autocomplete-open]=\"uiState().isOpen\"\n [class.z-autocomplete-open-top]=\"uiState().isOpen && isPositionTop()\"\n [class.z-autocomplete-open-bottom]=\"uiState().isOpen && !isPositionTop()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"uiState().isOpen\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"dropdownId\">\n @if (zPrefix()) {\n <z-icon [zType]=\"zPrefix() || 'lucideSearch'\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n\n <input\n #inputEl\n [id]=\"autocompleteId\"\n type=\"text\"\n class=\"z-autocomplete-input min-w-0 flex-1 bg-transparent outline-none\"\n [class.text-sm]=\"zSize() === 'sm' || zSize() === 'default'\"\n [placeholder]=\"zPlaceholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"isReadonly()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (click)=\"onInputClick()\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\" />\n\n @if (zLoading() || isLoadingState()) {\n <z-icon zType=\"lucideLoaderCircle\" zSize=\"16\" class=\"text-muted-foreground shrink-0 animate-spin\" />\n } @else {\n @if (zAllowClear() && hasValue() && !isDisabled() && !isReadonly()) {\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:text-foreground flex shrink-0 cursor-pointer items-center justify-center transition-colors\"\n (mousedown)=\"clearInput($event)\"\n tabindex=\"-1\">\n <z-icon zType=\"lucideX\" zSize=\"18\" class=\"cursor-pointer!\" />\n </button>\n }\n\n @if (zSuffix()) {\n <z-icon [zType]=\"zSuffix() || 'lucideSearch'\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n }\n </div>\n</div>\n\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n [id]=\"dropdownId\"\n class=\"z-autocomplete-dropdown bg-popover border-ring overflow-hidden border shadow-lg\"\n [class.z-autocomplete-dropdown-bottom]=\"!isPositionTop()\"\n [class.rounded-b-[0.375rem]]=\"!isPositionTop()\"\n [class.rounded-t-[0.375rem]]=\"isPositionTop()\"\n [class.border-t-0]=\"!isPositionTop()\"\n [class.border-b-0]=\"isPositionTop()\"\n [style.width.px]=\"dropdownWidth()\"\n role=\"listbox\"\n (mousedown)=\"$event.preventDefault()\">\n @if (zLoading() || isLoadingState()) {\n <div\n class=\"z-autocomplete-content-state flex flex-col items-center justify-center\"\n [style.minHeight.px]=\"effectiveHeightExpand()\">\n <z-loading [zLoading]=\"true\" zSize=\"default\" />\n </div>\n } @else {\n @if (filteredOptions().length === 0) {\n <!-- Empty State -->\n <div\n class=\"z-autocomplete-content-state flex flex-col items-center justify-center p-1\"\n [style.minHeight.px]=\"effectiveHeightExpand()\">\n @if (inputValue().trim() !== '') {\n <!-- Searched but no results -->\n <z-empty [zIcon]=\"zEmptyIcon()\" zSize=\"sm\" [zMessage]=\"effectiveEmptyText()\" />\n } @else {\n <!-- No data initially -->\n <z-empty [zIcon]=\"zNoDataIcon()\" zSize=\"sm\" [zMessage]=\"effectiveNoDataText()\" />\n }\n </div>\n } @else if (shouldUseVirtualScroll()) {\n <!-- Virtual Scroll Mode -->\n <div\n #virtualScrollElement\n class=\"z-autocomplete-content-state z-autocomplete-options z-autocomplete-virtual-scroll relative overflow-x-hidden overflow-y-auto overscroll-y-contain p-1\"\n [style.height.px]=\"effectiveHeightExpand()\">\n <div class=\"z-autocomplete-virtual-inner relative\" [style.height.px]=\"virtualizer.getTotalSize()\">\n @for (virtualItem of virtualizer.getVirtualItems(); track virtualItem.index) {\n @let opt = filteredOptions()[virtualItem.index];\n @let isActive = activeIndex() === virtualItem.index;\n <div\n #virtualOptionEl\n class=\"z-autocomplete-option absolute right-0 left-0 min-w-0\"\n [ngClass]=\"getOptionClasses(opt, virtualItem.index)\"\n [attr.data-index]=\"virtualItem.index\"\n [style.height.px]=\"zDynamicSize() ? null : effectiveOptionHeight()\"\n [style.minHeight.px]=\"zDynamicSize() ? effectiveOptionHeight() : null\"\n [style.transform]=\"'translateY(' + virtualItem.start + 'px)'\"\n [attr.aria-selected]=\"isActive\"\n role=\"option\"\n (mouseenter)=\"activeIndex.set(virtualItem.index)\"\n (click)=\"selectOption(opt)\">\n @if (zOptionTemplate()) {\n <ng-container *ngTemplateOutlet=\"zOptionTemplate()!; context: { $implicit: opt, active: isActive }\" />\n } @else {\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <div class=\"min-w-0 flex-1\">\n <span\n class=\"block min-w-0 truncate\"\n z-tooltip\n [zContent]=\"opt.label\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"virtualOptionEl\"\n [innerHTML]=\"\n config().highlightMatch ? (opt.label | zHighlight: highlightQuery() | zSafeHtml) : opt.label\n \"></span>\n @if (opt.description) {\n <span class=\"text-muted-foreground block min-w-0 truncate text-xs\">{{ opt.description }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Normal Scroll Mode -->\n <div\n #optionsContainer\n class=\"z-autocomplete-content-state z-autocomplete-options flex flex-col gap-0.75 overflow-x-hidden overflow-y-auto overscroll-y-contain p-1\"\n [style.minHeight.px]=\"effectiveHeightExpand()\"\n [style.maxHeight.px]=\"effectiveHeightExpand()\">\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n @let isActive = activeIndex() === i;\n <div\n #optionEl2\n class=\"z-autocomplete-option relative min-w-0\"\n [ngClass]=\"getOptionClasses(opt, i)\"\n [style.minHeight.px]=\"effectiveOptionHeight()\"\n [attr.aria-selected]=\"isActive\"\n role=\"option\"\n (mouseenter)=\"activeIndex.set(i)\"\n (click)=\"selectOption(opt)\">\n @if (zOptionTemplate()) {\n <ng-container *ngTemplateOutlet=\"zOptionTemplate()!; context: { $implicit: opt, active: isActive }\" />\n } @else {\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <div class=\"min-w-0 flex-1\">\n <span\n class=\"block min-w-0 truncate\"\n z-tooltip\n [zContent]=\"opt.label\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"optionEl2\"\n [innerHTML]=\"\n config().highlightMatch ? (opt.label | zHighlight: highlightQuery() | zSafeHtml) : opt.label\n \"></span>\n @if (opt.description) {\n <span class=\"text-muted-foreground block min-w-0 truncate text-xs\">{{ opt.description }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { ZIconComponent } from '@shival99/z-ui/components/z-icon';
|
|
|
5
5
|
import { zTransform, zMergeClasses } from '@shival99/z-ui/utils';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
7
7
|
|
|
8
|
-
const zButtonVariants = cva("cursor-pointer relative inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[
|
|
8
|
+
const zButtonVariants = cva("cursor-pointer relative inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[0.375rem] text-sm font-[450] select-none transition-[background-color,border-color,color,box-shadow,opacity] duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
|
|
9
9
|
variants: {
|
|
10
10
|
zType: {
|
|
11
11
|
default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 [--z-wave-color:var(--color-primary)]',
|
|
@@ -38,17 +38,22 @@ const zButtonVariants = cva("cursor-pointer relative inline-flex items-center ju
|
|
|
38
38
|
'ghost-error': 'text-red-600 hover:bg-red-600/10 dark:text-red-500 dark:hover:bg-red-500/20 [--z-wave-color:var(--color-red-600)]',
|
|
39
39
|
'ghost-destructive': 'text-destructive hover:bg-destructive/10 dark:hover:bg-destructive/20 [--z-wave-color:var(--color-destructive)]',
|
|
40
40
|
subtle: 'bg-accent text-accent-foreground hover:bg-accent/80 dark:bg-accent/50 dark:hover:bg-accent/70 [--z-wave-color:var(--color-foreground)]',
|
|
41
|
+
'subtle-primary': 'bg-primary/10 text-primary hover:bg-primary/20 dark:bg-primary/15 dark:text-primary dark:hover:bg-primary/25 [--z-wave-color:var(--color-primary)]',
|
|
42
|
+
'subtle-success': 'bg-green-600/10 text-green-600 hover:bg-green-600/20 dark:bg-green-500/10 dark:text-green-500 dark:hover:bg-green-500/20 [--z-wave-color:var(--color-green-600)]',
|
|
43
|
+
'subtle-info': 'bg-blue-600/10 text-blue-600 hover:bg-blue-600/20 dark:bg-blue-500/10 dark:text-blue-500 dark:hover:bg-blue-500/20 [--z-wave-color:var(--color-blue-600)]',
|
|
44
|
+
'subtle-warning': 'bg-amber-500/10 text-amber-600 hover:bg-amber-500/20 dark:bg-amber-400/10 dark:text-amber-400 dark:hover:bg-amber-400/20 [--z-wave-color:var(--color-amber-500)]',
|
|
45
|
+
'subtle-destructive': 'bg-destructive/10 text-destructive hover:bg-destructive/20 dark:bg-destructive/15 dark:text-destructive-foreground dark:hover:bg-destructive/25 [--z-wave-color:var(--color-destructive)]',
|
|
41
46
|
link: 'text-primary underline-offset-4 hover:underline',
|
|
42
47
|
},
|
|
43
48
|
zSize: {
|
|
44
|
-
default: 'h-9 px-3 py-2 [&[
|
|
45
|
-
xs: 'h-7 px-3 py-1 [&[
|
|
46
|
-
sm: 'h-8 rounded-[
|
|
47
|
-
lg: 'h-10 rounded-[
|
|
48
|
-
xl: 'h-12 rounded-lg px-8 text-base [&[
|
|
49
|
+
default: 'h-9 px-3 py-2 [&[data-icon-only]]:size-9 [&[data-icon-only]]:p-0',
|
|
50
|
+
xs: 'h-7 px-3 py-1 [&[data-icon-only]]:size-7 [&[data-icon-only]]:p-0',
|
|
51
|
+
sm: 'h-8 rounded-[0.375rem] gap-1.5 px-3 [&[data-icon-only]]:size-8 [&[data-icon-only]]:p-0',
|
|
52
|
+
lg: 'h-10 rounded-[0.375rem] px-6 [&[data-icon-only]]:size-10 [&[data-icon-only]]:p-0',
|
|
53
|
+
xl: 'h-12 rounded-lg px-8 text-base [&[data-icon-only]]:size-12 [&[data-icon-only]]:p-0',
|
|
49
54
|
},
|
|
50
55
|
zShape: {
|
|
51
|
-
default: 'rounded-[
|
|
56
|
+
default: 'rounded-[0.375rem]',
|
|
52
57
|
circle: 'rounded-full',
|
|
53
58
|
square: 'rounded-none',
|
|
54
59
|
},
|
|
@@ -135,19 +140,24 @@ class ZButtonComponent {
|
|
|
135
140
|
waveEl.className = 'z-animate-wave';
|
|
136
141
|
el.appendChild(waveEl);
|
|
137
142
|
el.classList.add('z-wave-active');
|
|
138
|
-
|
|
143
|
+
const onWaveAnimationEnd = (event) => {
|
|
144
|
+
if (event.animationName !== 'z-fade-effect') {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
139
147
|
waveEl.remove();
|
|
140
148
|
el.classList.remove('z-wave-active');
|
|
141
|
-
|
|
149
|
+
waveEl.removeEventListener('animationend', onWaveAnimationEnd);
|
|
150
|
+
};
|
|
151
|
+
waveEl.addEventListener('animationend', onWaveAnimationEnd);
|
|
142
152
|
}
|
|
143
153
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ZButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ZButtonComponent, isStandalone: true, selector: "z-button, button[z-button], a[z-button]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zShape: { classPropertyName: "zShape", publicName: "zShape", isSignal: true, isRequired: false, transformFunction: null }, zLabel: { classPropertyName: "zLabel", publicName: "zLabel", isSignal: true, isRequired: false, transformFunction: null }, zLoading: { classPropertyName: "zLoading", publicName: "zLoading", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zTypeIcon: { classPropertyName: "zTypeIcon", publicName: "zTypeIcon", isSignal: true, isRequired: false, transformFunction: null }, zSizeIcon: { classPropertyName: "zSizeIcon", publicName: "zSizeIcon", isSignal: true, isRequired: false, transformFunction: null }, zStrokeWidthIcon: { classPropertyName: "zStrokeWidthIcon", publicName: "zStrokeWidthIcon", isSignal: true, isRequired: false, transformFunction: null }, zWave: { classPropertyName: "zWave", publicName: "zWave", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onWaveClick()" }, properties: { "class": "zClasses()", "attr.
|
|
154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ZButtonComponent, isStandalone: true, selector: "z-button, button[z-button], a[z-button]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zShape: { classPropertyName: "zShape", publicName: "zShape", isSignal: true, isRequired: false, transformFunction: null }, zLabel: { classPropertyName: "zLabel", publicName: "zLabel", isSignal: true, isRequired: false, transformFunction: null }, zLoading: { classPropertyName: "zLoading", publicName: "zLoading", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zTypeIcon: { classPropertyName: "zTypeIcon", publicName: "zTypeIcon", isSignal: true, isRequired: false, transformFunction: null }, zSizeIcon: { classPropertyName: "zSizeIcon", publicName: "zSizeIcon", isSignal: true, isRequired: false, transformFunction: null }, zStrokeWidthIcon: { classPropertyName: "zStrokeWidthIcon", publicName: "zStrokeWidthIcon", isSignal: true, isRequired: false, transformFunction: null }, zWave: { classPropertyName: "zWave", publicName: "zWave", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onWaveClick()" }, properties: { "class": "zClasses()", "attr.data-icon-only": "zIconOnly() || null" } }, exportAs: ["zButton"], ngImport: i0, template: "@if (zTypeIcon() && !zLoading()) {\n <i z-icon [zType]=\"zTypeIcon() || 'lucideLoader'\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"zStrokeWidthIcon()\"></i>\n}\n@if (zLoading()) {\n <i z-icon zType=\"lucideLoader\" class=\"z-animate-spin\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"2.8\"></i>\n}\n@if (zLabel()) {\n <span>{{ zLabel() | translate }}</span>\n} @else {\n <ng-content />\n}\n", dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
145
155
|
}
|
|
146
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ZButtonComponent, decorators: [{
|
|
147
157
|
type: Component,
|
|
148
158
|
args: [{ selector: 'z-button, button[z-button], a[z-button]', imports: [ZIconComponent, TranslatePipe], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
149
159
|
'[class]': 'zClasses()',
|
|
150
|
-
'[attr.
|
|
160
|
+
'[attr.data-icon-only]': 'zIconOnly() || null',
|
|
151
161
|
'(click)': 'onWaveClick()',
|
|
152
162
|
}, exportAs: 'zButton', template: "@if (zTypeIcon() && !zLoading()) {\n <i z-icon [zType]=\"zTypeIcon() || 'lucideLoader'\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"zStrokeWidthIcon()\"></i>\n}\n@if (zLoading()) {\n <i z-icon zType=\"lucideLoader\" class=\"z-animate-spin\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"2.8\"></i>\n}\n@if (zLabel()) {\n <span>{{ zLabel() | translate }}</span>\n} @else {\n <ng-content />\n}\n" }]
|
|
153
163
|
}], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zType: [{ type: i0.Input, args: [{ isSignal: true, alias: "zType", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zShape: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShape", required: false }] }], zLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLabel", required: false }] }], zLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLoading", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zTypeIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTypeIcon", required: false }] }], zSizeIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSizeIcon", required: false }] }], zStrokeWidthIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "zStrokeWidthIcon", required: false }] }], zWave: [{ type: i0.Input, args: [{ isSignal: true, alias: "zWave", required: false }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-button.mjs","sources":["../../../../libs/core-ui/components/z-button/z-button.variants.ts","../../../../libs/core-ui/components/z-button/z-button.component.ts","../../../../libs/core-ui/components/z-button/z-button.component.html","../../../../libs/core-ui/components/z-button/shival99-z-ui-components-z-button.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zButtonVariants = cva(\n \"cursor-pointer relative inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[6px] text-sm font-[450] select-none transition-[background-color,border-color,color,box-shadow,opacity] duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n zType: {\n default:\n 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 [--z-wave-color:var(--color-primary)]',\n primary:\n 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 [--z-wave-color:var(--color-primary)]',\n secondary:\n 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80 [--z-wave-color:var(--color-secondary-foreground)]',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 [--z-wave-color:var(--color-destructive)]',\n success:\n 'bg-green-600 text-white shadow-xs hover:bg-green-700 focus-visible:ring-green-500/20 dark:bg-green-600 dark:hover:bg-green-700 [--z-wave-color:var(--color-green-600)]',\n info: 'bg-blue-600 text-white shadow-xs hover:bg-blue-700 focus-visible:ring-blue-500/20 dark:bg-blue-600 dark:hover:bg-blue-700 [--z-wave-color:var(--color-blue-600)]',\n warning:\n 'bg-amber-500 text-white shadow-xs hover:bg-amber-600 focus-visible:ring-amber-500/20 dark:bg-amber-500 dark:hover:bg-amber-600 [--z-wave-color:var(--color-amber-500)]',\n error:\n 'bg-red-600 text-white shadow-xs hover:bg-red-700 focus-visible:ring-red-500/20 dark:bg-red-600 dark:hover:bg-red-700 [--z-wave-color:var(--color-red-600)]',\n\n outline:\n 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 [--z-wave-color:var(--color-foreground)]',\n 'outline-primary':\n 'border border-primary text-primary bg-transparent shadow-xs hover:bg-primary hover:text-primary-foreground focus-visible:ring-primary/20 [--z-wave-color:var(--color-primary)]',\n 'outline-secondary':\n 'border border-secondary-foreground/20 text-secondary-foreground bg-transparent shadow-xs hover:bg-secondary hover:text-secondary-foreground focus-visible:ring-secondary/20 [--z-wave-color:var(--color-secondary-foreground)]',\n 'outline-success':\n 'border border-green-600 text-green-600 bg-transparent shadow-xs hover:bg-green-600 hover:text-white focus-visible:ring-green-500/20 dark:border-green-500 dark:text-green-500 dark:hover:bg-green-600 [--z-wave-color:var(--color-green-600)]',\n 'outline-info':\n 'border border-blue-600 text-blue-600 bg-transparent shadow-xs hover:bg-blue-600 hover:text-white focus-visible:ring-blue-500/20 dark:border-blue-500 dark:text-blue-500 dark:hover:bg-blue-600 [--z-wave-color:var(--color-blue-600)]',\n 'outline-warning':\n 'border border-amber-500 text-amber-600 bg-transparent shadow-xs hover:bg-amber-500 hover:text-white focus-visible:ring-amber-500/20 dark:border-amber-400 dark:text-amber-400 dark:hover:bg-amber-500 [--z-wave-color:var(--color-amber-500)]',\n 'outline-error':\n 'border border-red-600 text-red-600 bg-transparent shadow-xs hover:bg-red-600 hover:text-white focus-visible:ring-red-500/20 dark:border-red-500 dark:text-red-500 dark:hover:bg-red-600 [--z-wave-color:var(--color-red-600)]',\n 'outline-destructive':\n 'border border-destructive text-destructive bg-transparent shadow-xs hover:bg-destructive hover:text-white focus-visible:ring-destructive/20 [--z-wave-color:var(--color-destructive)]',\n 'outline-success-secondary':\n 'border bg-background shadow-xs hover:bg-green-600/10 hover:text-green-600 hover:border-green-600 dark:bg-input/30 dark:border-input dark:hover:bg-green-500/20 dark:hover:text-green-500 dark:hover:border-green-500 [--z-wave-color:var(--color-green-600)]',\n 'outline-info-secondary':\n 'border bg-background shadow-xs hover:bg-blue-600/10 hover:text-blue-600 hover:border-blue-600 dark:bg-input/30 dark:border-input dark:hover:bg-blue-500/20 dark:hover:text-blue-500 dark:hover:border-blue-500 [--z-wave-color:var(--color-blue-600)]',\n 'outline-warning-secondary':\n 'border bg-background shadow-xs hover:bg-amber-500/10 hover:text-amber-600 hover:border-amber-500 dark:bg-input/30 dark:border-input dark:hover:bg-amber-400/20 dark:hover:text-amber-400 dark:hover:border-amber-400 [--z-wave-color:var(--color-amber-500)]',\n 'outline-error-secondary':\n 'border bg-background shadow-xs hover:bg-red-600/10 hover:text-red-600 hover:border-red-600 dark:bg-input/30 dark:border-input dark:hover:bg-red-500/20 dark:hover:text-red-500 dark:hover:border-red-500 [--z-wave-color:var(--color-red-600)]',\n 'outline-destructive-secondary':\n 'border bg-background shadow-xs hover:bg-destructive/10 hover:text-destructive hover:border-destructive dark:bg-input/30 dark:border-input dark:hover:bg-destructive/20 dark:hover:border-destructive [--z-wave-color:var(--color-destructive)]',\n 'outline-primary-secondary':\n 'border bg-background shadow-xs hover:bg-primary/10 hover:text-primary hover:border-primary dark:bg-input/30 dark:border-input dark:hover:bg-primary/20 dark:hover:border-primary [--z-wave-color:var(--color-primary)]',\n\n ghost:\n 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 [--z-wave-color:var(--color-foreground)]',\n 'ghost-primary':\n 'text-primary hover:bg-primary/10 dark:hover:bg-primary/20 [--z-wave-color:var(--color-primary)]',\n 'ghost-success':\n 'text-green-600 hover:bg-green-600/10 dark:text-green-500 dark:hover:bg-green-500/20 [--z-wave-color:var(--color-green-600)]',\n 'ghost-info':\n 'text-blue-600 hover:bg-blue-600/10 dark:text-blue-500 dark:hover:bg-blue-500/20 [--z-wave-color:var(--color-blue-600)]',\n 'ghost-warning':\n 'text-amber-600 hover:bg-amber-500/10 dark:text-amber-400 dark:hover:bg-amber-400/20 [--z-wave-color:var(--color-amber-500)]',\n 'ghost-error':\n 'text-red-600 hover:bg-red-600/10 dark:text-red-500 dark:hover:bg-red-500/20 [--z-wave-color:var(--color-red-600)]',\n 'ghost-destructive':\n 'text-destructive hover:bg-destructive/10 dark:hover:bg-destructive/20 [--z-wave-color:var(--color-destructive)]',\n\n subtle:\n 'bg-accent text-accent-foreground hover:bg-accent/80 dark:bg-accent/50 dark:hover:bg-accent/70 [--z-wave-color:var(--color-foreground)]',\n\n link: 'text-primary underline-offset-4 hover:underline',\n },\n zSize: {\n default: 'h-9 px-3 py-2 [&[z-icon-only]]:size-9 [&[z-icon-only]]:p-0',\n xs: 'h-7 px-3 py-1 [&[z-icon-only]]:size-7 [&[z-icon-only]]:p-0',\n sm: 'h-8 rounded-[6px] gap-1.5 px-3 [&[z-icon-only]]:size-8 [&[z-icon-only]]:p-0',\n lg: 'h-10 rounded-[6px] px-6 [&[z-icon-only]]:size-10 [&[z-icon-only]]:p-0',\n xl: 'h-12 rounded-lg px-8 text-base [&[z-icon-only]]:size-12 [&[z-icon-only]]:p-0',\n },\n zShape: {\n default: 'rounded-[6px]',\n circle: 'rounded-full',\n square: 'rounded-none',\n },\n zLoading: {\n true: 'opacity-50 pointer-events-none',\n },\n zDisabled: {\n true: 'opacity-50 pointer-events-none',\n },\n },\n defaultVariants: {\n zType: 'default',\n zSize: 'default',\n zShape: 'default',\n },\n }\n);\nexport type ZButtonVariants = VariantProps<typeof zButtonVariants>;\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n type OnDestroy,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { type ZIconVariants, type ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { zButtonVariants, type ZButtonVariants } from './z-button.variants';\n\n@Component({\n selector: 'z-button, button[z-button], a[z-button]',\n imports: [ZIconComponent, TranslatePipe],\n standalone: true,\n templateUrl: './z-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n '[attr.z-icon-only]': 'zIconOnly() || null',\n '(click)': 'onWaveClick()',\n },\n exportAs: 'zButton',\n})\nexport class ZButtonComponent implements OnDestroy {\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZButtonVariants['zType']>('default');\n public readonly zSize = input<ZButtonVariants['zSize']>('default');\n public readonly zShape = input<ZButtonVariants['zShape']>('default');\n public readonly zLabel = input<string>('');\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zDisabled = input(false);\n public readonly zTypeIcon = input<ZIcon | undefined>(undefined);\n public readonly zSizeIcon = input<ZIconVariants['zSize']>('20');\n public readonly zStrokeWidthIcon = input<number>(2);\n public readonly zWave = input(true, { transform: zTransform });\n\n private readonly _zIconOnlyState = signal(false);\n private _mutationObserver: MutationObserver | null = null;\n\n protected readonly zIconOnly = this._zIconOnlyState.asReadonly();\n protected readonly zClasses = computed(() =>\n zMergeClasses(\n zButtonVariants({\n zType: this.zType(),\n zSize: this.zSize(),\n zShape: this.zShape(),\n zLoading: this.zLoading(),\n zDisabled: this.zDisabled(),\n }),\n this.class()\n )\n );\n\n constructor() {\n afterNextRender(() => {\n const check = () => {\n const el = this._elementRef.nativeElement;\n const hasIcon = el.querySelector('z-icon, [z-icon]') !== null;\n const children = Array.from<Node>(el.childNodes);\n const hasText = children.some(node => {\n if (node.nodeType === 3) {\n return node.textContent?.trim() !== '';\n }\n\n if (node.nodeType === 1) {\n const element = node as HTMLElement;\n if (element.matches('z-icon, [z-icon]')) {\n return false;\n }\n\n return element.textContent?.trim() !== '';\n }\n\n return false;\n });\n\n this._zIconOnlyState.set(hasIcon && !hasText);\n };\n\n check();\n this._mutationObserver = new MutationObserver(check);\n this._mutationObserver.observe(this._elementRef.nativeElement, {\n childList: true,\n characterData: true,\n subtree: true,\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this._mutationObserver) {\n this._mutationObserver.disconnect();\n this._mutationObserver = null;\n }\n }\n\n protected onWaveClick(): void {\n const type = this.zType();\n if (!this.zWave() || this.zLoading() || type === 'link') {\n return;\n }\n\n const el = this._elementRef.nativeElement;\n const waveEl = document.createElement('span');\n waveEl.className = 'z-animate-wave';\n el.appendChild(waveEl);\n el.classList.add('z-wave-active');\n waveEl.addEventListener(\n 'animationend',\n () => {\n waveEl.remove();\n el.classList.remove('z-wave-active');\n },\n { once: true }\n );\n }\n}\n","@if (zTypeIcon() && !zLoading()) {\n <i z-icon [zType]=\"zTypeIcon() || 'lucideLoader'\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"zStrokeWidthIcon()\"></i>\n}\n@if (zLoading()) {\n <i z-icon zType=\"lucideLoader\" class=\"z-animate-spin\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"2.8\"></i>\n}\n@if (zLabel()) {\n <span>{{ zLabel() | translate }}</span>\n} @else {\n <ng-content />\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-button.mjs","sources":["../../../../libs/core-ui/components/z-button/z-button.variants.ts","../../../../libs/core-ui/components/z-button/z-button.component.ts","../../../../libs/core-ui/components/z-button/z-button.component.html","../../../../libs/core-ui/components/z-button/shival99-z-ui-components-z-button.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zButtonVariants = cva(\n \"cursor-pointer relative inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[0.375rem] text-sm font-[450] select-none transition-[background-color,border-color,color,box-shadow,opacity] duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n zType: {\n default:\n 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 [--z-wave-color:var(--color-primary)]',\n primary:\n 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 [--z-wave-color:var(--color-primary)]',\n secondary:\n 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80 [--z-wave-color:var(--color-secondary-foreground)]',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 [--z-wave-color:var(--color-destructive)]',\n success:\n 'bg-green-600 text-white shadow-xs hover:bg-green-700 focus-visible:ring-green-500/20 dark:bg-green-600 dark:hover:bg-green-700 [--z-wave-color:var(--color-green-600)]',\n info: 'bg-blue-600 text-white shadow-xs hover:bg-blue-700 focus-visible:ring-blue-500/20 dark:bg-blue-600 dark:hover:bg-blue-700 [--z-wave-color:var(--color-blue-600)]',\n warning:\n 'bg-amber-500 text-white shadow-xs hover:bg-amber-600 focus-visible:ring-amber-500/20 dark:bg-amber-500 dark:hover:bg-amber-600 [--z-wave-color:var(--color-amber-500)]',\n error:\n 'bg-red-600 text-white shadow-xs hover:bg-red-700 focus-visible:ring-red-500/20 dark:bg-red-600 dark:hover:bg-red-700 [--z-wave-color:var(--color-red-600)]',\n\n outline:\n 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 [--z-wave-color:var(--color-foreground)]',\n 'outline-primary':\n 'border border-primary text-primary bg-transparent shadow-xs hover:bg-primary hover:text-primary-foreground focus-visible:ring-primary/20 [--z-wave-color:var(--color-primary)]',\n 'outline-secondary':\n 'border border-secondary-foreground/20 text-secondary-foreground bg-transparent shadow-xs hover:bg-secondary hover:text-secondary-foreground focus-visible:ring-secondary/20 [--z-wave-color:var(--color-secondary-foreground)]',\n 'outline-success':\n 'border border-green-600 text-green-600 bg-transparent shadow-xs hover:bg-green-600 hover:text-white focus-visible:ring-green-500/20 dark:border-green-500 dark:text-green-500 dark:hover:bg-green-600 [--z-wave-color:var(--color-green-600)]',\n 'outline-info':\n 'border border-blue-600 text-blue-600 bg-transparent shadow-xs hover:bg-blue-600 hover:text-white focus-visible:ring-blue-500/20 dark:border-blue-500 dark:text-blue-500 dark:hover:bg-blue-600 [--z-wave-color:var(--color-blue-600)]',\n 'outline-warning':\n 'border border-amber-500 text-amber-600 bg-transparent shadow-xs hover:bg-amber-500 hover:text-white focus-visible:ring-amber-500/20 dark:border-amber-400 dark:text-amber-400 dark:hover:bg-amber-500 [--z-wave-color:var(--color-amber-500)]',\n 'outline-error':\n 'border border-red-600 text-red-600 bg-transparent shadow-xs hover:bg-red-600 hover:text-white focus-visible:ring-red-500/20 dark:border-red-500 dark:text-red-500 dark:hover:bg-red-600 [--z-wave-color:var(--color-red-600)]',\n 'outline-destructive':\n 'border border-destructive text-destructive bg-transparent shadow-xs hover:bg-destructive hover:text-white focus-visible:ring-destructive/20 [--z-wave-color:var(--color-destructive)]',\n 'outline-success-secondary':\n 'border bg-background shadow-xs hover:bg-green-600/10 hover:text-green-600 hover:border-green-600 dark:bg-input/30 dark:border-input dark:hover:bg-green-500/20 dark:hover:text-green-500 dark:hover:border-green-500 [--z-wave-color:var(--color-green-600)]',\n 'outline-info-secondary':\n 'border bg-background shadow-xs hover:bg-blue-600/10 hover:text-blue-600 hover:border-blue-600 dark:bg-input/30 dark:border-input dark:hover:bg-blue-500/20 dark:hover:text-blue-500 dark:hover:border-blue-500 [--z-wave-color:var(--color-blue-600)]',\n 'outline-warning-secondary':\n 'border bg-background shadow-xs hover:bg-amber-500/10 hover:text-amber-600 hover:border-amber-500 dark:bg-input/30 dark:border-input dark:hover:bg-amber-400/20 dark:hover:text-amber-400 dark:hover:border-amber-400 [--z-wave-color:var(--color-amber-500)]',\n 'outline-error-secondary':\n 'border bg-background shadow-xs hover:bg-red-600/10 hover:text-red-600 hover:border-red-600 dark:bg-input/30 dark:border-input dark:hover:bg-red-500/20 dark:hover:text-red-500 dark:hover:border-red-500 [--z-wave-color:var(--color-red-600)]',\n 'outline-destructive-secondary':\n 'border bg-background shadow-xs hover:bg-destructive/10 hover:text-destructive hover:border-destructive dark:bg-input/30 dark:border-input dark:hover:bg-destructive/20 dark:hover:border-destructive [--z-wave-color:var(--color-destructive)]',\n 'outline-primary-secondary':\n 'border bg-background shadow-xs hover:bg-primary/10 hover:text-primary hover:border-primary dark:bg-input/30 dark:border-input dark:hover:bg-primary/20 dark:hover:border-primary [--z-wave-color:var(--color-primary)]',\n\n ghost:\n 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 [--z-wave-color:var(--color-foreground)]',\n 'ghost-primary':\n 'text-primary hover:bg-primary/10 dark:hover:bg-primary/20 [--z-wave-color:var(--color-primary)]',\n 'ghost-success':\n 'text-green-600 hover:bg-green-600/10 dark:text-green-500 dark:hover:bg-green-500/20 [--z-wave-color:var(--color-green-600)]',\n 'ghost-info':\n 'text-blue-600 hover:bg-blue-600/10 dark:text-blue-500 dark:hover:bg-blue-500/20 [--z-wave-color:var(--color-blue-600)]',\n 'ghost-warning':\n 'text-amber-600 hover:bg-amber-500/10 dark:text-amber-400 dark:hover:bg-amber-400/20 [--z-wave-color:var(--color-amber-500)]',\n 'ghost-error':\n 'text-red-600 hover:bg-red-600/10 dark:text-red-500 dark:hover:bg-red-500/20 [--z-wave-color:var(--color-red-600)]',\n 'ghost-destructive':\n 'text-destructive hover:bg-destructive/10 dark:hover:bg-destructive/20 [--z-wave-color:var(--color-destructive)]',\n\n subtle:\n 'bg-accent text-accent-foreground hover:bg-accent/80 dark:bg-accent/50 dark:hover:bg-accent/70 [--z-wave-color:var(--color-foreground)]',\n 'subtle-primary':\n 'bg-primary/10 text-primary hover:bg-primary/20 dark:bg-primary/15 dark:text-primary dark:hover:bg-primary/25 [--z-wave-color:var(--color-primary)]',\n 'subtle-success':\n 'bg-green-600/10 text-green-600 hover:bg-green-600/20 dark:bg-green-500/10 dark:text-green-500 dark:hover:bg-green-500/20 [--z-wave-color:var(--color-green-600)]',\n 'subtle-info':\n 'bg-blue-600/10 text-blue-600 hover:bg-blue-600/20 dark:bg-blue-500/10 dark:text-blue-500 dark:hover:bg-blue-500/20 [--z-wave-color:var(--color-blue-600)]',\n 'subtle-warning':\n 'bg-amber-500/10 text-amber-600 hover:bg-amber-500/20 dark:bg-amber-400/10 dark:text-amber-400 dark:hover:bg-amber-400/20 [--z-wave-color:var(--color-amber-500)]',\n 'subtle-destructive':\n 'bg-destructive/10 text-destructive hover:bg-destructive/20 dark:bg-destructive/15 dark:text-destructive-foreground dark:hover:bg-destructive/25 [--z-wave-color:var(--color-destructive)]',\n\n link: 'text-primary underline-offset-4 hover:underline',\n },\n zSize: {\n default: 'h-9 px-3 py-2 [&[data-icon-only]]:size-9 [&[data-icon-only]]:p-0',\n xs: 'h-7 px-3 py-1 [&[data-icon-only]]:size-7 [&[data-icon-only]]:p-0',\n sm: 'h-8 rounded-[0.375rem] gap-1.5 px-3 [&[data-icon-only]]:size-8 [&[data-icon-only]]:p-0',\n lg: 'h-10 rounded-[0.375rem] px-6 [&[data-icon-only]]:size-10 [&[data-icon-only]]:p-0',\n xl: 'h-12 rounded-lg px-8 text-base [&[data-icon-only]]:size-12 [&[data-icon-only]]:p-0',\n },\n zShape: {\n default: 'rounded-[0.375rem]',\n circle: 'rounded-full',\n square: 'rounded-none',\n },\n zLoading: {\n true: 'opacity-50 pointer-events-none',\n },\n zDisabled: {\n true: 'opacity-50 pointer-events-none',\n },\n },\n defaultVariants: {\n zType: 'default',\n zSize: 'default',\n zShape: 'default',\n },\n }\n);\n\nexport type ZButtonVariants = VariantProps<typeof zButtonVariants>;\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n type OnDestroy,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { type ZIconVariants, type ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { zButtonVariants, type ZButtonVariants } from './z-button.variants';\n\n@Component({\n selector: 'z-button, button[z-button], a[z-button]',\n imports: [ZIconComponent, TranslatePipe],\n standalone: true,\n templateUrl: './z-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n '[attr.data-icon-only]': 'zIconOnly() || null',\n '(click)': 'onWaveClick()',\n },\n exportAs: 'zButton',\n})\nexport class ZButtonComponent implements OnDestroy {\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZButtonVariants['zType']>('default');\n public readonly zSize = input<ZButtonVariants['zSize']>('default');\n public readonly zShape = input<ZButtonVariants['zShape']>('default');\n public readonly zLabel = input<string>('');\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zDisabled = input(false);\n public readonly zTypeIcon = input<ZIcon | undefined>(undefined);\n public readonly zSizeIcon = input<ZIconVariants['zSize']>('20');\n public readonly zStrokeWidthIcon = input<number>(2);\n public readonly zWave = input(true, { transform: zTransform });\n\n private readonly _zIconOnlyState = signal(false);\n private _mutationObserver: MutationObserver | null = null;\n\n protected readonly zIconOnly = this._zIconOnlyState.asReadonly();\n protected readonly zClasses = computed(() =>\n zMergeClasses(\n zButtonVariants({\n zType: this.zType(),\n zSize: this.zSize(),\n zShape: this.zShape(),\n zLoading: this.zLoading(),\n zDisabled: this.zDisabled(),\n }),\n this.class()\n )\n );\n\n constructor() {\n afterNextRender(() => {\n const check = () => {\n const el = this._elementRef.nativeElement;\n const hasIcon = el.querySelector('z-icon, [z-icon]') !== null;\n const children = Array.from<Node>(el.childNodes);\n const hasText = children.some(node => {\n if (node.nodeType === 3) {\n return node.textContent?.trim() !== '';\n }\n\n if (node.nodeType === 1) {\n const element = node as HTMLElement;\n if (element.matches('z-icon, [z-icon]')) {\n return false;\n }\n\n return element.textContent?.trim() !== '';\n }\n\n return false;\n });\n\n this._zIconOnlyState.set(hasIcon && !hasText);\n };\n\n check();\n this._mutationObserver = new MutationObserver(check);\n this._mutationObserver.observe(this._elementRef.nativeElement, {\n childList: true,\n characterData: true,\n subtree: true,\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this._mutationObserver) {\n this._mutationObserver.disconnect();\n this._mutationObserver = null;\n }\n }\n\n protected onWaveClick(): void {\n const type = this.zType();\n if (!this.zWave() || this.zLoading() || type === 'link') {\n return;\n }\n\n const el = this._elementRef.nativeElement;\n const waveEl = document.createElement('span');\n waveEl.className = 'z-animate-wave';\n el.appendChild(waveEl);\n el.classList.add('z-wave-active');\n const onWaveAnimationEnd = (event: AnimationEvent): void => {\n if (event.animationName !== 'z-fade-effect') {\n return;\n }\n\n waveEl.remove();\n el.classList.remove('z-wave-active');\n waveEl.removeEventListener('animationend', onWaveAnimationEnd);\n };\n\n waveEl.addEventListener('animationend', onWaveAnimationEnd);\n }\n}\n","@if (zTypeIcon() && !zLoading()) {\n <i z-icon [zType]=\"zTypeIcon() || 'lucideLoader'\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"zStrokeWidthIcon()\"></i>\n}\n@if (zLoading()) {\n <i z-icon zType=\"lucideLoader\" class=\"z-animate-spin\" [zSize]=\"zSizeIcon()\" [zStrokeWidth]=\"2.8\"></i>\n}\n@if (zLabel()) {\n <span>{{ zLabel() | translate }}</span>\n} @else {\n <ng-content />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|