ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 56.3 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-input.mjs","sources":["../../components/input/input-group-slot.component.ts","../../components/input/input.directive.ts","../../components/input/input-group.component.ts","../../components/input/autosize.directive.ts","../../components/input/textarea-count.component.ts","../../components/input/input.module.ts","../../components/input/public-api.ts","../../components/input/ng-zorro-antd-input.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 { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\n@Component({\n selector: '[nz-input-group-slot]',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (icon) {\n <span nz-icon [nzType]=\"icon\"></span>\n }\n <ng-container *nzStringTemplateOutlet=\"template\">{{ template }}</ng-container>\n <ng-content></ng-content>\n `,\n host: {\n '[class.ant-input-group-addon]': `type === 'addon'`,\n '[class.ant-input-prefix]': `type === 'prefix'`,\n '[class.ant-input-suffix]': `type === 'suffix'`\n },\n imports: [NzIconModule, NzOutletModule],\n standalone: true\n})\nexport class NzInputGroupSlotComponent {\n @Input() icon?: string | null = null;\n @Input() type: 'addon' | 'prefix' | 'suffix' | null = null;\n @Input() template?: string | TemplateRef<void> | null = null;\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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\n\nimport { NzFormItemFeedbackIconComponent, NzFormNoStatusService, NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport { NgClassInterface, NzSizeLDSType, NzStatus, NzValidateStatus } from 'ng-zorro-antd/core/types';\nimport { getStatusClassNames } from 'ng-zorro-antd/core/util';\n\n@Directive({\n selector: 'input[nz-input],textarea[nz-input]',\n exportAs: 'nzInput',\n host: {\n class: 'ant-input',\n '[class.ant-input-disabled]': 'disabled',\n '[class.ant-input-borderless]': 'nzBorderless',\n '[class.ant-input-lg]': `nzSize === 'large'`,\n '[class.ant-input-sm]': `nzSize === 'small'`,\n '[attr.disabled]': 'disabled || null',\n '[class.ant-input-rtl]': `dir=== 'rtl'`,\n '[class.ant-input-stepperless]': `nzStepperless`\n },\n standalone: true\n})\nexport class NzInputDirective implements OnChanges, OnInit, OnDestroy {\n @Input({ transform: booleanAttribute }) nzBorderless = false;\n @Input() nzSize: NzSizeLDSType = 'default';\n @Input({ transform: booleanAttribute }) nzStepperless: boolean = true;\n @Input() nzStatus: NzStatus = '';\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n _disabled = false;\n disabled$ = new Subject<boolean>();\n dir: Direction = 'ltr';\n // status\n prefixCls: string = 'ant-input';\n status: NzValidateStatus = '';\n statusCls: NgClassInterface = {};\n hasFeedback: boolean = false;\n feedbackRef: ComponentRef<NzFormItemFeedbackIconComponent> | null = null;\n components: Array<ComponentRef<NzFormItemFeedbackIconComponent>> = [];\n private destroy$ = new Subject<void>();\n\n ngControl = inject(NgControl, { self: true, optional: true });\n private nzFormStatusService = inject(NzFormStatusService, { optional: true });\n private nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n protected hostView: ViewContainerRef,\n private directionality: Directionality\n ) {}\n\n ngOnInit(): void {\n this.nzFormStatusService?.formStatusChanges\n .pipe(\n distinctUntilChanged((pre, cur) => {\n return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n }),\n takeUntil(this.destroy$)\n )\n .subscribe(({ status, hasFeedback }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n\n if (this.ngControl) {\n this.ngControl.statusChanges\n ?.pipe(\n filter(() => this.ngControl!.disabled !== null),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.disabled$.next(this.ngControl!.disabled!);\n });\n }\n\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { disabled, nzStatus } = changes;\n if (disabled) {\n this.disabled$.next(this.disabled);\n }\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setStatusStyles(status: NzValidateStatus, hasFeedback: boolean): void {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.renderFeedbackIcon();\n // render status if nzStatus is set\n this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n Object.keys(this.statusCls).forEach(status => {\n if (this.statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\n\n private renderFeedbackIcon(): void {\n if (!this.status || !this.hasFeedback || !!this.nzFormNoStatusService) {\n // remove feedback\n this.hostView.clear();\n this.feedbackRef = null;\n return;\n }\n\n this.feedbackRef = this.feedbackRef || this.hostView.createComponent(NzFormItemFeedbackIconComponent);\n this.feedbackRef.location.nativeElement.classList.add('ant-input-suffix');\n this.feedbackRef.instance.status = this.status;\n this.feedbackRef.instance.updateIcon();\n }\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 { FocusMonitor } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { Subject, merge } from 'rxjs';\nimport { distinctUntilChanged, map, mergeMap, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NzFormNoStatusService, NzFormPatchModule, NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport { NgClassInterface, NzSizeLDSType, NzStatus, NzValidateStatus } from 'ng-zorro-antd/core/types';\nimport { getStatusClassNames } from 'ng-zorro-antd/core/util';\n\nimport { NzInputGroupSlotComponent } from './input-group-slot.component';\nimport { NzInputDirective } from './input.directive';\n\n@Directive({\n selector: `nz-input-group[nzSuffix], nz-input-group[nzPrefix]`,\n standalone: true\n})\nexport class NzInputGroupWhitSuffixOrPrefixDirective {\n constructor(public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'nz-input-group',\n exportAs: 'nzInputGroup',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NzFormNoStatusService],\n template: `\n @if (isAddOn) {\n <span class=\"ant-input-wrapper ant-input-group\">\n @if (nzAddOnBefore || nzAddOnBeforeIcon) {\n <span nz-input-group-slot type=\"addon\" [icon]=\"nzAddOnBeforeIcon\" [template]=\"nzAddOnBefore\"></span>\n }\n\n @if (isAffix || hasFeedback) {\n <span\n class=\"ant-input-affix-wrapper\"\n [class.ant-input-affix-wrapper-disabled]=\"disabled\"\n [class.ant-input-affix-wrapper-sm]=\"isSmall\"\n [class.ant-input-affix-wrapper-lg]=\"isLarge\"\n [class.ant-input-affix-wrapper-focused]=\"focused\"\n [ngClass]=\"affixInGroupStatusCls\"\n >\n <ng-template [ngTemplateOutlet]=\"affixTemplate\"></ng-template>\n </span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTemplate\" />\n }\n @if (nzAddOnAfter || nzAddOnAfterIcon) {\n <span nz-input-group-slot type=\"addon\" [icon]=\"nzAddOnAfterIcon\" [template]=\"nzAddOnAfter\"></span>\n }\n </span>\n } @else {\n @if (isAffix) {\n <ng-template [ngTemplateOutlet]=\"affixTemplate\" />\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTemplate\" />\n }\n }\n\n <!-- affix template -->\n <ng-template #affixTemplate>\n @if (nzPrefix || nzPrefixIcon) {\n <span nz-input-group-slot type=\"prefix\" [icon]=\"nzPrefixIcon\" [template]=\"nzPrefix\"></span>\n }\n <ng-template [ngTemplateOutlet]=\"contentTemplate\" />\n @if (nzSuffix || nzSuffixIcon || isFeedback) {\n <span nz-input-group-slot type=\"suffix\" [icon]=\"nzSuffixIcon\" [template]=\"nzSuffix\">\n @if (isFeedback) {\n <nz-form-item-feedback-icon [status]=\"status\" />\n }\n </span>\n }\n </ng-template>\n\n <!-- content template -->\n <ng-template #contentTemplate>\n <ng-content></ng-content>\n @if (!isAddOn && !isAffix && isFeedback) {\n <span nz-input-group-slot type=\"suffix\">\n <nz-form-item-feedback-icon [status]=\"status\" />\n </span>\n }\n </ng-template>\n `,\n host: {\n '[class.ant-input-group-compact]': `nzCompact`,\n '[class.ant-input-search-enter-button]': `nzSearch`,\n '[class.ant-input-search]': `nzSearch`,\n '[class.ant-input-search-rtl]': `dir === 'rtl'`,\n '[class.ant-input-search-sm]': `nzSearch && isSmall`,\n '[class.ant-input-search-large]': `nzSearch && isLarge`,\n '[class.ant-input-group-wrapper]': `isAddOn`,\n '[class.ant-input-group-wrapper-rtl]': `dir === 'rtl'`,\n '[class.ant-input-group-wrapper-lg]': `isAddOn && isLarge`,\n '[class.ant-input-group-wrapper-sm]': `isAddOn && isSmall`,\n '[class.ant-input-affix-wrapper]': `isAffix && !isAddOn`,\n '[class.ant-input-affix-wrapper-rtl]': `dir === 'rtl'`,\n '[class.ant-input-affix-wrapper-focused]': `isAffix && focused`,\n '[class.ant-input-affix-wrapper-disabled]': `isAffix && disabled`,\n '[class.ant-input-affix-wrapper-lg]': `isAffix && !isAddOn && isLarge`,\n '[class.ant-input-affix-wrapper-sm]': `isAffix && !isAddOn && isSmall`,\n '[class.ant-input-group]': `!isAffix && !isAddOn`,\n '[class.ant-input-group-rtl]': `dir === 'rtl'`,\n '[class.ant-input-group-lg]': `!isAffix && !isAddOn && isLarge`,\n '[class.ant-input-group-sm]': `!isAffix && !isAddOn && isSmall`\n },\n imports: [NzInputGroupSlotComponent, NgClass, NgTemplateOutlet, NzFormPatchModule],\n standalone: true\n})\nexport class NzInputGroupComponent implements AfterContentInit, OnChanges, OnInit, OnDestroy {\n @ContentChildren(NzInputDirective) listOfNzInputDirective!: QueryList<NzInputDirective>;\n @Input() nzAddOnBeforeIcon?: string | null = null;\n @Input() nzAddOnAfterIcon?: string | null = null;\n @Input() nzPrefixIcon?: string | null = null;\n @Input() nzSuffixIcon?: string | null = null;\n @Input() nzAddOnBefore?: string | TemplateRef<void>;\n @Input() nzAddOnAfter?: string | TemplateRef<void>;\n @Input() nzPrefix?: string | TemplateRef<void>;\n @Input() nzStatus: NzStatus = '';\n @Input() nzSuffix?: string | TemplateRef<void>;\n @Input() nzSize: NzSizeLDSType = 'default';\n @Input({ transform: booleanAttribute }) nzSearch = false;\n @Input({ transform: booleanAttribute }) nzCompact = false;\n isLarge = false;\n isSmall = false;\n isAffix = false;\n isAddOn = false;\n isFeedback = false;\n focused = false;\n disabled = false;\n dir: Direction = 'ltr';\n // status\n prefixCls: string = 'ant-input';\n affixStatusCls: NgClassInterface = {};\n groupStatusCls: NgClassInterface = {};\n affixInGroupStatusCls: NgClassInterface = {};\n status: NzValidateStatus = '';\n hasFeedback: boolean = false;\n private destroy$ = new Subject<void>();\n private nzFormStatusService = inject(NzFormStatusService, { optional: true });\n private nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n\n constructor(\n private focusMonitor: FocusMonitor,\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n private directionality: Directionality\n ) {}\n\n updateChildrenInputSize(): void {\n if (this.listOfNzInputDirective) {\n this.listOfNzInputDirective.forEach(item => (item.nzSize = this.nzSize));\n }\n }\n\n ngOnInit(): void {\n this.nzFormStatusService?.formStatusChanges\n .pipe(\n distinctUntilChanged((pre, cur) => {\n return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n }),\n takeUntil(this.destroy$)\n )\n .subscribe(({ status, hasFeedback }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n\n this.focusMonitor\n .monitor(this.elementRef, true)\n .pipe(takeUntil(this.destroy$))\n .subscribe(focusOrigin => {\n this.focused = !!focusOrigin;\n this.cdr.markForCheck();\n });\n\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n }\n\n ngAfterContentInit(): void {\n this.updateChildrenInputSize();\n const listOfInputChange$ = this.listOfNzInputDirective.changes.pipe(startWith(this.listOfNzInputDirective));\n listOfInputChange$\n .pipe(\n switchMap(list => merge(...[listOfInputChange$, ...list.map((input: NzInputDirective) => input.disabled$)])),\n mergeMap(() => listOfInputChange$),\n map(list => list.some((input: NzInputDirective) => input.disabled)),\n takeUntil(this.destroy$)\n )\n .subscribe(disabled => {\n this.disabled = disabled;\n this.cdr.markForCheck();\n });\n }\n ngOnChanges(changes: SimpleChanges): void {\n const {\n nzSize,\n nzSuffix,\n nzPrefix,\n nzPrefixIcon,\n nzSuffixIcon,\n nzAddOnAfter,\n nzAddOnBefore,\n nzAddOnAfterIcon,\n nzAddOnBeforeIcon,\n nzStatus\n } = changes;\n if (nzSize) {\n this.updateChildrenInputSize();\n this.isLarge = this.nzSize === 'large';\n this.isSmall = this.nzSize === 'small';\n }\n if (nzSuffix || nzPrefix || nzPrefixIcon || nzSuffixIcon) {\n this.isAffix = !!(this.nzSuffix || this.nzPrefix || this.nzPrefixIcon || this.nzSuffixIcon);\n }\n if (nzAddOnAfter || nzAddOnBefore || nzAddOnAfterIcon || nzAddOnBeforeIcon) {\n this.isAddOn = !!(this.nzAddOnAfter || this.nzAddOnBefore || this.nzAddOnAfterIcon || this.nzAddOnBeforeIcon);\n this.nzFormNoStatusService?.noFormStatus?.next(this.isAddOn);\n }\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n }\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setStatusStyles(status: NzValidateStatus, hasFeedback: boolean): void {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.isFeedback = !!status && hasFeedback;\n const baseAffix = !!(this.nzSuffix || this.nzPrefix || this.nzPrefixIcon || this.nzSuffixIcon);\n this.isAffix = baseAffix || (!this.isAddOn && hasFeedback);\n this.affixInGroupStatusCls =\n this.isAffix || this.isFeedback\n ? (this.affixStatusCls = getStatusClassNames(`${this.prefixCls}-affix-wrapper`, status, hasFeedback))\n : {};\n this.cdr.markForCheck();\n // render status if nzStatus is set\n this.affixStatusCls = getStatusClassNames(\n `${this.prefixCls}-affix-wrapper`,\n this.isAddOn ? '' : status,\n this.isAddOn ? false : hasFeedback\n );\n this.groupStatusCls = getStatusClassNames(\n `${this.prefixCls}-group-wrapper`,\n this.isAddOn ? status : '',\n this.isAddOn ? hasFeedback : false\n );\n const statusCls = {\n ...this.affixStatusCls,\n ...this.groupStatusCls\n };\n Object.keys(statusCls).forEach(status => {\n if (statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\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 { Platform } from '@angular/cdk/platform';\nimport { AfterViewInit, Directive, DoCheck, ElementRef, Input, NgZone, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzResizeService } from 'ng-zorro-antd/core/services';\n\nexport interface AutoSizeType {\n minRows?: number;\n maxRows?: number;\n}\n\n@Directive({\n selector: 'textarea[nzAutosize]',\n exportAs: 'nzAutosize',\n host: {\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n rows: '1',\n '(input)': 'noopInputHandler()'\n },\n standalone: true\n})\nexport class NzAutosizeDirective implements AfterViewInit, OnDestroy, DoCheck {\n private autosize: boolean = false;\n private el: HTMLTextAreaElement | HTMLInputElement = this.elementRef.nativeElement;\n private cachedLineHeight!: number;\n private previousValue!: string;\n private previousMinRows: number | undefined;\n private minRows: number | undefined;\n private maxRows: number | undefined;\n private maxHeight: number | null = null;\n private minHeight: number | null = null;\n private destroy$ = new Subject<boolean>();\n private inputGap = 10;\n\n @Input()\n set nzAutosize(value: string | boolean | AutoSizeType) {\n const isAutoSizeType = (data: string | boolean | AutoSizeType): data is AutoSizeType =>\n typeof data !== 'string' && typeof data !== 'boolean' && (!!data.maxRows || !!data.minRows);\n if (typeof value === 'string' || value === true) {\n this.autosize = true;\n } else if (isAutoSizeType(value)) {\n this.autosize = true;\n this.minRows = value.minRows;\n this.maxRows = value.maxRows;\n this.maxHeight = this.setMaxHeight();\n this.minHeight = this.setMinHeight();\n }\n }\n\n resizeToFitContent(force: boolean = false): void {\n this.cacheTextareaLineHeight();\n\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this.cachedLineHeight) {\n return;\n }\n\n const textarea = this.el as HTMLTextAreaElement;\n const value = textarea.value;\n\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this.minRows === this.previousMinRows && value === this.previousValue) {\n return;\n }\n const placeholderText = textarea.placeholder;\n\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n // Long placeholders that are wider than the textarea width may lead to a bigger scrollHeight\n // value. To ensure that the scrollHeight is not bigger than the content, the placeholders\n // need to be removed temporarily.\n textarea.classList.add('nz-textarea-autosize-measuring');\n textarea.placeholder = '';\n let height =\n Math.round((textarea.scrollHeight - this.inputGap) / this.cachedLineHeight) * this.cachedLineHeight +\n this.inputGap;\n if (this.maxHeight !== null && height > this.maxHeight) {\n height = this.maxHeight!;\n }\n if (this.minHeight !== null && height < this.minHeight) {\n height = this.minHeight!;\n }\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n textarea.classList.remove('nz-textarea-autosize-measuring');\n textarea.placeholder = placeholderText;\n\n // On Firefox resizing the textarea will prevent it from scrolling to the caret position.\n // We need to re-set the selection in order for it to scroll to the proper position.\n if (typeof requestAnimationFrame !== 'undefined') {\n this.ngZone.runOutsideAngular(() =>\n requestAnimationFrame(() => {\n const { selectionStart, selectionEnd } = textarea;\n\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this.destroy$.isStopped && document.activeElement === textarea) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n })\n );\n }\n\n this.previousValue = value;\n this.previousMinRows = this.minRows;\n }\n\n private cacheTextareaLineHeight(): void {\n if (this.cachedLineHeight >= 0 || !this.el.parentNode) {\n return;\n }\n\n // Use a clone element because we have to override some styles.\n const textareaClone = this.el.cloneNode(false) as HTMLTextAreaElement;\n textareaClone.rows = 1;\n\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n\n this.el.parentNode!.appendChild(textareaClone);\n this.cachedLineHeight = textareaClone.clientHeight - this.inputGap;\n this.el.parentNode!.removeChild(textareaClone);\n\n // Min and max heights have to be re-calculated if the cached line height changes\n this.maxHeight = this.setMaxHeight();\n this.minHeight = this.setMinHeight();\n }\n\n setMinHeight(): number | null {\n const minHeight =\n this.minRows && this.cachedLineHeight ? this.minRows * this.cachedLineHeight + this.inputGap : null;\n\n if (minHeight !== null) {\n this.el.style.minHeight = `${minHeight}px`;\n }\n return minHeight;\n }\n\n setMaxHeight(): number | null {\n const maxHeight =\n this.maxRows && this.cachedLineHeight ? this.maxRows * this.cachedLineHeight + this.inputGap : null;\n if (maxHeight !== null) {\n this.el.style.maxHeight = `${maxHeight}px`;\n }\n return maxHeight;\n }\n\n noopInputHandler(): void {\n // no-op handler that ensures we're running change detection on input events.\n }\n\n constructor(\n private elementRef: ElementRef,\n private ngZone: NgZone,\n private platform: Platform,\n private resizeService: NzResizeService\n ) {}\n\n ngAfterViewInit(): void {\n if (this.autosize && this.platform.isBrowser) {\n this.resizeToFitContent();\n this.resizeService\n .subscribe()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.resizeToFitContent(true));\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n ngDoCheck(): void {\n if (this.autosize && this.platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\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 {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n isDevMode,\n numberAttribute,\n OnDestroy,\n Renderer2\n} from '@angular/core';\nimport { EMPTY, merge, Subject } from 'rxjs';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\n\nimport { isNotNil } from 'ng-zorro-antd/core/util';\n\nimport { NzInputDirective } from './input.directive';\n\n@Component({\n selector: 'nz-textarea-count',\n template: ` <ng-content select=\"textarea[nz-input]\"></ng-content> `,\n host: {\n class: 'ant-input-textarea-show-count'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class NzTextareaCountComponent implements AfterContentInit, OnDestroy {\n @ContentChild(NzInputDirective, { static: true }) nzInputDirective!: NzInputDirective;\n @Input({ transform: numberAttribute }) nzMaxCharacterCount: number = 0;\n @Input() nzComputeCharacterCount: (v: string) => number = v => v.length;\n @Input() nzFormatter: (cur: number, max: number) => string = (c, m) => `${c}${m > 0 ? `/${m}` : ``}`;\n\n private configChange$ = new Subject();\n private destroy$ = new Subject<boolean>();\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngAfterContentInit(): void {\n if (!this.nzInputDirective && isDevMode()) {\n throw new Error('[nz-textarea-count]: Could not find matching textarea[nz-input] child.');\n }\n\n if (this.nzInputDirective.ngControl) {\n const valueChanges = this.nzInputDirective.ngControl.valueChanges || EMPTY;\n merge(valueChanges, this.configChange$)\n .pipe(\n takeUntil(this.destroy$),\n map(() => this.nzInputDirective.ngControl!.value),\n startWith(this.nzInputDirective.ngControl.value as string)\n )\n .subscribe(value => {\n this.setDataCount(value);\n });\n }\n }\n\n setDataCount(value: string): void {\n const inputValue = isNotNil(value) ? String(value) : '';\n const currentCount = this.nzComputeCharacterCount(inputValue);\n const dataCount = this.nzFormatter(currentCount, this.nzMaxCharacterCount);\n this.renderer.setAttribute(this.elementRef.nativeElement, 'data-count', dataCount);\n }\n\n ngOnDestroy(): void {\n this.configChange$.complete();\n this.destroy$.next(true);\n this.destroy$.complete();\n }\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 { NzAutosizeDirective } from './autosize.directive';\nimport { NzInputGroupSlotComponent } from './input-group-slot.component';\nimport { NzInputGroupComponent, NzInputGroupWhitSuffixOrPrefixDirective } from './input-group.component';\nimport { NzInputDirective } from './input.directive';\nimport { NzTextareaCountComponent } from './textarea-count.component';\n\n@NgModule({\n imports: [\n NzTextareaCountComponent,\n NzInputDirective,\n NzInputGroupComponent,\n NzAutosizeDirective,\n NzInputGroupSlotComponent,\n NzInputGroupWhitSuffixOrPrefixDirective\n ],\n exports: [\n NzTextareaCountComponent,\n NzInputDirective,\n NzInputGroupComponent,\n NzAutosizeDirective,\n NzInputGroupWhitSuffixOrPrefixDirective\n ]\n})\nexport class NzInputModule {}\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-group.component';\nexport * from './input.module';\nexport * from './input-group.component';\nexport * from './input-group-slot.component';\nexport * from './input.directive';\nexport * from './autosize.directive';\nexport * from './textarea-count.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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