@acorex/components 18.10.8 → 18.10.10
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/alert/lib/alert.component.mjs +7 -5
- package/esm2022/map/lib/map.component.mjs +139 -38
- package/esm2022/menu/index.mjs +1 -2
- package/esm2022/menu/lib/menu-item/menu-item.component.mjs +3 -3
- package/esm2022/menu/lib/menu.module.mjs +3 -4
- package/esm2022/range-slider/lib/range-slider.component.mjs +50 -24
- package/esm2022/rate-picker/lib/rate-picker.component.mjs +88 -26
- package/esm2022/side-menu/lib/side-menu-item/side-menu-item.compoent.mjs +10 -4
- package/esm2022/side-menu/lib/side-menu.component.mjs +2 -2
- package/fesm2022/acorex-components-alert.mjs +6 -4
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +138 -37
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +6 -15
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +49 -23
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +87 -25
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +11 -5
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/map/lib/map.component.d.ts +94 -3
- package/menu/index.d.ts +0 -1
- package/menu/lib/menu-item/menu-item.component.d.ts +1 -1
- package/menu/lib/menu.module.d.ts +8 -9
- package/package.json +78 -78
- package/range-slider/lib/range-slider.component.d.ts +47 -21
- package/rate-picker/lib/rate-picker.component.d.ts +77 -16
- package/side-menu/lib/side-menu-item/side-menu-item.compoent.d.ts +1 -0
- package/esm2022/menu/lib/menu-item-text/menu-item-text.component.mjs +0 -11
- package/menu/lib/menu-item-text/menu-item-text.component.d.ts +0 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-range-slider.mjs","sources":["../../../../libs/components/range-slider/src/lib/range-slider.class.ts","../../../../libs/components/range-slider/src/lib/range-slider.component.ts","../../../../libs/components/range-slider/src/lib/range-slider.component.html","../../../../libs/components/range-slider/src/lib/range-slider.module.ts","../../../../libs/components/range-slider/src/acorex-components-range-slider.ts"],"sourcesContent":["//import { AXRange } from '@acorex/components/common';\n\nimport { AXEvent } from '@acorex/components/common';\n\nexport interface AXRangeStartEvent extends AXEvent {\n data: any;\n}\nexport type AXRangeSliderValue = number | [number, number] | undefined;\nexport type AXRangeSliderMode = 'single' | 'dual';\nexport type AXRangeSliderSnapMode = 'both' | 'start' | 'end';\nexport type AXRangeSliderTooltipMode = 'start' | 'end';\nexport type AXRangeSliderHandler = 'first' | 'second';\n","import {\n AXOrientation,\n AXStyleColorType,\n AXValuableComponent,\n MXValueComponent,\n} from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n NgZone,\n ViewEncapsulation,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXRangeSliderMode,\n AXRangeSliderSnapMode,\n AXRangeSliderTooltipMode,\n AXRangeSliderValue,\n} from './range-slider.class';\n\n/**\n * @category\n * Range slider for selecting a range of values.\n */\n@Component({\n selector: 'ax-range-slider',\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n inputs: ['disabled', 'readonly'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n ],\n})\nexport class AXRangeSliderComponent extends classes(MXValueComponent<AXRangeSliderValue>) {\n /**\n * @ignore\n */\n private zone = inject(NgZone);\n\n /**\n * @description orientation including vertical and horizontal\n */\n orientation = input<AXOrientation>('horizontal');\n /**\n * @description color for highlight and tooltip and handler\n */\n color = input<AXStyleColorType>('primary');\n /**\n * @description values is a number single mode\n * and array of 2 number for dual mode\n */\n values = model<AXRangeSliderValue>(this.value);\n /**\n * @description mode including single and dual\n */\n mode = input<AXRangeSliderMode>('single');\n /**\n * @description minimum value\n */\n min = input<number>(0);\n /**\n * @description maximum value\n */\n max = input<number>(100);\n /**\n * @description step for changing values\n */\n step = input<number>(1);\n /**\n * @description act as ruler for range slider,\n * its range of showing to user\n */\n snap = input<number>(1);\n /**\n * @description tooltip for showing value of handlers\n */\n tooltipMode = input<AXRangeSliderTooltipMode>('end');\n /**\n * @description deferent modes for snap including start, end and both\n */\n snapMode = input<AXRangeSliderSnapMode>('start');\n /**\n * @description a flag for having step\n */\n hasStep = input(true);\n /**\n * @description a flag for showing snap\n */\n hasSnap = input(false);\n /**\n * @description a flag for showing snap labels\n */\n hasLable = input(this.hasSnap());\n /**\n * @description a flag for showing tooltip for values\n */\n hasTooltip = input(false);\n\n /**\n * @ignore\n */\n height = 0.25;\n /**\n * @ignore\n */\n newHeight = 'var(--ax-range-slider-base-thickness)';\n /**\n * @ignore\n */\n range = computed(() => this.max() - this.min());\n /**\n * @ignore\n */\n isHorizontal = computed(() => this.orientation() === 'horizontal');\n /**\n * @ignore\n */\n isDual = computed(() => this.mode() === 'dual');\n /**\n * @ignore\n */\n correctMinMax = computed(() => this.max() - this.min() > 0);\n /**\n * @ignore\n */\n\n protected calculateSnapBar = computed(() => {\n if (this.hasSnap()) {\n let array = [];\n for (let i = this.min(); i < this.max(); i += this.snap()) {\n array.push(i);\n }\n array = [...array, this.max()];\n if (array[0] < 0) {\n array = array.map((i) => i + -array[0]).sort((a, b) => a - b);\n }\n if (array[0] > 0) {\n array = array.map((i) => i - array[0]).sort((a, b) => a - b);\n }\n return array;\n } else {\n return undefined;\n }\n });\n /**\n * @ignore\n */\n protected calculatePos = computed<AXRangeSliderValue>(() => {\n if (this.isDual() && this.values()) {\n return [\n ((this.values()[0] - this.min()) / this.range()) * 100,\n ((this.values()[1] - this.min()) / this.range()) * 100,\n ];\n } else {\n return (((this.values() as number) - this.min()) / this.range()) * 100;\n }\n });\n /**\n * @ignore\n */\n private choosenHandler: 'first' | 'second' | undefined = undefined;\n /**\n * @ignore\n */\n private sliderElement: HTMLElement | null = null;\n /**\n * @ignore\n */\n protected AXRangeSliderHighlight = computed(() =>\n this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : '0%',\n width: this.isDual()\n ? this.calculatePos()[1] - this.calculatePos()[0] + '%'\n : this.calculatePos() + '%',\n }\n : {\n height: this.isDual()\n ? this.calculatePos()[1] - this.calculatePos()[0] + '%'\n : this.calculatePos() + '%',\n bottom: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : '0%',\n },\n );\n /**\n * @ignore\n */\n protected AXRangeSliderHandler1 = computed(() =>\n this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : (this.calculatePos() as number) + '%',\n }\n : {\n bottom: this.isDual()\n ? 'calc(' + this.calculatePos()[0] + '% - ' + 6 * this.height + 'rem)'\n : 'calc(' + this.calculatePos() + '% - ' + 6 * this.height + 'rem)',\n },\n );\n /**\n * @ignore\n */\n protected AXRangeSliderHandler2 = computed(() =>\n this.isHorizontal()\n ? {\n left: this.calculatePos()[1] + '%',\n }\n : {\n bottom: 'calc(' + this.calculatePos()[1] + '% - ' + 6 * this.height + 'rem)',\n },\n );\n /**\n * @ignore\n */\n protected AXRangeSliderStep = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', height: 8 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };\n case 'end':\n return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };\n }\n } else {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', width: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };\n case 'end':\n return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };\n }\n }\n });\n /**\n * @ignore\n */\n protected AXRangeLabel = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: 6 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem' };\n case 'end':\n return { top: -6 * this.height + 'rem' };\n }\n } else {\n switch (this.snapMode()) {\n case 'both':\n return { left: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem' };\n case 'end':\n return { left: -8 * this.height + 'rem' };\n }\n }\n });\n constructor() {\n super();\n effect(() => this.commitValue(this.values()));\n effect(\n () => {\n if (this.correctMinMax()) {\n this.fixInitializeValues();\n this.fixChangingMode();\n } else {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n },\n { allowSignalWrites: true },\n );\n this.onValueChanged.subscribe((value) => {\n if (value?.value != undefined && value?.value != null && this.values() !== value.value)\n this.values.set(value.value);\n });\n }\n /**\n * @ignore\n */\n protected override ngOnInit(): void {\n super.ngOnInit();\n //(window as any).rangeSlider = this; //for debugging purpose only\n if (!this.correctMinMax()) {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n } else {\n this.initializeValues();\n }\n }\n /**\n * @ignore\n */\n protected onStartHandler(event: MouseEvent | TouchEvent, circle: 'first' | 'second'): void {\n this.zone.runOutsideAngular(() => {\n if (this.disabled || this.readonly || !this.correctMinMax()) return;\n event.preventDefault();\n this.sliderElement = (event.target as HTMLElement).closest('.ax-range-slider') as HTMLElement;\n if (this.sliderElement) {\n this.choosenHandler = circle;\n const moveListener = (moveEvent: MouseEvent | TouchEvent) => this.onMove(moveEvent, circle);\n const endListener = () => this.onEnd(moveListener, endListener);\n window.addEventListener('mousemove', moveListener);\n window.addEventListener('mouseup', endListener);\n window.addEventListener('touchmove', moveListener, { passive: true });\n window.addEventListener('touchend', endListener);\n }\n });\n }\n /**\n * @ignore\n */\n protected onStartBar(event: MouseEvent | TouchEvent) {\n let circle: 'first' | 'second' = 'first';\n this.sliderElement = (event.target as HTMLElement).closest('.ax-range-slider') as HTMLElement;\n this.zone.runOutsideAngular(() => {\n if (!this.sliderElement || this.disabled || !this.correctMinMax()) return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (value >= (this.values()[1] - this.values()[0]) / 2) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n } else {\n this.values.set([value, this.values()[1]]);\n circle = 'first';\n }\n } else {\n this.values.set(value);\n }\n });\n this.onStartHandler(event, circle);\n }\n /**\n * @ignore\n */\n protected onMove(event: MouseEvent | TouchEvent, circle: 'first' | 'second'): void {\n if (!this.sliderElement) return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (circle === 'first' && value < this.values()[1]) {\n if (this.checkValues(value, 'first', this.values()[1]) && this.values()[0] !== value) {\n this.values.set([value, this.values()[1]]);\n }\n } else if (circle === 'second' && value > this.values()[0] && this.values()[1] !== value) {\n if (this.checkValues(value, 'second', this.values()[0])) {\n this.values.set([this.values()[0], value]);\n }\n }\n } else {\n if (this.checkValue(value) && this.values() !== value) {\n this.values.set(value);\n }\n }\n }\n /**\n * @ignore\n */\n protected onEnd(moveListener: (event: MouseEvent | TouchEvent) => void, endListener: () => void): void {\n window.removeEventListener('mousemove', moveListener);\n window.removeEventListener('mouseup', endListener);\n window.removeEventListener('touchmove', moveListener);\n window.removeEventListener('touchend', endListener);\n this.sliderElement = null;\n }\n /**\n * @ignore\n */\n private initializeValues() {\n this.fixInitializeUndefined();\n this.fixInitializeValues();\n this.fixInitializeStep();\n }\n /**\n * @ignore\n */\n private fixInitializeUndefined() {\n if (typeof this.values() === 'undefined') {\n if (this.isDual()) {\n this.values.set([this.min(), this.max()]);\n } else {\n this.values.set(this.min());\n }\n }\n }\n /**\n * @ignore\n */\n private fixInitializeValues() {\n if (this.isDual() && this.values()[0] > this.values()[1]) {\n this.values.set([this.values()[1], this.values()[0]]);\n }\n if (typeof this.values() === 'number' && !this.checkValue(this.values() as number)) {\n this.values.set(this.min());\n } else if (\n typeof this.values() !== 'number' &&\n !this.checkValues(this.values()[0], 'first', this.values()[1])\n ) {\n this.values.set([this.min(), this.max()]);\n }\n }\n /**\n * @ignore\n */\n private fixInitializeStep() {\n if (this.step() !== 1) {\n if (this.isDual()) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1])]);\n if (this.values()[0] === this.values()[1]) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1]) + this.step()]);\n }\n } else {\n this.values.update((old) => this.roundToStep(old as number));\n }\n }\n }\n /**\n * @ignore\n */\n private fixChangingMode() {\n if (typeof this.values() === 'number' && this.isDual()) {\n this.values.set([this.min(), this.max()]);\n } else if (typeof this.values() !== 'number' && !this.isDual()) {\n this.values.set(this.min());\n }\n }\n /**\n * @ignore\n */\n private calculatePercentOnMove(event: MouseEvent | TouchEvent): number {\n const sliderRect = this.sliderElement.getBoundingClientRect();\n let percent: number;\n if (this.isHorizontal()) {\n const clientX = event instanceof MouseEvent ? event.clientX : (event as TouchEvent).touches[0].clientX;\n const x = clientX - sliderRect.left;\n percent = (x / sliderRect.width) * 100;\n } else {\n const clientY = event instanceof MouseEvent ? event.clientY : (event as TouchEvent).touches[0].clientY;\n const y = -(clientY - sliderRect.bottom); //reverce slider from bottom to top\n percent = (y / sliderRect.height) * 100;\n }\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n return percent;\n }\n\n /**\n * @ignore\n */\n private roundToStep(value: number): number {\n const lower = Math.max(\n this.min(),\n Math.floor((value - this.min()) / this.step()) * this.step() + this.min(),\n );\n const upper = Math.min(this.max(), lower + this.step());\n if (value - lower < upper - value) {\n return lower;\n } else {\n return upper;\n }\n }\n\n /**\n * @ignore\n */\n private checkValue(x: number): boolean {\n if (x >= this.min() && x <= this.max()) return true;\n else return false;\n }\n /**\n * @ignore\n */\n private checkValues(value1: number, y: 'first' | 'second', value2: number): boolean {\n if (value1 >= this.min() && value1 <= this.max()) {\n if (y === 'first') {\n if (value1 < value2 && value2 <= this.max()) return true;\n else return false;\n } else {\n if (value1 > value2 && value2 >= this.min()) return true;\n else return false;\n }\n } else return false;\n }\n /**\n * @ignore\n */\n protected getValueFromPercent(value: number) {\n return this.min() + (value * (this.max() - this.min())) / 100;\n }\n /**\n * @ignore\n */\n protected getPercantage(value: number): number {\n return this.range() !== 0 ? (value / this.range()) * 100 : 0;\n }\n /**\n * Increase a step to value if slider in single mode\n * and increase a step the second value if slider in dual mode\n * @method increaseStep\n */\n public increaseStep(): void {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[1] + this.step());\n this.values.set([this.values()[0], newValue]);\n } else {\n const newValue = this.roundToStep((this.values() as number) + this.step());\n this.values.set(newValue);\n }\n }\n /**\n * Decrease a step to value if slider in single mode\n * and decrease a step the second value if slider in dual mode\n * @method decreaseStep\n */\n public decreaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[0] - this.step());\n this.values.set([newValue, this.values()[1]]);\n } else {\n const newValue = this.roundToStep((this.values() as number) - this.step());\n this.values.set(newValue);\n }\n }\n /**\n * @ignore\n */\n @HostListener('wheel', ['$event'])\n onWheel(event: WheelEvent) {\n this.zone.runOutsideAngular(() => {\n event.preventDefault();\n if (!this.choosenHandler || this.readonly || this.disabled || !this.correctMinMax()) return;\n let newValue;\n if (this.isDual()) {\n if (event.deltaY < 0) {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep((this.values()[0] as number) + this.step());\n if (\n this.checkValues(newValue, this.choosenHandler, this.values()[1]) &&\n this.values()[0] !== newValue\n ) {\n this.values.update((old) => [this.roundToStep((old[0] as number) + this.step()), old[1]]);\n }\n } else {\n newValue = this.roundToStep((this.values()[1] as number) + this.step());\n if (newValue <= this.max() && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep((old[1] as number) + this.step())]);\n }\n }\n } else {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep((this.values()[0] as number) - this.step());\n if (\n this.checkValues(newValue, this.choosenHandler, this.values()[1]) &&\n this.values() !== newValue\n ) {\n this.values.update((old) => [this.roundToStep((old[0] as number) - this.step()), old[1]]);\n }\n } else {\n newValue = this.roundToStep((this.values()[1] as number) - this.step());\n if (\n this.checkValues(newValue, this.choosenHandler, this.values()[0]) &&\n this.values()[1] !== newValue\n ) {\n this.values.update((old) => [old[0], this.roundToStep((old[1] as number) - this.step())]);\n }\n }\n }\n } else {\n if (event.deltaY < 0) {\n if (this.checkValue(this.roundToStep((this.values() as number) + this.step()))) {\n this.values.update((old) => this.roundToStep((old as number) + this.step()));\n }\n } else {\n if (this.checkValue(this.roundToStep((this.values() as number) - this.step()))) {\n this.values.update((old) => this.roundToStep((old as number) - this.step()));\n }\n }\n }\n });\n }\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return [\n `ax-${this.color()}-solid`,\n `${this.disabled ? 'ax-state-disabled' : ''}`,\n `${this.readonly ? 'ax-state-readonly' : ''}`,\n ];\n }\n}\n","@if (correctMinMax()) {\n <div class=\"ax-range-slider\" [class]=\"'ax-orientation-' + orientation()\">\n <div class=\"ax-range-slider-bar\" (mousedown)=\"onStartBar($event)\" (touchstart)=\"onStartBar($event)\"></div>\n <div\n class=\"ax-range-slider-highlight\"\n [ngStyle]=\"AXRangeSliderHighlight()\"\n (mousedown)=\"onStartBar($event)\"\n (touchstart)=\"onStartBar($event)\"\n ></div>\n\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler1()\"\n name=\"first\"\n (mousedown)=\"onStartHandler($event, 'first')\"\n (touchstart)=\"onStartHandler($event, 'first')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ isDual() ? values()[0] : values() }}</div>\n }\n </div>\n\n @if (isDual()) {\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler2()\"\n name=\"second\"\n (mousedown)=\"onStartHandler($event, 'second')\"\n (touchstart)=\"onStartHandler($event, 'second')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ values()[1] }}</div>\n }\n </div>\n }\n @if (hasSnap()) {\n <div class=\"ax-range-slider-step\" [ngStyle]=\"AXRangeSliderStep()\">\n @for (item of calculateSnapBar(); track $index) {\n <div\n class=\"ax-range-slider-steps\"\n [ngStyle]=\"\n isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\n \"\n >\n @if (hasLable()) {\n <div class=\"ax-range-slider-label\" [ngStyle]=\"AXRangeLabel()\">\n {{ item + min() }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [AXRangeSliderComponent],\n imports: [CommonModule],\n exports: [AXRangeSliderComponent],\n})\nexport class AXRangeSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-range-slider.mjs","sources":["../../../../libs/components/range-slider/src/lib/range-slider.class.ts","../../../../libs/components/range-slider/src/lib/range-slider.component.ts","../../../../libs/components/range-slider/src/lib/range-slider.component.html","../../../../libs/components/range-slider/src/lib/range-slider.module.ts","../../../../libs/components/range-slider/src/acorex-components-range-slider.ts"],"sourcesContent":["//import { AXRange } from '@acorex/components/common';\n\nimport { AXEvent } from '@acorex/components/common';\n\nexport interface AXRangeStartEvent extends AXEvent {\n data: any;\n}\nexport type AXRangeSliderValue = number | [number, number] | undefined;\nexport type AXRangeSliderMode = 'single' | 'dual';\nexport type AXRangeSliderSnapMode = 'both' | 'start' | 'end';\nexport type AXRangeSliderTooltipMode = 'start' | 'end';\nexport type AXRangeSliderHandler = 'first' | 'second';\n","import {\n AXOrientation,\n AXStyleColorType,\n AXValuableComponent,\n MXValueComponent,\n} from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n NgZone,\n ViewEncapsulation,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXRangeSliderMode,\n AXRangeSliderSnapMode,\n AXRangeSliderTooltipMode,\n AXRangeSliderValue,\n} from './range-slider.class';\n\n/**\n * @description\n * A range slider for selecting a range of values, supporting both single and dual modes.\n * The slider offers step, snap, and tooltip configurations.\n *\n * @example\n * <ax-range-slider [min]=\"0\" [max]=\"100\" [step]=\"1\" [mode]=\"'dual'\"></ax-range-slider>\n */\n@Component({\n selector: 'ax-range-slider',\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n inputs: ['disabled', 'readonly'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRangeSliderComponent),\n multi: true,\n },\n ],\n})\nexport class AXRangeSliderComponent extends classes(MXValueComponent<AXRangeSliderValue>) {\n private zone = inject(NgZone);\n\n /**\n * @description\n * The orientation of the slider, either 'horizontal' or 'vertical'.\n * @default 'horizontal'\n */\n orientation = input<AXOrientation>('horizontal');\n\n /**\n * @description\n * Color theme for the slider, affecting highlight, tooltip, and handler.\n * @default 'primary'\n */\n color = input<AXStyleColorType>('primary');\n\n /**\n * @description\n * The value(s) of the slider. Can be a single number for single mode or an array of two numbers for dual mode.\n */\n values = model<AXRangeSliderValue>(this.value);\n\n /**\n * @description\n * The mode of the slider, either 'single' or 'dual'.\n * @default 'single'\n */\n mode = input<AXRangeSliderMode>('single');\n\n /**\n * @description\n * The minimum value of the slider.\n * @default 0\n */\n min = input<number>(0);\n\n /**\n * @description\n * The maximum value of the slider.\n * @default 100\n */\n max = input<number>(100);\n\n /**\n * @description\n * The step increment for value changes.\n * @default 1\n */\n step = input<number>(1);\n\n /**\n * @description\n * The snapping increment for the slider.\n * @default 1\n */\n snap = input<number>(1);\n\n /**\n * @description\n * Mode for displaying tooltips, can be at the start, end, or both.\n * @default 'end'\n */\n tooltipMode = input<AXRangeSliderTooltipMode>('end');\n\n /**\n * @description\n * Mode for snapping, can snap at the start, end, or both.\n * @default 'start'\n */\n snapMode = input<AXRangeSliderSnapMode>('start');\n\n /**\n * @description\n * Whether the slider should have steps.\n * @default true\n */\n hasStep = input(true);\n\n /**\n * @description\n * Whether the slider should display snapping.\n * @default false\n */\n hasSnap = input(false);\n\n /**\n * @description\n * Whether the slider should display labels for snapping points.\n * @default Value derived from `hasSnap()`\n */\n hasLable = input(this.hasSnap());\n\n /**\n * @description\n * Whether the slider should display tooltips.\n * @default false\n */\n hasTooltip = input(false);\n\n /**\n * @ignore\n */\n height = 0.25;\n /**\n * @ignore\n */\n newHeight = 'var(--ax-range-slider-base-thickness)';\n /**\n * @ignore\n */\n range = computed(() => this.max() - this.min());\n /**\n * @ignore\n */\n isHorizontal = computed(() => this.orientation() === 'horizontal');\n /**\n * @ignore\n */\n isDual = computed(() => this.mode() === 'dual');\n /**\n * @ignore\n */\n correctMinMax = computed(() => this.max() - this.min() > 0);\n /**\n * @ignore\n */\n\n protected calculateSnapBar = computed(() => {\n if (this.hasSnap()) {\n let array = [];\n for (let i = this.min(); i < this.max(); i += this.snap()) {\n array.push(i);\n }\n array = [...array, this.max()];\n if (array[0] < 0) {\n array = array.map((i) => i + -array[0]).sort((a, b) => a - b);\n }\n if (array[0] > 0) {\n array = array.map((i) => i - array[0]).sort((a, b) => a - b);\n }\n return array;\n } else {\n return undefined;\n }\n });\n /**\n * @ignore\n */\n protected calculatePos = computed<AXRangeSliderValue>(() => {\n if (this.isDual() && this.values()) {\n return [\n ((this.values()[0] - this.min()) / this.range()) * 100,\n ((this.values()[1] - this.min()) / this.range()) * 100,\n ];\n } else {\n return (((this.values() as number) - this.min()) / this.range()) * 100;\n }\n });\n /**\n * @ignore\n */\n private choosenHandler: 'first' | 'second' | undefined = undefined;\n /**\n * @ignore\n */\n private sliderElement: HTMLElement | null = null;\n /**\n * @ignore\n */\n protected AXRangeSliderHighlight = computed(() =>\n this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : '0%',\n width: this.isDual()\n ? this.calculatePos()[1] - this.calculatePos()[0] + '%'\n : this.calculatePos() + '%',\n }\n : {\n height: this.isDual()\n ? this.calculatePos()[1] - this.calculatePos()[0] + '%'\n : this.calculatePos() + '%',\n bottom: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : '0%',\n },\n );\n /**\n * @ignore\n */\n protected AXRangeSliderHandler1 = computed(() =>\n this.isHorizontal()\n ? {\n left: this.isDual() ? this.calculatePos()[0] + '%' : (this.calculatePos() as number) + '%',\n }\n : {\n bottom: this.isDual()\n ? 'calc(' + this.calculatePos()[0] + '% - ' + 6 * this.height + 'rem)'\n : 'calc(' + this.calculatePos() + '% - ' + 6 * this.height + 'rem)',\n },\n );\n /**\n * @ignore\n */\n protected AXRangeSliderHandler2 = computed(() =>\n this.isHorizontal()\n ? {\n left: this.calculatePos()[1] + '%',\n }\n : {\n bottom: 'calc(' + this.calculatePos()[1] + '% - ' + 6 * this.height + 'rem)',\n },\n );\n /**\n * @ignore\n */\n protected AXRangeSliderStep = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', height: 8 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };\n case 'end':\n return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };\n }\n } else {\n switch (this.snapMode()) {\n case 'both':\n return { top: '0', width: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };\n case 'end':\n return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };\n }\n }\n });\n /**\n * @ignore\n */\n protected AXRangeLabel = computed(() => {\n if (this.isHorizontal()) {\n switch (this.snapMode()) {\n case 'both':\n return { top: 6 * this.height + 'rem' };\n case 'start':\n return { top: 4 * this.height + 'rem' };\n case 'end':\n return { top: -6 * this.height + 'rem' };\n }\n } else {\n switch (this.snapMode()) {\n case 'both':\n return { left: 8 * this.height + 'rem' };\n case 'start':\n return { left: 4 * this.height + 'rem' };\n case 'end':\n return { left: -8 * this.height + 'rem' };\n }\n }\n });\n constructor() {\n super();\n effect(() => this.commitValue(this.values()));\n effect(\n () => {\n if (this.correctMinMax()) {\n this.fixInitializeValues();\n this.fixChangingMode();\n } else {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n }\n },\n { allowSignalWrites: true },\n );\n this.onValueChanged.subscribe((value) => {\n if (value?.value != undefined && value?.value != null && this.values() !== value.value)\n this.values.set(value.value);\n });\n }\n /**\n * @ignore\n */\n protected override ngOnInit(): void {\n super.ngOnInit();\n //(window as any).rangeSlider = this; //for debugging purpose only\n if (!this.correctMinMax()) {\n console.error(`Min = ${this.min()} And Max = ${this.max()} is not correct inputs.`);\n } else {\n this.initializeValues();\n }\n }\n /**\n * @ignore\n */\n protected onStartHandler(event: MouseEvent | TouchEvent, circle: 'first' | 'second'): void {\n this.zone.runOutsideAngular(() => {\n if (this.disabled || this.readonly || !this.correctMinMax()) return;\n event.preventDefault();\n this.sliderElement = (event.target as HTMLElement).closest('.ax-range-slider') as HTMLElement;\n if (this.sliderElement) {\n this.choosenHandler = circle;\n const moveListener = (moveEvent: MouseEvent | TouchEvent) => this.onMove(moveEvent, circle);\n const endListener = () => this.onEnd(moveListener, endListener);\n window.addEventListener('mousemove', moveListener);\n window.addEventListener('mouseup', endListener);\n window.addEventListener('touchmove', moveListener, { passive: true });\n window.addEventListener('touchend', endListener);\n }\n });\n }\n /**\n * @ignore\n */\n protected onStartBar(event: MouseEvent | TouchEvent) {\n let circle: 'first' | 'second' = 'first';\n this.sliderElement = (event.target as HTMLElement).closest('.ax-range-slider') as HTMLElement;\n this.zone.runOutsideAngular(() => {\n if (!this.sliderElement || this.disabled || !this.correctMinMax()) return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (value >= (this.values()[1] - this.values()[0]) / 2) {\n this.values.set([this.values()[0], value]);\n circle = 'second';\n } else {\n this.values.set([value, this.values()[1]]);\n circle = 'first';\n }\n } else {\n this.values.set(value);\n }\n });\n this.onStartHandler(event, circle);\n }\n /**\n * @ignore\n */\n protected onMove(event: MouseEvent | TouchEvent, circle: 'first' | 'second'): void {\n if (!this.sliderElement) return;\n const calculatePercent = this.calculatePercentOnMove(event);\n let value = this.getValueFromPercent(calculatePercent);\n value = Number.parseFloat(value.toFixed(2));\n if (this.hasStep()) {\n value = this.roundToStep(value);\n }\n if (this.isDual()) {\n if (circle === 'first' && value < this.values()[1]) {\n if (this.checkValues(value, 'first', this.values()[1]) && this.values()[0] !== value) {\n this.values.set([value, this.values()[1]]);\n }\n } else if (circle === 'second' && value > this.values()[0] && this.values()[1] !== value) {\n if (this.checkValues(value, 'second', this.values()[0])) {\n this.values.set([this.values()[0], value]);\n }\n }\n } else {\n if (this.checkValue(value) && this.values() !== value) {\n this.values.set(value);\n }\n }\n }\n /**\n * @ignore\n */\n protected onEnd(moveListener: (event: MouseEvent | TouchEvent) => void, endListener: () => void): void {\n window.removeEventListener('mousemove', moveListener);\n window.removeEventListener('mouseup', endListener);\n window.removeEventListener('touchmove', moveListener);\n window.removeEventListener('touchend', endListener);\n this.sliderElement = null;\n }\n /**\n * @ignore\n */\n private initializeValues() {\n this.fixInitializeUndefined();\n this.fixInitializeValues();\n this.fixInitializeStep();\n }\n /**\n * @ignore\n */\n private fixInitializeUndefined() {\n if (typeof this.values() === 'undefined') {\n if (this.isDual()) {\n this.values.set([this.min(), this.max()]);\n } else {\n this.values.set(this.min());\n }\n }\n }\n /**\n * @ignore\n */\n private fixInitializeValues() {\n if (this.isDual() && this.values()[0] > this.values()[1]) {\n this.values.set([this.values()[1], this.values()[0]]);\n }\n if (typeof this.values() === 'number' && !this.checkValue(this.values() as number)) {\n this.values.set(this.min());\n } else if (\n typeof this.values() !== 'number' &&\n !this.checkValues(this.values()[0], 'first', this.values()[1])\n ) {\n this.values.set([this.min(), this.max()]);\n }\n }\n /**\n * @ignore\n */\n private fixInitializeStep() {\n if (this.step() !== 1) {\n if (this.isDual()) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1])]);\n if (this.values()[0] === this.values()[1]) {\n this.values.update((old) => [this.roundToStep(old[0]), this.roundToStep(old[1]) + this.step()]);\n }\n } else {\n this.values.update((old) => this.roundToStep(old as number));\n }\n }\n }\n /**\n * @ignore\n */\n private fixChangingMode() {\n if (typeof this.values() === 'number' && this.isDual()) {\n this.values.set([this.min(), this.max()]);\n } else if (typeof this.values() !== 'number' && !this.isDual()) {\n this.values.set(this.min());\n }\n }\n /**\n * @ignore\n */\n private calculatePercentOnMove(event: MouseEvent | TouchEvent): number {\n const sliderRect = this.sliderElement.getBoundingClientRect();\n let percent: number;\n if (this.isHorizontal()) {\n const clientX = event instanceof MouseEvent ? event.clientX : (event as TouchEvent).touches[0].clientX;\n const x = clientX - sliderRect.left;\n percent = (x / sliderRect.width) * 100;\n } else {\n const clientY = event instanceof MouseEvent ? event.clientY : (event as TouchEvent).touches[0].clientY;\n const y = -(clientY - sliderRect.bottom); //reverce slider from bottom to top\n percent = (y / sliderRect.height) * 100;\n }\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n return percent;\n }\n\n /**\n * @ignore\n */\n private roundToStep(value: number): number {\n const lower = Math.max(\n this.min(),\n Math.floor((value - this.min()) / this.step()) * this.step() + this.min(),\n );\n const upper = Math.min(this.max(), lower + this.step());\n if (value - lower < upper - value) {\n return lower;\n } else {\n return upper;\n }\n }\n\n /**\n * @ignore\n */\n private checkValue(x: number): boolean {\n if (x >= this.min() && x <= this.max()) return true;\n else return false;\n }\n /**\n * @ignore\n */\n private checkValues(value1: number, y: 'first' | 'second', value2: number): boolean {\n if (value1 >= this.min() && value1 <= this.max()) {\n if (y === 'first') {\n if (value1 < value2 && value2 <= this.max()) return true;\n else return false;\n } else {\n if (value1 > value2 && value2 >= this.min()) return true;\n else return false;\n }\n } else return false;\n }\n /**\n * @ignore\n */\n protected getValueFromPercent(value: number) {\n return this.min() + (value * (this.max() - this.min())) / 100;\n }\n /**\n * @ignore\n */\n protected getPercantage(value: number): number {\n return this.range() !== 0 ? (value / this.range()) * 100 : 0;\n }\n /**\n * Increase a step to value if slider in single mode\n * and increase a step the second value if slider in dual mode\n * @method increaseStep\n */\n public increaseStep(): void {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[1] + this.step());\n this.values.set([this.values()[0], newValue]);\n } else {\n const newValue = this.roundToStep((this.values() as number) + this.step());\n this.values.set(newValue);\n }\n }\n /**\n * Decrease a step to value if slider in single mode\n * and decrease a step the second value if slider in dual mode\n * @method decreaseStep\n */\n public decreaseStep() {\n if (this.isDual()) {\n const newValue = this.roundToStep(this.values()[0] - this.step());\n this.values.set([newValue, this.values()[1]]);\n } else {\n const newValue = this.roundToStep((this.values() as number) - this.step());\n this.values.set(newValue);\n }\n }\n /**\n * @ignore\n */\n @HostListener('wheel', ['$event'])\n onWheel(event: WheelEvent) {\n this.zone.runOutsideAngular(() => {\n event.preventDefault();\n if (!this.choosenHandler || this.readonly || this.disabled || !this.correctMinMax()) return;\n let newValue;\n if (this.isDual()) {\n if (event.deltaY < 0) {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep((this.values()[0] as number) + this.step());\n if (\n this.checkValues(newValue, this.choosenHandler, this.values()[1]) &&\n this.values()[0] !== newValue\n ) {\n this.values.update((old) => [this.roundToStep((old[0] as number) + this.step()), old[1]]);\n }\n } else {\n newValue = this.roundToStep((this.values()[1] as number) + this.step());\n if (newValue <= this.max() && this.values()[1] !== newValue) {\n this.values.update((old) => [old[0], this.roundToStep((old[1] as number) + this.step())]);\n }\n }\n } else {\n if (this.choosenHandler === 'first') {\n newValue = this.roundToStep((this.values()[0] as number) - this.step());\n if (\n this.checkValues(newValue, this.choosenHandler, this.values()[1]) &&\n this.values() !== newValue\n ) {\n this.values.update((old) => [this.roundToStep((old[0] as number) - this.step()), old[1]]);\n }\n } else {\n newValue = this.roundToStep((this.values()[1] as number) - this.step());\n if (\n this.checkValues(newValue, this.choosenHandler, this.values()[0]) &&\n this.values()[1] !== newValue\n ) {\n this.values.update((old) => [old[0], this.roundToStep((old[1] as number) - this.step())]);\n }\n }\n }\n } else {\n if (event.deltaY < 0) {\n if (this.checkValue(this.roundToStep((this.values() as number) + this.step()))) {\n this.values.update((old) => this.roundToStep((old as number) + this.step()));\n }\n } else {\n if (this.checkValue(this.roundToStep((this.values() as number) - this.step()))) {\n this.values.update((old) => this.roundToStep((old as number) - this.step()));\n }\n }\n }\n });\n }\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return [\n `ax-${this.color()}-solid`,\n `${this.disabled ? 'ax-state-disabled' : ''}`,\n `${this.readonly ? 'ax-state-readonly' : ''}`,\n ];\n }\n}\n","@if (correctMinMax()) {\n <div class=\"ax-range-slider\" [class]=\"'ax-orientation-' + orientation()\">\n <div class=\"ax-range-slider-bar\" (mousedown)=\"onStartBar($event)\" (touchstart)=\"onStartBar($event)\"></div>\n <div\n class=\"ax-range-slider-highlight\"\n [ngStyle]=\"AXRangeSliderHighlight()\"\n (mousedown)=\"onStartBar($event)\"\n (touchstart)=\"onStartBar($event)\"\n ></div>\n\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler1()\"\n name=\"first\"\n (mousedown)=\"onStartHandler($event, 'first')\"\n (touchstart)=\"onStartHandler($event, 'first')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ isDual() ? values()[0] : values() }}</div>\n }\n </div>\n\n @if (isDual()) {\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler2()\"\n name=\"second\"\n (mousedown)=\"onStartHandler($event, 'second')\"\n (touchstart)=\"onStartHandler($event, 'second')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ values()[1] }}</div>\n }\n </div>\n }\n @if (hasSnap()) {\n <div class=\"ax-range-slider-step\" [ngStyle]=\"AXRangeSliderStep()\">\n @for (item of calculateSnapBar(); track $index) {\n <div\n class=\"ax-range-slider-steps\"\n [ngStyle]=\"\n isHorizontal() ? { left: getPercantage(item) + '%' } : { bottom: getPercantage(item) + '%' }\n \"\n >\n @if (hasLable()) {\n <div class=\"ax-range-slider-label\" [ngStyle]=\"AXRangeLabel()\">\n {{ item + min() }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [AXRangeSliderComponent],\n imports: [CommonModule],\n exports: [AXRangeSliderComponent],\n})\nexport class AXRangeSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -50,41 +50,84 @@ function getPointerPercentage(event) {
|
|
50
50
|
}
|
51
51
|
|
52
52
|
/**
|
53
|
-
*
|
53
|
+
* @description
|
54
|
+
* The `AXRatePickerComponent` provides a customizable rating picker.
|
55
|
+
* The component allows users to select a rating between 0 and the defined maximum.
|
56
|
+
* It supports transitions, dynamic value changes, and hover states.
|
54
57
|
*
|
55
|
-
*
|
56
|
-
*
|
58
|
+
* @example
|
59
|
+
* <ax-rate-picker [max]="5" [readonly]="false" [disabled]="false"></ax-rate-picker>
|
57
60
|
*/
|
58
61
|
class AXRatePickerComponent extends MXValueComponent {
|
59
62
|
/**
|
63
|
+
* @description
|
60
64
|
* Initializes the component and sets up value change subscription.
|
61
65
|
*/
|
62
66
|
constructor() {
|
63
67
|
super();
|
64
|
-
/**
|
68
|
+
/**
|
69
|
+
* @description
|
70
|
+
* The icon to be used for each rating point.
|
71
|
+
* @default 'fa-star'
|
72
|
+
*/
|
65
73
|
this.iconName = input('fa-star');
|
66
|
-
/**
|
74
|
+
/**
|
75
|
+
* @description
|
76
|
+
* Maximum value for the rating.
|
77
|
+
* Defines how many rating points are available.
|
78
|
+
* @default 5
|
79
|
+
*/
|
67
80
|
this.max = input(5);
|
68
|
-
/**
|
69
|
-
|
70
|
-
|
81
|
+
/**
|
82
|
+
* @description
|
83
|
+
* Defines the step increment between rating values.
|
84
|
+
* The rating value will be rounded to the nearest multiple of this step.
|
85
|
+
* @default 0.01
|
86
|
+
*/
|
87
|
+
this.step = input(0.01);
|
88
|
+
/**
|
89
|
+
* @description
|
90
|
+
* Whether the rating should have a transition effect when changing values.
|
91
|
+
* @default true
|
92
|
+
*/
|
71
93
|
this.hasTransition = input(true);
|
72
|
-
/**
|
94
|
+
/**
|
95
|
+
* @description
|
96
|
+
* The percentage of the current rating value relative to the maximum rating.
|
97
|
+
*/
|
73
98
|
this.ratePercentage = computed(() => Math.round((this.currentValue() / this.max()) * 10000) / 100);
|
74
|
-
/**
|
99
|
+
/**
|
100
|
+
* @description
|
101
|
+
* The current rating value as a signal.
|
102
|
+
*/
|
75
103
|
this.currentValue = signal(this.max());
|
76
|
-
/**
|
104
|
+
/**
|
105
|
+
* @description
|
106
|
+
* State for tracking hover status and previous value.
|
107
|
+
*/
|
77
108
|
this.prevState = {
|
78
109
|
ishover: false,
|
79
110
|
previousValue: undefined,
|
80
111
|
};
|
81
|
-
/**
|
112
|
+
/**
|
113
|
+
* @description
|
114
|
+
* Reference to the container element.
|
115
|
+
*/
|
82
116
|
this.containerEl = viewChild.required('c');
|
83
|
-
/**
|
117
|
+
/**
|
118
|
+
* @description
|
119
|
+
* Reference to the rating element.
|
120
|
+
*/
|
84
121
|
this.ratingEl = viewChild.required('r');
|
85
|
-
/**
|
122
|
+
/**
|
123
|
+
* @description
|
124
|
+
* Renderer for manipulating styles.
|
125
|
+
*/
|
86
126
|
this.renderer = inject(Renderer2);
|
87
|
-
/**
|
127
|
+
/**
|
128
|
+
* @description
|
129
|
+
* Array of rating values from 1 to `max`.
|
130
|
+
*/
|
88
131
|
this.rates = computed(() => Array(this.max())
|
89
132
|
.fill(0)
|
90
133
|
.map((_, index) => index + 1));
|
@@ -109,6 +152,7 @@ class AXRatePickerComponent extends MXValueComponent {
|
|
109
152
|
});
|
110
153
|
}
|
111
154
|
/**
|
155
|
+
* @description
|
112
156
|
* Calculates and updates the rating based on the mouse or touch event.
|
113
157
|
*
|
114
158
|
* @param event - The mouse or touch event triggering the rating calculation.
|
@@ -123,19 +167,29 @@ class AXRatePickerComponent extends MXValueComponent {
|
|
123
167
|
if (pointerPercentage === -1) {
|
124
168
|
return console.log('Only support touch and click events.');
|
125
169
|
}
|
126
|
-
const value =
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
else {
|
133
|
-
this.commitValue(finalValue);
|
134
|
-
}
|
170
|
+
const value = this.roundToStep(pointerPercentage);
|
171
|
+
if (this.prevState.ishover === true) {
|
172
|
+
this.currentValue.set(value);
|
173
|
+
}
|
174
|
+
else {
|
175
|
+
this.commitValue(value);
|
135
176
|
}
|
136
177
|
}
|
137
178
|
}
|
138
179
|
/**
|
180
|
+
* @description
|
181
|
+
* Rounds the rating value to the nearest step.
|
182
|
+
*
|
183
|
+
* @param percentage - The calculated percentage from pointer event.
|
184
|
+
* @returns The rounded rating value.
|
185
|
+
*/
|
186
|
+
roundToStep(percentage) {
|
187
|
+
const value = (percentage / 100) * this.max();
|
188
|
+
const value2 = Math.round(value / (this.step() || 0.01)) * this.step();
|
189
|
+
return value2;
|
190
|
+
}
|
191
|
+
/**
|
192
|
+
* @description
|
139
193
|
* Handles mouse enter events to start tracking mouse movements for rating.
|
140
194
|
*/
|
141
195
|
mouseEnter() {
|
@@ -153,12 +207,17 @@ class AXRatePickerComponent extends MXValueComponent {
|
|
153
207
|
container.addEventListener('mouseup', endListener);
|
154
208
|
container.addEventListener('mouseleave', endListener);
|
155
209
|
}
|
210
|
+
/**
|
211
|
+
* @description
|
212
|
+
* Handles mouse leave events to reset styles.
|
213
|
+
*/
|
156
214
|
mouseLeave() {
|
157
215
|
if (this.hasTransition()) {
|
158
216
|
this.renderer.removeStyle(this.ratingEl().nativeElement, 'opacity');
|
159
217
|
}
|
160
218
|
}
|
161
219
|
/**
|
220
|
+
* @description
|
162
221
|
* Cleans up event listeners and restores the previous rating value.
|
163
222
|
*
|
164
223
|
* @param moveListener - The function to remove for mouse move events.
|
@@ -180,25 +239,28 @@ class AXRatePickerComponent extends MXValueComponent {
|
|
180
239
|
container.removeEventListener('mouseleave', endListener);
|
181
240
|
}
|
182
241
|
/**
|
242
|
+
* @description
|
183
243
|
* Determines if the component is active (i.e., not readonly or disabled).
|
184
244
|
*/
|
185
245
|
get isActive() {
|
186
246
|
return !this.readonly && !this.disabled;
|
187
247
|
}
|
188
248
|
/**
|
249
|
+
* @description
|
189
250
|
* Determines if the component is in readonly mode.
|
190
251
|
*/
|
191
252
|
get isReadonly() {
|
192
253
|
return this.readonly;
|
193
254
|
}
|
194
255
|
/**
|
256
|
+
* @description
|
195
257
|
* Determines if the component is disabled.
|
196
258
|
*/
|
197
259
|
get isDisabled() {
|
198
260
|
return this.disabled;
|
199
261
|
}
|
200
262
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXRatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXRatePickerComponent, selector: "ax-rate-picker", inputs: { readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null },
|
263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXRatePickerComponent, selector: "ax-rate-picker", inputs: { readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, hasTransition: { classPropertyName: "hasTransition", publicName: "hasTransition", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.active": "this.isActive", "class.readonly": "this.isReadonly", "class.disable": "this.isDisabled" } }, providers: [
|
202
264
|
{ provide: AXValuableComponent, useExisting: AXRatePickerComponent },
|
203
265
|
{
|
204
266
|
provide: NG_VALUE_ACCESSOR,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-rate-picker.mjs","sources":["../../../../libs/components/rate-picker/src/lib/calculatePercentage.ts","../../../../libs/components/rate-picker/src/lib/rate-picker.component.ts","../../../../libs/components/rate-picker/src/lib/rate-picker.component.html","../../../../libs/components/rate-picker/src/lib/rate-picker.module.ts","../../../../libs/components/rate-picker/src/acorex-components-rate-picker.ts"],"sourcesContent":["/**\n * Calculates the horizontal position of a pointer event (mouse or touch) as a percentage\n * of the target element's width.\n *\n * @param event - The mouse or touch event to get the pointer position from.\n * @returns The percentage of the event's position relative to the target element's width,\n * or -1 if the event is invalid.\n *\n * @remarks\n * - For `MouseEvent`, it uses the `clientX` property.\n * - For `TouchEvent`, it uses the `clientX` of the first touch point.\n * - Returns `-1` if the event is neither a valid `MouseEvent` nor a `TouchEvent`.\n *\n * @example\n * ```typescript\n * document.addEventListener('click', function(event) {\n * const percentage = getPointerPercentage(event);\n * console.log(`Click position: ${percentage.toFixed(2)}% of the element's width`);\n * });\n *\n * document.addEventListener('touchstart', function(event) {\n * const percentage = getPointerPercentage(event);\n * console.log(`Touch position: ${percentage.toFixed(2)}% of the element's width`);\n * });\n * ```\n */\nexport function getPointerPercentage(event: MouseEvent | TouchEvent): number {\n let clientX: number;\n\n if (event instanceof MouseEvent) {\n clientX = event.clientX; // Mouse event uses clientX\n } else if (event instanceof TouchEvent && event.touches.length > 0) {\n clientX = event.touches[0].clientX; // Touch event uses the first touch's clientX\n } else {\n return -1; // Return -1 for invalid events\n }\n\n // Use currentTarget to get the bounding box of the element the event listener is attached to\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const clickX = clientX - rect.left; // Calculate X position relative to the element\n const divWidth = rect.width; // Get the width from the bounding box\n const percentage = (clickX / divWidth) * 100; // Calculate percentage\n\n return percentage;\n}\n","import { AXValuableComponent, MXValueComponent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getPointerPercentage } from './calculatePercentage';\n\n/**\n * A component for selecting a rating using star icons.\n *\n * This component allows users to pick a rating by clicking or dragging over star icons.\n * It supports rounding options and manages the rating state internally.\n */\n@Component({\n selector: 'ax-rate-picker',\n templateUrl: './rate-picker.component.html',\n styleUrls: ['./rate-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['readonly', 'disabled'],\n providers: [\n { provide: AXValuableComponent, useExisting: AXRatePickerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class AXRatePickerComponent extends MXValueComponent<number> {\n /** The icon name to use for stars (e.g., 'fa-star'). */\n iconName = input('fa-star');\n\n /** The maximum rating value (e.g., 5 stars). */\n max = input(5);\n\n /** Determines if the rating should be rounded to the nearest integer. */\n isRound = input(true);\n\n /** choosing to have css transition for unchanging value after hover. */\n hasTransition = input(true);\n\n /** The percentage of the current rating value relative to the maximum rating. */\n protected ratePercentage = computed(() => Math.round((this.currentValue() / this.max()) * 10000) / 100);\n\n /** The current rating value as a signal. */\n private currentValue = signal(this.max());\n\n /** State for tracking hover status and previous value. */\n private prevState: { ishover: boolean; previousValue?: number } = {\n ishover: false,\n previousValue: undefined,\n };\n\n /** Reference to the container element. */\n containerEl = viewChild.required<ElementRef>('c');\n\n /** Reference to the rating element. */\n ratingEl = viewChild.required<ElementRef>('r');\n\n /** Renderer for manipulating styles. */\n renderer = inject(Renderer2);\n\n /** Array of rating values from 1 to `max`. */\n protected rates = computed(() =>\n Array(this.max())\n .fill(0)\n .map((_, index) => index + 1),\n );\n\n /**\n * Initializes the component and sets up value change subscription.\n */\n constructor() {\n super();\n effect(() => {\n if (!this.hasTransition()) {\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'transition');\n }\n return this.hasTransition();\n });\n this.onValueChanged.subscribe((val: { value }) => {\n if (val.value < 0) {\n this.currentValue.set(0);\n console.warn('ax-rate-picker: value cant be negative!');\n } else if (val.value > this.max()) {\n this.currentValue.set(this.max());\n console.warn('ax-rate-picker: value cant be more than max!');\n } else {\n this.currentValue.set(val.value);\n }\n });\n }\n\n /**\n * Calculates and updates the rating based on the mouse or touch event.\n *\n * @param event - The mouse or touch event triggering the rating calculation.\n */\n protected calculateRate(event: MouseEvent | TouchEvent): void {\n if (this.hasTransition()) {\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'transition');\n }\n event.preventDefault();\n if (!this.readonly && !this.disabled) {\n const pointerPercentage = getPointerPercentage(event);\n if (pointerPercentage === -1) {\n return console.log('Only support touch and click events.');\n }\n const value = (pointerPercentage / 100) * this.max();\n const finalValue = this.isRound() ? Math.ceil(value) : Number.parseFloat(value.toFixed(2));\n if (finalValue !== this.value) {\n if (this.prevState.ishover === true) {\n this.currentValue.set(finalValue);\n } else {\n this.commitValue(finalValue);\n }\n }\n }\n }\n\n /**\n * Handles mouse enter events to start tracking mouse movements for rating.\n */\n protected mouseEnter() {\n this.prevState = {\n ishover: true,\n previousValue: this.value,\n };\n if (this.hasTransition()) {\n this.renderer.setStyle(this.ratingEl().nativeElement, 'opacity', '80%');\n }\n const moveListener = (moveEvent: MouseEvent | TouchEvent) => this.calculateRate(moveEvent);\n const endListener = () => this.onEnd(moveListener, endListener);\n const container = this.containerEl().nativeElement;\n container.addEventListener('mousemove', moveListener);\n container.addEventListener('mouseup', endListener);\n container.addEventListener('mouseleave', endListener);\n }\n mouseLeave() {\n if (this.hasTransition()) {\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'opacity');\n }\n }\n /**\n * Cleans up event listeners and restores the previous rating value.\n *\n * @param moveListener - The function to remove for mouse move events.\n * @param endListener - The function to remove for mouse end events.\n */\n private onEnd(moveListener: (event: MouseEvent | TouchEvent) => void, endListener: () => void): void {\n if (this.hasTransition()) {\n this.renderer.setStyle(\n this.ratingEl().nativeElement,\n 'transition',\n `width ${this.max() * 50 + 250}ms cubic-bezier(0.29, 0.72, 0.68, 0.85)`,\n );\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'opacity');\n }\n\n this.currentValue.set(this.prevState.previousValue);\n this.prevState = {\n ishover: false,\n previousValue: undefined,\n };\n\n const container = this.containerEl().nativeElement;\n container.removeEventListener('mousemove', moveListener);\n container.removeEventListener('mouseup', endListener);\n container.removeEventListener('mouseleave', endListener);\n }\n\n /**\n * Determines if the component is active (i.e., not readonly or disabled).\n */\n @HostBinding('class.active') get isActive() {\n return !this.readonly && !this.disabled;\n }\n\n /**\n * Determines if the component is in readonly mode.\n */\n @HostBinding('class.readonly') get isReadonly() {\n return this.readonly;\n }\n\n /**\n * Determines if the component is disabled.\n */\n @HostBinding('class.disable') get isDisabled() {\n return this.disabled;\n }\n}\n","<div\n #c\n class=\"ax-rate-picker-container\"\n (click)=\"calculateRate($event)\"\n (touchstart)=\"calculateRate($event)\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\"\n>\n <div #r class=\"ax-rate-picker-rating\" [style.width.%]=\"ratePercentage()\">\n <div class=\"ax-rate-picker-icons ax-rp-active\">\n @for (rate of rates(); track rate) {\n <i class=\"ax-rate-picker-icon fa-solid\" [class]=\"iconName()\" [class.pointer]=\"!this.readonly\"></i>\n }\n </div>\n </div>\n <div class=\"ax-rate-picker-icons ax-rp-inactive\">\n @for (rate of rates(); track rate) {\n <i class=\"ax-rate-picker-icon fa-solid\" [class]=\"iconName()\"></i>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRatePickerComponent } from './rate-picker.component';\n\n@NgModule({\n declarations: [AXRatePickerComponent],\n imports: [CommonModule],\n exports: [AXRatePickerComponent],\n})\nexport class AXRatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-rate-picker.mjs","sources":["../../../../libs/components/rate-picker/src/lib/calculatePercentage.ts","../../../../libs/components/rate-picker/src/lib/rate-picker.component.ts","../../../../libs/components/rate-picker/src/lib/rate-picker.component.html","../../../../libs/components/rate-picker/src/lib/rate-picker.module.ts","../../../../libs/components/rate-picker/src/acorex-components-rate-picker.ts"],"sourcesContent":["/**\n * Calculates the horizontal position of a pointer event (mouse or touch) as a percentage\n * of the target element's width.\n *\n * @param event - The mouse or touch event to get the pointer position from.\n * @returns The percentage of the event's position relative to the target element's width,\n * or -1 if the event is invalid.\n *\n * @remarks\n * - For `MouseEvent`, it uses the `clientX` property.\n * - For `TouchEvent`, it uses the `clientX` of the first touch point.\n * - Returns `-1` if the event is neither a valid `MouseEvent` nor a `TouchEvent`.\n *\n * @example\n * ```typescript\n * document.addEventListener('click', function(event) {\n * const percentage = getPointerPercentage(event);\n * console.log(`Click position: ${percentage.toFixed(2)}% of the element's width`);\n * });\n *\n * document.addEventListener('touchstart', function(event) {\n * const percentage = getPointerPercentage(event);\n * console.log(`Touch position: ${percentage.toFixed(2)}% of the element's width`);\n * });\n * ```\n */\nexport function getPointerPercentage(event: MouseEvent | TouchEvent): number {\n let clientX: number;\n\n if (event instanceof MouseEvent) {\n clientX = event.clientX; // Mouse event uses clientX\n } else if (event instanceof TouchEvent && event.touches.length > 0) {\n clientX = event.touches[0].clientX; // Touch event uses the first touch's clientX\n } else {\n return -1; // Return -1 for invalid events\n }\n\n // Use currentTarget to get the bounding box of the element the event listener is attached to\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const clickX = clientX - rect.left; // Calculate X position relative to the element\n const divWidth = rect.width; // Get the width from the bounding box\n const percentage = (clickX / divWidth) * 100; // Calculate percentage\n\n return percentage;\n}\n","import { AXValuableComponent, MXValueComponent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getPointerPercentage } from './calculatePercentage';\n\n/**\n * @description\n * The `AXRatePickerComponent` provides a customizable rating picker.\n * The component allows users to select a rating between 0 and the defined maximum.\n * It supports transitions, dynamic value changes, and hover states.\n *\n * @example\n * <ax-rate-picker [max]=\"5\" [readonly]=\"false\" [disabled]=\"false\"></ax-rate-picker>\n */\n@Component({\n selector: 'ax-rate-picker',\n templateUrl: './rate-picker.component.html',\n styleUrls: ['./rate-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['readonly', 'disabled'],\n providers: [\n { provide: AXValuableComponent, useExisting: AXRatePickerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXRatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class AXRatePickerComponent extends MXValueComponent<number> {\n /**\n * @description\n * The icon to be used for each rating point.\n * @default 'fa-star'\n */\n iconName = input('fa-star');\n\n /**\n * @description\n * Maximum value for the rating.\n * Defines how many rating points are available.\n * @default 5\n */\n max = input(5);\n\n /**\n * @description\n * Defines the step increment between rating values.\n * The rating value will be rounded to the nearest multiple of this step.\n * @default 0.01\n */\n step = input(0.01);\n\n /**\n * @description\n * Whether the rating should have a transition effect when changing values.\n * @default true\n */\n hasTransition = input(true);\n\n /**\n * @description\n * The percentage of the current rating value relative to the maximum rating.\n */\n protected ratePercentage = computed(() => Math.round((this.currentValue() / this.max()) * 10000) / 100);\n\n /**\n * @description\n * The current rating value as a signal.\n */\n private currentValue = signal(this.max());\n\n /**\n * @description\n * State for tracking hover status and previous value.\n */\n private prevState: { ishover: boolean; previousValue?: number } = {\n ishover: false,\n previousValue: undefined,\n };\n\n /**\n * @description\n * Reference to the container element.\n */\n containerEl = viewChild.required<ElementRef>('c');\n\n /**\n * @description\n * Reference to the rating element.\n */\n ratingEl = viewChild.required<ElementRef>('r');\n\n /**\n * @description\n * Renderer for manipulating styles.\n */\n renderer = inject(Renderer2);\n\n /**\n * @description\n * Array of rating values from 1 to `max`.\n */\n protected rates = computed(() =>\n Array(this.max())\n .fill(0)\n .map((_, index) => index + 1),\n );\n\n /**\n * @description\n * Initializes the component and sets up value change subscription.\n */\n constructor() {\n super();\n effect(() => {\n if (!this.hasTransition()) {\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'transition');\n }\n return this.hasTransition();\n });\n this.onValueChanged.subscribe((val: { value }) => {\n if (val.value < 0) {\n this.currentValue.set(0);\n console.warn('ax-rate-picker: value cant be negative!');\n } else if (val.value > this.max()) {\n this.currentValue.set(this.max());\n console.warn('ax-rate-picker: value cant be more than max!');\n } else {\n this.currentValue.set(val.value);\n }\n });\n }\n\n /**\n * @description\n * Calculates and updates the rating based on the mouse or touch event.\n *\n * @param event - The mouse or touch event triggering the rating calculation.\n */\n protected calculateRate(event: MouseEvent | TouchEvent): void {\n if (this.hasTransition()) {\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'transition');\n }\n event.preventDefault();\n if (!this.readonly && !this.disabled) {\n const pointerPercentage = getPointerPercentage(event);\n if (pointerPercentage === -1) {\n return console.log('Only support touch and click events.');\n }\n const value = this.roundToStep(pointerPercentage);\n if (this.prevState.ishover === true) {\n this.currentValue.set(value);\n } else {\n this.commitValue(value);\n }\n }\n }\n\n /**\n * @description\n * Rounds the rating value to the nearest step.\n *\n * @param percentage - The calculated percentage from pointer event.\n * @returns The rounded rating value.\n */\n private roundToStep(percentage: number): number {\n const value = (percentage / 100) * this.max();\n const value2 = Math.round(value / (this.step() || 0.01)) * this.step();\n return value2;\n }\n\n /**\n * @description\n * Handles mouse enter events to start tracking mouse movements for rating.\n */\n protected mouseEnter() {\n this.prevState = {\n ishover: true,\n previousValue: this.value,\n };\n if (this.hasTransition()) {\n this.renderer.setStyle(this.ratingEl().nativeElement, 'opacity', '80%');\n }\n const moveListener = (moveEvent: MouseEvent | TouchEvent) => this.calculateRate(moveEvent);\n const endListener = () => this.onEnd(moveListener, endListener);\n const container = this.containerEl().nativeElement;\n container.addEventListener('mousemove', moveListener);\n container.addEventListener('mouseup', endListener);\n container.addEventListener('mouseleave', endListener);\n }\n\n /**\n * @description\n * Handles mouse leave events to reset styles.\n */\n mouseLeave() {\n if (this.hasTransition()) {\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'opacity');\n }\n }\n\n /**\n * @description\n * Cleans up event listeners and restores the previous rating value.\n *\n * @param moveListener - The function to remove for mouse move events.\n * @param endListener - The function to remove for mouse end events.\n */\n private onEnd(moveListener: (event: MouseEvent | TouchEvent) => void, endListener: () => void): void {\n if (this.hasTransition()) {\n this.renderer.setStyle(\n this.ratingEl().nativeElement,\n 'transition',\n `width ${this.max() * 50 + 250}ms cubic-bezier(0.29, 0.72, 0.68, 0.85)`,\n );\n this.renderer.removeStyle(this.ratingEl().nativeElement, 'opacity');\n }\n this.currentValue.set(this.prevState.previousValue);\n this.prevState = {\n ishover: false,\n previousValue: undefined,\n };\n const container = this.containerEl().nativeElement;\n container.removeEventListener('mousemove', moveListener);\n container.removeEventListener('mouseup', endListener);\n container.removeEventListener('mouseleave', endListener);\n }\n\n /**\n * @description\n * Determines if the component is active (i.e., not readonly or disabled).\n */\n @HostBinding('class.active') get isActive() {\n return !this.readonly && !this.disabled;\n }\n\n /**\n * @description\n * Determines if the component is in readonly mode.\n */\n @HostBinding('class.readonly') get isReadonly() {\n return this.readonly;\n }\n\n /**\n * @description\n * Determines if the component is disabled.\n */\n @HostBinding('class.disable') get isDisabled() {\n return this.disabled;\n }\n}\n","<div\n #c\n class=\"ax-rate-picker-container\"\n (click)=\"calculateRate($event)\"\n (touchstart)=\"calculateRate($event)\"\n (mouseenter)=\"mouseEnter()\"\n (mouseleave)=\"mouseLeave()\"\n>\n <div #r class=\"ax-rate-picker-rating\" [style.width.%]=\"ratePercentage()\">\n <div class=\"ax-rate-picker-icons ax-rp-active\">\n @for (rate of rates(); track rate) {\n <i class=\"ax-rate-picker-icon fa-solid\" [class]=\"iconName()\" [class.pointer]=\"!this.readonly\"></i>\n }\n </div>\n </div>\n <div class=\"ax-rate-picker-icons ax-rp-inactive\">\n @for (rate of rates(); track rate) {\n <i class=\"ax-rate-picker-icon fa-solid\" [class]=\"iconName()\"></i>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXRatePickerComponent } from './rate-picker.component';\n\n@NgModule({\n declarations: [AXRatePickerComponent],\n imports: [CommonModule],\n exports: [AXRatePickerComponent],\n})\nexport class AXRatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|