@radix-ng/primitives 0.39.5 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/core/src/date-time/formatter.d.ts +1 -1
  2. package/core/src/date-time/types.d.ts +13 -0
  3. package/core/src/date-time/useDateField.d.ts +4 -3
  4. package/core/src/date-time/utils.d.ts +4 -1
  5. package/date-field/src/date-field-context.token.d.ts +2 -1
  6. package/date-field/src/date-field-root.directive.d.ts +7 -2
  7. package/dismissible-layer/README.md +1 -0
  8. package/dismissible-layer/index.d.ts +1 -0
  9. package/dismissible-layer/src/utils.d.ts +38 -0
  10. package/editable/README.md +1 -0
  11. package/editable/index.d.ts +1 -0
  12. package/editable/src/editable-root.d.ts +67 -0
  13. package/fesm2022/radix-ng-primitives-core.mjs +88 -46
  14. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-date-field.mjs +11 -3
  16. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-dismissible-layer.mjs +211 -0
  18. package/fesm2022/radix-ng-primitives-dismissible-layer.mjs.map +1 -0
  19. package/fesm2022/radix-ng-primitives-editable.mjs +118 -0
  20. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -0
  21. package/fesm2022/radix-ng-primitives-number-field.mjs +7 -7
  22. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-time-field.mjs +12 -4
  24. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  25. package/hover-card/src/hover-card-root.directive.d.ts +4 -4
  26. package/package.json +11 -3
  27. package/popover/src/popover-root.directive.d.ts +4 -4
  28. package/time-field/src/time-field-context.token.d.ts +2 -1
  29. package/time-field/src/time-field-root.directive.d.ts +7 -2
  30. package/tooltip/src/tooltip-root.directive.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-number-field.mjs","sources":["../../../packages/primitives/number-field/src/number-field-context.token.ts","../../../packages/primitives/number-field/src/utils.ts","../../../packages/primitives/number-field/src/number-field-decrement.directive.ts","../../../packages/primitives/number-field/src/number-field-increment.directive.ts","../../../packages/primitives/number-field/src/number-field-input.directive.ts","../../../packages/primitives/number-field/src/number-field-root.directive.ts","../../../packages/primitives/number-field/index.ts","../../../packages/primitives/number-field/radix-ng-primitives-number-field.ts"],"sourcesContent":["import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { inject, InjectionToken, InputSignal, InputSignalWithTransform, ModelSignal, Signal } from '@angular/core';\nimport { InputMode } from './types';\n\nexport interface NumberFieldContextToken {\n value: ModelSignal<number | undefined>;\n locale: InputSignal<string>;\n inputMode: Signal<InputMode>;\n textValue: Signal<any>;\n max: InputSignalWithTransform<number | undefined, NumberInput>;\n min: InputSignalWithTransform<number | undefined, NumberInput>;\n onInputElement: (el: HTMLInputElement) => void;\n disabled: InputSignalWithTransform<boolean, BooleanInput>;\n disableWheelChange: InputSignalWithTransform<boolean, BooleanInput>;\n handleIncrease: (multiplier?: number) => void;\n handleDecrease: (multiplier?: number) => void;\n applyInputValue: (val: string) => void;\n validate: (val: string) => boolean;\n setInputValue: (val: string) => void;\n isIncreaseDisabled: Signal<boolean>;\n isDecreaseDisabled: Signal<boolean>;\n handleMinMaxValue: (type: 'min' | 'max') => void;\n}\n\nexport const NUMBER_FIELD_ROOT_CONTEXT = new InjectionToken<NumberFieldContextToken>('NUMBER_FIELD_ROOT_CONTEXT');\n\nexport function injectNumberFieldRootContext(): NumberFieldContextToken {\n return inject(NUMBER_FIELD_ROOT_CONTEXT);\n}\n","import { computed, DestroyRef, effect, inject, Injectable, signal, Signal } from '@angular/core';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Injectable()\nexport class PressedHoldService {\n private readonly destroyRef = inject(DestroyRef);\n\n create(options: { target?: Signal<HTMLElement | undefined>; disabled: Signal<boolean> }) {\n const timeout = signal<number | undefined>(undefined);\n const triggerHook = new Subject<void>();\n const isPressed = signal(false);\n\n const resetTimeout = () => {\n const timer = timeout();\n if (timer !== undefined) {\n window.clearTimeout(timer);\n timeout.set(undefined);\n }\n };\n\n const onIncrementPressStart = (delay: number) => {\n resetTimeout();\n if (options.disabled()) return;\n\n triggerHook.next();\n\n timeout.set(\n window.setTimeout(() => {\n onIncrementPressStart(60);\n }, delay)\n );\n };\n\n const onPressStart = (event: PointerEvent) => {\n if (event.button !== 0 || isPressed()) return;\n event.preventDefault();\n isPressed.set(true);\n onIncrementPressStart(400);\n };\n\n const onPressRelease = () => {\n isPressed.set(false);\n resetTimeout();\n };\n\n effect(() => {\n // Skip SSR environments\n if (typeof window === 'undefined') return;\n\n const targetElement = options.target?.() || window;\n const destroy$ = new Subject<void>();\n\n const pointerDownSub = fromEvent(targetElement, 'pointerdown')\n .pipe(takeUntil(destroy$))\n .subscribe((e) => onPressStart(e as PointerEvent));\n\n const pointerUpSub = fromEvent(window, 'pointerup').pipe(takeUntil(destroy$)).subscribe(onPressRelease);\n\n const pointerCancelSub = fromEvent(window, 'pointercancel')\n .pipe(takeUntil(destroy$))\n .subscribe(onPressRelease);\n\n this.destroyRef.onDestroy(() => {\n destroy$.next();\n destroy$.complete();\n pointerDownSub.unsubscribe();\n pointerUpSub.unsubscribe();\n pointerCancelSub.unsubscribe();\n });\n });\n\n return {\n isPressed: isPressed.asReadonly(),\n onTrigger: (fn: () => void) => {\n const sub = triggerHook.subscribe(fn);\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n };\n }\n}\n\nexport function useNumberFormatter(\n locale: Signal<string>,\n options: Signal<Intl.NumberFormatOptions | undefined> = signal({})\n): Signal<NumberFormatter> {\n return computed(() => new NumberFormatter(locale(), options()));\n}\n\nexport function useNumberParser(\n locale: Signal<string>,\n options: Signal<Intl.NumberFormatOptions | undefined> = signal({})\n): Signal<NumberParser> {\n return computed(() => new NumberParser(locale(), options()));\n}\n\nexport function handleDecimalOperation(operator: '-' | '+', value1: number, value2: number): number {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength = (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength = (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = 10 ** Math.max(value1DecimalLength, value2DecimalLength);\n\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n\n return result;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, OnInit, signal } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport { PressedHoldService } from './utils';\n\n@Directive({\n selector: 'button[rdxNumberFieldDecrement]',\n providers: [PressedHoldService],\n host: {\n tabindex: '-1',\n type: '\"button\"',\n '[attr.aria-label]': '\"Decrease\"',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'useHold.isPressed() ? \"true\" : undefined',\n\n '[style.user-select]': 'useHold.isPressed() ? \"none\" : null',\n\n '(contextmenu)': '$event.preventDefault()'\n }\n})\nexport class RdxNumberFieldDecrementDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly pressedHold = inject(PressedHoldService);\n\n protected readonly rootContext = injectNumberFieldRootContext();\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n readonly isDisabled = computed(\n () => this.rootContext.disabled() || this.disabled() || this.rootContext.isDecreaseDisabled()\n );\n\n /**\n * @ignore\n */\n readonly useHold = this.pressedHold.create({\n target: signal(this.elementRef.nativeElement),\n disabled: this.disabled\n });\n\n ngOnInit() {\n this.useHold.onTrigger(() => this.rootContext.handleDecrease());\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, OnInit, signal } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport { PressedHoldService } from './utils';\n\n@Directive({\n selector: 'button[rdxNumberFieldIncrement]',\n providers: [PressedHoldService],\n host: {\n tabindex: '-1',\n type: '\"button\"',\n '[attr.aria-label]': '\"Increase\"',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'useHold.isPressed() ? \"true\" : undefined',\n\n '[style.user-select]': 'useHold.isPressed() ? \"none\" : null',\n\n '(contextmenu)': '$event.preventDefault()'\n }\n})\nexport class RdxNumberFieldIncrementDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly pressedHold = inject(PressedHoldService);\n\n protected readonly rootContext = injectNumberFieldRootContext();\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n readonly isDisabled = computed(\n () => this.rootContext.disabled() || this.disabled() || this.rootContext.isIncreaseDisabled()\n );\n\n /**\n * @ignore\n */\n readonly useHold = this.pressedHold.create({\n target: signal(this.elementRef.nativeElement),\n disabled: this.disabled\n });\n\n ngOnInit() {\n this.useHold.onTrigger(() => this.rootContext.handleIncrease());\n }\n}\n","import { Directive, effect, ElementRef, inject, OnInit, signal } from '@angular/core';\nimport { getActiveElement } from '@radix-ng/primitives/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\n\n@Directive({\n selector: 'input[rdxNumberFieldInput]',\n host: {\n role: 'spinbutton',\n type: 'text',\n tabindex: '0',\n autocomplete: 'off',\n autocorrect: 'off',\n spellcheck: 'false',\n 'aria-roledescription': 'Number field',\n\n '[attr.aria-valuenow]': 'rootContext.value()',\n '[attr.aria-valuemin]': 'rootContext.min()',\n '[attr.aria-valuemax]': 'rootContext.max()',\n '[attr.inputmode]': 'rootContext.inputMode()',\n '[attr.disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.value]': 'inputValue()',\n\n '(change)': 'onChange()',\n '(input)': 'onInput($event)',\n '(blur)': 'onKeydownEnter($event)',\n '(beforeinput)': 'onBeforeInput($event)',\n '(keydown.enter)': 'onKeydownEnter($event)',\n '(keydown.arrowUp)': 'onKeydownUp($event)',\n '(keydown.arrowDown)': 'onKeydownDown($event)',\n '(keydown.home)': 'onKeydownHome($event)',\n '(keydown.end)': 'onKeydownEnd($event)',\n '(keydown.pageUp)': 'onKeydownPageUp($event)',\n '(keydown.pageDown)': 'onKeydownPageDown($event)',\n '(wheel)': 'onWheelEvent($event)'\n }\n})\nexport class RdxNumberFieldInputDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n protected readonly rootContext = injectNumberFieldRootContext();\n\n readonly inputValue = signal(this.rootContext.textValue());\n\n constructor() {\n effect(() => {\n this.inputValue.set(this.rootContext.textValue());\n this.rootContext.setInputValue(this.inputValue());\n });\n }\n\n ngOnInit() {\n this.rootContext.onInputElement(this.elementRef.nativeElement as HTMLInputElement);\n }\n\n onBeforeInput(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n const nextValue =\n target.value.slice(0, target.selectionStart ?? undefined) +\n (event.data ?? '') +\n target.value.slice(target.selectionEnd ?? undefined);\n\n if (!this.rootContext.validate(nextValue)) {\n event.preventDefault();\n }\n }\n\n onWheelEvent(event: WheelEvent) {\n if (this.rootContext.disableWheelChange()) {\n return;\n }\n\n // only handle when in focus\n if (event.target !== getActiveElement()) return;\n\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) {\n return;\n }\n\n event.preventDefault();\n if (event.deltaY > 0) {\n this.rootContext.handleIncrease();\n } else if (event.deltaY < 0) {\n this.rootContext.handleDecrease();\n }\n }\n\n onKeydownPageUp(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleIncrease(10);\n }\n\n onKeydownPageDown(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleDecrease(10);\n }\n\n onKeydownHome(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleMinMaxValue('min');\n }\n\n onKeydownEnd(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleMinMaxValue('max');\n }\n\n onInput(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n this.rootContext.applyInputValue(target.value);\n }\n\n onChange() {\n this.inputValue.set(this.rootContext.textValue());\n }\n\n onKeydownEnter(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n this.rootContext.applyInputValue(target.value);\n }\n\n onKeydownUp(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleIncrease();\n }\n\n onKeydownDown(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleDecrease();\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, input, model, numberAttribute, OnInit, signal } from '@angular/core';\nimport { clamp, provideToken, snapValueToStep } from '@radix-ng/primitives/core';\nimport { NUMBER_FIELD_ROOT_CONTEXT, NumberFieldContextToken } from './number-field-context.token';\nimport { InputMode } from './types';\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils';\n\n@Directive({\n selector: '[rdxNumberFieldRoot]',\n exportAs: 'rdxNumberFieldRoot',\n providers: [provideToken(NUMBER_FIELD_ROOT_CONTEXT, RdxNumberFieldRootDirective)],\n host: {\n role: 'group',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxNumberFieldRootDirective implements OnInit, NumberFieldContextToken {\n readonly value = model<number>();\n\n readonly min = input<number | undefined, NumberInput>(undefined, { transform: numberAttribute });\n\n readonly max = input<number | undefined, NumberInput>(undefined, { transform: numberAttribute });\n\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n readonly stepSnapping = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly disableWheelChange = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly locale = input<string>('en');\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly formatOptions = input<Intl.NumberFormatOptions>();\n\n /**\n * @ignore\n */\n readonly inputEl = signal<HTMLInputElement | undefined>(undefined);\n\n /**\n * @ignore\n */\n readonly isDecreaseDisabled = computed(\n () =>\n this.clampInputValue(this.value()!) === this.min() ||\n (this.min() && !isNaN(this.value()!)\n ? handleDecimalOperation('-', this.value()!, this.step()) < this.min()!\n : false)\n );\n\n /**\n * @ignore\n */\n readonly isIncreaseDisabled = computed(\n () =>\n this.clampInputValue(this.value()!) === this.max() ||\n (this.max() && !isNaN(this.value()!)\n ? handleDecimalOperation('+', this.value()!, this.step()) > this.max()!\n : false)\n );\n\n /**\n * @ignore\n */\n readonly inputMode = computed<InputMode>(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = this.numberFormatter().resolvedOptions().maximumFractionDigits! > 0;\n\n return hasDecimals ? 'decimal' : 'numeric';\n });\n\n /**\n * Replace negative textValue formatted using currencySign: 'accounting'\n * with a textValue that can be announced using a minus sign.\n * @ignore\n */\n readonly textValue = computed(() => (isNaN(this.value()!) ? '' : this.textValueFormatter().format(this.value())));\n\n /**\n * @ignore\n */\n readonly onInputElement = (el: HTMLInputElement) => this.inputEl.set(el);\n\n /**\n * @ignore\n */\n numberParser: any;\n /**\n * @ignore\n */\n numberFormatter: any;\n /**\n * @ignore\n */\n textValueFormatter: any;\n\n /**\n * @ignore\n */\n clampInputValue(val: number) {\n // Clamp to min and max, round to the nearest step, and round to the specified number of digits\n let clampedValue: number;\n if (this.step() === undefined || isNaN(this.step()) || !this.stepSnapping()) {\n clampedValue = clamp(val, this.min(), this.max());\n } else {\n clampedValue = snapValueToStep(val, this.min(), this.max(), this.step());\n }\n\n clampedValue = this.numberParser().parse(this.numberFormatter().format(clampedValue));\n return clampedValue;\n }\n\n ngOnInit() {\n this.numberParser = useNumberParser(this.locale, this.formatOptions);\n this.numberFormatter = useNumberFormatter(this.locale, this.formatOptions);\n this.textValueFormatter = useNumberFormatter(this.locale, this.formatOptions);\n }\n\n /**\n * @ignore\n */\n handleMinMaxValue(type: 'min' | 'max') {\n if (type === 'min' && this.min() !== undefined) {\n this.value.set(this.clampInputValue(this.min()!));\n } else if (type === 'max' && this.max() !== undefined) {\n this.value.set(this.clampInputValue(this.max()!));\n }\n }\n\n /**\n * @ignore\n */\n handleDecrease(multiplier = 1) {\n this.handleChangingValue('decrease', multiplier);\n }\n\n /**\n * @ignore\n */\n handleIncrease(multiplier = 1) {\n this.handleChangingValue('increase', multiplier);\n }\n\n /**\n * @ignore\n */\n applyInputValue(val: string) {\n const parsedValue = this.numberParser().parse(val);\n\n this.value.set(this.clampInputValue(parsedValue));\n\n // Set to empty state if input value is empty\n if (!val.length) {\n return this.setInputValue(val);\n }\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue)) {\n return this.setInputValue(this.textValue());\n }\n\n return this.setInputValue(this.textValue());\n }\n\n /**\n * @ignore\n */\n setInputValue(val: string) {\n if (this.inputEl()) {\n this.inputEl.update((el) => {\n if (el) el.value = val;\n return el;\n });\n }\n }\n\n /**\n * @ignore\n */\n validate(val: string) {\n return this.numberParser().isValidPartialNumber(val, this.min(), this.max());\n }\n\n private handleChangingValue(type: 'increase' | 'decrease', multiplier = 1) {\n this.inputEl()?.focus();\n const currentInputValue = this.numberParser().parse(this.inputEl()?.value ?? '');\n\n if (this.disabled()) {\n return;\n }\n\n if (isNaN(currentInputValue)) {\n this.value.set(this.min() ?? 0);\n } else {\n if (type === 'increase') {\n this.value.set(this.clampInputValue(currentInputValue + (this.step() ?? 1) * multiplier));\n } else {\n this.value.set(this.clampInputValue(currentInputValue - (this.step() ?? 1) * multiplier));\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxNumberFieldDecrementDirective } from './src/number-field-decrement.directive';\nimport { RdxNumberFieldIncrementDirective } from './src/number-field-increment.directive';\nimport { RdxNumberFieldInputDirective } from './src/number-field-input.directive';\nimport { RdxNumberFieldRootDirective } from './src/number-field-root.directive';\n\nexport * from './src/number-field-context.token';\nexport * from './src/number-field-decrement.directive';\nexport * from './src/number-field-increment.directive';\nexport * from './src/number-field-input.directive';\nexport * from './src/number-field-root.directive';\nexport * from './src/types';\nexport * from './src/utils';\n\nconst _imports = [\n RdxNumberFieldRootDirective,\n RdxNumberFieldInputDirective,\n RdxNumberFieldIncrementDirective,\n RdxNumberFieldDecrementDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxNumberFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-number-field.mjs","sources":["../../../packages/primitives/number-field/src/number-field-context.token.ts","../../../packages/primitives/number-field/src/utils.ts","../../../packages/primitives/number-field/src/number-field-decrement.directive.ts","../../../packages/primitives/number-field/src/number-field-increment.directive.ts","../../../packages/primitives/number-field/src/number-field-input.directive.ts","../../../packages/primitives/number-field/src/number-field-root.directive.ts","../../../packages/primitives/number-field/index.ts","../../../packages/primitives/number-field/radix-ng-primitives-number-field.ts"],"sourcesContent":["import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { inject, InjectionToken, InputSignal, InputSignalWithTransform, ModelSignal, Signal } from '@angular/core';\nimport { InputMode } from './types';\n\nexport interface NumberFieldContextToken {\n value: ModelSignal<number | undefined>;\n locale: InputSignal<string>;\n inputMode: Signal<InputMode>;\n textValue: Signal<any>;\n max: InputSignalWithTransform<number | undefined, NumberInput>;\n min: InputSignalWithTransform<number | undefined, NumberInput>;\n onInputElement: (el: HTMLInputElement) => void;\n disabled: InputSignalWithTransform<boolean, BooleanInput>;\n disableWheelChange: InputSignalWithTransform<boolean, BooleanInput>;\n handleIncrease: (multiplier?: number) => void;\n handleDecrease: (multiplier?: number) => void;\n applyInputValue: (val: string) => void;\n validate: (val: string) => boolean;\n setInputValue: (val: string) => void;\n isIncreaseDisabled: Signal<boolean>;\n isDecreaseDisabled: Signal<boolean>;\n handleMinMaxValue: (type: 'min' | 'max') => void;\n}\n\nexport const NUMBER_FIELD_ROOT_CONTEXT = new InjectionToken<NumberFieldContextToken>('NUMBER_FIELD_ROOT_CONTEXT');\n\nexport function injectNumberFieldRootContext(): NumberFieldContextToken {\n return inject(NUMBER_FIELD_ROOT_CONTEXT);\n}\n","import { computed, DestroyRef, effect, inject, Injectable, signal, Signal } from '@angular/core';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Injectable()\nexport class PressedHoldService {\n private readonly destroyRef = inject(DestroyRef);\n\n create(options: { target?: Signal<HTMLElement | undefined>; disabled: Signal<boolean> }) {\n const timeout = signal<number | undefined>(undefined);\n const triggerHook = new Subject<void>();\n const isPressed = signal(false);\n\n const resetTimeout = () => {\n const timer = timeout();\n if (timer !== undefined) {\n window.clearTimeout(timer);\n timeout.set(undefined);\n }\n };\n\n const onIncrementPressStart = (delay: number) => {\n resetTimeout();\n if (options.disabled()) return;\n\n triggerHook.next();\n\n timeout.set(\n window.setTimeout(() => {\n onIncrementPressStart(60);\n }, delay)\n );\n };\n\n const onPressStart = (event: PointerEvent) => {\n if (event.button !== 0 || isPressed()) return;\n event.preventDefault();\n isPressed.set(true);\n onIncrementPressStart(400);\n };\n\n const onPressRelease = () => {\n isPressed.set(false);\n resetTimeout();\n };\n\n effect(() => {\n // Skip SSR environments\n if (typeof window === 'undefined') return;\n\n const targetElement = options.target?.() || window;\n const destroy$ = new Subject<void>();\n\n const pointerDownSub = fromEvent(targetElement, 'pointerdown')\n .pipe(takeUntil(destroy$))\n .subscribe((e) => onPressStart(e as PointerEvent));\n\n const pointerUpSub = fromEvent(window, 'pointerup').pipe(takeUntil(destroy$)).subscribe(onPressRelease);\n\n const pointerCancelSub = fromEvent(window, 'pointercancel')\n .pipe(takeUntil(destroy$))\n .subscribe(onPressRelease);\n\n this.destroyRef.onDestroy(() => {\n destroy$.next();\n destroy$.complete();\n pointerDownSub.unsubscribe();\n pointerUpSub.unsubscribe();\n pointerCancelSub.unsubscribe();\n });\n });\n\n return {\n isPressed: isPressed.asReadonly(),\n onTrigger: (fn: () => void) => {\n const sub = triggerHook.subscribe(fn);\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n };\n }\n}\n\nexport function useNumberFormatter(\n locale: Signal<string>,\n options: Signal<Intl.NumberFormatOptions | undefined> = signal({})\n): Signal<NumberFormatter> {\n return computed(() => new NumberFormatter(locale(), options()));\n}\n\nexport function useNumberParser(\n locale: Signal<string>,\n options: Signal<Intl.NumberFormatOptions | undefined> = signal({})\n): Signal<NumberParser> {\n return computed(() => new NumberParser(locale(), options()));\n}\n\nexport function handleDecimalOperation(operator: '-' | '+', value1: number, value2: number): number {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength = (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength = (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = 10 ** Math.max(value1DecimalLength, value2DecimalLength);\n\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n\n return result;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, OnInit, signal } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport { PressedHoldService } from './utils';\n\n@Directive({\n selector: 'button[rdxNumberFieldDecrement]',\n providers: [PressedHoldService],\n host: {\n tabindex: '-1',\n type: '\"button\"',\n '[attr.aria-label]': '\"Decrease\"',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'useHold.isPressed() ? \"true\" : undefined',\n\n '[style.user-select]': 'useHold.isPressed() ? \"none\" : null',\n\n '(contextmenu)': '$event.preventDefault()'\n }\n})\nexport class RdxNumberFieldDecrementDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly pressedHold = inject(PressedHoldService);\n\n protected readonly rootContext = injectNumberFieldRootContext();\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n readonly isDisabled = computed(\n () => this.rootContext.disabled() || this.disabled() || this.rootContext.isDecreaseDisabled()\n );\n\n /**\n * @ignore\n */\n readonly useHold = this.pressedHold.create({\n target: signal(this.elementRef.nativeElement),\n disabled: this.disabled\n });\n\n ngOnInit() {\n this.useHold.onTrigger(() => this.rootContext.handleDecrease());\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, OnInit, signal } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport { PressedHoldService } from './utils';\n\n@Directive({\n selector: 'button[rdxNumberFieldIncrement]',\n providers: [PressedHoldService],\n host: {\n tabindex: '-1',\n type: '\"button\"',\n '[attr.aria-label]': '\"Increase\"',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'useHold.isPressed() ? \"true\" : undefined',\n\n '[style.user-select]': 'useHold.isPressed() ? \"none\" : null',\n\n '(contextmenu)': '$event.preventDefault()'\n }\n})\nexport class RdxNumberFieldIncrementDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly pressedHold = inject(PressedHoldService);\n\n protected readonly rootContext = injectNumberFieldRootContext();\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n readonly isDisabled = computed(\n () => this.rootContext.disabled() || this.disabled() || this.rootContext.isIncreaseDisabled()\n );\n\n /**\n * @ignore\n */\n readonly useHold = this.pressedHold.create({\n target: signal(this.elementRef.nativeElement),\n disabled: this.disabled\n });\n\n ngOnInit() {\n this.useHold.onTrigger(() => this.rootContext.handleIncrease());\n }\n}\n","import { Directive, effect, ElementRef, inject, OnInit, signal } from '@angular/core';\nimport { getActiveElement } from '@radix-ng/primitives/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\n\n@Directive({\n selector: 'input[rdxNumberFieldInput]',\n host: {\n role: 'spinbutton',\n type: 'text',\n tabindex: '0',\n autocomplete: 'off',\n autocorrect: 'off',\n spellcheck: 'false',\n 'aria-roledescription': 'Number field',\n\n '[attr.aria-valuenow]': 'rootContext.value()',\n '[attr.aria-valuemin]': 'rootContext.min()',\n '[attr.aria-valuemax]': 'rootContext.max()',\n '[attr.inputmode]': 'rootContext.inputMode()',\n '[attr.disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.value]': 'inputValue()',\n\n '(change)': 'onChange()',\n '(input)': 'onInput($event)',\n '(blur)': 'onKeydownEnter($event)',\n '(beforeinput)': 'onBeforeInput($event)',\n '(keydown.enter)': 'onKeydownEnter($event)',\n '(keydown.arrowUp)': 'onKeydownUp($event)',\n '(keydown.arrowDown)': 'onKeydownDown($event)',\n '(keydown.home)': 'onKeydownHome($event)',\n '(keydown.end)': 'onKeydownEnd($event)',\n '(keydown.pageUp)': 'onKeydownPageUp($event)',\n '(keydown.pageDown)': 'onKeydownPageDown($event)',\n '(wheel)': 'onWheelEvent($event)'\n }\n})\nexport class RdxNumberFieldInputDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n protected readonly rootContext = injectNumberFieldRootContext();\n\n readonly inputValue = signal(this.rootContext.textValue());\n\n constructor() {\n effect(() => {\n this.inputValue.set(this.rootContext.textValue());\n this.rootContext.setInputValue(this.inputValue());\n });\n }\n\n ngOnInit() {\n this.rootContext.onInputElement(this.elementRef.nativeElement as HTMLInputElement);\n }\n\n onBeforeInput(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n const nextValue =\n target.value.slice(0, target.selectionStart ?? undefined) +\n (event.data ?? '') +\n target.value.slice(target.selectionEnd ?? undefined);\n\n if (!this.rootContext.validate(nextValue)) {\n event.preventDefault();\n }\n }\n\n onWheelEvent(event: WheelEvent) {\n if (this.rootContext.disableWheelChange()) {\n return;\n }\n\n // only handle when in focus\n if (event.target !== getActiveElement()) return;\n\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) {\n return;\n }\n\n event.preventDefault();\n if (event.deltaY > 0) {\n this.rootContext.handleIncrease();\n } else if (event.deltaY < 0) {\n this.rootContext.handleDecrease();\n }\n }\n\n onKeydownPageUp(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleIncrease(10);\n }\n\n onKeydownPageDown(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleDecrease(10);\n }\n\n onKeydownHome(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleMinMaxValue('min');\n }\n\n onKeydownEnd(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleMinMaxValue('max');\n }\n\n onInput(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n this.rootContext.applyInputValue(target.value);\n }\n\n onChange() {\n this.inputValue.set(this.rootContext.textValue());\n }\n\n onKeydownEnter(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n this.rootContext.applyInputValue(target.value);\n }\n\n onKeydownUp(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleIncrease();\n }\n\n onKeydownDown(event: KeyboardEvent) {\n event.preventDefault();\n this.rootContext.handleDecrease();\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, input, model, numberAttribute, OnInit, signal } from '@angular/core';\nimport { clamp, isNullish, provideToken, snapValueToStep } from '@radix-ng/primitives/core';\nimport { NUMBER_FIELD_ROOT_CONTEXT, NumberFieldContextToken } from './number-field-context.token';\nimport { InputMode } from './types';\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils';\n\n@Directive({\n selector: '[rdxNumberFieldRoot]',\n exportAs: 'rdxNumberFieldRoot',\n providers: [provideToken(NUMBER_FIELD_ROOT_CONTEXT, RdxNumberFieldRootDirective)],\n host: {\n role: 'group',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxNumberFieldRootDirective implements OnInit, NumberFieldContextToken {\n readonly value = model<number>();\n\n readonly min = input<number | undefined, NumberInput>(undefined, { transform: numberAttribute });\n\n readonly max = input<number | undefined, NumberInput>(undefined, { transform: numberAttribute });\n\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n readonly stepSnapping = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly disableWheelChange = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly locale = input<string>('en');\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly formatOptions = input<Intl.NumberFormatOptions>();\n\n /**\n * @ignore\n */\n readonly inputEl = signal<HTMLInputElement | undefined>(undefined);\n\n /**\n * @ignore\n */\n readonly isDecreaseDisabled = computed(\n () =>\n !isNullish(this.value()!) &&\n (this.clampInputValue(this.value()!) === this.min() || (this.min() && !isNaN(this.value()!))\n ? handleDecimalOperation('-', this.value()!, this.step()) < this.min()!\n : false)\n );\n\n /**\n * @ignore\n */\n readonly isIncreaseDisabled = computed(\n () =>\n !isNullish(this.value()!) &&\n (this.clampInputValue(this.value()!) === this.max() || (this.min() && !isNaN(this.value()!))\n ? handleDecimalOperation('+', this.value()!, this.step()) > this.max()!\n : false)\n );\n\n /**\n * @ignore\n */\n readonly inputMode = computed<InputMode>(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = this.numberFormatter().resolvedOptions().maximumFractionDigits! > 0;\n\n return hasDecimals ? 'decimal' : 'numeric';\n });\n\n /**\n * Replace negative textValue formatted using currencySign: 'accounting'\n * with a textValue that can be announced using a minus sign.\n * @ignore\n */\n readonly textValue = computed(() =>\n isNullish(this.value()!) || isNaN(this.value()!) ? '' : this.textValueFormatter().format(this.value())\n );\n\n /**\n * @ignore\n */\n readonly onInputElement = (el: HTMLInputElement) => this.inputEl.set(el);\n\n /**\n * @ignore\n */\n numberParser: any;\n /**\n * @ignore\n */\n numberFormatter: any;\n /**\n * @ignore\n */\n textValueFormatter: any;\n\n /**\n * @ignore\n */\n clampInputValue(val: number) {\n // Clamp to min and max, round to the nearest step, and round to the specified number of digits\n let clampedValue: number;\n if (this.step() === undefined || isNaN(this.step()) || !this.stepSnapping()) {\n clampedValue = clamp(val, this.min(), this.max());\n } else {\n clampedValue = snapValueToStep(val, this.min(), this.max(), this.step());\n }\n\n clampedValue = this.numberParser().parse(this.numberFormatter().format(clampedValue));\n return clampedValue;\n }\n\n ngOnInit() {\n this.numberParser = useNumberParser(this.locale, this.formatOptions);\n this.numberFormatter = useNumberFormatter(this.locale, this.formatOptions);\n this.textValueFormatter = useNumberFormatter(this.locale, this.formatOptions);\n }\n\n /**\n * @ignore\n */\n handleMinMaxValue(type: 'min' | 'max') {\n if (type === 'min' && this.min() !== undefined) {\n this.value.set(this.clampInputValue(this.min()!));\n } else if (type === 'max' && this.max() !== undefined) {\n this.value.set(this.clampInputValue(this.max()!));\n }\n }\n\n /**\n * @ignore\n */\n handleDecrease(multiplier = 1) {\n this.handleChangingValue('decrease', multiplier);\n }\n\n /**\n * @ignore\n */\n handleIncrease(multiplier = 1) {\n this.handleChangingValue('increase', multiplier);\n }\n\n /**\n * @ignore\n */\n applyInputValue(val: string) {\n const parsedValue = this.numberParser().parse(val);\n\n this.value.set(isNaN(parsedValue) ? undefined : this.clampInputValue(parsedValue));\n\n // Set to empty state if input value is empty\n if (!val.length) {\n return this.setInputValue(val);\n }\n\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue)) {\n return this.setInputValue(this.textValue());\n }\n\n return this.setInputValue(this.textValue());\n }\n\n /**\n * @ignore\n */\n setInputValue(val: string) {\n if (this.inputEl()) {\n this.inputEl.update((el) => {\n if (el) el.value = val;\n return el;\n });\n }\n }\n\n /**\n * @ignore\n */\n validate(val: string) {\n return this.numberParser().isValidPartialNumber(val, this.min(), this.max());\n }\n\n private handleChangingValue(type: 'increase' | 'decrease', multiplier = 1) {\n this.inputEl()?.focus();\n const currentInputValue = this.numberParser().parse(this.inputEl()?.value ?? '');\n\n if (this.disabled()) {\n return;\n }\n\n if (isNaN(currentInputValue)) {\n this.value.set(this.min() ?? 0);\n } else {\n if (type === 'increase') {\n this.value.set(this.clampInputValue(currentInputValue + (this.step() ?? 1) * multiplier));\n } else {\n this.value.set(this.clampInputValue(currentInputValue - (this.step() ?? 1) * multiplier));\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxNumberFieldDecrementDirective } from './src/number-field-decrement.directive';\nimport { RdxNumberFieldIncrementDirective } from './src/number-field-increment.directive';\nimport { RdxNumberFieldInputDirective } from './src/number-field-input.directive';\nimport { RdxNumberFieldRootDirective } from './src/number-field-root.directive';\n\nexport * from './src/number-field-context.token';\nexport * from './src/number-field-decrement.directive';\nexport * from './src/number-field-increment.directive';\nexport * from './src/number-field-input.directive';\nexport * from './src/number-field-root.directive';\nexport * from './src/types';\nexport * from './src/utils';\n\nconst _imports = [\n RdxNumberFieldRootDirective,\n RdxNumberFieldInputDirective,\n RdxNumberFieldIncrementDirective,\n RdxNumberFieldDecrementDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxNumberFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, input, computed, signal, effect, Directive, ElementRef, model, booleanAttribute, linkedSignal, NgModule } from '@angular/core';
3
- import { useDateField, getDefaultTime, isNullish, isBefore, createContent, watch, createFormatter, initializeSegmentValues, syncSegmentValues, getSegmentElements, isSegmentNavigationKey, ARROW_LEFT, ARROW_RIGHT, provideToken } from '@radix-ng/primitives/core';
3
+ import { useDateField, normalizeDateStep, getDefaultTime, isNullish, isBefore, createContent, watch, createFormatter, normalizeHourCycle, initializeSegmentValues, syncSegmentValues, getSegmentElements, isSegmentNavigationKey, ARROW_LEFT, ARROW_RIGHT, provideToken } from '@radix-ng/primitives/core';
4
4
  import { today, toCalendarDateTime, getLocalTimeZone, isEqualDay } from '@internationalized/date';
5
5
 
6
6
  const TIME_FIELDS_ROOT_CONTEXT = new InjectionToken('TIME_FIELDS_ROOT_CONTEXT');
@@ -49,7 +49,8 @@ class RdxTimeFieldInputDirective {
49
49
  disabled: this.rootContext.disabled,
50
50
  readonly: this.rootContext.readonly,
51
51
  modelValue: this.rootContext.convertedModelValue,
52
- focusNext: this.rootContext.focusNext
52
+ focusNext: this.rootContext.focusNext,
53
+ step: this.rootContext.step$
53
54
  });
54
55
  });
55
56
  this.attributes = computed(() => this.fieldData().attributes());
@@ -143,6 +144,11 @@ class RdxTimeFieldRootDirective {
143
144
  * Whether or not the field is readonly.
144
145
  */
145
146
  this.readonly = input(false, { transform: booleanAttribute });
147
+ /**
148
+ * The stepping interval for the time fields. Defaults to 1
149
+ */
150
+ this.step = input();
151
+ this.step$ = computed(() => normalizeDateStep(this.step()));
146
152
  /**
147
153
  * @ignore
148
154
  */
@@ -279,7 +285,9 @@ class RdxTimeFieldRootDirective {
279
285
  defaultValue: this.value()
280
286
  });
281
287
  this.placeholder.set(defDate.copy());
282
- this.formatter = createFormatter(this.locale());
288
+ this.formatter = createFormatter(this.locale(), {
289
+ hourCycle: normalizeHourCycle(this.hourCycle())
290
+ });
283
291
  const initialSegments = initializeSegmentValues(this.inferredGranularity());
284
292
  this.segmentValues.set(this.value()
285
293
  ? { ...syncSegmentValues({ value: this.value(), formatter: this.formatter }) }
@@ -309,7 +317,7 @@ class RdxTimeFieldRootDirective {
309
317
  this.currentFocusedElement.set(el);
310
318
  }
311
319
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxTimeFieldRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
312
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", 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 }, dir: { classPropertyName: "dir", 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 }, 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)], exportAs: ["rdxTimeFieldRoot"], ngImport: i0 }); }
320
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", 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 }, dir: { classPropertyName: "dir", 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)], exportAs: ["rdxTimeFieldRoot"], ngImport: i0 }); }
313
321
  }
314
322
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxTimeFieldRootDirective, decorators: [{
315
323
  type: Directive,
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-time-field.mjs","sources":["../../../packages/primitives/time-field/src/time-field-context.token.ts","../../../packages/primitives/time-field/src/time-field-input.directive.ts","../../../packages/primitives/time-field/src/time-field-root.directive.ts","../../../packages/primitives/time-field/index.ts","../../../packages/primitives/time-field/radix-ng-primitives-time-field.ts"],"sourcesContent":["import { inject, InjectionToken, InputSignal, ModelSignal, Signal, WritableSignal } from '@angular/core';\nimport { Formatter, HourCycle, SegmentValueObj, TimeValue } from '@radix-ng/primitives/core';\n\nexport interface TimeFieldContextToken {\n locale: InputSignal<string>;\n value: ModelSignal<TimeValue | undefined>;\n placeholder: ModelSignal<TimeValue>;\n isInvalid: Signal<boolean>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n formatter: Formatter;\n hourCycle: InputSignal<HourCycle>;\n segmentValues: WritableSignal<SegmentValueObj>;\n focusNext: () => void;\n setFocusedElement: (el: HTMLElement) => void;\n convertedModelValue: WritableSignal<TimeValue | undefined>;\n convertedPlaceholder: WritableSignal<TimeValue>;\n}\n\nexport const TIME_FIELDS_ROOT_CONTEXT = new InjectionToken<TimeFieldContextToken>('TIME_FIELDS_ROOT_CONTEXT');\n\nexport function injectTimeFieldsRootContext(): TimeFieldContextToken {\n return inject(TIME_FIELDS_ROOT_CONTEXT);\n}\n","import { computed, Directive, effect, ElementRef, input, signal, WritableSignal } from '@angular/core';\nimport { DateValue } from '@internationalized/date';\nimport { SegmentPart, useDateField } from '@radix-ng/primitives/core';\nimport { injectTimeFieldsRootContext } from './time-field-context.token';\n\n@Directive({\n selector: '[rdxTimeFieldInput]',\n host: {\n '[attr.contenteditable]': 'disabled() || readonly() ? false : part() !== \"literal\"',\n '[attr.data-rdx-date-field-segment]': 'part()',\n '[attr.aria-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : undefined',\n '[attr.aria-invalid]': 'isInvalid() ? true : undefined',\n\n '(mousedown)': 'part() !== \"literal\" && handleSegmentClick($event)',\n '(keydown)': 'part() !== \"literal\" && handleSegmentKeydown($event)',\n '(focus)': 'part() !== \"literal\" && onFocus($event)',\n '(focusout)': 'part() !== \"literal\" && onFocusOut()'\n }\n})\nexport class RdxTimeFieldInputDirective {\n private readonly rootContext = injectTimeFieldsRootContext();\n\n /**\n * The part of the date to render\n * `'hour' | 'minute' | 'second' | 'dayPeriod' | 'literal' | 'timeZoneName'`\n */\n readonly part = input<SegmentPart>();\n\n /**\n * @ignore\n */\n readonly disabled = computed(() => this.rootContext.disabled());\n\n /**\n * @ignore\n */\n readonly readonly = computed(() => this.rootContext.readonly());\n\n /**\n * @ignore\n */\n readonly isInvalid = computed(() => this.rootContext.isInvalid());\n\n /**\n * @ignore\n */\n readonly hasLeftFocus = signal<boolean>(true);\n\n /**\n * @ignore\n */\n readonly lastKeyZero = signal<boolean>(false);\n\n private readonly fieldData = computed(() => {\n return useDateField({\n hasLeftFocus: this.hasLeftFocus,\n lastKeyZero: this.lastKeyZero,\n placeholder: this.rootContext.convertedPlaceholder as unknown as WritableSignal<DateValue>,\n hourCycle: this.rootContext.hourCycle(),\n segmentValues: this.rootContext.segmentValues,\n formatter: this.rootContext.formatter,\n part: <SegmentPart>this.part(),\n disabled: this.rootContext.disabled,\n readonly: this.rootContext.readonly,\n modelValue: this.rootContext.convertedModelValue as unknown as WritableSignal<DateValue>,\n focusNext: this.rootContext.focusNext\n });\n });\n\n private readonly attributes = computed(() => this.fieldData().attributes());\n\n /**\n * @ignore\n */\n handleSegmentClick: (e: MouseEvent) => void;\n\n /**\n * @ignore\n */\n handleSegmentKeydown: (e: KeyboardEvent) => void;\n\n constructor(private el: ElementRef) {\n effect(() => {\n const { handleSegmentClick, handleSegmentKeydown } = this.fieldData();\n this.handleSegmentKeydown = handleSegmentKeydown;\n this.handleSegmentClick = handleSegmentClick;\n });\n\n effect(() => {\n const attrs = this.attributes();\n Object.entries(attrs).forEach(([attr, value]) => {\n this.el.nativeElement.setAttribute(attr, String(value));\n });\n });\n }\n\n /**\n * @ignore\n */\n onFocus(e: FocusEvent) {\n this.rootContext.setFocusedElement(e.target as HTMLElement);\n }\n\n /**\n * @ignore\n */\n onFocusOut() {\n this.hasLeftFocus.set(true);\n }\n}\n","import { Direction } from '@angular/cdk/bidi';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n OnInit,\n signal\n} from '@angular/core';\nimport { DateValue, getLocalTimeZone, isEqualDay, toCalendarDateTime, today } from '@internationalized/date';\nimport {\n ARROW_LEFT,\n ARROW_RIGHT,\n createContent,\n createFormatter,\n Formatter,\n getDefaultTime,\n getSegmentElements,\n Granularity,\n HourCycle,\n initializeSegmentValues,\n isBefore,\n isNullish,\n isSegmentNavigationKey,\n provideToken,\n SegmentValueObj,\n syncSegmentValues,\n TimeValue,\n watch\n} from '@radix-ng/primitives/core';\nimport { TIME_FIELDS_ROOT_CONTEXT } from './time-field-context.token';\n\nfunction convertValue(value: TimeValue, date: DateValue = today(getLocalTimeZone())) {\n if (value && 'day' in value) {\n return value;\n }\n\n return toCalendarDateTime(date, value);\n}\n\n@Directive({\n selector: '[rdxTimeFieldRoot]',\n exportAs: 'rdxTimeFieldRoot',\n providers: [provideToken(TIME_FIELDS_ROOT_CONTEXT, RdxTimeFieldRootDirective)],\n host: {\n role: 'group',\n '[attr.aria-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'readonly() ? \"\" : undefined',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : undefined',\n '[attr.dir]': 'dir()',\n\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxTimeFieldRootDirective implements OnInit, AfterViewInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * The controlled checked state of the calendar.\n */\n readonly value = model<TimeValue | undefined>();\n\n /**\n * The hour cycle to use for formatting times. Defaults to the locale preference\n */\n readonly hourCycle = input<HourCycle>();\n\n /**\n * The granularity to use for formatting the field. Defaults to 'day' if a CalendarDate is provided, otherwise defaults to 'minute'.\n * The field will render segments for each part of the date up to and including the specified granularity.\n */\n readonly granularity = input<Granularity>();\n\n /**\n * The locale to use for formatting dates.\n */\n readonly locale = input<string>('en');\n\n readonly dir = input<Direction>('ltr');\n\n /**\n * The minimum valid date that can be entered.\n */\n readonly minValue = input<TimeValue>();\n\n /**\n * The maximum valid date that can be entered.\n */\n readonly maxValue = input<TimeValue>();\n\n /**\n * Whether or not to hide the time zone segment of the field.\n */\n readonly hideTimeZone = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether or not the field is readonly.\n */\n readonly readonly = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * @ignore\n */\n readonly defaultDate = computed(() =>\n getDefaultTime({\n defaultPlaceholder: undefined,\n defaultValue: this.value()\n })\n );\n\n /**\n * 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\n */\n readonly placeholder = model<TimeValue | undefined>(this.defaultDate().copy());\n\n // Internal state\n\n /**\n * @ignore\n */\n readonly segmentElements = signal<Set<HTMLElement>>(new Set());\n\n /**\n * @ignore\n */\n readonly currentFocusedElement = signal<HTMLElement | null>(null);\n\n /**\n * @ignore\n */\n formatter: Formatter;\n\n /**\n * @ignore\n */\n readonly segmentValues = signal<SegmentValueObj>({\n hour: null,\n minute: null,\n second: null,\n dayPeriod: null\n } as SegmentValueObj);\n\n /**\n * @ignore\n */\n readonly inferredGranularity = computed(() => {\n if (this.granularity()) return this.granularity();\n\n return 'minute';\n });\n\n readonly convertedMinValue = computed(() => (this.minValue() ? convertValue(this.minValue()!) : undefined));\n readonly convertedMaxValue = computed(() => (this.maxValue() ? convertValue(this.maxValue()!) : undefined));\n\n readonly convertedModelValue = linkedSignal({\n source: () => {\n if (isNullish(this.value())) return this.value();\n\n return convertValue(this.value()!);\n },\n computation: (value: TimeValue | undefined) => {\n return value;\n }\n });\n\n readonly convertedPlaceholder = linkedSignal({\n source: () => {\n return convertValue(<TimeValue>this.placeholder()) as TimeValue;\n },\n computation: (value: TimeValue) => {\n return value;\n }\n });\n\n /**\n * @ignore\n */\n readonly isInvalid = computed(() => {\n if (!this.value()) return false;\n\n if (\n this.convertedMinValue() &&\n isBefore(<DateValue>this.convertedModelValue(), <DateValue>this.convertedMinValue())\n )\n return true;\n\n if (\n this.convertedMaxValue() &&\n isBefore(<DateValue>this.convertedMaxValue(), <DateValue>this.convertedModelValue())\n )\n return true;\n\n return false;\n });\n\n /**\n * @ignore\n */\n readonly allSegmentContent = computed(() =>\n createContent({\n granularity: <Granularity>this.inferredGranularity(),\n dateRef: <DateValue>this.convertedPlaceholder(),\n formatter: this.formatter,\n hideTimeZone: this.hideTimeZone(),\n hourCycle: this.hourCycle(),\n segmentValues: this.segmentValues(),\n locale: this.locale,\n isTimeValue: true\n })\n );\n\n /**\n * An array of segments that should be readonly, which prevent user input on them.\n */\n readonly segmentContents = computed(() => this.allSegmentContent().arr);\n\n /**\n * @ignore\n */\n readonly currentSegmentIndex = computed(() =>\n Array.from(this.segmentElements()).findIndex(\n (el) =>\n el.getAttribute('data-rdx-date-field-segment') ===\n this.currentFocusedElement()?.getAttribute('data-rdx-date-field-segment')\n )\n );\n\n /**\n * @ignore\n */\n readonly prevFocusableSegment = computed(() => {\n const sign = this.dir() === 'rtl' ? -1 : 1;\n const prevCondition =\n sign > 0 ? this.currentSegmentIndex() < 0 : this.currentSegmentIndex() > this.segmentElements().size - 1;\n if (prevCondition) return null;\n\n const segmentToFocus = Array.from(this.segmentElements())[this.currentSegmentIndex() - sign];\n return segmentToFocus;\n });\n\n /**\n * @ignore\n */\n readonly nextFocusableSegment = computed(() => {\n const sign = this.dir() === 'rtl' ? -1 : 1;\n const nextCondition =\n sign < 0 ? this.currentSegmentIndex() < 0 : this.currentSegmentIndex() > this.segmentElements().size - 1;\n if (nextCondition) return null;\n const segmentToFocus = Array.from(this.segmentElements())[this.currentSegmentIndex() + sign];\n return segmentToFocus;\n });\n\n /**\n * @ignore\n */\n readonly focusNext = () => {\n this.nextFocusableSegment()?.focus();\n };\n\n constructor() {\n watch([this.convertedModelValue], ([value]) => {\n if (\n !isNullish(value) &&\n (!isEqualDay(<DateValue>this.convertedPlaceholder(), <DateValue>value) ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n this.convertedPlaceholder().compare(value) !== 0)\n )\n this.placeholder.set(value.copy());\n });\n }\n\n ngOnInit() {\n const defDate = getDefaultTime({\n defaultPlaceholder: undefined,\n defaultValue: this.value()\n });\n\n this.placeholder.set(defDate.copy());\n\n this.formatter = createFormatter(this.locale());\n\n const initialSegments = initializeSegmentValues(this.inferredGranularity()!);\n\n this.segmentValues.set(\n this.value()\n ? { ...syncSegmentValues({ value: <DateValue>this.value(), formatter: this.formatter }) }\n : { ...initialSegments }\n );\n }\n\n ngAfterViewInit() {\n getSegmentElements(this.elementRef.nativeElement).forEach((item) =>\n this.segmentElements().add(item as HTMLElement)\n );\n }\n\n /**\n * @ignore\n */\n onKeydown(event: KeyboardEvent) {\n if (!isSegmentNavigationKey(event.key)) return;\n const code = event.code;\n\n if (code === ARROW_LEFT) {\n this.prevFocusableSegment()?.focus();\n }\n\n if (code === ARROW_RIGHT) {\n this.nextFocusableSegment()?.focus();\n }\n }\n\n /**\n * @ignore\n */\n setFocusedElement(el: HTMLElement) {\n this.currentFocusedElement.set(el);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxTimeFieldInputDirective } from './src/time-field-input.directive';\nimport { RdxTimeFieldRootDirective } from './src/time-field-root.directive';\n\nexport * from './src/time-field-context.token';\nexport * from './src/time-field-input.directive';\nexport * from './src/time-field-root.directive';\n\nconst _imports = [RdxTimeFieldRootDirective, RdxTimeFieldInputDirective];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxTimeFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-time-field.mjs","sources":["../../../packages/primitives/time-field/src/time-field-context.token.ts","../../../packages/primitives/time-field/src/time-field-input.directive.ts","../../../packages/primitives/time-field/src/time-field-root.directive.ts","../../../packages/primitives/time-field/index.ts","../../../packages/primitives/time-field/radix-ng-primitives-time-field.ts"],"sourcesContent":["import { inject, InjectionToken, InputSignal, ModelSignal, Signal, WritableSignal } from '@angular/core';\nimport { DateStep, Formatter, HourCycle, SegmentValueObj, TimeValue } from '@radix-ng/primitives/core';\n\nexport interface TimeFieldContextToken {\n locale: InputSignal<string>;\n value: ModelSignal<TimeValue | undefined>;\n placeholder: ModelSignal<TimeValue>;\n isInvalid: Signal<boolean>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n formatter: Formatter;\n hourCycle: InputSignal<HourCycle>;\n segmentValues: WritableSignal<SegmentValueObj>;\n focusNext: () => void;\n setFocusedElement: (el: HTMLElement) => void;\n convertedModelValue: WritableSignal<TimeValue | undefined>;\n convertedPlaceholder: WritableSignal<TimeValue>;\n step$: Signal<DateStep>;\n}\n\nexport const TIME_FIELDS_ROOT_CONTEXT = new InjectionToken<TimeFieldContextToken>('TIME_FIELDS_ROOT_CONTEXT');\n\nexport function injectTimeFieldsRootContext(): TimeFieldContextToken {\n return inject(TIME_FIELDS_ROOT_CONTEXT);\n}\n","import { computed, Directive, effect, ElementRef, input, signal, WritableSignal } from '@angular/core';\nimport { DateValue } from '@internationalized/date';\nimport { SegmentPart, useDateField } from '@radix-ng/primitives/core';\nimport { injectTimeFieldsRootContext } from './time-field-context.token';\n\n@Directive({\n selector: '[rdxTimeFieldInput]',\n host: {\n '[attr.contenteditable]': 'disabled() || readonly() ? false : part() !== \"literal\"',\n '[attr.data-rdx-date-field-segment]': 'part()',\n '[attr.aria-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : undefined',\n '[attr.aria-invalid]': 'isInvalid() ? true : undefined',\n\n '(mousedown)': 'part() !== \"literal\" && handleSegmentClick($event)',\n '(keydown)': 'part() !== \"literal\" && handleSegmentKeydown($event)',\n '(focus)': 'part() !== \"literal\" && onFocus($event)',\n '(focusout)': 'part() !== \"literal\" && onFocusOut()'\n }\n})\nexport class RdxTimeFieldInputDirective {\n private readonly rootContext = injectTimeFieldsRootContext();\n\n /**\n * The part of the date to render\n * `'hour' | 'minute' | 'second' | 'dayPeriod' | 'literal' | 'timeZoneName'`\n */\n readonly part = input<SegmentPart>();\n\n /**\n * @ignore\n */\n readonly disabled = computed(() => this.rootContext.disabled());\n\n /**\n * @ignore\n */\n readonly readonly = computed(() => this.rootContext.readonly());\n\n /**\n * @ignore\n */\n readonly isInvalid = computed(() => this.rootContext.isInvalid());\n\n /**\n * @ignore\n */\n readonly hasLeftFocus = signal<boolean>(true);\n\n /**\n * @ignore\n */\n readonly lastKeyZero = signal<boolean>(false);\n\n private readonly fieldData = computed(() => {\n return useDateField({\n hasLeftFocus: this.hasLeftFocus,\n lastKeyZero: this.lastKeyZero,\n placeholder: this.rootContext.convertedPlaceholder as unknown as WritableSignal<DateValue>,\n hourCycle: this.rootContext.hourCycle(),\n segmentValues: this.rootContext.segmentValues,\n formatter: this.rootContext.formatter,\n part: <SegmentPart>this.part(),\n disabled: this.rootContext.disabled,\n readonly: this.rootContext.readonly,\n modelValue: this.rootContext.convertedModelValue as unknown as WritableSignal<DateValue>,\n focusNext: this.rootContext.focusNext,\n step: this.rootContext.step$\n });\n });\n\n private readonly attributes = computed(() => this.fieldData().attributes());\n\n /**\n * @ignore\n */\n handleSegmentClick: (e: MouseEvent) => void;\n\n /**\n * @ignore\n */\n handleSegmentKeydown: (e: KeyboardEvent) => void;\n\n constructor(private el: ElementRef) {\n effect(() => {\n const { handleSegmentClick, handleSegmentKeydown } = this.fieldData();\n this.handleSegmentKeydown = handleSegmentKeydown;\n this.handleSegmentClick = handleSegmentClick;\n });\n\n effect(() => {\n const attrs = this.attributes();\n Object.entries(attrs).forEach(([attr, value]) => {\n this.el.nativeElement.setAttribute(attr, String(value));\n });\n });\n }\n\n /**\n * @ignore\n */\n onFocus(e: FocusEvent) {\n this.rootContext.setFocusedElement(e.target as HTMLElement);\n }\n\n /**\n * @ignore\n */\n onFocusOut() {\n this.hasLeftFocus.set(true);\n }\n}\n","import { Direction } from '@angular/cdk/bidi';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n OnInit,\n signal\n} from '@angular/core';\nimport { DateValue, getLocalTimeZone, isEqualDay, toCalendarDateTime, today } from '@internationalized/date';\nimport {\n ARROW_LEFT,\n ARROW_RIGHT,\n createContent,\n createFormatter,\n DateStep,\n Formatter,\n getDefaultTime,\n getSegmentElements,\n Granularity,\n HourCycle,\n initializeSegmentValues,\n isBefore,\n isNullish,\n isSegmentNavigationKey,\n normalizeDateStep,\n normalizeHourCycle,\n provideToken,\n SegmentValueObj,\n syncSegmentValues,\n TimeValue,\n watch\n} from '@radix-ng/primitives/core';\nimport { TIME_FIELDS_ROOT_CONTEXT } from './time-field-context.token';\n\nfunction convertValue(value: TimeValue, date: DateValue = today(getLocalTimeZone())) {\n if (value && 'day' in value) {\n return value;\n }\n\n return toCalendarDateTime(date, value);\n}\n\n@Directive({\n selector: '[rdxTimeFieldRoot]',\n exportAs: 'rdxTimeFieldRoot',\n providers: [provideToken(TIME_FIELDS_ROOT_CONTEXT, RdxTimeFieldRootDirective)],\n host: {\n role: 'group',\n '[attr.aria-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'readonly() ? \"\" : undefined',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : undefined',\n '[attr.dir]': 'dir()',\n\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxTimeFieldRootDirective implements OnInit, AfterViewInit {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * The controlled checked state of the calendar.\n */\n readonly value = model<TimeValue | undefined>();\n\n /**\n * The hour cycle to use for formatting times. Defaults to the locale preference\n */\n readonly hourCycle = input<HourCycle>();\n\n /**\n * The granularity to use for formatting the field. Defaults to 'day' if a CalendarDate is provided, otherwise defaults to 'minute'.\n * The field will render segments for each part of the date up to and including the specified granularity.\n */\n readonly granularity = input<Granularity>();\n\n /**\n * The locale to use for formatting dates.\n */\n readonly locale = input<string>('en');\n\n readonly dir = input<Direction>('ltr');\n\n /**\n * The minimum valid date that can be entered.\n */\n readonly minValue = input<TimeValue>();\n\n /**\n * The maximum valid date that can be entered.\n */\n readonly maxValue = input<TimeValue>();\n\n /**\n * Whether or not to hide the time zone segment of the field.\n */\n readonly hideTimeZone = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether or not the field is readonly.\n */\n readonly readonly = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The stepping interval for the time fields. Defaults to 1\n */\n readonly step = input<DateStep>();\n\n readonly step$ = computed(() => normalizeDateStep(this.step()));\n\n /**\n * @ignore\n */\n readonly defaultDate = computed(() =>\n getDefaultTime({\n defaultPlaceholder: undefined,\n defaultValue: this.value()\n })\n );\n\n /**\n * 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\n */\n readonly placeholder = model<TimeValue | undefined>(this.defaultDate().copy());\n\n // Internal state\n\n /**\n * @ignore\n */\n readonly segmentElements = signal<Set<HTMLElement>>(new Set());\n\n /**\n * @ignore\n */\n readonly currentFocusedElement = signal<HTMLElement | null>(null);\n\n /**\n * @ignore\n */\n formatter: Formatter;\n\n /**\n * @ignore\n */\n readonly segmentValues = signal<SegmentValueObj>({\n hour: null,\n minute: null,\n second: null,\n dayPeriod: null\n } as SegmentValueObj);\n\n /**\n * @ignore\n */\n readonly inferredGranularity = computed(() => {\n if (this.granularity()) return this.granularity();\n\n return 'minute';\n });\n\n readonly convertedMinValue = computed(() => (this.minValue() ? convertValue(this.minValue()!) : undefined));\n readonly convertedMaxValue = computed(() => (this.maxValue() ? convertValue(this.maxValue()!) : undefined));\n\n readonly convertedModelValue = linkedSignal({\n source: () => {\n if (isNullish(this.value())) return this.value();\n\n return convertValue(this.value()!);\n },\n computation: (value: TimeValue | undefined) => {\n return value;\n }\n });\n\n readonly convertedPlaceholder = linkedSignal({\n source: () => {\n return convertValue(<TimeValue>this.placeholder()) as TimeValue;\n },\n computation: (value: TimeValue) => {\n return value;\n }\n });\n\n /**\n * @ignore\n */\n readonly isInvalid = computed(() => {\n if (!this.value()) return false;\n\n if (\n this.convertedMinValue() &&\n isBefore(<DateValue>this.convertedModelValue(), <DateValue>this.convertedMinValue())\n )\n return true;\n\n if (\n this.convertedMaxValue() &&\n isBefore(<DateValue>this.convertedMaxValue(), <DateValue>this.convertedModelValue())\n )\n return true;\n\n return false;\n });\n\n /**\n * @ignore\n */\n readonly allSegmentContent = computed(() =>\n createContent({\n granularity: <Granularity>this.inferredGranularity(),\n dateRef: <DateValue>this.convertedPlaceholder(),\n formatter: this.formatter,\n hideTimeZone: this.hideTimeZone(),\n hourCycle: this.hourCycle(),\n segmentValues: this.segmentValues(),\n locale: this.locale,\n isTimeValue: true\n })\n );\n\n /**\n * An array of segments that should be readonly, which prevent user input on them.\n */\n readonly segmentContents = computed(() => this.allSegmentContent().arr);\n\n /**\n * @ignore\n */\n readonly currentSegmentIndex = computed(() =>\n Array.from(this.segmentElements()).findIndex(\n (el) =>\n el.getAttribute('data-rdx-date-field-segment') ===\n this.currentFocusedElement()?.getAttribute('data-rdx-date-field-segment')\n )\n );\n\n /**\n * @ignore\n */\n readonly prevFocusableSegment = computed(() => {\n const sign = this.dir() === 'rtl' ? -1 : 1;\n const prevCondition =\n sign > 0 ? this.currentSegmentIndex() < 0 : this.currentSegmentIndex() > this.segmentElements().size - 1;\n if (prevCondition) return null;\n\n const segmentToFocus = Array.from(this.segmentElements())[this.currentSegmentIndex() - sign];\n return segmentToFocus;\n });\n\n /**\n * @ignore\n */\n readonly nextFocusableSegment = computed(() => {\n const sign = this.dir() === 'rtl' ? -1 : 1;\n const nextCondition =\n sign < 0 ? this.currentSegmentIndex() < 0 : this.currentSegmentIndex() > this.segmentElements().size - 1;\n if (nextCondition) return null;\n const segmentToFocus = Array.from(this.segmentElements())[this.currentSegmentIndex() + sign];\n return segmentToFocus;\n });\n\n /**\n * @ignore\n */\n readonly focusNext = () => {\n this.nextFocusableSegment()?.focus();\n };\n\n constructor() {\n watch([this.convertedModelValue], ([value]) => {\n if (\n !isNullish(value) &&\n (!isEqualDay(<DateValue>this.convertedPlaceholder(), <DateValue>value) ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n this.convertedPlaceholder().compare(value) !== 0)\n )\n this.placeholder.set(value.copy());\n });\n }\n\n ngOnInit() {\n const defDate = getDefaultTime({\n defaultPlaceholder: undefined,\n defaultValue: this.value()\n });\n\n this.placeholder.set(defDate.copy());\n\n this.formatter = createFormatter(this.locale(), {\n hourCycle: normalizeHourCycle(this.hourCycle())\n });\n\n const initialSegments = initializeSegmentValues(this.inferredGranularity()!);\n\n this.segmentValues.set(\n this.value()\n ? { ...syncSegmentValues({ value: <DateValue>this.value(), formatter: this.formatter }) }\n : { ...initialSegments }\n );\n }\n\n ngAfterViewInit() {\n getSegmentElements(this.elementRef.nativeElement).forEach((item) =>\n this.segmentElements().add(item as HTMLElement)\n );\n }\n\n /**\n * @ignore\n */\n onKeydown(event: KeyboardEvent) {\n if (!isSegmentNavigationKey(event.key)) return;\n const code = event.code;\n\n if (code === ARROW_LEFT) {\n this.prevFocusableSegment()?.focus();\n }\n\n if (code === ARROW_RIGHT) {\n this.nextFocusableSegment()?.focus();\n }\n }\n\n /**\n * @ignore\n */\n setFocusedElement(el: HTMLElement) {\n this.currentFocusedElement.set(el);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxTimeFieldInputDirective } from './src/time-field-input.directive';\nimport { RdxTimeFieldRootDirective } from './src/time-field-root.directive';\n\nexport * from './src/time-field-context.token';\nexport * from './src/time-field-input.directive';\nexport * from './src/time-field-root.directive';\n\nconst _imports = [RdxTimeFieldRootDirective, RdxTimeFieldInputDirective];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxTimeFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -93,7 +93,7 @@ export declare class RdxHoverCardRootDirective {
93
93
  window: Window & typeof globalThis;
94
94
  primitiveConfigs?: import("./utils/types").PrimitiveConfigs;
95
95
  onDestroyCallbacks: Set<() => void>;
96
- "__#14205@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
96
+ "__#14558@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
97
97
  registerPrimitive<T extends object>(primitiveInstance: T): void;
98
98
  deregisterPrimitive<T extends object>(primitiveInstance: T): void;
99
99
  preventPrimitiveFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): void;
@@ -104,9 +104,9 @@ export declare class RdxHoverCardRootDirective {
104
104
  primitivePreventedFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): boolean | undefined;
105
105
  addClickDomRootEventCallback(callback: (event: MouseEvent) => void): void;
106
106
  removeClickDomRootEventCallback(callback: (event: MouseEvent) => void): boolean;
107
- "__#14205@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
108
- "__#14205@#registerOnDestroyCallbacks"(): void;
109
- "__#14205@#listenToClickDomRootEvent"(): void;
107
+ "__#14558@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
108
+ "__#14558@#registerOnDestroyCallbacks"(): void;
109
+ "__#14558@#listenToClickDomRootEvent"(): void;
110
110
  } | null;
111
111
  /** @ignore */
112
112
  readonly destroyRef: DestroyRef;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ng/primitives",
3
- "version": "0.39.5",
3
+ "version": "0.41.0",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -18,8 +18,8 @@
18
18
  "headless"
19
19
  ],
20
20
  "peerDependencies": {
21
- "@angular/core": "^19.2.4",
22
- "@angular/cdk": "^19.2.7"
21
+ "@angular/core": "^19.2.0 || ^20.0.0",
22
+ "@angular/cdk": "^19.2.0 || ^20.0.0"
23
23
  },
24
24
  "schematics": "./schematics/collection.json",
25
25
  "sideEffects": false,
@@ -88,10 +88,18 @@
88
88
  "types": "./dialog/index.d.ts",
89
89
  "default": "./fesm2022/radix-ng-primitives-dialog.mjs"
90
90
  },
91
+ "./dismissible-layer": {
92
+ "types": "./dismissible-layer/index.d.ts",
93
+ "default": "./fesm2022/radix-ng-primitives-dismissible-layer.mjs"
94
+ },
91
95
  "./dropdown-menu": {
92
96
  "types": "./dropdown-menu/index.d.ts",
93
97
  "default": "./fesm2022/radix-ng-primitives-dropdown-menu.mjs"
94
98
  },
99
+ "./editable": {
100
+ "types": "./editable/index.d.ts",
101
+ "default": "./fesm2022/radix-ng-primitives-editable.mjs"
102
+ },
95
103
  "./hover-card": {
96
104
  "types": "./hover-card/index.d.ts",
97
105
  "default": "./fesm2022/radix-ng-primitives-hover-card.mjs"
@@ -70,7 +70,7 @@ export declare class RdxPopoverRootDirective {
70
70
  window: Window & typeof globalThis;
71
71
  primitiveConfigs?: import("./utils/types").PrimitiveConfigs;
72
72
  onDestroyCallbacks: Set<() => void>;
73
- "__#18582@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
73
+ "__#18898@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
74
74
  registerPrimitive<T extends object>(primitiveInstance: T): void;
75
75
  deregisterPrimitive<T extends object>(primitiveInstance: T): void;
76
76
  preventPrimitiveFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): void;
@@ -81,9 +81,9 @@ export declare class RdxPopoverRootDirective {
81
81
  primitivePreventedFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): boolean | undefined;
82
82
  addClickDomRootEventCallback(callback: (event: MouseEvent) => void): void;
83
83
  removeClickDomRootEventCallback(callback: (event: MouseEvent) => void): boolean;
84
- "__#18582@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
85
- "__#18582@#registerOnDestroyCallbacks"(): void;
86
- "__#18582@#listenToClickDomRootEvent"(): void;
84
+ "__#18898@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
85
+ "__#18898@#registerOnDestroyCallbacks"(): void;
86
+ "__#18898@#listenToClickDomRootEvent"(): void;
87
87
  } | null;
88
88
  /** @ignore */
89
89
  readonly destroyRef: DestroyRef;
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken, InputSignal, ModelSignal, Signal, WritableSignal } from '@angular/core';
2
- import { Formatter, HourCycle, SegmentValueObj, TimeValue } from '@radix-ng/primitives/core';
2
+ import { DateStep, Formatter, HourCycle, SegmentValueObj, TimeValue } from '@radix-ng/primitives/core';
3
3
  export interface TimeFieldContextToken {
4
4
  locale: InputSignal<string>;
5
5
  value: ModelSignal<TimeValue | undefined>;
@@ -14,6 +14,7 @@ export interface TimeFieldContextToken {
14
14
  setFocusedElement: (el: HTMLElement) => void;
15
15
  convertedModelValue: WritableSignal<TimeValue | undefined>;
16
16
  convertedPlaceholder: WritableSignal<TimeValue>;
17
+ step$: Signal<DateStep>;
17
18
  }
18
19
  export declare const TIME_FIELDS_ROOT_CONTEXT: InjectionToken<TimeFieldContextToken>;
19
20
  export declare function injectTimeFieldsRootContext(): TimeFieldContextToken;
@@ -1,7 +1,7 @@
1
1
  import { Direction } from '@angular/cdk/bidi';
2
2
  import { BooleanInput } from '@angular/cdk/coercion';
3
3
  import { AfterViewInit, OnInit } from '@angular/core';
4
- import { Formatter, Granularity, HourCycle, SegmentValueObj, TimeValue } from '@radix-ng/primitives/core';
4
+ import { DateStep, Formatter, Granularity, HourCycle, SegmentValueObj, TimeValue } from '@radix-ng/primitives/core';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class RdxTimeFieldRootDirective implements OnInit, AfterViewInit {
7
7
  private readonly elementRef;
@@ -40,6 +40,11 @@ export declare class RdxTimeFieldRootDirective implements OnInit, AfterViewInit
40
40
  * Whether or not the field is readonly.
41
41
  */
42
42
  readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
43
+ /**
44
+ * The stepping interval for the time fields. Defaults to 1
45
+ */
46
+ readonly step: import("@angular/core").InputSignal<DateStep | undefined>;
47
+ readonly step$: import("@angular/core").Signal<DateStep>;
43
48
  /**
44
49
  * @ignore
45
50
  */
@@ -121,5 +126,5 @@ export declare class RdxTimeFieldRootDirective implements OnInit, AfterViewInit
121
126
  */
122
127
  setFocusedElement(el: HTMLElement): void;
123
128
  static ɵfac: i0.ɵɵFactoryDeclaration<RdxTimeFieldRootDirective, never>;
124
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxTimeFieldRootDirective, "[rdxTimeFieldRoot]", ["rdxTimeFieldRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "hourCycle": { "alias": "hourCycle"; "required": false; "isSignal": true; }; "granularity": { "alias": "granularity"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "hideTimeZone": { "alias": "hideTimeZone"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "placeholder": "placeholderChange"; }, never, never, true, never>;
129
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RdxTimeFieldRootDirective, "[rdxTimeFieldRoot]", ["rdxTimeFieldRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "hourCycle": { "alias": "hourCycle"; "required": false; "isSignal": true; }; "granularity": { "alias": "granularity"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "hideTimeZone": { "alias": "hideTimeZone"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "placeholder": "placeholderChange"; }, never, never, true, never>;
125
130
  }
@@ -79,7 +79,7 @@ export declare class RdxTooltipRootDirective {
79
79
  window: Window & typeof globalThis;
80
80
  primitiveConfigs?: import("./utils/types").PrimitiveConfigs;
81
81
  onDestroyCallbacks: Set<() => void>;
82
- "__#22421@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
82
+ "__#22743@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
83
83
  registerPrimitive<T extends object>(primitiveInstance: T): void;
84
84
  deregisterPrimitive<T extends object>(primitiveInstance: T): void;
85
85
  preventPrimitiveFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): void;
@@ -90,9 +90,9 @@ export declare class RdxTooltipRootDirective {
90
90
  primitivePreventedFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): boolean | undefined;
91
91
  addClickDomRootEventCallback(callback: (event: MouseEvent) => void): void;
92
92
  removeClickDomRootEventCallback(callback: (event: MouseEvent) => void): boolean;
93
- "__#22421@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
94
- "__#22421@#registerOnDestroyCallbacks"(): void;
95
- "__#22421@#listenToClickDomRootEvent"(): void;
93
+ "__#22743@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
94
+ "__#22743@#registerOnDestroyCallbacks"(): void;
95
+ "__#22743@#listenToClickDomRootEvent"(): void;
96
96
  } | null;
97
97
  /** @ignore */
98
98
  readonly destroyRef: DestroyRef;