ng-devui
Version:
DevUI components based on Angular
1 lines • 24.1 kB
Source Map (JSON)
{"version":3,"file":"ng-devui-slider.mjs","sources":["../../devui/slider/slider.component.ts","../../devui/slider/slider.component.html","../../devui/slider/slider.module.ts","../../devui/slider/ng-devui-slider.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, pluck, takeUntil, tap } from 'rxjs/operators';\n\nconst SLIDER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n};\n\n@Component({\n selector: 'd-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n providers: [SLIDER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\n\nexport class SliderComponent implements OnInit, OnChanges, ControlValueAccessor, OnDestroy, AfterViewInit {\n constructor(private cdr: ChangeDetectorRef) {\n }\n private dragStartListener: Observable<number>;\n private dragMoveListener: Observable<number>;\n private dragEndListener: Observable<Event>;\n private dragStartHandler: Subscription | null;\n private dragMoveHandler: Subscription | null;\n private dragEndHandler: Subscription | null;\n private isDragging = false;\n private isHovering = false;\n public value;\n public showValuePopover = false;\n private mouseOverHandler: Subscription;\n private mouseLeaveHandler: Subscription;\n\n @ViewChild('slider', { static: true }) slider: ElementRef;\n @ViewChild('sliderHandle', { static: true }) sliderHandle: ElementRef;\n @ViewChild('sliderTrack', { static: true }) sliderTrack: ElementRef;\n @ViewChild('sliderRail', { static: true }) sliderRail: ElementRef;\n @Input() max = 100;\n @Input() min = 0;\n @Input() step = 1;\n @Input() disabled = false;\n @Output() afterChange = new EventEmitter<number>();\n @Input() tipsRenderer: (value: number) => string = (value) => `${value}`;\n\n ngOnInit() {\n this.checkRangeValues(this.min, this.max);\n this.checkStepValue();\n this.toggleDisabled(this.disabled);\n if (this.value === null) {\n this.setValue(this.ensureValueInRange(null));\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (Object.prototype.hasOwnProperty.call(changes, 'min')\n || Object.prototype.hasOwnProperty.call(changes, 'max')\n || Object.prototype.hasOwnProperty.call(changes, 'step')) {\n this.checkRangeValues(this.min, this.max);\n this.checkStepValue();\n }\n }\n\n ngAfterViewInit() {\n this.registerMouseEventsListeners();\n this.registerHandleHoverPopoverListener();\n this.toggleDisabled(this.disabled);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.toggleDisabled(isDisabled);\n }\n\n writeValue(newValue: number): void {\n this.setValue(this.ensureValueInRange(newValue), false);\n }\n\n private onTouchedCallback = () => {\n };\n\n private onChangeCallback = (v: any) => {\n };\n\n private checkRangeValues(minValue, maxValue) {\n if (maxValue <= minValue) {\n throw new Error(`max value must be greater than min value`);\n }\n }\n\n private checkStepValue() {\n if (this.step < 0 || !this.step) {\n throw new Error('step value must be greater than 0.');\n } else if ((this.max - this.min) % this.step) {\n throw new Error('(max - min) must be divisible by step.');\n }\n }\n\n private ratioToValue(\n ratio: number,\n min: number,\n max: number,\n step: number\n ): number {\n let value = (max - min) * ratio + min;\n if (step > 0) {\n value = Math.round(value / step) * step;\n }\n return this.clamp(min, value, max);\n }\n\n private convertHandlePositionToRatio(handleX: number, startX: number, totalLength: number): number {\n return this.clamp(0, (handleX - startX) / totalLength, 1);\n }\n\n private clamp(min: number, n: number, max: number) {\n return Math.max(min, Math.min(n, max));\n }\n\n private updateStyle(percentage) {\n percentage = Math.min(1, Math.max(0, percentage));\n this.sliderTrack.nativeElement.style.width = `${percentage * 100}%`;\n this.sliderHandle.nativeElement.style.left = `calc(${percentage * 100}% - 7px)`;\n }\n\n private registerMouseEventsListeners(): void {\n this.dragStartListener = fromEvent(this.slider.nativeElement, 'mousedown').pipe(\n tap((e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n }),\n pluck<MouseEvent, 'pageX'>('pageX'),\n map((position: number) => this.mousePositionToAdaptiveValue(position))\n );\n this.dragEndListener = fromEvent(document, 'mouseup');\n this.dragMoveListener = fromEvent(document, 'mousemove').pipe(\n tap((e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n }),\n pluck<MouseEvent, 'pageX'>('pageX'),\n distinctUntilChanged(),\n map((position: number) => this.mousePositionToAdaptiveValue(position)),\n distinctUntilChanged(),\n takeUntil(this.dragEndListener)\n );\n }\n\n private getSliderPagePosition(): number {\n const rect = this.slider.nativeElement.getBoundingClientRect();\n const window = this.slider.nativeElement.ownerDocument.defaultView;\n return rect.left + window.pageXOffset;\n }\n\n private getRailLength(): number {\n return this.sliderRail.nativeElement.clientWidth;\n }\n\n private mousePositionToAdaptiveValue(handleX: number): number {\n const sliderStartX = this.getSliderPagePosition();\n const sliderLength = this.getRailLength();\n const ratio = this.convertHandlePositionToRatio(handleX, sliderStartX, sliderLength);\n const value = this.ratioToValue(ratio, this.min, this.max, this.step);\n return parseFloat(value.toFixed(this.getDecimals(this.step)));\n }\n\n private getDecimals(value: number): number {\n const valueString = value.toString();\n const integerLength = valueString.indexOf('.') + 1;\n return integerLength >= 0 ? valueString.length - integerLength : 0;\n }\n\n private mouseStartMoving(value: number): void {\n this.handleController(true);\n this.setValue(value);\n }\n\n private mouseMoving(value: number): void {\n this.setValue(value);\n this.cdr.markForCheck();\n }\n\n private mouseStopMoving(): void {\n this.afterChange.emit(this.value);\n this.handleController(false);\n this.onTouchedCallback();\n this.cdr.markForCheck();\n }\n\n private subscribeMouseActions(mouseActions: string[] = ['start', 'move', 'end']): void {\n if (mouseActions.indexOf('start') !== -1 && this.dragStartListener && !this.dragStartHandler) {\n this.dragStartHandler = this.dragStartListener.subscribe(this.mouseStartMoving.bind(this));\n }\n\n if (mouseActions.indexOf('move') !== -1 && this.dragMoveListener && !this.dragMoveHandler) {\n this.dragMoveHandler = this.dragMoveListener.subscribe(this.mouseMoving.bind(this));\n }\n\n if (mouseActions.indexOf('end') !== -1 && this.dragEndListener && !this.dragEndHandler) {\n this.dragEndHandler = this.dragEndListener.subscribe(this.mouseStopMoving.bind(this));\n }\n }\n\n private unsubscribeMouseActions(dragStages: string[] = ['start', 'move', 'end']): void {\n if (dragStages.indexOf('start') !== -1 && this.dragStartHandler) {\n this.dragStartHandler.unsubscribe();\n this.dragStartHandler = null;\n }\n\n if (dragStages.indexOf('move') !== -1 && this.dragMoveHandler) {\n this.dragMoveHandler.unsubscribe();\n this.dragMoveHandler = null;\n }\n\n if (dragStages.indexOf('end') !== -1 && this.dragEndHandler) {\n this.dragEndHandler.unsubscribe();\n this.dragEndHandler = null;\n }\n }\n\n private handleController(movable: boolean): void {\n if (movable) {\n this.isDragging = true;\n this.showValuePopover = this.showValuePopoverController();\n this.subscribeMouseActions(['move', 'end']);\n } else {\n this.isDragging = false;\n this.showValuePopover = this.showValuePopoverController();\n this.unsubscribeMouseActions(['move', 'end']);\n }\n }\n\n private toggleDisabled(disabled: boolean): void {\n if (disabled) {\n this.unsubscribeMouseActions();\n } else {\n this.subscribeMouseActions(['start']);\n }\n }\n\n private setValue(value: number | null, triggerOnChanges = true): void {\n if (this.value !== value) {\n this.value = value;\n this.updateTrackAndHandle();\n }\n if (triggerOnChanges) {\n this.onChangeCallback(this.value);\n }\n }\n\n private ensureValueInRange(value: number | null): number {\n let safeValue;\n if (!this.valueMustBeValid(value)) {\n safeValue = this.min;\n } else {\n safeValue = this.clamp(this.min, value as number, this.max);\n }\n return safeValue;\n }\n\n private updateTrackAndHandle(): void {\n const value = this.value;\n const offset = this.valueToOffset(value);\n this.updateStyle(offset / 100);\n this.cdr.markForCheck();\n }\n\n private valueMustBeValid(value: number): boolean {\n return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\n }\n\n private valueToOffset(value: number): number {\n return ((value - this.min) / (this.max - this.min)) * 100;\n }\n\n private registerHandleHoverPopoverListener() {\n const mouseOverListener = fromEvent(this.sliderHandle.nativeElement, 'mouseover');\n const mouseLeaveListener = fromEvent(this.sliderHandle.nativeElement, 'mouseout');\n this.mouseOverHandler = mouseOverListener.subscribe(this.sliderHandlePopoverOnMouseHover.bind(this));\n this.mouseLeaveHandler = mouseLeaveListener.subscribe(this.sliderHandlePopoverOnMouseLeave.bind(this));\n }\n\n private sliderHandlePopoverOnMouseHover() {\n this.isHovering = true;\n this.showValuePopover = this.showValuePopoverController();\n this.cdr.markForCheck();\n }\n\n private sliderHandlePopoverOnMouseLeave() {\n this.isHovering = false;\n this.showValuePopover = this.showValuePopoverController();\n this.cdr.markForCheck();\n }\n\n private unregisterHandleHoverTooltip() {\n this.mouseOverHandler.unsubscribe();\n this.mouseLeaveHandler.unsubscribe();\n }\n\n private showValuePopoverController() {\n return this.isDragging || this.isHovering;\n }\n\n ngOnDestroy(): void {\n this.unsubscribeMouseActions();\n this.unregisterHandleHoverTooltip();\n }\n}\n","<div class=\"devui-slider\" #slider [ngClass]=\"{ disabled: disabled }\">\n <div class=\"devui-slider-rail\" #sliderRail [ngClass]=\"{ disabled: disabled }\"></div>\n <div class=\"devui-slider-track\" #sliderTrack [ngClass]=\"{ disabled: disabled }\"></div>\n <div\n class=\"devui-slider-handle\"\n #sliderHandle\n [ngClass]=\"{ disabled: disabled }\"\n dPopover\n position=\"top\"\n [content]=\"showValuePopover && tipsRenderer ? tipsRenderer(value) : ''\"\n [showAnimation]=\"false\"\n [visible]=\"tipsRenderer && showValuePopover\"\n ></div>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {PopoverModule} from 'ng-devui/popover';\nimport {SliderComponent} from './slider.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PopoverModule\n ],\n exports: [SliderComponent],\n declarations: [SliderComponent],\n providers: [],\n})\n\nexport class SliderModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}