range-selection-input 15.0.2
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 +24 -0
- package/esm2022/lib/input-slider/range-selection-input.component.mjs +144 -0
- package/esm2022/lib/range-demo/range-demo.component.mjs +71 -0
- package/esm2022/lib/range-selection-input.module.mjs +60 -0
- package/esm2022/public-api.mjs +7 -0
- package/esm2022/range-selection-input.mjs +5 -0
- package/fesm2022/range-selection-input.mjs +275 -0
- package/fesm2022/range-selection-input.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/input-slider/range-selection-input.component.d.ts +42 -0
- package/lib/range-demo/range-demo.component.d.ts +27 -0
- package/lib/range-selection-input.module.d.ts +16 -0
- package/package.json +25 -0
- package/public-api.d.ts +3 -0
- package/range-selection-input-15.0.2.tgz +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# RangeSelectionInput
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project range-selection-input` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project range-selection-input`.
|
|
8
|
+
> Note: Don't forget to add `--project range-selection-input` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build range-selection-input` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build range-selection-input`, go to the dist folder `cd dist/range-selection-input` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test range-selection-input` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, inject } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators, FormBuilder } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@angular/material/slider";
|
|
7
|
+
export class RangeSelectionInputComponent {
|
|
8
|
+
set min(value) {
|
|
9
|
+
this._min = (value) ? value : 0;
|
|
10
|
+
this.doubleSlider = value > -1 ? true : false;
|
|
11
|
+
}
|
|
12
|
+
get min() {
|
|
13
|
+
return this._min;
|
|
14
|
+
}
|
|
15
|
+
set max(value) {
|
|
16
|
+
this._max = value ? value : 100;
|
|
17
|
+
}
|
|
18
|
+
get max() {
|
|
19
|
+
return this._max;
|
|
20
|
+
}
|
|
21
|
+
set displayFunc(value) {
|
|
22
|
+
this._displayFunc = value;
|
|
23
|
+
}
|
|
24
|
+
get displayFunc() {
|
|
25
|
+
return (this._displayFunc) ? this._displayFunc : () => { };
|
|
26
|
+
}
|
|
27
|
+
constructor() {
|
|
28
|
+
this.fb = inject(FormBuilder);
|
|
29
|
+
this.doubleSlider = false;
|
|
30
|
+
this.startValue = this.fb.control(0);
|
|
31
|
+
this.endValue = this.fb.control(0);
|
|
32
|
+
this._min = 0;
|
|
33
|
+
this._max = 0;
|
|
34
|
+
this.showValue = false;
|
|
35
|
+
this.showDivisions = false;
|
|
36
|
+
this.divisions = 0;
|
|
37
|
+
this.minRequired = this.min;
|
|
38
|
+
this.maxRequired = this.max;
|
|
39
|
+
this.isObject = (value) => typeof value === "object";
|
|
40
|
+
this.disabled = false;
|
|
41
|
+
this.onChange = () => { };
|
|
42
|
+
this.onTouch = () => { };
|
|
43
|
+
this.sliderValue = { start: 0, end: 10 };
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
}
|
|
47
|
+
onSetStartValue(value) {
|
|
48
|
+
if (!this.doubleSlider) {
|
|
49
|
+
this.sliderValue.end = +value;
|
|
50
|
+
this.onChange(this.sliderValue.end);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.sliderValue.start = +value;
|
|
54
|
+
this.onChange(this.sliderValue);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
onSetEndValue(value) {
|
|
58
|
+
this.sliderValue.end = +value;
|
|
59
|
+
this.onChange(this.sliderValue);
|
|
60
|
+
}
|
|
61
|
+
writeValue(value) {
|
|
62
|
+
if (value) {
|
|
63
|
+
if (this.isObject(value) && this.doubleSlider) {
|
|
64
|
+
this.sliderValue.start = value.start || 0;
|
|
65
|
+
this.sliderValue.end = value.end || 0;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.sliderValue.end = value;
|
|
69
|
+
}
|
|
70
|
+
this.sliderValue.start = this.sliderValue.start < this.min ? this.min : this.sliderValue.start;
|
|
71
|
+
this.sliderValue.end = this.sliderValue.end < this.max ? this.sliderValue.end : this.max;
|
|
72
|
+
this.endValue.patchValue(this.sliderValue.end, { emitEvent: false });
|
|
73
|
+
this.startValue.patchValue(this.sliderValue.start, { emitEvent: false });
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.sliderValue.start = 0;
|
|
77
|
+
this.sliderValue.end = 0;
|
|
78
|
+
this.startValue.patchValue(this.sliderValue.start, { emitEvent: false });
|
|
79
|
+
this.endValue.patchValue(this.sliderValue.end, { emitEvent: false });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
validate(control) {
|
|
83
|
+
const isRequired = control.hasValidator(Validators.required) ? true : false;
|
|
84
|
+
let errors = { 'minRequired': false, 'maxRequired': false, 'valueRequired': false };
|
|
85
|
+
errors.valueRequired = this.sliderValue.start === 0 || this.sliderValue.end === 0 ? true : false;
|
|
86
|
+
errors.minRequired = this.sliderValue.start < this.minRequired ? true : false;
|
|
87
|
+
errors.maxRequired = this.sliderValue.end > this.maxRequired || this.sliderValue.end < this.minRequired ? true : false;
|
|
88
|
+
return Object.fromEntries(Object.entries(errors).filter(([key, value]) => value !== false));
|
|
89
|
+
}
|
|
90
|
+
registerOnChange(fn) {
|
|
91
|
+
this.onChange = fn;
|
|
92
|
+
}
|
|
93
|
+
registerOnTouched(fn) {
|
|
94
|
+
this.onTouch = fn;
|
|
95
|
+
}
|
|
96
|
+
setDisabledState(isDisabled) {
|
|
97
|
+
this.disabled = isDisabled;
|
|
98
|
+
}
|
|
99
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RangeSelectionInputComponent, selector: "app-range-selection-input", inputs: { min: "min", max: "max", showValue: "showValue", showDivisions: "showDivisions", divisions: "divisions", minRequired: "minRequired", maxRequired: "maxRequired", displayFunc: "displayFunc" }, providers: [
|
|
101
|
+
{
|
|
102
|
+
provide: NG_VALUE_ACCESSOR,
|
|
103
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
104
|
+
multi: true
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
provide: NG_VALIDATORS,
|
|
108
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
109
|
+
multi: true
|
|
110
|
+
}
|
|
111
|
+
], ngImport: i0, template: "<div style=\"display: flex; gap: 2rem; flex-direction: column;\">\n\n <ng-container *ngIf=\"doubleSlider; else SINGLE\">\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"min\"\n [max]=\"max\"\n [showTickMarks]=\"showDivisions\"\n [discrete]=\"showValue\"\n [step]=\"divisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n [formControl]=\"startValue\"\n matSliderStartThumb\n (change)=\"onSetStartValue(startValue.value)\"\n />\n <input\n [formControl]=\"endValue\"\n matSliderEndThumb\n (change)=\"onSetEndValue(endValue.value)\"\n >\n </mat-slider>\n </ng-container>\n\n <ng-template #SINGLE>\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"0\"\n [max]=\"max\"\n [step]=\"divisions\"\n [discrete]=\"showValue\"\n [showTickMarks]=\"showDivisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n matSliderThumb\n [formControl]=\"endValue\"\n (change)=\"onSetStartValue(endValue.value)\"\n >\n </mat-slider>\n\n </ng-template>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatSlider, selector: "mat-slider", inputs: ["color", "disableRipple", "disabled", "discrete", "showTickMarks", "min", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i3.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }] }); }
|
|
112
|
+
}
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputComponent, decorators: [{
|
|
114
|
+
type: Component,
|
|
115
|
+
args: [{ selector: 'app-range-selection-input', providers: [
|
|
116
|
+
{
|
|
117
|
+
provide: NG_VALUE_ACCESSOR,
|
|
118
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
119
|
+
multi: true
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
provide: NG_VALIDATORS,
|
|
123
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
124
|
+
multi: true
|
|
125
|
+
}
|
|
126
|
+
], template: "<div style=\"display: flex; gap: 2rem; flex-direction: column;\">\n\n <ng-container *ngIf=\"doubleSlider; else SINGLE\">\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"min\"\n [max]=\"max\"\n [showTickMarks]=\"showDivisions\"\n [discrete]=\"showValue\"\n [step]=\"divisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n [formControl]=\"startValue\"\n matSliderStartThumb\n (change)=\"onSetStartValue(startValue.value)\"\n />\n <input\n [formControl]=\"endValue\"\n matSliderEndThumb\n (change)=\"onSetEndValue(endValue.value)\"\n >\n </mat-slider>\n </ng-container>\n\n <ng-template #SINGLE>\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"0\"\n [max]=\"max\"\n [step]=\"divisions\"\n [discrete]=\"showValue\"\n [showTickMarks]=\"showDivisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n matSliderThumb\n [formControl]=\"endValue\"\n (change)=\"onSetStartValue(endValue.value)\"\n >\n </mat-slider>\n\n </ng-template>\n\n</div>\n" }]
|
|
127
|
+
}], ctorParameters: function () { return []; }, propDecorators: { min: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], max: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], showValue: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], showDivisions: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], divisions: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], minRequired: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], maxRequired: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], displayFunc: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}] } });
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0aW9uLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL2lucHV0LXNsaWRlci9yYW5nZS1zZWxlY3Rpb24taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFuZ2Utc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvaW5wdXQtc2xpZGVyL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQTJELFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFtQnBKLE1BQU0sT0FBTyw0QkFBNEI7SUFVdkMsSUFBYSxHQUFHLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUMvQyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFHRCxJQUFhLEdBQUcsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFVRCxJQUFhLFdBQVcsQ0FBQyxLQUF5QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFXRDtRQW5EQSxPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXhCLGlCQUFZLEdBQUcsS0FBSyxDQUFBO1FBRXBCLGVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvQixhQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFN0IsU0FBSSxHQUFHLENBQUMsQ0FBQTtRQVVSLFNBQUksR0FBRyxDQUFDLENBQUE7UUFTQyxjQUFTLEdBQUcsS0FBSyxDQUFBO1FBQ2pCLGtCQUFhLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFFYixnQkFBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUE7UUFDdEIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFBO1FBVy9CLGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFBO1FBRXBELGFBQVEsR0FBRyxLQUFLLENBQUE7UUFFaEIsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQTtRQUN4QixZQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBRXZCLGdCQUFXLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUVuQixDQUFDO0lBRWpCLFFBQVE7SUFFUixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVU7UUFFeEIsSUFBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFFckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBRXBDO2FBQU07WUFFTCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQTtZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtTQUVoQztJQUVILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQTtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWlCO1FBRTFCLElBQUcsS0FBSyxFQUFFO1lBRVIsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFBO2dCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTthQUN0QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUE7YUFDN0I7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQTtZQUM5RixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtZQUV4RixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7U0FFekU7YUFBTTtZQUVMLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFJLENBQUMsQ0FBQTtZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBSSxDQUFDLENBQUE7WUFFekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtZQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1NBRXJFO0lBRUgsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUF3QjtRQUUvQixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFM0UsSUFBSSxNQUFNLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFBO1FBRW5GLE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFaEcsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM3RSxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFdEgsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBRTdGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQTtJQUM1QixDQUFDOytHQXRJVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qiw0UEFiNUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2dCQUMzRCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzNELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkNsQkgsMm1DQTZDQTs7NEZEekJhLDRCQUE0QjtrQkFqQnhDLFNBQVM7K0JBQ0UsMkJBQTJCLGFBRzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDZCQUE2QixDQUFDOzRCQUMzRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBFQVlZLEdBQUc7c0JBQWYsS0FBSztnQkFVTyxHQUFHO3NCQUFmLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdPLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmFuZ2Utc2VsZWN0aW9uLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFuZ2VTZWxlY3Rpb25JbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhbmdlU2VsZWN0aW9uSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmFuZ2VTZWxlY3Rpb25JbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKVxuXG4gIGRvdWJsZVNsaWRlciA9IGZhbHNlXG5cbiAgc3RhcnRWYWx1ZSA9IHRoaXMuZmIuY29udHJvbCgwKVxuICBlbmRWYWx1ZSA9IHRoaXMuZmIuY29udHJvbCgwKVxuXG4gIF9taW4gPSAwXG4gIEBJbnB1dCgpIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX21pbiA9ICh2YWx1ZSkgPyB2YWx1ZSA6IDBcbiAgICB0aGlzLmRvdWJsZVNsaWRlciA9IHZhbHVlID4gLTEgPyB0cnVlIDogZmFsc2VcbiAgfVxuXG4gIGdldCBtaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pblxuICB9XG5cbiAgX21heCA9IDBcbiAgQElucHV0KCkgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4ID0gdmFsdWUgPyB2YWx1ZSA6IDEwMFxuICB9XG5cbiAgZ2V0IG1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4XG4gIH1cblxuICBASW5wdXQoKSBzaG93VmFsdWUgPSBmYWxzZVxuICBASW5wdXQoKSBzaG93RGl2aXNpb25zID0gZmFsc2VcbiAgQElucHV0KCkgZGl2aXNpb25zID0gMFxuXG4gIEBJbnB1dCgpIG1pblJlcXVpcmVkID0gdGhpcy5taW5cbiAgQElucHV0KCkgbWF4UmVxdWlyZWQgPSB0aGlzLm1heFxuXG4gIF9kaXNwbGF5RnVuYzogYW55XG4gIEBJbnB1dCgpIHNldCBkaXNwbGF5RnVuYyh2YWx1ZTogKGRhdGE6IGFueSkgPT4gYW55KSB7XG4gICAgdGhpcy5fZGlzcGxheUZ1bmMgPSB2YWx1ZVxuICB9XG5cbiAgZ2V0IGRpc3BsYXlGdW5jKCkge1xuICAgIHJldHVybiAodGhpcy5fZGlzcGxheUZ1bmMpID8gdGhpcy5fZGlzcGxheUZ1bmMgOiAoKSA9PiB7fVxuICB9XG5cbiAgaXNPYmplY3QgPSAodmFsdWU6IGFueSkgPT4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG5cbiAgZGlzYWJsZWQgPSBmYWxzZVxuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fVxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fVxuXG4gIHNsaWRlclZhbHVlID0geyBzdGFydDogMCwgZW5kOiAxMCB9XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICB9XG5cbiAgb25TZXRTdGFydFZhbHVlKHZhbHVlOiBhbnkpIHtcblxuICAgIGlmKCF0aGlzLmRvdWJsZVNsaWRlcikge1xuXG4gICAgICB0aGlzLnNsaWRlclZhbHVlLmVuZCA9ICt2YWx1ZVxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNsaWRlclZhbHVlLmVuZClcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMuc2xpZGVyVmFsdWUuc3RhcnQgPSArdmFsdWVcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zbGlkZXJWYWx1ZSlcblxuICAgIH1cblxuICB9XG5cbiAgb25TZXRFbmRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5zbGlkZXJWYWx1ZS5lbmQgPSArdmFsdWVcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2xpZGVyVmFsdWUpXG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnl8bnVtYmVyKSB7XG5cbiAgICBpZih2YWx1ZSkge1xuXG4gICAgICBpZih0aGlzLmlzT2JqZWN0KHZhbHVlKSAmJiB0aGlzLmRvdWJsZVNsaWRlcikge1xuICAgICAgICB0aGlzLnNsaWRlclZhbHVlLnN0YXJ0ID0gdmFsdWUuc3RhcnQgfHwgMFxuICAgICAgICB0aGlzLnNsaWRlclZhbHVlLmVuZCA9IHZhbHVlLmVuZCB8fCAwXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNsaWRlclZhbHVlLmVuZCA9IHZhbHVlXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2xpZGVyVmFsdWUuc3RhcnQgPSB0aGlzLnNsaWRlclZhbHVlLnN0YXJ0IDwgdGhpcy5taW4gPyB0aGlzLm1pbiA6IHRoaXMuc2xpZGVyVmFsdWUuc3RhcnRcbiAgICAgIHRoaXMuc2xpZGVyVmFsdWUuZW5kID0gdGhpcy5zbGlkZXJWYWx1ZS5lbmQgPCB0aGlzLm1heCA/IHRoaXMuc2xpZGVyVmFsdWUuZW5kIDogdGhpcy5tYXhcblxuICAgICAgdGhpcy5lbmRWYWx1ZS5wYXRjaFZhbHVlKHRoaXMuc2xpZGVyVmFsdWUuZW5kLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcbiAgICAgIHRoaXMuc3RhcnRWYWx1ZS5wYXRjaFZhbHVlKHRoaXMuc2xpZGVyVmFsdWUuc3RhcnQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KVxuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5zbGlkZXJWYWx1ZS5zdGFydCA9ICAwXG4gICAgICB0aGlzLnNsaWRlclZhbHVlLmVuZCA9ICAwXG5cbiAgICAgIHRoaXMuc3RhcnRWYWx1ZS5wYXRjaFZhbHVlKHRoaXMuc2xpZGVyVmFsdWUuc3RhcnQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KVxuICAgICAgdGhpcy5lbmRWYWx1ZS5wYXRjaFZhbHVlKHRoaXMuc2xpZGVyVmFsdWUuZW5kLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcblxuICAgIH1cblxuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuXG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8gdHJ1ZSA6IGZhbHNlXG5cbiAgICBsZXQgZXJyb3JzID0geyAnbWluUmVxdWlyZWQnOiBmYWxzZSwgJ21heFJlcXVpcmVkJzogZmFsc2UsICd2YWx1ZVJlcXVpcmVkJzogZmFsc2UgfVxuXG4gICAgZXJyb3JzLnZhbHVlUmVxdWlyZWQgPSB0aGlzLnNsaWRlclZhbHVlLnN0YXJ0ID09PSAwIHx8IHRoaXMuc2xpZGVyVmFsdWUuZW5kID09PSAwID8gdHJ1ZSA6IGZhbHNlXG5cbiAgICBlcnJvcnMubWluUmVxdWlyZWQgPSB0aGlzLnNsaWRlclZhbHVlLnN0YXJ0IDwgdGhpcy5taW5SZXF1aXJlZCA/IHRydWUgOiBmYWxzZVxuICAgIGVycm9ycy5tYXhSZXF1aXJlZCA9IHRoaXMuc2xpZGVyVmFsdWUuZW5kID4gdGhpcy5tYXhSZXF1aXJlZCB8fCB0aGlzLnNsaWRlclZhbHVlLmVuZCA8IHRoaXMubWluUmVxdWlyZWQgPyB0cnVlIDogZmFsc2VcblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZXJyb3JzKS5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgIT09IGZhbHNlKSlcblxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KXtcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmblxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgdGhpcy5vblRvdWNoID0gZm5cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG4gIH1cblxufVxuIiwiPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnJlbTsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG91YmxlU2xpZGVyOyBlbHNlIFNJTkdMRVwiPlxuICAgIDxtYXQtc2xpZGVyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgW21heF09XCJtYXhcIlxuICAgICAgW3Nob3dUaWNrTWFya3NdPVwic2hvd0RpdmlzaW9uc1wiXG4gICAgICBbZGlzY3JldGVdPVwic2hvd1ZhbHVlXCJcbiAgICAgIFtzdGVwXT1cImRpdmlzaW9uc1wiXG4gICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZ1bmNcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3RhcnRWYWx1ZVwiXG4gICAgICAgIG1hdFNsaWRlclN0YXJ0VGh1bWJcbiAgICAgICAgKGNoYW5nZSk9XCJvblNldFN0YXJ0VmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSlcIlxuICAgICAgLz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kVmFsdWVcIlxuICAgICAgICBtYXRTbGlkZXJFbmRUaHVtYlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2V0RW5kVmFsdWUoZW5kVmFsdWUudmFsdWUpXCJcbiAgICAgID5cbiAgICA8L21hdC1zbGlkZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjU0lOR0xFPlxuICAgIDxtYXQtc2xpZGVyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21pbl09XCIwXCJcbiAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgIFtzdGVwXT1cImRpdmlzaW9uc1wiXG4gICAgICBbZGlzY3JldGVdPVwic2hvd1ZhbHVlXCJcbiAgICAgIFtzaG93VGlja01hcmtzXT1cInNob3dEaXZpc2lvbnNcIlxuICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGdW5jXCJcbiAgICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRTbGlkZXJUaHVtYlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kVmFsdWVcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2V0U3RhcnRWYWx1ZShlbmRWYWx1ZS52YWx1ZSlcIlxuICAgICAgPlxuICAgIDwvbWF0LXNsaWRlcj5cblxuICA8L25nLXRlbXBsYXRlPlxuXG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@angular/material/button";
|
|
7
|
+
import * as i4 from "@angular/material/form-field";
|
|
8
|
+
import * as i5 from "@angular/material/slide-toggle";
|
|
9
|
+
import * as i6 from "@angular/material/divider";
|
|
10
|
+
import * as i7 from "@angular/material/button-toggle";
|
|
11
|
+
import * as i8 from "../input-slider/range-selection-input.component";
|
|
12
|
+
export class RangeDemoComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.fb = inject(FormBuilder);
|
|
15
|
+
this.selectionControl_1 = this.fb.control(null);
|
|
16
|
+
this.selectionControl_2 = this.fb.control(null, Validators.required);
|
|
17
|
+
this.selectionControl_3 = this.fb.control(null, Validators.required);
|
|
18
|
+
this.changeDetection_1 = this.fb.control(null);
|
|
19
|
+
this.changeDetection_2 = this.fb.control(null);
|
|
20
|
+
this.changeDetection_3 = this.fb.control(null);
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.selectionControl_1.valueChanges.subscribe(data => {
|
|
24
|
+
if (this.changeDetection_1.valid)
|
|
25
|
+
console.log('CHANGE:', data);
|
|
26
|
+
});
|
|
27
|
+
this.selectionControl_2.valueChanges.subscribe(data => {
|
|
28
|
+
if (this.changeDetection_2.valid)
|
|
29
|
+
console.log('CHANGE:', data);
|
|
30
|
+
});
|
|
31
|
+
this.selectionControl_3.valueChanges.subscribe(data => {
|
|
32
|
+
if (this.changeDetection_3.valid)
|
|
33
|
+
console.log('CHANGE:', data);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
customLabel(value) {
|
|
37
|
+
return `${value}K`;
|
|
38
|
+
}
|
|
39
|
+
// DISABLE
|
|
40
|
+
onDisabled_1(disable) {
|
|
41
|
+
if (disable) {
|
|
42
|
+
this.selectionControl_1.disable();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.selectionControl_1.enable();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
onDisabled_2(disable) {
|
|
49
|
+
if (disable) {
|
|
50
|
+
this.selectionControl_2.disable();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.selectionControl_2.enable();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
onPerformPatch() {
|
|
57
|
+
this.selectionControl_1.patchValue(5);
|
|
58
|
+
this.selectionControl_2.patchValue({ start: 25, end: 50 });
|
|
59
|
+
this.selectionControl_3.patchValue({ start: 25, end: 50 });
|
|
60
|
+
}
|
|
61
|
+
nothingMethod(value) {
|
|
62
|
+
return value.toString();
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RangeDemoComponent, selector: "app-range-selection-input-demo", ngImport: i0, template: "<div style=\"display: flex;\">\n <h1>Slider FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n </div>\n </div>\n</div>\n\n<!-- <h3>No Data - Projection of Error</h3>\n\n<app-input-slider>\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-input-slider>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div> -->\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Range Selection - VALUE</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_1\"\n [max]=\"25\"\n [showValue]=\"showVal_1.checked\"\n [showDivisions]=\"showTicks_1.checked\"\n [divisions]=\"showTicks_1.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_1.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_1>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_1>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_1>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_1>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range 0 - 25<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n No label<br>\n No Validation Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_2\"\n [min]=\"0\"\n [max]=\"100\"\n [showValue]=\"showVal_2.checked\"\n [showDivisions]=\"showTicks_2.checked\"\n [divisions]=\"showTicks_2.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_2.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('valueRequired')\">Must have a Selection</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_2>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_2>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_2>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_2>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection with Min/Max Validation - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_3\"\n [min]=\"0\"\n [max]=\"100\"\n [minRequired]=\"10\"\n [maxRequired]=\"50\"\n [showValue]=\"showVal_3.checked\"\n [showDivisions]=\"showTicks_3.checked\"\n [divisions]=\"showTicks_3.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_3.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Range must be greater then 10</mat-error>\n </div>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('maxRequired')\">Range must me less then 50</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_3>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_3>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_3>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_3>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required with Min > 10 and Max < 50<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i8.RangeSelectionInputComponent, selector: "app-range-selection-input", inputs: ["min", "max", "showValue", "showDivisions", "divisions", "minRequired", "maxRequired", "displayFunc"] }] }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeDemoComponent, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ selector: 'app-range-selection-input-demo', template: "<div style=\"display: flex;\">\n <h1>Slider FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n </div>\n </div>\n</div>\n\n<!-- <h3>No Data - Projection of Error</h3>\n\n<app-input-slider>\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-input-slider>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div> -->\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Range Selection - VALUE</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_1\"\n [max]=\"25\"\n [showValue]=\"showVal_1.checked\"\n [showDivisions]=\"showTicks_1.checked\"\n [divisions]=\"showTicks_1.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_1.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_1>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_1>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_1>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_1>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range 0 - 25<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n No label<br>\n No Validation Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_2\"\n [min]=\"0\"\n [max]=\"100\"\n [showValue]=\"showVal_2.checked\"\n [showDivisions]=\"showTicks_2.checked\"\n [divisions]=\"showTicks_2.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_2.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('valueRequired')\">Must have a Selection</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_2>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_2>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_2>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_2>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection with Min/Max Validation - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_3\"\n [min]=\"0\"\n [max]=\"100\"\n [minRequired]=\"10\"\n [maxRequired]=\"50\"\n [showValue]=\"showVal_3.checked\"\n [showDivisions]=\"showTicks_3.checked\"\n [divisions]=\"showTicks_3.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_3.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Range must be greater then 10</mat-error>\n </div>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('maxRequired')\">Range must me less then 50</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_3>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_3>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_3>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_3>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required with Min > 10 and Max < 50<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n" }]
|
|
70
|
+
}], ctorParameters: function () { return []; } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYW5nZS1zZWxlY3Rpb24taW5wdXQvc3JjL2xpYi9yYW5nZS1kZW1vL3JhbmdlLWRlbW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFuZ2Utc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvcmFuZ2UtZGVtby9yYW5nZS1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPekQsTUFBTSxPQUFPLGtCQUFrQjtJQWM3QjtRQVpBLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFeEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQWMsSUFBSSxDQUFDLENBQUE7UUFDdkQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQXNDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDcEcsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQXNDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFcEcsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQWEsSUFBSSxDQUFDLENBQUE7UUFDckQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQWEsSUFBSSxDQUFDLENBQUE7UUFDckQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQWEsSUFBSSxDQUFDLENBQUE7SUFJckMsQ0FBQztJQUVqQixRQUFRO1FBRU4sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSztnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUM5RCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BELElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRCxJQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlELENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQsVUFBVTtJQUNWLFlBQVksQ0FBQyxPQUFnQjtRQUUzQixJQUFHLE9BQU8sRUFBRTtZQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQ2pDO0lBRUgsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFnQjtRQUUzQixJQUFHLE9BQU8sRUFBRTtZQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQ2pDO0lBRUgsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUN6QixDQUFDOytHQWpFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzRUNSL0IscXFMQWtKQTs7NEZEMUlhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXJhbmdlLXNlbGVjdGlvbi1pbnB1dC1kZW1vJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhbmdlLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYW5nZS1kZW1vLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSYW5nZURlbW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKVxuXG4gIHNlbGVjdGlvbkNvbnRyb2xfMSA9IHRoaXMuZmIuY29udHJvbDxudW1iZXJ8bnVsbD4obnVsbClcbiAgc2VsZWN0aW9uQ29udHJvbF8yID0gdGhpcy5mYi5jb250cm9sPHsgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgfXxudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICBzZWxlY3Rpb25Db250cm9sXzMgPSB0aGlzLmZiLmNvbnRyb2w8eyBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciB9fG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG5cbiAgY2hhbmdlRGV0ZWN0aW9uXzEgPSB0aGlzLmZiLmNvbnRyb2w8YW55W118bnVsbD4obnVsbClcbiAgY2hhbmdlRGV0ZWN0aW9uXzIgPSB0aGlzLmZiLmNvbnRyb2w8YW55W118bnVsbD4obnVsbClcbiAgY2hhbmdlRGV0ZWN0aW9uXzMgPSB0aGlzLmZiLmNvbnRyb2w8YW55W118bnVsbD4obnVsbClcblxuXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8xLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZih0aGlzLmNoYW5nZURldGVjdGlvbl8xLnZhbGlkKSBjb25zb2xlLmxvZygnQ0hBTkdFOicsZGF0YSlcbiAgICB9KVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGlmKHRoaXMuY2hhbmdlRGV0ZWN0aW9uXzIudmFsaWQpIGNvbnNvbGUubG9nKCdDSEFOR0U6JyxkYXRhKVxuICAgIH0pXG5cbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYodGhpcy5jaGFuZ2VEZXRlY3Rpb25fMy52YWxpZCkgY29uc29sZS5sb2coJ0NIQU5HRTonLGRhdGEpXG4gICAgfSlcblxuICB9XG5cbiAgY3VzdG9tTGFiZWwodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ZhbHVlfUtgO1xuICB9XG5cbiAgLy8gRElTQUJMRVxuICBvbkRpc2FibGVkXzEoZGlzYWJsZTogYm9vbGVhbikge1xuXG4gICAgaWYoZGlzYWJsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzEuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8xLmVuYWJsZSgpXG4gICAgfVxuXG4gIH1cblxuICBvbkRpc2FibGVkXzIoZGlzYWJsZTogYm9vbGVhbikge1xuXG4gICAgaWYoZGlzYWJsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzIuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8yLmVuYWJsZSgpXG4gICAgfVxuXG4gIH1cblxuICBvblBlcmZvcm1QYXRjaCgpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMS5wYXRjaFZhbHVlKDUpXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzIucGF0Y2hWYWx1ZSh7IHN0YXJ0OiAyNSwgZW5kOiA1MCB9KVxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8zLnBhdGNoVmFsdWUoeyBzdGFydDogMjUsIGVuZDogNTAgfSlcbiAgfVxuXG4gIG5vdGhpbmdNZXRob2QodmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpXG4gIH1cblxufVxuXG5cblxuIiwiPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gIDxoMT5TbGlkZXIgRm9ybUNvbnRyb2w8L2gxPlxuICA8ZGl2IHN0eWxlPVwiZmxleDoxOyB0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycmVtOyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgKGNsaWNrKT1cIm9uUGVyZm9ybVBhdGNoKClcIj5QYXRjaDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gPGgzPk5vIERhdGEgLSBQcm9qZWN0aW9uIG9mIEVycm9yPC9oMz5cblxuPGFwcC1pbnB1dC1zbGlkZXI+XG4gIDxoMyBzdHlsZT1cImNvbG9yOiByZWQ7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDA7XCI+Tm8gRGF0YTwvaDM+XG48L2FwcC1pbnB1dC1zbGlkZXI+XG5cbjxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAuNXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTtcIj5cbiAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG48L2Rpdj4gLS0+XG5cbjxkaXY+XG4gIDxoMyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDA7XCI+U2luZ2xlIFJhbmdlIFNlbGVjdGlvbiAtIFZBTFVFPC9oMz5cblxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdGlvbkNvbnRyb2xfMS5yZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxhcHAtcmFuZ2Utc2VsZWN0aW9uLWlucHV0XG4gICAgW2Zvcm1Db250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xfMVwiXG4gICAgW21heF09XCIyNVwiXG4gICAgW3Nob3dWYWx1ZV09XCJzaG93VmFsXzEuY2hlY2tlZFwiXG4gICAgW3Nob3dEaXZpc2lvbnNdPVwic2hvd1RpY2tzXzEuY2hlY2tlZFwiXG4gICAgW2RpdmlzaW9uc109XCJzaG93VGlja3NfMS5jaGVja2VkID8gNSA6IDBcIlxuICAgIFtkaXNwbGF5RnVuY109XCIobGFiZWxGb3JtYXRfMS5jaGVja2VkKSA/IGN1c3RvbUxhYmVsIDogbm90aGluZ01ldGhvZFwiXG4gID5cbiAgPC9hcHAtcmFuZ2Utc2VsZWN0aW9uLWlucHV0PlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycmVtOyBtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtmb3JtQ29udHJvbF09XCJjaGFuZ2VEZXRlY3Rpb25fMVwiPkNoYW5nZSBEZXRlY3Rpb248L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2Rpc2FibGUxIChjaGFuZ2UpPVwib25EaXNhYmxlZF8xKGRpc2FibGUxLmNoZWNrZWQpXCI+RGlzYWJsZTwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjc2hvd1ZhbF8xPlNob3cgVmFsdWU8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI3Nob3dUaWNrc18xPlNob3cgRGl2aXNpb25zPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNkaXZpc2lvbnNfMT5EaXZpc2lvbnM8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2xhYmVsRm9ybWF0XzE+TGFiZWwgRm9ybWF0PC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgUmFuZ2UgMCAtIDI1PGJyIC8+XG4gICAgU3RlcCBJbmNyZW1lbnQgaXMgc2V0IHRvIDUgb25seSB3aGVuIFNob3cgRGl2aXNpb25zID0gdHJ1ZTxicj5cbiAgICBObyBsYWJlbDxicj5cbiAgICBObyBWYWxpZGF0aW9uIFJlcXVpcmVkPGJyPlxuICAgIFZhbGlkIHt7IHNlbGVjdGlvbkNvbnRyb2xfMS52YWxpZCB9fTxicj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAuNXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTtcIj5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdj5cblxuICA8aDMgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlN0YXJ0L0VuZCBSYW5nZSBTZWxlY3Rpb24gLSBPQkpFQ1Q8L2gzPlxuXG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0aW9uQ29udHJvbF8yLnJlc2V0KClcIj5SZXNldDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGFwcC1yYW5nZS1zZWxlY3Rpb24taW5wdXRcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbF8yXCJcbiAgICBbbWluXT1cIjBcIlxuICAgIFttYXhdPVwiMTAwXCJcbiAgICBbc2hvd1ZhbHVlXT1cInNob3dWYWxfMi5jaGVja2VkXCJcbiAgICBbc2hvd0RpdmlzaW9uc109XCJzaG93VGlja3NfMi5jaGVja2VkXCJcbiAgICBbZGl2aXNpb25zXT1cInNob3dUaWNrc18yLmNoZWNrZWQgPyA1IDogMFwiXG4gICAgW2Rpc3BsYXlGdW5jXT1cIihsYWJlbEZvcm1hdF8yLmNoZWNrZWQpID8gY3VzdG9tTGFiZWwgOiBub3RoaW5nTWV0aG9kXCJcbiAgPlxuICA8L2FwcC1yYW5nZS1zZWxlY3Rpb24taW5wdXQ+XG4gIDxkaXYgKm5nSWY9XCJlcnJvcjIuY2hlY2tlZFwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWxlY3Rpb25Db250cm9sXzIuaGFzRXJyb3IoJ3ZhbHVlUmVxdWlyZWQnKVwiPk11c3QgaGF2ZSBhIFNlbGVjdGlvbjwvbWF0LWVycm9yPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnJlbTsgbWFyZ2luLXRvcDogMnJlbTtcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbZm9ybUNvbnRyb2xdPVwiY2hhbmdlRGV0ZWN0aW9uXzJcIj5DaGFuZ2UgRGV0ZWN0aW9uPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNlcnJvcjI+RGlzcGxheSBFcnJvcjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZGlzYWJsZTIgKGNoYW5nZSk9XCJvbkRpc2FibGVkXzIoZGlzYWJsZTIuY2hlY2tlZClcIj5EaXNhYmxlPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNzaG93VmFsXzI+U2hvdyBWYWx1ZTwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjc2hvd1RpY2tzXzI+U2hvdyBEaXZpc2lvbnM8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2RpdmlzaW9uc18yPkRpdmlzaW9uczwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjbGFiZWxGb3JtYXRfMj5MYWJlbCBGb3JtYXQ8L21hdC1zbGlkZS10b2dnbGU+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMnJlbTtcIj5cbiAgICBSYW5nZSBmcm9tIDAgLSAxMDA8YnIgLz5cbiAgICBTdGVwIEluY3JlbWVudCBpcyBzZXQgdG8gNSBvbmx5IHdoZW4gU2hvdyBEaXZpc2lvbnMgPSB0cnVlPGJyPlxuICAgIExhYmVsPGJyPlxuICAgIFZhbGlkYXRpb24gUmVxdWlyZWQ8YnI+XG4gICAgVmFsaWQge3sgc2VsZWN0aW9uQ29udHJvbF8yLnZhbGlkIH19PGJyPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2PlxuXG4gIDxoMyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDA7XCI+U3RhcnQvRW5kIFJhbmdlIFNlbGVjdGlvbiB3aXRoIE1pbi9NYXggVmFsaWRhdGlvbiAtIE9CSkVDVDwvaDM+XG5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3Rpb25Db250cm9sXzMucmVzZXQoKVwiPlJlc2V0PC9idXR0b24+XG4gIDwvZGl2PlxuICA8YXBwLXJhbmdlLXNlbGVjdGlvbi1pbnB1dFxuICAgIFtmb3JtQ29udHJvbF09XCJzZWxlY3Rpb25Db250cm9sXzNcIlxuICAgIFttaW5dPVwiMFwiXG4gICAgW21heF09XCIxMDBcIlxuICAgIFttaW5SZXF1aXJlZF09XCIxMFwiXG4gICAgW21heFJlcXVpcmVkXT1cIjUwXCJcbiAgICBbc2hvd1ZhbHVlXT1cInNob3dWYWxfMy5jaGVja2VkXCJcbiAgICBbc2hvd0RpdmlzaW9uc109XCJzaG93VGlja3NfMy5jaGVja2VkXCJcbiAgICBbZGl2aXNpb25zXT1cInNob3dUaWNrc18zLmNoZWNrZWQgPyA1IDogMFwiXG4gICAgW2Rpc3BsYXlGdW5jXT1cIihsYWJlbEZvcm1hdF8zLmNoZWNrZWQpID8gY3VzdG9tTGFiZWwgOiBub3RoaW5nTWV0aG9kXCJcbiAgPlxuICA8L2FwcC1yYW5nZS1zZWxlY3Rpb24taW5wdXQ+XG4gIDxkaXYgKm5nSWY9XCJlcnJvcjMuY2hlY2tlZFwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWxlY3Rpb25Db250cm9sXzMuaGFzRXJyb3IoJ21pblJlcXVpcmVkJylcIj5SYW5nZSBtdXN0IGJlIGdyZWF0ZXIgdGhlbiAxMDwvbWF0LWVycm9yPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImVycm9yMy5jaGVja2VkXCI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGlvbkNvbnRyb2xfMy5oYXNFcnJvcignbWF4UmVxdWlyZWQnKVwiPlJhbmdlIG11c3QgbWUgbGVzcyB0aGVuIDUwPC9tYXQtZXJyb3I+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycmVtOyBtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtmb3JtQ29udHJvbF09XCJjaGFuZ2VEZXRlY3Rpb25fMlwiPkNoYW5nZSBEZXRlY3Rpb248L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2Vycm9yMz5EaXNwbGF5IEVycm9yPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNkaXNhYmxlMyAoY2hhbmdlKT1cIm9uRGlzYWJsZWRfMihkaXNhYmxlMi5jaGVja2VkKVwiPkRpc2FibGU8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI3Nob3dWYWxfMz5TaG93IFZhbHVlPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNzaG93VGlja3NfMz5TaG93IERpdmlzaW9uczwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZGl2aXNpb25zXzM+RGl2aXNpb25zPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNsYWJlbEZvcm1hdF8zPkxhYmVsIEZvcm1hdDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIFJhbmdlIGZyb20gMCAtIDEwMDxiciAvPlxuICAgIFN0ZXAgSW5jcmVtZW50IGlzIHNldCB0byA1IG9ubHkgd2hlbiBTaG93IERpdmlzaW9ucyA9IHRydWU8YnI+XG4gICAgTGFiZWw8YnI+XG4gICAgVmFsaWRhdGlvbiBSZXF1aXJlZCB3aXRoIE1pbiA+IDEwIGFuZCBNYXggPCA1MDxicj5cbiAgICBWYWxpZCB7eyBzZWxlY3Rpb25Db250cm9sXzMudmFsaWQgfX08YnI+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IDFyZW07XCI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
5
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
8
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
9
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
10
|
+
import { RangeDemoComponent } from './range-demo/range-demo.component';
|
|
11
|
+
import { RangeSelectionInputComponent } from './input-slider/range-selection-input.component';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class RangeSelectionInputModule {
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
15
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, declarations: [RangeSelectionInputComponent,
|
|
16
|
+
RangeDemoComponent], imports: [CommonModule,
|
|
17
|
+
FormsModule,
|
|
18
|
+
ReactiveFormsModule,
|
|
19
|
+
MatButtonModule,
|
|
20
|
+
MatFormFieldModule,
|
|
21
|
+
MatSliderModule,
|
|
22
|
+
MatSlideToggleModule,
|
|
23
|
+
MatDividerModule,
|
|
24
|
+
MatButtonToggleModule], exports: [RangeSelectionInputComponent,
|
|
25
|
+
RangeDemoComponent] }); }
|
|
26
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, imports: [CommonModule,
|
|
27
|
+
FormsModule,
|
|
28
|
+
ReactiveFormsModule,
|
|
29
|
+
MatButtonModule,
|
|
30
|
+
MatFormFieldModule,
|
|
31
|
+
MatSliderModule,
|
|
32
|
+
MatSlideToggleModule,
|
|
33
|
+
MatDividerModule,
|
|
34
|
+
MatButtonToggleModule] }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [
|
|
40
|
+
CommonModule,
|
|
41
|
+
FormsModule,
|
|
42
|
+
ReactiveFormsModule,
|
|
43
|
+
MatButtonModule,
|
|
44
|
+
MatFormFieldModule,
|
|
45
|
+
MatSliderModule,
|
|
46
|
+
MatSlideToggleModule,
|
|
47
|
+
MatDividerModule,
|
|
48
|
+
MatButtonToggleModule,
|
|
49
|
+
],
|
|
50
|
+
declarations: [
|
|
51
|
+
RangeSelectionInputComponent,
|
|
52
|
+
RangeDemoComponent,
|
|
53
|
+
],
|
|
54
|
+
exports: [
|
|
55
|
+
RangeSelectionInputComponent,
|
|
56
|
+
RangeDemoComponent
|
|
57
|
+
]
|
|
58
|
+
}]
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0aW9uLWlucHV0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7O0FBdUI5RixNQUFNLE9BQU8seUJBQXlCOytHQUF6Qix5QkFBeUI7Z0hBQXpCLHlCQUF5QixpQkFSbEMsNEJBQTRCO1lBQzVCLGtCQUFrQixhQVpsQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQixhQU9yQiw0QkFBNEI7WUFDNUIsa0JBQWtCO2dIQUdULHlCQUF5QixZQW5CbEMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLGdCQUFnQjtZQUNoQixxQkFBcUI7OzRGQVdaLHlCQUF5QjtrQkFyQnJDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWiw0QkFBNEI7d0JBQzVCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDRCQUE0Qjt3QkFDNUIsa0JBQWtCO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5cbmltcG9ydCB7IFJhbmdlRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vcmFuZ2UtZGVtby9yYW5nZS1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZVNlbGVjdGlvbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1zbGlkZXIvcmFuZ2Utc2VsZWN0aW9uLWlucHV0LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNsaWRlck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUmFuZ2VTZWxlY3Rpb25JbnB1dENvbXBvbmVudCxcbiAgICBSYW5nZURlbW9Db21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSYW5nZVNlbGVjdGlvbklucHV0Q29tcG9uZW50LFxuICAgIFJhbmdlRGVtb0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlU2VsZWN0aW9uSW5wdXRNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of range-selection-input
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/range-demo/range-demo.component';
|
|
5
|
+
export * from './lib/input-slider/range-selection-input.component';
|
|
6
|
+
export * from './lib/range-selection-input.module';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3JhbmdlLXNlbGVjdGlvbi1pbnB1dC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiByYW5nZS1zZWxlY3Rpb24taW5wdXRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5nZS1kZW1vL3JhbmdlLWRlbW8uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LXNsaWRlci9yYW5nZS1zZWxlY3Rpb24taW5wdXQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFuZ2Utc2VsZWN0aW9uLWlucHV0Lm1vZHVsZSc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0aW9uLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvcmFuZ2Utc2VsZWN0aW9uLWlucHV0L3NyYy9yYW5nZS1zZWxlY3Rpb24taW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, forwardRef, Component, Input, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/forms';
|
|
4
|
+
import { FormBuilder, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import * as i1 from '@angular/common';
|
|
6
|
+
import { CommonModule } from '@angular/common';
|
|
7
|
+
import * as i3$1 from '@angular/material/button';
|
|
8
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
9
|
+
import * as i4 from '@angular/material/form-field';
|
|
10
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
11
|
+
import * as i5 from '@angular/material/slide-toggle';
|
|
12
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
13
|
+
import * as i6 from '@angular/material/divider';
|
|
14
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
15
|
+
import * as i7 from '@angular/material/button-toggle';
|
|
16
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
17
|
+
import * as i3 from '@angular/material/slider';
|
|
18
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
19
|
+
|
|
20
|
+
class RangeSelectionInputComponent {
|
|
21
|
+
set min(value) {
|
|
22
|
+
this._min = (value) ? value : 0;
|
|
23
|
+
this.doubleSlider = value > -1 ? true : false;
|
|
24
|
+
}
|
|
25
|
+
get min() {
|
|
26
|
+
return this._min;
|
|
27
|
+
}
|
|
28
|
+
set max(value) {
|
|
29
|
+
this._max = value ? value : 100;
|
|
30
|
+
}
|
|
31
|
+
get max() {
|
|
32
|
+
return this._max;
|
|
33
|
+
}
|
|
34
|
+
set displayFunc(value) {
|
|
35
|
+
this._displayFunc = value;
|
|
36
|
+
}
|
|
37
|
+
get displayFunc() {
|
|
38
|
+
return (this._displayFunc) ? this._displayFunc : () => { };
|
|
39
|
+
}
|
|
40
|
+
constructor() {
|
|
41
|
+
this.fb = inject(FormBuilder);
|
|
42
|
+
this.doubleSlider = false;
|
|
43
|
+
this.startValue = this.fb.control(0);
|
|
44
|
+
this.endValue = this.fb.control(0);
|
|
45
|
+
this._min = 0;
|
|
46
|
+
this._max = 0;
|
|
47
|
+
this.showValue = false;
|
|
48
|
+
this.showDivisions = false;
|
|
49
|
+
this.divisions = 0;
|
|
50
|
+
this.minRequired = this.min;
|
|
51
|
+
this.maxRequired = this.max;
|
|
52
|
+
this.isObject = (value) => typeof value === "object";
|
|
53
|
+
this.disabled = false;
|
|
54
|
+
this.onChange = () => { };
|
|
55
|
+
this.onTouch = () => { };
|
|
56
|
+
this.sliderValue = { start: 0, end: 10 };
|
|
57
|
+
}
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
}
|
|
60
|
+
onSetStartValue(value) {
|
|
61
|
+
if (!this.doubleSlider) {
|
|
62
|
+
this.sliderValue.end = +value;
|
|
63
|
+
this.onChange(this.sliderValue.end);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.sliderValue.start = +value;
|
|
67
|
+
this.onChange(this.sliderValue);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
onSetEndValue(value) {
|
|
71
|
+
this.sliderValue.end = +value;
|
|
72
|
+
this.onChange(this.sliderValue);
|
|
73
|
+
}
|
|
74
|
+
writeValue(value) {
|
|
75
|
+
if (value) {
|
|
76
|
+
if (this.isObject(value) && this.doubleSlider) {
|
|
77
|
+
this.sliderValue.start = value.start || 0;
|
|
78
|
+
this.sliderValue.end = value.end || 0;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.sliderValue.end = value;
|
|
82
|
+
}
|
|
83
|
+
this.sliderValue.start = this.sliderValue.start < this.min ? this.min : this.sliderValue.start;
|
|
84
|
+
this.sliderValue.end = this.sliderValue.end < this.max ? this.sliderValue.end : this.max;
|
|
85
|
+
this.endValue.patchValue(this.sliderValue.end, { emitEvent: false });
|
|
86
|
+
this.startValue.patchValue(this.sliderValue.start, { emitEvent: false });
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.sliderValue.start = 0;
|
|
90
|
+
this.sliderValue.end = 0;
|
|
91
|
+
this.startValue.patchValue(this.sliderValue.start, { emitEvent: false });
|
|
92
|
+
this.endValue.patchValue(this.sliderValue.end, { emitEvent: false });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
validate(control) {
|
|
96
|
+
const isRequired = control.hasValidator(Validators.required) ? true : false;
|
|
97
|
+
let errors = { 'minRequired': false, 'maxRequired': false, 'valueRequired': false };
|
|
98
|
+
errors.valueRequired = this.sliderValue.start === 0 || this.sliderValue.end === 0 ? true : false;
|
|
99
|
+
errors.minRequired = this.sliderValue.start < this.minRequired ? true : false;
|
|
100
|
+
errors.maxRequired = this.sliderValue.end > this.maxRequired || this.sliderValue.end < this.minRequired ? true : false;
|
|
101
|
+
return Object.fromEntries(Object.entries(errors).filter(([key, value]) => value !== false));
|
|
102
|
+
}
|
|
103
|
+
registerOnChange(fn) {
|
|
104
|
+
this.onChange = fn;
|
|
105
|
+
}
|
|
106
|
+
registerOnTouched(fn) {
|
|
107
|
+
this.onTouch = fn;
|
|
108
|
+
}
|
|
109
|
+
setDisabledState(isDisabled) {
|
|
110
|
+
this.disabled = isDisabled;
|
|
111
|
+
}
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RangeSelectionInputComponent, selector: "app-range-selection-input", inputs: { min: "min", max: "max", showValue: "showValue", showDivisions: "showDivisions", divisions: "divisions", minRequired: "minRequired", maxRequired: "maxRequired", displayFunc: "displayFunc" }, providers: [
|
|
114
|
+
{
|
|
115
|
+
provide: NG_VALUE_ACCESSOR,
|
|
116
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
117
|
+
multi: true
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
provide: NG_VALIDATORS,
|
|
121
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
122
|
+
multi: true
|
|
123
|
+
}
|
|
124
|
+
], ngImport: i0, template: "<div style=\"display: flex; gap: 2rem; flex-direction: column;\">\n\n <ng-container *ngIf=\"doubleSlider; else SINGLE\">\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"min\"\n [max]=\"max\"\n [showTickMarks]=\"showDivisions\"\n [discrete]=\"showValue\"\n [step]=\"divisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n [formControl]=\"startValue\"\n matSliderStartThumb\n (change)=\"onSetStartValue(startValue.value)\"\n />\n <input\n [formControl]=\"endValue\"\n matSliderEndThumb\n (change)=\"onSetEndValue(endValue.value)\"\n >\n </mat-slider>\n </ng-container>\n\n <ng-template #SINGLE>\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"0\"\n [max]=\"max\"\n [step]=\"divisions\"\n [discrete]=\"showValue\"\n [showTickMarks]=\"showDivisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n matSliderThumb\n [formControl]=\"endValue\"\n (change)=\"onSetStartValue(endValue.value)\"\n >\n </mat-slider>\n\n </ng-template>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatSlider, selector: "mat-slider", inputs: ["color", "disableRipple", "disabled", "discrete", "showTickMarks", "min", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i3.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }] }); }
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'app-range-selection-input', providers: [
|
|
129
|
+
{
|
|
130
|
+
provide: NG_VALUE_ACCESSOR,
|
|
131
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
132
|
+
multi: true
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
provide: NG_VALIDATORS,
|
|
136
|
+
useExisting: forwardRef(() => RangeSelectionInputComponent),
|
|
137
|
+
multi: true
|
|
138
|
+
}
|
|
139
|
+
], template: "<div style=\"display: flex; gap: 2rem; flex-direction: column;\">\n\n <ng-container *ngIf=\"doubleSlider; else SINGLE\">\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"min\"\n [max]=\"max\"\n [showTickMarks]=\"showDivisions\"\n [discrete]=\"showValue\"\n [step]=\"divisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n [formControl]=\"startValue\"\n matSliderStartThumb\n (change)=\"onSetStartValue(startValue.value)\"\n />\n <input\n [formControl]=\"endValue\"\n matSliderEndThumb\n (change)=\"onSetEndValue(endValue.value)\"\n >\n </mat-slider>\n </ng-container>\n\n <ng-template #SINGLE>\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"0\"\n [max]=\"max\"\n [step]=\"divisions\"\n [discrete]=\"showValue\"\n [showTickMarks]=\"showDivisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n matSliderThumb\n [formControl]=\"endValue\"\n (change)=\"onSetStartValue(endValue.value)\"\n >\n </mat-slider>\n\n </ng-template>\n\n</div>\n" }]
|
|
140
|
+
}], ctorParameters: function () { return []; }, propDecorators: { min: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], max: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], showValue: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], showDivisions: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], divisions: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], minRequired: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], maxRequired: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], displayFunc: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}] } });
|
|
157
|
+
|
|
158
|
+
class RangeDemoComponent {
|
|
159
|
+
constructor() {
|
|
160
|
+
this.fb = inject(FormBuilder);
|
|
161
|
+
this.selectionControl_1 = this.fb.control(null);
|
|
162
|
+
this.selectionControl_2 = this.fb.control(null, Validators.required);
|
|
163
|
+
this.selectionControl_3 = this.fb.control(null, Validators.required);
|
|
164
|
+
this.changeDetection_1 = this.fb.control(null);
|
|
165
|
+
this.changeDetection_2 = this.fb.control(null);
|
|
166
|
+
this.changeDetection_3 = this.fb.control(null);
|
|
167
|
+
}
|
|
168
|
+
ngOnInit() {
|
|
169
|
+
this.selectionControl_1.valueChanges.subscribe(data => {
|
|
170
|
+
if (this.changeDetection_1.valid)
|
|
171
|
+
console.log('CHANGE:', data);
|
|
172
|
+
});
|
|
173
|
+
this.selectionControl_2.valueChanges.subscribe(data => {
|
|
174
|
+
if (this.changeDetection_2.valid)
|
|
175
|
+
console.log('CHANGE:', data);
|
|
176
|
+
});
|
|
177
|
+
this.selectionControl_3.valueChanges.subscribe(data => {
|
|
178
|
+
if (this.changeDetection_3.valid)
|
|
179
|
+
console.log('CHANGE:', data);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
customLabel(value) {
|
|
183
|
+
return `${value}K`;
|
|
184
|
+
}
|
|
185
|
+
// DISABLE
|
|
186
|
+
onDisabled_1(disable) {
|
|
187
|
+
if (disable) {
|
|
188
|
+
this.selectionControl_1.disable();
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
this.selectionControl_1.enable();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
onDisabled_2(disable) {
|
|
195
|
+
if (disable) {
|
|
196
|
+
this.selectionControl_2.disable();
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this.selectionControl_2.enable();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
onPerformPatch() {
|
|
203
|
+
this.selectionControl_1.patchValue(5);
|
|
204
|
+
this.selectionControl_2.patchValue({ start: 25, end: 50 });
|
|
205
|
+
this.selectionControl_3.patchValue({ start: 25, end: 50 });
|
|
206
|
+
}
|
|
207
|
+
nothingMethod(value) {
|
|
208
|
+
return value.toString();
|
|
209
|
+
}
|
|
210
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RangeDemoComponent, selector: "app-range-selection-input-demo", ngImport: i0, template: "<div style=\"display: flex;\">\n <h1>Slider FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n </div>\n </div>\n</div>\n\n<!-- <h3>No Data - Projection of Error</h3>\n\n<app-input-slider>\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-input-slider>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div> -->\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Range Selection - VALUE</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_1\"\n [max]=\"25\"\n [showValue]=\"showVal_1.checked\"\n [showDivisions]=\"showTicks_1.checked\"\n [divisions]=\"showTicks_1.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_1.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_1>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_1>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_1>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_1>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range 0 - 25<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n No label<br>\n No Validation Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_2\"\n [min]=\"0\"\n [max]=\"100\"\n [showValue]=\"showVal_2.checked\"\n [showDivisions]=\"showTicks_2.checked\"\n [divisions]=\"showTicks_2.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_2.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('valueRequired')\">Must have a Selection</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_2>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_2>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_2>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_2>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection with Min/Max Validation - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_3\"\n [min]=\"0\"\n [max]=\"100\"\n [minRequired]=\"10\"\n [maxRequired]=\"50\"\n [showValue]=\"showVal_3.checked\"\n [showDivisions]=\"showTicks_3.checked\"\n [divisions]=\"showTicks_3.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_3.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Range must be greater then 10</mat-error>\n </div>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('maxRequired')\">Range must me less then 50</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_3>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_3>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_3>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_3>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required with Min > 10 and Max < 50<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: RangeSelectionInputComponent, selector: "app-range-selection-input", inputs: ["min", "max", "showValue", "showDivisions", "divisions", "minRequired", "maxRequired", "displayFunc"] }] }); }
|
|
212
|
+
}
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeDemoComponent, decorators: [{
|
|
214
|
+
type: Component,
|
|
215
|
+
args: [{ selector: 'app-range-selection-input-demo', template: "<div style=\"display: flex;\">\n <h1>Slider FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n </div>\n </div>\n</div>\n\n<!-- <h3>No Data - Projection of Error</h3>\n\n<app-input-slider>\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-input-slider>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div> -->\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Range Selection - VALUE</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_1\"\n [max]=\"25\"\n [showValue]=\"showVal_1.checked\"\n [showDivisions]=\"showTicks_1.checked\"\n [divisions]=\"showTicks_1.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_1.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_1>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_1>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_1>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_1>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range 0 - 25<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n No label<br>\n No Validation Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_2\"\n [min]=\"0\"\n [max]=\"100\"\n [showValue]=\"showVal_2.checked\"\n [showDivisions]=\"showTicks_2.checked\"\n [divisions]=\"showTicks_2.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_2.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('valueRequired')\">Must have a Selection</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_2>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_2>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_2>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_2>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection with Min/Max Validation - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_3\"\n [min]=\"0\"\n [max]=\"100\"\n [minRequired]=\"10\"\n [maxRequired]=\"50\"\n [showValue]=\"showVal_3.checked\"\n [showDivisions]=\"showTicks_3.checked\"\n [divisions]=\"showTicks_3.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_3.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Range must be greater then 10</mat-error>\n </div>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('maxRequired')\">Range must me less then 50</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_3>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_3>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_3>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_3>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required with Min > 10 and Max < 50<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n" }]
|
|
216
|
+
}], ctorParameters: function () { return []; } });
|
|
217
|
+
|
|
218
|
+
class RangeSelectionInputModule {
|
|
219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
220
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, declarations: [RangeSelectionInputComponent,
|
|
221
|
+
RangeDemoComponent], imports: [CommonModule,
|
|
222
|
+
FormsModule,
|
|
223
|
+
ReactiveFormsModule,
|
|
224
|
+
MatButtonModule,
|
|
225
|
+
MatFormFieldModule,
|
|
226
|
+
MatSliderModule,
|
|
227
|
+
MatSlideToggleModule,
|
|
228
|
+
MatDividerModule,
|
|
229
|
+
MatButtonToggleModule], exports: [RangeSelectionInputComponent,
|
|
230
|
+
RangeDemoComponent] }); }
|
|
231
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, imports: [CommonModule,
|
|
232
|
+
FormsModule,
|
|
233
|
+
ReactiveFormsModule,
|
|
234
|
+
MatButtonModule,
|
|
235
|
+
MatFormFieldModule,
|
|
236
|
+
MatSliderModule,
|
|
237
|
+
MatSlideToggleModule,
|
|
238
|
+
MatDividerModule,
|
|
239
|
+
MatButtonToggleModule] }); }
|
|
240
|
+
}
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RangeSelectionInputModule, decorators: [{
|
|
242
|
+
type: NgModule,
|
|
243
|
+
args: [{
|
|
244
|
+
imports: [
|
|
245
|
+
CommonModule,
|
|
246
|
+
FormsModule,
|
|
247
|
+
ReactiveFormsModule,
|
|
248
|
+
MatButtonModule,
|
|
249
|
+
MatFormFieldModule,
|
|
250
|
+
MatSliderModule,
|
|
251
|
+
MatSlideToggleModule,
|
|
252
|
+
MatDividerModule,
|
|
253
|
+
MatButtonToggleModule,
|
|
254
|
+
],
|
|
255
|
+
declarations: [
|
|
256
|
+
RangeSelectionInputComponent,
|
|
257
|
+
RangeDemoComponent,
|
|
258
|
+
],
|
|
259
|
+
exports: [
|
|
260
|
+
RangeSelectionInputComponent,
|
|
261
|
+
RangeDemoComponent
|
|
262
|
+
]
|
|
263
|
+
}]
|
|
264
|
+
}] });
|
|
265
|
+
|
|
266
|
+
/*
|
|
267
|
+
* Public API Surface of range-selection-input
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Generated bundle index. Do not edit.
|
|
272
|
+
*/
|
|
273
|
+
|
|
274
|
+
export { RangeDemoComponent, RangeSelectionInputComponent, RangeSelectionInputModule };
|
|
275
|
+
//# sourceMappingURL=range-selection-input.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-selection-input.mjs","sources":["../../../projects/range-selection-input/src/lib/input-slider/range-selection-input.component.ts","../../../projects/range-selection-input/src/lib/input-slider/range-selection-input.component.html","../../../projects/range-selection-input/src/lib/range-demo/range-demo.component.ts","../../../projects/range-selection-input/src/lib/range-demo/range-demo.component.html","../../../projects/range-selection-input/src/lib/range-selection-input.module.ts","../../../projects/range-selection-input/src/public-api.ts","../../../projects/range-selection-input/src/range-selection-input.ts"],"sourcesContent":["import { Component, Input, OnInit, forwardRef, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, AbstractControl, ValidationErrors, Validators, FormBuilder } from '@angular/forms';\n\n@Component({\n selector: 'app-range-selection-input',\n templateUrl: './range-selection-input.component.html',\n styleUrls: ['./range-selection-input.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeSelectionInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangeSelectionInputComponent),\n multi: true\n }\n ]\n})\nexport class RangeSelectionInputComponent implements OnInit, ControlValueAccessor {\n\n fb = inject(FormBuilder)\n\n doubleSlider = false\n\n startValue = this.fb.control(0)\n endValue = this.fb.control(0)\n\n _min = 0\n @Input() set min(value: number) {\n this._min = (value) ? value : 0\n this.doubleSlider = value > -1 ? true : false\n }\n\n get min() {\n return this._min\n }\n\n _max = 0\n @Input() set max(value: number) {\n this._max = value ? value : 100\n }\n\n get max() {\n return this._max\n }\n\n @Input() showValue = false\n @Input() showDivisions = false\n @Input() divisions = 0\n\n @Input() minRequired = this.min\n @Input() maxRequired = this.max\n\n _displayFunc: any\n @Input() set displayFunc(value: (data: any) => any) {\n this._displayFunc = value\n }\n\n get displayFunc() {\n return (this._displayFunc) ? this._displayFunc : () => {}\n }\n\n isObject = (value: any) => typeof value === \"object\"\n\n disabled = false\n\n onChange: any = () => {}\n onTouch: any = () => {}\n\n sliderValue = { start: 0, end: 10 }\n\n constructor() { }\n\n ngOnInit() {\n\n }\n\n onSetStartValue(value: any) {\n\n if(!this.doubleSlider) {\n\n this.sliderValue.end = +value\n this.onChange(this.sliderValue.end)\n\n } else {\n\n this.sliderValue.start = +value\n this.onChange(this.sliderValue)\n\n }\n\n }\n\n onSetEndValue(value: any) {\n this.sliderValue.end = +value\n this.onChange(this.sliderValue)\n }\n\n writeValue(value: any|number) {\n\n if(value) {\n\n if(this.isObject(value) && this.doubleSlider) {\n this.sliderValue.start = value.start || 0\n this.sliderValue.end = value.end || 0\n } else {\n this.sliderValue.end = value\n }\n\n this.sliderValue.start = this.sliderValue.start < this.min ? this.min : this.sliderValue.start\n this.sliderValue.end = this.sliderValue.end < this.max ? this.sliderValue.end : this.max\n\n this.endValue.patchValue(this.sliderValue.end, { emitEvent: false })\n this.startValue.patchValue(this.sliderValue.start, { emitEvent: false })\n\n } else {\n\n this.sliderValue.start = 0\n this.sliderValue.end = 0\n\n this.startValue.patchValue(this.sliderValue.start, { emitEvent: false })\n this.endValue.patchValue(this.sliderValue.end, { emitEvent: false })\n\n }\n\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n\n const isRequired = control.hasValidator(Validators.required) ? true : false\n\n let errors = { 'minRequired': false, 'maxRequired': false, 'valueRequired': false }\n\n errors.valueRequired = this.sliderValue.start === 0 || this.sliderValue.end === 0 ? true : false\n\n errors.minRequired = this.sliderValue.start < this.minRequired ? true : false\n errors.maxRequired = this.sliderValue.end > this.maxRequired || this.sliderValue.end < this.minRequired ? true : false\n\n return Object.fromEntries(Object.entries(errors).filter(([key, value]) => value !== false))\n\n }\n\n registerOnChange(fn: any){\n this.onChange = fn\n }\n\n registerOnTouched(fn: any){\n this.onTouch = fn\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled\n }\n\n}\n","<div style=\"display: flex; gap: 2rem; flex-direction: column;\">\n\n <ng-container *ngIf=\"doubleSlider; else SINGLE\">\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"min\"\n [max]=\"max\"\n [showTickMarks]=\"showDivisions\"\n [discrete]=\"showValue\"\n [step]=\"divisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n [formControl]=\"startValue\"\n matSliderStartThumb\n (change)=\"onSetStartValue(startValue.value)\"\n />\n <input\n [formControl]=\"endValue\"\n matSliderEndThumb\n (change)=\"onSetEndValue(endValue.value)\"\n >\n </mat-slider>\n </ng-container>\n\n <ng-template #SINGLE>\n <mat-slider\n [disabled]=\"disabled\"\n [min]=\"0\"\n [max]=\"max\"\n [step]=\"divisions\"\n [discrete]=\"showValue\"\n [showTickMarks]=\"showDivisions\"\n [displayWith]=\"displayFunc\"\n >\n <input\n matSliderThumb\n [formControl]=\"endValue\"\n (change)=\"onSetStartValue(endValue.value)\"\n >\n </mat-slider>\n\n </ng-template>\n\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-range-selection-input-demo',\n templateUrl: './range-demo.component.html',\n styleUrls: ['./range-demo.component.css']\n})\nexport class RangeDemoComponent implements OnInit {\n\n fb = inject(FormBuilder)\n\n selectionControl_1 = this.fb.control<number|null>(null)\n selectionControl_2 = this.fb.control<{ start: number, end: number }|null>(null, Validators.required)\n selectionControl_3 = this.fb.control<{ start: number, end: number }|null>(null, Validators.required)\n\n changeDetection_1 = this.fb.control<any[]|null>(null)\n changeDetection_2 = this.fb.control<any[]|null>(null)\n changeDetection_3 = this.fb.control<any[]|null>(null)\n\n\n\n constructor() { }\n\n ngOnInit() {\n\n this.selectionControl_1.valueChanges.subscribe(data => {\n if(this.changeDetection_1.valid) console.log('CHANGE:',data)\n })\n\n this.selectionControl_2.valueChanges.subscribe(data => {\n if(this.changeDetection_2.valid) console.log('CHANGE:',data)\n })\n\n this.selectionControl_3.valueChanges.subscribe(data => {\n if(this.changeDetection_3.valid) console.log('CHANGE:',data)\n })\n\n }\n\n customLabel(value: number): string {\n return `${value}K`;\n }\n\n // DISABLE\n onDisabled_1(disable: boolean) {\n\n if(disable) {\n this.selectionControl_1.disable()\n } else {\n this.selectionControl_1.enable()\n }\n\n }\n\n onDisabled_2(disable: boolean) {\n\n if(disable) {\n this.selectionControl_2.disable()\n } else {\n this.selectionControl_2.enable()\n }\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(5)\n this.selectionControl_2.patchValue({ start: 25, end: 50 })\n this.selectionControl_3.patchValue({ start: 25, end: 50 })\n }\n\n nothingMethod(value: number) {\n return value.toString()\n }\n\n}\n\n\n\n","<div style=\"display: flex;\">\n <h1>Slider FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n </div>\n </div>\n</div>\n\n<!-- <h3>No Data - Projection of Error</h3>\n\n<app-input-slider>\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-input-slider>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div> -->\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Range Selection - VALUE</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_1\"\n [max]=\"25\"\n [showValue]=\"showVal_1.checked\"\n [showDivisions]=\"showTicks_1.checked\"\n [divisions]=\"showTicks_1.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_1.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_1>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_1>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_1>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_1>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range 0 - 25<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n No label<br>\n No Validation Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_2\"\n [min]=\"0\"\n [max]=\"100\"\n [showValue]=\"showVal_2.checked\"\n [showDivisions]=\"showTicks_2.checked\"\n [divisions]=\"showTicks_2.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_2.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('valueRequired')\">Must have a Selection</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_2>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_2>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_2>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_2>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n\n <h3 style=\"margin-bottom: 0;\">Start/End Range Selection with Min/Max Validation - OBJECT</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-range-selection-input\n [formControl]=\"selectionControl_3\"\n [min]=\"0\"\n [max]=\"100\"\n [minRequired]=\"10\"\n [maxRequired]=\"50\"\n [showValue]=\"showVal_3.checked\"\n [showDivisions]=\"showTicks_3.checked\"\n [divisions]=\"showTicks_3.checked ? 5 : 0\"\n [displayFunc]=\"(labelFormat_3.checked) ? customLabel : nothingMethod\"\n >\n </app-range-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Range must be greater then 10</mat-error>\n </div>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('maxRequired')\">Range must me less then 50</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n <mat-slide-toggle #showVal_3>Show Value</mat-slide-toggle>\n <mat-slide-toggle #showTicks_3>Show Divisions</mat-slide-toggle>\n <mat-slide-toggle #divisions_3>Divisions</mat-slide-toggle>\n <mat-slide-toggle #labelFormat_3>Label Format</mat-slide-toggle>\n </div>\n <div style=\"margin-top: 2rem;\">\n Range from 0 - 100<br />\n Step Increment is set to 5 only when Show Divisions = true<br>\n Label<br>\n Validation Required with Min > 10 and Max < 50<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { RangeDemoComponent } from './range-demo/range-demo.component';\nimport { RangeSelectionInputComponent } from './input-slider/range-selection-input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatDividerModule,\n MatButtonToggleModule,\n ],\n declarations: [\n RangeSelectionInputComponent,\n RangeDemoComponent,\n ],\n exports: [\n RangeSelectionInputComponent,\n RangeDemoComponent\n ]\n})\nexport class RangeSelectionInputModule { }\n","/*\n * Public API Surface of range-selection-input\n */\n\nexport * from './lib/range-demo/range-demo.component';\nexport * from './lib/input-slider/range-selection-input.component';\n\nexport * from './lib/range-selection-input.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i8.RangeSelectionInputComponent"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor, AbstractControl, ValidationErrors, FormBuilder } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class RangeSelectionInputComponent implements OnInit, ControlValueAccessor {
|
|
5
|
+
fb: FormBuilder;
|
|
6
|
+
doubleSlider: boolean;
|
|
7
|
+
startValue: import("@angular/forms").FormControl<number | null>;
|
|
8
|
+
endValue: import("@angular/forms").FormControl<number | null>;
|
|
9
|
+
_min: number;
|
|
10
|
+
set min(value: number);
|
|
11
|
+
get min(): number;
|
|
12
|
+
_max: number;
|
|
13
|
+
set max(value: number);
|
|
14
|
+
get max(): number;
|
|
15
|
+
showValue: boolean;
|
|
16
|
+
showDivisions: boolean;
|
|
17
|
+
divisions: number;
|
|
18
|
+
minRequired: number;
|
|
19
|
+
maxRequired: number;
|
|
20
|
+
_displayFunc: any;
|
|
21
|
+
set displayFunc(value: (data: any) => any);
|
|
22
|
+
get displayFunc(): (data: any) => any;
|
|
23
|
+
isObject: (value: any) => boolean;
|
|
24
|
+
disabled: boolean;
|
|
25
|
+
onChange: any;
|
|
26
|
+
onTouch: any;
|
|
27
|
+
sliderValue: {
|
|
28
|
+
start: number;
|
|
29
|
+
end: number;
|
|
30
|
+
};
|
|
31
|
+
constructor();
|
|
32
|
+
ngOnInit(): void;
|
|
33
|
+
onSetStartValue(value: any): void;
|
|
34
|
+
onSetEndValue(value: any): void;
|
|
35
|
+
writeValue(value: any | number): void;
|
|
36
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
37
|
+
registerOnChange(fn: any): void;
|
|
38
|
+
registerOnTouched(fn: any): void;
|
|
39
|
+
setDisabledState(isDisabled: boolean): void;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RangeSelectionInputComponent, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RangeSelectionInputComponent, "app-range-selection-input", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "showValue": { "alias": "showValue"; "required": false; }; "showDivisions": { "alias": "showDivisions"; "required": false; }; "divisions": { "alias": "divisions"; "required": false; }; "minRequired": { "alias": "minRequired"; "required": false; }; "maxRequired": { "alias": "maxRequired"; "required": false; }; "displayFunc": { "alias": "displayFunc"; "required": false; }; }, {}, never, never, false, never>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { FormBuilder } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class RangeDemoComponent implements OnInit {
|
|
5
|
+
fb: FormBuilder;
|
|
6
|
+
selectionControl_1: import("@angular/forms").FormControl<number | null>;
|
|
7
|
+
selectionControl_2: import("@angular/forms").FormControl<{
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
} | null>;
|
|
11
|
+
selectionControl_3: import("@angular/forms").FormControl<{
|
|
12
|
+
start: number;
|
|
13
|
+
end: number;
|
|
14
|
+
} | null>;
|
|
15
|
+
changeDetection_1: import("@angular/forms").FormControl<any[] | null>;
|
|
16
|
+
changeDetection_2: import("@angular/forms").FormControl<any[] | null>;
|
|
17
|
+
changeDetection_3: import("@angular/forms").FormControl<any[] | null>;
|
|
18
|
+
constructor();
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
customLabel(value: number): string;
|
|
21
|
+
onDisabled_1(disable: boolean): void;
|
|
22
|
+
onDisabled_2(disable: boolean): void;
|
|
23
|
+
onPerformPatch(): void;
|
|
24
|
+
nothingMethod(value: number): string;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RangeDemoComponent, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RangeDemoComponent, "app-range-selection-input-demo", never, {}, {}, never, never, false, never>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./input-slider/range-selection-input.component";
|
|
3
|
+
import * as i2 from "./range-demo/range-demo.component";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "@angular/forms";
|
|
6
|
+
import * as i5 from "@angular/material/button";
|
|
7
|
+
import * as i6 from "@angular/material/form-field";
|
|
8
|
+
import * as i7 from "@angular/material/slider";
|
|
9
|
+
import * as i8 from "@angular/material/slide-toggle";
|
|
10
|
+
import * as i9 from "@angular/material/divider";
|
|
11
|
+
import * as i10 from "@angular/material/button-toggle";
|
|
12
|
+
export declare class RangeSelectionInputModule {
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RangeSelectionInputModule, never>;
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<RangeSelectionInputModule, [typeof i1.RangeSelectionInputComponent, typeof i2.RangeDemoComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.MatButtonModule, typeof i6.MatFormFieldModule, typeof i7.MatSliderModule, typeof i8.MatSlideToggleModule, typeof i9.MatDividerModule, typeof i10.MatButtonToggleModule], [typeof i1.RangeSelectionInputComponent, typeof i2.RangeDemoComponent]>;
|
|
15
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<RangeSelectionInputModule>;
|
|
16
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "range-selection-input",
|
|
3
|
+
"version": "15.0.2",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^15.2.0",
|
|
6
|
+
"@angular/core": "^15.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/range-selection-input.mjs",
|
|
13
|
+
"typings": "index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./index.d.ts",
|
|
20
|
+
"esm2022": "./esm2022/range-selection-input.mjs",
|
|
21
|
+
"esm": "./esm2022/range-selection-input.mjs",
|
|
22
|
+
"default": "./fesm2022/range-selection-input.mjs"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
package/public-api.d.ts
ADDED
|
Binary file
|