ng-primitives 0.0.5
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/README.md +7 -0
- package/a11y/README.md +3 -0
- package/a11y/index.d.ts +8 -0
- package/a11y/visually-hidden/visually-hidden.directive.d.ts +5 -0
- package/accordion/README.md +3 -0
- package/accordion/accordion/accordion.directive.d.ts +45 -0
- package/accordion/accordion/accordion.token.d.ts +15 -0
- package/accordion/accordion-content/accordion-content.directive.d.ts +25 -0
- package/accordion/accordion-content/accordion-content.token.d.ts +15 -0
- package/accordion/accordion-item/accordion-item.directive.d.ts +45 -0
- package/accordion/accordion-item/accordion-item.token.d.ts +15 -0
- package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +21 -0
- package/accordion/accordion-trigger/accordion-trigger.token.d.ts +15 -0
- package/accordion/config/accordion.config.d.ts +39 -0
- package/accordion/index.d.ts +16 -0
- package/avatar/README.md +3 -0
- package/avatar/avatar/avatar.directive.d.ts +22 -0
- package/avatar/avatar/avatar.token.d.ts +15 -0
- package/avatar/avatar-fallback/avatar-fallback.directive.d.ts +45 -0
- package/avatar/avatar-image/avatar-image.directive.d.ts +28 -0
- package/avatar/config/avatar.config.d.ts +28 -0
- package/avatar/index.d.ts +12 -0
- package/checkbox/README.md +3 -0
- package/checkbox/checkbox/checkbox.directive.d.ts +89 -0
- package/checkbox/checkbox/checkbox.token.d.ts +15 -0
- package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +19 -0
- package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +15 -0
- package/checkbox/checkbox-input/checkbox-input.directive.d.ts +10 -0
- package/checkbox/checkbox-label/checkbox-label.directive.d.ts +9 -0
- package/checkbox/index.d.ts +13 -0
- package/esm2022/a11y/index.mjs +9 -0
- package/esm2022/a11y/ng-primitives-a11y.mjs +5 -0
- package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +25 -0
- package/esm2022/accordion/accordion/accordion.directive.mjs +90 -0
- package/esm2022/accordion/accordion/accordion.token.mjs +17 -0
- package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +55 -0
- package/esm2022/accordion/accordion-content/accordion-content.token.mjs +17 -0
- package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +64 -0
- package/esm2022/accordion/accordion-item/accordion-item.token.mjs +17 -0
- package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +58 -0
- package/esm2022/accordion/accordion-trigger/accordion-trigger.token.mjs +17 -0
- package/esm2022/accordion/config/accordion.config.mjs +35 -0
- package/esm2022/accordion/index.mjs +17 -0
- package/esm2022/accordion/ng-primitives-accordion.mjs +5 -0
- package/esm2022/avatar/avatar/avatar.directive.mjs +45 -0
- package/esm2022/avatar/avatar/avatar.token.mjs +17 -0
- package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +61 -0
- package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +64 -0
- package/esm2022/avatar/config/avatar.config.mjs +33 -0
- package/esm2022/avatar/index.mjs +13 -0
- package/esm2022/avatar/ng-primitives-avatar.mjs +5 -0
- package/esm2022/checkbox/checkbox/checkbox.directive.mjs +141 -0
- package/esm2022/checkbox/checkbox/checkbox.token.mjs +17 -0
- package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +51 -0
- package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +17 -0
- package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +40 -0
- package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +32 -0
- package/esm2022/checkbox/index.mjs +14 -0
- package/esm2022/checkbox/ng-primitives-checkbox.mjs +5 -0
- package/esm2022/index.mjs +10 -0
- package/esm2022/ng-primitives.mjs +5 -0
- package/esm2022/progress/index.mjs +10 -0
- package/esm2022/progress/ng-primitives-progress.mjs +5 -0
- package/esm2022/progress/progress/progress.directive.mjs +60 -0
- package/esm2022/progress/progress/progress.token.mjs +16 -0
- package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +33 -0
- package/esm2022/radio/index.mjs +13 -0
- package/esm2022/radio/ng-primitives-radio.mjs +5 -0
- package/esm2022/radio/radio-group/radio-group.directive.mjs +100 -0
- package/esm2022/radio/radio-group/radio-group.token.mjs +17 -0
- package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +41 -0
- package/esm2022/radio/radio-item/radio-item.directive.mjs +68 -0
- package/esm2022/radio/radio-item/radio-item.token.mjs +17 -0
- package/esm2022/resize/index.mjs +10 -0
- package/esm2022/resize/ng-primitives-resize.mjs +5 -0
- package/esm2022/resize/resize/resize.directive.mjs +49 -0
- package/esm2022/resize/utils/resize.mjs +41 -0
- package/esm2022/roving-focus/index.mjs +12 -0
- package/esm2022/roving-focus/ng-primitives-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +244 -0
- package/esm2022/roving-focus/roving-focus-group/roving-focus-group.token.mjs +17 -0
- package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +98 -0
- package/esm2022/roving-focus/roving-focus-item/roving-focus-item.token.mjs +17 -0
- package/esm2022/select/index.mjs +16 -0
- package/esm2022/select/ng-primitives-select.mjs +5 -0
- package/esm2022/select/select/select.directive.mjs +54 -0
- package/esm2022/select/select/select.token.mjs +16 -0
- package/esm2022/select/select-button/select-button.directive.mjs +84 -0
- package/esm2022/select/select-button/select-button.token.mjs +16 -0
- package/esm2022/select/select-option/select-option.directive.mjs +90 -0
- package/esm2022/select/select-option/select-option.token.mjs +16 -0
- package/esm2022/select/select-options/select-options.directive.mjs +157 -0
- package/esm2022/select/select-options/select-options.token.mjs +16 -0
- package/esm2022/slider/index.mjs +16 -0
- package/esm2022/slider/ng-primitives-slider.mjs +5 -0
- package/esm2022/slider/slider/slider.directive.mjs +68 -0
- package/esm2022/slider/slider/slider.token.mjs +16 -0
- package/esm2022/slider/slider-range/slider-range.directive.mjs +36 -0
- package/esm2022/slider/slider-range/slider-range.token.mjs +16 -0
- package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +109 -0
- package/esm2022/slider/slider-thumb/slider-thumb.token.mjs +16 -0
- package/esm2022/slider/slider-track/slider-track.directive.mjs +54 -0
- package/esm2022/slider/slider-track/slider-track.token.mjs +16 -0
- package/esm2022/switch/index.mjs +11 -0
- package/esm2022/switch/ng-primitives-switch.mjs +5 -0
- package/esm2022/switch/switch/switch.directive.mjs +126 -0
- package/esm2022/switch/switch/switch.token.mjs +17 -0
- package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +32 -0
- package/esm2022/tabs/config/tabs.config.mjs +35 -0
- package/esm2022/tabs/index.mjs +15 -0
- package/esm2022/tabs/ng-primitives-tabs.mjs +5 -0
- package/esm2022/tabs/tab-button/tab-button.directive.mjs +84 -0
- package/esm2022/tabs/tab-list/tab-list.directive.mjs +34 -0
- package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +62 -0
- package/esm2022/tabs/tab-panel/tab-panel.token.mjs +17 -0
- package/esm2022/tabs/tabset/tabset.directive.mjs +91 -0
- package/esm2022/tabs/tabset/tabset.token.mjs +17 -0
- package/esm2022/toggle/index.mjs +9 -0
- package/esm2022/toggle/ng-primitives-toggle.mjs +5 -0
- package/esm2022/toggle/toggle/toggle.directive.mjs +48 -0
- package/esm2022/tooltip/config/tooltip.config.mjs +38 -0
- package/esm2022/tooltip/index.mjs +13 -0
- package/esm2022/tooltip/ng-primitives-tooltip.mjs +5 -0
- package/esm2022/tooltip/tooltip/tooltip.directive.mjs +57 -0
- package/esm2022/tooltip/tooltip/tooltip.token.mjs +16 -0
- package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +190 -0
- package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.token.mjs +23 -0
- package/esm2022/utils/helpers/disposables.mjs +72 -0
- package/esm2022/utils/helpers/focus-manager.mjs +28 -0
- package/esm2022/utils/helpers/unique-id.mjs +22 -0
- package/esm2022/utils/hover/hover.directive.mjs +183 -0
- package/esm2022/utils/hover/hover.token.mjs +16 -0
- package/esm2022/utils/index.mjs +14 -0
- package/esm2022/utils/ng-primitives-utils.mjs +5 -0
- package/esm2022/utils/ui/dimensions.mjs +40 -0
- package/fesm2022/ng-primitives-a11y.mjs +40 -0
- package/fesm2022/ng-primitives-a11y.mjs.map +1 -0
- package/fesm2022/ng-primitives-accordion.mjs +361 -0
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -0
- package/fesm2022/ng-primitives-avatar.mjs +223 -0
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -0
- package/fesm2022/ng-primitives-checkbox.mjs +299 -0
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -0
- package/fesm2022/ng-primitives-progress.mjs +119 -0
- package/fesm2022/ng-primitives-progress.mjs.map +1 -0
- package/fesm2022/ng-primitives-radio.mjs +245 -0
- package/fesm2022/ng-primitives-radio.mjs.map +1 -0
- package/fesm2022/ng-primitives-resize.mjs +104 -0
- package/fesm2022/ng-primitives-resize.mjs.map +1 -0
- package/fesm2022/ng-primitives-roving-focus.mjs +384 -0
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -0
- package/fesm2022/ng-primitives-select.mjs +442 -0
- package/fesm2022/ng-primitives-select.mjs.map +1 -0
- package/fesm2022/ng-primitives-slider.mjs +328 -0
- package/fesm2022/ng-primitives-slider.mjs.map +1 -0
- package/fesm2022/ng-primitives-switch.mjs +185 -0
- package/fesm2022/ng-primitives-switch.mjs.map +1 -0
- package/fesm2022/ng-primitives-tabs.mjs +337 -0
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -0
- package/fesm2022/ng-primitives-toggle.mjs +63 -0
- package/fesm2022/ng-primitives-toggle.mjs.map +1 -0
- package/fesm2022/ng-primitives-tooltip.mjs +330 -0
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -0
- package/fesm2022/ng-primitives-utils.mjs +370 -0
- package/fesm2022/ng-primitives-utils.mjs.map +1 -0
- package/fesm2022/ng-primitives.mjs +14 -0
- package/fesm2022/ng-primitives.mjs.map +1 -0
- package/index.d.ts +9 -0
- package/package.json +120 -0
- package/progress/README.md +3 -0
- package/progress/index.d.ts +9 -0
- package/progress/progress/progress.directive.d.ts +40 -0
- package/progress/progress/progress.token.d.ts +14 -0
- package/progress/progress-indicator/progress-indicator.directive.d.ts +9 -0
- package/radio/README.md +3 -0
- package/radio/index.d.ts +12 -0
- package/radio/radio-group/radio-group.directive.d.ts +71 -0
- package/radio/radio-group/radio-group.token.d.ts +15 -0
- package/radio/radio-indicator/radio-indicator.directive.d.ts +17 -0
- package/radio/radio-item/radio-item.directive.d.ts +41 -0
- package/radio/radio-item/radio-item.token.d.ts +15 -0
- package/resize/README.md +3 -0
- package/resize/index.d.ts +9 -0
- package/resize/resize/resize.directive.d.ts +31 -0
- package/resize/utils/resize.d.ts +18 -0
- package/roving-focus/README.md +3 -0
- package/roving-focus/index.d.ts +11 -0
- package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +94 -0
- package/roving-focus/roving-focus-group/roving-focus-group.token.d.ts +15 -0
- package/roving-focus/roving-focus-item/roving-focus-item.directive.d.ts +57 -0
- package/roving-focus/roving-focus-item/roving-focus-item.token.d.ts +15 -0
- package/select/README.md +3 -0
- package/select/index.d.ts +15 -0
- package/select/select/select.directive.d.ts +35 -0
- package/select/select/select.token.d.ts +14 -0
- package/select/select-button/select-button.directive.d.ts +51 -0
- package/select/select-button/select-button.token.d.ts +14 -0
- package/select/select-option/select-option.directive.d.ts +57 -0
- package/select/select-option/select-option.token.d.ts +14 -0
- package/select/select-options/select-options.directive.d.ts +65 -0
- package/select/select-options/select-options.token.d.ts +14 -0
- package/slider/README.md +3 -0
- package/slider/index.d.ts +15 -0
- package/slider/slider/slider.directive.d.ts +45 -0
- package/slider/slider/slider.token.d.ts +14 -0
- package/slider/slider-range/slider-range.directive.d.ts +9 -0
- package/slider/slider-range/slider-range.token.d.ts +14 -0
- package/slider/slider-thumb/slider-thumb.directive.d.ts +21 -0
- package/slider/slider-thumb/slider-thumb.token.d.ts +14 -0
- package/slider/slider-track/slider-track.directive.d.ts +26 -0
- package/slider/slider-track/slider-track.token.d.ts +14 -0
- package/switch/README.md +3 -0
- package/switch/index.d.ts +10 -0
- package/switch/switch/switch.directive.d.ts +82 -0
- package/switch/switch/switch.token.d.ts +15 -0
- package/switch/switch-thumb/switch-thumb.directive.d.ts +9 -0
- package/tabs/README.md +3 -0
- package/tabs/config/tabs.config.d.ts +38 -0
- package/tabs/index.d.ts +14 -0
- package/tabs/tab-button/tab-button.directive.d.ts +54 -0
- package/tabs/tab-list/tab-list.directive.d.ts +9 -0
- package/tabs/tab-panel/tab-panel.directive.d.ts +32 -0
- package/tabs/tab-panel/tab-panel.token.d.ts +15 -0
- package/tabs/tabset/tabset.directive.d.ts +53 -0
- package/tabs/tabset/tabset.token.d.ts +15 -0
- package/toggle/README.md +3 -0
- package/toggle/index.d.ts +8 -0
- package/toggle/toggle/toggle.directive.d.ts +27 -0
- package/tooltip/README.md +3 -0
- package/tooltip/config/tooltip.config.d.ts +54 -0
- package/tooltip/index.d.ts +12 -0
- package/tooltip/tooltip/tooltip.directive.d.ts +30 -0
- package/tooltip/tooltip/tooltip.token.d.ts +14 -0
- package/tooltip/tooltip-trigger/tooltip-trigger.directive.d.ts +111 -0
- package/tooltip/tooltip-trigger/tooltip-trigger.token.d.ts +22 -0
- package/utils/README.md +3 -0
- package/utils/helpers/disposables.d.ts +40 -0
- package/utils/helpers/focus-manager.d.ts +19 -0
- package/utils/helpers/unique-id.d.ts +13 -0
- package/utils/hover/hover.directive.d.ts +62 -0
- package/utils/hover/hover.token.d.ts +14 -0
- package/utils/index.d.ts +13 -0
- package/utils/ui/dimensions.d.ts +9 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Directive, HostListener, ElementRef, model, input, numberAttribute, booleanAttribute, contentChild, computed } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Copyright © 2024 Angular Primitives.
|
|
6
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/
|
|
11
|
+
const NgpSliderToken = new InjectionToken('NgpSliderToken');
|
|
12
|
+
/**
|
|
13
|
+
* Inject the Slider directive instance
|
|
14
|
+
*/
|
|
15
|
+
function injectSlider() {
|
|
16
|
+
return inject(NgpSliderToken);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Copyright © 2024 Angular Primitives.
|
|
21
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
22
|
+
*
|
|
23
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
24
|
+
* LICENSE file in the root directory of this source tree.
|
|
25
|
+
*/
|
|
26
|
+
const NgpSliderRangeToken = new InjectionToken('NgpSliderRangeToken');
|
|
27
|
+
/**
|
|
28
|
+
* Inject the SliderRange directive instance
|
|
29
|
+
*/
|
|
30
|
+
function injectSliderRange() {
|
|
31
|
+
return inject(NgpSliderRangeToken);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Copyright © 2024 Angular Primitives.
|
|
36
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
37
|
+
*
|
|
38
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
39
|
+
* LICENSE file in the root directory of this source tree.
|
|
40
|
+
*/
|
|
41
|
+
class NgpSliderRange {
|
|
42
|
+
constructor() {
|
|
43
|
+
/**
|
|
44
|
+
* Access the slider.
|
|
45
|
+
*/
|
|
46
|
+
this.slider = injectSlider();
|
|
47
|
+
}
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderRange, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSliderRange, isStandalone: true, selector: "[ngpSliderRange]", host: { properties: { "style.width.%": "slider.orientation() === \"horizontal\" ? slider.percentage() : undefined", "style.height.%": "slider.orientation() === \"vertical\" ? slider.percentage() : undefined" }, classAttribute: "absolute h-full rounded-full bg-white" }, providers: [{ provide: NgpSliderRangeToken, useExisting: NgpSliderRange }], exportAs: ["ngpSliderRange"], ngImport: i0 }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderRange, decorators: [{
|
|
52
|
+
type: Directive,
|
|
53
|
+
args: [{
|
|
54
|
+
standalone: true,
|
|
55
|
+
selector: '[ngpSliderRange]',
|
|
56
|
+
exportAs: 'ngpSliderRange',
|
|
57
|
+
providers: [{ provide: NgpSliderRangeToken, useExisting: NgpSliderRange }],
|
|
58
|
+
host: {
|
|
59
|
+
class: 'absolute h-full rounded-full bg-white',
|
|
60
|
+
'[style.width.%]': 'slider.orientation() === "horizontal" ? slider.percentage() : undefined',
|
|
61
|
+
'[style.height.%]': 'slider.orientation() === "vertical" ? slider.percentage() : undefined',
|
|
62
|
+
},
|
|
63
|
+
}]
|
|
64
|
+
}] });
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Copyright © 2024 Angular Primitives.
|
|
68
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
69
|
+
*
|
|
70
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
71
|
+
* LICENSE file in the root directory of this source tree.
|
|
72
|
+
*/
|
|
73
|
+
const NgpSliderThumbToken = new InjectionToken('NgpSliderThumbToken');
|
|
74
|
+
/**
|
|
75
|
+
* Inject the SliderThumb directive instance
|
|
76
|
+
*/
|
|
77
|
+
function injectSliderThumb() {
|
|
78
|
+
return inject(NgpSliderThumbToken);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Copyright © 2024 Angular Primitives.
|
|
83
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
84
|
+
*
|
|
85
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
86
|
+
* LICENSE file in the root directory of this source tree.
|
|
87
|
+
*/
|
|
88
|
+
class NgpSliderThumb {
|
|
89
|
+
constructor() {
|
|
90
|
+
/**
|
|
91
|
+
* Access the slider.
|
|
92
|
+
*/
|
|
93
|
+
this.slider = injectSlider();
|
|
94
|
+
/**
|
|
95
|
+
* Store the dragging state.
|
|
96
|
+
*/
|
|
97
|
+
this.dragging = false;
|
|
98
|
+
}
|
|
99
|
+
handlePointerDown(event) {
|
|
100
|
+
event.preventDefault();
|
|
101
|
+
if (this.slider.disabled()) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this.dragging = true;
|
|
105
|
+
}
|
|
106
|
+
handlePointerUp() {
|
|
107
|
+
if (this.slider.disabled()) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
this.dragging = false;
|
|
111
|
+
}
|
|
112
|
+
handlePointerMove(event) {
|
|
113
|
+
if (this.slider.disabled() || !this.dragging) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const rect = this.slider.track()?.element.nativeElement.getBoundingClientRect();
|
|
117
|
+
if (!rect) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const percentage = this.slider.orientation() === 'horizontal'
|
|
121
|
+
? (event.clientX - rect.left) / rect.width
|
|
122
|
+
: 1 - (event.clientY - rect.top) / rect.height;
|
|
123
|
+
this.slider.value.set(this.slider.min() +
|
|
124
|
+
(this.slider.max() - this.slider.min()) * Math.max(0, Math.min(1, percentage)));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Handle keyboard events.
|
|
128
|
+
* @param event
|
|
129
|
+
*/
|
|
130
|
+
handleKeydown(event) {
|
|
131
|
+
const multiplier = event.shiftKey ? 10 : 1;
|
|
132
|
+
switch (event.key) {
|
|
133
|
+
case 'ArrowLeft':
|
|
134
|
+
case 'ArrowDown':
|
|
135
|
+
this.slider.value.update(value => Math.max(value - this.slider.step() * multiplier, this.slider.min()));
|
|
136
|
+
break;
|
|
137
|
+
case 'ArrowRight':
|
|
138
|
+
case 'ArrowUp':
|
|
139
|
+
this.slider.value.update(value => Math.min(value + this.slider.step() * multiplier, this.slider.max()));
|
|
140
|
+
break;
|
|
141
|
+
case 'Home':
|
|
142
|
+
this.slider.value.set(this.slider.min());
|
|
143
|
+
break;
|
|
144
|
+
case 'End':
|
|
145
|
+
this.slider.value.set(this.slider.max());
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderThumb, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
150
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSliderThumb, isStandalone: true, selector: "[ngpSliderThumb]", host: { attributes: { "role": "slider" }, listeners: { "pointerdown": "handlePointerDown($event)", "document:pointerup": "handlePointerUp()", "document:pointermove": "handlePointerMove($event)", "keydown": "handleKeydown($event)" }, properties: { "attr.aria-valuemin": "slider.min()", "attr.aria-valuemax": "slider.max()", "attr.aria-valuenow": "slider.value()", "attr.aria-orientation": "slider.orientation()", "tabindex": "slider.disabled() ? -1 : 0", "attr.data-orientation": "slider.orientation()", "attr.data-disabled": "slider.disabled()", "style.inset-inline-start.%": "slider.orientation() === \"horizontal\" ? slider.percentage() : undefined", "style.inset-block-start.%": "slider.orientation() === \"vertical\" ? slider.percentage() : undefined" } }, providers: [{ provide: NgpSliderThumbToken, useExisting: NgpSliderThumb }], exportAs: ["ngpSliderThumb"], ngImport: i0 }); }
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderThumb, decorators: [{
|
|
153
|
+
type: Directive,
|
|
154
|
+
args: [{
|
|
155
|
+
standalone: true,
|
|
156
|
+
selector: '[ngpSliderThumb]',
|
|
157
|
+
exportAs: 'ngpSliderThumb',
|
|
158
|
+
providers: [{ provide: NgpSliderThumbToken, useExisting: NgpSliderThumb }],
|
|
159
|
+
host: {
|
|
160
|
+
role: 'slider',
|
|
161
|
+
'[attr.aria-valuemin]': 'slider.min()',
|
|
162
|
+
'[attr.aria-valuemax]': 'slider.max()',
|
|
163
|
+
'[attr.aria-valuenow]': 'slider.value()',
|
|
164
|
+
'[attr.aria-orientation]': 'slider.orientation()',
|
|
165
|
+
'[tabindex]': 'slider.disabled() ? -1 : 0',
|
|
166
|
+
'[attr.data-orientation]': 'slider.orientation()',
|
|
167
|
+
'[attr.data-disabled]': 'slider.disabled()',
|
|
168
|
+
'[style.inset-inline-start.%]': 'slider.orientation() === "horizontal" ? slider.percentage() : undefined',
|
|
169
|
+
'[style.inset-block-start.%]': 'slider.orientation() === "vertical" ? slider.percentage() : undefined',
|
|
170
|
+
},
|
|
171
|
+
}]
|
|
172
|
+
}], propDecorators: { handlePointerDown: [{
|
|
173
|
+
type: HostListener,
|
|
174
|
+
args: ['pointerdown', ['$event']]
|
|
175
|
+
}], handlePointerUp: [{
|
|
176
|
+
type: HostListener,
|
|
177
|
+
args: ['document:pointerup']
|
|
178
|
+
}], handlePointerMove: [{
|
|
179
|
+
type: HostListener,
|
|
180
|
+
args: ['document:pointermove', ['$event']]
|
|
181
|
+
}], handleKeydown: [{
|
|
182
|
+
type: HostListener,
|
|
183
|
+
args: ['keydown', ['$event']]
|
|
184
|
+
}] } });
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Copyright © 2024 Angular Primitives.
|
|
188
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
189
|
+
*
|
|
190
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
191
|
+
* LICENSE file in the root directory of this source tree.
|
|
192
|
+
*/
|
|
193
|
+
const NgpSliderTrackToken = new InjectionToken('NgpSliderTrackToken');
|
|
194
|
+
/**
|
|
195
|
+
* Inject the SliderTrack directive instance
|
|
196
|
+
*/
|
|
197
|
+
function injectSliderTrack() {
|
|
198
|
+
return inject(NgpSliderTrackToken);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Copyright © 2024 Angular Primitives.
|
|
203
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
204
|
+
*
|
|
205
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
206
|
+
* LICENSE file in the root directory of this source tree.
|
|
207
|
+
*/
|
|
208
|
+
class NgpSliderTrack {
|
|
209
|
+
constructor() {
|
|
210
|
+
/**
|
|
211
|
+
* Access the slider.
|
|
212
|
+
*/
|
|
213
|
+
this.slider = injectSlider();
|
|
214
|
+
/**
|
|
215
|
+
* The element that represents the slider track.
|
|
216
|
+
*/
|
|
217
|
+
this.element = inject(ElementRef);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* When the slider track is clicked, update the value.
|
|
221
|
+
* @param event The click event.
|
|
222
|
+
*/
|
|
223
|
+
handlePointerDown(event) {
|
|
224
|
+
if (this.slider.disabled()) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
// get the position the click occurred within the slider track
|
|
228
|
+
const position = this.slider.orientation() === 'horizontal' ? event.clientX : event.clientY;
|
|
229
|
+
const rect = this.element.nativeElement.getBoundingClientRect();
|
|
230
|
+
const percentage = (position - (this.slider.orientation() === 'horizontal' ? rect.left : rect.top)) /
|
|
231
|
+
(this.slider.orientation() === 'horizontal' ? rect.width : rect.height);
|
|
232
|
+
// update the value based on the position
|
|
233
|
+
this.slider.value.set(this.slider.min() + (this.slider.max() - this.slider.min()) * percentage);
|
|
234
|
+
}
|
|
235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderTrack, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
236
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSliderTrack, isStandalone: true, selector: "[ngpSliderTrack]", host: { listeners: { "pointerdown": "handlePointerDown($event)" } }, providers: [{ provide: NgpSliderTrackToken, useExisting: NgpSliderTrack }], exportAs: ["ngpSliderTrack"], ngImport: i0 }); }
|
|
237
|
+
}
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderTrack, decorators: [{
|
|
239
|
+
type: Directive,
|
|
240
|
+
args: [{
|
|
241
|
+
standalone: true,
|
|
242
|
+
selector: '[ngpSliderTrack]',
|
|
243
|
+
exportAs: 'ngpSliderTrack',
|
|
244
|
+
providers: [{ provide: NgpSliderTrackToken, useExisting: NgpSliderTrack }],
|
|
245
|
+
}]
|
|
246
|
+
}], propDecorators: { handlePointerDown: [{
|
|
247
|
+
type: HostListener,
|
|
248
|
+
args: ['pointerdown', ['$event']]
|
|
249
|
+
}] } });
|
|
250
|
+
|
|
251
|
+
class NgpSlider {
|
|
252
|
+
constructor() {
|
|
253
|
+
/**
|
|
254
|
+
* The value of the slider.
|
|
255
|
+
*/
|
|
256
|
+
this.value = model(0, {
|
|
257
|
+
alias: 'ngpSliderValue',
|
|
258
|
+
});
|
|
259
|
+
/**
|
|
260
|
+
* The minimum value of the slider.
|
|
261
|
+
*/
|
|
262
|
+
this.min = input(0, {
|
|
263
|
+
alias: 'ngpSliderMin',
|
|
264
|
+
transform: numberAttribute,
|
|
265
|
+
});
|
|
266
|
+
/**
|
|
267
|
+
* The maximum value of the slider.
|
|
268
|
+
*/
|
|
269
|
+
this.max = input(100, {
|
|
270
|
+
alias: 'ngpSliderMax',
|
|
271
|
+
transform: numberAttribute,
|
|
272
|
+
});
|
|
273
|
+
/**
|
|
274
|
+
* The step value of the slider.
|
|
275
|
+
*/
|
|
276
|
+
this.step = input(1, {
|
|
277
|
+
alias: 'ngpSliderStep',
|
|
278
|
+
transform: numberAttribute,
|
|
279
|
+
});
|
|
280
|
+
/**
|
|
281
|
+
* The orientation of the slider.
|
|
282
|
+
*/
|
|
283
|
+
this.orientation = input('horizontal', {
|
|
284
|
+
alias: 'ngpSliderOrientation',
|
|
285
|
+
});
|
|
286
|
+
/**
|
|
287
|
+
* The disabled state of the slider.
|
|
288
|
+
*/
|
|
289
|
+
this.disabled = input(false, {
|
|
290
|
+
alias: 'ngpSliderDisabled',
|
|
291
|
+
transform: booleanAttribute,
|
|
292
|
+
});
|
|
293
|
+
/**
|
|
294
|
+
* Access the slider track.
|
|
295
|
+
*/
|
|
296
|
+
this.track = contentChild(NgpSliderTrackToken);
|
|
297
|
+
/**
|
|
298
|
+
* The value as a percentage based on the min and max values.
|
|
299
|
+
*/
|
|
300
|
+
this.percentage = computed(() => ((this.value() - this.min()) / (this.max() - this.min())) * 100);
|
|
301
|
+
}
|
|
302
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSlider, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
303
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.2", type: NgpSlider, isStandalone: true, selector: "[ngpSlider]", inputs: { value: { classPropertyName: "value", publicName: "ngpSliderValue", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "ngpSliderMin", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "ngpSliderMax", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "ngpSliderStep", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "ngpSliderOrientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpSliderDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "ngpSliderValueChange" }, providers: [{ provide: NgpSliderToken, useExisting: NgpSlider }], queries: [{ propertyName: "track", first: true, predicate: NgpSliderTrackToken, descendants: true, isSignal: true }], exportAs: ["ngpSlider"], ngImport: i0 }); }
|
|
304
|
+
}
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSlider, decorators: [{
|
|
306
|
+
type: Directive,
|
|
307
|
+
args: [{
|
|
308
|
+
standalone: true,
|
|
309
|
+
selector: '[ngpSlider]',
|
|
310
|
+
exportAs: 'ngpSlider',
|
|
311
|
+
providers: [{ provide: NgpSliderToken, useExisting: NgpSlider }],
|
|
312
|
+
}]
|
|
313
|
+
}] });
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Copyright © 2024 Angular Primitives.
|
|
317
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
318
|
+
*
|
|
319
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
320
|
+
* LICENSE file in the root directory of this source tree.
|
|
321
|
+
*/
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Generated bundle index. Do not edit.
|
|
325
|
+
*/
|
|
326
|
+
|
|
327
|
+
export { NgpSlider, NgpSliderRange, NgpSliderRangeToken, NgpSliderThumb, NgpSliderThumbToken, NgpSliderToken, NgpSliderTrack, NgpSliderTrackToken };
|
|
328
|
+
//# sourceMappingURL=ng-primitives-slider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-primitives-slider.mjs","sources":["../../../../packages/ng-primitives/slider/src/slider/slider.token.ts","../../../../packages/ng-primitives/slider/src/slider-range/slider-range.token.ts","../../../../packages/ng-primitives/slider/src/slider-range/slider-range.directive.ts","../../../../packages/ng-primitives/slider/src/slider-thumb/slider-thumb.token.ts","../../../../packages/ng-primitives/slider/src/slider-thumb/slider-thumb.directive.ts","../../../../packages/ng-primitives/slider/src/slider-track/slider-track.token.ts","../../../../packages/ng-primitives/slider/src/slider-track/slider-track.directive.ts","../../../../packages/ng-primitives/slider/src/slider/slider.directive.ts","../../../../packages/ng-primitives/slider/src/index.ts","../../../../packages/ng-primitives/slider/src/ng-primitives-slider.ts"],"sourcesContent":["/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSlider } from './slider.directive';\n\nexport const NgpSliderToken = new InjectionToken<NgpSlider>('NgpSliderToken');\n\n/**\n * Inject the Slider directive instance\n */\nexport function injectSlider(): NgpSlider {\n return inject(NgpSliderToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSliderRange } from './slider-range.directive';\n\nexport const NgpSliderRangeToken = new InjectionToken<NgpSliderRange>('NgpSliderRangeToken');\n\n/**\n * Inject the SliderRange directive instance\n */\nexport function injectSliderRange(): NgpSliderRange {\n return inject(NgpSliderRangeToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive } from '@angular/core';\nimport { injectSlider } from '../slider/slider.token';\nimport { NgpSliderRangeToken } from './slider-range.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSliderRange]',\n exportAs: 'ngpSliderRange',\n providers: [{ provide: NgpSliderRangeToken, useExisting: NgpSliderRange }],\n host: {\n class: 'absolute h-full rounded-full bg-white',\n '[style.width.%]': 'slider.orientation() === \"horizontal\" ? slider.percentage() : undefined',\n '[style.height.%]': 'slider.orientation() === \"vertical\" ? slider.percentage() : undefined',\n },\n})\nexport class NgpSliderRange {\n /**\n * Access the slider.\n */\n protected readonly slider = injectSlider();\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSliderThumb } from './slider-thumb.directive';\n\nexport const NgpSliderThumbToken = new InjectionToken<NgpSliderThumb>('NgpSliderThumbToken');\n\n/**\n * Inject the SliderThumb directive instance\n */\nexport function injectSliderThumb(): NgpSliderThumb {\n return inject(NgpSliderThumbToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive, HostListener } from '@angular/core';\nimport { injectSlider } from '../slider/slider.token';\nimport { NgpSliderThumbToken } from './slider-thumb.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSliderThumb]',\n exportAs: 'ngpSliderThumb',\n providers: [{ provide: NgpSliderThumbToken, useExisting: NgpSliderThumb }],\n host: {\n role: 'slider',\n '[attr.aria-valuemin]': 'slider.min()',\n '[attr.aria-valuemax]': 'slider.max()',\n '[attr.aria-valuenow]': 'slider.value()',\n '[attr.aria-orientation]': 'slider.orientation()',\n '[tabindex]': 'slider.disabled() ? -1 : 0',\n '[attr.data-orientation]': 'slider.orientation()',\n '[attr.data-disabled]': 'slider.disabled()',\n '[style.inset-inline-start.%]':\n 'slider.orientation() === \"horizontal\" ? slider.percentage() : undefined',\n '[style.inset-block-start.%]':\n 'slider.orientation() === \"vertical\" ? slider.percentage() : undefined',\n },\n})\nexport class NgpSliderThumb {\n /**\n * Access the slider.\n */\n protected readonly slider = injectSlider();\n\n /**\n * Store the dragging state.\n */\n protected dragging = false;\n\n @HostListener('pointerdown', ['$event'])\n protected handlePointerDown(event: PointerEvent): void {\n event.preventDefault();\n\n if (this.slider.disabled()) {\n return;\n }\n\n this.dragging = true;\n }\n\n @HostListener('document:pointerup')\n protected handlePointerUp(): void {\n if (this.slider.disabled()) {\n return;\n }\n\n this.dragging = false;\n }\n\n @HostListener('document:pointermove', ['$event'])\n protected handlePointerMove(event: PointerEvent): void {\n if (this.slider.disabled() || !this.dragging) {\n return;\n }\n\n const rect = this.slider.track()?.element.nativeElement.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n const percentage =\n this.slider.orientation() === 'horizontal'\n ? (event.clientX - rect.left) / rect.width\n : 1 - (event.clientY - rect.top) / rect.height;\n\n this.slider.value.set(\n this.slider.min() +\n (this.slider.max() - this.slider.min()) * Math.max(0, Math.min(1, percentage)),\n );\n }\n\n /**\n * Handle keyboard events.\n * @param event\n */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n const multiplier = event.shiftKey ? 10 : 1;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n this.slider.value.update(value =>\n Math.max(value - this.slider.step() * multiplier, this.slider.min()),\n );\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n this.slider.value.update(value =>\n Math.min(value + this.slider.step() * multiplier, this.slider.max()),\n );\n break;\n case 'Home':\n this.slider.value.set(this.slider.min());\n break;\n case 'End':\n this.slider.value.set(this.slider.max());\n break;\n }\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSliderTrack } from './slider-track.directive';\n\nexport const NgpSliderTrackToken = new InjectionToken<NgpSliderTrack>('NgpSliderTrackToken');\n\n/**\n * Inject the SliderTrack directive instance\n */\nexport function injectSliderTrack(): NgpSliderTrack {\n return inject(NgpSliderTrackToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectSlider } from '../slider/slider.token';\nimport { NgpSliderTrackToken } from './slider-track.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSliderTrack]',\n exportAs: 'ngpSliderTrack',\n providers: [{ provide: NgpSliderTrackToken, useExisting: NgpSliderTrack }],\n})\nexport class NgpSliderTrack {\n /**\n * Access the slider.\n */\n private readonly slider = injectSlider();\n\n /**\n * The element that represents the slider track.\n */\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * When the slider track is clicked, update the value.\n * @param event The click event.\n */\n @HostListener('pointerdown', ['$event'])\n protected handlePointerDown(event: PointerEvent): void {\n if (this.slider.disabled()) {\n return;\n }\n\n // get the position the click occurred within the slider track\n const position = this.slider.orientation() === 'horizontal' ? event.clientX : event.clientY;\n const rect = this.element.nativeElement.getBoundingClientRect();\n const percentage =\n (position - (this.slider.orientation() === 'horizontal' ? rect.left : rect.top)) /\n (this.slider.orientation() === 'horizontal' ? rect.width : rect.height);\n\n // update the value based on the position\n this.slider.value.set(this.slider.min() + (this.slider.max() - this.slider.min()) * percentage);\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n Directive,\n booleanAttribute,\n computed,\n contentChild,\n input,\n model,\n numberAttribute,\n} from '@angular/core';\nimport { NgpSliderTrackToken } from '../slider-track/slider-track.token';\nimport { NgpSliderToken } from './slider.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSlider]',\n exportAs: 'ngpSlider',\n providers: [{ provide: NgpSliderToken, useExisting: NgpSlider }],\n})\nexport class NgpSlider {\n /**\n * The value of the slider.\n */\n readonly value = model<number>(0, {\n alias: 'ngpSliderValue',\n });\n\n /**\n * The minimum value of the slider.\n */\n readonly min = input<number, NumberInput>(0, {\n alias: 'ngpSliderMin',\n transform: numberAttribute,\n });\n\n /**\n * The maximum value of the slider.\n */\n readonly max = input<number, NumberInput>(100, {\n alias: 'ngpSliderMax',\n transform: numberAttribute,\n });\n\n /**\n * The step value of the slider.\n */\n readonly step = input<number, NumberInput>(1, {\n alias: 'ngpSliderStep',\n transform: numberAttribute,\n });\n\n /**\n * The orientation of the slider.\n */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal', {\n alias: 'ngpSliderOrientation',\n });\n\n /**\n * The disabled state of the slider.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSliderDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Access the slider track.\n */\n readonly track = contentChild(NgpSliderTrackToken);\n\n /**\n * The value as a percentage based on the min and max values.\n */\n protected readonly percentage = computed(\n () => ((this.value() - this.min()) / (this.max() - this.min())) * 100,\n );\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { NgpSliderRange } from './slider-range/slider-range.directive';\nexport { NgpSliderRangeToken } from './slider-range/slider-range.token';\nexport { NgpSliderThumb } from './slider-thumb/slider-thumb.directive';\nexport { NgpSliderThumbToken } from './slider-thumb/slider-thumb.token';\nexport { NgpSliderTrack } from './slider-track/slider-track.directive';\nexport { NgpSliderTrackToken } from './slider-track/slider-track.token';\nexport { NgpSlider } from './slider/slider.directive';\nexport { NgpSliderToken } from './slider/slider.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Directive, ElementRef, model, input, booleanAttribute, signal, computed, HostListener } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Copyright © 2024 Angular Primitives.
|
|
7
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/
|
|
12
|
+
const NgpSwitchToken = new InjectionToken('NgpSwitchToken');
|
|
13
|
+
/**
|
|
14
|
+
* Inject the Switch directive instance
|
|
15
|
+
* @returns The switch directive instance
|
|
16
|
+
*/
|
|
17
|
+
function injectSwitch() {
|
|
18
|
+
return inject(NgpSwitchToken);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Copyright © 2024 Angular Primitives.
|
|
23
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
24
|
+
*
|
|
25
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
26
|
+
* LICENSE file in the root directory of this source tree.
|
|
27
|
+
*/
|
|
28
|
+
class NgpSwitchThumb {
|
|
29
|
+
constructor() {
|
|
30
|
+
/**
|
|
31
|
+
* Access the switch directive.
|
|
32
|
+
*/
|
|
33
|
+
this.switch = injectSwitch();
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitchThumb, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSwitchThumb, isStandalone: true, selector: "[ngpSwitchThumb]", host: { properties: { "attr.data-state": "switch.checked() ? \"checked\" : \"unchecked\"", "attr.data-disabled": "switch.disabledState() ? \"true\" : null" } }, ngImport: i0 }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitchThumb, decorators: [{
|
|
39
|
+
type: Directive,
|
|
40
|
+
args: [{
|
|
41
|
+
selector: '[ngpSwitchThumb]',
|
|
42
|
+
standalone: true,
|
|
43
|
+
host: {
|
|
44
|
+
'[attr.data-state]': 'switch.checked() ? "checked" : "unchecked"',
|
|
45
|
+
'[attr.data-disabled]': 'switch.disabledState() ? "true" : null',
|
|
46
|
+
},
|
|
47
|
+
}]
|
|
48
|
+
}] });
|
|
49
|
+
|
|
50
|
+
class NgpSwitch {
|
|
51
|
+
constructor() {
|
|
52
|
+
/**
|
|
53
|
+
* Access the element ref.
|
|
54
|
+
*/
|
|
55
|
+
this.elementRef = inject(ElementRef);
|
|
56
|
+
/**
|
|
57
|
+
* Determine if the switch is a button
|
|
58
|
+
*/
|
|
59
|
+
this.isButton = this.elementRef.nativeElement.tagName === 'BUTTON';
|
|
60
|
+
/**
|
|
61
|
+
* Determine if the switch is checked.
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
64
|
+
this.checked = model(false, {
|
|
65
|
+
alias: 'ngpSwitchChecked',
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Determine if the switch is disabled.
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
this.disabled = input(false, {
|
|
72
|
+
alias: 'ngpSwitchDisabled',
|
|
73
|
+
transform: booleanAttribute,
|
|
74
|
+
});
|
|
75
|
+
/**
|
|
76
|
+
* Store the form disabled state.
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
this.formDisabled = signal(false);
|
|
80
|
+
/**
|
|
81
|
+
* Derive the disabled state based on the input and form disabled state.
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
this.disabledState = computed(() => this.disabled() || this.formDisabled());
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Register the onChange callback.
|
|
88
|
+
* @param fn The onChange callback.
|
|
89
|
+
* @internal
|
|
90
|
+
*/
|
|
91
|
+
registerOnChange(fn) {
|
|
92
|
+
this.onChange = fn;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Register the onTouched callback.
|
|
96
|
+
* @param fn The onTouched callback.
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
registerOnTouched(fn) {
|
|
100
|
+
this.onTouched = fn;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Write the value to the checked state.
|
|
104
|
+
* @param checked The checked state.
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
writeValue(checked) {
|
|
108
|
+
this.checked.set(checked);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Set the disabled state.
|
|
112
|
+
* @param isDisabled The disabled state.
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
setDisabledState(isDisabled) {
|
|
116
|
+
this.formDisabled.set(isDisabled);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Toggle the checked state.
|
|
120
|
+
*/
|
|
121
|
+
toggle() {
|
|
122
|
+
if (this.disabledState()) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.checked.set(!this.checked());
|
|
126
|
+
this.onChange?.(this.checked());
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Handle the keydown event.
|
|
130
|
+
*/
|
|
131
|
+
onKeyDown() {
|
|
132
|
+
// If the switch is not a button then the space key will not toggle the checked state automatically,
|
|
133
|
+
// so we need to do it manually.
|
|
134
|
+
if (!this.isButton) {
|
|
135
|
+
this.toggle();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
139
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpSwitch, isStandalone: true, selector: "[ngpSwitch]", inputs: { checked: { classPropertyName: "checked", publicName: "ngpSwitchChecked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpSwitchDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "ngpSwitchCheckedChange" }, host: { attributes: { "role": "switch" }, listeners: { "focus": "onTouched?.()", "click": "toggle()", "keydown.space": "onKeyDown()" }, properties: { "attr.type": "isButton ? \"button\" : null", "attr.aria-checked": "checked()", "attr.data-state": "checked() ? \"checked\" : \"unchecked\"", "attr.data-disabled": "disabledState()", "attr.disabled": "isButton && disabledState() ? disabledState() : null" } }, providers: [
|
|
140
|
+
{ provide: NgpSwitchToken, useExisting: NgpSwitch },
|
|
141
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: NgpSwitch, multi: true },
|
|
142
|
+
], exportAs: ["ngpSwitch"], ngImport: i0 }); }
|
|
143
|
+
}
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitch, decorators: [{
|
|
145
|
+
type: Directive,
|
|
146
|
+
args: [{
|
|
147
|
+
standalone: true,
|
|
148
|
+
selector: '[ngpSwitch]',
|
|
149
|
+
exportAs: 'ngpSwitch',
|
|
150
|
+
providers: [
|
|
151
|
+
{ provide: NgpSwitchToken, useExisting: NgpSwitch },
|
|
152
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: NgpSwitch, multi: true },
|
|
153
|
+
],
|
|
154
|
+
host: {
|
|
155
|
+
role: 'switch',
|
|
156
|
+
'[attr.type]': 'isButton ? "button" : null',
|
|
157
|
+
'[attr.aria-checked]': 'checked()',
|
|
158
|
+
'[attr.data-state]': 'checked() ? "checked" : "unchecked"',
|
|
159
|
+
'[attr.data-disabled]': 'disabledState()',
|
|
160
|
+
'[attr.disabled]': 'isButton && disabledState() ? disabledState() : null',
|
|
161
|
+
'(focus)': 'onTouched?.()',
|
|
162
|
+
},
|
|
163
|
+
}]
|
|
164
|
+
}], propDecorators: { toggle: [{
|
|
165
|
+
type: HostListener,
|
|
166
|
+
args: ['click']
|
|
167
|
+
}], onKeyDown: [{
|
|
168
|
+
type: HostListener,
|
|
169
|
+
args: ['keydown.space']
|
|
170
|
+
}] } });
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Copyright © 2024 Angular Primitives.
|
|
174
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
175
|
+
*
|
|
176
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
177
|
+
* LICENSE file in the root directory of this source tree.
|
|
178
|
+
*/
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Generated bundle index. Do not edit.
|
|
182
|
+
*/
|
|
183
|
+
|
|
184
|
+
export { NgpSwitch, NgpSwitchThumb, NgpSwitchToken };
|
|
185
|
+
//# sourceMappingURL=ng-primitives-switch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-primitives-switch.mjs","sources":["../../../../packages/ng-primitives/switch/src/switch/switch.token.ts","../../../../packages/ng-primitives/switch/src/switch-thumb/switch-thumb.directive.ts","../../../../packages/ng-primitives/switch/src/switch/switch.directive.ts","../../../../packages/ng-primitives/switch/src/index.ts","../../../../packages/ng-primitives/switch/src/ng-primitives-switch.ts"],"sourcesContent":["/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSwitch } from './switch.directive';\n\nexport const NgpSwitchToken = new InjectionToken<NgpSwitch>('NgpSwitchToken');\n\n/**\n * Inject the Switch directive instance\n * @returns The switch directive instance\n */\nexport function injectSwitch(): NgpSwitch {\n return inject(NgpSwitchToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive } from '@angular/core';\nimport { injectSwitch } from '../switch/switch.token';\n\n@Directive({\n selector: '[ngpSwitchThumb]',\n standalone: true,\n host: {\n '[attr.data-state]': 'switch.checked() ? \"checked\" : \"unchecked\"',\n '[attr.data-disabled]': 'switch.disabledState() ? \"true\" : null',\n },\n})\nexport class NgpSwitchThumb {\n /**\n * Access the switch directive.\n */\n protected readonly switch = injectSwitch();\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n HostListener,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgpSwitchToken } from './switch.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSwitch]',\n exportAs: 'ngpSwitch',\n providers: [\n { provide: NgpSwitchToken, useExisting: NgpSwitch },\n { provide: NG_VALUE_ACCESSOR, useExisting: NgpSwitch, multi: true },\n ],\n host: {\n role: 'switch',\n '[attr.type]': 'isButton ? \"button\" : null',\n '[attr.aria-checked]': 'checked()',\n '[attr.data-state]': 'checked() ? \"checked\" : \"unchecked\"',\n '[attr.data-disabled]': 'disabledState()',\n '[attr.disabled]': 'isButton && disabledState() ? disabledState() : null',\n '(focus)': 'onTouched?.()',\n },\n})\nexport class NgpSwitch implements ControlValueAccessor {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Determine if the switch is a button\n */\n protected isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n /**\n * Determine if the switch is checked.\n * @default false\n */\n readonly checked = model<boolean>(false, {\n alias: 'ngpSwitchChecked',\n });\n\n /**\n * Determine if the switch is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSwitchDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Store the form disabled state.\n * @internal\n */\n readonly formDisabled = signal<boolean>(false);\n\n /**\n * Derive the disabled state based on the input and form disabled state.\n * @internal\n */\n readonly disabledState = computed(() => this.disabled() || this.formDisabled());\n\n /**\n * Store the onChange callback.\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the onTouched callback.\n */\n protected onTouched?: () => void;\n\n /**\n * Register the onChange callback.\n * @param fn The onChange callback.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Register the onTouched callback.\n * @param fn The onTouched callback.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Write the value to the checked state.\n * @param checked The checked state.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked.set(checked);\n }\n\n /**\n * Set the disabled state.\n * @param isDisabled The disabled state.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n /**\n * Toggle the checked state.\n */\n @HostListener('click')\n toggle(): void {\n if (this.disabledState()) {\n return;\n }\n\n this.checked.set(!this.checked());\n this.onChange?.(this.checked());\n }\n\n /**\n * Handle the keydown event.\n */\n @HostListener('keydown.space')\n protected onKeyDown(): void {\n // If the switch is not a button then the space key will not toggle the checked state automatically,\n // so we need to do it manually.\n if (!this.isButton) {\n this.toggle();\n }\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { NgpSwitchThumb } from './switch-thumb/switch-thumb.directive';\nexport { NgpSwitch } from './switch/switch.directive';\nexport { NgpSwitchToken } from './switch/switch.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|