@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.
- package/core/src/date-time/formatter.d.ts +1 -1
- package/core/src/date-time/types.d.ts +13 -0
- package/core/src/date-time/useDateField.d.ts +4 -3
- package/core/src/date-time/utils.d.ts +4 -1
- package/date-field/src/date-field-context.token.d.ts +2 -1
- package/date-field/src/date-field-root.directive.d.ts +7 -2
- package/dismissible-layer/README.md +1 -0
- package/dismissible-layer/index.d.ts +1 -0
- package/dismissible-layer/src/utils.d.ts +38 -0
- package/editable/README.md +1 -0
- package/editable/index.d.ts +1 -0
- package/editable/src/editable-root.d.ts +67 -0
- package/fesm2022/radix-ng-primitives-core.mjs +88 -46
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +11 -3
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissible-layer.mjs +211 -0
- package/fesm2022/radix-ng-primitives-dismissible-layer.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-editable.mjs +118 -0
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-number-field.mjs +7 -7
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +12 -4
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/hover-card/src/hover-card-root.directive.d.ts +4 -4
- package/package.json +11 -3
- package/popover/src/popover-root.directive.d.ts +4 -4
- package/time-field/src/time-field-context.token.d.ts +2 -1
- package/time-field/src/time-field-root.directive.d.ts +7 -2
- 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
|
-
"__#
|
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
|
-
"__#
|
108
|
-
"__#
|
109
|
-
"__#
|
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.
|
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.
|
22
|
-
"@angular/cdk": "^19.2.
|
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
|
-
"__#
|
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
|
-
"__#
|
85
|
-
"__#
|
86
|
-
"__#
|
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
|
-
"__#
|
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
|
-
"__#
|
94
|
-
"__#
|
95
|
-
"__#
|
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;
|