UNPKG

@delon/form

Version:

Angular form generation based on JSON-Schema.

1 lines 12.2 kB
{"version":3,"file":"widgets-auto-complete.mjs","sources":["../../../../packages/form/widgets/autocomplete/widget.ts","../../../../packages/form/widgets/autocomplete/module.ts","../../../../packages/form/widgets/autocomplete/index.ts","../../../../packages/form/widgets/autocomplete/widgets-auto-complete.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\nimport { Component, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NgModel } from '@angular/forms';\nimport { Observable, of, debounceTime, map, mergeMap, startWith, takeUntil } from 'rxjs';\n\nimport { ControlUIWidget, DelonFormModule, SFSchemaEnum, SFValue, getCopyEnum, getEnum, toBool } from '@delon/form';\nimport { NzAutocompleteModule, NzAutocompleteOptionComponent } from 'ng-zorro-antd/auto-complete';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzInputModule } from 'ng-zorro-antd/input';\n\nimport type { SFAutoCompleteWidgetSchema } from './schema';\n\n@Component({\n selector: 'sf-autocomplete',\n template: `<sf-item-wrap\n [id]=\"id\"\n [schema]=\"schema\"\n [ui]=\"ui\"\n [showError]=\"showError\"\n [error]=\"error\"\n [showTitle]=\"schema.title\"\n >\n <input\n nz-input\n [nzAutocomplete]=\"auto\"\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [attr.disabled]=\"disabled\"\n [nzSize]=\"ui.size!\"\n [ngModel]=\"typing\"\n (ngModelChange)=\"_setValue($event)\"\n [attr.maxLength]=\"schema.maxLength || null\"\n [attr.placeholder]=\"ui.placeholder\"\n autocomplete=\"off\"\n />\n <nz-autocomplete\n #auto\n [nzBackfill]=\"i.backfill\"\n [nzDefaultActiveFirstOption]=\"i.defaultActiveFirstOption\"\n [nzWidth]=\"i.width\"\n [nzOverlayStyle]=\"ui.overlayStyle || {}\"\n [nzOverlayClassName]=\"ui.overlayClassName || ''\"\n [compareWith]=\"i.compareWith\"\n (selectionChange)=\"updateValue($event)\"\n >\n @for (i of list | async; track i) {\n <nz-auto-option [nzValue]=\"i\" [nzLabel]=\"i.label\"> {{ i.label }} </nz-auto-option>\n }\n </nz-autocomplete>\n </sf-item-wrap>`,\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe, FormsModule, DelonFormModule, NzInputModule, NzAutocompleteModule]\n})\nexport class AutoCompleteWidget extends ControlUIWidget<SFAutoCompleteWidgetSchema> {\n static readonly KEY = 'autocomplete';\n\n i: NzSafeAny = {};\n list!: Observable<SFSchemaEnum[]>;\n typing: string = '';\n @ViewChild(NgModel, { static: false }) private ngModel!: NgModel;\n private filterOption!: (input: string, option: SFSchemaEnum) => boolean;\n private isAsync = false;\n private fixData: SFSchemaEnum[] = [];\n\n updateValue(item: NzAutocompleteOptionComponent): void {\n this.typing = item.nzLabel!;\n const data: SFSchemaEnum = item.nzValue;\n this.setValue(data.value);\n if (this.ui.change) {\n this.ui.change(item, data);\n }\n }\n\n _setValue(item: SFSchemaEnum): void {\n let val = item.toString();\n if (typeof item !== 'string') {\n val = item.value;\n }\n this.setValue(val);\n }\n\n afterViewInit(): void {\n const { backfill, defaultActiveFirstOption, nzWidth, filterOption, asyncData, compareWith } = this.ui;\n this.i = {\n backfill: toBool(backfill, false),\n defaultActiveFirstOption: toBool(defaultActiveFirstOption, true),\n width: nzWidth || undefined,\n compareWith: compareWith || ((o1, o2) => o1 === o2)\n };\n\n let filterOptionValue = filterOption == null ? true : filterOption;\n if (typeof filterOptionValue === 'boolean') {\n filterOptionValue = (input: string, option: SFSchemaEnum) =>\n option.label.toLowerCase().indexOf((input || '').toLowerCase()) > -1;\n }\n this.filterOption = filterOptionValue;\n\n this.isAsync = !!asyncData;\n const orgTime = +(this.ui.debounceTime || 0);\n const time = Math.max(0, this.isAsync ? Math.max(50, orgTime) : orgTime);\n\n this.list = this.ngModel.valueChanges!.pipe(\n debounceTime(time),\n startWith(''),\n mergeMap(input => (this.isAsync ? asyncData!(input) : this.filterData(input))),\n map(res => getEnum(res, null, this.schema.readOnly!))\n );\n }\n\n reset(value: SFValue): void {\n if (this.isAsync) {\n this.ui.asyncData!(value)\n .pipe(\n takeUntil(this.sfItemComp!.destroy$),\n map(res => getEnum(res, null, this.schema.readOnly!))\n )\n .subscribe(data => {\n this.typing = data.find(w => w.value === this.value)?.label ?? '';\n });\n return;\n }\n\n this.typing = value;\n switch (this.ui.type) {\n case 'email':\n this.fixData = getCopyEnum(\n this.schema.enum! || this.formProperty.options.uiEmailSuffixes,\n null,\n this.schema.readOnly!\n );\n break;\n default:\n this.fixData = getCopyEnum(this.schema.enum!, value, this.schema.readOnly!);\n break;\n }\n }\n\n private filterData(input: string): Observable<SFSchemaEnum[]> | Observable<string[]> {\n switch (this.ui.type) {\n case 'email':\n return this.addEmailSuffix(input);\n default:\n return of(this.fixData.filter(option => this.filterOption(input, option)));\n }\n }\n\n private addEmailSuffix(value: string): Observable<string[]> {\n const res =\n !value || typeof value !== 'string' || value?.indexOf('@') !== -1\n ? []\n : this.fixData.map(domain => `${value}@${domain.label}`);\n return of(res);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DelonFormModule, WidgetRegistry } from '@delon/form';\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\nimport { NzInputModule } from 'ng-zorro-antd/input';\n\nimport { AutoCompleteWidget } from './widget';\n\n@NgModule({\n imports: [FormsModule, DelonFormModule, CommonModule, NzInputModule, NzAutocompleteModule, AutoCompleteWidget]\n})\nexport class AutoCompleteWidgetModule {\n constructor(widgetRegistry: WidgetRegistry) {\n widgetRegistry.register(AutoCompleteWidget.KEY, AutoCompleteWidget);\n }\n}\n","import type { SFWidgetProvideConfig } from '@delon/form';\n\nimport { AutoCompleteWidget } from './widget';\n\nexport * from './widget';\nexport * from './schema';\nexport * from './module';\n\nexport function withAutoCompleteWidget(): SFWidgetProvideConfig {\n return { KEY: AutoCompleteWidget.KEY, type: AutoCompleteWidget };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}