ngx-numeric-counter
Version:
Angular component for numeric input with increment and decrement buttons.
1 lines • 6.1 kB
Source Map (JSON)
{"version":3,"file":"ngx-numeric-counter.mjs","sources":["../../../projects/ngx-numeric-counter/src/lib/ngx-numeric-counter.component.ts","../../../projects/ngx-numeric-counter/src/lib/ngx-numeric-counter.component.html","../../../projects/ngx-numeric-counter/src/public-api.ts","../../../projects/ngx-numeric-counter/src/ngx-numeric-counter.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ngx-numeric-counter',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxNumericCounterComponent),\n multi: true,\n },\n ],\n templateUrl: 'ngx-numeric-counter.component.html',\n styleUrl: 'ngx-numeric-counter.component.scss',\n})\nexport class NgxNumericCounterComponent {\n @Input() min = Number.NEGATIVE_INFINITY;\n @Input() max = Number.POSITIVE_INFINITY;\n @Input() step = 1;\n @Input() disabled = false;\n @Input() buttonClass = '';\n @Input() inputClass = '';\n @Input() containerClass = '';\n\n value = 0;\n\n onChange = (value: number) => {};\n onTouched = () => {};\n\n writeValue(value: number): void {\n this.value = value ?? 0;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n increment() {\n if (this.disabled) return;\n const newValue = this.value + this.step;\n if (newValue <= this.max) {\n this.value = newValue;\n this.onChange(this.value);\n this.onTouched();\n }\n }\n\n decrement() {\n if (this.disabled) return;\n const newValue = this.value - this.step;\n if (newValue >= this.min) {\n this.value = newValue;\n this.onChange(this.value);\n this.onTouched();\n }\n }\n\n onInputChange(event: any) {\n const val = +event.target.value;\n if (!isNaN(val) && val >= this.min && val <= this.max) {\n this.value = val;\n this.onChange(this.value);\n } else if (event.target.value === '') {\n this.value = 0;\n this.onChange(this.value);\n }\n }\n}\n","<div class=\"counter-container\" [ngClass]=\"containerClass\">\n <button\n (click)=\"decrement()\"\n [disabled]=\"disabled || value <= min\"\n [ngClass]=\"buttonClass\"\n >\n -\n </button>\n\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInputChange($event)\"\n [disabled]=\"disabled\"\n [ngClass]=\"inputClass\"\n />\n\n <button\n (click)=\"increment()\"\n [disabled]=\"disabled || value >= max\"\n [ngClass]=\"buttonClass\"\n >\n +\n </button>\n</div>\n","/*\n * Public API Surface of ngx-numeric-counter\n */\n\nexport * from './lib/ngx-numeric-counter.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}