@seniorsistemas/angular-components 19.9.3 → 19.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/README.md +4 -0
- package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +7 -1
- package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +3 -1
- package/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
- package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
- package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
- package/drawer/README.md +9 -2
- package/drawer/lib/drawer/drawer.component.d.ts +12 -1
- package/editor/lib/editor/editor.component.d.ts +1 -1
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +10 -4
- package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +5 -3
- package/esm2022/button/lib/button/button.component.mjs +3 -3
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
- package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
- package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
- package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
- package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
- package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +21 -3
- package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +14 -3
- package/esm2022/insights/lib/insights/insights.component.mjs +15 -4
- package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
- package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +1 -1
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +23 -3
- package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +5 -3
- package/esm2022/select/lib/select/select.component.mjs +6 -4
- package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
- package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +58 -8
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +11 -3
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +7 -3
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
- package/esm2022/utils/lib/utils/utils.mjs +49 -3
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +13 -5
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +17 -17
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +47 -7
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +22 -2
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +9 -5
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +57 -7
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +10 -2
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -2
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
- package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
- package/global-search/lib/global-search/global-search.module.d.ts +1 -1
- package/insights/README.md +12 -0
- package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +22 -1
- package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +9 -1
- package/insights/lib/insights/insights.component.d.ts +9 -1
- package/package.json +1 -3
- package/paginator/lib/models/paginator.models.d.ts +1 -0
- package/paginator/lib/paginator/paginator.component.d.ts +3 -1
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
- package/rating-scale/README.md +38 -13
- package/rating-scale/lib/rating-scale/models/rating-scale-node.d.ts +8 -0
- package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +4 -1
- package/select/README.md +2 -0
- package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
- package/select/lib/select/select.component.d.ts +3 -1
- package/side-sheet/README.md +4 -4
- package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
- package/speech-recognition/README.md +1 -0
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +4 -1
- package/split-button/README.md +2 -0
- package/split-button/lib/split-button/split-button.component.d.ts +5 -1
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
- package/token-list/lib/token-list/token-list.component.d.ts +3 -1
- package/utils/lib/utils/utils.d.ts +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-slider.mjs","sources":["../../projects/angular-components/slider/src/lib/slider/slider.component.ts","../../projects/angular-components/slider/src/lib/slider/slider.component.html","../../projects/angular-components/slider/src/lib/slider/slider.module.ts","../../projects/angular-components/slider/src/seniorsistemas-angular-components-slider.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de controle deslizante (slider) para seleção de valores numéricos\r\n * dentro de um intervalo definido. Suporta modo simples (um valor) e modo de intervalo\r\n * (dois valores: início e fim). Implementa {@link ControlValueAccessor} para integração\r\n * com Reactive Forms e Template-driven Forms do Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Slider simples -->\r\n * <s-slider formControlName=\"volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" />\r\n *\r\n * <!-- Slider de intervalo -->\r\n * <s-slider formControlName=\"faixa\" [multiple]=\"true\" [min]=\"0\" [max]=\"1000\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [NgClass, TooltipDirective],\r\n})\r\nexport class SliderComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnChanges {\r\n private readonly MAX_RANGE_VALUE = 100;\r\n private readonly MIN_RANGE_VALUE = 0;\r\n @ViewChild('track')\r\n public track!: ElementRef;\r\n\r\n /**\r\n * @description Habilita o modo de intervalo, permitindo selecionar um valor mínimo e máximo.\r\n * Quando `true`, o valor do componente é um array `[inicio, fim]`.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public multiple = false;\r\n\r\n /**\r\n * @description Valor atual do slider. No modo simples é um número; no modo de\r\n * intervalo (`multiple: true`) é um array `[inicio, fim]`.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public value: number | [number, number] = 0;\r\n\r\n /**\r\n * @description Emitido sempre que o valor do slider é alterado pelo usuário.\r\n * Emite o novo valor (número ou array de dois números no modo de intervalo).\r\n */\r\n @Output()\r\n public valueChange = new EventEmitter<number | [number, number]>();\r\n\r\n /**\r\n * @description Incremento aplicado a cada movimento do thumb do slider.\r\n *\r\n * @default 1\r\n */\r\n @Input()\r\n public step = 1;\r\n\r\n /**\r\n * @description Oculta visualmente o thumb (botão arrastável) do slider.\r\n * Útil para visualizações onde apenas a faixa de progresso deve ser exibida.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public hiddenThumb = false;\r\n\r\n /**\r\n * @description Desabilita a interação do usuário com o slider.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public disabled = false;\r\n\r\n /**\r\n * @description Valor mínimo permitido no slider.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public min = this.MIN_RANGE_VALUE;\r\n\r\n /**\r\n * @description Valor máximo permitido no slider.\r\n *\r\n * @default 100\r\n */\r\n @Input()\r\n public max = this.MAX_RANGE_VALUE;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor mínimo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public minValueLabel?: string;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor máximo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public maxValueLabel?: string;\r\n\r\n /**\r\n * @description Índice de tabulação do elemento, controlando a ordem de foco via teclado.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public tabindex = 0;\r\n\r\n public startValue = 0;\r\n public endValue = 0;\r\n public movingProgressBar = false;\r\n public progressLeft = 0;\r\n public progressWidth = '';\r\n\r\n public onChange: (value: number | [number, number]) => void = () => {};\r\n public onTouched: (value: number | [number, number]) => void = () => {};\r\n\r\n private draggingThumb: 'start' | 'end' | null = null;\r\n private progressBarEventPositionStart = -1;\r\n private startValueBeforeProgressBarEvent = -1;\r\n private rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n private totalRangeBeforeProgressBarEvent = -1;\r\n /**\r\n * Map of valid values for values in range.\r\n * @example\r\n * with min = -10 and max = 10 will have this map.\r\n * {\r\n * -10: { 0 },\r\n * -9: { 10 },\r\n * ...\r\n * 10: { 10 }\r\n * }\r\n */\r\n private mapRangeValuesForSlider: Map<number, number> = new Map();\r\n private activeMouseDown = false;\r\n private focusActive = false;\r\n\r\n public ngOnInit(): void {\r\n this.setUserRangeMapValues();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n const hasChangesOnMin = changes['min'] && !changes['min'].firstChange;\r\n const hasChangesOnMax = changes['max'] && !changes['max'].firstChange;\r\n const hasChanges = hasChangesOnMin || hasChangesOnMax;\r\n if (hasChanges) {\r\n this.setUserRangeMapValues();\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n }\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydown($event: KeyboardEvent) {\r\n if (this.focusActive && !this.disabled) {\r\n const isArrowKeyLeft = $event.key === 'ArrowLeft';\r\n const isArrowKeyRight = $event.key === 'ArrowRight';\r\n if (isArrowKeyLeft) {\r\n this.handleArrowKeyLeft();\r\n } else if (isArrowKeyRight) {\r\n this.handleArrowKeyRight();\r\n }\r\n }\r\n }\r\n\r\n public get tooltipStartText() {\r\n return Array.isArray(this.value) ? this.value[0]?.toString() : this.value?.toString();\r\n }\r\n\r\n public get tooltipEndText() {\r\n return Array.isArray(this.value) ? this.value[1]?.toString() : this.value?.toString();\r\n }\r\n\r\n public writeValue(obj: number | [number, number]): void {\r\n this.value = obj;\r\n this.setRangeValues();\r\n }\r\n\r\n public registerOnChange(fn: (value: number | [number, number]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n public onFocusIn() {\r\n this.focusActive = true;\r\n }\r\n\r\n public onBlur() {\r\n this.focusActive = false;\r\n }\r\n\r\n public onTrackClick(evt: MouseEvent) {\r\n if (this.disabled || this.movingProgressBar || this.activeMouseDown) {\r\n return;\r\n }\r\n const trackClickPercentage = this.getPercentageByEvent(evt);\r\n const trackClickToUserRange = this.getValueFromMapByValue(trackClickPercentage);\r\n const _trackClickValid = this.needParseValues ? trackClickToUserRange : trackClickPercentage;\r\n const _setEndValue = () => {\r\n const _endValueUserValue = this.getValueFromMapByValue(this.endValue);\r\n const _endValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n if (this.needParseValues && _endValueUserValue !== trackClickToUserRange) {\r\n this.endValue = _endValue;\r\n } else if (!this.needParseValues) {\r\n this.endValue = trackClickPercentage;\r\n }\r\n };\r\n\r\n const _setStartValue = () => {\r\n const _startValueUserValue = this.getValueFromMapByValue(this.startValue);\r\n if (this.needParseValues && _startValueUserValue !== trackClickToUserRange) {\r\n const _startValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n this.startValue = _startValue;\r\n } else if (!this.needParseValues) {\r\n this.startValue = trackClickPercentage;\r\n }\r\n };\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n const validStart = (this.needParseValues ? this.mapRangeValuesForSlider.get(start) : start) ?? 0;\r\n const validEnd = (this.needParseValues ? this.mapRangeValuesForSlider.get(end) : end) ?? 0;\r\n const _updateStart = () => {\r\n _setStartValue();\r\n this.setValue([trackClickPercentage, validEnd]);\r\n };\r\n\r\n const _updateEnd = () => {\r\n _setEndValue();\r\n this.setValue([validStart, trackClickPercentage]);\r\n };\r\n const clickPercentageBetweenRange = isInRange(_trackClickValid, start, end);\r\n if (_trackClickValid < start) {\r\n _updateStart();\r\n } else if (_trackClickValid > end) {\r\n _updateEnd();\r\n } else if (clickPercentageBetweenRange) {\r\n const middle = (start + end) / 2;\r\n const trackClickPercentageIsExactiddle = _trackClickValid === middle;\r\n if (trackClickPercentageIsExactiddle) {\r\n _updateStart();\r\n } else {\r\n const setStart = _trackClickValid < middle;\r\n const setEnd = _trackClickValid > middle;\r\n if (setStart) {\r\n _updateStart();\r\n } else if (setEnd) {\r\n _updateEnd();\r\n }\r\n }\r\n }\r\n } else {\r\n this.setValue(trackClickPercentage);\r\n _setEndValue();\r\n }\r\n\r\n this.setProgress();\r\n }\r\n\r\n public onProgressMouseDown(evt: MouseEvent) {\r\n if (!this.multiple || this.disabled) {\r\n return;\r\n }\r\n this.progressBarEventPositionStart = this.getPercentageByEvent(evt);\r\n this.startValueBeforeProgressBarEvent = this.startValue;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = this.endValue - this.startValue;\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n this.totalRangeBeforeProgressBarEvent = end - start;\r\n }\r\n document.addEventListener('mousemove', this.handleProgressBarMove);\r\n document.addEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n }\r\n\r\n public onMouseDown(_: MouseEvent, thumb: 'start' | 'end'): void {\r\n if (this.disabled) return;\r\n\r\n this.draggingThumb = thumb;\r\n this.activeMouseDown = true;\r\n document.addEventListener('mousemove', this.onThumbMove);\r\n document.addEventListener('mouseup', this.onMouseUp);\r\n }\r\n\r\n private setRangeValues(): void {\r\n const _setStartAndEndValue = (startValue: number, endValue: number) => {\r\n this.startValue = this.getClosestValueFromMapSlider(startValue);\r\n this.endValue = this.getClosestValueFromMapSlider(endValue);\r\n };\r\n if (this.value === null || this.value === undefined) {\r\n return;\r\n }\r\n if (Array.isArray(this.value) && !this.multiple) {\r\n throw new Error('You must use \"multiple\" with value as array');\r\n }\r\n if (this.multiple && Array.isArray(this.value)) {\r\n this.startValue = this.value[0];\r\n this.endValue = this.value[1];\r\n } else if (!this.multiple) {\r\n this.startValue = this.value as number;\r\n this.endValue = this.value as number;\r\n }\r\n _setStartAndEndValue(this.startValue, this.endValue);\r\n if (this.multiple) {\r\n let [_startValue, _endValue] = this.value as [number, number];\r\n const difference = getDifference(_endValue, _startValue);\r\n const endValueIsGreatherThanMax = _endValue > this.max;\r\n const startValueIsLessThanMin = _startValue < this.min;\r\n const needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;\r\n if (endValueIsGreatherThanMax) {\r\n _endValue = this.max;\r\n _startValue = _endValue - difference;\r\n } else if (startValueIsLessThanMin) {\r\n _startValue = this.min;\r\n _endValue = _startValue + difference;\r\n }\r\n if (needUpdateValues) {\r\n _setStartAndEndValue(_startValue, _endValue);\r\n this.setValue([this.startValue, this.endValue]);\r\n }\r\n } else {\r\n let _value = this.value as number;\r\n const valueGreatherThanMax = _value > this.max;\r\n const valueLessThanMin = _value < this.min;\r\n const needUpdateValue = valueGreatherThanMax || valueLessThanMin;\r\n if (valueGreatherThanMax) {\r\n _value = this.max;\r\n } else if (valueLessThanMin) {\r\n _value = this.min;\r\n }\r\n if (needUpdateValue) {\r\n this.setValue(_value, false);\r\n }\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private onThumbMove = (event: MouseEvent) => {\r\n if (this.movingProgressBar || !this.draggingThumb) return;\r\n\r\n let newPosition = this.getPercentageByEvent(event);\r\n if (\r\n (this.multiple && this.draggingThumb === 'start' && newPosition > this.endValue) ||\r\n (this.multiple && this.draggingThumb === 'end' && newPosition < this.startValue)\r\n ) {\r\n return;\r\n }\r\n\r\n const positionInUserRange = this.getValueFromMapByValue(newPosition);\r\n\r\n if (this.multiple) {\r\n if (this.draggingThumb === 'start') {\r\n this.startValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n } else if (this.draggingThumb === 'end') {\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n }\r\n\r\n this.setValue([this.startValue, this.endValue]);\r\n\r\n const [start, end] = this.value as [number, number];\r\n\r\n if (start === end && this.draggingThumb === 'start') {\r\n this.startValue = this.endValue;\r\n } else if (start === end && this.draggingThumb === 'end') {\r\n this.endValue = this.startValue;\r\n }\r\n } else {\r\n const currentValue = this.value as number;\r\n const _value = this.needParseValues ? positionInUserRange : newPosition;\r\n const isAtSameValue = this.needParseValues ? positionInUserRange === this.value : false;\r\n const hasStep = this.step !== 0;\r\n const newValueIsValidByStep = hasStep\r\n ? currentValue + this.step === _value || currentValue - this.step === _value\r\n : false;\r\n if (isAtSameValue && !newValueIsValidByStep) {\r\n return;\r\n }\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n this.startValue = this.endValue;\r\n this.setValue(this.endValue);\r\n }\r\n this.setProgress();\r\n };\r\n\r\n private onMouseUp = () => {\r\n this.draggingThumb = null;\r\n document.removeEventListener('mousemove', this.onThumbMove);\r\n document.removeEventListener('mouseup', this.onMouseUp);\r\n setTimeout(() => {\r\n this.activeMouseDown = false;\r\n }, 150);\r\n };\r\n\r\n private handleProgressBarMove = (event: MouseEvent) => {\r\n this.movingProgressBar = true;\r\n const newCenter = this.getPercentageByEvent(event);\r\n const startPositionBeforeEvent = this.progressBarEventPositionStart;\r\n const startValueBeforeEvent = this.startValueBeforeProgressBarEvent;\r\n const range = this.rangeBetweenElementsBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEvent,\r\n startValueBeforeEvent + range,\r\n startPositionBeforeEvent,\r\n newCenter,\r\n );\r\n if (newStart < this.MIN_RANGE_VALUE || newEnd > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n if (this.needParseValues) {\r\n const startValueBeforeEventUserRange = this.getValueFromMapByValue(startValueBeforeEvent);\r\n const startPositionBeforeEventUserRange = this.getValueFromMapByValue(startPositionBeforeEvent);\r\n const centerUserRange = this.getValueFromMapByValue(newCenter);\r\n const valueRange = this.totalRangeBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEventUserRange,\r\n startValueBeforeEventUserRange + valueRange,\r\n startPositionBeforeEventUserRange,\r\n centerUserRange,\r\n );\r\n if (newStart < this.min || newEnd > this.max) {\r\n return;\r\n }\r\n this.startValue = this.mapRangeValuesForSlider.get(newStart) ?? 0;\r\n this.endValue = this.mapRangeValuesForSlider.get(newEnd) ?? 0;\r\n } else {\r\n this.startValue = newStart;\r\n this.endValue = newEnd;\r\n }\r\n this.setValue([this.startValue, this.endValue]);\r\n this.setProgress();\r\n };\r\n\r\n private handleProgressBarMoveEnd = () => {\r\n this.progressBarEventPositionStart = -1;\r\n this.startValueBeforeProgressBarEvent = -1;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n this.totalRangeBeforeProgressBarEvent = -1;\r\n document.removeEventListener('mousemove', this.handleProgressBarMove);\r\n document.removeEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n setTimeout(() => {\r\n this.movingProgressBar = false;\r\n }, 150);\r\n };\r\n\r\n private setProgress(): void {\r\n if (this.multiple) {\r\n this.progressLeft = this.startValue;\r\n this.progressWidth = `calc(${this.endValue - this.startValue}% + 10px)`;\r\n } else {\r\n this.progressLeft = 0;\r\n this.progressWidth = `calc(${this.endValue}% + 10px)`;\r\n }\r\n }\r\n\r\n /**\r\n * Get the percentage of a mouse event from the track's left edge\r\n * @param mouseEvent mouse event\r\n * @returns percentage from the left edge\r\n */\r\n private getPercentageByEvent(mouseEvent: MouseEvent | PointerEvent): number {\r\n const trackRect = this.track.nativeElement.getBoundingClientRect();\r\n let newLeft = Math.round(((mouseEvent.clientX - trackRect.left) / trackRect.width) * this.MAX_RANGE_VALUE);\r\n newLeft = Math.max(0, Math.min(newLeft, this.MAX_RANGE_VALUE));\r\n return newLeft;\r\n }\r\n\r\n private setValue(value: number | [number, number], parse = true) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.needParseValues && parse) {\r\n if (Array.isArray(value)) {\r\n value = value.map((x) => this.getValueFromMapByValue(x)) as [number, number];\r\n } else {\r\n value = this.getValueFromMapByValue(value);\r\n }\r\n }\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n\r\n private setUserRangeMapValues() {\r\n const start = this.min;\r\n const end = this.max;\r\n if (start > end) {\r\n throw new Error('Max value must be greater than min value');\r\n }\r\n this.mapRangeValuesForSlider.clear();\r\n const range = end - start;\r\n const decimalPlaces = 2;\r\n const stepCount = Math.floor(range / this.step);\r\n const values: number[] = [];\r\n for (let value = start; value <= end; value += this.step) {\r\n values.push(value);\r\n }\r\n if (values[values.length - 1] !== end) {\r\n values.push(end);\r\n }\r\n const mappedValues = values.map((value) => {\r\n let mapped = ((value - start) / range) * this.MAX_RANGE_VALUE;\r\n return parseFloat(mapped.toFixed(decimalPlaces));\r\n });\r\n mappedValues[0] = 0;\r\n mappedValues[mappedValues.length - 1] = this.MAX_RANGE_VALUE;\r\n const error = this.MAX_RANGE_VALUE - mappedValues[mappedValues.length - 1];\r\n const errorPerStep = error / stepCount;\r\n for (let i = 1; i < mappedValues.length - 1; i++) {\r\n mappedValues[i] += errorPerStep;\r\n mappedValues[i] = parseFloat(mappedValues[i].toFixed(decimalPlaces));\r\n }\r\n values.forEach((value, index) => {\r\n this.mapRangeValuesForSlider.set(value, mappedValues[index]);\r\n });\r\n }\r\n\r\n /**\r\n * Returns the user value from the given slider value by using the map of range values.\r\n * @example\r\n * If the map is 0: { 0 }, 1: { 10 }, 2: { 30 }, 3: { 40 }, 4: { 50 }\r\n * and the sliderValue is 37, the function returns 3\r\n * or the slider value is 40, the function returns 4\r\n * @param sliderValue the value of the slider (values only between range MIN and MAX)\r\n * @returns the user value from the given slider value\r\n */\r\n private getValueFromMapByValue(sliderValue: number) {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n const exactValue = mapToArray.find((x) => x.mapped == sliderValue);\r\n const closest = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.mapped - sliderValue) < Math.abs(prev.mapped - sliderValue) ? curr : prev,\r\n );\r\n return exactValue ? exactValue.value : closest.value;\r\n }\r\n\r\n /**\r\n * Retrieves the key from the map that is closest to the given slider value.\r\n * @param userValue - The value to find the closest key for. (values only between 0 - 100)\r\n * @returns The key that corresponds to the closest mapped value.\r\n */\r\n private getClosestValueFromMapSlider(userValue: number): number {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n if (userValue >= this.max) {\r\n return mapToArray[mapToArray.length - 1].mapped;\r\n } else if (userValue <= this.min) {\r\n return mapToArray[0].mapped;\r\n }\r\n const exactValue = mapToArray.find((x) => x.value == userValue);\r\n const closestValue = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.value - userValue) < Math.abs(prev.value - userValue) ? curr : prev,\r\n );\r\n const item = exactValue || closestValue;\r\n const isFirstItem = mapToArray[0] === item;\r\n const isLastItem = mapToArray[mapToArray.length - 1] === item;\r\n if (isFirstItem && userValue > this.min) {\r\n return getMidpoint(item.mapped, mapToArray[1].mapped);\r\n } else if (isLastItem && userValue < this.max) {\r\n return getMidpoint(item.mapped, mapToArray[mapToArray.length - 2].mapped);\r\n } else {\r\n return item.mapped;\r\n }\r\n }\r\n\r\n private handleArrowKeyLeft() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(false);\r\n } else {\r\n this._incrementOrDecrementEndValue(false);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private handleArrowKeyRight() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(true);\r\n } else {\r\n this._incrementOrDecrementEndValue(true);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private _incrementOrDecrementStartAndEndValue(increment: boolean) {\r\n let [start, end] = this.value as [number, number];\r\n const difference = getDifference(end, start);\r\n if (increment) {\r\n start += this.step;\r\n end += this.step;\r\n } else {\r\n start -= this.step;\r\n end -= this.step;\r\n }\r\n const startLessThanMin = start < this.min;\r\n const endGreaterThanMax = end > this.max;\r\n if (startLessThanMin || endGreaterThanMax) {\r\n if (startLessThanMin) {\r\n start = this.min;\r\n end = start + difference;\r\n } else if (endGreaterThanMax) {\r\n end = this.max;\r\n start = end - difference;\r\n }\r\n }\r\n if (start < this.min || end > this.max) {\r\n return;\r\n }\r\n this.setValue([start, end], false);\r\n if (this.needParseValues) {\r\n start = this.getClosestValueFromMapSlider(start);\r\n end = this.getClosestValueFromMapSlider(end);\r\n }\r\n this.startValue = start;\r\n this.endValue = end;\r\n }\r\n\r\n private _incrementOrDecrementEndValue(increment: boolean) {\r\n let value = this.value as number;\r\n if (increment) {\r\n value += this.step;\r\n } else {\r\n value -= this.step;\r\n }\r\n let _newEndValue = value;\r\n if (this.needParseValues) {\r\n _newEndValue = this.getClosestValueFromMapSlider(_newEndValue);\r\n }\r\n if (_newEndValue < this.MIN_RANGE_VALUE || _newEndValue > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n this.endValue = _newEndValue;\r\n this.startValue = this.endValue;\r\n this.setValue(_newEndValue);\r\n }\r\n\r\n private get needParseValues() {\r\n return this.max !== this.MAX_RANGE_VALUE || this.min !== this.MIN_RANGE_VALUE;\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a new range based on the old range and the positions clicked and finalized.\r\n *\r\n * @param oldStart - The starting value of the old range.\r\n * @param oldEnd - The ending value of the old range.\r\n * @param clickedPosition - The position where the click occurred.\r\n * @param finalPosition - The position where the range should end.\r\n * @returns An object containing the new start and end values of the range.\r\n */\r\nconst calculateNewRange = (oldStart: number, oldEnd: number, clickedPosition: number, finalPosition: number) => {\r\n const range = oldEnd - oldStart;\r\n const newStart = finalPosition - (clickedPosition - oldStart);\r\n const newEnd = newStart + range;\r\n return { newStart, newEnd };\r\n};\r\n\r\nconst isInRange = (value: number, rangeStart: number, rangeEnd: number): boolean => {\r\n const [min, max] = rangeStart < rangeEnd ? [rangeStart, rangeEnd] : [rangeEnd, rangeStart];\r\n return value >= min && value <= max;\r\n};\r\n\r\nconst getMidpoint = (start: number, end: number) => {\r\n const midpoint = (start + end) / 2;\r\n return parseFloat(midpoint.toFixed(2));\r\n};\r\nconst getDifference = (end: number, start: number) => {\r\n return Math.abs(end - start);\r\n};\r\n","<div\r\n class=\"slider-container\"\r\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\r\n [tabindex]=\"tabindex\"\r\n (click)=\"onTrackClick($event)\"\r\n (focus)=\"onFocusIn()\"\r\n (blur)=\"onBlur()\"\r\n>\r\n <div\r\n #track\r\n class=\"slider-track\"\r\n [ngClass]=\"{\r\n 'slider-track--hidden-thumb': hiddenThumb,\r\n 'slider-track--moving-multiple-thumbs': movingProgressBar,\r\n }\"\r\n >\r\n <div\r\n class=\"slider-progress\"\r\n (mousedown)=\"onProgressMouseDown($event)\"\r\n [style.left.%]=\"progressLeft\"\r\n [style.width]=\"progressWidth\"\r\n ></div>\r\n @if (multiple) {\r\n <div\r\n class=\"slider-thumb\"\r\n [sTooltip]=\"tooltipStartText\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'start')\"\r\n [style.left.%]=\"startValue\"\r\n ></div>\r\n }\r\n <div\r\n [sTooltip]=\"tooltipEndText\"\r\n class=\"slider-thumb\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'end')\"\r\n [style.left.%]=\"endValue\"\r\n ></div>\r\n </div>\r\n <div class=\"footer\">\r\n <span>{{ minValueLabel || min }}</span>\r\n <span>{{ maxValueLabel || max }}</span>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n imports: [SliderComponent],\r\n exports: [SliderComponent],\r\n})\r\nexport class SliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-slider.mjs","sources":["../../projects/angular-components/slider/src/lib/slider/slider.component.ts","../../projects/angular-components/slider/src/lib/slider/slider.component.html","../../projects/angular-components/slider/src/lib/slider/slider.module.ts","../../projects/angular-components/slider/src/seniorsistemas-angular-components-slider.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de controle deslizante (slider) para seleção de valores numéricos\r\n * dentro de um intervalo definido. Suporta modo simples (um valor) e modo de intervalo\r\n * (dois valores: início e fim). Implementa {@link ControlValueAccessor} para integração\r\n * com Reactive Forms e Template-driven Forms do Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Slider simples -->\r\n * <s-slider formControlName=\"volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" />\r\n *\r\n * <!-- Slider de intervalo -->\r\n * <s-slider formControlName=\"faixa\" [multiple]=\"true\" [min]=\"0\" [max]=\"1000\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [NgClass, TooltipDirective],\r\n})\r\nexport class SliderComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnChanges {\r\n private readonly MAX_RANGE_VALUE = 100;\r\n private readonly MIN_RANGE_VALUE = 0;\r\n @ViewChild('track')\r\n public track!: ElementRef;\r\n\r\n /**\r\n * @description Habilita o modo de intervalo, permitindo selecionar um valor mínimo e máximo.\r\n * Quando `true`, o valor do componente é um array `[inicio, fim]`.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public multiple = false;\r\n\r\n /**\r\n * @description Valor atual do slider. No modo simples é um número; no modo de\r\n * intervalo (`multiple: true`) é um array `[inicio, fim]`.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public value: number | [number, number] = 0;\r\n\r\n /**\r\n * @description Emitido sempre que o valor do slider é alterado pelo usuário.\r\n * Emite o novo valor (número ou array de dois números no modo de intervalo).\r\n */\r\n @Output()\r\n public valueChange = new EventEmitter<number | [number, number]>();\r\n\r\n /**\r\n * @description Incremento aplicado a cada movimento do thumb do slider.\r\n *\r\n * @default 1\r\n */\r\n @Input()\r\n public step = 1;\r\n\r\n /**\r\n * @description Oculta visualmente o thumb (botão arrastável) do slider.\r\n * Útil para visualizações onde apenas a faixa de progresso deve ser exibida.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public hiddenThumb = false;\r\n\r\n /**\r\n * @description Desabilita a interação do usuário com o slider.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public disabled = false;\r\n\r\n /**\r\n * @description Valor mínimo permitido no slider.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public min = this.MIN_RANGE_VALUE;\r\n\r\n /**\r\n * @description Valor máximo permitido no slider.\r\n *\r\n * @default 100\r\n */\r\n @Input()\r\n public max = this.MAX_RANGE_VALUE;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor mínimo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public minValueLabel?: string;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor máximo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public maxValueLabel?: string;\r\n\r\n /**\r\n * @description Índice de tabulação do elemento, controlando a ordem de foco via teclado.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public tabindex = 0;\r\n\r\n public startValue = 0;\r\n public endValue = 0;\r\n public movingProgressBar = false;\r\n public progressLeft = 0;\r\n public progressWidth = '';\r\n\r\n public onChange: (value: number | [number, number]) => void = () => {};\r\n public onTouched: (value: number | [number, number]) => void = () => {};\r\n\r\n private draggingThumb: 'start' | 'end' | null = null;\r\n private progressBarEventPositionStart = -1;\r\n private startValueBeforeProgressBarEvent = -1;\r\n private rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n private totalRangeBeforeProgressBarEvent = -1;\r\n /**\r\n * Map of valid values for values in range.\r\n * @example\r\n * with min = -10 and max = 10 will have this map.\r\n * {\r\n * -10: { 0 },\r\n * -9: { 10 },\r\n * ...\r\n * 10: { 10 }\r\n * }\r\n */\r\n private mapRangeValuesForSlider: Map<number, number> = new Map();\r\n private activeMouseDown = false;\r\n private focusActive = false;\r\n\r\n public ngOnInit(): void {\r\n this.setUserRangeMapValues();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n const hasChangesOnMin = changes['min'] && !changes['min'].firstChange;\r\n const hasChangesOnMax = changes['max'] && !changes['max'].firstChange;\r\n const hasChanges = hasChangesOnMin || hasChangesOnMax;\r\n if (hasChanges) {\r\n this.setUserRangeMapValues();\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n }\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydown($event: KeyboardEvent) {\r\n if (this.focusActive && !this.disabled) {\r\n const isArrowKeyLeft = $event.key === 'ArrowLeft';\r\n const isArrowKeyRight = $event.key === 'ArrowRight';\r\n if (isArrowKeyLeft) {\r\n this.handleArrowKeyLeft();\r\n } else if (isArrowKeyRight) {\r\n this.handleArrowKeyRight();\r\n }\r\n }\r\n }\r\n\r\n public get tooltipStartText() {\r\n return Array.isArray(this.value) ? this.value[0]?.toString() : this.value?.toString();\r\n }\r\n\r\n public get tooltipEndText() {\r\n return Array.isArray(this.value) ? this.value[1]?.toString() : this.value?.toString();\r\n }\r\n\r\n public writeValue(obj: number | [number, number]): void {\r\n this.value = obj;\r\n this.setRangeValues();\r\n }\r\n\r\n public registerOnChange(fn: (value: number | [number, number]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n public onFocusIn() {\r\n this.focusActive = true;\r\n }\r\n\r\n public onBlur() {\r\n this.focusActive = false;\r\n }\r\n\r\n public onTrackClick(evt: MouseEvent) {\r\n if (this.disabled || this.movingProgressBar || this.activeMouseDown) {\r\n return;\r\n }\r\n const trackClickPercentage = this.getPercentageByEvent(evt);\r\n const trackClickToUserRange = this.getValueFromMapByValue(trackClickPercentage);\r\n const _trackClickValid = this.needParseValues ? trackClickToUserRange : trackClickPercentage;\r\n const _setEndValue = () => {\r\n const _endValueUserValue = this.getValueFromMapByValue(this.endValue);\r\n const _endValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n if (this.needParseValues && _endValueUserValue !== trackClickToUserRange) {\r\n this.endValue = _endValue;\r\n } else if (!this.needParseValues) {\r\n this.endValue = trackClickPercentage;\r\n }\r\n };\r\n\r\n const _setStartValue = () => {\r\n const _startValueUserValue = this.getValueFromMapByValue(this.startValue);\r\n if (this.needParseValues && _startValueUserValue !== trackClickToUserRange) {\r\n const _startValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n this.startValue = _startValue;\r\n } else if (!this.needParseValues) {\r\n this.startValue = trackClickPercentage;\r\n }\r\n };\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n const validStart = (this.needParseValues ? this.mapRangeValuesForSlider.get(start) : start) ?? 0;\r\n const validEnd = (this.needParseValues ? this.mapRangeValuesForSlider.get(end) : end) ?? 0;\r\n const _updateStart = () => {\r\n _setStartValue();\r\n this.setValue([trackClickPercentage, validEnd]);\r\n };\r\n\r\n const _updateEnd = () => {\r\n _setEndValue();\r\n this.setValue([validStart, trackClickPercentage]);\r\n };\r\n const clickPercentageBetweenRange = isInRange(_trackClickValid, start, end);\r\n if (_trackClickValid < start) {\r\n _updateStart();\r\n } else if (_trackClickValid > end) {\r\n _updateEnd();\r\n } else if (clickPercentageBetweenRange) {\r\n const middle = (start + end) / 2;\r\n const trackClickPercentageIsExactiddle = _trackClickValid === middle;\r\n if (trackClickPercentageIsExactiddle) {\r\n _updateStart();\r\n } else {\r\n const setStart = _trackClickValid < middle;\r\n const setEnd = _trackClickValid > middle;\r\n if (setStart) {\r\n _updateStart();\r\n } else if (setEnd) {\r\n _updateEnd();\r\n }\r\n }\r\n }\r\n } else {\r\n this.setValue(trackClickPercentage);\r\n _setEndValue();\r\n }\r\n\r\n this.setProgress();\r\n }\r\n\r\n public onProgressMouseDown(evt: MouseEvent) {\r\n if (!this.multiple || this.disabled) {\r\n return;\r\n }\r\n this.progressBarEventPositionStart = this.getPercentageByEvent(evt);\r\n this.startValueBeforeProgressBarEvent = this.startValue;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = this.endValue - this.startValue;\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n this.totalRangeBeforeProgressBarEvent = end - start;\r\n }\r\n document.addEventListener('mousemove', this.handleProgressBarMove);\r\n document.addEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n }\r\n\r\n public onMouseDown(_: MouseEvent, thumb: 'start' | 'end'): void {\r\n if (this.disabled) return;\r\n\r\n this.draggingThumb = thumb;\r\n this.activeMouseDown = true;\r\n document.addEventListener('mousemove', this.onThumbMove);\r\n document.addEventListener('mouseup', this.onMouseUp);\r\n }\r\n\r\n private setRangeValues(): void {\r\n const _setStartAndEndValue = (startValue: number, endValue: number) => {\r\n this.startValue = this.getClosestValueFromMapSlider(startValue);\r\n this.endValue = this.getClosestValueFromMapSlider(endValue);\r\n };\r\n if (this.value === null || this.value === undefined) {\r\n return;\r\n }\r\n if (Array.isArray(this.value) && !this.multiple) {\r\n throw new Error('You must use \"multiple\" with value as array');\r\n }\r\n if (this.multiple && Array.isArray(this.value)) {\r\n this.startValue = this.value[0];\r\n this.endValue = this.value[1];\r\n } else if (!this.multiple) {\r\n this.startValue = this.value as number;\r\n this.endValue = this.value as number;\r\n }\r\n _setStartAndEndValue(this.startValue, this.endValue);\r\n if (this.multiple) {\r\n let [_startValue, _endValue] = this.value as [number, number];\r\n const difference = getDifference(_endValue, _startValue);\r\n const endValueIsGreatherThanMax = _endValue > this.max;\r\n const startValueIsLessThanMin = _startValue < this.min;\r\n const needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;\r\n if (endValueIsGreatherThanMax) {\r\n _endValue = this.max;\r\n _startValue = _endValue - difference;\r\n } else if (startValueIsLessThanMin) {\r\n _startValue = this.min;\r\n _endValue = _startValue + difference;\r\n }\r\n if (needUpdateValues) {\r\n _setStartAndEndValue(_startValue, _endValue);\r\n this.setValue([this.startValue, this.endValue]);\r\n }\r\n } else {\r\n let _value = this.value as number;\r\n const valueGreatherThanMax = _value > this.max;\r\n const valueLessThanMin = _value < this.min;\r\n const needUpdateValue = valueGreatherThanMax || valueLessThanMin;\r\n if (valueGreatherThanMax) {\r\n _value = this.max;\r\n } else if (valueLessThanMin) {\r\n _value = this.min;\r\n }\r\n if (needUpdateValue) {\r\n this.setValue(_value, false);\r\n }\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private onThumbMove = (event: MouseEvent) => {\r\n if (this.movingProgressBar || !this.draggingThumb) return;\r\n\r\n let newPosition = this.getPercentageByEvent(event);\r\n if (\r\n (this.multiple && this.draggingThumb === 'start' && newPosition > this.endValue) ||\r\n (this.multiple && this.draggingThumb === 'end' && newPosition < this.startValue)\r\n ) {\r\n return;\r\n }\r\n\r\n const positionInUserRange = this.getValueFromMapByValue(newPosition);\r\n\r\n if (this.multiple) {\r\n if (this.draggingThumb === 'start') {\r\n this.startValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n } else if (this.draggingThumb === 'end') {\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n }\r\n\r\n this.setValue([this.startValue, this.endValue]);\r\n\r\n const [start, end] = this.value as [number, number];\r\n\r\n if (start === end && this.draggingThumb === 'start') {\r\n this.startValue = this.endValue;\r\n } else if (start === end && this.draggingThumb === 'end') {\r\n this.endValue = this.startValue;\r\n }\r\n } else {\r\n const currentValue = this.value as number;\r\n const _value = this.needParseValues ? positionInUserRange : newPosition;\r\n const isAtSameValue = this.needParseValues ? positionInUserRange === this.value : false;\r\n const hasStep = this.step !== 0;\r\n const newValueIsValidByStep = hasStep\r\n ? currentValue + this.step === _value || currentValue - this.step === _value\r\n : false;\r\n if (isAtSameValue && !newValueIsValidByStep) {\r\n return;\r\n }\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n this.startValue = this.endValue;\r\n this.setValue(this.endValue);\r\n }\r\n this.setProgress();\r\n };\r\n\r\n private onMouseUp = () => {\r\n this.draggingThumb = null;\r\n document.removeEventListener('mousemove', this.onThumbMove);\r\n document.removeEventListener('mouseup', this.onMouseUp);\r\n setTimeout(() => {\r\n this.activeMouseDown = false;\r\n }, 150);\r\n };\r\n\r\n private handleProgressBarMove = (event: MouseEvent) => {\r\n this.movingProgressBar = true;\r\n const newCenter = this.getPercentageByEvent(event);\r\n const startPositionBeforeEvent = this.progressBarEventPositionStart;\r\n const startValueBeforeEvent = this.startValueBeforeProgressBarEvent;\r\n const range = this.rangeBetweenElementsBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEvent,\r\n startValueBeforeEvent + range,\r\n startPositionBeforeEvent,\r\n newCenter,\r\n );\r\n if (newStart < this.MIN_RANGE_VALUE || newEnd > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n if (this.needParseValues) {\r\n const startValueBeforeEventUserRange = this.getValueFromMapByValue(startValueBeforeEvent);\r\n const startPositionBeforeEventUserRange = this.getValueFromMapByValue(startPositionBeforeEvent);\r\n const centerUserRange = this.getValueFromMapByValue(newCenter);\r\n const valueRange = this.totalRangeBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEventUserRange,\r\n startValueBeforeEventUserRange + valueRange,\r\n startPositionBeforeEventUserRange,\r\n centerUserRange,\r\n );\r\n if (newStart < this.min || newEnd > this.max) {\r\n return;\r\n }\r\n this.startValue = this.mapRangeValuesForSlider.get(newStart) ?? 0;\r\n this.endValue = this.mapRangeValuesForSlider.get(newEnd) ?? 0;\r\n } else {\r\n this.startValue = newStart;\r\n this.endValue = newEnd;\r\n }\r\n this.setValue([this.startValue, this.endValue]);\r\n this.setProgress();\r\n };\r\n\r\n private handleProgressBarMoveEnd = () => {\r\n this.progressBarEventPositionStart = -1;\r\n this.startValueBeforeProgressBarEvent = -1;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n this.totalRangeBeforeProgressBarEvent = -1;\r\n document.removeEventListener('mousemove', this.handleProgressBarMove);\r\n document.removeEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n setTimeout(() => {\r\n this.movingProgressBar = false;\r\n }, 150);\r\n };\r\n\r\n private setProgress(): void {\r\n if (this.multiple) {\r\n this.progressLeft = this.startValue;\r\n this.progressWidth = `calc(${this.endValue - this.startValue}% + 10px)`;\r\n } else {\r\n this.progressLeft = 0;\r\n this.progressWidth = `calc(${this.endValue}% + 10px)`;\r\n }\r\n }\r\n\r\n /**\r\n * Get the percentage of a mouse event from the track's left edge\r\n * @param mouseEvent mouse event\r\n * @returns percentage from the left edge\r\n */\r\n private getPercentageByEvent(mouseEvent: MouseEvent | PointerEvent): number {\r\n const trackRect = this.track.nativeElement.getBoundingClientRect();\r\n let newLeft = Math.round(((mouseEvent.clientX - trackRect.left) / trackRect.width) * this.MAX_RANGE_VALUE);\r\n newLeft = Math.max(0, Math.min(newLeft, this.MAX_RANGE_VALUE));\r\n return newLeft;\r\n }\r\n\r\n private setValue(value: number | [number, number], parse = true) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.needParseValues && parse) {\r\n if (Array.isArray(value)) {\r\n value = value.map((x) => this.getValueFromMapByValue(x)) as [number, number];\r\n } else {\r\n value = this.getValueFromMapByValue(value);\r\n }\r\n }\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n\r\n private setUserRangeMapValues() {\r\n const start = this.min;\r\n const end = this.max;\r\n if (start > end) {\r\n throw new Error('Max value must be greater than min value');\r\n }\r\n this.mapRangeValuesForSlider.clear();\r\n const range = end - start;\r\n const decimalPlaces = 2;\r\n const stepCount = Math.floor(range / this.step);\r\n const values: number[] = [];\r\n for (let value = start; value <= end; value += this.step) {\r\n values.push(value);\r\n }\r\n if (values[values.length - 1] !== end) {\r\n values.push(end);\r\n }\r\n const mappedValues = values.map((value) => {\r\n let mapped = ((value - start) / range) * this.MAX_RANGE_VALUE;\r\n return parseFloat(mapped.toFixed(decimalPlaces));\r\n });\r\n mappedValues[0] = 0;\r\n mappedValues[mappedValues.length - 1] = this.MAX_RANGE_VALUE;\r\n const error = this.MAX_RANGE_VALUE - mappedValues[mappedValues.length - 1];\r\n const errorPerStep = error / stepCount;\r\n for (let i = 1; i < mappedValues.length - 1; i++) {\r\n mappedValues[i] += errorPerStep;\r\n mappedValues[i] = parseFloat(mappedValues[i].toFixed(decimalPlaces));\r\n }\r\n values.forEach((value, index) => {\r\n this.mapRangeValuesForSlider.set(value, mappedValues[index]);\r\n });\r\n }\r\n\r\n /**\r\n * Returns the user value from the given slider value by using the map of range values.\r\n * @example\r\n * If the map is 0: { 0 }, 1: { 10 }, 2: { 30 }, 3: { 40 }, 4: { 50 }\r\n * and the sliderValue is 37, the function returns 3\r\n * or the slider value is 40, the function returns 4\r\n * @param sliderValue the value of the slider (values only between range MIN and MAX)\r\n * @returns the user value from the given slider value\r\n */\r\n private getValueFromMapByValue(sliderValue: number) {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n const exactValue = mapToArray.find((x) => x.mapped == sliderValue);\r\n const closest = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.mapped - sliderValue) < Math.abs(prev.mapped - sliderValue) ? curr : prev,\r\n );\r\n return exactValue ? exactValue.value : closest.value;\r\n }\r\n\r\n /**\r\n * Retrieves the key from the map that is closest to the given slider value.\r\n * @param userValue - The value to find the closest key for. (values only between 0 - 100)\r\n * @returns The key that corresponds to the closest mapped value.\r\n */\r\n private getClosestValueFromMapSlider(userValue: number): number {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n if (userValue >= this.max) {\r\n return mapToArray[mapToArray.length - 1].mapped;\r\n } else if (userValue <= this.min) {\r\n return mapToArray[0].mapped;\r\n }\r\n const exactValue = mapToArray.find((x) => x.value == userValue);\r\n const closestValue = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.value - userValue) < Math.abs(prev.value - userValue) ? curr : prev,\r\n );\r\n const item = exactValue || closestValue;\r\n const isFirstItem = mapToArray[0] === item;\r\n const isLastItem = mapToArray[mapToArray.length - 1] === item;\r\n if (isFirstItem && userValue > this.min) {\r\n return getMidpoint(item.mapped, mapToArray[1].mapped);\r\n } else if (isLastItem && userValue < this.max) {\r\n return getMidpoint(item.mapped, mapToArray[mapToArray.length - 2].mapped);\r\n } else {\r\n return item.mapped;\r\n }\r\n }\r\n\r\n private handleArrowKeyLeft() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(false);\r\n } else {\r\n this._incrementOrDecrementEndValue(false);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private handleArrowKeyRight() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(true);\r\n } else {\r\n this._incrementOrDecrementEndValue(true);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private _incrementOrDecrementStartAndEndValue(increment: boolean) {\r\n let [start, end] = this.value as [number, number];\r\n const difference = getDifference(end, start);\r\n if (increment) {\r\n start += this.step;\r\n end += this.step;\r\n } else {\r\n start -= this.step;\r\n end -= this.step;\r\n }\r\n const startLessThanMin = start < this.min;\r\n const endGreaterThanMax = end > this.max;\r\n if (startLessThanMin || endGreaterThanMax) {\r\n if (startLessThanMin) {\r\n start = this.min;\r\n end = start + difference;\r\n } else if (endGreaterThanMax) {\r\n end = this.max;\r\n start = end - difference;\r\n }\r\n }\r\n if (start < this.min || end > this.max) {\r\n return;\r\n }\r\n this.setValue([start, end], false);\r\n if (this.needParseValues) {\r\n start = this.getClosestValueFromMapSlider(start);\r\n end = this.getClosestValueFromMapSlider(end);\r\n }\r\n this.startValue = start;\r\n this.endValue = end;\r\n }\r\n\r\n private _incrementOrDecrementEndValue(increment: boolean) {\r\n let value = this.value as number;\r\n if (increment) {\r\n value += this.step;\r\n } else {\r\n value -= this.step;\r\n }\r\n let _newEndValue = value;\r\n if (this.needParseValues) {\r\n _newEndValue = this.getClosestValueFromMapSlider(_newEndValue);\r\n }\r\n if (_newEndValue < this.MIN_RANGE_VALUE || _newEndValue > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n this.endValue = _newEndValue;\r\n this.startValue = this.endValue;\r\n this.setValue(_newEndValue);\r\n }\r\n\r\n private get needParseValues() {\r\n return this.max !== this.MAX_RANGE_VALUE || this.min !== this.MIN_RANGE_VALUE;\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a new range based on the old range and the positions clicked and finalized.\r\n *\r\n * @param oldStart - The starting value of the old range.\r\n * @param oldEnd - The ending value of the old range.\r\n * @param clickedPosition - The position where the click occurred.\r\n * @param finalPosition - The position where the range should end.\r\n * @returns An object containing the new start and end values of the range.\r\n */\r\nconst calculateNewRange = (oldStart: number, oldEnd: number, clickedPosition: number, finalPosition: number) => {\r\n const range = oldEnd - oldStart;\r\n const newStart = finalPosition - (clickedPosition - oldStart);\r\n const newEnd = newStart + range;\r\n return { newStart, newEnd };\r\n};\r\n\r\nconst isInRange = (value: number, rangeStart: number, rangeEnd: number): boolean => {\r\n const [min, max] = rangeStart < rangeEnd ? [rangeStart, rangeEnd] : [rangeEnd, rangeStart];\r\n return value >= min && value <= max;\r\n};\r\n\r\nconst getMidpoint = (start: number, end: number) => {\r\n const midpoint = (start + end) / 2;\r\n return parseFloat(midpoint.toFixed(2));\r\n};\r\nconst getDifference = (end: number, start: number) => {\r\n return Math.abs(end - start);\r\n};\r\n","<div\r\n class=\"slider-container\"\r\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\r\n [tabindex]=\"disabled ? '-1' : tabindex\"\r\n (click)=\"onTrackClick($event)\"\r\n (focus)=\"onFocusIn()\"\r\n (blur)=\"onBlur()\"\r\n>\r\n <div\r\n #track\r\n class=\"slider-track\"\r\n [ngClass]=\"{\r\n 'slider-track--hidden-thumb': hiddenThumb,\r\n 'slider-track--moving-multiple-thumbs': movingProgressBar,\r\n }\"\r\n >\r\n <div\r\n class=\"slider-progress\"\r\n (mousedown)=\"onProgressMouseDown($event)\"\r\n [style.left.%]=\"progressLeft\"\r\n [style.width]=\"progressWidth\"\r\n ></div>\r\n @if (multiple) {\r\n <div\r\n class=\"slider-thumb\"\r\n [sTooltip]=\"tooltipStartText\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'start')\"\r\n [style.left.%]=\"startValue\"\r\n ></div>\r\n }\r\n <div\r\n [sTooltip]=\"tooltipEndText\"\r\n class=\"slider-thumb\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'end')\"\r\n [style.left.%]=\"endValue\"\r\n ></div>\r\n </div>\r\n <div class=\"footer\">\r\n <span>{{ minValueLabel || min }}</span>\r\n <span>{{ maxValueLabel || max }}</span>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n imports: [SliderComponent],\r\n exports: [SliderComponent],\r\n})\r\nexport class SliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, NgZone, Injectable, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, NgZone, Injectable, input, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
|
|
3
|
+
import { __decorate } from 'tslib';
|
|
3
4
|
import { TranslateService, TranslatePipe } from '@ngx-translate/core';
|
|
4
5
|
import { Subject } from 'rxjs';
|
|
5
6
|
import { takeUntil } from 'rxjs/operators';
|
|
@@ -218,6 +219,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
218
219
|
}]
|
|
219
220
|
}], ctorParameters: () => [] });
|
|
220
221
|
|
|
222
|
+
function SkipIf(...propNames) {
|
|
223
|
+
return function (_target, _propertyKey, descriptor) {
|
|
224
|
+
const original = descriptor.value;
|
|
225
|
+
if (original) {
|
|
226
|
+
descriptor.value = function (...args) {
|
|
227
|
+
const shouldSkip = propNames.some((propName) => {
|
|
228
|
+
const targetProp = this[propName];
|
|
229
|
+
return typeof targetProp === 'function'
|
|
230
|
+
? Boolean(targetProp())
|
|
231
|
+
: Boolean(targetProp);
|
|
232
|
+
});
|
|
233
|
+
if (shouldSkip) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
return original.apply(this, args);
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
return descriptor;
|
|
240
|
+
};
|
|
241
|
+
}
|
|
221
242
|
/**
|
|
222
243
|
* @description Componente de reconhecimento de voz que integra a Web Speech API para
|
|
223
244
|
* transcrever a fala do usuário em texto, inserída diretamente em um `<textarea>` fornecido.
|
|
@@ -243,6 +264,8 @@ class SpeechRecognitionComponent {
|
|
|
243
264
|
keepContext = false;
|
|
244
265
|
/** @description Placeholder exibido no textarea durante o reconhecimento de voz. @default '' */
|
|
245
266
|
speechRecognitionPlaceholder = '';
|
|
267
|
+
/** @description Classe do ícone do botão de mais opções. @default 'far fa-ellipsis-h' */
|
|
268
|
+
moreOptionsIconClass = 'far fa-ellipsis-h';
|
|
246
269
|
_recognizedText = '';
|
|
247
270
|
originalTextAreaElementText = '';
|
|
248
271
|
isDoneTextToSpeech = false;
|
|
@@ -253,6 +276,7 @@ class SpeechRecognitionComponent {
|
|
|
253
276
|
event.preventDefault();
|
|
254
277
|
}
|
|
255
278
|
};
|
|
279
|
+
disabledSpeechRecognition = input(false);
|
|
256
280
|
disabled = false;
|
|
257
281
|
isListeningUserVoice = false;
|
|
258
282
|
voiceSpeed = 1;
|
|
@@ -284,9 +308,6 @@ class SpeechRecognitionComponent {
|
|
|
284
308
|
});
|
|
285
309
|
}
|
|
286
310
|
onListen() {
|
|
287
|
-
if (this.isDisabledMicrophone || this.isListening) {
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
311
|
this.disabled = true;
|
|
291
312
|
this.canRenderMicrophone = false;
|
|
292
313
|
this.canRenderListeningText = true;
|
|
@@ -428,11 +449,38 @@ class SpeechRecognitionComponent {
|
|
|
428
449
|
return this.textAreaElement.value;
|
|
429
450
|
}
|
|
430
451
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
431
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpeechRecognitionComponent, isStandalone: true, selector: "s-speech-recognition", inputs: { textAreaElement: "textAreaElement", keepContext: "keepContext", speechRecognitionPlaceholder: "speechRecognitionPlaceholder" }, outputs: { recognizedText: "recognizedText" }, ngImport: i0, template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"
|
|
452
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpeechRecognitionComponent, isStandalone: true, selector: "s-speech-recognition", inputs: { textAreaElement: { classPropertyName: "textAreaElement", publicName: "textAreaElement", isSignal: false, isRequired: true, transformFunction: null }, keepContext: { classPropertyName: "keepContext", publicName: "keepContext", isSignal: false, isRequired: false, transformFunction: null }, speechRecognitionPlaceholder: { classPropertyName: "speechRecognitionPlaceholder", publicName: "speechRecognitionPlaceholder", isSignal: false, isRequired: false, transformFunction: null }, moreOptionsIconClass: { classPropertyName: "moreOptionsIconClass", publicName: "moreOptionsIconClass", isSignal: false, isRequired: false, transformFunction: null }, disabledSpeechRecognition: { classPropertyName: "disabledSpeechRecognition", publicName: "disabledSpeechRecognition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { recognizedText: "recognizedText" }, ngImport: i0, template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i [class]=\"moreOptionsIconClass\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
432
453
|
}
|
|
454
|
+
__decorate([
|
|
455
|
+
SkipIf('disabledSpeechRecognition', 'isDisabledMicrophone', 'isListening')
|
|
456
|
+
], SpeechRecognitionComponent.prototype, "onListen", null);
|
|
457
|
+
__decorate([
|
|
458
|
+
SkipIf('disabledSpeechRecognition')
|
|
459
|
+
], SpeechRecognitionComponent.prototype, "onOpenToolbar", null);
|
|
460
|
+
__decorate([
|
|
461
|
+
SkipIf('disabledSpeechRecognition')
|
|
462
|
+
], SpeechRecognitionComponent.prototype, "onCloseToolbar", null);
|
|
463
|
+
__decorate([
|
|
464
|
+
SkipIf('disabledSpeechRecognition')
|
|
465
|
+
], SpeechRecognitionComponent.prototype, "onDiscard", null);
|
|
466
|
+
__decorate([
|
|
467
|
+
SkipIf('disabledSpeechRecognition')
|
|
468
|
+
], SpeechRecognitionComponent.prototype, "onAprove", null);
|
|
469
|
+
__decorate([
|
|
470
|
+
SkipIf('disabledSpeechRecognition')
|
|
471
|
+
], SpeechRecognitionComponent.prototype, "toggleTextToSpeech", null);
|
|
472
|
+
__decorate([
|
|
473
|
+
SkipIf('disabledSpeechRecognition')
|
|
474
|
+
], SpeechRecognitionComponent.prototype, "restartTextToSpeech", null);
|
|
475
|
+
__decorate([
|
|
476
|
+
SkipIf('disabledSpeechRecognition')
|
|
477
|
+
], SpeechRecognitionComponent.prototype, "updateVoiceSpeed", null);
|
|
478
|
+
__decorate([
|
|
479
|
+
SkipIf('disabledSpeechRecognition')
|
|
480
|
+
], SpeechRecognitionComponent.prototype, "stopListening", null);
|
|
433
481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionComponent, decorators: [{
|
|
434
482
|
type: Component,
|
|
435
|
-
args: [{ selector: 's-speech-recognition', standalone: true, imports: [TranslatePipe], template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"
|
|
483
|
+
args: [{ selector: 's-speech-recognition', standalone: true, imports: [TranslatePipe], template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i [class]=\"moreOptionsIconClass\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"] }]
|
|
436
484
|
}], propDecorators: { textAreaElement: [{
|
|
437
485
|
type: Input,
|
|
438
486
|
args: [{ required: true }]
|
|
@@ -440,9 +488,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
440
488
|
type: Input
|
|
441
489
|
}], speechRecognitionPlaceholder: [{
|
|
442
490
|
type: Input
|
|
491
|
+
}], moreOptionsIconClass: [{
|
|
492
|
+
type: Input
|
|
443
493
|
}], recognizedText: [{
|
|
444
494
|
type: Output
|
|
445
|
-
}] } });
|
|
495
|
+
}], onListen: [], onOpenToolbar: [], onCloseToolbar: [], onDiscard: [], onAprove: [], toggleTextToSpeech: [], restartTextToSpeech: [], updateVoiceSpeed: [], stopListening: [] } });
|
|
446
496
|
|
|
447
497
|
class SpeechRecognitionModule {
|
|
448
498
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|