@shival99/z-ui 2.6.6 → 2.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/base.css +16 -16
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +13 -13
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +5 -3
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +6 -7
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +3 -2
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -2
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-utils.mjs +27 -1
- package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/types/shival99-z-ui-components-z-button-group.d.ts +1 -1
- package/types/shival99-z-ui-components-z-menu.d.ts +2 -0
- package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
- package/types/shival99-z-ui-components-z-select.d.ts +1 -0
- package/types/shival99-z-ui-components-z-upload.d.ts +1 -0
- package/types/shival99-z-ui-utils.d.ts +8 -2
- package/.npmignore +0 -58
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +0 -1215
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +0 -994
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +0 -99
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +0 -962
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs +0 -352
- package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +0 -179
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +0 -429
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +0 -183
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +0 -143
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs +0 -138
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +0 -80
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +0 -420
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +0 -11471
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +0 -1102
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-tags.mjs +0 -364
- package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +0 -254
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +0 -1
- package/fesm2022/shival99-z-ui-services-excel.mjs +0 -672
- package/fesm2022/shival99-z-ui-services-excel.mjs.map +0 -1
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +0 -299
- package/types/shival99-z-ui-components-z-drawer.d.ts +0 -301
- package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +0 -52
- package/types/shival99-z-ui-components-z-filter.d.ts +0 -285
- package/types/shival99-z-ui-components-z-number-ticker.d.ts +0 -110
- package/types/shival99-z-ui-components-z-pagination.d.ts +0 -55
- package/types/shival99-z-ui-components-z-qrcode.d.ts +0 -79
- package/types/shival99-z-ui-components-z-radio.d.ts +0 -69
- package/types/shival99-z-ui-components-z-scrollarea.d.ts +0 -46
- package/types/shival99-z-ui-components-z-show-more.d.ts +0 -36
- package/types/shival99-z-ui-components-z-skeleton-auto.d.ts +0 -35
- package/types/shival99-z-ui-components-z-steps.d.ts +0 -106
- package/types/shival99-z-ui-components-z-table.d.ts +0 -2413
- package/types/shival99-z-ui-components-z-tabs.d.ts +0 -196
- package/types/shival99-z-ui-components-z-tags.d.ts +0 -127
- package/types/shival99-z-ui-components-z-timeline.d.ts +0 -71
- package/types/shival99-z-ui-services-excel.d.ts +0 -36
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-tabs.mjs","sources":["../../../../libs/core-ui/components/z-tabs/directives/z-tab-panel.directive.ts","../../../../libs/core-ui/components/z-tabs/z-tabs.define.ts","../../../../libs/core-ui/components/z-tabs/z-tabs.util.ts","../../../../libs/core-ui/components/z-tabs/z-tabs.variants.ts","../../../../libs/core-ui/components/z-tabs/z-tabs.component.ts","../../../../libs/core-ui/components/z-tabs/z-tabs.component.html","../../../../libs/core-ui/components/z-tabs/shival99-z-ui-components-z-tabs.ts"],"sourcesContent":["import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[z-tab-panel], [zTabPanel]',\n standalone: true,\n exportAs: 'zTabPanel',\n})\nexport class ZTabPanelDirective {\n public readonly zTabPanel = input.required<string>();\n public readonly template = inject(TemplateRef<unknown>);\n}\n","import type { ZTabsType } from './z-tabs.types';\n\n/** Minimum scroll-position delta (px) before the fade/scroll-button state is toggled. */\nexport const Z_TABS_SCROLL_TOLERANCE = 4;\n\n/**\n * Types that render a shared pill behind the active tab and glide it into place instead of\n * swapping each item's own background. These predate the vertical glide, so they keep their\n * static per-item active background when laid out vertically.\n */\nexport const Z_TABS_GLIDE_TYPES: ZTabsType[] = ['segment', 'segment-solid', 'pill-solid', 'pill-blur', 'pill-float'];\n\n/** Glide types whose indicator is measured and animated in either orientation. */\nexport const Z_TABS_OMNI_GLIDE_TYPES: ZTabsType[] = ['pill-primary', 'underline-hover', 'bar'];\n\n/**\n * Types that glide the shared indicator only when laid out vertically. `assistant` collapses its\n * labels horizontally, so there the active tab is resizing and the surface has to live on the tab\n * itself; a vertical rail keeps every label at a fixed width, which removes that constraint and lets\n * the indicator simply slide between rows.\n */\nexport const Z_TABS_VERTICAL_GLIDE_TYPES: ZTabsType[] = ['assistant'];\n\n/**\n * Types that collapse an inactive tab down to its icon and expand the active one to icon + label,\n * which only applies to a horizontal strip. These paint the active surface on the tab itself rather\n * than on a shared indicator, so the surface grows with the label instead of chasing a box whose\n * width is still animating.\n */\nexport const Z_TABS_COLLAPSING_LABEL_TYPES: ZTabsType[] = ['assistant'];\n\n/** Types that also glide a muted highlight behind the hovered tab. */\nexport const Z_TABS_HOVER_GLIDE_TYPES: ZTabsType[] = ['underline-hover'];\n","import type { ZTabsBox, ZTabsContentAnimation } from './z-tabs.types';\n\n/** Hands out a fresh, monotonically increasing id for scoping each `z-tabs` instance's cache key. */\nexport const zTabsInstanceIds = (() => {\n let counter = 0;\n return { next: (): number => ++counter };\n})();\n\n/**\n * Counter-scales the indicator's corner radius across the glide so a box that is being scaled still\n * renders the radius its design calls for, instead of stretched oval caps.\n */\nexport function zTabsRadiusKeyframes(radius: number, scaleX: number, scaleY: number): Keyframe[] {\n const steps = 16;\n return Array.from({ length: steps }, (_, index) => {\n const progress = index / (steps - 1);\n const x = scaleX + (1 - scaleX) * progress;\n const y = scaleY + (1 - scaleY) * progress;\n return { borderRadius: `${radius / x}px / ${radius / y}px` };\n });\n}\n\n/** Queues low-priority work on idle time, falling back to a timer where `requestIdleCallback` is missing. */\nexport function zTabsRequestIdle(task: () => void, timeout = 200): number {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n const idle = window.requestIdleCallback;\n return idle ? idle(() => task(), { timeout }) : window.setTimeout(task, 0);\n}\n\n/** Cancels a handle returned by `zTabsRequestIdle`, regardless of which scheduler produced it. */\nexport function zTabsCancelIdle(handle: number | undefined): void {\n if (!handle || typeof window === 'undefined') {\n return;\n }\n\n const cancel = window.cancelIdleCallback;\n if (cancel) {\n cancel(handle);\n return;\n }\n\n window.clearTimeout(handle);\n}\n\nexport function zTabsMeasure(button: HTMLElement): ZTabsBox {\n const container = button.offsetParent ?? button.parentElement;\n if (!container) {\n return { x: button.offsetLeft, y: button.offsetTop, w: button.offsetWidth, h: button.offsetHeight };\n }\n\n const buttonRect = button.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n return {\n x: buttonRect.left - containerRect.left,\n y: buttonRect.top - containerRect.top,\n w: buttonRect.width,\n h: buttonRect.height,\n };\n}\n\nexport function zTabsBoxEquals(a: ZTabsBox | undefined, b: ZTabsBox): boolean {\n if (!a) {\n return false;\n }\n\n return a.x === b.x && a.y === b.y && a.w === b.w && a.h === b.h;\n}\n\n/**\n * Keyframes for the entering panel, per `zContentAnimation`. `slide` and `blur` travel along the tab\n * strip's own axis so the content appears to come from the tab that was clicked; `direction` is 1 when\n * moving further down the list and -1 when moving back.\n *\n * Only `blur` animates a filter — it repaints the panel each frame, which is why the distance and\n * duration are kept small.\n */\nexport function zTabsContentKeyframes(\n animation: Exclude<ZTabsContentAnimation, 'none'>,\n direction: number,\n vertical: boolean\n): { keyframes: Keyframe[]; options: KeyframeAnimationOptions } {\n const offset = 16 * (direction >= 0 ? 1 : -1);\n const from = vertical ? `translateY(${offset}px)` : `translateX(${offset}px)`;\n\n if (animation === 'slide') {\n return {\n keyframes: [\n { opacity: 0, transform: from },\n { opacity: 1, transform: 'none' },\n ],\n options: { duration: 260, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', fill: 'both' },\n };\n }\n\n if (animation === 'blur') {\n return {\n keyframes: [\n { opacity: 0, filter: 'blur(0.25rem)', transform: from },\n { opacity: 1, filter: 'none', transform: 'none' },\n ],\n options: { duration: 240, easing: 'ease-out', fill: 'both' },\n };\n }\n\n if (animation === 'scale') {\n return {\n keyframes: [\n { opacity: 0, transform: 'scale(0.97)' },\n { opacity: 1, transform: 'none' },\n ],\n options: { duration: 220, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', fill: 'both' },\n };\n }\n\n return {\n keyframes: [{ opacity: 0 }, { opacity: 1 }],\n options: { duration: 180, easing: 'ease-out', fill: 'both' },\n };\n}\n","import { cva } from 'class-variance-authority';\n\nconst zBarePillTabs = 'relative gap-0.5 rounded-full bg-transparent p-0 dark:bg-transparent';\nconst zBarePillTabItem =\n 'z-10 shrink-0 rounded-full border-0 text-muted-foreground hover:text-foreground data-[active=true]:text-primary-foreground';\n\nexport const zTabsVariants = cva('z-tabs flex min-w-0', {\n variants: {\n zType: {\n line: 'gap-0',\n soft: 'gap-1 bg-background p-0 dark:bg-transparent',\n segment: 'relative gap-1 rounded-sm bg-muted/60 p-1 dark:bg-muted/35',\n 'segment-solid': 'relative gap-1 rounded-sm bg-muted/60 p-1 dark:bg-muted/35',\n 'pill-solid': 'relative gap-1 rounded-full bg-muted/60 p-1 dark:bg-muted/35',\n 'pill-blur': 'relative gap-1 rounded-full bg-muted/40 p-1 backdrop-blur-md dark:bg-muted/20',\n 'pill-float': zBarePillTabs,\n 'pill-primary': zBarePillTabs,\n assistant: 'relative w-full gap-1 rounded-(--radius-pill) bg-muted p-1 dark:bg-muted/40',\n 'underline-hover': 'relative gap-0 rounded-none bg-transparent p-0 dark:bg-transparent',\n bar: 'relative gap-1 rounded-none bg-transparent p-0 dark:bg-transparent',\n folder: 'isolate gap-0 bg-background p-0 dark:bg-transparent',\n 'folder-soft': 'isolate gap-0 bg-background p-0 dark:bg-transparent',\n 'folder-solid': 'isolate gap-0 bg-background p-0 dark:bg-transparent',\n underline: 'gap-0',\n underlined: 'gap-0 rounded-none bg-background p-0 dark:bg-transparent',\n badge: 'gap-0 rounded-none bg-background p-0 dark:bg-transparent',\n sharp: 'gap-1 rounded-none bg-background p-0 dark:bg-transparent',\n 'sharp-line': 'gap-0 rounded-none bg-background p-0 dark:bg-transparent',\n 'sharp-line-filled': 'gap-0 rounded-none bg-background p-0 dark:bg-transparent',\n square: 'gap-0 rounded-none bg-background p-0 dark:bg-transparent',\n 'vertical-sharp': 'gap-1 rounded-none bg-background p-0 dark:bg-transparent',\n 'code-line': 'h-10 w-full justify-start gap-0 rounded-none bg-background p-0 dark:bg-transparent',\n },\n zOrientation: {\n horizontal: 'w-max flex-row items-center',\n vertical: 'w-full flex-col items-stretch gap-1 border-b-0',\n },\n },\n defaultVariants: {\n zType: 'line',\n zOrientation: 'horizontal',\n },\n compoundVariants: [\n {\n zType: 'assistant',\n zOrientation: 'vertical',\n class: 'rounded-sm bg-muted/40 p-1 dark:bg-muted/25',\n },\n {\n zType: 'bar',\n zOrientation: 'vertical',\n class: 'gap-2 border-border border-e pe-4',\n },\n {\n zType: 'vertical-sharp',\n zOrientation: 'vertical',\n class: 'border-r-0 pr-0',\n },\n {\n zType: 'sharp-line',\n zOrientation: 'vertical',\n class: 'gap-0',\n },\n {\n zType: 'sharp-line-filled',\n zOrientation: 'vertical',\n class: 'gap-0',\n },\n ],\n});\n\nexport const zTabItemVariants = cva(\n 'z-tab-item relative inline-flex min-h-10 select-none items-center justify-center gap-2 whitespace-nowrap font-medium text-sm leading-none text-muted-foreground transition-[color,background-color,border-color,box-shadow,transform] duration-200 outline-none focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0 cursor-pointer disabled:opacity-45 disabled:cursor-not-allowed',\n {\n variants: {\n zType: {\n line: 'rounded-none border-0 hover:text-foreground data-[active=true]:text-primary after:pointer-events-none after:absolute after:inset-x-0 after:bottom-[-1px] after:h-1 after:bg-primary after:origin-center after:scale-x-0 after:transition-transform after:duration-200 data-[active=true]:after:scale-x-100',\n soft: 'rounded-sm border-0 text-muted-foreground hover:text-foreground data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-xs! dark:data-[active=true]:bg-primary/15',\n segment: 'z-10 rounded-sm border-0 text-muted-foreground hover:text-foreground data-[active=true]:text-primary',\n 'segment-solid':\n 'z-10 rounded-sm border-0 text-muted-foreground hover:text-foreground data-[active=true]:text-primary-foreground',\n 'pill-solid':\n 'z-10 rounded-full border-0 text-muted-foreground hover:text-foreground data-[active=true]:text-primary',\n 'pill-blur':\n 'z-10 rounded-full border-0 text-muted-foreground hover:text-foreground data-[active=true]:text-primary',\n 'pill-float': zBarePillTabItem,\n 'pill-primary': zBarePillTabItem,\n assistant:\n 'z-10 flex-1 justify-center gap-1.5 rounded-(--radius-pill) border-0 text-muted-foreground hover:text-foreground data-[active=true]:text-primary-foreground',\n 'underline-hover':\n 'z-10 shrink-0 rounded-none border-0 bg-transparent text-muted-foreground hover:text-foreground data-[active=true]:text-foreground',\n bar: 'z-10 gap-3 rounded-sm border-0 bg-transparent text-muted-foreground hover:text-foreground data-[active=true]:text-primary',\n folder:\n 'rounded-t-sm border-0 bg-transparent text-muted-foreground shadow-[inset_0_-1px_0_var(--border)] hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 data-[active=true]:z-[2] data-[active=true]:bg-background data-[active=true]:text-primary data-[active=true]:shadow-[inset_1px_0_0_var(--border),inset_-1px_0_0_var(--border),inset_0_1px_0_var(--border)]',\n 'folder-soft':\n 'rounded-t-sm border-0 bg-transparent text-muted-foreground shadow-[inset_0_-1px_0_var(--border)] hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 data-[active=true]:z-[2] data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-[inset_1px_0_0_var(--border),inset_-1px_0_0_var(--border),inset_0_1px_0_var(--border)] dark:data-[active=true]:bg-primary/15',\n 'folder-solid':\n 'rounded-t-sm border-0 bg-transparent text-muted-foreground shadow-[inset_0_-1px_0_var(--border)] hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 data-[active=true]:z-[2] data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-[inset_1px_0_0_var(--primary),inset_-1px_0_0_var(--primary),inset_0_1px_0_var(--primary)]',\n underline:\n 'hover:text-foreground data-[active=true]:text-primary after:pointer-events-none after:absolute after:inset-x-1 after:bottom-[-1px] after:h-[0.1875rem] after:bg-primary after:origin-center after:scale-x-0 after:transition-transform after:duration-200 data-[active=true]:after:scale-x-100',\n underlined:\n 'rounded-none border-0 border-b-2 border-b-transparent! bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-b-primary! data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-sm!',\n badge:\n 'rounded-none border-0 border-b-2 border-b-transparent! bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-b-primary! data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-none',\n sharp:\n 'rounded-none border border-border/45 border-b-[3px] bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-primary! data-[active=true]:border-b-primary! data-[active=true]:text-primary',\n 'sharp-line':\n 'rounded-none first:rounded-l-sm last:rounded-r-sm border border-border/45 border-b-[3px] bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-primary! data-[active=true]:border-b-primary! data-[active=true]:text-primary',\n 'sharp-line-filled':\n 'rounded-none first:rounded-l-sm last:rounded-r-sm border border-border/45 border-b-[3px] bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-primary! data-[active=true]:border-b-primary! data-[active=true]:bg-primary/30 data-[active=true]:text-primary',\n square:\n 'rounded-none border border-border/45 border-b-[3px] bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-primary! data-[active=true]:border-b-primary! data-[active=true]:bg-primary/15 data-[active=true]:text-primary',\n 'vertical-sharp':\n 'rounded-none border border-transparent border-b-[3px] bg-background text-foreground/60 hover:text-foreground data-[active=true]:border-primary data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-none',\n 'code-line':\n 'relative inline-flex h-full min-h-8 flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-none first:rounded-l-sm last:rounded-r-sm border border-border/45 border-b-2 bg-background px-4 py-1.5 font-medium text-foreground/60 transition-all hover:text-foreground data-[active=true]:relative data-[active=true]:z-[1] data-[active=true]:-mb-px data-[active=true]:border-x-primary/70! data-[active=true]:border-t-primary/70! data-[active=true]:border-b-primary! data-[active=true]:bg-primary/30 data-[active=true]:text-primary data-[active=true]:shadow-none [&_span.z-tab-item-label]:font-mono [&_span.z-tab-item-label]:text-[13px]',\n },\n zSize: {\n xs: 'min-h-8 px-2.5 py-1 text-xs',\n sm: 'min-h-9 px-3 py-1.5 text-sm',\n default: 'min-h-10 px-4 py-2 text-sm',\n lg: 'min-h-[2.625rem] px-4.5 py-2.25 text-sm',\n },\n zOrientation: {\n horizontal: '',\n vertical: 'justify-start px-3 py-2',\n },\n },\n compoundVariants: [\n {\n zType: 'line',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm data-[active=true]:shadow-xs',\n },\n {\n zType: 'soft',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-sm data-[active=true]:bg-primary/10 data-[active=true]:shadow-xs dark:data-[active=true]:bg-primary/15',\n },\n {\n zType: 'segment',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-sm data-[active=true]:bg-background data-[active=true]:shadow-xs dark:data-[active=true]:border-border!',\n },\n {\n zType: 'segment-solid',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-sm data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-xs',\n },\n {\n zType: 'pill-solid',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-full data-[active=true]:bg-background data-[active=true]:shadow-sm dark:data-[active=true]:border-border!',\n },\n {\n zType: 'pill-blur',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-full backdrop-blur-md data-[active=true]:bg-background/70 data-[active=true]:shadow-sm',\n },\n {\n zType: 'pill-float',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-full data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-sm',\n },\n {\n zType: 'pill-primary',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-full',\n },\n {\n zType: 'assistant',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm',\n },\n {\n zType: 'underline-hover',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none px-4 py-2.5',\n },\n {\n zType: 'bar',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm px-4 py-2.5',\n },\n {\n zType: 'folder',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm data-[active=true]:shadow-xs',\n },\n {\n zType: 'folder-soft',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm data-[active=true]:shadow-xs',\n },\n {\n zType: 'folder-solid',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm data-[active=true]:shadow-xs',\n },\n {\n zType: 'underline',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-sm data-[active=true]:shadow-xs',\n },\n\n {\n zType: 'underlined',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none data-[active=true]:shadow-xs',\n },\n {\n zType: 'badge',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none data-[active=true]:shadow-xs',\n },\n {\n zType: 'sharp',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none data-[active=true]:shadow-xs',\n },\n {\n zType: 'sharp-line',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none data-[active=true]:shadow-xs',\n },\n {\n zType: 'sharp-line-filled',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none data-[active=true]:shadow-xs',\n },\n {\n zType: 'square',\n zOrientation: 'vertical',\n class: 'w-full justify-start rounded-none data-[active=true]:shadow-xs',\n },\n {\n zType: 'vertical-sharp',\n zOrientation: 'vertical',\n class:\n 'w-full justify-start rounded-none border border-transparent border-b-[3px] px-3 py-1.5 data-[active=true]:border-primary data-[active=true]:shadow-xs',\n },\n {\n zType: 'code-line',\n zSize: 'xs',\n zOrientation: 'horizontal',\n class: 'min-h-7 px-3 py-1 text-xs [&_span.z-tab-item-label]:text-xs',\n },\n {\n zType: 'code-line',\n zSize: 'sm',\n zOrientation: 'horizontal',\n class: 'min-h-8 px-3.5 py-1.5 text-sm',\n },\n {\n zType: 'code-line',\n zSize: 'default',\n zOrientation: 'horizontal',\n class: 'min-h-8 px-4 py-1.5 text-sm',\n },\n {\n zType: 'code-line',\n zSize: 'lg',\n zOrientation: 'horizontal',\n class: 'min-h-9 px-4.5 py-2 text-sm',\n },\n {\n zType: 'code-line',\n zOrientation: 'vertical',\n class: 'h-auto w-full flex-none justify-start rounded-none px-3 py-2 data-[active=true]:shadow-xs',\n },\n ],\n defaultVariants: {\n zType: 'line',\n zSize: 'default',\n zOrientation: 'horizontal',\n },\n }\n);\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n type EmbeddedViewRef,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n NgZone,\n output,\n signal,\n viewChild,\n untracked,\n ViewContainerRef,\n viewChildren,\n ViewEncapsulation,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZHoverGlideDirective } from '@shival99/z-ui/components/z-hover-glide';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZCacheService } from '@shival99/z-ui/services';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { ZTabPanelDirective } from './directives/z-tab-panel.directive';\nimport {\n Z_TABS_COLLAPSING_LABEL_TYPES,\n Z_TABS_GLIDE_TYPES,\n Z_TABS_HOVER_GLIDE_TYPES,\n Z_TABS_OMNI_GLIDE_TYPES,\n Z_TABS_SCROLL_TOLERANCE,\n Z_TABS_VERTICAL_GLIDE_TYPES,\n} from './z-tabs.define';\nimport type {\n ZTab,\n ZTabsBox,\n ZTabsContentAnimation,\n ZTabsContentFit,\n ZTabsOrientation,\n ZTabsSize,\n ZTabsType,\n} from './z-tabs.types';\nimport {\n zTabsBoxEquals,\n zTabsCancelIdle,\n zTabsContentKeyframes,\n zTabsInstanceIds,\n zTabsMeasure,\n zTabsRadiusKeyframes,\n zTabsRequestIdle,\n} from './z-tabs.util';\nimport { zTabsVariants, zTabItemVariants } from './z-tabs.variants';\n\n@Component({\n selector: 'z-tabs',\n imports: [\n ZIconComponent,\n ZHoverGlideDirective,\n ZButtonComponent,\n ZTooltipDirective,\n NgTemplateOutlet,\n ZPopoverDirective,\n TranslatePipe,\n NgScrollbar,\n ],\n standalone: true,\n templateUrl: './z-tabs.component.html',\n styleUrl: './z-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'z-tabs-wrapper block',\n },\n})\nexport class ZTabsComponent implements OnInit, AfterViewInit, OnDestroy {\n public readonly tabPanels = contentChildren(ZTabPanelDirective);\n public readonly tabsListContainer = viewChild<ElementRef<HTMLDivElement>>('tabsListContainer');\n public readonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n public readonly glideIndicator = viewChild<ElementRef<HTMLDivElement>>('glideIndicator');\n public readonly hoverIndicator = viewChild<ElementRef<HTMLDivElement>>('hoverIndicator');\n public readonly tabsList = viewChild<ElementRef<HTMLDivElement>>('tabsList');\n public readonly panelsHost = viewChild<ElementRef<HTMLDivElement>>('panelsHost');\n public readonly panelHost = viewChild('panelHost', { read: ViewContainerRef });\n\n public readonly class = input<ClassValue>('');\n public readonly zTabs = input.required<ZTab[]>();\n public readonly zType = input<ZTabsType>('line');\n public readonly zSize = input<ZTabsSize>('default');\n public readonly zOrientation = input<ZTabsOrientation>('horizontal');\n public readonly zContentFit = input<ZTabsContentFit>('none');\n public readonly zContentAnimation = input<ZTabsContentAnimation>('fade');\n public readonly zLazy = input(false);\n public readonly zTabsOnly = input(false);\n public readonly zShowNavWrapper = input(false);\n public readonly zNavFullWidth = input(false);\n public readonly zClassContent = input<ClassValue>('');\n public readonly zShowContentWrapper = input(true);\n public readonly zReloadable = input(true);\n public readonly zEmitOnActiveClick = input(true);\n public readonly zCache = input(true);\n public readonly zCacheKey = input('');\n public readonly zWithDropdown = input('150px');\n\n public readonly activeTab = model<string>('');\n public readonly zTabChange = output<string>();\n\n protected readonly renderedTab = signal<string>('');\n protected readonly canScrollLeft = signal(false);\n protected readonly canScrollRight = signal(false);\n protected readonly bouncingTab = signal<string | null>(null);\n protected readonly hoveredTab = signal<string | null>(null);\n\n protected readonly isGlideType = computed(() => {\n const type = this.zType();\n if (Z_TABS_OMNI_GLIDE_TYPES.includes(type)) {\n return true;\n }\n\n if (Z_TABS_VERTICAL_GLIDE_TYPES.includes(type)) {\n return this.zOrientation() === 'vertical';\n }\n\n return Z_TABS_GLIDE_TYPES.includes(type) && this.zOrientation() === 'horizontal';\n });\n\n protected readonly isHoverGlideType = computed(() => Z_TABS_HOVER_GLIDE_TYPES.includes(this.zType()));\n\n private readonly _hasCollapsingLabel = computed(\n () => Z_TABS_COLLAPSING_LABEL_TYPES.includes(this.zType()) && this.zOrientation() === 'horizontal'\n );\n\n /**\n * A vertical rail truncates long labels, so it gets a tooltip. `assistant` never does: it collapses\n * inactive labels by design, and a tooltip on every icon turns browsing the strip into a popup storm.\n */\n protected readonly showsTabTooltip = computed(\n () => this.zOrientation() === 'vertical' && this.zType() !== 'assistant'\n );\n\n private _resizeObserver?: ResizeObserver;\n private _scrollFrame?: number;\n private readonly _zone = inject(NgZone);\n private _mountedPanel = '';\n private _panelView?: EmbeddedViewRef<unknown>;\n private _retiredViews: EmbeddedViewRef<unknown>[] = [];\n private _teardownHandle?: number;\n private _glideBox?: ZTabsBox;\n private _hoverBox?: ZTabsBox;\n private _glidePending = false;\n private _glideAnimations: Animation[] = [];\n private _contentAnimation?: Animation;\n private _lastActiveIndex = -1;\n private _contentDirection = 1;\n private _viewReady = false;\n private readonly _cacheInstanceId = zTabsInstanceIds.next();\n\n constructor() {\n effect(() => {\n this.zTabs();\n this._outsideFrame(() => this.checkScroll());\n });\n\n effect(() => {\n this.activeTab();\n this.zTabs();\n this.isGlideType();\n this._glidePending = true;\n this._outsideFrame(() => this._updateGlideIndicator());\n });\n\n effect(() => {\n this.hoveredTab();\n this.isHoverGlideType();\n this._outsideFrame(() => this._updateHoverIndicator());\n });\n\n effect(() => {\n this.activeTab();\n this.zTabs();\n this._hasCollapsingLabel();\n this.zOrientation();\n this._outsideFrame(() => this._updateCollapsingLabels());\n });\n\n effect(() => {\n const active = this.activeTab();\n this.zContentAnimation();\n untracked(() => this._trackContentDirection(active));\n });\n\n effect(() => {\n const active = this.activeTab();\n this.zLazy();\n untracked(() => this._scheduleCommit(active));\n });\n\n effect(() => {\n const host = this.panelHost();\n const rendered = this.renderedTab();\n const panels = this.tabPanels();\n untracked(() => this._swapPanelView(host, rendered, panels));\n });\n }\n\n ngOnInit(): void {\n this._restoreActiveTabFromCache();\n }\n\n ngAfterViewInit(): void {\n this._viewReady = true;\n this.checkScroll();\n this._setupResizeObserver();\n this._outsideFrame(() => this._updateGlideIndicator());\n }\n\n ngOnDestroy(): void {\n zTabsCancelIdle(this._teardownHandle);\n for (const view of [...this._retiredViews, this._panelView]) {\n view?.destroy();\n }\n this._retiredViews = [];\n this._resizeObserver?.disconnect();\n for (const animation of this._glideAnimations) {\n animation.cancel();\n }\n this._contentAnimation?.cancel();\n if (this._scrollFrame !== undefined) {\n cancelAnimationFrame(this._scrollFrame);\n }\n }\n\n protected readonly tabsClasses = computed(() =>\n zMergeClasses(\n zTabsVariants({\n zType: this.zType(),\n zOrientation: this.zOrientation(),\n }),\n this.zNavFullWidth() ? 'w-full' : '',\n this.class()\n )\n );\n\n protected readonly contentWrapperFramed = computed(() => {\n if (!this.zShowContentWrapper()) {\n return false;\n }\n\n if (this.zOrientation() === 'vertical') {\n return false;\n }\n\n const type = this.zType();\n return (\n type === 'folder' ||\n type === 'folder-soft' ||\n type === 'folder-solid' ||\n type === 'sharp' ||\n type === 'sharp-line' ||\n type === 'sharp-line-filled' ||\n type === 'square' ||\n type === 'code-line'\n );\n });\n\n protected readonly tabsListHasBottomPadding = computed(() => {\n if (this.zOrientation() !== 'horizontal') {\n return false;\n }\n\n const type = this.zType();\n return (\n type !== 'folder' &&\n type !== 'folder-soft' &&\n type !== 'folder-solid' &&\n type !== 'segment' &&\n type !== 'segment-solid' &&\n type !== 'pill-solid' &&\n type !== 'pill-blur' &&\n type !== 'pill-float' &&\n type !== 'pill-primary' &&\n type !== 'assistant' &&\n type !== 'underline-hover' &&\n type !== 'bar' &&\n type !== 'sharp' &&\n type !== 'sharp-line' &&\n type !== 'sharp-line-filled' &&\n type !== 'square' &&\n type !== 'code-line'\n );\n });\n\n protected readonly verticalTabsScrollable = computed(\n () => this.zOrientation() === 'vertical' && this.zTabs().length > 8\n );\n\n protected readonly navClasses = computed(() =>\n zMergeClasses('z-tabs-nav flex items-center gap-1.5', this.zClassContent())\n );\n\n protected readonly tabItems = computed(() => {\n const activeValue = this.activeTab();\n const classes = this._tabItemClasses();\n\n return this.zTabs().map(tab => ({\n tab,\n classes,\n isActive: activeValue === tab.value,\n }));\n });\n\n private readonly _tabItemClasses = computed(() =>\n zMergeClasses(\n zTabItemVariants({\n zType: this.zType(),\n zSize: this.zSize(),\n zOrientation: this.zOrientation(),\n })\n )\n );\n\n protected selectTab(tab: ZTab, scrollToView = true): void {\n if (tab.disabled) {\n return;\n }\n\n const isAlreadyActive = this.activeTab() === tab.value;\n if (isAlreadyActive && !this.zReloadable()) {\n return;\n }\n\n this.activeTab.set(tab.value);\n this._saveActiveTabToCache(tab.value);\n\n if (this.isGlideType()) {\n this.bouncingTab.set(tab.value);\n setTimeout(() => {\n if (this.bouncingTab() === tab.value) {\n this.bouncingTab.set(null);\n }\n }, 320);\n }\n\n if (!isAlreadyActive || this.zEmitOnActiveClick()) {\n this.zTabChange.emit(tab.value);\n }\n\n if (scrollToView && this.zOrientation() === 'horizontal') {\n this._outsideFrame(() => {\n const tabIndex = this.zTabs().findIndex(t => t.value === tab.value);\n const tabButtonsList = this.tabButtons();\n const tabButton = tabButtonsList[tabIndex];\n if (tabButton) {\n const alignTabInViewport = () => {\n const container = this.tabsListContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n const containerRect = container.getBoundingClientRect();\n const tabRect = tabButton.nativeElement.getBoundingClientRect();\n const centeredScrollLeft =\n container.scrollLeft + tabRect.left - containerRect.left - (container.clientWidth - tabRect.width) / 2;\n const maxScrollLeft = container.scrollWidth - container.clientWidth;\n\n container.scrollTo({\n left: Math.max(0, Math.min(centeredScrollLeft, maxScrollLeft)),\n behavior: 'smooth',\n });\n };\n\n alignTabInViewport();\n }\n });\n }\n }\n\n protected onTabKeydown(event: KeyboardEvent, currentIndex: number): void {\n const tabs = this.zTabs().filter(t => !t.disabled);\n const currentTab = tabs[currentIndex];\n\n if (!currentTab) {\n return;\n }\n\n const isHorizontal = this.zOrientation() === 'horizontal';\n const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\n const prevKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\n\n if (event.key === nextKey) {\n event.preventDefault();\n const nextIndex = (currentIndex + 1) % tabs.length;\n this.selectTab(tabs[nextIndex]);\n return;\n }\n\n if (event.key === prevKey) {\n event.preventDefault();\n const prevIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n this.selectTab(tabs[prevIndex]);\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n this.selectTab(tabs[0]);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.selectTab(tabs[tabs.length - 1]);\n }\n }\n\n /**\n * Keyboard focus moves the highlight too, so tabbing through the strip reads the same as hovering.\n * Every type pays the listener, but only the hover-glide types get past the guard into a signal write.\n */\n protected onTabHover(tab: ZTab): void {\n if (!this.isHoverGlideType() || tab.disabled || this.hoveredTab() === tab.value) {\n return;\n }\n\n this.hoveredTab.set(tab.value);\n }\n\n protected onTabHoverEnd(): void {\n if (!this.isHoverGlideType() || this.hoveredTab() === null) {\n return;\n }\n\n this.hoveredTab.set(null);\n }\n\n protected checkScroll(): void {\n const container = this.tabsListContainer()?.nativeElement;\n if (!container || this.zOrientation() !== 'horizontal') {\n this.canScrollLeft.set(false);\n this.canScrollRight.set(false);\n return;\n }\n\n const { scrollLeft, scrollWidth, clientWidth } = container;\n const maxScrollLeft = scrollWidth - clientWidth;\n\n if (maxScrollLeft <= Z_TABS_SCROLL_TOLERANCE) {\n container.scrollLeft = 0;\n this.canScrollLeft.set(false);\n this.canScrollRight.set(false);\n return;\n }\n\n this.canScrollLeft.set(scrollLeft > Z_TABS_SCROLL_TOLERANCE);\n this.canScrollRight.set(maxScrollLeft - scrollLeft > Z_TABS_SCROLL_TOLERANCE);\n }\n\n protected scrollLeft(): void {\n const container = this.tabsListContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n container.scrollBy({ left: -200, behavior: 'smooth' });\n setTimeout(() => this.checkScroll(), 300);\n }\n\n protected scrollRight(): void {\n const container = this.tabsListContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n container.scrollBy({ left: 200, behavior: 'smooth' });\n setTimeout(() => this.checkScroll(), 300);\n }\n\n protected onTabsScroll(): void {\n if (this._scrollFrame !== undefined) {\n return;\n }\n\n // Smooth-scrolling the strip fires this every frame; measuring once per frame keeps the forced\n // layout from piling up while the glide animation runs.\n this._scrollFrame = this._outsideFrame(() => {\n this._scrollFrame = undefined;\n this.checkScroll();\n });\n }\n\n /**\n * Commits the new panel on the next frame, so the tab strip paints its new state before a heavy\n * subtree is built. Nothing longer is needed: the glide runs on the compositor, so the mount that\n * follows cannot stall it — waiting out the animation would only make content feel late.\n */\n private _scheduleCommit(value: string): void {\n if (!value) {\n return;\n }\n\n if (!this.zLazy() || !this._viewReady || typeof requestAnimationFrame === 'undefined') {\n this._commitPanel(value);\n return;\n }\n\n // Deliberately inside the Angular zone: this instantiates the consumer's panel content.\n requestAnimationFrame(() => this._commitPanel(value));\n }\n\n private _commitPanel(value: string): void {\n if (this.activeTab() !== value) {\n return;\n }\n\n this.renderedTab.set(value);\n }\n\n /**\n * Sizes the indicator once, then moves it with a transform-only animation. Transform is the one\n * property the compositor can tick by itself, so a busy main thread — a heavy panel mounting, the\n * host's own work — cannot drop frames from the glide. A second animation counter-scales the corner\n * radius; that one only repaints a small element and degrades to a late radius, never a stalled pill.\n */\n private _updateGlideIndicator(): void {\n const element = this.glideIndicator()?.nativeElement;\n if (!this.isGlideType() || !element) {\n this._glideBox = undefined;\n return;\n }\n\n const activeIndex = this.zTabs().findIndex(tab => tab.value === this.activeTab());\n const button = this.tabButtons()[activeIndex]?.nativeElement;\n if (!button) {\n return;\n }\n\n const next = zTabsMeasure(button);\n const previous = this._glideBox;\n const moved = !zTabsBoxEquals(previous, next);\n\n // A tab change arms the glide; whichever call observes the new geometry first plays it, and later\n // calls for the same geometry leave the running animation alone.\n const shouldGlide = this._glidePending && Boolean(previous) && !this._prefersReducedMotion();\n if (!moved) {\n return;\n }\n\n this._glidePending = false;\n this._glideBox = next;\n\n for (const animation of this._glideAnimations) {\n animation.cancel();\n }\n this._glideAnimations = [];\n\n element.style.width = `${next.w}px`;\n element.style.height = `${next.h}px`;\n element.style.transform = `translate(${next.x}px, ${next.y}px)`;\n element.style.borderRadius = '';\n element.style.opacity = '1';\n\n // jsdom and older SSR shims ship no Web Animations API; the indicator simply snaps there.\n if (!shouldGlide || !previous || typeof element.animate !== 'function') {\n return;\n }\n\n const scaleX = previous.w / next.w;\n const scaleY = previous.h / next.h;\n // Both animations share one timing so the radius correction tracks the transform's progress exactly.\n const options: KeyframeAnimationOptions = { duration: 480, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' };\n this._glideAnimations.push(\n element.animate(\n [\n { transform: `translate(${previous.x}px, ${previous.y}px) scale(${scaleX}, ${scaleY})` },\n { transform: `translate(${next.x}px, ${next.y}px)` },\n ],\n options\n )\n );\n\n const radius = Math.min(parseFloat(getComputedStyle(element).borderTopLeftRadius) || 0, next.w / 2, next.h / 2);\n if (radius > 0) {\n this._glideAnimations.push(element.animate(zTabsRadiusKeyframes(radius, scaleX, scaleY), options));\n }\n }\n\n /**\n * Swaps the visible panel. The incoming view is built and bound while it is still off-document, so\n * none of that work triggers style, layout or paint; only the final insert does. The outgoing view is\n * detached immediately — it leaves the DOM at once — and destroyed off the critical path, keeping\n * teardown out of the frame the user clicked in. It is still destroyed, so panels re-initialise.\n */\n private _swapPanelView(\n host: ViewContainerRef | undefined,\n value: string,\n panels: readonly ZTabPanelDirective[]\n ): void {\n if (!host || !this.zLazy() || !value || this._mountedPanel === value) {\n return;\n }\n\n const panel = panels.find(item => item.zTabPanel() === value);\n if (!panel) {\n return;\n }\n\n if (host.length > 0) {\n host.detach(0);\n }\n if (this._panelView) {\n this._retiredViews.push(this._panelView);\n }\n\n const view = panel.template.createEmbeddedView({});\n view.detectChanges();\n host.insert(view);\n\n this._panelView = view;\n this._mountedPanel = value;\n this._scheduleTeardown();\n // The lazy path knows the exact moment the panel lands, so it plays the enter animation itself\n // instead of waiting for the frame the eager path has to.\n this._animateContent();\n }\n\n private _scheduleTeardown(): void {\n if (this._retiredViews.length === 0 || this._teardownHandle !== undefined) {\n return;\n }\n\n this._teardownHandle = zTabsRequestIdle(() => {\n this._teardownHandle = undefined;\n const retired = this._retiredViews;\n this._retiredViews = [];\n for (const view of retired) {\n view.destroy();\n }\n });\n }\n\n /**\n * Records which way the strip travelled so `slide`/`blur` can enter from the side the user clicked\n * towards. Effects run after the active-panel binding has updated, so the eager path can animate\n * immediately and avoid painting one unanimated frame before the enter state is applied.\n */\n private _trackContentDirection(active: string): void {\n const index = this.zTabs().findIndex(tab => tab.value === active);\n if (index === -1) {\n return;\n }\n\n const hadActiveTab = this._lastActiveIndex !== -1;\n if (hadActiveTab) {\n this._contentDirection = index >= this._lastActiveIndex ? 1 : -1;\n }\n this._lastActiveIndex = index;\n\n if (!this.zLazy() && hadActiveTab) {\n // Let Angular finish the active-panel binding, then start before the browser paints. Waiting\n // for another RAF lets one unanimated frame flash through, which reads as a small jump.\n queueMicrotask(() => this._animateContent());\n }\n }\n\n /**\n * Animates the entering panel. Everything but `blur` is transform/opacity only, so the animation\n * ticks on the compositor and a heavy panel mounting in the same frame cannot stall it.\n */\n private _animateContent(): void {\n const animation = this.zContentAnimation();\n this._contentAnimation?.cancel();\n this._contentAnimation = undefined;\n\n if (animation === 'none' || this.zTabsOnly() || this._prefersReducedMotion()) {\n return;\n }\n\n const panel = this.panelsHost()?.nativeElement?.querySelector<HTMLElement>(\n '[role=\"tabpanel\"][data-state=\"active\"]'\n );\n if (!panel || typeof panel.animate !== 'function') {\n return;\n }\n\n const { keyframes, options } = zTabsContentKeyframes(\n animation,\n this._contentDirection,\n this.zOrientation() === 'vertical'\n );\n this._contentAnimation = panel.animate(keyframes, options);\n }\n\n /**\n * `width: auto` cannot be interpolated, so the label's own content width is measured and written as\n * an explicit pixel width for the stylesheet to transition from zero. `scrollWidth` reports that\n * content width even while the element is clamped to zero and hidden, so no reflow-forcing dance is\n * needed. The active surface lives on the tab itself for these types, which is what lets the pill\n * grow in step with the label rather than chase a box that is still resizing.\n */\n private _updateCollapsingLabels(): void {\n if (!this._hasCollapsingLabel()) {\n return;\n }\n\n for (const button of this.tabButtons()) {\n const label = button.nativeElement.querySelector<HTMLElement>('.z-tab-item-label');\n if (!label) {\n continue;\n }\n\n const isActive = button.nativeElement.dataset['active'] === 'true';\n label.style.width = isActive ? `${label.scrollWidth}px` : '0px';\n }\n }\n\n /**\n * Moves the muted highlight onto the hovered tab. The first placement jumps into position and only\n * fades in — gliding it in from a stale box would read as a stray rectangle crossing the strip.\n */\n private _updateHoverIndicator(): void {\n const element = this.hoverIndicator()?.nativeElement;\n if (!this.isHoverGlideType() || !element) {\n this._hoverBox = undefined;\n return;\n }\n\n const hovered = this.hoveredTab();\n if (!hovered) {\n element.style.opacity = '0';\n this._hoverBox = undefined;\n return;\n }\n\n const index = this.zTabs().findIndex(tab => tab.value === hovered);\n const button = this.tabButtons()[index]?.nativeElement;\n if (!button) {\n return;\n }\n\n const next = zTabsMeasure(button);\n if (zTabsBoxEquals(this._hoverBox, next)) {\n return;\n }\n\n const isFirstPlacement = !this._hoverBox;\n this._hoverBox = next;\n\n if (isFirstPlacement) {\n element.style.transition = 'opacity 150ms ease-out';\n }\n\n element.style.width = `${next.w}px`;\n element.style.height = `${next.h}px`;\n element.style.transform = `translate(${next.x}px, ${next.y}px)`;\n element.style.opacity = '1';\n\n if (isFirstPlacement) {\n // Hand the transition back to the stylesheet so the next hover glides instead of jumping.\n this._outsideFrame(() => {\n element.style.transition = '';\n });\n }\n }\n\n /**\n * Measurement and imperative DOM work never needs a change-detection tick of its own. With zone.js a\n * plain `requestAnimationFrame` schedules one per callback — wasteful during a smooth scroll, which\n * fires every frame. Signal writes made inside still schedule change detection on their own.\n */\n private _outsideFrame(task: () => void): number {\n return this._zone.runOutsideAngular(() => requestAnimationFrame(task));\n }\n\n private _prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && Boolean(window.matchMedia?.('(prefers-reduced-motion: reduce)').matches);\n }\n\n private _setupResizeObserver(): void {\n const container = this.tabsListContainer()?.nativeElement ?? this.tabsList()?.nativeElement;\n if (!container) {\n return;\n }\n\n this._resizeObserver = new ResizeObserver(() => {\n this.checkScroll();\n this._updateGlideIndicator();\n this._updateHoverIndicator();\n });\n\n this._resizeObserver.observe(container);\n }\n\n private _restoreActiveTabFromCache(): void {\n if (!this.zCache()) {\n return;\n }\n\n const cacheKey = this._getCacheKey();\n const cachedTab = ZCacheService.get<string>(cacheKey);\n if (!cachedTab) {\n return;\n }\n\n const tab = this.zTabs().find(item => item.value === cachedTab && !item.disabled);\n if (!tab) {\n return;\n }\n\n this.activeTab.set(tab.value);\n }\n\n private _saveActiveTabToCache(value: string): void {\n if (!this.zCache()) {\n return;\n }\n\n ZCacheService.set(this._getCacheKey(), value);\n }\n\n private _getCacheKey(): string {\n const customKey = this.zCacheKey().trim();\n if (customKey) {\n return customKey;\n }\n\n const path = typeof window === 'undefined' ? 'ssr' : window.location.pathname;\n return `z-tabs:${path}:${this._cacheInstanceId}`;\n }\n\n protected scrollToActiveDropdownItem(): void {\n setTimeout(() => {\n const activeIndex = this.zTabs().findIndex(tab => tab.value === this.activeTab());\n if (activeIndex === -1) {\n return;\n }\n\n const dropdownMenu = document.querySelector('.z-tabs-dropdown-menu') as HTMLElement;\n if (!dropdownMenu) {\n return;\n }\n\n const dropdownItems = Array.from(dropdownMenu.querySelectorAll('button'));\n const activeItem = dropdownItems[activeIndex];\n\n if (activeItem && dropdownMenu) {\n const menuRect = dropdownMenu.getBoundingClientRect();\n const itemRect = activeItem.getBoundingClientRect();\n const scrollTop = activeItem.offsetTop - menuRect.height / 2 + itemRect.height / 2;\n\n dropdownMenu.scrollTo({\n top: scrollTop,\n behavior: 'smooth',\n });\n }\n }, 150);\n }\n}\n","<div\n class=\"z-tabs-container flex gap-1\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-content-fit]=\"zContentFit()\"\n [class.flex-col]=\"!zTabsOnly()\"\n [class.flex-row]=\"zOrientation() === 'vertical'\"\n [class.gap-4]=\"zOrientation() === 'vertical'\">\n <!-- Tabs Navigation (Left/Scroll/Tabs/Right/Dropdown) -->\n <div\n [class]=\"navClasses()\"\n [class.z-tabs-nav-surface]=\"zShowNavWrapper() && isGlideType()\"\n [class.w-full]=\"zOrientation() === 'horizontal' && (!zShowNavWrapper() || zNavFullWidth())\"\n [class.w-fit]=\"zOrientation() === 'horizontal' && zShowNavWrapper() && !zNavFullWidth()\"\n [class.max-w-full]=\"zOrientation() === 'horizontal' && zShowNavWrapper() && !zNavFullWidth()\"\n [class.w-auto]=\"zOrientation() === 'vertical'\"\n [class.shrink-0]=\"zOrientation() === 'vertical'\">\n <!-- Scroll Left Button -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n [zWave]=\"false\"\n class=\"z-tabs-nav-control z-tabs-nav-prev shrink-0\"\n (click)=\"scrollLeft()\"\n aria-label=\"Scroll left\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Tabs List Container with Scroll + Fade -->\n <div\n class=\"z-tabs-scroll-container relative min-w-0 flex-1\"\n [class.z-tabs-scroll-container-surface]=\"(canScrollLeft() || canScrollRight()) && !zShowNavWrapper()\"\n [attr.data-type]=\"zType()\">\n @if (zOrientation() === 'vertical') {\n <ng-scrollbar\n class=\"z-tabs-scroll-wrapper z-tabs-scrollbar vertical\"\n [class.z-tabs-scroll-wrapper-limited]=\"verticalTabsScrollable()\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </ng-scrollbar>\n } @else {\n <div\n #tabsListContainer\n class=\"z-tabs-scroll-wrapper\"\n [class.z-tabs-scroll-wrapper-scrollable]=\"canScrollLeft() || canScrollRight()\"\n [class.z-tabs-scroll-wrapper-fade-left]=\"canScrollLeft()\"\n [class.z-tabs-scroll-wrapper-fade-right]=\"canScrollRight()\"\n (scroll)=\"onTabsScroll()\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </div>\n }\n </div>\n\n <!-- Scroll Right Button -->\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control z-tabs-nav-next shrink-0\"\n (click)=\"scrollRight()\"\n [zWave]=\"false\"\n aria-label=\"Scroll right\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Dropdown Button (Mobile or Overflow) -->\n @if (zOrientation() === 'horizontal' && (canScrollLeft() || canScrollRight())) {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control z-tabs-nav-menu shrink-0\"\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n zPosition=\"bottom-right\"\n [zWave]=\"false\"\n zClass=\"min-w-[6.25rem] max-w-[12.5rem]\"\n (zShow)=\"scrollToActiveDropdownItem()\"\n aria-label=\"Select tab\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </z-button>\n }\n </div>\n\n <ng-template #tabsListTpl>\n <!-- Tab List -->\n <div\n #tabsList\n [class]=\"tabsClasses()\"\n [class.pb-0.5]=\"tabsListHasBottomPadding()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"zOrientation()\"\n [attr.data-type]=\"zType()\">\n @if (isHoverGlideType()) {\n <div\n #hoverIndicator\n class=\"z-tabs-hover-indicator pointer-events-none absolute top-0 left-0 z-[5]\"\n [attr.data-type]=\"zType()\"\n aria-hidden=\"true\"></div>\n }\n @if (isGlideType()) {\n <div\n #glideIndicator\n class=\"z-tabs-glide-indicator pointer-events-none absolute top-0 left-0 z-[6]\"\n [attr.data-type]=\"zType()\"\n aria-hidden=\"true\"></div>\n }\n @for (item of tabItems(); track item.tab.value; let idx = $index; let last = $last) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [class]=\"item.classes\"\n [class.z-tab-item-has-icon]=\"!!item.tab.icon || !!item.tab.iconTemplate\"\n [attr.data-active]=\"item.isActive\"\n [attr.data-state]=\"item.isActive ? 'active' : 'inactive'\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-last]=\"last\"\n [attr.aria-selected]=\"item.isActive\"\n [attr.aria-controls]=\"'panel-' + item.tab.value\"\n [disabled]=\"item.tab.disabled\"\n [tabindex]=\"item.isActive ? 0 : -1\"\n z-tooltip\n [zContent]=\"showsTabTooltip() ? (item.tab.label | translate) : ''\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n (click)=\"selectTab(item.tab)\"\n (keydown)=\"onTabKeydown($event, idx)\"\n (mouseenter)=\"onTabHover(item.tab)\"\n (mouseleave)=\"onTabHoverEnd()\"\n (focus)=\"onTabHover(item.tab)\"\n (blur)=\"onTabHoverEnd()\">\n @if (item.tab.iconTemplate) {\n <span class=\"shrink-0\" [class.z-tab-icon-bounce]=\"isGlideType() && bouncingTab() === item.tab.value\">\n <ng-container *ngTemplateOutlet=\"item.tab.iconTemplate; context: { $implicit: item.tab }\" />\n </span>\n } @else if (item.tab.icon) {\n <z-icon\n [zType]=\"item.tab.icon\"\n zSize=\"16\"\n class=\"shrink-0\"\n [class.z-tab-icon-bounce]=\"isGlideType() && bouncingTab() === item.tab.value\" />\n }\n <span\n class=\"z-tab-item-label min-w-0 flex-1 truncate text-left\"\n [class.z-tab-icon-bounce]=\"isGlideType() && bouncingTab() === item.tab.value\">\n {{ item.tab.label | translate }}\n </span>\n @if (item.tab.badge) {\n <span\n class=\"ring-background ml-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-(--radius-pill) px-1.5 text-xs font-semibold ring-2\"\n [class.bg-primary]=\"zType() !== 'badge'\"\n [class.text-primary-foreground]=\"zType() !== 'badge'\"\n [class.bg-primary!]=\"zType() === 'badge'\"\n [class.text-primary-foreground!]=\"zType() === 'badge'\">\n {{ item.tab.badge }}\n </span>\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Tab Panels -->\n @if (!zTabsOnly()) {\n <div\n #panelsHost\n class=\"z-tabs-panels min-h-0\"\n [class.flex-1]=\"zOrientation() === 'vertical'\"\n [class.shadow-xs]=\"contentWrapperFramed()\"\n [class.z-tabs-panels-unwrapped]=\"!contentWrapperFramed()\">\n @if (!zLazy()) {\n @for (panel of tabPanels(); track panel.zTabPanel()) {\n <div\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.zTabPanel()\"\n [attr.aria-labelledby]=\"panel.zTabPanel()\"\n [attr.data-state]=\"activeTab() === panel.zTabPanel() ? 'active' : 'inactive'\"\n [attr.inert]=\"activeTab() === panel.zTabPanel() ? null : ''\">\n <ng-container *ngTemplateOutlet=\"panel.template\" />\n </div>\n }\n } @else if (renderedTab()) {\n <div role=\"tabpanel\" [id]=\"'panel-' + renderedTab()\" [attr.aria-labelledby]=\"renderedTab()\" data-state=\"active\">\n <ng-container #panelHost />\n </div>\n }\n </div>\n }\n</div>\n\n<!-- Dropdown Menu Template -->\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n zHoverGlide\n zHoverGlideClass=\"bg-muted/70 rounded-(--radius-sm)\"\n class=\"z-tabs-dropdown-menu flex max-h-[18.75rem] flex-col gap-0.5 overflow-y-auto p-1\"\n [style.width]=\"zWithDropdown()\"\n [style.min-width]=\"zWithDropdown()\"\n [style.max-width]=\"zWithDropdown()\">\n @for (item of tabItems(); track item.tab.value) {\n <button\n #dropdownItem\n type=\"button\"\n class=\"relative z-[1] flex w-full cursor-pointer items-center justify-start gap-2 rounded-sm px-2 py-1.5 text-left text-sm font-medium transition-colors outline-none disabled:pointer-events-none disabled:opacity-50\"\n data-glide-item\n [class.hover:text-foreground]=\"!item.isActive\"\n [class.focus:bg-primary/10]=\"!item.isActive\"\n [class.bg-primary/15]=\"item.isActive\"\n [class.text-primary]=\"item.isActive\"\n [disabled]=\"item.tab.disabled\"\n (click)=\"selectTab(item.tab, true); close()\">\n @if (item.tab.icon) {\n <z-icon [zType]=\"item.tab.icon\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n <span\n class=\"min-w-0 flex-1 truncate\"\n z-tooltip\n [zContent]=\"item.tab.label | translate\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"dropdownItem\">\n {{ item.tab.label | translate }}\n </span>\n @if (item.tab.badge) {\n <span\n class=\"bg-primary text-primary-foreground inline-flex h-5 min-w-5 items-center justify-center rounded-(--radius-pill) px-1.5 text-xs font-semibold\">\n {{ item.tab.badge }}\n </span>\n }\n @if (item.isActive) {\n <z-icon zType=\"lucideCheck\" zSize=\"16\" class=\"text-primary shink-0\" />\n }\n </button>\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,364 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Pipe, inject, viewChild, input, computed, output, signal, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive } from '@angular/core';
|
|
3
|
-
import { TranslatePipe } from '@ngx-translate/core';
|
|
4
|
-
import { ZIconComponent } from '@shival99/z-ui/components/z-icon';
|
|
5
|
-
import { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';
|
|
6
|
-
import { ZTranslateService } from '@shival99/z-ui/services';
|
|
7
|
-
import { zMergeClasses, zTransform } from '@shival99/z-ui/utils';
|
|
8
|
-
import { cva } from 'class-variance-authority';
|
|
9
|
-
|
|
10
|
-
const zTagsContainerVariants = cva(['flex flex-wrap items-center'], {
|
|
11
|
-
variants: {
|
|
12
|
-
zSize: {
|
|
13
|
-
sm: 'gap-1',
|
|
14
|
-
default: 'gap-1.5',
|
|
15
|
-
lg: 'gap-2',
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
defaultVariants: {
|
|
19
|
-
zSize: 'default',
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
const zTagVariants = cva([
|
|
23
|
-
'inline-flex items-center justify-center',
|
|
24
|
-
'rounded-xs shadow-xs border font-medium',
|
|
25
|
-
'transition-colors duration-200',
|
|
26
|
-
], {
|
|
27
|
-
variants: {
|
|
28
|
-
zSize: {
|
|
29
|
-
sm: 'px-1.5 py-0.5 text-xs gap-1',
|
|
30
|
-
default: 'px-2 py-1 text-xs gap-1.5',
|
|
31
|
-
lg: 'px-2.5 py-1.5 text-sm gap-2',
|
|
32
|
-
},
|
|
33
|
-
zColor: {
|
|
34
|
-
default: 'bg-muted text-muted-foreground !border-muted-foreground hover:bg-muted/80 dark:!border-border',
|
|
35
|
-
primary: 'bg-primary/10 text-primary !border-primary hover:bg-primary/20 dark:!border-border',
|
|
36
|
-
success: 'bg-green-500/10 text-green-600 !border-green-600 hover:bg-green-500/20 dark:text-green-400 dark:!border-border',
|
|
37
|
-
warning: 'bg-yellow-500/10 text-yellow-600 !border-yellow-600 hover:bg-yellow-500/20 dark:text-yellow-400 dark:!border-border',
|
|
38
|
-
danger: 'bg-red-500/10 text-red-600 !border-red-600 hover:bg-red-500/20 dark:text-red-400 dark:!border-border',
|
|
39
|
-
info: 'bg-blue-500/10 text-blue-600 !border-blue-600 hover:bg-blue-500/20 dark:text-blue-400 dark:!border-border',
|
|
40
|
-
},
|
|
41
|
-
zClosable: {
|
|
42
|
-
true: '',
|
|
43
|
-
false: '',
|
|
44
|
-
},
|
|
45
|
-
zDisabled: {
|
|
46
|
-
true: 'opacity-50 cursor-not-allowed pointer-events-none',
|
|
47
|
-
false: '',
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
defaultVariants: {
|
|
51
|
-
zSize: 'default',
|
|
52
|
-
zColor: 'default',
|
|
53
|
-
zClosable: false,
|
|
54
|
-
zDisabled: false,
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
const zTagCloseButtonVariants = cva([
|
|
58
|
-
'inline-flex items-center justify-center',
|
|
59
|
-
'rounded-full cursor-pointer',
|
|
60
|
-
'transition-colors duration-200',
|
|
61
|
-
'hover:bg-black/10 dark:hover:bg-white/10',
|
|
62
|
-
'outline-none focus:outline-none',
|
|
63
|
-
], {
|
|
64
|
-
variants: {
|
|
65
|
-
zSize: {
|
|
66
|
-
sm: 'size-3',
|
|
67
|
-
default: 'size-3.5',
|
|
68
|
-
lg: 'size-4',
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
defaultVariants: {
|
|
72
|
-
zSize: 'default',
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
class ZTagClassesPipe {
|
|
77
|
-
transform(tag, config) {
|
|
78
|
-
const isClosable = this._isClosable(tag, config);
|
|
79
|
-
const isDisabled = tag.disabled || config.disabled;
|
|
80
|
-
if (config.randomColor && !tag.color) {
|
|
81
|
-
const baseClasses = zTagVariants({
|
|
82
|
-
zSize: config.size,
|
|
83
|
-
zColor: 'default',
|
|
84
|
-
zClosable: isClosable,
|
|
85
|
-
zDisabled: isDisabled,
|
|
86
|
-
});
|
|
87
|
-
const randomClasses = baseClasses
|
|
88
|
-
.replace('bg-muted', '')
|
|
89
|
-
.replace('text-muted-foreground', '')
|
|
90
|
-
.replace('!border-muted-foreground', '')
|
|
91
|
-
.replace('hover:bg-muted/80', '');
|
|
92
|
-
return zMergeClasses(randomClasses, '[background-color:var(--z-tag-bg)] [color:var(--z-tag-text)] [border-color:var(--z-tag-border)]', 'hover:[background-color:var(--z-tag-hover-bg)]', 'dark:[background-color:var(--z-tag-dark-bg)] dark:[color:var(--z-tag-dark-text)]', 'dark:hover:[background-color:var(--z-tag-dark-hover-bg)]', config.tagClass);
|
|
93
|
-
}
|
|
94
|
-
return zMergeClasses(zTagVariants({
|
|
95
|
-
zSize: config.size,
|
|
96
|
-
zColor: tag.color || config.color,
|
|
97
|
-
zClosable: isClosable,
|
|
98
|
-
zDisabled: isDisabled,
|
|
99
|
-
}), config.tagClass);
|
|
100
|
-
}
|
|
101
|
-
_isClosable(tag, config) {
|
|
102
|
-
if (tag.disabled || config.disabled) {
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
return tag.closable !== undefined ? tag.closable : config.closable;
|
|
106
|
-
}
|
|
107
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
108
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: ZTagClassesPipe, isStandalone: true, name: "zTagClasses" });
|
|
109
|
-
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagClassesPipe, decorators: [{
|
|
111
|
-
type: Pipe,
|
|
112
|
-
args: [{
|
|
113
|
-
name: 'zTagClasses',
|
|
114
|
-
standalone: true,
|
|
115
|
-
pure: true,
|
|
116
|
-
}]
|
|
117
|
-
}] });
|
|
118
|
-
|
|
119
|
-
class ZTagClosablePipe {
|
|
120
|
-
transform(tag, config) {
|
|
121
|
-
if (tag.disabled || config.disabled) {
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
return tag.closable !== undefined ? tag.closable : config.closable;
|
|
125
|
-
}
|
|
126
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagClosablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
127
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: ZTagClosablePipe, isStandalone: true, name: "zTagClosable" });
|
|
128
|
-
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagClosablePipe, decorators: [{
|
|
130
|
-
type: Pipe,
|
|
131
|
-
args: [{
|
|
132
|
-
name: 'zTagClosable',
|
|
133
|
-
standalone: true,
|
|
134
|
-
pure: true,
|
|
135
|
-
}]
|
|
136
|
-
}] });
|
|
137
|
-
|
|
138
|
-
class ZTagStylePipe {
|
|
139
|
-
transform(tag, config) {
|
|
140
|
-
if (!config.randomColor || tag.color) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
const colors = this._getOrCreateRandomColor(tag.value, config.randomColorCache);
|
|
144
|
-
return {
|
|
145
|
-
'--z-tag-bg': colors.bg,
|
|
146
|
-
'--z-tag-text': colors.text,
|
|
147
|
-
'--z-tag-border': colors.border,
|
|
148
|
-
'--z-tag-hover-bg': colors.hoverBg,
|
|
149
|
-
'--z-tag-dark-bg': colors.darkBg ?? colors.bg,
|
|
150
|
-
'--z-tag-dark-text': colors.darkText ?? colors.text,
|
|
151
|
-
'--z-tag-dark-hover-bg': colors.darkHoverBg ?? colors.hoverBg,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
_getOrCreateRandomColor(value, cache) {
|
|
155
|
-
const cached = cache.get(value);
|
|
156
|
-
if (cached) {
|
|
157
|
-
return cached;
|
|
158
|
-
}
|
|
159
|
-
const hue = Math.floor(Math.random() * 360);
|
|
160
|
-
const saturation = 70 + Math.floor(Math.random() * 20);
|
|
161
|
-
const lightness = 45 + Math.floor(Math.random() * 10);
|
|
162
|
-
const colors = {
|
|
163
|
-
bg: `hsl(${hue}, ${saturation}%, 95%)`,
|
|
164
|
-
text: `hsl(${hue}, ${saturation}%, ${lightness}%)`,
|
|
165
|
-
border: `hsl(${hue}, ${saturation}%, 85%)`,
|
|
166
|
-
hoverBg: `hsl(${hue}, ${saturation}%, 90%)`,
|
|
167
|
-
darkBg: `hsl(${hue}, ${saturation}%, 16%)`,
|
|
168
|
-
darkText: `hsl(${hue}, ${saturation}%, 72%)`,
|
|
169
|
-
darkHoverBg: `hsl(${hue}, ${saturation}%, 22%)`,
|
|
170
|
-
};
|
|
171
|
-
cache.set(value, colors);
|
|
172
|
-
return colors;
|
|
173
|
-
}
|
|
174
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagStylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
175
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: ZTagStylePipe, isStandalone: true, name: "zTagStyle" });
|
|
176
|
-
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagStylePipe, decorators: [{
|
|
178
|
-
type: Pipe,
|
|
179
|
-
args: [{
|
|
180
|
-
name: 'zTagStyle',
|
|
181
|
-
standalone: true,
|
|
182
|
-
pure: true,
|
|
183
|
-
}]
|
|
184
|
-
}] });
|
|
185
|
-
|
|
186
|
-
class ZTagsComponent {
|
|
187
|
-
_zTranslate = inject(ZTranslateService);
|
|
188
|
-
_addInput = viewChild('addInput', /* @ts-ignore */
|
|
189
|
-
...(ngDevMode ? [{ debugName: "_addInput" }] : /* istanbul ignore next */ []));
|
|
190
|
-
class = input('', /* @ts-ignore */
|
|
191
|
-
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
192
|
-
zTags = input([], /* @ts-ignore */
|
|
193
|
-
...(ngDevMode ? [{ debugName: "zTags" }] : /* istanbul ignore next */ []));
|
|
194
|
-
zSize = input('default', /* @ts-ignore */
|
|
195
|
-
...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
|
|
196
|
-
zColor = input('default', /* @ts-ignore */
|
|
197
|
-
...(ngDevMode ? [{ debugName: "zColor" }] : /* istanbul ignore next */ []));
|
|
198
|
-
zClosable = input(false, { ...(ngDevMode ? { debugName: "zClosable" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
199
|
-
zDisabled = input(false, { ...(ngDevMode ? { debugName: "zDisabled" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
200
|
-
zAddable = input(false, { ...(ngDevMode ? { debugName: "zAddable" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
201
|
-
zAddText = input('', /* @ts-ignore */
|
|
202
|
-
...(ngDevMode ? [{ debugName: "zAddText" }] : /* istanbul ignore next */ []));
|
|
203
|
-
zAddPlaceholder = input('', /* @ts-ignore */
|
|
204
|
-
...(ngDevMode ? [{ debugName: "zAddPlaceholder" }] : /* istanbul ignore next */ []));
|
|
205
|
-
zRandomColor = input(false, { ...(ngDevMode ? { debugName: "zRandomColor" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
206
|
-
zTagClass = input('', /* @ts-ignore */
|
|
207
|
-
...(ngDevMode ? [{ debugName: "zTagClass" }] : /* istanbul ignore next */ []));
|
|
208
|
-
zLabelClass = input('', /* @ts-ignore */
|
|
209
|
-
...(ngDevMode ? [{ debugName: "zLabelClass" }] : /* istanbul ignore next */ []));
|
|
210
|
-
zMaxWidth = input('', /* @ts-ignore */
|
|
211
|
-
...(ngDevMode ? [{ debugName: "zMaxWidth" }] : /* istanbul ignore next */ []));
|
|
212
|
-
labelClasses = computed(() => {
|
|
213
|
-
const maxWidth = this.zMaxWidth();
|
|
214
|
-
return zMergeClasses(maxWidth ? 'truncate' : '', this.zLabelClass());
|
|
215
|
-
}, /* @ts-ignore */
|
|
216
|
-
...(ngDevMode ? [{ debugName: "labelClasses" }] : /* istanbul ignore next */ []));
|
|
217
|
-
labelStyle = computed(() => {
|
|
218
|
-
const maxWidth = this.zMaxWidth();
|
|
219
|
-
return maxWidth ? { 'max-width': maxWidth } : null;
|
|
220
|
-
}, /* @ts-ignore */
|
|
221
|
-
...(ngDevMode ? [{ debugName: "labelStyle" }] : /* istanbul ignore next */ []));
|
|
222
|
-
zTagClose = output();
|
|
223
|
-
zTagAdd = output();
|
|
224
|
-
uiState = signal({
|
|
225
|
-
isAdding: false,
|
|
226
|
-
}, /* @ts-ignore */
|
|
227
|
-
...(ngDevMode ? [{ debugName: "uiState" }] : /* istanbul ignore next */ []));
|
|
228
|
-
_randomColorCache = new Map();
|
|
229
|
-
hostClasses = computed(() => zMergeClasses('inline-block', this.class()), /* @ts-ignore */
|
|
230
|
-
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
231
|
-
containerClasses = computed(() => zTagsContainerVariants({ zSize: this.zSize() }), /* @ts-ignore */
|
|
232
|
-
...(ngDevMode ? [{ debugName: "containerClasses" }] : /* istanbul ignore next */ []));
|
|
233
|
-
closeButtonClasses = computed(() => zTagCloseButtonVariants({ zSize: this.zSize() }), /* @ts-ignore */
|
|
234
|
-
...(ngDevMode ? [{ debugName: "closeButtonClasses" }] : /* istanbul ignore next */ []));
|
|
235
|
-
closeIconSize = computed(() => {
|
|
236
|
-
const sizeMap = {
|
|
237
|
-
sm: '10',
|
|
238
|
-
default: '12',
|
|
239
|
-
lg: '14',
|
|
240
|
-
};
|
|
241
|
-
return sizeMap[this.zSize()];
|
|
242
|
-
}, /* @ts-ignore */
|
|
243
|
-
...(ngDevMode ? [{ debugName: "closeIconSize" }] : /* istanbul ignore next */ []));
|
|
244
|
-
tagConfig = computed(() => ({
|
|
245
|
-
size: this.zSize(),
|
|
246
|
-
color: this.zColor(),
|
|
247
|
-
closable: this.zClosable(),
|
|
248
|
-
disabled: this.zDisabled(),
|
|
249
|
-
randomColor: this.zRandomColor(),
|
|
250
|
-
tagClass: this.zTagClass(),
|
|
251
|
-
randomColorCache: this._randomColorCache,
|
|
252
|
-
}), /* @ts-ignore */
|
|
253
|
-
...(ngDevMode ? [{ debugName: "tagConfig" }] : /* istanbul ignore next */ []));
|
|
254
|
-
effectiveAddText = computed(() => {
|
|
255
|
-
this._zTranslate.currentLang();
|
|
256
|
-
return this.zAddText() || this._zTranslate.instant('i18n_z_ui_tags_add');
|
|
257
|
-
}, /* @ts-ignore */
|
|
258
|
-
...(ngDevMode ? [{ debugName: "effectiveAddText" }] : /* istanbul ignore next */ []));
|
|
259
|
-
effectiveAddPlaceholder = computed(() => {
|
|
260
|
-
this._zTranslate.currentLang();
|
|
261
|
-
return this.zAddPlaceholder() || this._zTranslate.instant('i18n_z_ui_tags_placeholder');
|
|
262
|
-
}, /* @ts-ignore */
|
|
263
|
-
...(ngDevMode ? [{ debugName: "effectiveAddPlaceholder" }] : /* istanbul ignore next */ []));
|
|
264
|
-
addInputClasses = computed(() => {
|
|
265
|
-
const sizeClasses = {
|
|
266
|
-
sm: 'px-1.5 py-0.5 text-xs w-16',
|
|
267
|
-
default: 'px-2 py-1 text-xs w-20',
|
|
268
|
-
lg: 'px-2.5 py-1.5 text-sm w-24',
|
|
269
|
-
};
|
|
270
|
-
return zMergeClasses('rounded-sm border border-input bg-white shadow-xs', 'dark:bg-input/30 dark:border-input', 'outline-none transition-[border-color,box-shadow] duration-200', 'focus:border-ring focus:ring-ring/50 focus:ring-[3px]', 'text-foreground placeholder:text-muted-foreground', sizeClasses[this.zSize()]);
|
|
271
|
-
}, /* @ts-ignore */
|
|
272
|
-
...(ngDevMode ? [{ debugName: "addInputClasses" }] : /* istanbul ignore next */ []));
|
|
273
|
-
addButtonClasses = computed(() => {
|
|
274
|
-
const sizeClasses = {
|
|
275
|
-
sm: 'px-1.5 py-0.5 text-xs gap-1',
|
|
276
|
-
default: 'px-2 py-1 text-xs gap-1.5',
|
|
277
|
-
lg: 'px-2.5 py-1.5 text-sm gap-2',
|
|
278
|
-
};
|
|
279
|
-
return zMergeClasses('inline-flex items-center justify-center', 'rounded-sm border border-dashed border-border', 'text-muted-foreground cursor-pointer', 'transition-colors duration-200', 'hover:border-primary hover:text-primary hover:bg-primary/5', sizeClasses[this.zSize()]);
|
|
280
|
-
}, /* @ts-ignore */
|
|
281
|
-
...(ngDevMode ? [{ debugName: "addButtonClasses" }] : /* istanbul ignore next */ []));
|
|
282
|
-
onRemoveTag(tag, event) {
|
|
283
|
-
event.stopPropagation();
|
|
284
|
-
if (tag.disabled || this.zDisabled()) {
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
this._randomColorCache.delete(tag.value);
|
|
288
|
-
this.zTagClose.emit(tag);
|
|
289
|
-
}
|
|
290
|
-
onAddClick() {
|
|
291
|
-
this.uiState.update(s => ({ ...s, isAdding: true }));
|
|
292
|
-
this._focusAddInputSoon();
|
|
293
|
-
}
|
|
294
|
-
onAddConfirm(event) {
|
|
295
|
-
const input = event.target;
|
|
296
|
-
const value = input.value.trim();
|
|
297
|
-
if (!value) {
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
this.zTagAdd.emit(value);
|
|
301
|
-
input.value = '';
|
|
302
|
-
this._focusAddInputSoon();
|
|
303
|
-
}
|
|
304
|
-
onAddCancel() {
|
|
305
|
-
this.uiState.update(s => ({ ...s, isAdding: false }));
|
|
306
|
-
}
|
|
307
|
-
onAddBlur() {
|
|
308
|
-
const inputEl = this._addInput();
|
|
309
|
-
const input = inputEl?.nativeElement;
|
|
310
|
-
if (input && input.value.trim()) {
|
|
311
|
-
this.zTagAdd.emit(input.value.trim());
|
|
312
|
-
}
|
|
313
|
-
this.uiState.update(s => ({ ...s, isAdding: false }));
|
|
314
|
-
}
|
|
315
|
-
_focusAddInputSoon() {
|
|
316
|
-
setTimeout(() => this._addInput()?.nativeElement.focus());
|
|
317
|
-
}
|
|
318
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
319
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: ZTagsComponent, isStandalone: true, selector: "z-tags", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zTags: { classPropertyName: "zTags", publicName: "zTags", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zColor: { classPropertyName: "zColor", publicName: "zColor", isSignal: true, isRequired: false, transformFunction: null }, zClosable: { classPropertyName: "zClosable", publicName: "zClosable", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zAddable: { classPropertyName: "zAddable", publicName: "zAddable", isSignal: true, isRequired: false, transformFunction: null }, zAddText: { classPropertyName: "zAddText", publicName: "zAddText", isSignal: true, isRequired: false, transformFunction: null }, zAddPlaceholder: { classPropertyName: "zAddPlaceholder", publicName: "zAddPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, zRandomColor: { classPropertyName: "zRandomColor", publicName: "zRandomColor", isSignal: true, isRequired: false, transformFunction: null }, zTagClass: { classPropertyName: "zTagClass", publicName: "zTagClass", isSignal: true, isRequired: false, transformFunction: null }, zLabelClass: { classPropertyName: "zLabelClass", publicName: "zLabelClass", isSignal: true, isRequired: false, transformFunction: null }, zMaxWidth: { classPropertyName: "zMaxWidth", publicName: "zMaxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zTagClose: "zTagClose", zTagAdd: "zTagAdd" }, host: { properties: { "class": "hostClasses()" } }, viewQueries: [{ propertyName: "_addInput", first: true, predicate: ["addInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [class]=\"containerClasses()\">\n @for (tag of zTags(); track tag.value) {\n <span\n [class]=\"tag | zTagClasses: tagConfig()\"\n [style]=\"tag | zTagStyle: tagConfig()\"\n z-tooltip\n [zContent]=\"tag.label | translate\">\n <span [class]=\"labelClasses()\" [style]=\"labelStyle()\">{{ tag.label | translate }}</span>\n @if (tag | zTagClosable: tagConfig()) {\n <button\n type=\"button\"\n [class]=\"closeButtonClasses()\"\n [disabled]=\"tag.disabled || zDisabled()\"\n (click)=\"onRemoveTag(tag, $event)\"\n [attr.aria-label]=\"'Remove ' + (tag.label | translate)\">\n <z-icon zType=\"lucideX\" [zSize]=\"closeIconSize()\" class=\"text-current\" />\n </button>\n }\n </span>\n }\n\n @if (zAddable() && !zDisabled()) {\n @if (uiState().isAdding) {\n <input\n #addInput\n type=\"text\"\n [class]=\"addInputClasses()\"\n [placeholder]=\"effectiveAddPlaceholder()\"\n (keydown.enter)=\"onAddConfirm($event)\"\n (keydown.escape)=\"onAddCancel()\"\n (blur)=\"onAddBlur()\" />\n } @else {\n <button type=\"button\" [class]=\"addButtonClasses()\" (click)=\"onAddClick()\">\n <z-icon zType=\"lucidePlus\" [zSize]=\"closeIconSize()\" class=\"text-current\" />\n <span>{{ effectiveAddText() }}</span>\n </button>\n }\n }\n</div>\n", dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "directive", type: ZTooltipDirective, selector: "[z-tooltip], [zTooltip]", inputs: ["zContent", "zContext", "zPosition", "zTooltipPosition", "zTrigger", "zTooltipTrigger", "zTooltipType", "zTooltipSize", "zClass", "zTooltipClass", "zShowDelay", "zTooltipShowDelay", "zHideDelay", "zTooltipHideDelay", "zArrow", "zTooltipArrow", "zDisabled", "zTooltipDisabled", "zOffset", "zTooltipOffset", "zAutoDetect", "zTriggerElement", "zAlwaysShow", "zMaxWidth"], outputs: ["zShow", "zHide"], exportAs: ["zTooltip"] }, { kind: "pipe", type: ZTagClassesPipe, name: "zTagClasses" }, { kind: "pipe", type: ZTagStylePipe, name: "zTagStyle" }, { kind: "pipe", type: ZTagClosablePipe, name: "zTagClosable" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
320
|
-
}
|
|
321
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagsComponent, decorators: [{
|
|
322
|
-
type: Component,
|
|
323
|
-
args: [{ selector: 'z-tags', imports: [ZIconComponent, ZTooltipDirective, ZTagClassesPipe, ZTagStylePipe, ZTagClosablePipe, TranslatePipe], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
324
|
-
'[class]': 'hostClasses()',
|
|
325
|
-
}, template: "<div [class]=\"containerClasses()\">\n @for (tag of zTags(); track tag.value) {\n <span\n [class]=\"tag | zTagClasses: tagConfig()\"\n [style]=\"tag | zTagStyle: tagConfig()\"\n z-tooltip\n [zContent]=\"tag.label | translate\">\n <span [class]=\"labelClasses()\" [style]=\"labelStyle()\">{{ tag.label | translate }}</span>\n @if (tag | zTagClosable: tagConfig()) {\n <button\n type=\"button\"\n [class]=\"closeButtonClasses()\"\n [disabled]=\"tag.disabled || zDisabled()\"\n (click)=\"onRemoveTag(tag, $event)\"\n [attr.aria-label]=\"'Remove ' + (tag.label | translate)\">\n <z-icon zType=\"lucideX\" [zSize]=\"closeIconSize()\" class=\"text-current\" />\n </button>\n }\n </span>\n }\n\n @if (zAddable() && !zDisabled()) {\n @if (uiState().isAdding) {\n <input\n #addInput\n type=\"text\"\n [class]=\"addInputClasses()\"\n [placeholder]=\"effectiveAddPlaceholder()\"\n (keydown.enter)=\"onAddConfirm($event)\"\n (keydown.escape)=\"onAddCancel()\"\n (blur)=\"onAddBlur()\" />\n } @else {\n <button type=\"button\" [class]=\"addButtonClasses()\" (click)=\"onAddClick()\">\n <z-icon zType=\"lucidePlus\" [zSize]=\"closeIconSize()\" class=\"text-current\" />\n <span>{{ effectiveAddText() }}</span>\n </button>\n }\n }\n</div>\n" }]
|
|
326
|
-
}], propDecorators: { _addInput: [{ type: i0.ViewChild, args: ['addInput', { isSignal: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zTags: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTags", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zColor", required: false }] }], zClosable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClosable", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zAddable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zAddable", required: false }] }], zAddText: [{ type: i0.Input, args: [{ isSignal: true, alias: "zAddText", required: false }] }], zAddPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "zAddPlaceholder", required: false }] }], zRandomColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zRandomColor", required: false }] }], zTagClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTagClass", required: false }] }], zLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLabelClass", required: false }] }], zMaxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "zMaxWidth", required: false }] }], zTagClose: [{ type: i0.Output, args: ["zTagClose"] }], zTagAdd: [{ type: i0.Output, args: ["zTagAdd"] }] } });
|
|
327
|
-
|
|
328
|
-
class ZTagsDirective {
|
|
329
|
-
zSize = input('default', /* @ts-ignore */
|
|
330
|
-
...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
|
|
331
|
-
zColor = input('default', /* @ts-ignore */
|
|
332
|
-
...(ngDevMode ? [{ debugName: "zColor" }] : /* istanbul ignore next */ []));
|
|
333
|
-
zDisabled = input(false, { ...(ngDevMode ? { debugName: "zDisabled" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
334
|
-
zClass = input('', /* @ts-ignore */
|
|
335
|
-
...(ngDevMode ? [{ debugName: "zClass" }] : /* istanbul ignore next */ []));
|
|
336
|
-
hostClasses = computed(() => zMergeClasses(zTagVariants({
|
|
337
|
-
zSize: this.zSize(),
|
|
338
|
-
zColor: this.zColor(),
|
|
339
|
-
zDisabled: this.zDisabled(),
|
|
340
|
-
zClosable: false,
|
|
341
|
-
}), this.zClass()), /* @ts-ignore */
|
|
342
|
-
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
343
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
344
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: ZTagsDirective, isStandalone: true, selector: "[z-tags]", inputs: { zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zColor: { classPropertyName: "zColor", publicName: "zColor", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zClass: { classPropertyName: "zClass", publicName: "zClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.aria-disabled": "zDisabled() || null" } }, exportAs: ["zTags"], ngImport: i0 });
|
|
345
|
-
}
|
|
346
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZTagsDirective, decorators: [{
|
|
347
|
-
type: Directive,
|
|
348
|
-
args: [{
|
|
349
|
-
selector: '[z-tags]',
|
|
350
|
-
standalone: true,
|
|
351
|
-
host: {
|
|
352
|
-
'[class]': 'hostClasses()',
|
|
353
|
-
'[attr.aria-disabled]': 'zDisabled() || null',
|
|
354
|
-
},
|
|
355
|
-
exportAs: 'zTags',
|
|
356
|
-
}]
|
|
357
|
-
}], propDecorators: { zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zColor", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClass", required: false }] }] } });
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Generated bundle index. Do not edit.
|
|
361
|
-
*/
|
|
362
|
-
|
|
363
|
-
export { ZTagClassesPipe, ZTagClosablePipe, ZTagStylePipe, ZTagsComponent, ZTagsDirective, zTagCloseButtonVariants, zTagVariants, zTagsContainerVariants };
|
|
364
|
-
//# sourceMappingURL=shival99-z-ui-components-z-tags.mjs.map
|