UNPKG

primeng

Version:

PrimeNG is an open source UI library for Angular featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeB

970 lines (953 loc) 37.5 kB
import * as i1 from '@angular/common'; import { isPlatformBrowser, CommonModule } from '@angular/common'; import * as i0 from '@angular/core'; import { Injectable, forwardRef, EventEmitter, inject, NgZone, booleanAttribute, numberAttribute, ViewChild, Output, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { removeClass, addClass, getWindowScrollLeft, getWindowScrollTop, isRTL } from '@primeuix/utils'; import { SharedModule } from 'primeng/api'; import { AutoFocus } from 'primeng/autofocus'; import { BaseComponent } from 'primeng/basecomponent'; import { BaseStyle } from 'primeng/base'; const theme = ({ dt }) => ` .p-slider { position: relative; background: ${dt('slider.track.background')}; border-radius: ${dt('slider.border.radius')}; } .p-slider-handle { cursor: grab; touch-action: none; display: flex; justify-content: center; align-items: center; height: ${dt('slider.handle.height')}; width: ${dt('slider.handle.width')}; background: ${dt('slider.handle.background')}; border-radius: ${dt('slider.handle.border.radius')}; transition: background ${dt('slider.transition.duration')}, color ${dt('slider.transition.duration')}, border-color ${dt('slider.transition.duration')}, box-shadow ${dt('slider.transition.duration')}, outline-color ${dt('slider.transition.duration')}; outline-color: transparent; } .p-slider-handle::before { content: ""; width: ${dt('slider.handle.content.width')}; height: ${dt('slider.handle.content.height')}; display: block; background: ${dt('slider.handle.content.background')}; border-radius: ${dt('slider.handle.content.border.radius')}; box-shadow: ${dt('slider.handle.content.shadow')}; transition: background ${dt('slider.transition.duration')}; } .p-slider:not(.p-disabled) .p-slider-handle:hover { background: ${dt('slider.handle.hover.background')}; } .p-slider:not(.p-disabled) .p-slider-handle:hover::before { background: ${dt('slider.handle.content.hover.background')}; } .p-slider-handle:focus-visible { border-color: ${dt('slider.handle.focus.border.color')}; box-shadow: ${dt('slider.handle.focus.ring.shadow')}; outline: ${dt('slider.handle.focus.ring.width')} ${dt('slider.handle.focus.ring.style')} ${dt('slider.handle.focus.ring.color')}; outline-offset: ${dt('slider.handle.focus.ring.offset')}; } .p-slider-range { display: block; background: ${dt('slider.range.background')}; border-radius: ${dt('slider.border.radius')}; } .p-slider.p-slider-horizontal { height: ${dt('slider.track.size')}; } .p-slider-horizontal .p-slider-range { top: 0; inset-inline-start: 0; height: 100%; } .p-slider-horizontal .p-slider-handle { top: 50%; margin-top: calc(-1 * calc(${dt('slider.handle.height')} / 2)); margin-inline-start: calc(-1 * calc(${dt('slider.handle.width')} / 2)); } .p-slider-vertical { min-height: 100px; width: ${dt('slider.track.size')}; } .p-slider-vertical .p-slider-handle { inset-inline-start: 50%; margin-inline-start: calc(-1 * calc(${dt('slider.handle.width')} / 2)); margin-bottom: calc(-1 * calc(${dt('slider.handle.height')} / 2)); } .p-slider-vertical .p-slider-range { bottom: 0; inset-inline-start: 0; width: 100%; } `; const inlineStyles = { handle: { position: 'absolute' }, range: { position: 'absolute' } }; const classes = { root: ({ props }) => [ 'p-slider p-component', { 'p-disabled': props.disabled, 'p-slider-horizontal': props.orientation === 'horizontal', 'p-slider-vertical': props.orientation === 'vertical' } ], range: 'p-slider-range', handle: 'p-slider-handle' }; class SliderStyle extends BaseStyle { name = 'slider'; theme = theme; classes = classes; inlineStyles = inlineStyles; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SliderStyle, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SliderStyle }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SliderStyle, decorators: [{ type: Injectable }] }); /** * * Slider is a component to provide input with a drag handle. * * [Live Demo](https://www.primeng.org/slider/) * * @module sliderstyle * */ var SliderClasses; (function (SliderClasses) { /** * Class name of the root element */ SliderClasses["root"] = "p-slider"; /** * Class name of the range element */ SliderClasses["range"] = "p-slider-range"; /** * Class name of the handle element */ SliderClasses["handle"] = "p-slider-handle"; })(SliderClasses || (SliderClasses = {})); const SLIDER_VALUE_ACCESSOR = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Slider), multi: true }; /** * Slider is a component to provide input with a drag handle. * @group Components */ class Slider extends BaseComponent { /** * When enabled, displays an animation on click of the slider bar. * @group Props */ animate; /** * When present, it specifies that the element should be disabled. * @group Props */ disabled; /** * Mininum boundary value. * @group Props */ min = 0; /** * Maximum boundary value. * @group Props */ max = 100; /** * Orientation of the slider. * @group Props */ orientation = 'horizontal'; /** * Step factor to increment/decrement the value. * @group Props */ step; /** * When specified, allows two boundary values to be picked. * @group Props */ range; /** * Inline style of the component. * @group Props */ style; /** * Style class of the component. * @group Props */ styleClass; /** * Defines a string that labels the input for accessibility. * @group Props */ ariaLabel; /** * Establishes relationships between the component and label(s) where its value should be one or more element IDs. * @group Props */ ariaLabelledBy; /** * Index of the element in tabbing order. * @group Props */ tabindex = 0; /** * When present, it specifies that the component should automatically get focus on load. * @group Props */ autofocus; /** * Callback to invoke on value change. * @param {SliderChangeEvent} event - Custom value change event. * @group Emits */ onChange = new EventEmitter(); /** * Callback to invoke when slide ended. * @param {SliderSlideEndEvent} event - Custom slide end event. * @group Emits */ onSlideEnd = new EventEmitter(); sliderHandle; sliderHandleStart; sliderHandleEnd; _componentStyle = inject(SliderStyle); value; values; handleValue; handleValues = []; diff; offset; bottom; onModelChange = () => { }; onModelTouched = () => { }; dragging; dragListener; mouseupListener; initX; initY; barWidth; barHeight; sliderHandleClick; handleIndex = 0; startHandleValue; startx; starty; ngZone = inject(NgZone); onMouseDown(event, index) { if (this.disabled) { return; } this.dragging = true; this.updateDomData(); this.sliderHandleClick = true; if (this.range && this.handleValues && this.handleValues[0] === this.max) { this.handleIndex = 0; } else { this.handleIndex = index; } this.bindDragListeners(); event.target.focus(); event.preventDefault(); if (this.animate) { removeClass(this.el.nativeElement.children[0], 'p-slider-animate'); } } onDragStart(event, index) { if (this.disabled) { return; } var touchobj = event.changedTouches[0]; this.startHandleValue = this.range ? this.handleValues[index] : this.handleValue; this.dragging = true; if (this.range && this.handleValues && this.handleValues[0] === this.max) { this.handleIndex = 0; } else { this.handleIndex = index; } if (this.orientation === 'horizontal') { this.startx = parseInt(touchobj.clientX, 10); this.barWidth = this.el.nativeElement.children[0].offsetWidth; } else { this.starty = parseInt(touchobj.clientY, 10); this.barHeight = this.el.nativeElement.children[0].offsetHeight; } if (this.animate) { removeClass(this.el.nativeElement.children[0], 'p-slider-animate'); } event.preventDefault(); } onDrag(event) { if (this.disabled) { return; } var touchobj = event.changedTouches[0], handleValue = 0; if (this.orientation === 'horizontal') { handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / this.barWidth) + this.startHandleValue; } else { handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / this.barHeight) + this.startHandleValue; } this.setValueFromHandle(event, handleValue); event.preventDefault(); } onDragEnd(event) { if (this.disabled) { return; } this.dragging = false; if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values }); else this.onSlideEnd.emit({ originalEvent: event, value: this.value }); if (this.animate) { addClass(this.el.nativeElement.children[0], 'p-slider-animate'); } event.preventDefault(); } onBarClick(event) { if (this.disabled) { return; } if (!this.sliderHandleClick) { this.updateDomData(); this.handleChange(event); if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values }); else this.onSlideEnd.emit({ originalEvent: event, value: this.value }); } this.sliderHandleClick = false; } onKeyDown(event, index) { this.handleIndex = index; switch (event.code) { case 'ArrowDown': case 'ArrowLeft': this.decrementValue(event, index); event.preventDefault(); break; case 'ArrowUp': case 'ArrowRight': this.incrementValue(event, index); event.preventDefault(); break; case 'PageDown': this.decrementValue(event, index, true); event.preventDefault(); break; case 'PageUp': this.incrementValue(event, index, true); event.preventDefault(); break; case 'Home': this.updateValue(this.min, event); event.preventDefault(); break; case 'End': this.updateValue(this.max, event); event.preventDefault(); break; default: break; } } decrementValue(event, index, pageKey = false) { let newValue; if (this.range) { if (this.step) newValue = this.values[index] - this.step; else newValue = this.values[index] - 1; } else { if (this.step) newValue = this.value - this.step; else if (!this.step && pageKey) newValue = this.value - 10; else newValue = this.value - 1; } this.updateValue(newValue, event); event.preventDefault(); } incrementValue(event, index, pageKey = false) { let newValue; if (this.range) { if (this.step) newValue = this.values[index] + this.step; else newValue = this.values[index] + 1; } else { if (this.step) newValue = this.value + this.step; else if (!this.step && pageKey) newValue = this.value + 10; else newValue = this.value + 1; } this.updateValue(newValue, event); event.preventDefault(); } handleChange(event) { let handleValue = this.calculateHandleValue(event); this.setValueFromHandle(event, handleValue); } bindDragListeners() { if (isPlatformBrowser(this.platformId)) { this.ngZone.runOutsideAngular(() => { const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document; if (!this.dragListener) { this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => { if (this.dragging) { this.ngZone.run(() => { this.handleChange(event); }); } }); } if (!this.mouseupListener) { this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => { if (this.dragging) { this.dragging = false; this.ngZone.run(() => { if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values }); else this.onSlideEnd.emit({ originalEvent: event, value: this.value }); if (this.animate) { addClass(this.el.nativeElement.children[0], 'p-slider-animate'); } }); } }); } }); } } unbindDragListeners() { if (this.dragListener) { this.dragListener(); this.dragListener = null; } if (this.mouseupListener) { this.mouseupListener(); this.mouseupListener = null; } } setValueFromHandle(event, handleValue) { let newValue = this.getValueFromHandle(handleValue); if (this.range) { if (this.step) { this.handleStepChange(newValue, this.values[this.handleIndex]); } else { this.handleValues[this.handleIndex] = handleValue; this.updateValue(newValue, event); } } else { if (this.step) { this.handleStepChange(newValue, this.value); } else { this.handleValue = handleValue; this.updateValue(newValue, event); } } this.cd.markForCheck(); } handleStepChange(newValue, oldValue) { let diff = newValue - oldValue; let val = oldValue; let _step = this.step; if (diff < 0) { val = oldValue + Math.ceil(newValue / _step - oldValue / _step) * _step; } else if (diff > 0) { val = oldValue + Math.floor(newValue / _step - oldValue / _step) * _step; } this.updateValue(val); this.updateHandleValue(); } writeValue(value) { if (this.range) this.values = value || [0, 0]; else this.value = value || 0; this.updateHandleValue(); this.updateDiffAndOffset(); this.cd.markForCheck(); } registerOnChange(fn) { this.onModelChange = fn; } registerOnTouched(fn) { this.onModelTouched = fn; } setDisabledState(val) { this.disabled = val; this.cd.markForCheck(); } get rangeStartLeft() { if (!this.isVertical()) return this.handleValues[0] > 100 ? 100 + '%' : this.handleValues[0] + '%'; return null; } get rangeStartBottom() { return this.isVertical() ? this.handleValues[0] + '%' : 'auto'; } get rangeEndLeft() { return this.isVertical() ? null : this.handleValues[1] + '%'; } get rangeEndBottom() { return this.isVertical() ? this.handleValues[1] + '%' : 'auto'; } isVertical() { return this.orientation === 'vertical'; } updateDomData() { let rect = this.el.nativeElement.children[0].getBoundingClientRect(); this.initX = rect.left + getWindowScrollLeft(); this.initY = rect.top + getWindowScrollTop(); this.barWidth = this.el.nativeElement.children[0].offsetWidth; this.barHeight = this.el.nativeElement.children[0].offsetHeight; } calculateHandleValue(event) { if (this.orientation === 'horizontal') { if (isRTL(this.el.nativeElement)) { return ((this.initX + this.barWidth - event.pageX) * 100) / this.barWidth; } else { return ((event.pageX - this.initX) * 100) / this.barWidth; } } else { return ((this.initY + this.barHeight - event.pageY) * 100) / this.barHeight; } } updateHandleValue() { if (this.range) { this.handleValues[0] = ((this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100) / (this.max - this.min); this.handleValues[1] = ((this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100) / (this.max - this.min); } else { if (this.value < this.min) this.handleValue = 0; else if (this.value > this.max) this.handleValue = 100; else this.handleValue = ((this.value - this.min) * 100) / (this.max - this.min); } if (this.step) { this.updateDiffAndOffset(); } } updateDiffAndOffset() { this.diff = this.getDiff(); this.offset = this.getOffset(); } getDiff() { return Math.abs(this.handleValues[0] - this.handleValues[1]); } getOffset() { return Math.min(this.handleValues[0], this.handleValues[1]); } updateValue(val, event) { if (this.range) { let value = val; if (this.handleIndex == 0) { if (value < this.min) { value = this.min; this.handleValues[0] = 0; } else if (value > this.values[1]) { if (value > this.max) { value = this.max; this.handleValues[0] = 100; } } this.sliderHandleStart?.nativeElement.focus(); } else { if (value > this.max) { value = this.max; this.handleValues[1] = 100; this.offset = this.handleValues[1]; } else if (value < this.min) { value = this.min; this.handleValues[1] = 0; } else if (value < this.values[0]) { this.offset = this.handleValues[1]; } this.sliderHandleEnd?.nativeElement.focus(); } if (this.step) { this.updateHandleValue(); } else { this.updateDiffAndOffset(); } this.values[this.handleIndex] = this.getNormalizedValue(value); let newValues = [this.minVal, this.maxVal]; this.onModelChange(newValues); this.onChange.emit({ event: event, values: this.values }); } else { if (val < this.min) { val = this.min; this.handleValue = 0; } else if (val > this.max) { val = this.max; this.handleValue = 100; } this.value = this.getNormalizedValue(val); this.onModelChange(this.value); this.onChange.emit({ event: event, value: this.value }); this.sliderHandle?.nativeElement.focus(); } this.updateHandleValue(); } getValueFromHandle(handleValue) { return (this.max - this.min) * (handleValue / 100) + this.min; } getDecimalsCount(value) { if (value && Math.floor(value) !== value) return value.toString().split('.')[1].length || 0; return 0; } getNormalizedValue(val) { let decimalsCount = this.getDecimalsCount(this.step); if (decimalsCount > 0) { return +parseFloat(val.toString()).toFixed(decimalsCount); } else { return Math.floor(val); } } ngOnDestroy() { this.unbindDragListeners(); super.ngOnDestroy(); } get minVal() { return Math.min(this.values[1], this.values[0]); } get maxVal() { return Math.max(this.values[1], this.values[0]); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: Slider, deps: null, target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.2", type: Slider, isStandalone: true, selector: "p-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" }, providers: [SLIDER_VALUE_ACCESSOR, SliderStyle], 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 }], usesInheritance: true, ngImport: i0, template: ` <div [ngStyle]="style" [class]="styleClass" [ngClass]="{ 'p-slider p-component': true, 'p-disabled': disabled, 'p-slider-horizontal': orientation == 'horizontal', 'p-slider-vertical': orientation == 'vertical', 'p-slider-animate': animate }" (click)="onBarClick($event)" [attr.data-pc-name]="'slider'" [attr.data-pc-section]="'root'" > <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{ position: 'absolute', 'inset-inline-start': offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }" [attr.data-pc-section]="'range'" ></span> <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{ position: 'absolute', bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }" [attr.data-pc-section]="'range'" ></span> <span *ngIf="!range && orientation == 'vertical'" class="p-slider-range" [attr.data-pc-section]="'range'" [ngStyle]="{ position: 'absolute', height: handleValue + '%' }"></span> <span *ngIf="!range && orientation == 'horizontal'" class="p-slider-range" [attr.data-pc-section]="'range'" [ngStyle]="{ position: 'absolute', width: handleValue + '%' }"></span> <span *ngIf="!range" #sliderHandle class="p-slider-handle" [style.transition]="dragging ? 'none' : null" [ngStyle]="{ position: 'absolute', 'inset-inline-start': orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }" (touchstart)="onDragStart($event)" (touchmove)="onDrag($event)" (touchend)="onDragEnd($event)" (mousedown)="onMouseDown($event)" (keydown)="onKeyDown($event)" [attr.tabindex]="disabled ? null : tabindex" role="slider" [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-orientation]="orientation" [attr.data-pc-section]="'handle'" [pAutoFocus]="autofocus" ></span> <span *ngIf="range" #sliderHandleStart [style.transition]="dragging ? 'none' : null" class="p-slider-handle" [ngStyle]="{ position: 'absolute', 'inset-inline-start': rangeStartLeft, bottom: rangeStartBottom }" [ngClass]="{ 'p-slider-handle-active': handleIndex == 0 }" (keydown)="onKeyDown($event, 0)" (mousedown)="onMouseDown($event, 0)" (touchstart)="onDragStart($event, 0)" (touchmove)="onDrag($event)" (touchend)="onDragEnd($event)" [attr.tabindex]="disabled ? null : tabindex" role="slider" [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-orientation]="orientation" [attr.data-pc-section]="'startHandler'" [pAutoFocus]="autofocus" ></span> <span *ngIf="range" #sliderHandleEnd [style.transition]="dragging ? 'none' : null" class="p-slider-handle" [ngStyle]="{ position: 'absolute', 'inset-inline-start': rangeEndLeft, bottom: rangeEndBottom }" [ngClass]="{ 'p-slider-handle-active': handleIndex == 1 }" (keydown)="onKeyDown($event, 1)" (mousedown)="onMouseDown($event, 1)" (touchstart)="onDragStart($event, 1)" (touchmove)="onDrag($event)" (touchend)="onDragEnd($event)" [attr.tabindex]="disabled ? null : tabindex" role="slider" [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-orientation]="orientation" [attr.data-pc-section]="'endHandler'" ></span> </div> `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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"] }, { kind: "directive", type: AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus", "pAutoFocus"] }, { kind: "ngmodule", type: SharedModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: Slider, decorators: [{ type: Component, args: [{ selector: 'p-slider', standalone: true, imports: [CommonModule, AutoFocus, SharedModule], template: ` <div [ngStyle]="style" [class]="styleClass" [ngClass]="{ 'p-slider p-component': true, 'p-disabled': disabled, 'p-slider-horizontal': orientation == 'horizontal', 'p-slider-vertical': orientation == 'vertical', 'p-slider-animate': animate }" (click)="onBarClick($event)" [attr.data-pc-name]="'slider'" [attr.data-pc-section]="'root'" > <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{ position: 'absolute', 'inset-inline-start': offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }" [attr.data-pc-section]="'range'" ></span> <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{ position: 'absolute', bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }" [attr.data-pc-section]="'range'" ></span> <span *ngIf="!range && orientation == 'vertical'" class="p-slider-range" [attr.data-pc-section]="'range'" [ngStyle]="{ position: 'absolute', height: handleValue + '%' }"></span> <span *ngIf="!range && orientation == 'horizontal'" class="p-slider-range" [attr.data-pc-section]="'range'" [ngStyle]="{ position: 'absolute', width: handleValue + '%' }"></span> <span *ngIf="!range" #sliderHandle class="p-slider-handle" [style.transition]="dragging ? 'none' : null" [ngStyle]="{ position: 'absolute', 'inset-inline-start': orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }" (touchstart)="onDragStart($event)" (touchmove)="onDrag($event)" (touchend)="onDragEnd($event)" (mousedown)="onMouseDown($event)" (keydown)="onKeyDown($event)" [attr.tabindex]="disabled ? null : tabindex" role="slider" [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-orientation]="orientation" [attr.data-pc-section]="'handle'" [pAutoFocus]="autofocus" ></span> <span *ngIf="range" #sliderHandleStart [style.transition]="dragging ? 'none' : null" class="p-slider-handle" [ngStyle]="{ position: 'absolute', 'inset-inline-start': rangeStartLeft, bottom: rangeStartBottom }" [ngClass]="{ 'p-slider-handle-active': handleIndex == 0 }" (keydown)="onKeyDown($event, 0)" (mousedown)="onMouseDown($event, 0)" (touchstart)="onDragStart($event, 0)" (touchmove)="onDrag($event)" (touchend)="onDragEnd($event)" [attr.tabindex]="disabled ? null : tabindex" role="slider" [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-orientation]="orientation" [attr.data-pc-section]="'startHandler'" [pAutoFocus]="autofocus" ></span> <span *ngIf="range" #sliderHandleEnd [style.transition]="dragging ? 'none' : null" class="p-slider-handle" [ngStyle]="{ position: 'absolute', 'inset-inline-start': rangeEndLeft, bottom: rangeEndBottom }" [ngClass]="{ 'p-slider-handle-active': handleIndex == 1 }" (keydown)="onKeyDown($event, 1)" (mousedown)="onMouseDown($event, 1)" (touchstart)="onDragStart($event, 1)" (touchmove)="onDrag($event)" (touchend)="onDragEnd($event)" [attr.tabindex]="disabled ? null : tabindex" role="slider" [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-orientation]="orientation" [attr.data-pc-section]="'endHandler'" ></span> </div> `, providers: [SLIDER_VALUE_ACCESSOR, SliderStyle], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None }] }], propDecorators: { animate: [{ type: Input, args: [{ transform: booleanAttribute }] }], disabled: [{ type: Input, args: [{ transform: booleanAttribute }] }], min: [{ type: Input, args: [{ transform: numberAttribute }] }], max: [{ type: Input, args: [{ transform: numberAttribute }] }], orientation: [{ type: Input }], step: [{ type: Input, args: [{ transform: numberAttribute }] }], range: [{ type: Input, args: [{ transform: booleanAttribute }] }], style: [{ type: Input }], styleClass: [{ type: Input }], ariaLabel: [{ type: Input }], ariaLabelledBy: [{ type: Input }], tabindex: [{ type: Input, args: [{ transform: numberAttribute }] }], autofocus: [{ type: Input, args: [{ transform: booleanAttribute }] }], onChange: [{ type: Output }], onSlideEnd: [{ type: Output }], sliderHandle: [{ type: ViewChild, args: ['sliderHandle'] }], sliderHandleStart: [{ type: ViewChild, args: ['sliderHandleStart'] }], sliderHandleEnd: [{ type: ViewChild, args: ['sliderHandleEnd'] }] } }); class SliderModule { static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.2", ngImport: i0, type: SliderModule, imports: [Slider, SharedModule], exports: [Slider, SharedModule] }); static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SliderModule, imports: [Slider, SharedModule, SharedModule] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SliderModule, decorators: [{ type: NgModule, args: [{ imports: [Slider, SharedModule], exports: [Slider, SharedModule] }] }] }); /** * Generated bundle index. Do not edit. */ export { SLIDER_VALUE_ACCESSOR, Slider, SliderClasses, SliderModule, SliderStyle }; //# sourceMappingURL=primeng-slider.mjs.map