@radix-ng/primitives 0.18.1 → 0.19.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/avatar/index.d.ts +1 -2
- package/avatar/src/avatar-fallback.directive.d.ts +11 -23
- package/avatar/src/avatar-image.directive.d.ts +10 -14
- package/avatar/src/avatar-root.directive.d.ts +5 -15
- package/checkbox/index.d.ts +11 -0
- package/checkbox/src/checkbox-button.directive.d.ts +1 -1
- package/checkbox/src/checkbox-indicator.directive.d.ts +1 -1
- package/checkbox/src/checkbox-input.directive.d.ts +1 -1
- package/checkbox/src/checkbox.directive.d.ts +1 -1
- package/compodoc/documentation.json +4895 -2139
- package/core/index.d.ts +2 -0
- package/core/src/control-value-accessor/index.d.ts +75 -0
- package/core/src/create-inject-context/assert-injector.d.ts +51 -0
- package/core/src/create-inject-context/index.d.ts +68 -0
- package/core/src/types.d.ts +23 -0
- package/esm2022/avatar/index.mjs +1 -1
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +38 -40
- package/esm2022/avatar/src/avatar-image.directive.mjs +25 -26
- package/esm2022/avatar/src/avatar-root.directive.mjs +13 -25
- package/esm2022/checkbox/index.mjs +31 -1
- package/esm2022/checkbox/src/checkbox-button.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox-input.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox.directive.mjs +3 -3
- package/esm2022/core/index.mjs +3 -1
- package/esm2022/core/src/control-value-accessor/index.mjs +103 -0
- package/esm2022/core/src/create-inject-context/assert-injector.mjs +15 -0
- package/esm2022/core/src/create-inject-context/index.mjs +116 -0
- package/esm2022/core/src/types.mjs +2 -0
- package/esm2022/radio/index.mjs +2 -1
- package/esm2022/radio/src/radio-item-input.directive.mjs +37 -0
- package/esm2022/radio/src/radio-item.directive.mjs +55 -36
- package/esm2022/radio/src/radio-root.directive.mjs +24 -110
- package/esm2022/radio/src/radio-tokens.mjs +1 -1
- package/esm2022/roving-focus/index.mjs +3 -0
- package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +138 -0
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +133 -0
- package/esm2022/roving-focus/src/utils.mjs +47 -0
- package/esm2022/select/src/select-item.directive.mjs +8 -2
- package/esm2022/slider/src/slider-orientation-context.service.mjs +3 -4
- package/esm2022/slider/src/slider-root.component.mjs +5 -2
- package/esm2022/toggle/src/toggle-input.directive.mjs +4 -3
- package/fesm2022/radix-ng-primitives-avatar.mjs +70 -85
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +35 -10
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +230 -3
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +142 -176
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +320 -0
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs +7 -1
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +6 -4
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +3 -2
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/package.json +7 -1
- package/radio/index.d.ts +1 -0
- package/radio/src/radio-item-input.directive.d.ts +12 -0
- package/radio/src/radio-item.directive.d.ts +23 -14
- package/radio/src/radio-root.directive.d.ts +15 -31
- package/radio/src/radio-tokens.d.ts +3 -3
- package/roving-focus/README.md +3 -0
- package/roving-focus/index.d.ts +3 -0
- package/roving-focus/src/roving-focus-group.directive.d.ts +50 -0
- package/roving-focus/src/roving-focus-item.directive.d.ts +50 -0
- package/roving-focus/src/utils.d.ts +19 -0
- package/select/src/select-item.directive.d.ts +7 -1
- package/slider/src/slider-root.component.d.ts +2 -0
- package/toggle/src/toggle-input.directive.d.ts +1 -1
@@ -312,11 +312,10 @@ class RdxSliderOrientationContextService {
|
|
312
312
|
}));
|
313
313
|
}
|
314
314
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderOrientationContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
315
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderOrientationContextService
|
315
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderOrientationContextService }); }
|
316
316
|
}
|
317
317
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderOrientationContextService, decorators: [{
|
318
|
-
type: Injectable
|
319
|
-
args: [{ providedIn: 'root' }]
|
318
|
+
type: Injectable
|
320
319
|
}] });
|
321
320
|
|
322
321
|
class RdxSliderVerticalComponent {
|
@@ -451,7 +450,9 @@ class RdxSliderRootComponent {
|
|
451
450
|
this.valueIndexToChange = model(0);
|
452
451
|
/** @ignore */
|
453
452
|
this.valuesBeforeSlideStart = model([]);
|
453
|
+
/** @ignore */
|
454
454
|
this.isSlidingFromLeft = computed(() => (this.dir() === 'ltr' && !this.inverted()) || (this.dir() !== 'ltr' && this.inverted()));
|
455
|
+
/** @ignore */
|
455
456
|
this.isSlidingFromBottom = computed(() => !this.inverted());
|
456
457
|
/** @ignore */
|
457
458
|
this.thumbElements = [];
|
@@ -525,7 +526,7 @@ class RdxSliderRootComponent {
|
|
525
526
|
}
|
526
527
|
}
|
527
528
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
528
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: RdxSliderRootComponent, isStandalone: true, selector: "rdx-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: false, isRequired: false, transformFunction: null }, modelValue: { classPropertyName: "modelValue", publicName: "modelValue", isSignal: true, isRequired: false, transformFunction: null }, valueIndexToChange: { classPropertyName: "valueIndexToChange", publicName: "valueIndexToChange", isSignal: true, isRequired: false, transformFunction: null }, valuesBeforeSlideStart: { classPropertyName: "valuesBeforeSlideStart", publicName: "valuesBeforeSlideStart", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", valueCommit: "valueCommit", modelValue: "modelValueChange", valueIndexToChange: "valueIndexToChangeChange", valuesBeforeSlideStart: "valuesBeforeSlideStartChange" }, ngImport: i0, template: `
|
529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: RdxSliderRootComponent, isStandalone: true, selector: "rdx-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: false, isRequired: false, transformFunction: null }, modelValue: { classPropertyName: "modelValue", publicName: "modelValue", isSignal: true, isRequired: false, transformFunction: null }, valueIndexToChange: { classPropertyName: "valueIndexToChange", publicName: "valueIndexToChange", isSignal: true, isRequired: false, transformFunction: null }, valuesBeforeSlideStart: { classPropertyName: "valuesBeforeSlideStart", publicName: "valuesBeforeSlideStart", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", valueCommit: "valueCommit", modelValue: "modelValueChange", valueIndexToChange: "valueIndexToChangeChange", valuesBeforeSlideStart: "valuesBeforeSlideStartChange" }, providers: [RdxSliderOrientationContextService], ngImport: i0, template: `
|
529
530
|
<ng-template #transclude><ng-content /></ng-template>
|
530
531
|
|
531
532
|
<ng-container *ngIf="orientation() === 'horizontal'">
|
@@ -577,6 +578,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
577
578
|
selector: 'rdx-slider',
|
578
579
|
standalone: true,
|
579
580
|
imports: [RdxSliderHorizontalComponent, RdxSliderVerticalComponent, NgIf, NgTemplateOutlet],
|
581
|
+
providers: [RdxSliderOrientationContextService],
|
580
582
|
template: `
|
581
583
|
<ng-template #transclude><ng-content /></ng-template>
|
582
584
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-slider.mjs","sources":["../../../packages/primitives/slider/src/utils.ts","../../../packages/primitives/slider/src/slider-impl.directive.ts","../../../packages/primitives/slider/src/slider-horizontal.component.ts","../../../packages/primitives/slider/src/slider-orientation-context.service.ts","../../../packages/primitives/slider/src/slider-vertical.component.ts","../../../packages/primitives/slider/src/slider-root.component.ts","../../../packages/primitives/slider/src/slider-range.component.ts","../../../packages/primitives/slider/src/slider-thumb-impl.directive.ts","../../../packages/primitives/slider/src/slider-thumb.component.ts","../../../packages/primitives/slider/src/slider-track.component.ts","../../../packages/primitives/slider/index.ts","../../../packages/primitives/slider/radix-ng-primitives-slider.ts"],"sourcesContent":["// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nexport function linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\n/**\n * Verifies the minimum steps between all values is greater than or equal\n * to the expected minimum steps.\n *\n * @example\n * // returns false\n * hasMinStepsBetweenValues([1,2,3], 2);\n *\n * @example\n * // returns true\n * hasMinStepsBetweenValues([1,2,3], 1);\n */\nexport function hasMinStepsBetweenValues(values: number[], minStepsBetweenValues: number) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\n\n/**\n * Given a `values` array and a `nextValue`, determine which value in\n * the array is closest to `nextValue` and return its index.\n *\n * @example\n * // returns 1\n * getClosestValueIndex([10, 30], 25);\n */\nexport function getClosestValueIndex(values: number[], nextValue: number) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\n\n/**\n * Gets an array of steps between each value.\n *\n * @example\n * // returns [1, 9]\n * getStepsBetweenValues([10, 11, 20]);\n */\nexport function getStepsBetweenValues(values: number[]) {\n return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\n\n/**\n * Offsets the thumb centre point while sliding to ensure it remains\n * within the bounds of the slider when reaching the edges\n */\nexport function getThumbInBoundsOffset(width: number, left: number, direction: number) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\n\nexport function convertValueToPercentage(value: number, min: number, max: number) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, 0, 100);\n}\n\nexport function getDecimalCount(value: number) {\n return (String(value).split('.')[1] || '').length;\n}\n\nexport function roundValue(value: number, decimalCount: number) {\n const rounder = 10 ** decimalCount;\n return Math.round(value * rounder) / rounder;\n}\n\nexport function getNextSortedValues(prevValues: number[] = [], nextValue: number, atIndex: number) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\n\nexport const PAGE_KEYS = ['PageUp', 'PageDown'];\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\ntype SlideDirection = 'from-left' | 'from-right' | 'from-bottom' | 'from-top';\nexport const BACK_KEYS: Record<SlideDirection, string[]> = {\n 'from-left': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-right': ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n 'from-bottom': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-top': ['Home', 'PageDown', 'ArrowUp', 'ArrowLeft']\n};\n\nexport interface OrientationContext {\n direction: number;\n size: 'width' | 'height';\n startEdge: 'left' | 'top';\n endEdge: 'right' | 'bottom';\n}\n\nexport function clamp(\n value: number,\n min: number = Number.NEGATIVE_INFINITY,\n max: number = Number.POSITIVE_INFINITY\n): number {\n return Math.min(Math.max(value, min), max);\n}\n","import { Directive, EventEmitter, inject, Output } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { ARROW_KEYS, PAGE_KEYS } from './utils';\n\n@Directive({\n selector: '[rdxSliderImpl]',\n standalone: true,\n host: {\n role: 'slider',\n tabindex: '0',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'onPointerUp($event)'\n }\n})\nexport class RdxSliderImplDirective {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n\n @Output() slideStart = new EventEmitter<PointerEvent>();\n @Output() slideMove = new EventEmitter<PointerEvent>();\n @Output() slideEnd = new EventEmitter<PointerEvent>();\n @Output() homeKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() endKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() stepKeyDown = new EventEmitter<KeyboardEvent>();\n\n onKeyDown(event: KeyboardEvent) {\n if (event.key === 'Home') {\n this.homeKeyDown.emit(event);\n // Prevent scrolling to page start\n event.preventDefault();\n } else if (event.key === 'End') {\n this.endKeyDown.emit(event);\n // Prevent scrolling to page end\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n this.stepKeyDown.emit(event);\n // Prevent scrolling for directional key presses\n event.preventDefault();\n }\n }\n\n onPointerDown(event: PointerEvent) {\n const target = event.target as HTMLElement;\n target.setPointerCapture(event.pointerId);\n\n // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault();\n\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n if (this.rootContext.thumbElements.includes(target)) {\n target.focus();\n } else {\n this.slideStart.emit(event);\n }\n }\n\n onPointerMove(event: PointerEvent) {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n this.slideMove.emit(event);\n }\n }\n\n onPointerUp(event: PointerEvent) {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n this.slideEnd.emit(event);\n }\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RdxSliderImplDirective } from './slider-impl.directive';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { BACK_KEYS, linearScale } from './utils';\n\n@Component({\n selector: 'rdx-slider-horizontal',\n standalone: true,\n imports: [RdxSliderImplDirective],\n template: `\n <span\n #sliderElement\n [class]=\"className\"\n [attr.data-orientation]=\"'horizontal'\"\n [style]=\"{ '--rdx-slider-thumb-transform': 'translateX(-50%)' }\"\n (slideStart)=\"onSlideStart($event)\"\n (slideMove)=\"onSlideMove($event)\"\n (slideEnd)=\"onSlideEnd()\"\n (stepKeyDown)=\"onStepKeyDown($event)\"\n (endKeyDown)=\"endKeyDown.emit($event)\"\n (homeKeyDown)=\"homeKeyDown.emit($event)\"\n rdxSliderImpl\n >\n <ng-content />\n </span>\n `\n})\nexport class RdxSliderHorizontalComponent {\n private readonly rootContext = inject(RdxSliderRootComponent);\n\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n @Input() min = 0;\n @Input() max = 100;\n\n @Input() className = '';\n\n @Output() slideStart = new EventEmitter<number>();\n @Output() slideMove = new EventEmitter<number>();\n @Output() slideEnd = new EventEmitter<void>();\n @Output() stepKeyDown = new EventEmitter<{ event: KeyboardEvent; direction: number }>();\n @Output() endKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() homeKeyDown = new EventEmitter<KeyboardEvent>();\n\n private readonly sliderElement = viewChild<ElementRef>('sliderElement');\n\n private readonly rect = signal<DOMRect | undefined>(undefined);\n\n onSlideStart(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientX);\n this.slideStart.emit(value);\n }\n\n onSlideMove(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientX);\n this.slideMove.emit(value);\n }\n\n onSlideEnd() {\n this.rect.set(undefined);\n this.slideEnd.emit();\n }\n\n onStepKeyDown(event: KeyboardEvent) {\n const slideDirection = this.rootContext.isSlidingFromLeft() ? 'from-left' : 'from-right';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n\n this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });\n }\n\n private getValueFromPointer(pointerPosition: number): number {\n this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());\n const rect = this.rect();\n if (!rect) return 0;\n\n const input: [number, number] = [0, rect.width];\n const output: [number, number] = this.rootContext.isSlidingFromLeft()\n ? [this.min, this.max]\n : [this.max, this.min];\n\n const value = linearScale(input, output);\n this.rect.set(rect);\n\n return value(pointerPosition - rect.left);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface OrientationContext {\n startEdge: string;\n endEdge: string;\n direction: number;\n size: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RdxSliderOrientationContextService {\n private contextSignal = signal<OrientationContext>({\n startEdge: 'left',\n endEdge: 'right',\n direction: 1,\n size: 'width'\n });\n\n get context() {\n return this.contextSignal();\n }\n\n updateContext(context: Partial<OrientationContext>) {\n this.contextSignal.update((current) => ({\n ...current,\n ...context\n }));\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RdxSliderImplDirective } from './slider-impl.directive';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { BACK_KEYS, linearScale } from './utils';\n\n@Component({\n selector: 'rdx-slider-vertical',\n standalone: true,\n imports: [RdxSliderImplDirective],\n template: `\n <span\n #sliderElement\n [class]=\"className\"\n [attr.data-orientation]=\"'vertical'\"\n [style]=\"{ '--rdx-slider-thumb-transform': 'translateY(-50%)' }\"\n (slideStart)=\"onSlideStart($event)\"\n (slideMove)=\"onSlideMove($event)\"\n (slideEnd)=\"onSlideEnd()\"\n (stepKeyDown)=\"onStepKeyDown($event)\"\n (endKeyDown)=\"endKeyDown.emit($event)\"\n (homeKeyDown)=\"homeKeyDown.emit($event)\"\n rdxSliderImpl\n >\n <ng-content />\n </span>\n `\n})\nexport class RdxSliderVerticalComponent {\n private readonly rootContext = inject(RdxSliderRootComponent);\n\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n @Input() min = 0;\n @Input() max = 100;\n\n @Input() className = '';\n\n @Output() slideStart = new EventEmitter<number>();\n @Output() slideMove = new EventEmitter<number>();\n @Output() slideEnd = new EventEmitter<void>();\n @Output() stepKeyDown = new EventEmitter<{ event: KeyboardEvent; direction: number }>();\n @Output() endKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() homeKeyDown = new EventEmitter<KeyboardEvent>();\n\n private readonly sliderElement = viewChild<ElementRef>('sliderElement');\n\n private readonly rect = signal<DOMRect | undefined>(undefined);\n\n onSlideStart(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientY);\n this.slideStart.emit(value);\n }\n\n onSlideMove(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientY);\n this.slideMove.emit(value);\n }\n\n onSlideEnd() {\n this.rect.set(undefined);\n this.slideEnd.emit();\n }\n\n onStepKeyDown(event: KeyboardEvent) {\n const slideDirection = this.rootContext.isSlidingFromBottom() ? 'from-bottom' : 'from-top';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n\n this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });\n }\n\n private getValueFromPointer(pointerPosition: number): number {\n this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());\n const rect = this.rect();\n if (!rect) return 0;\n\n const input: [number, number] = [0, rect.height];\n const output: [number, number] = this.rootContext.isSlidingFromBottom()\n ? [this.max, this.min]\n : [this.min, this.max];\n\n const value = linearScale(input, output);\n this.rect.set(rect);\n\n return value(pointerPosition - rect.top);\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n Input,\n model,\n numberAttribute,\n OnInit,\n Output\n} from '@angular/core';\nimport { RdxSliderHorizontalComponent } from './slider-horizontal.component';\nimport { RdxSliderOrientationContextService } from './slider-orientation-context.service';\nimport { RdxSliderVerticalComponent } from './slider-vertical.component';\nimport {\n clamp,\n getClosestValueIndex,\n getDecimalCount,\n getNextSortedValues,\n hasMinStepsBetweenValues,\n roundValue\n} from './utils';\n\n@Component({\n selector: 'rdx-slider',\n standalone: true,\n imports: [RdxSliderHorizontalComponent, RdxSliderVerticalComponent, NgIf, NgTemplateOutlet],\n template: `\n <ng-template #transclude><ng-content /></ng-template>\n\n <ng-container *ngIf=\"orientation() === 'horizontal'\">\n <rdx-slider-horizontal\n [className]=\"className\"\n [min]=\"min()\"\n [max]=\"max()\"\n [dir]=\"dir()\"\n [inverted]=\"inverted()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.data-disabled]=\"disabled() ? '' : undefined\"\n (pointerdown)=\"onPointerDown()\"\n (slideStart)=\"handleSlideStart($event)\"\n (slideMove)=\"handleSlideMove($event)\"\n (slideEnd)=\"handleSlideEnd()\"\n (homeKeyDown)=\"updateValues(min(), 0, true)\"\n (endKeyDown)=\"updateValues(max(), modelValue().length - 1, true)\"\n (stepKeyDown)=\"handleStepKeyDown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"transclude\" />\n </rdx-slider-horizontal>\n </ng-container>\n\n <ng-container *ngIf=\"orientation() === 'vertical'\">\n <rdx-slider-vertical\n [className]=\"className\"\n [min]=\"min()\"\n [max]=\"max()\"\n [dir]=\"dir()\"\n [inverted]=\"inverted()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.data-disabled]=\"disabled() ? '' : undefined\"\n (pointerdown)=\"onPointerDown()\"\n (slideStart)=\"handleSlideStart($event)\"\n (slideMove)=\"handleSlideMove($event)\"\n (slideEnd)=\"handleSlideEnd()\"\n (homeKeyDown)=\"updateValues(min(), 0, true)\"\n (endKeyDown)=\"updateValues(max(), modelValue().length - 1, true)\"\n (stepKeyDown)=\"handleStepKeyDown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"transclude\" />\n </rdx-slider-vertical>\n </ng-container>\n `\n})\nexport class RdxSliderRootComponent implements OnInit {\n /** @ignore */\n readonly orientationContext = inject(RdxSliderOrientationContextService);\n\n readonly min = input<number, NumberInput>(0, { transform: numberAttribute });\n\n readonly max = input<number, NumberInput>(100, { transform: numberAttribute });\n\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n readonly minStepsBetweenThumbs = input<number, NumberInput>(0, { transform: numberAttribute });\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly dir = input<'ltr' | 'rtl'>('ltr');\n\n @Input() className: string = '';\n\n @Output() valueChange = new EventEmitter<number[]>();\n @Output() valueCommit = new EventEmitter<number[]>();\n\n readonly modelValue = model<number[]>([0]);\n\n /** @ignore */\n readonly valueIndexToChange = model(0);\n\n /** @ignore */\n readonly valuesBeforeSlideStart = model<number[]>([]);\n\n readonly isSlidingFromLeft = computed(\n () => (this.dir() === 'ltr' && !this.inverted()) || (this.dir() !== 'ltr' && this.inverted())\n );\n\n readonly isSlidingFromBottom = computed(() => !this.inverted());\n\n /** @ignore */\n thumbElements: HTMLElement[] = [];\n\n /** @ignore */\n ngOnInit() {\n const isHorizontal = this.orientation() === 'horizontal';\n\n if (isHorizontal) {\n this.orientationContext.updateContext({\n direction: this.isSlidingFromLeft() ? 1 : -1,\n size: 'width',\n startEdge: this.isSlidingFromLeft() ? 'left' : 'right',\n endEdge: this.isSlidingFromLeft() ? 'right' : 'left'\n });\n } else {\n this.orientationContext.updateContext({\n direction: this.isSlidingFromBottom() ? -1 : 1,\n size: 'height',\n startEdge: this.isSlidingFromBottom() ? 'bottom' : 'top',\n endEdge: this.isSlidingFromBottom() ? 'top' : 'bottom'\n });\n }\n }\n\n /** @ignore */\n onPointerDown() {\n this.valuesBeforeSlideStart.set([...this.modelValue()]);\n }\n\n /** @ignore */\n handleSlideStart(value: number): void {\n const closestIndex = getClosestValueIndex(this.modelValue(), value);\n this.updateValues(value, closestIndex);\n }\n\n /** @ignore */\n handleSlideMove(value: number): void {\n this.updateValues(value, this.valueIndexToChange());\n }\n\n /** @ignore */\n handleSlideEnd(): void {\n const prevValue = this.valuesBeforeSlideStart()[this.valueIndexToChange()];\n const nextValue = this.modelValue()[this.valueIndexToChange()];\n const hasChanged = nextValue !== prevValue;\n\n if (hasChanged) {\n this.valueCommit.emit([...this.modelValue()]);\n }\n }\n\n /** @ignore */\n handleStepKeyDown(event: { event: KeyboardEvent; direction: number }): void {\n const stepInDirection = this.step() * event.direction;\n const atIndex = this.valueIndexToChange();\n const currentValue = this.modelValue()[atIndex];\n this.updateValues(currentValue + stepInDirection, atIndex, true);\n }\n\n /** @ignore */\n updateValues(value: number, atIndex: number, commit = false): void {\n const decimalCount = getDecimalCount(this.step());\n const snapToStep = roundValue(\n Math.round((value - this.min()) / this.step()) * this.step() + this.min(),\n decimalCount\n );\n const nextValue = clamp(snapToStep, this.min(), this.max());\n\n const nextValues = getNextSortedValues(this.modelValue(), nextValue, atIndex);\n\n if (hasMinStepsBetweenValues(nextValues, this.minStepsBetweenThumbs() * this.step())) {\n this.valueIndexToChange.set(nextValues.indexOf(nextValue));\n const hasChanged = String(nextValues) !== String(this.modelValue());\n\n if (hasChanged) {\n this.modelValue.set(nextValues);\n this.valueChange.emit([...this.modelValue()]);\n this.thumbElements[this.valueIndexToChange()]?.focus();\n\n if (commit) {\n this.valueCommit.emit([...this.modelValue()]);\n }\n }\n }\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { convertValueToPercentage } from './utils';\n\n@Component({\n selector: 'rdx-slider-range',\n standalone: true,\n host: {\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[style]': 'rangeStyles()'\n },\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderRangeComponent {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n\n percentages = computed(() =>\n this.rootContext\n .modelValue()\n ?.map((value) => convertValueToPercentage(value, this.rootContext.min(), this.rootContext.max()))\n );\n\n offsetStart = computed(() => (this.rootContext.modelValue()!.length > 1 ? Math.min(...this.percentages()!) : 0));\n offsetEnd = computed(() => 100 - Math.max(...this.percentages()!));\n\n rangeStyles = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n return {\n [context.startEdge]: `${this.offsetStart()}%`,\n [context.endEdge]: `${this.offsetEnd()}%`\n };\n });\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { computed, Directive, ElementRef, inject, OnDestroy, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { convertValueToPercentage, getThumbInBoundsOffset } from './utils';\n\n@Directive({\n selector: '[rdxSliderThumbImpl]',\n standalone: true,\n host: {\n role: 'slider',\n '[tabindex]': 'rootContext.disabled() ? undefined : 0',\n\n '[attr.aria-valuenow]': 'rootContext.modelValue()',\n '[attr.aria-valuemin]': 'rootContext.min()',\n '[attr.aria-valuemax]': 'rootContext.max()',\n '[attr.aria-orientation]': 'rootContext.orientation()',\n\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n\n '[style]': 'combinedStyles()',\n\n '(focus)': 'onFocus()'\n }\n})\nexport class RdxSliderThumbImplDirective implements OnInit, OnDestroy {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n private readonly elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private resizeObserver!: ResizeObserver;\n\n isMounted = signal(false);\n\n thumbIndex = computed(() => {\n const thumbElement = this.elementRef.nativeElement;\n const index = this.rootContext.thumbElements.indexOf(thumbElement);\n return index >= 0 ? index : null;\n });\n\n value = computed(() => {\n const index = this.thumbIndex();\n if (index === null) return undefined;\n return this.rootContext.modelValue()?.[index];\n });\n\n percent = computed(() => {\n const val = this.value();\n if (val === undefined) return 0;\n return convertValueToPercentage(val, this.rootContext.min(), this.rootContext.max());\n });\n\n transform = computed(() => {\n const percent = this.percent();\n const offset = this.thumbInBoundsOffset();\n return `calc(${percent}% + ${offset}px)`;\n });\n\n orientationSize = signal(0);\n\n thumbInBoundsOffset = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n const size = this.orientationSize();\n const percent = this.percent();\n const direction = context.direction;\n\n return size ? getThumbInBoundsOffset(size, percent, direction) : 0;\n });\n\n combinedStyles = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n const startEdge = context.startEdge;\n const percent = this.percent();\n const offset = this.thumbInBoundsOffset();\n\n return {\n position: 'absolute',\n transform: 'var(--rdx-slider-thumb-transform)',\n display: (this.isMounted() && this.value()) === false ? 'none' : undefined,\n [startEdge]: `calc(${percent}% + ${offset}px)`\n };\n });\n\n onFocus() {\n if (this.thumbIndex() !== null) {\n this.rootContext.valueIndexToChange.set(this.thumbIndex()!);\n }\n }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n const thumbElement = this.elementRef.nativeElement;\n this.rootContext.thumbElements.push(thumbElement);\n\n this.resizeObserver = new ResizeObserver(() => {\n const rect = thumbElement.getBoundingClientRect();\n const context = this.rootContext.orientationContext.context;\n const size = context.size === 'width' ? rect.width : rect.height;\n this.orientationSize.set(size);\n });\n\n this.resizeObserver.observe(thumbElement);\n\n this.isMounted.set(true);\n }\n }\n\n ngOnDestroy() {\n const thumbElement = this.elementRef.nativeElement;\n const index = this.rootContext.thumbElements.indexOf(thumbElement);\n if (index >= 0) this.rootContext.thumbElements.splice(index, 1);\n\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(thumbElement);\n }\n\n this.isMounted.set(false);\n }\n}\n","import { Component } from '@angular/core';\nimport { RdxSliderThumbImplDirective } from './slider-thumb-impl.directive';\n\n@Component({\n selector: 'rdx-slider-thumb',\n standalone: true,\n hostDirectives: [RdxSliderThumbImplDirective],\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderThumbComponent {}\n","import { Component, inject } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\n\n@Component({\n selector: 'rdx-slider-track',\n standalone: true,\n host: {\n '[attr.data-disabled]': \"rootContext.disabled() ? '' : undefined\",\n '[attr.data-orientation]': 'rootContext.orientation()'\n },\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderTrackComponent {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n}\n","import { NgModule } from '@angular/core';\nimport { RdxSliderRangeComponent } from './src/slider-range.component';\nimport { RdxSliderRootComponent } from './src/slider-root.component';\nimport { RdxSliderThumbComponent } from './src/slider-thumb.component';\nimport { RdxSliderTrackComponent } from './src/slider-track.component';\n\nexport * from './src/slider-horizontal.component';\nexport * from './src/slider-impl.directive';\nexport * from './src/slider-range.component';\nexport * from './src/slider-root.component';\nexport * from './src/slider-thumb-impl.directive';\nexport * from './src/slider-thumb.component';\nexport * from './src/slider-track.component';\nexport * from './src/slider-vertical.component';\n\nconst _imports = [RdxSliderRootComponent, RdxSliderTrackComponent, RdxSliderRangeComponent, RdxSliderThumbComponent];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxSliderThumbImplDirective"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"radix-ng-primitives-slider.mjs","sources":["../../../packages/primitives/slider/src/utils.ts","../../../packages/primitives/slider/src/slider-impl.directive.ts","../../../packages/primitives/slider/src/slider-horizontal.component.ts","../../../packages/primitives/slider/src/slider-orientation-context.service.ts","../../../packages/primitives/slider/src/slider-vertical.component.ts","../../../packages/primitives/slider/src/slider-root.component.ts","../../../packages/primitives/slider/src/slider-range.component.ts","../../../packages/primitives/slider/src/slider-thumb-impl.directive.ts","../../../packages/primitives/slider/src/slider-thumb.component.ts","../../../packages/primitives/slider/src/slider-track.component.ts","../../../packages/primitives/slider/index.ts","../../../packages/primitives/slider/radix-ng-primitives-slider.ts"],"sourcesContent":["// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nexport function linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\n/**\n * Verifies the minimum steps between all values is greater than or equal\n * to the expected minimum steps.\n *\n * @example\n * // returns false\n * hasMinStepsBetweenValues([1,2,3], 2);\n *\n * @example\n * // returns true\n * hasMinStepsBetweenValues([1,2,3], 1);\n */\nexport function hasMinStepsBetweenValues(values: number[], minStepsBetweenValues: number) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\n\n/**\n * Given a `values` array and a `nextValue`, determine which value in\n * the array is closest to `nextValue` and return its index.\n *\n * @example\n * // returns 1\n * getClosestValueIndex([10, 30], 25);\n */\nexport function getClosestValueIndex(values: number[], nextValue: number) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\n\n/**\n * Gets an array of steps between each value.\n *\n * @example\n * // returns [1, 9]\n * getStepsBetweenValues([10, 11, 20]);\n */\nexport function getStepsBetweenValues(values: number[]) {\n return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\n\n/**\n * Offsets the thumb centre point while sliding to ensure it remains\n * within the bounds of the slider when reaching the edges\n */\nexport function getThumbInBoundsOffset(width: number, left: number, direction: number) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\n\nexport function convertValueToPercentage(value: number, min: number, max: number) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, 0, 100);\n}\n\nexport function getDecimalCount(value: number) {\n return (String(value).split('.')[1] || '').length;\n}\n\nexport function roundValue(value: number, decimalCount: number) {\n const rounder = 10 ** decimalCount;\n return Math.round(value * rounder) / rounder;\n}\n\nexport function getNextSortedValues(prevValues: number[] = [], nextValue: number, atIndex: number) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\n\nexport const PAGE_KEYS = ['PageUp', 'PageDown'];\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\ntype SlideDirection = 'from-left' | 'from-right' | 'from-bottom' | 'from-top';\nexport const BACK_KEYS: Record<SlideDirection, string[]> = {\n 'from-left': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-right': ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n 'from-bottom': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-top': ['Home', 'PageDown', 'ArrowUp', 'ArrowLeft']\n};\n\nexport interface OrientationContext {\n direction: number;\n size: 'width' | 'height';\n startEdge: 'left' | 'top';\n endEdge: 'right' | 'bottom';\n}\n\nexport function clamp(\n value: number,\n min: number = Number.NEGATIVE_INFINITY,\n max: number = Number.POSITIVE_INFINITY\n): number {\n return Math.min(Math.max(value, min), max);\n}\n","import { Directive, EventEmitter, inject, Output } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { ARROW_KEYS, PAGE_KEYS } from './utils';\n\n@Directive({\n selector: '[rdxSliderImpl]',\n standalone: true,\n host: {\n role: 'slider',\n tabindex: '0',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'onPointerUp($event)'\n }\n})\nexport class RdxSliderImplDirective {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n\n @Output() slideStart = new EventEmitter<PointerEvent>();\n @Output() slideMove = new EventEmitter<PointerEvent>();\n @Output() slideEnd = new EventEmitter<PointerEvent>();\n @Output() homeKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() endKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() stepKeyDown = new EventEmitter<KeyboardEvent>();\n\n onKeyDown(event: KeyboardEvent) {\n if (event.key === 'Home') {\n this.homeKeyDown.emit(event);\n // Prevent scrolling to page start\n event.preventDefault();\n } else if (event.key === 'End') {\n this.endKeyDown.emit(event);\n // Prevent scrolling to page end\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n this.stepKeyDown.emit(event);\n // Prevent scrolling for directional key presses\n event.preventDefault();\n }\n }\n\n onPointerDown(event: PointerEvent) {\n const target = event.target as HTMLElement;\n target.setPointerCapture(event.pointerId);\n\n // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault();\n\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n if (this.rootContext.thumbElements.includes(target)) {\n target.focus();\n } else {\n this.slideStart.emit(event);\n }\n }\n\n onPointerMove(event: PointerEvent) {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n this.slideMove.emit(event);\n }\n }\n\n onPointerUp(event: PointerEvent) {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n this.slideEnd.emit(event);\n }\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RdxSliderImplDirective } from './slider-impl.directive';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { BACK_KEYS, linearScale } from './utils';\n\n@Component({\n selector: 'rdx-slider-horizontal',\n standalone: true,\n imports: [RdxSliderImplDirective],\n template: `\n <span\n #sliderElement\n [class]=\"className\"\n [attr.data-orientation]=\"'horizontal'\"\n [style]=\"{ '--rdx-slider-thumb-transform': 'translateX(-50%)' }\"\n (slideStart)=\"onSlideStart($event)\"\n (slideMove)=\"onSlideMove($event)\"\n (slideEnd)=\"onSlideEnd()\"\n (stepKeyDown)=\"onStepKeyDown($event)\"\n (endKeyDown)=\"endKeyDown.emit($event)\"\n (homeKeyDown)=\"homeKeyDown.emit($event)\"\n rdxSliderImpl\n >\n <ng-content />\n </span>\n `\n})\nexport class RdxSliderHorizontalComponent {\n private readonly rootContext = inject(RdxSliderRootComponent);\n\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n @Input() min = 0;\n @Input() max = 100;\n\n @Input() className = '';\n\n @Output() slideStart = new EventEmitter<number>();\n @Output() slideMove = new EventEmitter<number>();\n @Output() slideEnd = new EventEmitter<void>();\n @Output() stepKeyDown = new EventEmitter<{ event: KeyboardEvent; direction: number }>();\n @Output() endKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() homeKeyDown = new EventEmitter<KeyboardEvent>();\n\n private readonly sliderElement = viewChild<ElementRef>('sliderElement');\n\n private readonly rect = signal<DOMRect | undefined>(undefined);\n\n onSlideStart(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientX);\n this.slideStart.emit(value);\n }\n\n onSlideMove(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientX);\n this.slideMove.emit(value);\n }\n\n onSlideEnd() {\n this.rect.set(undefined);\n this.slideEnd.emit();\n }\n\n onStepKeyDown(event: KeyboardEvent) {\n const slideDirection = this.rootContext.isSlidingFromLeft() ? 'from-left' : 'from-right';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n\n this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });\n }\n\n private getValueFromPointer(pointerPosition: number): number {\n this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());\n const rect = this.rect();\n if (!rect) return 0;\n\n const input: [number, number] = [0, rect.width];\n const output: [number, number] = this.rootContext.isSlidingFromLeft()\n ? [this.min, this.max]\n : [this.max, this.min];\n\n const value = linearScale(input, output);\n this.rect.set(rect);\n\n return value(pointerPosition - rect.left);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface OrientationContext {\n startEdge: string;\n endEdge: string;\n direction: number;\n size: string;\n}\n\n@Injectable()\nexport class RdxSliderOrientationContextService {\n private contextSignal = signal<OrientationContext>({\n startEdge: 'left',\n endEdge: 'right',\n direction: 1,\n size: 'width'\n });\n\n get context() {\n return this.contextSignal();\n }\n\n updateContext(context: Partial<OrientationContext>) {\n this.contextSignal.update((current) => ({\n ...current,\n ...context\n }));\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RdxSliderImplDirective } from './slider-impl.directive';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { BACK_KEYS, linearScale } from './utils';\n\n@Component({\n selector: 'rdx-slider-vertical',\n standalone: true,\n imports: [RdxSliderImplDirective],\n template: `\n <span\n #sliderElement\n [class]=\"className\"\n [attr.data-orientation]=\"'vertical'\"\n [style]=\"{ '--rdx-slider-thumb-transform': 'translateY(-50%)' }\"\n (slideStart)=\"onSlideStart($event)\"\n (slideMove)=\"onSlideMove($event)\"\n (slideEnd)=\"onSlideEnd()\"\n (stepKeyDown)=\"onStepKeyDown($event)\"\n (endKeyDown)=\"endKeyDown.emit($event)\"\n (homeKeyDown)=\"homeKeyDown.emit($event)\"\n rdxSliderImpl\n >\n <ng-content />\n </span>\n `\n})\nexport class RdxSliderVerticalComponent {\n private readonly rootContext = inject(RdxSliderRootComponent);\n\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n @Input() min = 0;\n @Input() max = 100;\n\n @Input() className = '';\n\n @Output() slideStart = new EventEmitter<number>();\n @Output() slideMove = new EventEmitter<number>();\n @Output() slideEnd = new EventEmitter<void>();\n @Output() stepKeyDown = new EventEmitter<{ event: KeyboardEvent; direction: number }>();\n @Output() endKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() homeKeyDown = new EventEmitter<KeyboardEvent>();\n\n private readonly sliderElement = viewChild<ElementRef>('sliderElement');\n\n private readonly rect = signal<DOMRect | undefined>(undefined);\n\n onSlideStart(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientY);\n this.slideStart.emit(value);\n }\n\n onSlideMove(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientY);\n this.slideMove.emit(value);\n }\n\n onSlideEnd() {\n this.rect.set(undefined);\n this.slideEnd.emit();\n }\n\n onStepKeyDown(event: KeyboardEvent) {\n const slideDirection = this.rootContext.isSlidingFromBottom() ? 'from-bottom' : 'from-top';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n\n this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });\n }\n\n private getValueFromPointer(pointerPosition: number): number {\n this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());\n const rect = this.rect();\n if (!rect) return 0;\n\n const input: [number, number] = [0, rect.height];\n const output: [number, number] = this.rootContext.isSlidingFromBottom()\n ? [this.max, this.min]\n : [this.min, this.max];\n\n const value = linearScale(input, output);\n this.rect.set(rect);\n\n return value(pointerPosition - rect.top);\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n Input,\n model,\n numberAttribute,\n OnInit,\n Output\n} from '@angular/core';\nimport { RdxSliderHorizontalComponent } from './slider-horizontal.component';\nimport { RdxSliderOrientationContextService } from './slider-orientation-context.service';\nimport { RdxSliderVerticalComponent } from './slider-vertical.component';\nimport {\n clamp,\n getClosestValueIndex,\n getDecimalCount,\n getNextSortedValues,\n hasMinStepsBetweenValues,\n roundValue\n} from './utils';\n\n@Component({\n selector: 'rdx-slider',\n standalone: true,\n imports: [RdxSliderHorizontalComponent, RdxSliderVerticalComponent, NgIf, NgTemplateOutlet],\n providers: [RdxSliderOrientationContextService],\n template: `\n <ng-template #transclude><ng-content /></ng-template>\n\n <ng-container *ngIf=\"orientation() === 'horizontal'\">\n <rdx-slider-horizontal\n [className]=\"className\"\n [min]=\"min()\"\n [max]=\"max()\"\n [dir]=\"dir()\"\n [inverted]=\"inverted()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.data-disabled]=\"disabled() ? '' : undefined\"\n (pointerdown)=\"onPointerDown()\"\n (slideStart)=\"handleSlideStart($event)\"\n (slideMove)=\"handleSlideMove($event)\"\n (slideEnd)=\"handleSlideEnd()\"\n (homeKeyDown)=\"updateValues(min(), 0, true)\"\n (endKeyDown)=\"updateValues(max(), modelValue().length - 1, true)\"\n (stepKeyDown)=\"handleStepKeyDown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"transclude\" />\n </rdx-slider-horizontal>\n </ng-container>\n\n <ng-container *ngIf=\"orientation() === 'vertical'\">\n <rdx-slider-vertical\n [className]=\"className\"\n [min]=\"min()\"\n [max]=\"max()\"\n [dir]=\"dir()\"\n [inverted]=\"inverted()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.data-disabled]=\"disabled() ? '' : undefined\"\n (pointerdown)=\"onPointerDown()\"\n (slideStart)=\"handleSlideStart($event)\"\n (slideMove)=\"handleSlideMove($event)\"\n (slideEnd)=\"handleSlideEnd()\"\n (homeKeyDown)=\"updateValues(min(), 0, true)\"\n (endKeyDown)=\"updateValues(max(), modelValue().length - 1, true)\"\n (stepKeyDown)=\"handleStepKeyDown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"transclude\" />\n </rdx-slider-vertical>\n </ng-container>\n `\n})\nexport class RdxSliderRootComponent implements OnInit {\n /** @ignore */\n readonly orientationContext = inject(RdxSliderOrientationContextService);\n\n readonly min = input<number, NumberInput>(0, { transform: numberAttribute });\n\n readonly max = input<number, NumberInput>(100, { transform: numberAttribute });\n\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n readonly minStepsBetweenThumbs = input<number, NumberInput>(0, { transform: numberAttribute });\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly dir = input<'ltr' | 'rtl'>('ltr');\n\n @Input() className: string = '';\n\n @Output() valueChange = new EventEmitter<number[]>();\n @Output() valueCommit = new EventEmitter<number[]>();\n\n readonly modelValue = model<number[]>([0]);\n\n /** @ignore */\n readonly valueIndexToChange = model(0);\n\n /** @ignore */\n readonly valuesBeforeSlideStart = model<number[]>([]);\n\n /** @ignore */\n readonly isSlidingFromLeft = computed(\n () => (this.dir() === 'ltr' && !this.inverted()) || (this.dir() !== 'ltr' && this.inverted())\n );\n\n /** @ignore */\n readonly isSlidingFromBottom = computed(() => !this.inverted());\n\n /** @ignore */\n thumbElements: HTMLElement[] = [];\n\n /** @ignore */\n ngOnInit() {\n const isHorizontal = this.orientation() === 'horizontal';\n\n if (isHorizontal) {\n this.orientationContext.updateContext({\n direction: this.isSlidingFromLeft() ? 1 : -1,\n size: 'width',\n startEdge: this.isSlidingFromLeft() ? 'left' : 'right',\n endEdge: this.isSlidingFromLeft() ? 'right' : 'left'\n });\n } else {\n this.orientationContext.updateContext({\n direction: this.isSlidingFromBottom() ? -1 : 1,\n size: 'height',\n startEdge: this.isSlidingFromBottom() ? 'bottom' : 'top',\n endEdge: this.isSlidingFromBottom() ? 'top' : 'bottom'\n });\n }\n }\n\n /** @ignore */\n onPointerDown() {\n this.valuesBeforeSlideStart.set([...this.modelValue()]);\n }\n\n /** @ignore */\n handleSlideStart(value: number): void {\n const closestIndex = getClosestValueIndex(this.modelValue(), value);\n this.updateValues(value, closestIndex);\n }\n\n /** @ignore */\n handleSlideMove(value: number): void {\n this.updateValues(value, this.valueIndexToChange());\n }\n\n /** @ignore */\n handleSlideEnd(): void {\n const prevValue = this.valuesBeforeSlideStart()[this.valueIndexToChange()];\n const nextValue = this.modelValue()[this.valueIndexToChange()];\n const hasChanged = nextValue !== prevValue;\n\n if (hasChanged) {\n this.valueCommit.emit([...this.modelValue()]);\n }\n }\n\n /** @ignore */\n handleStepKeyDown(event: { event: KeyboardEvent; direction: number }): void {\n const stepInDirection = this.step() * event.direction;\n const atIndex = this.valueIndexToChange();\n const currentValue = this.modelValue()[atIndex];\n this.updateValues(currentValue + stepInDirection, atIndex, true);\n }\n\n /** @ignore */\n updateValues(value: number, atIndex: number, commit = false): void {\n const decimalCount = getDecimalCount(this.step());\n const snapToStep = roundValue(\n Math.round((value - this.min()) / this.step()) * this.step() + this.min(),\n decimalCount\n );\n const nextValue = clamp(snapToStep, this.min(), this.max());\n\n const nextValues = getNextSortedValues(this.modelValue(), nextValue, atIndex);\n\n if (hasMinStepsBetweenValues(nextValues, this.minStepsBetweenThumbs() * this.step())) {\n this.valueIndexToChange.set(nextValues.indexOf(nextValue));\n const hasChanged = String(nextValues) !== String(this.modelValue());\n\n if (hasChanged) {\n this.modelValue.set(nextValues);\n this.valueChange.emit([...this.modelValue()]);\n this.thumbElements[this.valueIndexToChange()]?.focus();\n\n if (commit) {\n this.valueCommit.emit([...this.modelValue()]);\n }\n }\n }\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { convertValueToPercentage } from './utils';\n\n@Component({\n selector: 'rdx-slider-range',\n standalone: true,\n host: {\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[style]': 'rangeStyles()'\n },\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderRangeComponent {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n\n percentages = computed(() =>\n this.rootContext\n .modelValue()\n ?.map((value) => convertValueToPercentage(value, this.rootContext.min(), this.rootContext.max()))\n );\n\n offsetStart = computed(() => (this.rootContext.modelValue()!.length > 1 ? Math.min(...this.percentages()!) : 0));\n offsetEnd = computed(() => 100 - Math.max(...this.percentages()!));\n\n rangeStyles = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n return {\n [context.startEdge]: `${this.offsetStart()}%`,\n [context.endEdge]: `${this.offsetEnd()}%`\n };\n });\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { computed, Directive, ElementRef, inject, OnDestroy, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { convertValueToPercentage, getThumbInBoundsOffset } from './utils';\n\n@Directive({\n selector: '[rdxSliderThumbImpl]',\n standalone: true,\n host: {\n role: 'slider',\n '[tabindex]': 'rootContext.disabled() ? undefined : 0',\n\n '[attr.aria-valuenow]': 'rootContext.modelValue()',\n '[attr.aria-valuemin]': 'rootContext.min()',\n '[attr.aria-valuemax]': 'rootContext.max()',\n '[attr.aria-orientation]': 'rootContext.orientation()',\n\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n\n '[style]': 'combinedStyles()',\n\n '(focus)': 'onFocus()'\n }\n})\nexport class RdxSliderThumbImplDirective implements OnInit, OnDestroy {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n private readonly elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private resizeObserver!: ResizeObserver;\n\n isMounted = signal(false);\n\n thumbIndex = computed(() => {\n const thumbElement = this.elementRef.nativeElement;\n const index = this.rootContext.thumbElements.indexOf(thumbElement);\n return index >= 0 ? index : null;\n });\n\n value = computed(() => {\n const index = this.thumbIndex();\n if (index === null) return undefined;\n return this.rootContext.modelValue()?.[index];\n });\n\n percent = computed(() => {\n const val = this.value();\n if (val === undefined) return 0;\n return convertValueToPercentage(val, this.rootContext.min(), this.rootContext.max());\n });\n\n transform = computed(() => {\n const percent = this.percent();\n const offset = this.thumbInBoundsOffset();\n return `calc(${percent}% + ${offset}px)`;\n });\n\n orientationSize = signal(0);\n\n thumbInBoundsOffset = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n const size = this.orientationSize();\n const percent = this.percent();\n const direction = context.direction;\n\n return size ? getThumbInBoundsOffset(size, percent, direction) : 0;\n });\n\n combinedStyles = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n const startEdge = context.startEdge;\n const percent = this.percent();\n const offset = this.thumbInBoundsOffset();\n\n return {\n position: 'absolute',\n transform: 'var(--rdx-slider-thumb-transform)',\n display: (this.isMounted() && this.value()) === false ? 'none' : undefined,\n [startEdge]: `calc(${percent}% + ${offset}px)`\n };\n });\n\n onFocus() {\n if (this.thumbIndex() !== null) {\n this.rootContext.valueIndexToChange.set(this.thumbIndex()!);\n }\n }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n const thumbElement = this.elementRef.nativeElement;\n this.rootContext.thumbElements.push(thumbElement);\n\n this.resizeObserver = new ResizeObserver(() => {\n const rect = thumbElement.getBoundingClientRect();\n const context = this.rootContext.orientationContext.context;\n const size = context.size === 'width' ? rect.width : rect.height;\n this.orientationSize.set(size);\n });\n\n this.resizeObserver.observe(thumbElement);\n\n this.isMounted.set(true);\n }\n }\n\n ngOnDestroy() {\n const thumbElement = this.elementRef.nativeElement;\n const index = this.rootContext.thumbElements.indexOf(thumbElement);\n if (index >= 0) this.rootContext.thumbElements.splice(index, 1);\n\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(thumbElement);\n }\n\n this.isMounted.set(false);\n }\n}\n","import { Component } from '@angular/core';\nimport { RdxSliderThumbImplDirective } from './slider-thumb-impl.directive';\n\n@Component({\n selector: 'rdx-slider-thumb',\n standalone: true,\n hostDirectives: [RdxSliderThumbImplDirective],\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderThumbComponent {}\n","import { Component, inject } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\n\n@Component({\n selector: 'rdx-slider-track',\n standalone: true,\n host: {\n '[attr.data-disabled]': \"rootContext.disabled() ? '' : undefined\",\n '[attr.data-orientation]': 'rootContext.orientation()'\n },\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderTrackComponent {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n}\n","import { NgModule } from '@angular/core';\nimport { RdxSliderRangeComponent } from './src/slider-range.component';\nimport { RdxSliderRootComponent } from './src/slider-root.component';\nimport { RdxSliderThumbComponent } from './src/slider-thumb.component';\nimport { RdxSliderTrackComponent } from './src/slider-track.component';\n\nexport * from './src/slider-horizontal.component';\nexport * from './src/slider-impl.directive';\nexport * from './src/slider-range.component';\nexport * from './src/slider-root.component';\nexport * from './src/slider-thumb-impl.directive';\nexport * from './src/slider-thumb.component';\nexport * from './src/slider-track.component';\nexport * from './src/slider-vertical.component';\n\nconst _imports = [RdxSliderRootComponent, RdxSliderTrackComponent, RdxSliderRangeComponent, RdxSliderThumbComponent];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxSliderThumbImplDirective"],"mappings":"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"}
|
@@ -5,7 +5,7 @@ import { RdxVisuallyHiddenInputDirective } from '@radix-ng/primitives/visually-h
|
|
5
5
|
|
6
6
|
class RdxToggleInputDirective {
|
7
7
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxToggleInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
8
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: RdxToggleInputDirective, isStandalone: true, selector: "[rdxToggleInput]", host: { attributes: { "type": "checkbox" } }, exportAs: ["rdxToggleInput"], hostDirectives: [{ directive: i1.RdxVisuallyHiddenInputDirective, inputs: ["name", "name", "required", "required"] }], ngImport: i0 }); }
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: RdxToggleInputDirective, isStandalone: true, selector: "[rdxToggleInput]", host: { attributes: { "type": "checkbox" } }, exportAs: ["rdxToggleInput"], hostDirectives: [{ directive: i1.RdxVisuallyHiddenInputDirective, inputs: ["name", "name", "required", "required", "value", "value"] }], ngImport: i0 }); }
|
9
9
|
}
|
10
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxToggleInputDirective, decorators: [{
|
11
11
|
type: Directive,
|
@@ -18,7 +18,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
18
18
|
directive: RdxVisuallyHiddenInputDirective,
|
19
19
|
inputs: [
|
20
20
|
'name',
|
21
|
-
'required'
|
21
|
+
'required',
|
22
|
+
'value'
|
22
23
|
]
|
23
24
|
}
|
24
25
|
],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-toggle.mjs","sources":["../../../packages/primitives/toggle/src/toggle-input.directive.ts","../../../packages/primitives/toggle/src/toggle.directive.ts","../../../packages/primitives/toggle/radix-ng-primitives-toggle.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxVisuallyHiddenInputDirective } from '@radix-ng/primitives/visually-hidden';\n\n@Directive({\n selector: '[rdxToggleInput]',\n exportAs: 'rdxToggleInput',\n standalone: true,\n hostDirectives: [\n {\n directive: RdxVisuallyHiddenInputDirective,\n inputs: [\n 'name',\n 'required'\n ]\n }\n ],\n host: {\n type: 'checkbox'\n }\n})\nexport class RdxToggleInputDirective {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, model, output, OutputEmitterRef } from '@angular/core';\n\nexport interface ToggleProps {\n /**\n * The controlled state of the toggle.\n */\n pressed?: boolean;\n\n /**\n * The state of the toggle when initially rendered. Use `defaultPressed`\n * if you do not need to control the state of the toggle.\n * @defaultValue false\n */\n defaultPressed?: boolean;\n\n /**\n * The callback that fires when the state of the toggle changes.\n */\n onPressedChange?: OutputEmitterRef<boolean>;\n\n /**\n * Whether the toggle is disabled.\n * @defaultValue false\n */\n disabled?: boolean;\n}\n\n@Directive({\n selector: '[rdxToggle]',\n exportAs: 'rdxToggle',\n standalone: true,\n host: {\n '[attr.aria-pressed]': 'pressed()',\n '[attr.data-state]': 'pressed() ? \"on\" : \"off\"',\n '[attr.data-disabled]': 'disabled()',\n '[disabled]': 'disabled()',\n\n '(click)': 'toggle()'\n }\n})\nexport class RdxToggleDirective {\n /**\n * The pressed state of the toggle when it is initially rendered.\n * Use when you do not need to control its pressed state.\n */\n readonly defaultPressed = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The controlled pressed state of the toggle.\n * Must be used in conjunction with `onPressedChange`.\n */\n readonly pressed = model<boolean>(this.defaultPressed());\n\n /**\n * When true, prevents the user from interacting with the toggle.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Event handler called when the pressed state of the toggle changes.\n */\n readonly onPressedChange = output<boolean>();\n\n protected toggle(): void {\n if (!this.disabled()) {\n this.pressed.set(!this.pressed());\n this.onPressedChange.emit(this.pressed());\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"radix-ng-primitives-toggle.mjs","sources":["../../../packages/primitives/toggle/src/toggle-input.directive.ts","../../../packages/primitives/toggle/src/toggle.directive.ts","../../../packages/primitives/toggle/radix-ng-primitives-toggle.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxVisuallyHiddenInputDirective } from '@radix-ng/primitives/visually-hidden';\n\n@Directive({\n selector: '[rdxToggleInput]',\n exportAs: 'rdxToggleInput',\n standalone: true,\n hostDirectives: [\n {\n directive: RdxVisuallyHiddenInputDirective,\n inputs: [\n 'name',\n 'required',\n 'value'\n ]\n }\n ],\n host: {\n type: 'checkbox'\n }\n})\nexport class RdxToggleInputDirective {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, model, output, OutputEmitterRef } from '@angular/core';\n\nexport interface ToggleProps {\n /**\n * The controlled state of the toggle.\n */\n pressed?: boolean;\n\n /**\n * The state of the toggle when initially rendered. Use `defaultPressed`\n * if you do not need to control the state of the toggle.\n * @defaultValue false\n */\n defaultPressed?: boolean;\n\n /**\n * The callback that fires when the state of the toggle changes.\n */\n onPressedChange?: OutputEmitterRef<boolean>;\n\n /**\n * Whether the toggle is disabled.\n * @defaultValue false\n */\n disabled?: boolean;\n}\n\n@Directive({\n selector: '[rdxToggle]',\n exportAs: 'rdxToggle',\n standalone: true,\n host: {\n '[attr.aria-pressed]': 'pressed()',\n '[attr.data-state]': 'pressed() ? \"on\" : \"off\"',\n '[attr.data-disabled]': 'disabled()',\n '[disabled]': 'disabled()',\n\n '(click)': 'toggle()'\n }\n})\nexport class RdxToggleDirective {\n /**\n * The pressed state of the toggle when it is initially rendered.\n * Use when you do not need to control its pressed state.\n */\n readonly defaultPressed = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The controlled pressed state of the toggle.\n * Must be used in conjunction with `onPressedChange`.\n */\n readonly pressed = model<boolean>(this.defaultPressed());\n\n /**\n * When true, prevents the user from interacting with the toggle.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Event handler called when the pressed state of the toggle changes.\n */\n readonly onPressedChange = output<boolean>();\n\n protected toggle(): void {\n if (!this.disabled()) {\n this.pressed.set(!this.pressed());\n this.onPressedChange.emit(this.pressed());\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAqBa,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAlBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,+BAA+B;AAC1C,4BAAA,MAAM,EAAE;gCACJ,MAAM;gCACN,UAAU;gCACV;AACH;AACJ;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE;AACT;AACJ,iBAAA;;;MCqBY,kBAAkB,CAAA;AAb/B,IAAA,WAAA,GAAA;AAcI;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAwB,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE9F;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAU,IAAI,CAAC,cAAc,EAAE,CAAC;AAExD;;AAEG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAwB,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAExF;;AAEG;QACM,IAAe,CAAA,eAAA,GAAG,MAAM,EAAW;AAQ/C;IANa,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;;+GA1BxC,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,mBAAmB,EAAE,0BAA0B;AAC/C,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,YAAY,EAAE,YAAY;AAE1B,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;;;ACxCD;;AAEG;;;;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@radix-ng/primitives",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.19.0",
|
4
4
|
"license": "MIT",
|
5
5
|
"publishConfig": {
|
6
6
|
"access": "public"
|
@@ -127,6 +127,12 @@
|
|
127
127
|
"esm": "./esm2022/radio/radix-ng-primitives-radio.mjs",
|
128
128
|
"default": "./fesm2022/radix-ng-primitives-radio.mjs"
|
129
129
|
},
|
130
|
+
"./roving-focus": {
|
131
|
+
"types": "./roving-focus/index.d.ts",
|
132
|
+
"esm2022": "./esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs",
|
133
|
+
"esm": "./esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs",
|
134
|
+
"default": "./fesm2022/radix-ng-primitives-roving-focus.mjs"
|
135
|
+
},
|
130
136
|
"./select": {
|
131
137
|
"types": "./select/index.d.ts",
|
132
138
|
"esm2022": "./esm2022/select/radix-ng-primitives-select.mjs",
|
package/radio/index.d.ts
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "@radix-ng/primitives/visually-hidden";
|
3
|
+
export declare class RdxRadioItemInputDirective {
|
4
|
+
private readonly radioItem;
|
5
|
+
readonly name: import("@angular/core").InputSignal<string | undefined>;
|
6
|
+
readonly value: import("@angular/core").Signal<string | undefined>;
|
7
|
+
readonly checked: import("@angular/core").Signal<true | undefined>;
|
8
|
+
readonly required: import("@angular/core").InputSignal<boolean | undefined>;
|
9
|
+
readonly disabled: import("@angular/core").InputSignal<boolean | undefined>;
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RdxRadioItemInputDirective, never>;
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxRadioItemInputDirective, "[rdxRadioItemInput]", ["rdxRadioItemInput"], { "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxVisuallyHiddenDirective; inputs: { "feature": "feature"; }; outputs: {}; }]>;
|
12
|
+
}
|
@@ -1,21 +1,30 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
2
|
+
import { InjectionToken, OnInit } from '@angular/core';
|
3
3
|
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
4
5
|
export declare const RdxRadioItemToken: InjectionToken<RdxRadioItemDirective>;
|
5
6
|
export declare function injectRadioItem(): RdxRadioItemDirective;
|
6
|
-
export declare class RdxRadioItemDirective implements
|
7
|
+
export declare class RdxRadioItemDirective implements OnInit {
|
7
8
|
private readonly radioGroup;
|
8
|
-
readonly
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
private readonly elementRef;
|
10
|
+
readonly value: import("@angular/core").InputSignal<string>;
|
11
|
+
readonly id: import("@angular/core").InputSignal<string | undefined>;
|
12
|
+
readonly required: import("@angular/core").InputSignal<boolean | undefined>;
|
13
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
|
14
|
+
private readonly ARROW_KEYS;
|
15
|
+
private readonly isArrowKeyPressedSignal;
|
16
|
+
/** @ignore */
|
14
17
|
ngOnInit(): void;
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
/** @ignore */
|
19
|
+
get checked(): boolean;
|
20
|
+
/** @ignore */
|
21
|
+
onClick(): void;
|
22
|
+
/** @ignore */
|
23
|
+
onKeyDown(event: KeyboardEvent): void;
|
24
|
+
/** @ignore */
|
25
|
+
onKeyUp(): void;
|
26
|
+
/** @ignore */
|
27
|
+
onFocus(): void;
|
18
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<RdxRadioItemDirective, never>;
|
19
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxRadioItemDirective, "[rdxRadioItem]", ["rdxRadioItem"], { "id": { "alias": "id"; "required": false; }; "
|
20
|
-
static ngAcceptInputType_disabled: unknown;
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxRadioItemDirective, "[rdxRadioItem]", ["rdxRadioItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusItemDirective; inputs: { "tabStopId": "id"; "focusable": "focusable"; "active": "active"; "allowShiftKey": "allowShiftKey"; }; outputs: {}; }]>;
|
21
30
|
}
|
@@ -1,25 +1,15 @@
|
|
1
|
-
import {
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
2
|
import { ControlValueAccessor } from '@angular/forms';
|
3
|
-
import {
|
3
|
+
import { Orientation } from '@radix-ng/primitives/roving-focus';
|
4
4
|
import { RadioGroupDirective, RadioGroupProps } from './radio-tokens';
|
5
5
|
import * as i0 from "@angular/core";
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
private destroy$;
|
10
|
-
name?: string | undefined;
|
11
|
-
value?: string;
|
6
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
7
|
+
export declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirective, ControlValueAccessor {
|
8
|
+
readonly value: import("@angular/core").ModelSignal<string | undefined>;
|
12
9
|
disabled: boolean;
|
13
|
-
dir?: string;
|
14
10
|
defaultValue?: string;
|
15
|
-
|
16
|
-
|
17
|
-
* Horizontal radio buttons can sometimes be challenging to scan and localize.
|
18
|
-
* The horizontal arrangement of radio buttons may also lead to difficulties in determining which
|
19
|
-
* label corresponds to which button: whether the label is above or below the button.
|
20
|
-
* @default 'vertical'
|
21
|
-
*/
|
22
|
-
readonly _orientation = "vertical";
|
11
|
+
required: boolean;
|
12
|
+
orientation: Orientation;
|
23
13
|
/**
|
24
14
|
* Event handler called when the value changes.
|
25
15
|
*/
|
@@ -30,43 +20,37 @@ export declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGro
|
|
30
20
|
private onChange;
|
31
21
|
/**
|
32
22
|
* The callback function to call when the radio group is touched.
|
23
|
+
* @ignore
|
33
24
|
*/
|
34
25
|
onTouched: () => void;
|
35
|
-
ngAfterContentInit(): void;
|
36
|
-
ngOnDestroy(): void;
|
37
26
|
/**
|
38
27
|
* Select a radio item.
|
39
28
|
* @param value The value of the radio item to select.
|
29
|
+
* @ignore
|
40
30
|
*/
|
41
31
|
select(value: string): void;
|
42
32
|
/**
|
43
33
|
* Update the value of the radio group.
|
44
34
|
* @param value The new value of the radio group.
|
45
|
-
* @
|
35
|
+
* @ignore
|
46
36
|
*/
|
47
37
|
writeValue(value: string): void;
|
48
38
|
/**
|
49
39
|
* Register a callback function to call when the value of the radio group changes.
|
50
40
|
* @param fn The callback function to call when the value of the radio group changes.
|
51
|
-
* @
|
41
|
+
* @ignore
|
52
42
|
*/
|
53
43
|
registerOnChange(fn: (value: string) => void): void;
|
44
|
+
/** @ignore */
|
54
45
|
registerOnTouched(fn: () => void): void;
|
55
46
|
/**
|
56
47
|
* Set the disabled state of the radio group.
|
57
48
|
* @param isDisabled Whether the radio group is disabled.
|
58
|
-
* @
|
49
|
+
* @ignore
|
59
50
|
*/
|
60
51
|
setDisabledState(isDisabled: boolean): void;
|
61
|
-
|
62
|
-
* When focus leaves the radio group.
|
63
|
-
*/
|
64
|
-
protected onFocusin(event: FocusEvent): void;
|
65
|
-
protected onKeydown(event: KeyboardEvent): void;
|
66
|
-
private selectFocusedItem;
|
67
|
-
private updateActiveItem;
|
68
|
-
private tabNavigation;
|
52
|
+
protected onKeydown(): void;
|
69
53
|
static ɵfac: i0.ɵɵFactoryDeclaration<RdxRadioGroupDirective, never>;
|
70
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxRadioGroupDirective, "[rdxRadioRoot]", ["rdxRadioRoot"], { "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "
|
54
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxRadioGroupDirective, "[rdxRadioRoot]", ["rdxRadioRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; }; "defaultValue": { "alias": "defaultValue"; "required": false; }; "required": { "alias": "required"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, [{ directive: typeof i1.RdxRovingFocusGroupDirective; inputs: { "dir": "dir"; "orientation": "orientation"; "loop": "loop"; }; outputs: {}; }]>;
|
71
55
|
static ngAcceptInputType_disabled: unknown;
|
72
56
|
}
|
@@ -1,12 +1,12 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
1
|
+
import { InjectionToken, ModelSignal } from '@angular/core';
|
2
2
|
export interface RadioGroupProps {
|
3
3
|
name?: string;
|
4
4
|
disabled?: boolean;
|
5
5
|
defaultValue?: string;
|
6
|
-
value?: string
|
6
|
+
value?: ModelSignal<string | undefined>;
|
7
7
|
}
|
8
8
|
export interface RadioGroupDirective extends RadioGroupProps {
|
9
|
-
select(value: string): void;
|
9
|
+
select(value: string | undefined): void;
|
10
10
|
onTouched(): void;
|
11
11
|
}
|
12
12
|
export declare const RDX_RADIO_GROUP: InjectionToken<RadioGroupDirective>;
|