@radix-ng/primitives 1.0.5 → 1.0.7
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/aspect-ratio/README.md +1 -1
- package/fesm2022/radix-ng-primitives-accordion.mjs +40 -27
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +34 -34
- package/fesm2022/radix-ng-primitives-arrow.mjs +3 -3
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +11 -35
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +175 -125
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +92 -35
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +11 -7
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +140 -90
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +63 -46
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +37 -25
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +278 -177
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +50 -33
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +7 -5
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +48 -22
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +44 -28
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +73 -45
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +70 -40
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +93 -67
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +5 -4
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +20 -16
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +107 -81
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +53 -39
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +76 -50
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +8 -7
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +77 -40
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -5
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +26 -17
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +41 -22
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-label.mjs +11 -8
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +274 -154
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +35 -17
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +41 -30
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +220 -183
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +93 -61
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs +48 -38
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +150 -107
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +79 -47
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +20 -13
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +3 -3
- package/fesm2022/radix-ng-primitives-preview-card.mjs +119 -74
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +73 -46
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +58 -40
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +57 -41
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +595 -102
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +11 -15
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +101 -64
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +53 -39
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +25 -20
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +76 -51
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +72 -41
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +75 -56
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +39 -23
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +36 -36
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +52 -31
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +118 -63
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -20
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/package.json +2 -2
- package/types/radix-ng-primitives-accordion.d.ts +1 -0
- package/types/radix-ng-primitives-aspect-ratio.d.ts +10 -23
- package/types/radix-ng-primitives-autocomplete.d.ts +3 -1
- package/types/radix-ng-primitives-avatar.d.ts +51 -25
- package/types/radix-ng-primitives-checkbox.d.ts +26 -98
- package/types/radix-ng-primitives-combobox.d.ts +28 -9
- package/types/radix-ng-primitives-context-menu.d.ts +2 -0
- package/types/radix-ng-primitives-dialog.d.ts +6 -3
- package/types/radix-ng-primitives-field.d.ts +33 -207
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +11 -0
- package/types/radix-ng-primitives-form.d.ts +24 -33
- package/types/radix-ng-primitives-label.d.ts +3 -2
- package/types/radix-ng-primitives-menu.d.ts +47 -15
- package/types/radix-ng-primitives-menubar.d.ts +6 -1
- package/types/radix-ng-primitives-navigation-menu.d.ts +8 -6
- package/types/radix-ng-primitives-number-field.d.ts +1 -1
- package/types/radix-ng-primitives-popover.d.ts +12 -4
- package/types/radix-ng-primitives-preview-card.d.ts +18 -5
- package/types/radix-ng-primitives-progress.d.ts +59 -121
- package/types/radix-ng-primitives-radio.d.ts +0 -1
- package/types/radix-ng-primitives-select.d.ts +186 -391
- package/types/radix-ng-primitives-separator.d.ts +0 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +7 -3
- package/types/radix-ng-primitives-toggle.d.ts +8 -8
- package/types/radix-ng-primitives-toolbar.d.ts +2 -0
- package/types/radix-ng-primitives-tooltip.d.ts +17 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-tabs.mjs","sources":["../../../packages/primitives/tabs/src/tabs-root-context.ts","../../../packages/primitives/tabs/src/utils.ts","../../../packages/primitives/tabs/src/tabs-indicator.ts","../../../packages/primitives/tabs/src/tabs-list.ts","../../../packages/primitives/tabs/src/tabs-panel.ts","../../../packages/primitives/tabs/src/tabs-panel-presence.ts","../../../packages/primitives/tabs/src/tabs-root.ts","../../../packages/primitives/tabs/src/tabs-tab.ts","../../../packages/primitives/tabs/index.ts","../../../packages/primitives/tabs/radix-ng-primitives-tabs.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { RdxCompositeMetadata } from '@radix-ng/primitives/composite';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\nimport type { RdxTabsValueChangeReason } from './tabs-root';\nimport { RdxTabsActivationDirection, RdxTabsTabMetadata, RdxTabsValue } from './utils';\n\nexport interface RdxTabsRootContext {\n /** Stable id used to derive tab / panel ids. */\n readonly baseId: string;\n\n /** The value of the currently selected tab. */\n readonly value: Signal<RdxTabsValue | undefined>;\n\n /** The orientation of the tabs. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Direction the selection moved relative to the previously active tab. */\n readonly activationDirection: Signal<RdxTabsActivationDirection>;\n\n /** Whether tabs are activated on focus (set by the list). */\n readonly activateOnFocus: Signal<boolean>;\n\n /** The `[rdxTabsList]` host element, used to resolve tab order and indicator geometry. */\n readonly tabListElement: Signal<HTMLElement | null>;\n\n /** Registered tabs in DOM order. */\n readonly tabMap: Signal<Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>>;\n\n /** Select a tab by value. No-op when the value is unchanged. */\n setValue(value: RdxTabsValue, event?: Event, reason?: RdxTabsValueChangeReason): void;\n\n /** Mirror the list's `activateOnFocus` input onto the root context. */\n setActivateOnFocus(value: boolean): void;\n\n /** Register the list host element. */\n setTabListElement(element: HTMLElement | null): void;\n\n /** Register the tab composite map. */\n setTabMap(map: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>): void;\n}\n\nexport const [injectTabsRootContext, provideTabsRootContext] = createContext<RdxTabsRootContext>(\n 'RdxTabsRootContext',\n 'components/tabs'\n);\n","/**\n * The direction in which the active tab moved relative to the previously active tab.\n * Mirrors Base UI's `Tabs.Tab.ActivationDirection`.\n */\nexport type RdxTabsActivationDirection = 'left' | 'right' | 'up' | 'down' | 'none';\n\n/** A value that identifies a tab / panel pair. */\nexport type RdxTabsValue = string | number | null;\n\n/** Metadata registered for each tab in the composite list. */\nexport interface RdxTabsTabMetadata {\n [key: string]: unknown;\n disabled: boolean;\n id: string;\n value: RdxTabsValue;\n}\n\n/** Metadata registered for each panel in the composite list. */\nexport interface RdxTabsPanelMetadata {\n [key: string]: unknown;\n id: string;\n value: RdxTabsValue;\n}\n\nexport function makeTabId(baseId: string, value: RdxTabsValue): string {\n return `${baseId}-tab-${value}`;\n}\n\nexport function makePanelId(baseId: string, value: RdxTabsValue): string {\n return `${baseId}-panel-${value}`;\n}\n","import { afterNextRender, DestroyRef, Directive, effect, inject, signal, untracked } from '@angular/core';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { makeTabId } from './utils';\n\ninterface TabGeometry {\n top: number;\n right: number;\n bottom: number;\n left: number;\n width: number;\n height: number;\n}\n\n/**\n * A visual element that tracks the position and size of the active tab. Exposes the active tab\n * geometry as CSS variables (`--active-tab-{top,right,bottom,left,width,height}`) so it can be\n * animated with CSS.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsIndicator]',\n exportAs: 'rdxTabsIndicator',\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()',\n '[style.--active-tab-top.px]': 'geometry()?.top',\n '[style.--active-tab-right.px]': 'geometry()?.right',\n '[style.--active-tab-bottom.px]': 'geometry()?.bottom',\n '[style.--active-tab-left.px]': 'geometry()?.left',\n '[style.--active-tab-width.px]': 'geometry()?.width',\n '[style.--active-tab-height.px]': 'geometry()?.height'\n }\n})\nexport class RdxTabsIndicator {\n protected readonly rootContext = injectTabsRootContext();\n private readonly destroyRef = inject(DestroyRef);\n\n /** @ignore */\n protected readonly geometry = signal<TabGeometry | null>(null);\n\n constructor() {\n // Re-measure whenever the selection, orientation or the list element changes.\n effect(() => {\n this.rootContext.value();\n this.rootContext.orientation();\n this.rootContext.tabListElement();\n this.scheduleMeasure();\n });\n\n afterNextRender(() => {\n const list = untracked(this.rootContext.tabListElement);\n if (!list || typeof ResizeObserver === 'undefined') {\n this.measure();\n return;\n }\n\n const observer = new ResizeObserver(() => this.measure());\n observer.observe(list);\n this.destroyRef.onDestroy(() => observer.disconnect());\n this.measure();\n });\n }\n\n private scheduleMeasure(): void {\n if (typeof requestAnimationFrame === 'undefined') {\n this.measure();\n return;\n }\n requestAnimationFrame(() => this.measure());\n }\n\n private measure(): void {\n const list = untracked(this.rootContext.tabListElement);\n const value = untracked(this.rootContext.value);\n\n if (!list || value == null || typeof document === 'undefined') {\n this.geometry.set(null);\n return;\n }\n\n const tab = document.getElementById(makeTabId(this.rootContext.baseId, value));\n if (!tab) {\n this.geometry.set(null);\n return;\n }\n\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n\n // Measure `left` / `top` relative to the list's scrollable content origin rather than its\n // visible edge. When the list is a scroll container (e.g. its tabs overflow inside a Scroll\n // Area), the indicator is an absolutely positioned child of that container and scrolls along\n // with the content, so these offsets must be content-relative to stay aligned with the tab.\n // For non-scrolling lists `scrollLeft` / `scrollTop` are `0`, leaving the geometry unchanged.\n // `right` / `bottom` stay visible-edge relative — there is no unambiguous content-relative\n // meaning for them inside a scroll container, and the moving indicator uses `left`/`top`.\n const scrollLeft = list.scrollLeft;\n const scrollTop = list.scrollTop;\n\n this.geometry.set({\n top: tabRect.top - listRect.top + scrollTop,\n right: listRect.right - tabRect.right,\n bottom: listRect.bottom - tabRect.bottom,\n left: tabRect.left - listRect.left + scrollLeft,\n width: tabRect.width,\n height: tabRect.height\n });\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { RdxCompositeMetadata, RdxCompositeRoot } from '@radix-ng/primitives/composite';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { RdxTabsTabMetadata } from './utils';\n\n/**\n * Groups the individual tab buttons and manages keyboard navigation.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsList]',\n exportAs: 'rdxTabsList',\n hostDirectives: [RdxCompositeRoot],\n host: {\n role: 'tablist',\n '[attr.aria-orientation]': 'rootContext.orientation() === \"vertical\" ? \"vertical\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()'\n }\n})\nexport class RdxTabsList {\n protected readonly rootContext = injectTabsRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly compositeRoot = inject(RdxCompositeRoot, { self: true });\n\n /**\n * Whether a tab is activated when it receives focus (automatic activation).\n * When `false`, tabs are only activated on click or Enter/Space.\n *\n * @default false\n */\n readonly activateOnFocus = input(false, { transform: booleanAttribute });\n\n /**\n * Whether keyboard navigation should loop from the last tab back to the first.\n *\n * @default true\n */\n readonly loopFocus = input(true, { transform: booleanAttribute });\n\n private readonly tabMap = computed(() => {\n const map = new Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>();\n\n this.compositeRoot.itemMap().forEach((metadata, element) => {\n if (isTabsTabMetadata(metadata)) {\n map.set(element, metadata);\n }\n });\n\n return map;\n });\n\n private readonly tabMetadata = computed(() => Array.from(this.tabMap().values()));\n\n private readonly disabledIndices = computed(() =>\n this.tabMetadata()\n .filter((metadata) => metadata.disabled)\n .map((metadata) => metadata.index)\n );\n\n private readonly activeIndex = computed(() => {\n const value = this.rootContext.value();\n const metadata = this.tabMetadata().find((tab) => tab.value === value);\n\n return metadata?.index ?? -1;\n });\n\n constructor() {\n this.rootContext.setTabListElement(this.elementRef.nativeElement);\n\n effect(() => {\n this.compositeRoot.setOrientation(this.rootContext.orientation());\n this.compositeRoot.setLoopFocus(this.loopFocus());\n this.compositeRoot.setEnableHomeAndEndKeys(true);\n });\n\n effect(() => {\n this.compositeRoot.setDisabledIndices([]);\n });\n\n effect(() => {\n this.rootContext.setTabMap(this.tabMap());\n });\n\n effect(() => {\n const activeIndex = this.activeIndex();\n\n if (activeIndex === -1) {\n return;\n }\n\n const list = this.elementRef.nativeElement;\n const activeElement = list.ownerDocument.activeElement;\n\n if (activeElement && list.contains(activeElement)) {\n return;\n }\n\n if (this.disabledIndices().includes(activeIndex)) {\n const firstEnabledIndex = this.tabMetadata().find((metadata) => !metadata.disabled)?.index;\n\n if (firstEnabledIndex !== undefined) {\n this.compositeRoot.setHighlightedIndex(firstEnabledIndex);\n }\n return;\n }\n\n this.compositeRoot.setHighlightedIndex(activeIndex);\n });\n\n effect(() => this.rootContext.setActivateOnFocus(this.activateOnFocus()));\n }\n}\n\nfunction isTabsTabMetadata(metadata: RdxCompositeMetadata): metadata is RdxCompositeMetadata<RdxTabsTabMetadata> {\n return (\n typeof metadata['disabled'] === 'boolean' &&\n typeof metadata['id'] === 'string' &&\n Object.prototype.hasOwnProperty.call(metadata, 'value')\n );\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n untracked\n} from '@angular/core';\nimport { RdxCompositeListItem } from '@radix-ng/primitives/composite';\nimport { useTransitionStatus } from '@radix-ng/primitives/core';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { makePanelId, makeTabId, RdxTabsValue } from './utils';\n\nconst panelPresenceContext = () => ({ present: inject(RdxTabsPanel).present });\n\n/**\n * A panel displayed when its corresponding tab is active.\n *\n * By default the panel stays in the DOM and is toggled with the `hidden` attribute. To unmount the\n * contents while inactive (Base UI's default `keepMounted: false`), nest a `*rdxTabsPanelPresence`\n * structural directive inside it; set `keepMounted` to keep the contents mounted regardless.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsPanel]',\n exportAs: 'rdxTabsPanel',\n providers: [provideRdxPresenceContext(panelPresenceContext)],\n hostDirectives: [RdxCompositeListItem],\n host: {\n role: 'tabpanel',\n '[attr.id]': 'panelId()',\n '[attr.tabindex]': 'active() ? 0 : -1',\n '[attr.aria-labelledby]': 'tabId()',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()',\n '[attr.data-index]': 'index()',\n '[attr.data-hidden]': 'active() ? undefined : \"\"',\n '[attr.data-starting-style]': 'transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'transitionStatus() === \"ending\" ? \"\" : undefined',\n '[hidden]': 'hidden()'\n }\n})\nexport class RdxTabsPanel {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly listItem = inject(RdxCompositeListItem, { self: true });\n protected readonly rootContext = injectTabsRootContext();\n\n /**\n * A unique value that associates the panel with a tab.\n */\n readonly value = input.required<RdxTabsValue>();\n\n /**\n * Keep the panel contents mounted in the DOM while inactive (the contents are still hidden).\n * Only relevant together with `*rdxTabsPanelPresence`, which otherwise unmounts them.\n *\n * @default false\n */\n readonly keepMounted = input(false, { transform: booleanAttribute });\n\n private readonly transition = useTransitionStatus(() => {});\n\n /** Reactive enter/exit transition phase (`'starting'` | `'ending'` | `undefined`). */\n readonly transitionStatus = this.transition.status;\n\n /** @ignore */\n protected readonly panelId = computed(() => makePanelId(this.rootContext.baseId, this.value()));\n /** @ignore */\n protected readonly tabId = computed(() => {\n const value = this.value();\n\n for (const tabMetadata of this.rootContext.tabMap().values()) {\n if (tabMetadata.value === value) {\n return tabMetadata.id;\n }\n }\n\n return makeTabId(this.rootContext.baseId, value);\n });\n\n /** Whether this panel's tab is currently selected. */\n readonly active = computed(() => this.rootContext.value() === this.value());\n\n /** `true` once a `*rdxTabsPanelPresence` child takes over mounting. */\n private readonly hasPresence = signal(false);\n\n /**\n * Whether the contents should be present for `*rdxTabsPanelPresence`. Flips with `active` so the\n * presence directive owns the exit-animation timing (it keeps the node mounted until its exit\n * `@keyframes` finishes); `keepMounted` keeps them mounted regardless.\n */\n readonly present = computed(() => this.keepMounted() || this.active());\n\n /**\n * The `hidden` attribute value. The panel is shown while active or while its exit transition\n * runs. When a presence child unmounts the contents we no longer force `hidden` (the empty\n * element renders nothing), unless `keepMounted` keeps the inactive contents around.\n */\n protected readonly hidden = computed(\n () => !this.active() && this.transitionStatus() !== 'ending' && (!this.hasPresence() || this.keepMounted())\n );\n\n /** @ignore Index of the panel in DOM order. */\n protected readonly index = this.listItem.index;\n\n private previousActive = false;\n private isFirstRun = true;\n\n constructor() {\n const unregister = this.transition.registerElement(this.elementRef.nativeElement);\n inject(DestroyRef).onDestroy(unregister);\n\n effect(() => {\n this.listItem.setMetadata({\n id: this.panelId(),\n value: this.value()\n });\n });\n\n effect(() => {\n const active = this.active();\n\n // Settle the initial state without playing an enter transition.\n if (this.isFirstRun) {\n this.isFirstRun = false;\n this.previousActive = active;\n return;\n }\n\n if (active !== this.previousActive) {\n this.previousActive = active;\n untracked(() => this.transition.start(active));\n }\n });\n }\n\n /** @ignore Called by `RdxTabsPanelPresence` so the panel stops forcing `hidden`. */\n markHasPresence(): void {\n this.hasPresence.set(true);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { RdxTabsPanel } from './tabs-panel';\n\n/**\n * Structural directive that mounts the tab panel contents only while the panel is active,\n * unmounting them once the exit animation finishes. Apply it inside an `[rdxTabsPanel]` to get\n * Base UI's default unmounting behavior; combine with `keepMounted` on the panel to keep the\n * contents mounted instead.\n *\n * The presence state is read from the parent panel through {@link RdxPresenceDirective}.\n */\n@Directive({\n selector: 'ng-template[rdxTabsPanelPresence]',\n hostDirectives: [RdxPresenceDirective]\n})\nexport class RdxTabsPanelPresence {\n constructor() {\n inject(RdxTabsPanel).markHasPresence();\n }\n}\n","import { Directive, effect, inject, input, model, output, signal, untracked } from '@angular/core';\nimport { RdxCompositeList, RdxCompositeMetadata } from '@radix-ng/primitives/composite';\nimport {\n createCancelableChangeEventDetails,\n DataOrientation,\n injectId,\n RdxCancelableChangeEventDetails\n} from '@radix-ng/primitives/core';\nimport { provideTabsRootContext, RdxTabsRootContext } from './tabs-root-context';\nimport { RdxTabsActivationDirection, RdxTabsTabMetadata, RdxTabsValue } from './utils';\n\nexport type RdxTabsValueChangeReason = 'none' | 'disabled' | 'missing' | 'initial';\nexport type RdxTabsValueChangeEventDetails = RdxCancelableChangeEventDetails<RdxTabsValueChangeReason> & {\n activationDirection: RdxTabsActivationDirection;\n};\n\nexport interface RdxTabsValueChangeEvent {\n value: RdxTabsValue;\n eventDetails: RdxTabsValueChangeEventDetails;\n}\n\nconst rootContext = (): RdxTabsRootContext => {\n const root = inject(RdxTabsRoot);\n\n return {\n baseId: root.baseId,\n value: root.value,\n orientation: root.orientation,\n activationDirection: root.activationDirection.asReadonly(),\n activateOnFocus: root.activateOnFocus.asReadonly(),\n tabListElement: root.tabListElement.asReadonly(),\n tabMap: root.tabMap.asReadonly(),\n setValue: (value, event, reason) => root.setValue(value, event, reason as RdxTabsValueChangeReason | undefined),\n setActivateOnFocus: (value) => root.activateOnFocus.set(value),\n setTabListElement: (element) => root.tabListElement.set(element),\n setTabMap: (map) => root.tabMap.set(map)\n };\n};\n\n/**\n * Groups the tabs and the corresponding panels.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsRoot]',\n exportAs: 'rdxTabsRoot',\n providers: [provideTabsRootContext(rootContext)],\n hostDirectives: [RdxCompositeList],\n host: {\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-activation-direction]': 'activationDirection()'\n }\n})\nexport class RdxTabsRoot {\n /** @ignore */\n readonly baseId = injectId('rdx-tabs-');\n\n /**\n * The value of the currently selected tab. Use together with `(onValueChange)` for controlled state.\n */\n readonly value = model<RdxTabsValue | undefined>();\n\n /**\n * The value of the tab that should be initially selected when uncontrolled.\n * When omitted, Base UI parity uses `0` as the implicit default and falls back to the first enabled tab.\n *\n * @default 0\n */\n readonly defaultValue = input<RdxTabsValue | undefined>(undefined);\n\n /**\n * The orientation the tabs are laid out. Controls arrow-key navigation\n * (left/right vs. up/down).\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /**\n * Event emitted when the selected tab changes.\n *\n * `eventDetails.reason` is `'none'` for user-initiated changes, `'initial'` for the first automatic\n * uncontrolled selection, `'disabled'` when an uncontrolled selection falls back from a disabled tab,\n * and `'missing'` when it falls back from a removed tab. Automatic changes are not cancelable.\n */\n readonly onValueChange = output<RdxTabsValueChangeEvent>();\n\n /** @ignore Set by `[rdxTabsList]`. */\n readonly activateOnFocus = signal(false);\n\n /** @ignore Set by `[rdxTabsList]`. */\n readonly tabListElement = signal<HTMLElement | null>(null);\n\n /** @ignore Set by `[rdxTabsList]`. */\n readonly tabMap = signal(new Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>());\n\n /** @ignore */\n readonly activationDirection = signal<RdxTabsActivationDirection>('none');\n\n private readonly externallyControlled = signal(false);\n private hasObservedValue = false;\n private previousObservedValue: RdxTabsValue | undefined;\n private internalValueCommit = false;\n private hasAppliedDefaultValue = false;\n private initialDefaultValue: RdxTabsValue | undefined;\n private shouldNotifyInitialValueChange = true;\n private shouldHonorDisabledDefaultValue = false;\n private didRegisterTabs = false;\n private lastKnownTabElement: HTMLElement | undefined;\n\n constructor() {\n effect(() => {\n const currentValue = this.value();\n\n if (this.internalValueCommit) {\n this.internalValueCommit = false;\n this.hasObservedValue = true;\n this.previousObservedValue = currentValue;\n return;\n }\n\n if (!this.hasObservedValue) {\n this.hasObservedValue = true;\n this.previousObservedValue = currentValue;\n if (currentValue !== undefined) {\n this.externallyControlled.set(true);\n }\n return;\n }\n\n if (currentValue !== this.previousObservedValue) {\n this.externallyControlled.set(true);\n this.previousObservedValue = currentValue;\n }\n });\n\n effect(() => {\n if (this.hasAppliedDefaultValue || untracked(this.value) !== undefined) {\n return;\n }\n\n const defaultValue = this.defaultValue();\n const hasExplicitDefaultValue = defaultValue !== undefined;\n this.hasAppliedDefaultValue = true;\n this.initialDefaultValue = defaultValue ?? 0;\n this.shouldNotifyInitialValueChange = !hasExplicitDefaultValue;\n this.shouldHonorDisabledDefaultValue = hasExplicitDefaultValue;\n untracked(() => this.commitValue(this.initialDefaultValue!));\n });\n\n effect(() => {\n const tabMap = this.tabMap();\n const value = this.value();\n\n if (this.externallyControlled()) {\n return;\n }\n\n if (tabMap.size === 0) {\n if (this.didRegisterTabs && value !== null && !this.lastKnownTabElement?.isConnected) {\n untracked(() => this.commitAutomaticValueChange(null, 'missing'));\n }\n return;\n }\n\n this.didRegisterTabs = true;\n this.lastKnownTabElement = tabMap.keys().next().value;\n\n const selectedTabMetadata = getTabMetadataByValue(tabMap, value);\n const firstEnabledTabValue = getFirstEnabledTabValue(tabMap);\n const selectionIsDisabled = selectedTabMetadata?.disabled;\n const selectionIsMissing = selectedTabMetadata == null && value !== null;\n\n if (!selectionIsDisabled && value === this.initialDefaultValue) {\n this.shouldHonorDisabledDefaultValue = false;\n }\n\n if (this.shouldHonorDisabledDefaultValue && selectionIsDisabled && value === this.initialDefaultValue) {\n return;\n }\n\n const shouldNotifyInitialValueChange = this.shouldNotifyInitialValueChange;\n\n if (selectionIsDisabled || selectionIsMissing) {\n const fallbackValue = firstEnabledTabValue ?? null;\n\n if (value === fallbackValue) {\n this.shouldNotifyInitialValueChange = false;\n return;\n }\n\n let fallbackReason: RdxTabsValueChangeReason = 'missing';\n if (shouldNotifyInitialValueChange) {\n fallbackReason = 'initial';\n } else if (selectionIsDisabled) {\n fallbackReason = 'disabled';\n }\n\n untracked(() => this.commitAutomaticValueChange(fallbackValue, fallbackReason));\n return;\n }\n\n if (shouldNotifyInitialValueChange && selectedTabMetadata != null) {\n untracked(() => this.notifyAutomaticValueChange(value, 'initial'));\n this.shouldNotifyInitialValueChange = false;\n }\n });\n }\n\n /** @ignore */\n setValue(value: RdxTabsValue, event?: Event, reason: RdxTabsValueChangeReason = 'none'): void {\n const previous = this.value();\n if (previous === value) {\n return;\n }\n\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails: baseEventDetails } = createCancelableChangeEventDetails(\n reason,\n event ?? new Event('tabs.value-change'),\n trigger\n );\n const eventDetails = baseEventDetails as RdxTabsValueChangeEventDetails;\n const activationDirection = computeActivationDirection(previous, value, this.orientation(), this.tabMap());\n eventDetails.activationDirection = activationDirection;\n\n this.onValueChange.emit({ value, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.activationDirection.set(activationDirection);\n this.commitValue(value);\n }\n\n private commitValue(value: RdxTabsValue): void {\n this.internalValueCommit = true;\n this.value.set(value);\n }\n\n private commitAutomaticValueChange(value: RdxTabsValue, reason: RdxTabsValueChangeReason): void {\n this.activationDirection.set('none');\n this.commitValue(value);\n this.notifyAutomaticValueChange(value, reason);\n this.shouldNotifyInitialValueChange = false;\n }\n\n private notifyAutomaticValueChange(value: RdxTabsValue | undefined, reason: RdxTabsValueChangeReason): void {\n if (value === undefined) {\n return;\n }\n\n const { eventDetails: baseEventDetails } = createCancelableChangeEventDetails(\n reason,\n new Event('tabs.value-change')\n );\n const eventDetails = baseEventDetails as RdxTabsValueChangeEventDetails;\n eventDetails.activationDirection = 'none';\n this.onValueChange.emit({ value, eventDetails });\n }\n}\n\nfunction getTabMetadataByValue(\n tabMap: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>,\n value: RdxTabsValue | undefined\n): RdxCompositeMetadata<RdxTabsTabMetadata> | undefined {\n for (const tabMetadata of tabMap.values()) {\n if (tabMetadata.value === value) {\n return tabMetadata;\n }\n }\n\n return undefined;\n}\n\nfunction getFirstEnabledTabValue(\n tabMap: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>\n): RdxTabsValue | undefined {\n for (const tabMetadata of tabMap.values()) {\n if (!tabMetadata.disabled) {\n return tabMetadata.value;\n }\n }\n\n return undefined;\n}\n\nfunction computeActivationDirection(\n previous: RdxTabsValue | undefined,\n next: RdxTabsValue,\n orientation: DataOrientation,\n tabMap: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>\n): RdxTabsActivationDirection {\n if (previous == null || next == null) {\n return 'none';\n }\n\n let previousTab: HTMLElement | null = null;\n let nextTab: HTMLElement | null = null;\n let previousIndex = -1;\n let nextIndex = -1;\n\n for (const [tabElement, tabMetadata] of tabMap.entries()) {\n if (tabMetadata.value === previous) {\n previousTab = tabElement;\n previousIndex = tabMetadata.index;\n }\n if (tabMetadata.value === next) {\n nextTab = tabElement;\n nextIndex = tabMetadata.index;\n }\n if (previousTab && nextTab) {\n break;\n }\n }\n\n if (!previousTab || !nextTab || previousIndex === nextIndex) {\n return inferActivationDirectionFromValues(previous, next, orientation);\n }\n\n const previousRect = previousTab.getBoundingClientRect();\n const nextRect = nextTab.getBoundingClientRect();\n\n if (orientation === 'horizontal') {\n if (nextRect.left < previousRect.left) {\n return 'left';\n }\n if (nextRect.left > previousRect.left) {\n return 'right';\n }\n return nextIndex > previousIndex ? 'right' : 'left';\n }\n\n if (nextRect.top < previousRect.top) {\n return 'up';\n }\n if (nextRect.top > previousRect.top) {\n return 'down';\n }\n return nextIndex > previousIndex ? 'down' : 'up';\n}\n\nfunction inferActivationDirectionFromValues(\n previous: RdxTabsValue,\n next: RdxTabsValue,\n orientation: DataOrientation\n): RdxTabsActivationDirection {\n if (previous !== next && typeof previous === 'number' && typeof next === 'number') {\n if (orientation === 'horizontal') {\n return next > previous ? 'right' : 'left';\n }\n\n return next > previous ? 'down' : 'up';\n }\n\n if (previous !== next && typeof previous === 'string' && typeof next === 'string') {\n if (orientation === 'horizontal') {\n return next > previous ? 'right' : 'left';\n }\n\n return next > previous ? 'down' : 'up';\n }\n\n return 'none';\n}\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { makePanelId, makeTabId, RdxTabsValue } from './utils';\n\n/**\n * An individual interactive tab button that activates its corresponding panel.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsTab]',\n exportAs: 'rdxTabsTab',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n role: 'tab',\n '[attr.id]': 'tabId()',\n '[attr.aria-selected]': 'active()',\n '[attr.aria-controls]': 'panelId()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : undefined',\n '[attr.disabled]': 'null',\n '[attr.data-composite-item-active]': 'active() ? \"\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()',\n '[attr.data-active]': 'active() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(focus)': 'onFocus($event)'\n }\n})\nexport class RdxTabsTab {\n protected readonly rootContext = injectTabsRootContext();\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n /**\n * A unique value that associates the tab with a panel.\n */\n readonly value = input.required<RdxTabsValue>();\n\n /**\n * When `true`, prevents the user from interacting with the tab.\n * Disabled tabs remain focusable during composite keyboard navigation, matching Base UI.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the host element is a native button. When `true`, `type=\"button\"` is applied.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Optional id for the tab element. When omitted, an id is derived from the root id and tab value.\n */\n readonly id = input<string | undefined>(undefined);\n\n /** @ignore */\n protected readonly tabId = computed(() => this.id() ?? makeTabId(this.rootContext.baseId, this.value()));\n /** @ignore */\n protected readonly panelId = computed(() => makePanelId(this.rootContext.baseId, this.value()));\n\n /** @ignore */\n protected readonly active = computed(() => this.rootContext.value() === this.value());\n\n private isPressing = false;\n private isMainButton = false;\n\n constructor() {\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.disabled(),\n id: this.tabId(),\n value: this.value()\n });\n });\n }\n\n /** @ignore */\n protected onClick(event: MouseEvent): void {\n if (this.active() || this.disabled()) {\n return;\n }\n\n this.rootContext.setValue(this.value(), event, 'none');\n }\n\n /** @ignore */\n protected onKeyDown(event: KeyboardEvent): void {\n if (!this.disabled() && (event.key === ' ' || event.key === 'Enter')) {\n this.rootContext.setValue(this.value(), event, 'none');\n }\n }\n\n /** @ignore */\n protected onPointerDown(event: PointerEvent): void {\n if (this.active() || this.disabled()) {\n return;\n }\n\n this.isPressing = true;\n this.isMainButton = event.button === 0;\n\n const ownerDocument = event.currentTarget instanceof HTMLElement ? event.currentTarget.ownerDocument : document;\n ownerDocument.addEventListener(\n 'pointerup',\n () => {\n this.isPressing = false;\n this.isMainButton = false;\n },\n { once: true }\n );\n ownerDocument.addEventListener(\n 'pointercancel',\n () => {\n this.isPressing = false;\n this.isMainButton = false;\n },\n { once: true }\n );\n ownerDocument.addEventListener(\n 'blur',\n () => {\n this.isPressing = false;\n this.isMainButton = false;\n },\n { once: true }\n );\n }\n\n /** @ignore */\n protected onFocus(event: FocusEvent): void {\n if (this.active() || this.disabled()) {\n return;\n }\n\n if (this.rootContext.activateOnFocus() && (!this.isPressing || this.isMainButton)) {\n this.rootContext.setValue(this.value(), event, 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxTabsIndicator } from './src/tabs-indicator';\nimport { RdxTabsList } from './src/tabs-list';\nimport { RdxTabsPanel } from './src/tabs-panel';\nimport { RdxTabsPanelPresence } from './src/tabs-panel-presence';\nimport { RdxTabsRoot } from './src/tabs-root';\nimport { RdxTabsTab } from './src/tabs-tab';\n\nexport * from './src/tabs-indicator';\nexport * from './src/tabs-list';\nexport * from './src/tabs-panel';\nexport * from './src/tabs-panel-presence';\nexport * from './src/tabs-root';\nexport * from './src/tabs-root-context';\nexport * from './src/tabs-tab';\nexport type { RdxTabsActivationDirection, RdxTabsValue } from './src/utils';\n\nexport const tabsImports = [RdxTabsRoot, RdxTabsList, RdxTabsTab, RdxTabsPanel, RdxTabsPanelPresence, RdxTabsIndicator];\n\n@NgModule({\n imports: [...tabsImports],\n exports: [...tabsImports]\n})\nexport class RdxTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-tabs.mjs","sources":["../../../packages/primitives/tabs/src/tabs-root-context.ts","../../../packages/primitives/tabs/src/utils.ts","../../../packages/primitives/tabs/src/tabs-indicator.ts","../../../packages/primitives/tabs/src/tabs-list.ts","../../../packages/primitives/tabs/src/tabs-panel.ts","../../../packages/primitives/tabs/src/tabs-panel-presence.ts","../../../packages/primitives/tabs/src/tabs-root.ts","../../../packages/primitives/tabs/src/tabs-tab.ts","../../../packages/primitives/tabs/index.ts","../../../packages/primitives/tabs/radix-ng-primitives-tabs.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { RdxCompositeMetadata } from '@radix-ng/primitives/composite';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\nimport type { RdxTabsValueChangeReason } from './tabs-root';\nimport { RdxTabsActivationDirection, RdxTabsTabMetadata, RdxTabsValue } from './utils';\n\nexport interface RdxTabsRootContext {\n /** Stable id used to derive tab / panel ids. */\n readonly baseId: string;\n\n /** The value of the currently selected tab. */\n readonly value: Signal<RdxTabsValue | undefined>;\n\n /** The orientation of the tabs. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Direction the selection moved relative to the previously active tab. */\n readonly activationDirection: Signal<RdxTabsActivationDirection>;\n\n /** Whether tabs are activated on focus (set by the list). */\n readonly activateOnFocus: Signal<boolean>;\n\n /** The `[rdxTabsList]` host element, used to resolve tab order and indicator geometry. */\n readonly tabListElement: Signal<HTMLElement | null>;\n\n /** Registered tabs in DOM order. */\n readonly tabMap: Signal<Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>>;\n\n /** Select a tab by value. No-op when the value is unchanged. */\n setValue(value: RdxTabsValue, event?: Event, reason?: RdxTabsValueChangeReason): void;\n\n /** Mirror the list's `activateOnFocus` input onto the root context. */\n setActivateOnFocus(value: boolean): void;\n\n /** Register the list host element. */\n setTabListElement(element: HTMLElement | null): void;\n\n /** Register the tab composite map. */\n setTabMap(map: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>): void;\n}\n\nexport const [injectTabsRootContext, provideTabsRootContext] = createContext<RdxTabsRootContext>(\n 'RdxTabsRootContext',\n 'components/tabs'\n);\n","/**\n * The direction in which the active tab moved relative to the previously active tab.\n * Mirrors Base UI's `Tabs.Tab.ActivationDirection`.\n */\nexport type RdxTabsActivationDirection = 'left' | 'right' | 'up' | 'down' | 'none';\n\n/** A value that identifies a tab / panel pair. */\nexport type RdxTabsValue = string | number | null;\n\n/** Metadata registered for each tab in the composite list. */\nexport interface RdxTabsTabMetadata {\n [key: string]: unknown;\n disabled: boolean;\n id: string;\n value: RdxTabsValue;\n}\n\n/** Metadata registered for each panel in the composite list. */\nexport interface RdxTabsPanelMetadata {\n [key: string]: unknown;\n id: string;\n value: RdxTabsValue;\n}\n\nexport function makeTabId(baseId: string, value: RdxTabsValue): string {\n return `${baseId}-tab-${value}`;\n}\n\nexport function makePanelId(baseId: string, value: RdxTabsValue): string {\n return `${baseId}-panel-${value}`;\n}\n","import { afterNextRender, DestroyRef, Directive, effect, inject, signal, untracked } from '@angular/core';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { makeTabId } from './utils';\n\ninterface TabGeometry {\n top: number;\n right: number;\n bottom: number;\n left: number;\n width: number;\n height: number;\n}\n\n/**\n * A visual element that tracks the position and size of the active tab. Exposes the active tab\n * geometry as CSS variables (`--active-tab-{top,right,bottom,left,width,height}`) so it can be\n * animated with CSS.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsIndicator]',\n exportAs: 'rdxTabsIndicator',\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()',\n '[style.--active-tab-top.px]': 'geometry()?.top',\n '[style.--active-tab-right.px]': 'geometry()?.right',\n '[style.--active-tab-bottom.px]': 'geometry()?.bottom',\n '[style.--active-tab-left.px]': 'geometry()?.left',\n '[style.--active-tab-width.px]': 'geometry()?.width',\n '[style.--active-tab-height.px]': 'geometry()?.height'\n }\n})\nexport class RdxTabsIndicator {\n protected readonly rootContext = injectTabsRootContext();\n private readonly destroyRef = inject(DestroyRef);\n\n /** @ignore */\n protected readonly geometry = signal<TabGeometry | null>(null);\n\n constructor() {\n // Re-measure whenever the selection, orientation or the list element changes.\n effect(() => {\n this.rootContext.value();\n this.rootContext.orientation();\n this.rootContext.tabListElement();\n this.scheduleMeasure();\n });\n\n afterNextRender(() => {\n const list = untracked(this.rootContext.tabListElement);\n if (!list || typeof ResizeObserver === 'undefined') {\n this.measure();\n return;\n }\n\n const observer = new ResizeObserver(() => this.measure());\n observer.observe(list);\n this.destroyRef.onDestroy(() => observer.disconnect());\n this.measure();\n });\n }\n\n private scheduleMeasure(): void {\n if (typeof requestAnimationFrame === 'undefined') {\n this.measure();\n return;\n }\n requestAnimationFrame(() => this.measure());\n }\n\n private measure(): void {\n const list = untracked(this.rootContext.tabListElement);\n const value = untracked(this.rootContext.value);\n\n if (!list || value == null || typeof document === 'undefined') {\n this.geometry.set(null);\n return;\n }\n\n const tab = document.getElementById(makeTabId(this.rootContext.baseId, value));\n if (!tab) {\n this.geometry.set(null);\n return;\n }\n\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n\n // Measure `left` / `top` relative to the list's scrollable content origin rather than its\n // visible edge. When the list is a scroll container (e.g. its tabs overflow inside a Scroll\n // Area), the indicator is an absolutely positioned child of that container and scrolls along\n // with the content, so these offsets must be content-relative to stay aligned with the tab.\n // For non-scrolling lists `scrollLeft` / `scrollTop` are `0`, leaving the geometry unchanged.\n // `right` / `bottom` stay visible-edge relative — there is no unambiguous content-relative\n // meaning for them inside a scroll container, and the moving indicator uses `left`/`top`.\n const scrollLeft = list.scrollLeft;\n const scrollTop = list.scrollTop;\n\n this.geometry.set({\n top: tabRect.top - listRect.top + scrollTop,\n right: listRect.right - tabRect.right,\n bottom: listRect.bottom - tabRect.bottom,\n left: tabRect.left - listRect.left + scrollLeft,\n width: tabRect.width,\n height: tabRect.height\n });\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { RdxCompositeMetadata, RdxCompositeRoot } from '@radix-ng/primitives/composite';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { RdxTabsTabMetadata } from './utils';\n\n/**\n * Groups the individual tab buttons and manages keyboard navigation.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsList]',\n exportAs: 'rdxTabsList',\n hostDirectives: [RdxCompositeRoot],\n host: {\n role: 'tablist',\n '[attr.aria-orientation]': 'rootContext.orientation() === \"vertical\" ? \"vertical\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()'\n }\n})\nexport class RdxTabsList {\n protected readonly rootContext = injectTabsRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly compositeRoot = inject(RdxCompositeRoot, { self: true });\n\n /**\n * Whether a tab is activated when it receives focus (automatic activation).\n * When `false`, tabs are only activated on click or Enter/Space.\n *\n * @default false\n */\n readonly activateOnFocus = input(false, { transform: booleanAttribute });\n\n /**\n * Whether keyboard navigation should loop from the last tab back to the first.\n *\n * @default true\n */\n readonly loopFocus = input(true, { transform: booleanAttribute });\n\n private readonly tabMap = computed(() => {\n const map = new Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>();\n\n this.compositeRoot.itemMap().forEach((metadata, element) => {\n if (isTabsTabMetadata(metadata)) {\n map.set(element, metadata);\n }\n });\n\n return map;\n });\n\n private readonly tabMetadata = computed(() => Array.from(this.tabMap().values()));\n\n private readonly disabledIndices = computed(() =>\n this.tabMetadata()\n .filter((metadata) => metadata.disabled)\n .map((metadata) => metadata.index)\n );\n\n private readonly activeIndex = computed(() => {\n const value = this.rootContext.value();\n const metadata = this.tabMetadata().find((tab) => tab.value === value);\n\n return metadata?.index ?? -1;\n });\n\n constructor() {\n this.rootContext.setTabListElement(this.elementRef.nativeElement);\n\n // Constants — set once (not reactive). Disabled tabs stay in the roving sequence (APG: arrow\n // keys can focus a disabled tab), so the composite has no disabled indices and Home/End are on.\n this.compositeRoot.setEnableHomeAndEndKeys(true);\n this.compositeRoot.setDisabledIndices([]);\n\n effect(() => {\n this.compositeRoot.setOrientation(this.rootContext.orientation());\n this.compositeRoot.setLoopFocus(this.loopFocus());\n });\n\n effect(() => {\n this.rootContext.setTabMap(this.tabMap());\n });\n\n effect(() => {\n const activeIndex = this.activeIndex();\n\n if (activeIndex === -1) {\n return;\n }\n\n const list = this.elementRef.nativeElement;\n const activeElement = list.ownerDocument.activeElement;\n\n if (activeElement && list.contains(activeElement)) {\n return;\n }\n\n if (this.disabledIndices().includes(activeIndex)) {\n const firstEnabledIndex = this.tabMetadata().find((metadata) => !metadata.disabled)?.index;\n\n if (firstEnabledIndex !== undefined) {\n this.compositeRoot.setHighlightedIndex(firstEnabledIndex);\n }\n return;\n }\n\n this.compositeRoot.setHighlightedIndex(activeIndex);\n });\n\n effect(() => this.rootContext.setActivateOnFocus(this.activateOnFocus()));\n }\n}\n\nfunction isTabsTabMetadata(metadata: RdxCompositeMetadata): metadata is RdxCompositeMetadata<RdxTabsTabMetadata> {\n return (\n typeof metadata['disabled'] === 'boolean' &&\n typeof metadata['id'] === 'string' &&\n Object.prototype.hasOwnProperty.call(metadata, 'value')\n );\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n untracked\n} from '@angular/core';\nimport { RdxCompositeListItem } from '@radix-ng/primitives/composite';\nimport { useTransitionStatus } from '@radix-ng/primitives/core';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { makePanelId, makeTabId, RdxTabsValue } from './utils';\n\nconst panelPresenceContext = () => ({ present: inject(RdxTabsPanel).present });\n\n/**\n * A panel displayed when its corresponding tab is active.\n *\n * By default the panel stays in the DOM and is toggled with the `hidden` attribute. To unmount the\n * contents while inactive (Base UI's default `keepMounted: false`), nest a `*rdxTabsPanelPresence`\n * structural directive inside it; set `keepMounted` to keep the contents mounted regardless.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsPanel]',\n exportAs: 'rdxTabsPanel',\n providers: [provideRdxPresenceContext(panelPresenceContext)],\n hostDirectives: [RdxCompositeListItem],\n host: {\n role: 'tabpanel',\n '[attr.id]': 'panelId()',\n '[attr.tabindex]': 'active() ? 0 : -1',\n '[attr.aria-labelledby]': 'tabId()',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()',\n '[attr.data-index]': 'index()',\n '[attr.data-hidden]': 'active() ? undefined : \"\"',\n '[attr.data-starting-style]': 'transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'transitionStatus() === \"ending\" ? \"\" : undefined',\n '[hidden]': 'hidden()'\n }\n})\nexport class RdxTabsPanel {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly listItem = inject(RdxCompositeListItem, { self: true });\n protected readonly rootContext = injectTabsRootContext();\n\n /**\n * A unique value that associates the panel with a tab.\n */\n readonly value = input.required<RdxTabsValue>();\n\n /**\n * Keep the panel contents mounted in the DOM while inactive (the contents are still hidden).\n * Only relevant together with `*rdxTabsPanelPresence`, which otherwise unmounts them.\n *\n * @default false\n */\n readonly keepMounted = input(false, { transform: booleanAttribute });\n\n private readonly transition = useTransitionStatus(() => {});\n\n /** Reactive enter/exit transition phase (`'starting'` | `'ending'` | `undefined`). */\n readonly transitionStatus = this.transition.status;\n\n /** @ignore */\n protected readonly panelId = computed(() => makePanelId(this.rootContext.baseId, this.value()));\n /** @ignore */\n protected readonly tabId = computed(() => {\n const value = this.value();\n\n for (const tabMetadata of this.rootContext.tabMap().values()) {\n if (tabMetadata.value === value) {\n return tabMetadata.id;\n }\n }\n\n return makeTabId(this.rootContext.baseId, value);\n });\n\n /** Whether this panel's tab is currently selected. */\n readonly active = computed(() => this.rootContext.value() === this.value());\n\n /** `true` once a `*rdxTabsPanelPresence` child takes over mounting. */\n private readonly hasPresence = signal(false);\n\n /**\n * Whether the contents should be present for `*rdxTabsPanelPresence`. Flips with `active` so the\n * presence directive owns the exit-animation timing (it keeps the node mounted until its exit\n * `@keyframes` finishes); `keepMounted` keeps them mounted regardless.\n */\n readonly present = computed(() => this.keepMounted() || this.active());\n\n /**\n * The `hidden` attribute value. The panel is shown while active or while its exit transition\n * runs. When a presence child unmounts the contents we no longer force `hidden` (the empty\n * element renders nothing), unless `keepMounted` keeps the inactive contents around.\n */\n protected readonly hidden = computed(\n () => !this.active() && this.transitionStatus() !== 'ending' && (!this.hasPresence() || this.keepMounted())\n );\n\n /** @ignore Index of the panel in DOM order. */\n protected readonly index = this.listItem.index;\n\n private previousActive = false;\n private isFirstRun = true;\n\n constructor() {\n const unregister = this.transition.registerElement(this.elementRef.nativeElement);\n inject(DestroyRef).onDestroy(unregister);\n\n effect(() => {\n this.listItem.setMetadata({\n id: this.panelId(),\n value: this.value()\n });\n });\n\n effect(() => {\n const active = this.active();\n\n // Settle the initial state without playing an enter transition.\n if (this.isFirstRun) {\n this.isFirstRun = false;\n this.previousActive = active;\n return;\n }\n\n if (active !== this.previousActive) {\n this.previousActive = active;\n untracked(() => this.transition.start(active));\n }\n });\n }\n\n /** @ignore Called by `RdxTabsPanelPresence` so the panel stops forcing `hidden`. */\n markHasPresence(): void {\n this.hasPresence.set(true);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { RdxTabsPanel } from './tabs-panel';\n\n/**\n * Structural directive that mounts the tab panel contents only while the panel is active,\n * unmounting them once the exit animation finishes. Apply it inside an `[rdxTabsPanel]` to get\n * Base UI's default unmounting behavior; combine with `keepMounted` on the panel to keep the\n * contents mounted instead.\n *\n * The presence state is read from the parent panel through {@link RdxPresenceDirective}.\n */\n@Directive({\n selector: 'ng-template[rdxTabsPanelPresence]',\n hostDirectives: [RdxPresenceDirective]\n})\nexport class RdxTabsPanelPresence {\n constructor() {\n inject(RdxTabsPanel).markHasPresence();\n }\n}\n","import { Directive, effect, inject, input, model, output, signal, untracked } from '@angular/core';\nimport { RdxCompositeList, RdxCompositeMetadata } from '@radix-ng/primitives/composite';\nimport {\n createCancelableChangeEventDetails,\n DataOrientation,\n injectId,\n RdxCancelableChangeEventDetails\n} from '@radix-ng/primitives/core';\nimport { provideTabsRootContext, RdxTabsRootContext } from './tabs-root-context';\nimport { RdxTabsActivationDirection, RdxTabsTabMetadata, RdxTabsValue } from './utils';\n\nexport type RdxTabsValueChangeReason = 'none' | 'disabled' | 'missing' | 'initial';\nexport type RdxTabsValueChangeEventDetails = RdxCancelableChangeEventDetails<RdxTabsValueChangeReason> & {\n activationDirection: RdxTabsActivationDirection;\n};\n\nexport interface RdxTabsValueChangeEvent {\n value: RdxTabsValue;\n eventDetails: RdxTabsValueChangeEventDetails;\n}\n\nconst rootContext = (): RdxTabsRootContext => {\n const root = inject(RdxTabsRoot);\n\n return {\n baseId: root.baseId,\n value: root.value,\n orientation: root.orientation,\n activationDirection: root.activationDirection.asReadonly(),\n activateOnFocus: root.activateOnFocus.asReadonly(),\n tabListElement: root.tabListElement.asReadonly(),\n tabMap: root.tabMap.asReadonly(),\n setValue: (value, event, reason) => root.setValue(value, event, reason as RdxTabsValueChangeReason | undefined),\n setActivateOnFocus: (value) => root.activateOnFocus.set(value),\n setTabListElement: (element) => root.tabListElement.set(element),\n setTabMap: (map) => root.tabMap.set(map)\n };\n};\n\n/**\n * Groups the tabs and the corresponding panels.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsRoot]',\n exportAs: 'rdxTabsRoot',\n providers: [provideTabsRootContext(rootContext)],\n hostDirectives: [RdxCompositeList],\n host: {\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-activation-direction]': 'activationDirection()'\n }\n})\nexport class RdxTabsRoot {\n /** @ignore */\n readonly baseId = injectId('rdx-tabs-');\n\n /**\n * The value of the currently selected tab. Use together with `(onValueChange)` for controlled state.\n */\n readonly value = model<RdxTabsValue | undefined>();\n\n /**\n * The value of the tab that should be initially selected when uncontrolled.\n * When omitted, Base UI parity uses `0` as the implicit default and falls back to the first enabled tab.\n *\n * @default 0\n */\n readonly defaultValue = input<RdxTabsValue | undefined>(undefined);\n\n /**\n * The orientation the tabs are laid out. Controls arrow-key navigation\n * (left/right vs. up/down).\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /**\n * Event emitted when the selected tab changes.\n *\n * `eventDetails.reason` is `'none'` for user-initiated changes, `'initial'` for the first automatic\n * uncontrolled selection, `'disabled'` when an uncontrolled selection falls back from a disabled tab,\n * and `'missing'` when it falls back from a removed tab. Automatic changes are not cancelable.\n */\n readonly onValueChange = output<RdxTabsValueChangeEvent>();\n\n /** @ignore Set by `[rdxTabsList]`. */\n readonly activateOnFocus = signal(false);\n\n /** @ignore Set by `[rdxTabsList]`. */\n readonly tabListElement = signal<HTMLElement | null>(null);\n\n /** @ignore Set by `[rdxTabsList]`. */\n readonly tabMap = signal(new Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>());\n\n /** @ignore */\n readonly activationDirection = signal<RdxTabsActivationDirection>('none');\n\n private readonly externallyControlled = signal(false);\n private hasObservedValue = false;\n private previousObservedValue: RdxTabsValue | undefined;\n private internalValueCommit = false;\n private hasAppliedDefaultValue = false;\n private initialDefaultValue: RdxTabsValue | undefined;\n private shouldNotifyInitialValueChange = true;\n private shouldHonorDisabledDefaultValue = false;\n private didRegisterTabs = false;\n private lastKnownTabElement: HTMLElement | undefined;\n\n constructor() {\n effect(() => {\n const currentValue = this.value();\n\n if (this.internalValueCommit) {\n this.internalValueCommit = false;\n this.hasObservedValue = true;\n this.previousObservedValue = currentValue;\n return;\n }\n\n if (!this.hasObservedValue) {\n this.hasObservedValue = true;\n this.previousObservedValue = currentValue;\n if (currentValue !== undefined) {\n this.externallyControlled.set(true);\n }\n return;\n }\n\n if (currentValue !== this.previousObservedValue) {\n this.externallyControlled.set(true);\n this.previousObservedValue = currentValue;\n }\n });\n\n effect(() => {\n if (this.hasAppliedDefaultValue || untracked(this.value) !== undefined) {\n return;\n }\n\n const defaultValue = this.defaultValue();\n const hasExplicitDefaultValue = defaultValue !== undefined;\n this.hasAppliedDefaultValue = true;\n this.initialDefaultValue = defaultValue ?? 0;\n this.shouldNotifyInitialValueChange = !hasExplicitDefaultValue;\n this.shouldHonorDisabledDefaultValue = hasExplicitDefaultValue;\n untracked(() => this.commitValue(this.initialDefaultValue!));\n });\n\n effect(() => {\n const tabMap = this.tabMap();\n const value = this.value();\n\n if (this.externallyControlled()) {\n return;\n }\n\n if (tabMap.size === 0) {\n if (this.didRegisterTabs && value !== null && !this.lastKnownTabElement?.isConnected) {\n untracked(() => this.commitAutomaticValueChange(null, 'missing'));\n }\n return;\n }\n\n this.didRegisterTabs = true;\n this.lastKnownTabElement = tabMap.keys().next().value;\n\n const selectedTabMetadata = getTabMetadataByValue(tabMap, value);\n const firstEnabledTabValue = getFirstEnabledTabValue(tabMap);\n const selectionIsDisabled = selectedTabMetadata?.disabled;\n const selectionIsMissing = selectedTabMetadata == null && value !== null;\n\n if (!selectionIsDisabled && value === this.initialDefaultValue) {\n this.shouldHonorDisabledDefaultValue = false;\n }\n\n if (this.shouldHonorDisabledDefaultValue && selectionIsDisabled && value === this.initialDefaultValue) {\n return;\n }\n\n const shouldNotifyInitialValueChange = this.shouldNotifyInitialValueChange;\n\n if (selectionIsDisabled || selectionIsMissing) {\n const fallbackValue = firstEnabledTabValue ?? null;\n\n if (value === fallbackValue) {\n this.shouldNotifyInitialValueChange = false;\n return;\n }\n\n let fallbackReason: RdxTabsValueChangeReason = 'missing';\n if (shouldNotifyInitialValueChange) {\n fallbackReason = 'initial';\n } else if (selectionIsDisabled) {\n fallbackReason = 'disabled';\n }\n\n untracked(() => this.commitAutomaticValueChange(fallbackValue, fallbackReason));\n return;\n }\n\n if (shouldNotifyInitialValueChange && selectedTabMetadata != null) {\n untracked(() => this.notifyAutomaticValueChange(value, 'initial'));\n this.shouldNotifyInitialValueChange = false;\n }\n });\n }\n\n /** @ignore */\n setValue(value: RdxTabsValue, event?: Event, reason: RdxTabsValueChangeReason = 'none'): void {\n const previous = this.value();\n if (previous === value) {\n return;\n }\n\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails: baseEventDetails } = createCancelableChangeEventDetails(\n reason,\n event ?? new Event('tabs.value-change'),\n trigger\n );\n const eventDetails = baseEventDetails as RdxTabsValueChangeEventDetails;\n const activationDirection = computeActivationDirection(previous, value, this.orientation(), this.tabMap());\n eventDetails.activationDirection = activationDirection;\n\n this.onValueChange.emit({ value, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.activationDirection.set(activationDirection);\n this.commitValue(value);\n }\n\n private commitValue(value: RdxTabsValue): void {\n this.internalValueCommit = true;\n this.value.set(value);\n }\n\n private commitAutomaticValueChange(value: RdxTabsValue, reason: RdxTabsValueChangeReason): void {\n this.activationDirection.set('none');\n this.commitValue(value);\n this.notifyAutomaticValueChange(value, reason);\n this.shouldNotifyInitialValueChange = false;\n }\n\n private notifyAutomaticValueChange(value: RdxTabsValue | undefined, reason: RdxTabsValueChangeReason): void {\n if (value === undefined) {\n return;\n }\n\n const { eventDetails: baseEventDetails } = createCancelableChangeEventDetails(\n reason,\n new Event('tabs.value-change')\n );\n const eventDetails = baseEventDetails as RdxTabsValueChangeEventDetails;\n eventDetails.activationDirection = 'none';\n this.onValueChange.emit({ value, eventDetails });\n }\n}\n\nfunction getTabMetadataByValue(\n tabMap: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>,\n value: RdxTabsValue | undefined\n): RdxCompositeMetadata<RdxTabsTabMetadata> | undefined {\n for (const tabMetadata of tabMap.values()) {\n if (tabMetadata.value === value) {\n return tabMetadata;\n }\n }\n\n return undefined;\n}\n\nfunction getFirstEnabledTabValue(\n tabMap: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>\n): RdxTabsValue | undefined {\n for (const tabMetadata of tabMap.values()) {\n if (!tabMetadata.disabled) {\n return tabMetadata.value;\n }\n }\n\n return undefined;\n}\n\nfunction computeActivationDirection(\n previous: RdxTabsValue | undefined,\n next: RdxTabsValue,\n orientation: DataOrientation,\n tabMap: Map<HTMLElement, RdxCompositeMetadata<RdxTabsTabMetadata>>\n): RdxTabsActivationDirection {\n if (previous == null || next == null) {\n return 'none';\n }\n\n let previousTab: HTMLElement | null = null;\n let nextTab: HTMLElement | null = null;\n let previousIndex = -1;\n let nextIndex = -1;\n\n for (const [tabElement, tabMetadata] of tabMap.entries()) {\n if (tabMetadata.value === previous) {\n previousTab = tabElement;\n previousIndex = tabMetadata.index;\n }\n if (tabMetadata.value === next) {\n nextTab = tabElement;\n nextIndex = tabMetadata.index;\n }\n if (previousTab && nextTab) {\n break;\n }\n }\n\n if (!previousTab || !nextTab || previousIndex === nextIndex) {\n return inferActivationDirectionFromValues(previous, next, orientation);\n }\n\n const previousRect = previousTab.getBoundingClientRect();\n const nextRect = nextTab.getBoundingClientRect();\n\n if (orientation === 'horizontal') {\n if (nextRect.left < previousRect.left) {\n return 'left';\n }\n if (nextRect.left > previousRect.left) {\n return 'right';\n }\n return nextIndex > previousIndex ? 'right' : 'left';\n }\n\n if (nextRect.top < previousRect.top) {\n return 'up';\n }\n if (nextRect.top > previousRect.top) {\n return 'down';\n }\n return nextIndex > previousIndex ? 'down' : 'up';\n}\n\nfunction inferActivationDirectionFromValues(\n previous: RdxTabsValue,\n next: RdxTabsValue,\n orientation: DataOrientation\n): RdxTabsActivationDirection {\n if (previous !== next && typeof previous === 'number' && typeof next === 'number') {\n if (orientation === 'horizontal') {\n return next > previous ? 'right' : 'left';\n }\n\n return next > previous ? 'down' : 'up';\n }\n\n if (previous !== next && typeof previous === 'string' && typeof next === 'string') {\n if (orientation === 'horizontal') {\n return next > previous ? 'right' : 'left';\n }\n\n return next > previous ? 'down' : 'up';\n }\n\n return 'none';\n}\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectTabsRootContext } from './tabs-root-context';\nimport { makePanelId, makeTabId, RdxTabsValue } from './utils';\n\n/**\n * An individual interactive tab button that activates its corresponding panel.\n *\n * @see https://base-ui.com/react/components/tabs\n */\n@Directive({\n selector: '[rdxTabsTab]',\n exportAs: 'rdxTabsTab',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n role: 'tab',\n '[attr.id]': 'tabId()',\n '[attr.aria-selected]': 'active()',\n '[attr.aria-controls]': 'panelId()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : undefined',\n '[attr.disabled]': 'null',\n '[attr.data-composite-item-active]': 'active() ? \"\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'rootContext.activationDirection()',\n '[attr.data-active]': 'active() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(focus)': 'onFocus($event)'\n }\n})\nexport class RdxTabsTab {\n protected readonly rootContext = injectTabsRootContext();\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n /**\n * A unique value that associates the tab with a panel.\n */\n readonly value = input.required<RdxTabsValue>();\n\n /**\n * When `true`, prevents the user from interacting with the tab.\n * Disabled tabs remain focusable during composite keyboard navigation, matching Base UI.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the host element is a native button. When `true`, `type=\"button\"` is applied.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Optional id for the tab element. When omitted, an id is derived from the root id and tab value.\n */\n readonly id = input<string | undefined>(undefined);\n\n /** @ignore */\n protected readonly tabId = computed(() => this.id() ?? makeTabId(this.rootContext.baseId, this.value()));\n /** @ignore */\n protected readonly panelId = computed(() => makePanelId(this.rootContext.baseId, this.value()));\n\n /** @ignore */\n protected readonly active = computed(() => this.rootContext.value() === this.value());\n\n private isPressing = false;\n private isMainButton = false;\n\n constructor() {\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.disabled(),\n id: this.tabId(),\n value: this.value()\n });\n });\n }\n\n /** @ignore */\n protected onClick(event: MouseEvent): void {\n if (this.active() || this.disabled()) {\n return;\n }\n\n this.rootContext.setValue(this.value(), event, 'none');\n }\n\n /** @ignore */\n protected onKeyDown(event: KeyboardEvent): void {\n if (!this.disabled() && (event.key === ' ' || event.key === 'Enter')) {\n this.rootContext.setValue(this.value(), event, 'none');\n }\n }\n\n /** @ignore */\n protected onPointerDown(event: PointerEvent): void {\n if (this.active() || this.disabled()) {\n return;\n }\n\n this.isPressing = true;\n this.isMainButton = event.button === 0;\n\n const ownerDocument = event.currentTarget instanceof HTMLElement ? event.currentTarget.ownerDocument : document;\n ownerDocument.addEventListener(\n 'pointerup',\n () => {\n this.isPressing = false;\n this.isMainButton = false;\n },\n { once: true }\n );\n ownerDocument.addEventListener(\n 'pointercancel',\n () => {\n this.isPressing = false;\n this.isMainButton = false;\n },\n { once: true }\n );\n ownerDocument.addEventListener(\n 'blur',\n () => {\n this.isPressing = false;\n this.isMainButton = false;\n },\n { once: true }\n );\n }\n\n /** @ignore */\n protected onFocus(event: FocusEvent): void {\n if (this.active() || this.disabled()) {\n return;\n }\n\n if (this.rootContext.activateOnFocus() && (!this.isPressing || this.isMainButton)) {\n this.rootContext.setValue(this.value(), event, 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxTabsIndicator } from './src/tabs-indicator';\nimport { RdxTabsList } from './src/tabs-list';\nimport { RdxTabsPanel } from './src/tabs-panel';\nimport { RdxTabsPanelPresence } from './src/tabs-panel-presence';\nimport { RdxTabsRoot } from './src/tabs-root';\nimport { RdxTabsTab } from './src/tabs-tab';\n\nexport * from './src/tabs-indicator';\nexport * from './src/tabs-list';\nexport * from './src/tabs-panel';\nexport * from './src/tabs-panel-presence';\nexport * from './src/tabs-root';\nexport * from './src/tabs-root-context';\nexport * from './src/tabs-tab';\nexport type { RdxTabsActivationDirection, RdxTabsValue } from './src/utils';\n\nexport const tabsImports = [RdxTabsRoot, RdxTabsList, RdxTabsTab, RdxTabsPanel, RdxTabsPanelPresence, RdxTabsIndicator];\n\n@NgModule({\n imports: [...tabsImports],\n exports: [...tabsImports]\n})\nexport class RdxTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -23,27 +23,33 @@ class RdxTimeFieldInputDirective {
|
|
|
23
23
|
* The part of the date to render
|
|
24
24
|
* `'hour' | 'minute' | 'second' | 'dayPeriod' | 'literal' | 'timeZoneName'`
|
|
25
25
|
*/
|
|
26
|
-
this.part = input(
|
|
26
|
+
this.part = input(/* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [undefined, { debugName: "part" }] : /* istanbul ignore next */ []));
|
|
27
28
|
/**
|
|
28
29
|
* @ignore
|
|
29
30
|
*/
|
|
30
|
-
this.disabled = computed(() => this.rootContext.disabled(),
|
|
31
|
+
this.disabled = computed(() => this.rootContext.disabled(), /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
31
33
|
/**
|
|
32
34
|
* @ignore
|
|
33
35
|
*/
|
|
34
|
-
this.readonly = computed(() => this.rootContext.readonly(),
|
|
36
|
+
this.readonly = computed(() => this.rootContext.readonly(), /* @ts-ignore */
|
|
37
|
+
...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
35
38
|
/**
|
|
36
39
|
* @ignore
|
|
37
40
|
*/
|
|
38
|
-
this.isInvalid = computed(() => this.rootContext.isInvalid(),
|
|
41
|
+
this.isInvalid = computed(() => this.rootContext.isInvalid(), /* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
|
|
39
43
|
/**
|
|
40
44
|
* @ignore
|
|
41
45
|
*/
|
|
42
|
-
this.hasLeftFocus = signal(true,
|
|
46
|
+
this.hasLeftFocus = signal(true, /* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [{ debugName: "hasLeftFocus" }] : /* istanbul ignore next */ []));
|
|
43
48
|
/**
|
|
44
49
|
* @ignore
|
|
45
50
|
*/
|
|
46
|
-
this.lastKeyZero = signal(false,
|
|
51
|
+
this.lastKeyZero = signal(false, /* @ts-ignore */
|
|
52
|
+
...(ngDevMode ? [{ debugName: "lastKeyZero" }] : /* istanbul ignore next */ []));
|
|
47
53
|
this.fieldData = computed(() => {
|
|
48
54
|
return useDateField({
|
|
49
55
|
hasLeftFocus: this.hasLeftFocus,
|
|
@@ -59,8 +65,10 @@ class RdxTimeFieldInputDirective {
|
|
|
59
65
|
focusNext: this.rootContext.focusNext,
|
|
60
66
|
step: this.rootContext.step$
|
|
61
67
|
});
|
|
62
|
-
},
|
|
63
|
-
|
|
68
|
+
}, /* @ts-ignore */
|
|
69
|
+
...(ngDevMode ? [{ debugName: "fieldData" }] : /* istanbul ignore next */ []));
|
|
70
|
+
this.attributes = computed(() => this.fieldData().attributes(), /* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [{ debugName: "attributes" }] : /* istanbul ignore next */ []));
|
|
64
72
|
effect(() => {
|
|
65
73
|
const { handleSegmentClick, handleSegmentKeydown } = this.fieldData();
|
|
66
74
|
this.handleSegmentKeydown = handleSegmentKeydown;
|
|
@@ -85,10 +93,10 @@ class RdxTimeFieldInputDirective {
|
|
|
85
93
|
onFocusOut() {
|
|
86
94
|
this.hasLeftFocus.set(true);
|
|
87
95
|
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
89
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
96
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
97
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxTimeFieldInputDirective, isStandalone: true, selector: "[rdxTimeFieldInput]", inputs: { part: { classPropertyName: "part", publicName: "part", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "part() !== \"literal\" && handleSegmentClick($event)", "keydown": "part() !== \"literal\" && handleSegmentKeydown($event)", "focus": "part() !== \"literal\" && onFocus($event)", "focusout": "part() !== \"literal\" && onFocusOut()" }, properties: { "attr.contenteditable": "disabled() || readonly() ? false : part() !== \"literal\"", "attr.data-rdx-date-field-segment": "part()", "attr.aria-disabled": "disabled() ? \"\" : undefined", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-invalid": "isInvalid() ? \"\" : undefined", "attr.aria-invalid": "isInvalid() ? true : undefined" } }, ngImport: i0 }); }
|
|
90
98
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldInputDirective, decorators: [{
|
|
92
100
|
type: Directive,
|
|
93
101
|
args: [{
|
|
94
102
|
selector: '[rdxTimeFieldInput]',
|
|
@@ -134,30 +142,36 @@ class RdxTimeFieldRootDirective {
|
|
|
134
142
|
/**
|
|
135
143
|
* The controlled checked state of the calendar.
|
|
136
144
|
*/
|
|
137
|
-
this.value = model(
|
|
145
|
+
this.value = model(/* @ts-ignore */
|
|
146
|
+
...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
|
|
138
147
|
/**
|
|
139
148
|
* The hour cycle to use for formatting times. Defaults to the locale preference
|
|
140
149
|
*/
|
|
141
|
-
this.hourCycle = input(
|
|
150
|
+
this.hourCycle = input(/* @ts-ignore */
|
|
151
|
+
...(ngDevMode ? [undefined, { debugName: "hourCycle" }] : /* istanbul ignore next */ []));
|
|
142
152
|
/**
|
|
143
153
|
* The granularity to use for formatting the field. Defaults to 'day' if a CalendarDate is provided, otherwise defaults to 'minute'.
|
|
144
154
|
* The field will render segments for each part of the date up to and including the specified granularity.
|
|
145
155
|
*/
|
|
146
|
-
this.granularity = input(
|
|
156
|
+
this.granularity = input(/* @ts-ignore */
|
|
157
|
+
...(ngDevMode ? [undefined, { debugName: "granularity" }] : /* istanbul ignore next */ []));
|
|
147
158
|
/**
|
|
148
159
|
* The locale to use for formatting dates.
|
|
149
160
|
*/
|
|
150
|
-
this.locale = input('en',
|
|
161
|
+
this.locale = input('en', /* @ts-ignore */
|
|
162
|
+
...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
|
|
151
163
|
this.dirInput = input(undefined, { ...(ngDevMode ? { debugName: "dirInput" } : /* istanbul ignore next */ {}), alias: 'dir' });
|
|
152
164
|
this.dir = injectDirection(this.dirInput);
|
|
153
165
|
/**
|
|
154
166
|
* The minimum valid date that can be entered.
|
|
155
167
|
*/
|
|
156
|
-
this.minValue = input(
|
|
168
|
+
this.minValue = input(/* @ts-ignore */
|
|
169
|
+
...(ngDevMode ? [undefined, { debugName: "minValue" }] : /* istanbul ignore next */ []));
|
|
157
170
|
/**
|
|
158
171
|
* The maximum valid date that can be entered.
|
|
159
172
|
*/
|
|
160
|
-
this.maxValue = input(
|
|
173
|
+
this.maxValue = input(/* @ts-ignore */
|
|
174
|
+
...(ngDevMode ? [undefined, { debugName: "maxValue" }] : /* istanbul ignore next */ []));
|
|
161
175
|
/**
|
|
162
176
|
* Whether or not to hide the time zone segment of the field.
|
|
163
177
|
*/
|
|
@@ -170,8 +184,10 @@ class RdxTimeFieldRootDirective {
|
|
|
170
184
|
/**
|
|
171
185
|
* The stepping interval for the time fields. Defaults to 1
|
|
172
186
|
*/
|
|
173
|
-
this.step = input(
|
|
174
|
-
|
|
187
|
+
this.step = input(/* @ts-ignore */
|
|
188
|
+
...(ngDevMode ? [undefined, { debugName: "step" }] : /* istanbul ignore next */ []));
|
|
189
|
+
this.step$ = computed(() => normalizeDateStep(this.step()), /* @ts-ignore */
|
|
190
|
+
...(ngDevMode ? [{ debugName: "step$" }] : /* istanbul ignore next */ []));
|
|
175
191
|
/**
|
|
176
192
|
* Locale- and hour-cycle-aware formatter. Recomputed whenever `locale` or
|
|
177
193
|
* `hourCycle` change so segments always render with the current settings.
|
|
@@ -179,18 +195,21 @@ class RdxTimeFieldRootDirective {
|
|
|
179
195
|
*/
|
|
180
196
|
this.formatter = computed(() => createFormatter(this.locale(), {
|
|
181
197
|
hourCycle: normalizeHourCycle(this.hourCycle())
|
|
182
|
-
}),
|
|
198
|
+
}), /* @ts-ignore */
|
|
199
|
+
...(ngDevMode ? [{ debugName: "formatter" }] : /* istanbul ignore next */ []));
|
|
183
200
|
/**
|
|
184
201
|
* @ignore
|
|
185
202
|
*/
|
|
186
203
|
this.defaultDate = computed(() => getDefaultTime({
|
|
187
204
|
defaultPlaceholder: undefined,
|
|
188
205
|
defaultValue: this.value()
|
|
189
|
-
}),
|
|
206
|
+
}), /* @ts-ignore */
|
|
207
|
+
...(ngDevMode ? [{ debugName: "defaultDate" }] : /* istanbul ignore next */ []));
|
|
190
208
|
/**
|
|
191
209
|
* The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view
|
|
192
210
|
*/
|
|
193
|
-
this.placeholder = model(this.defaultDate().copy(),
|
|
211
|
+
this.placeholder = model(this.defaultDate().copy(), /* @ts-ignore */
|
|
212
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
194
213
|
// Internal state
|
|
195
214
|
/**
|
|
196
215
|
* Segment input parts, collected from the projected content in DOM order. This
|
|
@@ -198,24 +217,30 @@ class RdxTimeFieldRootDirective {
|
|
|
198
217
|
* add or remove segments) instead of being captured once after view init.
|
|
199
218
|
* @ignore
|
|
200
219
|
*/
|
|
201
|
-
this.segmentInputs = contentChildren(RdxTimeFieldInputDirective,
|
|
220
|
+
this.segmentInputs = contentChildren(RdxTimeFieldInputDirective, /* @ts-ignore */
|
|
221
|
+
...(ngDevMode ? [{ debugName: "segmentInputs" }] : /* istanbul ignore next */ []));
|
|
202
222
|
/**
|
|
203
223
|
* The focusable (non-literal) segment elements, in DOM order.
|
|
204
224
|
* @ignore
|
|
205
225
|
*/
|
|
206
226
|
this.segmentElements = computed(() => this.segmentInputs()
|
|
207
227
|
.filter((seg) => seg.part() !== 'literal')
|
|
208
|
-
.map((seg) => seg.element),
|
|
228
|
+
.map((seg) => seg.element), /* @ts-ignore */
|
|
229
|
+
...(ngDevMode ? [{ debugName: "segmentElements" }] : /* istanbul ignore next */ []));
|
|
209
230
|
/**
|
|
210
231
|
* @ignore
|
|
211
232
|
*/
|
|
212
|
-
this.currentFocusedElement = signal(null,
|
|
233
|
+
this.currentFocusedElement = signal(null, /* @ts-ignore */
|
|
234
|
+
...(ngDevMode ? [{ debugName: "currentFocusedElement" }] : /* istanbul ignore next */ []));
|
|
213
235
|
/**
|
|
214
236
|
* @ignore
|
|
215
237
|
*/
|
|
216
|
-
this.inferredGranularity = computed(() => this.granularity() ?? 'minute',
|
|
217
|
-
|
|
218
|
-
this.
|
|
238
|
+
this.inferredGranularity = computed(() => this.granularity() ?? 'minute', /* @ts-ignore */
|
|
239
|
+
...(ngDevMode ? [{ debugName: "inferredGranularity" }] : /* istanbul ignore next */ []));
|
|
240
|
+
this.convertedMinValue = computed(() => (this.minValue() ? convertValue(this.minValue()) : undefined), /* @ts-ignore */
|
|
241
|
+
...(ngDevMode ? [{ debugName: "convertedMinValue" }] : /* istanbul ignore next */ []));
|
|
242
|
+
this.convertedMaxValue = computed(() => (this.maxValue() ? convertValue(this.maxValue()) : undefined), /* @ts-ignore */
|
|
243
|
+
...(ngDevMode ? [{ debugName: "convertedMaxValue" }] : /* istanbul ignore next */ []));
|
|
219
244
|
this.convertedModelValue = linkedSignal({ ...(ngDevMode ? { debugName: "convertedModelValue" } : /* istanbul ignore next */ {}), source: () => {
|
|
220
245
|
if (isNullish(this.value()))
|
|
221
246
|
return this.value();
|
|
@@ -258,7 +283,8 @@ class RdxTimeFieldRootDirective {
|
|
|
258
283
|
isBefore(this.convertedMaxValue(), this.convertedModelValue()))
|
|
259
284
|
return true;
|
|
260
285
|
return false;
|
|
261
|
-
},
|
|
286
|
+
}, /* @ts-ignore */
|
|
287
|
+
...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
|
|
262
288
|
/**
|
|
263
289
|
* @ignore
|
|
264
290
|
*/
|
|
@@ -271,15 +297,18 @@ class RdxTimeFieldRootDirective {
|
|
|
271
297
|
segmentValues: this.segmentValues(),
|
|
272
298
|
locale: this.locale,
|
|
273
299
|
isTimeValue: true
|
|
274
|
-
}),
|
|
300
|
+
}), /* @ts-ignore */
|
|
301
|
+
...(ngDevMode ? [{ debugName: "allSegmentContent" }] : /* istanbul ignore next */ []));
|
|
275
302
|
/**
|
|
276
303
|
* An array of segments that should be readonly, which prevent user input on them.
|
|
277
304
|
*/
|
|
278
|
-
this.segmentContents = computed(() => this.allSegmentContent().arr,
|
|
305
|
+
this.segmentContents = computed(() => this.allSegmentContent().arr, /* @ts-ignore */
|
|
306
|
+
...(ngDevMode ? [{ debugName: "segmentContents" }] : /* istanbul ignore next */ []));
|
|
279
307
|
/**
|
|
280
308
|
* @ignore
|
|
281
309
|
*/
|
|
282
|
-
this.currentSegmentIndex = computed(() => this.segmentElements().findIndex((el) => el === this.currentFocusedElement()),
|
|
310
|
+
this.currentSegmentIndex = computed(() => this.segmentElements().findIndex((el) => el === this.currentFocusedElement()), /* @ts-ignore */
|
|
311
|
+
...(ngDevMode ? [{ debugName: "currentSegmentIndex" }] : /* istanbul ignore next */ []));
|
|
283
312
|
/**
|
|
284
313
|
* @ignore
|
|
285
314
|
*/
|
|
@@ -291,7 +320,8 @@ class RdxTimeFieldRootDirective {
|
|
|
291
320
|
if (prevCondition)
|
|
292
321
|
return null;
|
|
293
322
|
return elements[index - sign];
|
|
294
|
-
},
|
|
323
|
+
}, /* @ts-ignore */
|
|
324
|
+
...(ngDevMode ? [{ debugName: "prevFocusableSegment" }] : /* istanbul ignore next */ []));
|
|
295
325
|
/**
|
|
296
326
|
* @ignore
|
|
297
327
|
*/
|
|
@@ -303,7 +333,8 @@ class RdxTimeFieldRootDirective {
|
|
|
303
333
|
if (nextCondition)
|
|
304
334
|
return null;
|
|
305
335
|
return elements[index + sign];
|
|
306
|
-
},
|
|
336
|
+
}, /* @ts-ignore */
|
|
337
|
+
...(ngDevMode ? [{ debugName: "nextFocusableSegment" }] : /* istanbul ignore next */ []));
|
|
307
338
|
/**
|
|
308
339
|
* @ignore
|
|
309
340
|
*/
|
|
@@ -348,10 +379,10 @@ class RdxTimeFieldRootDirective {
|
|
|
348
379
|
setFocusedElement(el) {
|
|
349
380
|
this.currentFocusedElement.set(el);
|
|
350
381
|
}
|
|
351
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
352
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
382
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
383
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.2", type: RdxTimeFieldRootDirective, isStandalone: true, selector: "[rdxTimeFieldRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, hourCycle: { classPropertyName: "hourCycle", publicName: "hourCycle", isSignal: true, isRequired: false, transformFunction: null }, granularity: { classPropertyName: "granularity", publicName: "granularity", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, minValue: { classPropertyName: "minValue", publicName: "minValue", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: "maxValue", publicName: "maxValue", isSignal: true, isRequired: false, transformFunction: null }, hideTimeZone: { classPropertyName: "hideTimeZone", publicName: "hideTimeZone", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", placeholder: "placeholderChange" }, host: { attributes: { "role": "group" }, listeners: { "keydown": "onKeydown($event)" }, properties: { "attr.aria-disabled": "disabled() ? \"\" : undefined", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-readonly": "readonly() ? \"\" : undefined", "attr.data-invalid": "isInvalid() ? \"\" : undefined", "attr.dir": "dir()" } }, providers: [provideToken(TIME_FIELDS_ROOT_CONTEXT, RdxTimeFieldRootDirective)], queries: [{ propertyName: "segmentInputs", predicate: RdxTimeFieldInputDirective, isSignal: true }], exportAs: ["rdxTimeFieldRoot"], ngImport: i0 }); }
|
|
353
384
|
}
|
|
354
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
385
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldRootDirective, decorators: [{
|
|
355
386
|
type: Directive,
|
|
356
387
|
args: [{
|
|
357
388
|
selector: '[rdxTimeFieldRoot]',
|
|
@@ -371,11 +402,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
371
402
|
|
|
372
403
|
const _imports = [RdxTimeFieldRootDirective, RdxTimeFieldInputDirective];
|
|
373
404
|
class RdxTimeFieldModule {
|
|
374
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
375
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
376
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
405
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
406
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldModule, imports: [RdxTimeFieldRootDirective, RdxTimeFieldInputDirective], exports: [RdxTimeFieldRootDirective, RdxTimeFieldInputDirective] }); }
|
|
407
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldModule }); }
|
|
377
408
|
}
|
|
378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxTimeFieldModule, decorators: [{
|
|
379
410
|
type: NgModule,
|
|
380
411
|
args: [{
|
|
381
412
|
imports: [..._imports],
|