All files / app/codeCharta/ui/slider slider.component.ts

85.71% Statements 12/14
75% Branches 3/4
66.66% Functions 2/3
84.61% Lines 11/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 358x 8x 8x 8x 8x                 8x         31x 31x                 10x 10x 7x        
import { Component, Input } from "@angular/core"
import { parseNumberInput } from "../../util/parseNumberInput"
import { MatLabel, MatFormField } from "@angular/material/form-field"
import { MatSlider, MatSliderThumb } from "@angular/material/slider"
import { MatInput } from "@angular/material/input"
 
@Component({
    selector: "cc-slider",
    templateUrl: "./slider.component.html",
    styleUrls: ["./slider.component.scss"],
    standalone: true,
    imports: [MatLabel, MatSlider, MatSliderThumb, MatFormField, MatInput]
})
export class SliderComponent {
    @Input() value?: number
    @Input() min: number
    @Input() max: number
    @Input() label: string
    @Input() step?: number = 1
    @Input() disabled?: boolean = false
    @Input() onChange: (number) => void
    handleSliderOnChange(value: number) {
        Iif (value !== this.value) {
            this.onChange(value)
        }
    }
 
    handleInputOnChange($event: Event) {
        const newValue = parseNumberInput($event, this.min, this.max)
        if (newValue !== this.value && !Number.isNaN(newValue)) {
            this.onChange(newValue)
        }
    }
}