ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 37.4 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-input-number.mjs","sources":["../../components/input-number/input-number.component.ts","../../components/input-number/input-number.module.ts","../../components/input-number/public-api.ts","../../components/input-number/ng-zorro-antd-input-number.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n numberAttribute,\n OnInit,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NzFormItemFeedbackIconComponent, NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport { NzSizeLDSType, NzStatus, NzValidateStatus, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';\nimport { getStatusClassNames, isNil, isNotNil } from 'ng-zorro-antd/core/util';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport {\n NzInputAddonAfterDirective,\n NzInputAddonBeforeDirective,\n NzInputPrefixDirective,\n NzInputSuffixDirective\n} from 'ng-zorro-antd/input';\nimport { NZ_SPACE_COMPACT_ITEM_TYPE, NZ_SPACE_COMPACT_SIZE, NzSpaceCompactItemDirective } from 'ng-zorro-antd/space';\n\n@Component({\n selector: 'nz-input-number',\n exportAs: 'nzInputNumber',\n imports: [NzIconModule, NzFormItemFeedbackIconComponent, NgTemplateOutlet],\n template: `\n @if (hasAddon()) {\n <ng-template [ngTemplateOutlet]=\"inputNumberWithAddonInner\" />\n } @else if (hasAffix()) {\n <ng-template [ngTemplateOutlet]=\"inputNumberWithAffixInner\" />\n } @else {\n <ng-template [ngTemplateOutlet]=\"inputNumberInner\" />\n }\n\n <ng-template #inputNumberWithAddonInner>\n <div class=\"ant-input-number-wrapper ant-input-number-group\">\n @if (addonBefore()) {\n <div class=\"ant-input-number-group-addon\">\n <ng-content select=\"[nzInputAddonBefore]\"></ng-content>\n </div>\n }\n\n @if (hasAffix()) {\n <ng-template [ngTemplateOutlet]=\"inputNumberWithAffix\" />\n } @else {\n <ng-template [ngTemplateOutlet]=\"inputNumber\" />\n }\n\n @if (addonAfter()) {\n <div class=\"ant-input-number-group-addon\">\n <ng-content select=\"[nzInputAddonAfter]\"></ng-content>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #inputNumberWithAffix>\n <div [class]=\"affixWrapperClass()\">\n <ng-template [ngTemplateOutlet]=\"inputNumberWithAffixInner\" />\n </div>\n </ng-template>\n\n <ng-template #inputNumberWithAffixInner>\n @if (prefix()) {\n <span class=\"ant-input-number-prefix\">\n <ng-content select=\"[nzInputPrefix]\"></ng-content>\n </span>\n }\n <ng-template [ngTemplateOutlet]=\"inputNumber\" />\n @if (suffix() || hasFeedback()) {\n <span class=\"ant-input-number-suffix\">\n <ng-content select=\"[nzInputSuffix]\"></ng-content>\n @if (hasFeedback() && finalStatus()) {\n <nz-form-item-feedback-icon [status]=\"finalStatus()\" />\n }\n </span>\n }\n </ng-template>\n\n <ng-template #inputNumber>\n <div #inputNumberHost [class]=\"inputNumberClass()\">\n <ng-template [ngTemplateOutlet]=\"inputNumberInner\" />\n </div>\n </ng-template>\n\n <ng-template #inputNumberInner>\n @if (nzControls()) {\n <div #handlers class=\"ant-input-number-handler-wrap\" (mouseup)=\"stopAutoStep()\" (mouseleave)=\"stopAutoStep()\">\n <span\n role=\"button\"\n unselectable=\"on\"\n class=\"ant-input-number-handler ant-input-number-handler-up\"\n [class.ant-input-number-handler-up-disabled]=\"upDisabled()\"\n [attr.aria-disabled]=\"upDisabled()\"\n (mousedown)=\"onStepMouseDown($event, true)\"\n >\n <ng-content select=\"[nzInputNumberUpIcon]\">\n <nz-icon nzType=\"up\" class=\"ant-input-number-handler-up-inner\" />\n </ng-content>\n </span>\n <span\n role=\"button\"\n unselectable=\"on\"\n class=\"ant-input-number-handler ant-input-number-handler-down\"\n [class.ant-input-number-handler-down-disabled]=\"downDisabled()\"\n [attr.aria-disabled]=\"downDisabled()\"\n (mousedown)=\"onStepMouseDown($event, false)\"\n >\n <ng-content select=\"[nzInputNumberDownIcon]\">\n <nz-icon nzType=\"down\" class=\"ant-input-number-handler-down-inner\" />\n </ng-content>\n </span>\n </div>\n }\n\n <div class=\"ant-input-number-input-wrap\">\n <input\n #input\n autocomplete=\"off\"\n role=\"spinbutton\"\n class=\"ant-input-number-input\"\n [attr.aria-valuemin]=\"nzMin()\"\n [attr.aria-valuemax]=\"nzMax()\"\n [attr.id]=\"nzId()\"\n [attr.step]=\"nzStep()\"\n [attr.value]=\"displayValue()\"\n [value]=\"displayValue()\"\n [placeholder]=\"nzPlaceHolder() ?? ''\"\n [disabled]=\"finalDisabled()\"\n [readOnly]=\"nzReadOnly()\"\n (input)=\"onInput(input.value)\"\n />\n </div>\n </ng-template>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzInputNumberComponent),\n multi: true\n },\n { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'input-number' }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'class()',\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [NzSpaceCompactItemDirective]\n})\nexport class NzInputNumberComponent implements OnInit, ControlValueAccessor {\n readonly nzId = input<string | null>(null);\n readonly nzSize = input<NzSizeLDSType>('default');\n readonly nzPlaceHolder = input<string | null>(null);\n readonly nzStatus = input<NzStatus>('');\n readonly nzStep = input(1, { transform: numberAttribute });\n readonly nzMin = input(Number.MIN_SAFE_INTEGER, { transform: numberAttribute });\n readonly nzMax = input(Number.MAX_SAFE_INTEGER, { transform: numberAttribute });\n readonly nzPrecision = input<number | null>(null);\n readonly nzParser = input<((value: string) => number) | null>();\n readonly nzFormatter = input<((value: number) => string) | null>();\n readonly nzDisabled = input(false, { transform: booleanAttribute });\n readonly nzReadOnly = input(false, { transform: booleanAttribute });\n readonly nzAutoFocus = input(false, { transform: booleanAttribute });\n readonly nzBordered = input(true, { transform: booleanAttribute });\n readonly nzKeyboard = input(true, { transform: booleanAttribute });\n readonly nzControls = input(true, { transform: booleanAttribute });\n\n readonly nzBlur = output<void>();\n readonly nzFocus = output<void>();\n\n readonly nzOnStep = output<{ value: number; offset: number; type: 'up' | 'down' }>();\n\n private onChange: OnChangeType = () => {};\n private onTouched: OnTouchedType = () => {};\n private isDisabledFirstChange = true;\n private compactSize = inject(NZ_SPACE_COMPACT_SIZE, { optional: true });\n private inputRef = viewChild.required<ElementRef<HTMLInputElement>>('input');\n private hostRef = viewChild<ElementRef<HTMLDivElement>>('inputNumberHost');\n private elementRef = inject(ElementRef);\n private injector = inject(Injector);\n private focusMonitor = inject(FocusMonitor);\n private directionality = inject(Directionality);\n private nzFormStatusService = inject(NzFormStatusService, { optional: true });\n private autoStepTimer: ReturnType<typeof setTimeout> | null = null;\n private defaultFormater = (value: number): string => {\n const precision = this.nzPrecision();\n if (isNotNil(precision)) {\n return value.toFixed(precision);\n }\n return value.toString();\n };\n\n protected value = signal<number | null>(null);\n protected displayValue = signal('');\n\n protected dir = toSignal(this.directionality.change, { initialValue: this.directionality.value });\n protected focused = signal(false);\n protected hasFeedback = signal(false);\n protected finalStatus = linkedSignal<NzValidateStatus>(() => this.nzStatus());\n protected finalDisabled = linkedSignal(() => this.nzDisabled());\n\n protected prefix = contentChild(NzInputPrefixDirective);\n protected suffix = contentChild(NzInputSuffixDirective);\n protected addonBefore = contentChild(NzInputAddonBeforeDirective);\n protected addonAfter = contentChild(NzInputAddonAfterDirective);\n protected hasAffix = computed(() => !!this.prefix() || !!this.suffix() || this.hasFeedback());\n protected hasAddon = computed(() => !!this.addonBefore() || !!this.addonAfter());\n\n protected class = computed(() => {\n if (this.hasAddon()) {\n return this.groupWrapperClass();\n }\n if (this.hasAffix()) {\n return this.affixWrapperClass();\n }\n return this.inputNumberClass();\n });\n protected inputNumberClass = computed(() => {\n return {\n 'ant-input-number': true,\n 'ant-input-number-lg': this.finalSize() === 'large',\n 'ant-input-number-sm': this.finalSize() === 'small',\n 'ant-input-number-disabled': this.finalDisabled(),\n 'ant-input-number-readonly': this.nzReadOnly(),\n 'ant-input-number-borderless': !this.nzBordered(),\n 'ant-input-number-focused': this.focused(),\n 'ant-input-number-rtl': this.dir() === 'rtl',\n 'ant-input-number-in-form-item': !!this.nzFormStatusService,\n 'ant-input-number-out-of-range': this.value() !== null && !isInRange(this.value()!, this.nzMin(), this.nzMax()),\n ...getStatusClassNames('ant-input-number', this.finalStatus(), this.hasFeedback())\n };\n });\n protected affixWrapperClass = computed(() => {\n return {\n 'ant-input-number-affix-wrapper': true,\n 'ant-input-number-affix-wrapper-disabled': this.finalDisabled(),\n 'ant-input-number-affix-wrapper-readonly': this.nzReadOnly(),\n 'ant-input-number-affix-wrapper-borderless': !this.nzBordered(),\n 'ant-input-number-affix-wrapper-focused': this.focused(),\n 'ant-input-number-affix-wrapper-rtl': this.dir() === 'rtl',\n ...getStatusClassNames('ant-input-number-affix-wrapper', this.finalStatus(), this.hasFeedback())\n };\n });\n protected groupWrapperClass = computed(() => {\n return {\n 'ant-input-number-group-wrapper': true,\n 'ant-input-number-group-wrapper-rtl': this.dir() === 'rtl',\n ...getStatusClassNames('ant-input-number-group-wrapper', this.finalStatus(), this.hasFeedback())\n };\n });\n\n protected finalSize = computed(() => {\n if (this.compactSize) {\n return this.compactSize();\n }\n return this.nzSize();\n });\n\n protected upDisabled = computed(() => {\n return !isNil(this.value()) && this.value()! >= this.nzMax();\n });\n protected downDisabled = computed(() => {\n return !isNil(this.value()) && this.value()! <= this.nzMin();\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const hostRef = this.hostRef();\n const element = hostRef ? hostRef : this.elementRef;\n\n this.focusMonitor\n .monitor(element, true)\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(origin => {\n this.focused.set(!!origin);\n\n if (origin) {\n this.nzFocus.emit();\n } else {\n this.fixValue();\n this.onTouched();\n this.nzBlur.emit();\n }\n });\n\n destroyRef.onDestroy(() => {\n this.focusMonitor.stopMonitoring(element);\n });\n });\n\n this.nzFormStatusService?.formStatusChanges.pipe(takeUntilDestroyed()).subscribe(({ status, hasFeedback }) => {\n this.finalStatus.set(status);\n this.hasFeedback.set(hasFeedback);\n });\n }\n\n ngOnInit(): void {\n if (this.nzAutoFocus()) {\n afterNextRender(() => this.focus(), { injector: this.injector });\n }\n }\n\n writeValue(value: number | null): void {\n untracked(() => {\n this.value.set(value);\n this.setValue(value);\n });\n }\n\n registerOnChange(fn: OnChangeType): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: OnTouchedType): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n untracked(() => {\n this.finalDisabled.set((this.isDisabledFirstChange && this.nzDisabled()) || disabled);\n });\n this.isDisabledFirstChange = false;\n }\n\n focus(): void {\n this.inputRef().nativeElement.focus();\n }\n\n blur(): void {\n this.inputRef().nativeElement.blur();\n }\n\n private step(event: MouseEvent | KeyboardEvent, up: boolean): void {\n // Ignore step since out of range\n if ((up && this.upDisabled()) || (!up && this.downDisabled())) {\n return;\n }\n\n // When hold the shift key, the step is 10 times\n let step = event.shiftKey ? this.nzStep() * 10 : this.nzStep();\n if (!up) {\n step = -step;\n }\n\n const places = getDecimalPlaces(step);\n const multiple = 10 ** places;\n const nextValue = getRangeValue(\n // Convert floating point numbers to integers to avoid floating point math errors\n (Math.round((this.value() || 0) * multiple) + Math.round(step * multiple)) / multiple,\n this.nzMin(),\n this.nzMax(),\n this.nzPrecision()\n );\n this.setValue(nextValue);\n\n this.nzOnStep.emit({\n type: up ? 'up' : 'down',\n value: this.value()!,\n offset: this.nzStep()\n });\n\n this.focus();\n }\n\n private setValue(value: number | null): void {\n const formatter = this.nzFormatter() ?? this.defaultFormater;\n const precision = this.nzPrecision();\n\n if (isNotNil(precision)) {\n value &&= +value.toFixed(precision);\n }\n\n const formatedValue = value === null ? '' : formatter(value);\n this.displayValue.set(formatedValue);\n this.updateValue(value);\n }\n\n private setValueByTyping(value: string): void {\n if (value === '') {\n this.displayValue.set('');\n this.updateValue(null);\n return;\n }\n\n const parser = this.nzParser() ?? defaultParser;\n const parsedValue = parser(value);\n\n if (isNotCompleteNumber(value) || Number.isNaN(parsedValue)) {\n this.displayValue.set(value);\n return;\n }\n\n const formattedValue = this.nzFormatter()?.(parsedValue) ?? parsedValue.toString();\n this.displayValue.set(formattedValue);\n\n if (!isInRange(parsedValue, this.nzMin(), this.nzMax())) {\n return;\n }\n\n this.updateValue(parsedValue);\n }\n\n private updateValue(value: number | null): void {\n if (this.value() !== value) {\n this.value.set(value);\n this.onChange(value);\n }\n }\n\n private fixValue(): void {\n const displayValue = this.displayValue();\n\n if (displayValue === '') {\n return;\n }\n\n const parser = this.nzParser() ?? defaultParser;\n let fixedValue: number | null = parser(displayValue);\n\n // If parsing fails, revert to the previous value\n if (Number.isNaN(fixedValue)) {\n fixedValue = this.value();\n } else {\n const precision = this.nzPrecision();\n // fix precision\n if (isNotNil(precision) && getDecimalPlaces(fixedValue) !== precision) {\n fixedValue = +fixedValue.toFixed(precision);\n }\n\n // fix range\n if (!isInRange(fixedValue, this.nzMin(), this.nzMax())) {\n fixedValue = getRangeValue(fixedValue, this.nzMin(), this.nzMax(), precision);\n }\n }\n\n this.setValue(fixedValue);\n }\n\n protected stopAutoStep(): void {\n if (this.autoStepTimer !== null) {\n clearTimeout(this.autoStepTimer);\n this.autoStepTimer = null;\n }\n }\n\n protected onStepMouseDown(event: MouseEvent | KeyboardEvent, up: boolean): void {\n event.preventDefault();\n this.stopAutoStep();\n\n this.step(event, up);\n\n // Loop step for interval\n const loopStep: () => void = () => {\n this.step(event, up);\n this.autoStepTimer = setTimeout(loopStep, STEP_INTERVAL);\n };\n\n // First time press will wait some time to trigger loop step update\n this.autoStepTimer = setTimeout(loopStep, STEP_DELAY);\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case UP_ARROW:\n event.preventDefault();\n this.nzKeyboard() && this.step(event, true);\n break;\n case DOWN_ARROW:\n event.preventDefault();\n this.nzKeyboard() && this.step(event, false);\n break;\n case ENTER:\n this.fixValue();\n break;\n }\n }\n\n protected onInput(value: string): void {\n this.setValueByTyping(value);\n }\n}\n\n/**\n * When click and hold on a button - the speed of auto changing the value.\n */\nconst STEP_INTERVAL = 200;\n\n/**\n * When click and hold on a button - the delay before auto changing the value.\n */\nconst STEP_DELAY = 600;\n\nfunction defaultParser(value: string): number {\n return +value.trim().replace(/。/g, '.');\n}\n\nfunction isInRange(value: number, min: number, max: number): boolean {\n return value >= min && value <= max;\n}\n\n/**\n * if max > 0, round down with precision. Example: input= 3.5, max= 3.5, precision=0; output= 3\n * if max < 0, round up with precision. Example: input=-3.5, max=-3.5, precision=0; output=-4\n * if min > 0, round up with precision. Example: input= 3.5, min= 3.5, precision=0; output= 4\n * if min < 0, round down with precision. Example: input=-3.5, min=-3.5, precision=0; output=-3\n */\nfunction getRangeValue(value: number, min: number, max: number, precision: number | null = null): number {\n if (precision === null) {\n if (value < min) {\n return min;\n }\n\n if (value > max) {\n return max;\n }\n\n return value;\n }\n\n const fixedValue = +value.toFixed(precision);\n const multiple = Math.pow(10, precision);\n\n if (fixedValue < min) {\n return Math.ceil(min * multiple) / multiple;\n }\n\n if (fixedValue > max) {\n return Math.floor(max * multiple) / multiple;\n }\n\n return fixedValue;\n}\n\nfunction getDecimalPlaces(num: number): number {\n return num.toString().split('.')[1]?.length || 0;\n}\n\nfunction isNotCompleteNumber(value: string | number): boolean {\n return /[.。](\\d*0)?$/.test(value.toString());\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport {\n NzInputAddonAfterDirective,\n NzInputAddonBeforeDirective,\n NzInputPrefixDirective,\n NzInputSuffixDirective\n} from 'ng-zorro-antd/input';\n\nimport { NzInputNumberComponent } from './input-number.component';\n\n@NgModule({\n imports: [\n NzInputNumberComponent,\n NzInputAddonBeforeDirective,\n NzInputAddonAfterDirective,\n NzInputPrefixDirective,\n NzInputSuffixDirective\n ],\n exports: [\n NzInputNumberComponent,\n NzInputAddonBeforeDirective,\n NzInputAddonAfterDirective,\n NzInputPrefixDirective,\n NzInputSuffixDirective\n ]\n})\nexport class NzInputNumberModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './input-number.component';\nexport * from './input-number.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}