cax-design-system 3.0.1 → 3.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 +1 -1
- package/fesm2022/cax-design-system-cascadeselect.mjs +2 -2
- package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
- package/fesm2022/cax-design-system-commentbox.mjs +2 -2
- package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
- package/fesm2022/cax-design-system-navigation.mjs +2 -2
- package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
- package/fesm2022/cax-design-system-slider.mjs +82 -2
- package/fesm2022/cax-design-system-slider.mjs.map +1 -1
- package/fesm2022/cax-design-system-table.mjs +2 -2
- package/fesm2022/cax-design-system-table.mjs.map +1 -1
- package/fesm2022/cax-design-system-tableconfiguration.mjs +1 -1
- package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/cax.min.scss +26 -4
- package/resources/cax.scss +25 -4
- package/resources/components/navigation/navigation.scss +2 -1
- package/resources/components/slider/slider.scss +41 -0
- package/resources/components/table/table.scss +3 -3
- package/slider/index.d.ts +10 -1
|
@@ -87,6 +87,11 @@ class Slider {
|
|
|
87
87
|
* @group Props
|
|
88
88
|
*/
|
|
89
89
|
autofocus;
|
|
90
|
+
/**
|
|
91
|
+
* Whether to show indicators at each step.
|
|
92
|
+
* @group Props
|
|
93
|
+
*/
|
|
94
|
+
showSteps = true;
|
|
90
95
|
/**
|
|
91
96
|
* Callback to invoke on value change.
|
|
92
97
|
* @param {SliderChangeEvent} event - Custom value change event.
|
|
@@ -524,6 +529,78 @@ class Slider {
|
|
|
524
529
|
return Math.floor(val);
|
|
525
530
|
}
|
|
526
531
|
}
|
|
532
|
+
get steps() {
|
|
533
|
+
if (!this.step || this.max === undefined || this.min === undefined) {
|
|
534
|
+
return [];
|
|
535
|
+
}
|
|
536
|
+
const stepList = [];
|
|
537
|
+
const totalRange = this.max - this.min;
|
|
538
|
+
if (totalRange <= 0 || this.step <= 0) {
|
|
539
|
+
return [];
|
|
540
|
+
}
|
|
541
|
+
const decimalsCount = this.getDecimalsCount(this.step);
|
|
542
|
+
for (let val = this.min; val <= this.max; val += this.step) {
|
|
543
|
+
let normalizedVal = val;
|
|
544
|
+
if (decimalsCount > 0) {
|
|
545
|
+
normalizedVal = +parseFloat(val.toString()).toFixed(decimalsCount);
|
|
546
|
+
}
|
|
547
|
+
else {
|
|
548
|
+
normalizedVal = Math.floor(val);
|
|
549
|
+
}
|
|
550
|
+
if (normalizedVal > this.max) {
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
553
|
+
const percentage = ((normalizedVal - this.min) * 100) / totalRange;
|
|
554
|
+
stepList.push({
|
|
555
|
+
value: normalizedVal,
|
|
556
|
+
percentage: percentage,
|
|
557
|
+
style: this.orientation === 'horizontal' ? { left: `${percentage}%` } : { bottom: `${percentage}%` }
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
const lastStep = stepList[stepList.length - 1];
|
|
561
|
+
if (!lastStep || lastStep.value < this.max) {
|
|
562
|
+
stepList.push({
|
|
563
|
+
value: this.max,
|
|
564
|
+
percentage: 100,
|
|
565
|
+
style: this.orientation === 'horizontal' ? { left: `100%` } : { bottom: `100%` }
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
return stepList;
|
|
569
|
+
}
|
|
570
|
+
isStepActive(stepValue) {
|
|
571
|
+
if (this.range) {
|
|
572
|
+
if (this.values && this.values.length >= 2) {
|
|
573
|
+
const minVal = Math.min(this.values[0], this.values[1]);
|
|
574
|
+
const maxVal = Math.max(this.values[0], this.values[1]);
|
|
575
|
+
return stepValue >= minVal && stepValue <= maxVal;
|
|
576
|
+
}
|
|
577
|
+
return false;
|
|
578
|
+
}
|
|
579
|
+
return this.value !== null && this.value !== undefined && stepValue <= this.value;
|
|
580
|
+
}
|
|
581
|
+
onStepClick(event, stepValue) {
|
|
582
|
+
if (this.disabled) {
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
event.stopPropagation();
|
|
586
|
+
event.preventDefault();
|
|
587
|
+
if (this.range) {
|
|
588
|
+
if (this.values && this.values.length >= 2) {
|
|
589
|
+
const distStart = Math.abs(this.values[0] - stepValue);
|
|
590
|
+
const distEnd = Math.abs(this.values[1] - stepValue);
|
|
591
|
+
this.handleIndex = distStart < distEnd ? 0 : 1;
|
|
592
|
+
}
|
|
593
|
+
else {
|
|
594
|
+
this.handleIndex = 0;
|
|
595
|
+
}
|
|
596
|
+
this.updateValue(stepValue, event);
|
|
597
|
+
this.onSlideEnd.emit({ originalEvent: event, values: this.values });
|
|
598
|
+
}
|
|
599
|
+
else {
|
|
600
|
+
this.updateValue(stepValue, event);
|
|
601
|
+
this.onSlideEnd.emit({ originalEvent: event, value: this.value });
|
|
602
|
+
}
|
|
603
|
+
}
|
|
527
604
|
ngOnDestroy() {
|
|
528
605
|
this.unbindDragListeners();
|
|
529
606
|
}
|
|
@@ -534,13 +611,13 @@ class Slider {
|
|
|
534
611
|
return Math.max(this.values[1], this.values[0]);
|
|
535
612
|
}
|
|
536
613
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: Slider, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
537
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.25", type: Slider, isStandalone: false, selector: "cax-slider", inputs: { animate: ["animate", "animate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], min: ["min", "min", numberAttribute], max: ["max", "max", numberAttribute], orientation: "orientation", step: ["step", "step", numberAttribute], range: ["range", "range", booleanAttribute], style: "style", styleClass: "styleClass", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", tabindex: ["tabindex", "tabindex", numberAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute] }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "cax-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: "<div\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'cax-slider cax-component': true, 'cax-disabled': disabled, 'cax-slider-horizontal': orientation == 'horizontal', 'cax-slider-vertical': orientation == 'vertical', 'cax-slider-animate': animate }\"\n (click)=\"onBarClick($event)\"\n [attr.data-pc-name]=\"'slider'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <span\n *ngIf=\"range && orientation == 'horizontal'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span\n *ngIf=\"range && orientation == 'vertical'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span *ngIf=\"!range && orientation == 'vertical'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n <span\n *ngIf=\"!range\"\n #sliderHandle\n class=\"cax-slider-handle\"\n [style.transition]=\"dragging ? 'none' : null\"\n [ngStyle]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\n (touchstart)=\"onDragStart($event)\"\n (touchmove)=\"onDrag($event)\"\n (touchend)=\"onDragEnd($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'handle'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleStart\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 0 }\"\n (keydown)=\"onKeyDown($event, 0)\"\n (mousedown)=\"onMouseDown($event, 0)\"\n (touchstart)=\"onDragStart($event, 0)\"\n (touchmove)=\"onDrag($event, 0)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[0] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'startHandler'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleEnd\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 1 }\"\n (keydown)=\"onKeyDown($event, 1)\"\n (mousedown)=\"onMouseDown($event, 1)\"\n (touchstart)=\"onDragStart($event, 1)\"\n (touchmove)=\"onDrag($event, 1)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[1] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'endHandler'\"\n ></span>\n</div>\n", styles: ["@layer cax{.cax-slider{position:relative}.cax-slider .cax-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.cax-slider-range{position:absolute;display:block}.cax-slider-horizontal .cax-slider-range{top:0;left:0;height:100%}.cax-slider-horizontal .cax-slider-handle{top:50%}.cax-slider-vertical{height:100px}.cax-slider-vertical .cax-slider-handle{left:50%}.cax-slider-vertical .cax-slider-range{bottom:0;left:0;width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
614
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.25", type: Slider, isStandalone: false, selector: "cax-slider", inputs: { animate: ["animate", "animate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], min: ["min", "min", numberAttribute], max: ["max", "max", numberAttribute], orientation: "orientation", step: ["step", "step", numberAttribute], range: ["range", "range", booleanAttribute], style: "style", styleClass: "styleClass", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", tabindex: ["tabindex", "tabindex", numberAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], showSteps: ["showSteps", "showSteps", booleanAttribute] }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "cax-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: "<div\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'cax-slider cax-component': true, 'cax-disabled': disabled, 'cax-slider-horizontal': orientation == 'horizontal', 'cax-slider-vertical': orientation == 'vertical', 'cax-slider-animate': animate }\"\n (click)=\"onBarClick($event)\"\n [attr.data-pc-name]=\"'slider'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <span\n *ngIf=\"range && orientation == 'horizontal'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span\n *ngIf=\"range && orientation == 'vertical'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span *ngIf=\"!range && orientation == 'vertical'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n <div *ngIf=\"showSteps && step\" class=\"cax-slider-steps\">\n <span *ngFor=\"let s of steps\" class=\"cax-slider-step-indicator\" [ngStyle]=\"s.style\" [ngClass]=\"{ 'cax-slider-step-active': isStepActive(s.value) }\" (click)=\"onStepClick($event, s.value)\"></span>\n </div>\n <span\n *ngIf=\"!range\"\n #sliderHandle\n class=\"cax-slider-handle\"\n [style.transition]=\"dragging ? 'none' : null\"\n [ngStyle]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\n (touchstart)=\"onDragStart($event)\"\n (touchmove)=\"onDrag($event)\"\n (touchend)=\"onDragEnd($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'handle'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleStart\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 0 }\"\n (keydown)=\"onKeyDown($event, 0)\"\n (mousedown)=\"onMouseDown($event, 0)\"\n (touchstart)=\"onDragStart($event, 0)\"\n (touchmove)=\"onDrag($event, 0)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[0] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'startHandler'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleEnd\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 1 }\"\n (keydown)=\"onKeyDown($event, 1)\"\n (mousedown)=\"onMouseDown($event, 1)\"\n (touchstart)=\"onDragStart($event, 1)\"\n (touchmove)=\"onDrag($event, 1)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[1] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'endHandler'\"\n ></span>\n</div>\n", styles: ["@layer cax{.cax-slider{position:relative}.cax-slider .cax-slider-handle{position:absolute;z-index:3;cursor:grab;touch-action:none;display:block}.cax-slider-range{position:absolute;z-index:2;display:block}.cax-slider-horizontal .cax-slider-range{top:0;left:0;height:100%}.cax-slider-horizontal .cax-slider-handle{top:50%}.cax-slider-vertical{height:100px}.cax-slider-vertical .cax-slider-handle{left:50%}.cax-slider-vertical .cax-slider-range{bottom:0;left:0;width:100%}.cax-slider-steps{position:absolute;top:50%;left:0;width:100%;height:0;pointer-events:none}.cax-slider-step-indicator{position:absolute;top:50%;transform:translate(-50%,-50%);width:4px;height:16px;border-radius:4px;cursor:pointer;pointer-events:auto;z-index:1}.cax-slider-vertical .cax-slider-steps{top:0;left:50%;height:100%;width:0}.cax-slider-vertical .cax-slider-step-indicator{left:50%;top:auto;transform:translate(-50%,50%);width:24px;height:8px}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
538
615
|
}
|
|
539
616
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: Slider, decorators: [{
|
|
540
617
|
type: Component,
|
|
541
618
|
args: [{ selector: 'cax-slider', providers: [SLIDER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, host: {
|
|
542
619
|
class: 'cax-element'
|
|
543
|
-
}, template: "<div\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'cax-slider cax-component': true, 'cax-disabled': disabled, 'cax-slider-horizontal': orientation == 'horizontal', 'cax-slider-vertical': orientation == 'vertical', 'cax-slider-animate': animate }\"\n (click)=\"onBarClick($event)\"\n [attr.data-pc-name]=\"'slider'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <span\n *ngIf=\"range && orientation == 'horizontal'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span\n *ngIf=\"range && orientation == 'vertical'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span *ngIf=\"!range && orientation == 'vertical'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n <span\n *ngIf=\"!range\"\n #sliderHandle\n class=\"cax-slider-handle\"\n [style.transition]=\"dragging ? 'none' : null\"\n [ngStyle]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\n (touchstart)=\"onDragStart($event)\"\n (touchmove)=\"onDrag($event)\"\n (touchend)=\"onDragEnd($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'handle'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleStart\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 0 }\"\n (keydown)=\"onKeyDown($event, 0)\"\n (mousedown)=\"onMouseDown($event, 0)\"\n (touchstart)=\"onDragStart($event, 0)\"\n (touchmove)=\"onDrag($event, 0)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[0] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'startHandler'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleEnd\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 1 }\"\n (keydown)=\"onKeyDown($event, 1)\"\n (mousedown)=\"onMouseDown($event, 1)\"\n (touchstart)=\"onDragStart($event, 1)\"\n (touchmove)=\"onDrag($event, 1)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[1] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'endHandler'\"\n ></span>\n</div>\n", styles: ["@layer cax{.cax-slider{position:relative}.cax-slider .cax-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.cax-slider-range{position:absolute;display:block}.cax-slider-horizontal .cax-slider-range{top:0;left:0;height:100%}.cax-slider-horizontal .cax-slider-handle{top:50%}.cax-slider-vertical{height:100px}.cax-slider-vertical .cax-slider-handle{left:50%}.cax-slider-vertical .cax-slider-range{bottom:0;left:0;width:100%}}\n"] }]
|
|
620
|
+
}, template: "<div\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'cax-slider cax-component': true, 'cax-disabled': disabled, 'cax-slider-horizontal': orientation == 'horizontal', 'cax-slider-vertical': orientation == 'vertical', 'cax-slider-animate': animate }\"\n (click)=\"onBarClick($event)\"\n [attr.data-pc-name]=\"'slider'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <span\n *ngIf=\"range && orientation == 'horizontal'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span\n *ngIf=\"range && orientation == 'vertical'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span *ngIf=\"!range && orientation == 'vertical'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n <div *ngIf=\"showSteps && step\" class=\"cax-slider-steps\">\n <span *ngFor=\"let s of steps\" class=\"cax-slider-step-indicator\" [ngStyle]=\"s.style\" [ngClass]=\"{ 'cax-slider-step-active': isStepActive(s.value) }\" (click)=\"onStepClick($event, s.value)\"></span>\n </div>\n <span\n *ngIf=\"!range\"\n #sliderHandle\n class=\"cax-slider-handle\"\n [style.transition]=\"dragging ? 'none' : null\"\n [ngStyle]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\n (touchstart)=\"onDragStart($event)\"\n (touchmove)=\"onDrag($event)\"\n (touchend)=\"onDragEnd($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'handle'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleStart\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 0 }\"\n (keydown)=\"onKeyDown($event, 0)\"\n (mousedown)=\"onMouseDown($event, 0)\"\n (touchstart)=\"onDragStart($event, 0)\"\n (touchmove)=\"onDrag($event, 0)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[0] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'startHandler'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleEnd\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 1 }\"\n (keydown)=\"onKeyDown($event, 1)\"\n (mousedown)=\"onMouseDown($event, 1)\"\n (touchstart)=\"onDragStart($event, 1)\"\n (touchmove)=\"onDrag($event, 1)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[1] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'endHandler'\"\n ></span>\n</div>\n", styles: ["@layer cax{.cax-slider{position:relative}.cax-slider .cax-slider-handle{position:absolute;z-index:3;cursor:grab;touch-action:none;display:block}.cax-slider-range{position:absolute;z-index:2;display:block}.cax-slider-horizontal .cax-slider-range{top:0;left:0;height:100%}.cax-slider-horizontal .cax-slider-handle{top:50%}.cax-slider-vertical{height:100px}.cax-slider-vertical .cax-slider-handle{left:50%}.cax-slider-vertical .cax-slider-range{bottom:0;left:0;width:100%}.cax-slider-steps{position:absolute;top:50%;left:0;width:100%;height:0;pointer-events:none}.cax-slider-step-indicator{position:absolute;top:50%;transform:translate(-50%,-50%);width:4px;height:16px;border-radius:4px;cursor:pointer;pointer-events:auto;z-index:1}.cax-slider-vertical .cax-slider-steps{top:0;left:50%;height:100%;width:0}.cax-slider-vertical .cax-slider-step-indicator{left:50%;top:auto;transform:translate(-50%,50%);width:24px;height:8px}}\n"] }]
|
|
544
621
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
545
622
|
type: Inject,
|
|
546
623
|
args: [DOCUMENT]
|
|
@@ -581,6 +658,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
581
658
|
}], autofocus: [{
|
|
582
659
|
type: Input,
|
|
583
660
|
args: [{ transform: booleanAttribute }]
|
|
661
|
+
}], showSteps: [{
|
|
662
|
+
type: Input,
|
|
663
|
+
args: [{ transform: booleanAttribute }]
|
|
584
664
|
}], onChange: [{
|
|
585
665
|
type: Output
|
|
586
666
|
}], onSlideEnd: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cax-design-system-slider.mjs","sources":["../../src/app/components/slider/slider.ts","../../src/app/components/slider/slider.html","../../src/app/components/slider/slider.module.ts","../../src/app/components/slider/cax-design-system-slider.ts"],"sourcesContent":["import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgModule,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n numberAttribute\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomHandler } from 'cax-design-system/dom';\nimport { Nullable, VoidListener } from 'cax-design-system/ts-helpers';\nimport { AutoFocusModule } from 'cax-design-system/autofocus';\nimport { SliderChangeEvent, SliderSlideEndEvent } from './slider.interface';\n\nexport const SLIDER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Slider),\n multi: true\n};\n/**\n * Slider is a component to provide input with a drag handle.\n * @group Components\n */\n@Component({\n selector: 'cax-slider',\n templateUrl: './slider.html',\n styleUrls: ['./slider.scss'],\n providers: [SLIDER_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n class: 'cax-element'\n }\n})\nexport class Slider implements OnDestroy, ControlValueAccessor {\n /**\n * When enabled, displays an animation on click of the slider bar.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) animate: boolean | undefined;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n /**\n * Mininum boundary value.\n * @group Props\n */\n @Input({ transform: numberAttribute }) min: number = 0;\n /**\n * Maximum boundary value.\n * @group Props\n */\n @Input({ transform: numberAttribute }) max: number = 100;\n /**\n * Orientation of the slider.\n * @group Props\n */\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n /**\n * Step factor to increment/decrement the value.\n * @group Props\n */\n @Input({ transform: numberAttribute }) step: number | undefined;\n /**\n * When specified, allows two boundary values to be picked.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) range: boolean | undefined;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: string | undefined;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n @Input() ariaLabel: string | undefined;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n @Input() ariaLabelledBy: string | undefined;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n @Input({ transform: numberAttribute }) tabindex: number = 0;\n /**\n * When present, it specifies that the component should automatically get focus on load.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n /**\n * Callback to invoke on value change.\n * @param {SliderChangeEvent} event - Custom value change event.\n * @group Emits\n */\n @Output() onChange: EventEmitter<SliderChangeEvent> = new EventEmitter<SliderChangeEvent>();\n /**\n * Callback to invoke when slide ended.\n * @param {SliderSlideEndEvent} event - Custom slide end event.\n * @group Emits\n */\n @Output() onSlideEnd: EventEmitter<SliderSlideEndEvent> = new EventEmitter<SliderSlideEndEvent>();\n\n @ViewChild('sliderHandle') sliderHandle: Nullable<ElementRef>;\n\n @ViewChild('sliderHandleStart') sliderHandleStart: Nullable<ElementRef>;\n\n @ViewChild('sliderHandleEnd') sliderHandleEnd: Nullable<ElementRef>;\n\n public value: Nullable<number>;\n\n public values: Nullable<number[]>;\n\n public handleValue: Nullable<number>;\n\n public handleValues: number[] = [];\n\n diff: Nullable<number>;\n\n offset: Nullable<number>;\n\n bottom: Nullable<number>;\n\n public onModelChange: Function = () => {};\n\n public onModelTouched: Function = () => {};\n\n public dragging: Nullable<boolean>;\n\n public dragListener: VoidListener;\n\n public mouseupListener: VoidListener;\n\n public initX: Nullable<number>;\n\n public initY: Nullable<number>;\n\n public barWidth: Nullable<number>;\n\n public barHeight: Nullable<number>;\n\n public sliderHandleClick: Nullable<boolean>;\n\n public handleIndex: number = 0;\n\n public startHandleValue: any;\n\n public startx: Nullable<number>;\n\n public starty: Nullable<number>;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any,\n public el: ElementRef,\n public renderer: Renderer2,\n private ngZone: NgZone,\n public cd: ChangeDetectorRef\n ) {}\n\n onMouseDown(event: Event, index?: number) {\n if (this.disabled) {\n return;\n }\n\n this.dragging = true;\n this.updateDomData();\n this.sliderHandleClick = true;\n if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n this.handleIndex = 0;\n } else {\n (this.handleIndex as any) = index;\n }\n\n this.bindDragListeners();\n (event.target as HTMLInputElement).focus();\n event.preventDefault();\n\n if (this.animate) {\n DomHandler.removeClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n }\n\n onDragStart(event: TouchEvent, index?: number) {\n if (this.disabled) {\n return;\n }\n\n var touchobj = event.changedTouches[0];\n this.startHandleValue = this.range ? this.handleValues[index as number] : this.handleValue;\n this.dragging = true;\n if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n this.handleIndex = 0;\n } else {\n this.handleIndex = index as number;\n }\n\n if (this.orientation === 'horizontal') {\n this.startx = parseInt((touchobj as any).clientX, 10);\n this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n } else {\n this.starty = parseInt((touchobj as any).clientY, 10);\n this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n }\n\n if (this.animate) {\n DomHandler.removeClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n\n event.preventDefault();\n }\n\n onDrag(event: TouchEvent) {\n if (this.disabled) {\n return;\n }\n\n var touchobj = event.changedTouches[0],\n handleValue = 0;\n\n if (this.orientation === 'horizontal') {\n handleValue = Math.floor(((parseInt((touchobj as any).clientX, 10) - (this.startx as number)) * 100) / (this.barWidth as number)) + this.startHandleValue;\n } else {\n handleValue = Math.floor((((this.starty as number) - parseInt((touchobj as any).clientY, 10)) * 100) / (this.barHeight as number)) + this.startHandleValue;\n }\n\n this.setValueFromHandle(event, handleValue);\n\n event.preventDefault();\n }\n\n onDragEnd(event: TouchEvent) {\n if (this.disabled) {\n return;\n }\n\n this.dragging = false;\n\n if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n\n if (this.animate) {\n DomHandler.addClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n }\n\n onBarClick(event: Event) {\n if (this.disabled) {\n return;\n }\n\n if (!this.sliderHandleClick) {\n this.updateDomData();\n this.handleChange(event);\n\n if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n }\n\n this.sliderHandleClick = false;\n }\n\n onKeyDown(event, index) {\n this.handleIndex = index;\n\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n this.decrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n this.incrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'PageDown':\n this.decrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'PageUp':\n this.incrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'Home':\n this.updateValue(this.min, event);\n event.preventDefault();\n break;\n\n case 'End':\n this.updateValue(this.max, event);\n event.preventDefault();\n break;\n\n case 'Tab':\n this.onDragEnd(event);\n break;\n\n default:\n break;\n }\n }\n\n decrementValue(event, index, pageKey = false) {\n let newValue;\n\n if (this.range) {\n if (this.step) newValue = this.values[index] - this.step;\n else newValue = this.values[index] - 1;\n } else {\n if (this.step) newValue = this.value - this.step;\n else if (!this.step && pageKey) newValue = this.value - 10;\n else newValue = this.value - 1;\n }\n\n this.updateValue(newValue, event);\n event.preventDefault();\n }\n\n incrementValue(event, index, pageKey = false) {\n let newValue;\n\n if (this.range) {\n if (this.step) newValue = this.values[index] + this.step;\n else newValue = this.values[index] + 1;\n } else {\n if (this.step) newValue = this.value + this.step;\n else if (!this.step && pageKey) newValue = this.value + 10;\n else newValue = this.value + 1;\n }\n\n this.updateValue(newValue, event);\n event.preventDefault();\n }\n\n handleChange(event: Event) {\n let handleValue = this.calculateHandleValue(event);\n this.setValueFromHandle(event, handleValue);\n }\n\n bindDragListeners() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngZone.runOutsideAngular(() => {\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : this.document;\n\n if (!this.dragListener) {\n this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n if (this.dragging) {\n this.ngZone.run(() => {\n this.handleChange(event);\n });\n }\n });\n }\n\n if (!this.mouseupListener) {\n this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n if (this.dragging) {\n this.dragging = false;\n this.ngZone.run(() => {\n if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n\n if (this.animate) {\n DomHandler.addClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n });\n }\n });\n }\n });\n }\n }\n\n unbindDragListeners() {\n if (this.dragListener) {\n this.dragListener();\n this.dragListener = null;\n }\n\n if (this.mouseupListener) {\n this.mouseupListener();\n this.mouseupListener = null;\n }\n }\n\n setValueFromHandle(event: Event, handleValue: any) {\n let newValue = this.getValueFromHandle(handleValue);\n\n if (this.range) {\n if (this.step) {\n this.handleStepChange(newValue, (this.values as any)[this.handleIndex]);\n } else {\n this.handleValues[this.handleIndex] = handleValue;\n this.updateValue(newValue, event);\n }\n } else {\n if (this.step) {\n this.handleStepChange(newValue, this.value as any);\n } else {\n this.handleValue = handleValue;\n this.updateValue(newValue, event);\n }\n }\n\n this.cd.markForCheck();\n }\n\n handleStepChange(newValue: number, oldValue: number) {\n let diff = newValue - oldValue;\n let val = oldValue;\n let _step = this.step as number;\n\n if (diff < 0) {\n val = oldValue + Math.ceil(newValue / _step - oldValue / _step) * _step;\n } else if (diff > 0) {\n val = oldValue + Math.floor(newValue / _step - oldValue / _step) * _step;\n }\n\n this.updateValue(val);\n this.updateHandleValue();\n }\n\n writeValue(value: any): void {\n if (this.range) this.values = value || [0, 0];\n else this.value = value || 0;\n\n this.updateHandleValue();\n this.updateDiffAndOffset();\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n get rangeStartLeft() {\n if (!this.isVertical()) return this.handleValues[0] > 100 ? 100 + '%' : this.handleValues[0] + '%';\n return null;\n }\n\n get rangeStartBottom() {\n return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n }\n\n get rangeEndLeft() {\n return this.isVertical() ? null : this.handleValues[1] + '%';\n }\n\n get rangeEndBottom() {\n return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n }\n\n isVertical(): boolean {\n return this.orientation === 'vertical';\n }\n\n updateDomData(): void {\n let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n this.initX = rect.left + DomHandler.getWindowScrollLeft();\n this.initY = rect.top + DomHandler.getWindowScrollTop();\n this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n }\n\n calculateHandleValue(event: Event): number {\n if (this.orientation === 'horizontal') return (((event as MouseEvent).pageX - (this.initX as number)) * 100) / (this.barWidth as number);\n else return (((this.initY as number) + (this.barHeight as number) - (event as MouseEvent).pageY) * 100) / (this.barHeight as number);\n }\n\n updateHandleValue(): void {\n if (this.range) {\n this.handleValues[0] = (((this.values as number[])[0] < this.min ? 0 : (this.values as number[])[0] - this.min) * 100) / (this.max - this.min);\n this.handleValues[1] = (((this.values as number[])[1] > this.max ? 100 : (this.values as number[])[1] - this.min) * 100) / (this.max - this.min);\n } else {\n if ((this.value as number) < this.min) this.handleValue = 0;\n else if ((this.value as number) > this.max) this.handleValue = 100;\n else this.handleValue = (((this.value as number) - this.min) * 100) / (this.max - this.min);\n }\n\n if (this.step) {\n this.updateDiffAndOffset();\n }\n }\n\n updateDiffAndOffset(): void {\n this.diff = this.getDiff();\n this.offset = this.getOffset();\n }\n\n getDiff(): number {\n return Math.abs(this.handleValues[0] - this.handleValues[1]);\n }\n\n getOffset(): number {\n return Math.min(this.handleValues[0], this.handleValues[1]);\n }\n\n updateValue(val: number, event?: Event): void {\n if (this.range) {\n let value = val;\n\n if (this.handleIndex == 0) {\n if (value < this.min) {\n value = this.min;\n this.handleValues[0] = 0;\n } else if (value > (this.values as number[])[1]) {\n if (value > this.max) {\n value = this.max;\n this.handleValues[0] = 100;\n }\n }\n this.sliderHandleStart?.nativeElement.focus();\n } else {\n if (value > this.max) {\n value = this.max;\n this.handleValues[1] = 100;\n this.offset = this.handleValues[1];\n } else if (value < this.min) {\n value = this.min;\n this.handleValues[1] = 0;\n } else if (value < (this.values as number[])[0]) {\n this.offset = this.handleValues[1];\n }\n this.sliderHandleEnd?.nativeElement.focus();\n }\n\n if (this.step) {\n this.updateHandleValue();\n } else {\n this.updateDiffAndOffset();\n }\n\n (this.values as number[])[this.handleIndex] = this.getNormalizedValue(value);\n let newValues = [this.minVal, this.maxVal];\n this.onModelChange(newValues);\n this.onChange.emit({ event: event as Event, values: this.values as number[] });\n } else {\n if (val < this.min) {\n val = this.min;\n this.handleValue = 0;\n } else if (val > this.max) {\n val = this.max;\n this.handleValue = 100;\n }\n\n this.value = this.getNormalizedValue(val);\n\n this.onModelChange(this.value);\n this.onChange.emit({ event: event as Event, value: this.value });\n this.sliderHandle?.nativeElement.focus();\n }\n this.updateHandleValue();\n }\n\n getValueFromHandle(handleValue: number): number {\n return (this.max - this.min) * (handleValue / 100) + this.min;\n }\n\n getDecimalsCount(value: number): number {\n if (value && Math.floor(value) !== value) return value.toString().split('.')[1].length || 0;\n return 0;\n }\n\n getNormalizedValue(val: number): number {\n let decimalsCount = this.getDecimalsCount(this.step as number);\n if (decimalsCount > 0) {\n return +parseFloat(val.toString()).toFixed(decimalsCount);\n } else {\n return Math.floor(val);\n }\n }\n\n ngOnDestroy() {\n this.unbindDragListeners();\n }\n\n get minVal() {\n return Math.min((this.values as number[])[1], (this.values as number[])[0]);\n }\n get maxVal() {\n return Math.max((this.values as number[])[1], (this.values as number[])[0]);\n }\n}\n","<div\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'cax-slider cax-component': true, 'cax-disabled': disabled, 'cax-slider-horizontal': orientation == 'horizontal', 'cax-slider-vertical': orientation == 'vertical', 'cax-slider-animate': animate }\"\n (click)=\"onBarClick($event)\"\n [attr.data-pc-name]=\"'slider'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <span\n *ngIf=\"range && orientation == 'horizontal'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span\n *ngIf=\"range && orientation == 'vertical'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span *ngIf=\"!range && orientation == 'vertical'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n <span\n *ngIf=\"!range\"\n #sliderHandle\n class=\"cax-slider-handle\"\n [style.transition]=\"dragging ? 'none' : null\"\n [ngStyle]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\n (touchstart)=\"onDragStart($event)\"\n (touchmove)=\"onDrag($event)\"\n (touchend)=\"onDragEnd($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'handle'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleStart\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 0 }\"\n (keydown)=\"onKeyDown($event, 0)\"\n (mousedown)=\"onMouseDown($event, 0)\"\n (touchstart)=\"onDragStart($event, 0)\"\n (touchmove)=\"onDrag($event, 0)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[0] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'startHandler'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleEnd\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 1 }\"\n (keydown)=\"onKeyDown($event, 1)\"\n (mousedown)=\"onMouseDown($event, 1)\"\n (touchstart)=\"onDragStart($event, 1)\"\n (touchmove)=\"onDrag($event, 1)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[1] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'endHandler'\"\n ></span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AutoFocusModule } from 'cax-design-system/autofocus';\nimport { Slider } from './slider';\n\n@NgModule({\n imports: [CommonModule, AutoFocusModule],\n exports: [Slider],\n declarations: [Slider]\n})\nexport class SliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cax-design-system-slider.mjs","sources":["../../src/app/components/slider/slider.ts","../../src/app/components/slider/slider.html","../../src/app/components/slider/slider.module.ts","../../src/app/components/slider/cax-design-system-slider.ts"],"sourcesContent":["import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgModule,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n numberAttribute\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomHandler } from 'cax-design-system/dom';\nimport { Nullable, VoidListener } from 'cax-design-system/ts-helpers';\nimport { AutoFocusModule } from 'cax-design-system/autofocus';\nimport { SliderChangeEvent, SliderSlideEndEvent } from './slider.interface';\n\nexport const SLIDER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Slider),\n multi: true\n};\n/**\n * Slider is a component to provide input with a drag handle.\n * @group Components\n */\n@Component({\n selector: 'cax-slider',\n templateUrl: './slider.html',\n styleUrls: ['./slider.scss'],\n providers: [SLIDER_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n class: 'cax-element'\n }\n})\nexport class Slider implements OnDestroy, ControlValueAccessor {\n /**\n * When enabled, displays an animation on click of the slider bar.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) animate: boolean | undefined;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n /**\n * Mininum boundary value.\n * @group Props\n */\n @Input({ transform: numberAttribute }) min: number = 0;\n /**\n * Maximum boundary value.\n * @group Props\n */\n @Input({ transform: numberAttribute }) max: number = 100;\n /**\n * Orientation of the slider.\n * @group Props\n */\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n /**\n * Step factor to increment/decrement the value.\n * @group Props\n */\n @Input({ transform: numberAttribute }) step: number | undefined;\n /**\n * When specified, allows two boundary values to be picked.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) range: boolean | undefined;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: string | undefined;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n @Input() ariaLabel: string | undefined;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n @Input() ariaLabelledBy: string | undefined;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n @Input({ transform: numberAttribute }) tabindex: number = 0;\n /**\n * When present, it specifies that the component should automatically get focus on load.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n /**\n * Whether to show indicators at each step.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showSteps: boolean = true;\n /**\n * Callback to invoke on value change.\n * @param {SliderChangeEvent} event - Custom value change event.\n * @group Emits\n */\n @Output() onChange: EventEmitter<SliderChangeEvent> = new EventEmitter<SliderChangeEvent>();\n /**\n * Callback to invoke when slide ended.\n * @param {SliderSlideEndEvent} event - Custom slide end event.\n * @group Emits\n */\n @Output() onSlideEnd: EventEmitter<SliderSlideEndEvent> = new EventEmitter<SliderSlideEndEvent>();\n\n @ViewChild('sliderHandle') sliderHandle: Nullable<ElementRef>;\n\n @ViewChild('sliderHandleStart') sliderHandleStart: Nullable<ElementRef>;\n\n @ViewChild('sliderHandleEnd') sliderHandleEnd: Nullable<ElementRef>;\n\n public value: Nullable<number>;\n\n public values: Nullable<number[]>;\n\n public handleValue: Nullable<number>;\n\n public handleValues: number[] = [];\n\n diff: Nullable<number>;\n\n offset: Nullable<number>;\n\n bottom: Nullable<number>;\n\n public onModelChange: Function = () => {};\n\n public onModelTouched: Function = () => {};\n\n public dragging: Nullable<boolean>;\n\n public dragListener: VoidListener;\n\n public mouseupListener: VoidListener;\n\n public initX: Nullable<number>;\n\n public initY: Nullable<number>;\n\n public barWidth: Nullable<number>;\n\n public barHeight: Nullable<number>;\n\n public sliderHandleClick: Nullable<boolean>;\n\n public handleIndex: number = 0;\n\n public startHandleValue: any;\n\n public startx: Nullable<number>;\n\n public starty: Nullable<number>;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any,\n public el: ElementRef,\n public renderer: Renderer2,\n private ngZone: NgZone,\n public cd: ChangeDetectorRef\n ) {}\n\n onMouseDown(event: Event, index?: number) {\n if (this.disabled) {\n return;\n }\n\n this.dragging = true;\n this.updateDomData();\n this.sliderHandleClick = true;\n if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n this.handleIndex = 0;\n } else {\n (this.handleIndex as any) = index;\n }\n\n this.bindDragListeners();\n (event.target as HTMLInputElement).focus();\n event.preventDefault();\n\n if (this.animate) {\n DomHandler.removeClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n }\n\n onDragStart(event: TouchEvent, index?: number) {\n if (this.disabled) {\n return;\n }\n\n var touchobj = event.changedTouches[0];\n this.startHandleValue = this.range ? this.handleValues[index as number] : this.handleValue;\n this.dragging = true;\n if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n this.handleIndex = 0;\n } else {\n this.handleIndex = index as number;\n }\n\n if (this.orientation === 'horizontal') {\n this.startx = parseInt((touchobj as any).clientX, 10);\n this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n } else {\n this.starty = parseInt((touchobj as any).clientY, 10);\n this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n }\n\n if (this.animate) {\n DomHandler.removeClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n\n event.preventDefault();\n }\n\n onDrag(event: TouchEvent) {\n if (this.disabled) {\n return;\n }\n\n var touchobj = event.changedTouches[0],\n handleValue = 0;\n\n if (this.orientation === 'horizontal') {\n handleValue = Math.floor(((parseInt((touchobj as any).clientX, 10) - (this.startx as number)) * 100) / (this.barWidth as number)) + this.startHandleValue;\n } else {\n handleValue = Math.floor((((this.starty as number) - parseInt((touchobj as any).clientY, 10)) * 100) / (this.barHeight as number)) + this.startHandleValue;\n }\n\n this.setValueFromHandle(event, handleValue);\n\n event.preventDefault();\n }\n\n onDragEnd(event: TouchEvent) {\n if (this.disabled) {\n return;\n }\n\n this.dragging = false;\n\n if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n\n if (this.animate) {\n DomHandler.addClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n }\n\n onBarClick(event: Event) {\n if (this.disabled) {\n return;\n }\n\n if (!this.sliderHandleClick) {\n this.updateDomData();\n this.handleChange(event);\n\n if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n }\n\n this.sliderHandleClick = false;\n }\n\n onKeyDown(event, index) {\n this.handleIndex = index;\n\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n this.decrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n this.incrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'PageDown':\n this.decrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'PageUp':\n this.incrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'Home':\n this.updateValue(this.min, event);\n event.preventDefault();\n break;\n\n case 'End':\n this.updateValue(this.max, event);\n event.preventDefault();\n break;\n\n case 'Tab':\n this.onDragEnd(event);\n break;\n\n default:\n break;\n }\n }\n\n decrementValue(event, index, pageKey = false) {\n let newValue;\n\n if (this.range) {\n if (this.step) newValue = this.values[index] - this.step;\n else newValue = this.values[index] - 1;\n } else {\n if (this.step) newValue = this.value - this.step;\n else if (!this.step && pageKey) newValue = this.value - 10;\n else newValue = this.value - 1;\n }\n\n this.updateValue(newValue, event);\n event.preventDefault();\n }\n\n incrementValue(event, index, pageKey = false) {\n let newValue;\n\n if (this.range) {\n if (this.step) newValue = this.values[index] + this.step;\n else newValue = this.values[index] + 1;\n } else {\n if (this.step) newValue = this.value + this.step;\n else if (!this.step && pageKey) newValue = this.value + 10;\n else newValue = this.value + 1;\n }\n\n this.updateValue(newValue, event);\n event.preventDefault();\n }\n\n handleChange(event: Event) {\n let handleValue = this.calculateHandleValue(event);\n this.setValueFromHandle(event, handleValue);\n }\n\n bindDragListeners() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngZone.runOutsideAngular(() => {\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : this.document;\n\n if (!this.dragListener) {\n this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n if (this.dragging) {\n this.ngZone.run(() => {\n this.handleChange(event);\n });\n }\n });\n }\n\n if (!this.mouseupListener) {\n this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n if (this.dragging) {\n this.dragging = false;\n this.ngZone.run(() => {\n if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n else this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n\n if (this.animate) {\n DomHandler.addClass(this.el.nativeElement.children[0], 'cax-slider-animate');\n }\n });\n }\n });\n }\n });\n }\n }\n\n unbindDragListeners() {\n if (this.dragListener) {\n this.dragListener();\n this.dragListener = null;\n }\n\n if (this.mouseupListener) {\n this.mouseupListener();\n this.mouseupListener = null;\n }\n }\n\n setValueFromHandle(event: Event, handleValue: any) {\n let newValue = this.getValueFromHandle(handleValue);\n\n if (this.range) {\n if (this.step) {\n this.handleStepChange(newValue, (this.values as any)[this.handleIndex]);\n } else {\n this.handleValues[this.handleIndex] = handleValue;\n this.updateValue(newValue, event);\n }\n } else {\n if (this.step) {\n this.handleStepChange(newValue, this.value as any);\n } else {\n this.handleValue = handleValue;\n this.updateValue(newValue, event);\n }\n }\n\n this.cd.markForCheck();\n }\n\n handleStepChange(newValue: number, oldValue: number) {\n let diff = newValue - oldValue;\n let val = oldValue;\n let _step = this.step as number;\n\n if (diff < 0) {\n val = oldValue + Math.ceil(newValue / _step - oldValue / _step) * _step;\n } else if (diff > 0) {\n val = oldValue + Math.floor(newValue / _step - oldValue / _step) * _step;\n }\n\n this.updateValue(val);\n this.updateHandleValue();\n }\n\n writeValue(value: any): void {\n if (this.range) this.values = value || [0, 0];\n else this.value = value || 0;\n\n this.updateHandleValue();\n this.updateDiffAndOffset();\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n get rangeStartLeft() {\n if (!this.isVertical()) return this.handleValues[0] > 100 ? 100 + '%' : this.handleValues[0] + '%';\n return null;\n }\n\n get rangeStartBottom() {\n return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n }\n\n get rangeEndLeft() {\n return this.isVertical() ? null : this.handleValues[1] + '%';\n }\n\n get rangeEndBottom() {\n return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n }\n\n isVertical(): boolean {\n return this.orientation === 'vertical';\n }\n\n updateDomData(): void {\n let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n this.initX = rect.left + DomHandler.getWindowScrollLeft();\n this.initY = rect.top + DomHandler.getWindowScrollTop();\n this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n }\n\n calculateHandleValue(event: Event): number {\n if (this.orientation === 'horizontal') return (((event as MouseEvent).pageX - (this.initX as number)) * 100) / (this.barWidth as number);\n else return (((this.initY as number) + (this.barHeight as number) - (event as MouseEvent).pageY) * 100) / (this.barHeight as number);\n }\n\n updateHandleValue(): void {\n if (this.range) {\n this.handleValues[0] = (((this.values as number[])[0] < this.min ? 0 : (this.values as number[])[0] - this.min) * 100) / (this.max - this.min);\n this.handleValues[1] = (((this.values as number[])[1] > this.max ? 100 : (this.values as number[])[1] - this.min) * 100) / (this.max - this.min);\n } else {\n if ((this.value as number) < this.min) this.handleValue = 0;\n else if ((this.value as number) > this.max) this.handleValue = 100;\n else this.handleValue = (((this.value as number) - this.min) * 100) / (this.max - this.min);\n }\n\n if (this.step) {\n this.updateDiffAndOffset();\n }\n }\n\n updateDiffAndOffset(): void {\n this.diff = this.getDiff();\n this.offset = this.getOffset();\n }\n\n getDiff(): number {\n return Math.abs(this.handleValues[0] - this.handleValues[1]);\n }\n\n getOffset(): number {\n return Math.min(this.handleValues[0], this.handleValues[1]);\n }\n\n updateValue(val: number, event?: Event): void {\n if (this.range) {\n let value = val;\n\n if (this.handleIndex == 0) {\n if (value < this.min) {\n value = this.min;\n this.handleValues[0] = 0;\n } else if (value > (this.values as number[])[1]) {\n if (value > this.max) {\n value = this.max;\n this.handleValues[0] = 100;\n }\n }\n this.sliderHandleStart?.nativeElement.focus();\n } else {\n if (value > this.max) {\n value = this.max;\n this.handleValues[1] = 100;\n this.offset = this.handleValues[1];\n } else if (value < this.min) {\n value = this.min;\n this.handleValues[1] = 0;\n } else if (value < (this.values as number[])[0]) {\n this.offset = this.handleValues[1];\n }\n this.sliderHandleEnd?.nativeElement.focus();\n }\n\n if (this.step) {\n this.updateHandleValue();\n } else {\n this.updateDiffAndOffset();\n }\n\n (this.values as number[])[this.handleIndex] = this.getNormalizedValue(value);\n let newValues = [this.minVal, this.maxVal];\n this.onModelChange(newValues);\n this.onChange.emit({ event: event as Event, values: this.values as number[] });\n } else {\n if (val < this.min) {\n val = this.min;\n this.handleValue = 0;\n } else if (val > this.max) {\n val = this.max;\n this.handleValue = 100;\n }\n\n this.value = this.getNormalizedValue(val);\n\n this.onModelChange(this.value);\n this.onChange.emit({ event: event as Event, value: this.value });\n this.sliderHandle?.nativeElement.focus();\n }\n this.updateHandleValue();\n }\n\n getValueFromHandle(handleValue: number): number {\n return (this.max - this.min) * (handleValue / 100) + this.min;\n }\n\n getDecimalsCount(value: number): number {\n if (value && Math.floor(value) !== value) return value.toString().split('.')[1].length || 0;\n return 0;\n }\n\n getNormalizedValue(val: number): number {\n let decimalsCount = this.getDecimalsCount(this.step as number);\n if (decimalsCount > 0) {\n return +parseFloat(val.toString()).toFixed(decimalsCount);\n } else {\n return Math.floor(val);\n }\n }\n\n get steps(): any[] {\n if (!this.step || this.max === undefined || this.min === undefined) {\n return [];\n }\n const stepList: any[] = [];\n const totalRange = this.max - this.min;\n if (totalRange <= 0 || this.step <= 0) {\n return [];\n }\n\n const decimalsCount = this.getDecimalsCount(this.step);\n\n for (let val = this.min; val <= this.max; val += this.step) {\n let normalizedVal = val;\n if (decimalsCount > 0) {\n normalizedVal = +parseFloat(val.toString()).toFixed(decimalsCount);\n } else {\n normalizedVal = Math.floor(val);\n }\n\n if (normalizedVal > this.max) {\n break;\n }\n\n const percentage = ((normalizedVal - this.min) * 100) / totalRange;\n stepList.push({\n value: normalizedVal,\n percentage: percentage,\n style: this.orientation === 'horizontal' ? { left: `${percentage}%` } : { bottom: `${percentage}%` }\n });\n }\n\n const lastStep = stepList[stepList.length - 1];\n if (!lastStep || lastStep.value < this.max) {\n stepList.push({\n value: this.max,\n percentage: 100,\n style: this.orientation === 'horizontal' ? { left: `100%` } : { bottom: `100%` }\n });\n }\n\n return stepList;\n }\n\n isStepActive(stepValue: number): boolean {\n if (this.range) {\n if (this.values && this.values.length >= 2) {\n const minVal = Math.min(this.values[0], this.values[1]);\n const maxVal = Math.max(this.values[0], this.values[1]);\n return stepValue >= minVal && stepValue <= maxVal;\n }\n return false;\n }\n return this.value !== null && this.value !== undefined && stepValue <= this.value;\n }\n\n onStepClick(event: Event, stepValue: number) {\n if (this.disabled) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n\n if (this.range) {\n if (this.values && this.values.length >= 2) {\n const distStart = Math.abs(this.values[0] - stepValue);\n const distEnd = Math.abs(this.values[1] - stepValue);\n this.handleIndex = distStart < distEnd ? 0 : 1;\n } else {\n this.handleIndex = 0;\n }\n this.updateValue(stepValue, event);\n this.onSlideEnd.emit({ originalEvent: event, values: this.values as number[] });\n } else {\n this.updateValue(stepValue, event);\n this.onSlideEnd.emit({ originalEvent: event, value: this.value as number });\n }\n }\n\n ngOnDestroy() {\n this.unbindDragListeners();\n }\n\n get minVal() {\n return Math.min((this.values as number[])[1], (this.values as number[])[0]);\n }\n get maxVal() {\n return Math.max((this.values as number[])[1], (this.values as number[])[0]);\n }\n}\n","<div\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'cax-slider cax-component': true, 'cax-disabled': disabled, 'cax-slider-horizontal': orientation == 'horizontal', 'cax-slider-vertical': orientation == 'vertical', 'cax-slider-animate': animate }\"\n (click)=\"onBarClick($event)\"\n [attr.data-pc-name]=\"'slider'\"\n [attr.data-pc-section]=\"'root'\"\n>\n <span\n *ngIf=\"range && orientation == 'horizontal'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span\n *ngIf=\"range && orientation == 'vertical'\"\n class=\"cax-slider-range\"\n [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n [attr.data-pc-section]=\"'range'\"\n ></span>\n <span *ngIf=\"!range && orientation == 'vertical'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"cax-slider-range\" [attr.data-pc-section]=\"'range'\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n <div *ngIf=\"showSteps && step\" class=\"cax-slider-steps\">\n <span *ngFor=\"let s of steps\" class=\"cax-slider-step-indicator\" [ngStyle]=\"s.style\" [ngClass]=\"{ 'cax-slider-step-active': isStepActive(s.value) }\" (click)=\"onStepClick($event, s.value)\"></span>\n </div>\n <span\n *ngIf=\"!range\"\n #sliderHandle\n class=\"cax-slider-handle\"\n [style.transition]=\"dragging ? 'none' : null\"\n [ngStyle]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\n (touchstart)=\"onDragStart($event)\"\n (touchmove)=\"onDrag($event)\"\n (touchend)=\"onDragEnd($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'handle'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleStart\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 0 }\"\n (keydown)=\"onKeyDown($event, 0)\"\n (mousedown)=\"onMouseDown($event, 0)\"\n (touchstart)=\"onDragStart($event, 0)\"\n (touchmove)=\"onDrag($event, 0)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[0] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'startHandler'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n ></span>\n <span\n *ngIf=\"range\"\n #sliderHandleEnd\n [style.transition]=\"dragging ? 'none' : null\"\n class=\"cax-slider-handle\"\n [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n [ngClass]=\"{ 'cax-slider-handle-active': handleIndex == 1 }\"\n (keydown)=\"onKeyDown($event, 1)\"\n (mousedown)=\"onMouseDown($event, 1)\"\n (touchstart)=\"onDragStart($event, 1)\"\n (touchmove)=\"onDrag($event, 1)\"\n (touchend)=\"onDragEnd($event)\"\n [attr.tabindex]=\"disabled ? null : tabindex\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuenow]=\"value ? value[1] : null\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-orientation]=\"orientation\"\n [attr.data-pc-section]=\"'endHandler'\"\n ></span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AutoFocusModule } from 'cax-design-system/autofocus';\nimport { Slider } from './slider';\n\n@NgModule({\n imports: [CommonModule, AutoFocusModule],\n exports: [Slider],\n declarations: [Slider]\n})\nexport class SliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|