@ng-nest/ui 16.0.2 → 16.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/auto-complete/auto-complete.component.d.ts +4 -1
  2. package/cascade/cascade.component.d.ts +4 -1
  3. package/color-picker/color-picker.component.d.ts +4 -1
  4. package/core/functions/parent-path.d.ts +1 -0
  5. package/date-picker/date-picker.component.d.ts +4 -1
  6. package/date-picker/date-range.component.d.ts +2 -0
  7. package/esm2022/auto-complete/auto-complete.component.mjs +35 -7
  8. package/esm2022/cascade/cascade.component.mjs +36 -8
  9. package/esm2022/color-picker/color-picker.component.mjs +36 -8
  10. package/esm2022/core/functions/parent-path.mjs +10 -1
  11. package/esm2022/date-picker/date-picker.component.mjs +36 -9
  12. package/esm2022/date-picker/date-range.component.mjs +31 -6
  13. package/esm2022/form/control.component.mjs +2 -2
  14. package/esm2022/form/form.property.mjs +1 -1
  15. package/esm2022/input-number/input-number.component.mjs +14 -10
  16. package/esm2022/select/select.component.mjs +37 -9
  17. package/esm2022/table/table-body.component.mjs +2 -1
  18. package/esm2022/tabs/tab-content.component.mjs +3 -3
  19. package/esm2022/time-picker/time-picker.component.mjs +32 -6
  20. package/esm2022/tree-select/tree-select.component.mjs +36 -8
  21. package/fesm2022/ng-nest-ui-auto-complete.mjs +34 -7
  22. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  23. package/fesm2022/ng-nest-ui-cascade.mjs +35 -8
  24. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  25. package/fesm2022/ng-nest-ui-color-picker.mjs +34 -7
  26. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  27. package/fesm2022/ng-nest-ui-core.mjs +10 -1
  28. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  29. package/fesm2022/ng-nest-ui-date-picker.mjs +60 -8
  30. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-form.mjs +1 -1
  32. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-input-number.mjs +13 -10
  34. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-select.mjs +37 -10
  36. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  37. package/fesm2022/ng-nest-ui-table.mjs +1 -0
  38. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  39. package/fesm2022/ng-nest-ui-tabs.mjs +2 -2
  40. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  41. package/fesm2022/ng-nest-ui-time-picker.mjs +31 -5
  42. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  43. package/fesm2022/ng-nest-ui-tree-select.mjs +35 -8
  44. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  45. package/form/form.property.d.ts +10 -0
  46. package/input-number/input-number.component.d.ts +3 -1
  47. package/package.json +19 -19
  48. package/select/select.component.d.ts +4 -1
  49. package/time-picker/time-picker.component.d.ts +2 -0
  50. package/tree-select/tree-select.component.d.ts +4 -1
@@ -264,7 +264,7 @@ class XControlComponent extends XControlProperty {
264
264
  this.option.label = '';
265
265
  this.option.label = `${this.option.label}${this.form.labelSuffix}`;
266
266
  this._control = this.createControl(this.option);
267
- this._formControl = new UntypedFormControl(this._control.value);
267
+ this._formControl = new UntypedFormControl(this._control.value, { nonNullable: this._control.nonNullable });
268
268
  this.setValidators();
269
269
  this._formControl.statusChanges.pipe(takeUntil(this._unSubject)).subscribe((x) => {
270
270
  this.setMessages(x);
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/control.component.ts","../../../../lib/ng-nest/ui/form/control.component.html","../../../../lib/ng-nest/ui/form/form.component.ts","../../../../lib/ng-nest/ui/form/form.component.html","../../../../lib/ng-nest/ui/form/form.module.ts","../../../../lib/ng-nest/ui/form/ng-nest-ui-form.ts"],"sourcesContent":["import { XIdentity, XIdentityProperty, XBoolean, XIsEmpty, XNumber, XInputNumber, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef, Output, EventEmitter } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { XInputOption, XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectOption, XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XCascadeOption, XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxOption, XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerOption, XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerOption, XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberOption, XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioOption, XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateOption, XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectOption, XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchOption, XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTimePickerOption, XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { XTextareaOption, XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XFindOption, XFindComponent } from '@ng-nest/ui/find';\r\nimport { XFormOption, XFormProp } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteOption, XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\n\r\n/**\r\n * Form\r\n * @selector x-form\r\n * @decorator component\r\n */\r\nexport const XFormPrefix = 'x-form';\r\nconst X_CONFIG_NAME = 'form';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XFormTemplate = { [property: string]: TemplateRef<any> };\r\n/**\r\n * Form Property\r\n */\r\n@Component({ selector: `${XFormPrefix}-property`, template: '' })\r\nexport class XFormProperty extends XFormProp {\r\n /**\r\n * @zh_CN 表单 FormGroup\r\n * @en_US Form FormGroup\r\n */\r\n @Input() formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n /**\r\n * @zh_CN 表单名称\r\n * @en_US Form name\r\n */\r\n @Input() title?: string;\r\n /**\r\n * @zh_CN 控件间距,单位rem\r\n * @en_US Control spacing, unit rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 1) @XInputNumber() space?: XNumber;\r\n /**\r\n * @zh_CN 控件宽度,24栅格\r\n * @en_US Control width, 24 grid\r\n */\r\n @Input() @XInputNumber() span?: XNumber;\r\n /**\r\n * @zh_CN 标签后缀\r\n * @en_US Label suffix\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, '') labelSuffix?: string;\r\n /**\r\n * @zh_CN 表单控件\r\n * @en_US Form control\r\n */\r\n @Input() controls: XFormControlOption[] | XFormRow[] = [];\r\n /**\r\n * @zh_CN 表单宽度\r\n * @en_US Form width\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '100%') width: string = '100%';\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n @Input() controlTpl: XFormTemplate = {};\r\n /**\r\n * @zh_CN Submit\r\n * @en_US Submit\r\n */\r\n @Output() xSubmit = new EventEmitter<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption extends XIdentityProperty {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: XBoolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Read only\r\n */\r\n readonly?: XBoolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: XBoolean;\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hide\r\n */\r\n hidden?: XBoolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport class XControl extends XIdentity implements XControlOption {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: XBoolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Read only\r\n */\r\n readonly?: XBoolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: XBoolean;\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hide\r\n */\r\n hidden?: XBoolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 设置验证\r\n * @en_US Set verification\r\n */\r\n setValidators?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n\r\n constructor(option: XControlOption = {}) {\r\n super();\r\n if (XIsEmpty(this.value)) this.value = '';\r\n Object.assign(this, option);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 表单行对象\r\n * @en_US Form row object\r\n */\r\nexport interface XFormRow {\r\n /**\r\n * @zh_CN 行标题\r\n * @en_US Row header\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 行图标\r\n * @en_US Row icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 行中的控件\r\n * @en_US Control in row\r\n */\r\n controls: XFormControlOption[];\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hidden\r\n */\r\n hidden?: XBoolean;\r\n}\r\n\r\n/**\r\n * Control\r\n * @selector x-control\r\n * @decorator component\r\n */\r\nexport const XControlPrefix = 'x-control';\r\n\r\n/**\r\n * Control Property\r\n */\r\n@Component({ selector: `${XControlPrefix}-property`, template: '' })\r\nexport class XControlProperty {\r\n /**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\n @Input() option?: XControlOption;\r\n}\r\n\r\nexport class XFormControl extends UntypedFormControl {\r\n /**\r\n * @zh_CN 提示信息\r\n * @en_US Prompt information\r\n */\r\n messages?: string[] = [];\r\n}\r\n\r\nexport type XFormControlOption =\r\n | XInputControlOption\r\n | XSelectControlOption\r\n | XCascadeControlOption\r\n | XCheckboxControlOption\r\n | XColorPickerControlOption\r\n | XDatePickerControlOption\r\n | XInputNumberControlOption\r\n | XRadioControlOption\r\n | XRateControlOption\r\n | XSliderSelectControlOption\r\n | XSwitchControlOption\r\n | XTimePickerControlOption\r\n | XFindControlOption\r\n | XTemplateControlOption;\r\n\r\nexport type XFormControlComponent =\r\n | XInputComponent\r\n | XSelectComponent\r\n | XCascadeComponent\r\n | XCheckboxComponent\r\n | XColorPickerComponent\r\n | XDatePickerComponent\r\n | XInputNumberComponent\r\n | XRadioComponent\r\n | XRateComponent\r\n | XSliderSelectComponent\r\n | XSwitchComponent\r\n | XTimePickerComponent\r\n | XTextareaComponent\r\n | XFindComponent\r\n | XAutoCompleteComponent;\r\n\r\nexport type XFormControlType =\r\n | XInputControl\r\n | XSelectControl\r\n | XCascadeControl\r\n | XCheckboxControl\r\n | XColorPickerControl\r\n | XDatePickerControl\r\n | XInputNumberControl\r\n | XRadioControl\r\n | XRateControl\r\n | XSliderSelectControl\r\n | XSwitchControl\r\n | XTimePickerControl\r\n | XTextareaControl\r\n | XFindControl\r\n | XAutoCompleteControl;\r\n\r\nexport type XControlType =\r\n | 'input'\r\n | 'select'\r\n | 'cascade'\r\n | 'checkbox'\r\n | 'color-picker'\r\n | 'date-picker'\r\n | 'input-number'\r\n | 'radio'\r\n | 'rate'\r\n | 'slider-select'\r\n | 'switch'\r\n | 'time-picker'\r\n | 'textarea'\r\n | 'find'\r\n | 'auto-complete'\r\n | 'template';\r\n\r\n/**\r\n * Input Control\r\n */\r\nexport interface XInputControlOption extends XControlOption, XInputOption {}\r\nexport class XInputControl extends XControl {\r\n constructor(option: XInputControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Select Control\r\n */\r\nexport interface XSelectControlOption extends XControlOption, XSelectOption {}\r\nexport class XSelectControl extends XControl {\r\n constructor(option: XSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Cascade Control\r\n */\r\nexport interface XCascadeControlOption extends XControlOption, XCascadeOption {}\r\nexport class XCascadeControl extends XControl {\r\n constructor(option: XCascadeControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox Control\r\n */\r\nexport interface XCheckboxControlOption extends XControlOption, XCheckboxOption {}\r\nexport class XCheckboxControl extends XControl {\r\n constructor(option: XCheckboxControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * ColorPicker Control\r\n */\r\nexport interface XColorPickerControlOption extends XControlOption, XColorPickerOption {}\r\nexport class XColorPickerControl extends XControl {\r\n constructor(option: XColorPickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * DatePicker Control\r\n */\r\nexport interface XDatePickerControlOption extends XControlOption, XDatePickerOption {}\r\nexport class XDatePickerControl extends XControl {\r\n constructor(option: XDatePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * InputNumber Control\r\n */\r\nexport interface XInputNumberControlOption extends XControlOption, XInputNumberOption {}\r\nexport class XInputNumberControl extends XControl {\r\n constructor(option: XInputNumberControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Radio Control\r\n */\r\nexport interface XRadioControlOption extends XControlOption, XRadioOption {}\r\nexport class XRadioControl extends XControl {\r\n constructor(option: XRadioControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Rate Control\r\n */\r\nexport interface XRateControlOption extends XControlOption, XRateOption {}\r\nexport class XRateControl extends XControl {\r\n constructor(option: XRateControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * SliderSelect Control\r\n */\r\nexport interface XSliderSelectControlOption extends XControlOption, XSliderSelectOption {}\r\nexport class XSliderSelectControl extends XControl {\r\n constructor(option: XSliderSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Switch Control\r\n */\r\nexport interface XSwitchControlOption extends XControlOption, XSwitchOption {}\r\nexport class XSwitchControl extends XControl {\r\n constructor(option: XSwitchControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * TimePicker Control\r\n */\r\nexport interface XTimePickerControlOption extends XControlOption, XTimePickerOption {}\r\nexport class XTimePickerControl extends XControl {\r\n constructor(option: XTimePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Textarea Control\r\n */\r\nexport interface XTextareaControlOption extends XControlOption, XTextareaOption {}\r\nexport class XTextareaControl extends XControl {\r\n constructor(option: XTextareaControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Find Control\r\n */\r\nexport interface XFindControlOption extends XControlOption, XFindOption {}\r\nexport class XFindControl extends XControl {\r\n constructor(option: XFindControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * AutoComplete Control\r\n */\r\nexport interface XAutoCompleteControlOption extends XControlOption, XAutoCompleteOption {}\r\nexport class XAutoCompleteControl extends XControl {\r\n constructor(option: XAutoCompleteControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Template Control\r\n */\r\nexport interface XTemplateControlOption extends XControlOption, XFormOption {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport {\r\n XControlProperty,\r\n XFormControlOption,\r\n XFormControlComponent,\r\n XFormControlType,\r\n XCascadeControl,\r\n XCascadeControlOption,\r\n XInputControl,\r\n XInputControlOption,\r\n XSelectControl,\r\n XSelectControlOption,\r\n XCheckboxControl,\r\n XCheckboxControlOption,\r\n XRadioControl,\r\n XRadioControlOption,\r\n XDatePickerControlOption,\r\n XDatePickerControl,\r\n XInputNumberControl,\r\n XInputNumberControlOption,\r\n XSwitchControl,\r\n XSwitchControlOption,\r\n XRateControl,\r\n XRateControlOption,\r\n XSliderSelectControl,\r\n XSliderSelectControlOption,\r\n XTimePickerControl,\r\n XTimePickerControlOption,\r\n XColorPickerControl,\r\n XColorPickerControlOption,\r\n XFormControl,\r\n XFindControl,\r\n XFindControlOption,\r\n XTextareaControlOption,\r\n XTextareaControl,\r\n XAutoCompleteControl,\r\n XAutoCompleteControlOption\r\n} from './form.property';\r\nimport { FormControlName, Validators, UntypedFormControl, ValidatorFn, ControlValueAccessor, FormControlStatus } from '@angular/forms';\r\nimport { XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: 'x-control',\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XControlComponent extends XControlProperty implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() override option!: XFormControlOption;\r\n @Input() form: any;\r\n @ViewChild(FormControlName) control!: FormControlName;\r\n locale: XI18nForm = {};\r\n private _sharedProps = ['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign'];\r\n private _changeProps = ['label', ...this._sharedProps];\r\n private _control!: XFormControlType;\r\n private _validatorFns: ValidatorFn[] = [];\r\n private _unSubject = new Subject<void>();\r\n private _formControl!: UntypedFormControl;\r\n\r\n constructor(\r\n // @Host() @Optional() public form: XFormComponent,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.option = { ...this.option };\r\n this.setProps();\r\n if (XIsEmpty(this.option.label)) this.option.label = '';\r\n this.option.label = `${this.option.label}${this.form.labelSuffix}`;\r\n this._control = this.createControl(this.option);\r\n this._formControl = new UntypedFormControl(this._control.value);\r\n this.setValidators();\r\n this._formControl.statusChanges.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.setMessages(x);\r\n });\r\n this._control.setValidators = () => this.setValidators();\r\n this.form.formGroup.addControl(this._control.id, this._formControl);\r\n this.option.change = () => {\r\n this._changeProps.forEach((x: string) => {\r\n if (this.control.valueAccessor && this.option[x]) {\r\n (this.control.valueAccessor as any)[x] = this.option[x];\r\n }\r\n });\r\n this.form.controlComponents[this._control.id].formControlChanges();\r\n };\r\n this.i18n.localeChange\r\n .pipe(\r\n map((x) => x.form as XI18nForm),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.locale = x;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n Object.assign(this.control.valueAccessor!, this._control as ControlValueAccessor);\r\n this.form.controlTypes[this._control.id] = this._control;\r\n this.form.controlComponents[this._control.id] = this.control.valueAccessor as XFormControlComponent;\r\n this.form.controlComponents[this._control.id].formControlChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setValidators() {\r\n this._validatorFns = [];\r\n if (this._control.disabled || this.form.disabled) {\r\n this._formControl.disable();\r\n } else {\r\n this._formControl.enable();\r\n }\r\n if (this._control.required && !this.form.disabled) {\r\n this._validatorFns = [...this._validatorFns, Validators.required];\r\n }\r\n if (this._control.pattern) {\r\n this.setPattern();\r\n }\r\n if (XIsFunction(this._control.inputValidator)) {\r\n this._validatorFns = [...this._validatorFns, XFormInputValidator(this._control.inputValidator!)];\r\n }\r\n this._formControl.setValidators(this._validatorFns);\r\n this._formControl.updateValueAndValidity();\r\n }\r\n\r\n setProps() {\r\n for (let prop of this._sharedProps) {\r\n if (XIsEmpty(this.option[prop])) this.option[prop] = (this.form as any)[prop];\r\n }\r\n }\r\n\r\n setPattern() {\r\n if (Array.isArray(this._control.pattern)) {\r\n for (const pt of this._control.pattern) {\r\n this._validatorFns = [...this._validatorFns, Validators.pattern(pt)];\r\n }\r\n } else {\r\n this._validatorFns = [...this._validatorFns, Validators.pattern(this._control.pattern as RegExp)];\r\n }\r\n }\r\n\r\n getPatternMsg(pattern: string) {\r\n if (Array.isArray(this._control.pattern)) {\r\n return (this._control.message as Array<any>)[this._control.pattern.findIndex((x) => String(x) === pattern)];\r\n } else {\r\n return this._control.message;\r\n }\r\n }\r\n\r\n setMessages(state: FormControlStatus) {\r\n let control: XFormControl = this._formControl;\r\n if (state === 'INVALID' && this._formControl.errors !== null) {\r\n let messages: string[] = [];\r\n for (const key in control.errors) {\r\n const label = this._control.label || this._control.id;\r\n if (key === 'required') {\r\n messages = [...messages, `${label} ${this.locale?.required || 'required'}`];\r\n } else if (key === 'pattern') {\r\n messages = [...messages, `${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];\r\n } else if (key === 'inputValidator') {\r\n messages = [...messages, `${label} ${this._control.message}`];\r\n }\r\n }\r\n control.messages = messages;\r\n } else if (state === 'VALID') {\r\n control.messages = [];\r\n }\r\n }\r\n\r\n createControl(option: XFormControlOption) {\r\n switch (option.control) {\r\n case 'input':\r\n return new XInputControl(option as XInputControlOption);\r\n case 'select':\r\n return new XSelectControl(option as XSelectControlOption);\r\n case 'checkbox':\r\n return new XCheckboxControl(option as XCheckboxControlOption);\r\n case 'radio':\r\n return new XRadioControl(option as XRadioControlOption);\r\n case 'switch':\r\n return new XSwitchControl(option as XSwitchControlOption);\r\n case 'rate':\r\n return new XRateControl(option as XRateControlOption);\r\n case 'date-picker':\r\n return new XDatePickerControl(option as XDatePickerControlOption);\r\n case 'time-picker':\r\n return new XTimePickerControl(option as XTimePickerControlOption);\r\n case 'input-number':\r\n return new XInputNumberControl(option as XInputNumberControlOption);\r\n case 'slider-select':\r\n return new XSliderSelectControl(option as XSliderSelectControlOption);\r\n case 'cascade':\r\n return new XCascadeControl(option as XCascadeControlOption);\r\n case 'color-picker':\r\n return new XColorPickerControl(option as XColorPickerControlOption);\r\n case 'textarea':\r\n return new XTextareaControl(option as XTextareaControlOption);\r\n case 'find':\r\n return new XFindControl(option as XFindControlOption);\r\n case 'auto-complete':\r\n return new XAutoCompleteControl(option as XAutoCompleteControlOption);\r\n default:\r\n return new XInputControl(option as XInputControlOption);\r\n }\r\n }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup\">\r\n <ng-container [ngSwitch]=\"option.control\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <x-input [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-input>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <x-select [formControlName]=\"option.id\"></x-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascade'\">\r\n <x-cascade [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-cascade>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox [formControlName]=\"option.id\"></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <x-color-picker [formControlName]=\"option.id\"></x-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-picker'\">\r\n <x-date-picker [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-date-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input-number'\">\r\n <x-input-number [formControlName]=\"option.id\"></x-input-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <x-radio [formControlName]=\"option.id\"></x-radio>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <x-rate [formControlName]=\"option.id\"></x-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'slider-select'\">\r\n <x-slider-select [formControlName]=\"option.id\"></x-slider-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <x-switch [formControlName]=\"option.id\"></x-switch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'time-picker'\">\r\n <x-time-picker [formControlName]=\"option.id\"></x-time-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <x-textarea [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'auto-complete'\">\r\n <x-auto-complete [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-auto-complete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'find'\">\r\n <x-find [formControlName]=\"option.id\"></x-find>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, SimpleChanges } from '@angular/core';\r\nimport {\r\n XFormProperty,\r\n XFormRow,\r\n XFormPrefix,\r\n XFormControlOption,\r\n XFormControl,\r\n XFormControlComponent,\r\n XFormControlType\r\n} from './form.property';\r\nimport { XIsChange, XBoolean, XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XFormPrefix}`,\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnInit {\r\n controlsType!: 'controls' | 'rows';\r\n controlComponents: { [property: string]: XFormControlComponent } = {};\r\n controlTypes: { [property: string]: XFormControlType } = {};\r\n formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n\r\n constructor(public cdr: ChangeDetectorRef, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { disabled } = changes;\r\n XIsChange(disabled) && this.setDisabled();\r\n }\r\n\r\n ngOnInit() {\r\n this.setControls();\r\n this.setClassMap();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setDisabled();\r\n }\r\n\r\n setControls() {\r\n if (this.controls && this.controls.length > 0) {\r\n this.controlsType = this.controls[0].controls ? 'rows' : 'controls';\r\n }\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XFormPrefix}-${this.controlsType}`] = true;\r\n }\r\n\r\n setDisabled() {\r\n if (Object.keys(this.controlComponents).length === 0) return;\r\n if (this.disabled) {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabled = true;\r\n control.required = false;\r\n delete (control as any).pattern;\r\n type.setValidators && type.setValidators();\r\n control.formControlChanges();\r\n }\r\n } else {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabled = type.disabled as XBoolean;\r\n control.required = type.required as XBoolean;\r\n control.pattern = type.pattern as RegExp | RegExp[];\r\n type.setValidators && type.setValidators();\r\n control.formControlChanges();\r\n }\r\n }\r\n this.formGroup.updateValueAndValidity();\r\n }\r\n\r\n setValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.formControlValidator();\r\n type.setValidators && type.setValidators();\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n resetValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control] = [this.controlComponents[key]];\r\n control.validator = false;\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getValidatorMessages(): string[] {\r\n let result: string[] = [];\r\n if (this.formGroup.valid) return result;\r\n else {\r\n const eachControls = (array: XFormControlOption[]) => {\r\n for (const ctr of array) {\r\n const formCtr = this.formGroup.controls[ctr.id] as XFormControl;\r\n if (formCtr && formCtr.invalid) {\r\n result = [...result, ...(formCtr.messages as string[])];\r\n }\r\n }\r\n };\r\n if (this.controlsType === 'rows') {\r\n for (const row of this.controls as XFormRow[]) {\r\n eachControls(row.controls);\r\n }\r\n } else {\r\n eachControls(this.controls as XFormControlOption[]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n onSubmit(event: SubmitEvent) {\r\n this.setValidator();\r\n this.xSubmit.emit(event);\r\n }\r\n\r\n trackByControl(_index: number, item: XFormControlOption) {\r\n return item.id;\r\n }\r\n}\r\n","<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup\"\r\n [style.width]=\"width\"\r\n [style.padding-bottom.rem]=\"controlsType === 'controls' ? this.space : 0\"\r\n [ngClass]=\"classMap\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n <ng-container [ngSwitch]=\"controlsType\">\r\n <ng-container *ngSwitchCase=\"'controls'\">\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rows'\">\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n <ng-container *ngFor=\"let row of rows\">\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space\">\r\n <x-col\r\n [style.padding-top.rem]=\"space\"\r\n [span]=\"!control.span ? span : control.span\"\r\n *ngFor=\"let control of controls; trackBy: trackByControl\"\r\n [hidden]=\"control.hidden\"\r\n >\r\n <ng-container *xOutlet=\"controlTpl[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\" [form]=\"this\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n <x-icon *ngIf=\"row.icon\" [type]=\"row.icon\"></x-icon>\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XFormComponent } from './form.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XLayoutModule } from '@ng-nest/ui/layout';\r\nimport { XControlComponent } from './control.component';\r\nimport { XFormProperty, XControlProperty } from './form.property';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XSelectModule } from '@ng-nest/ui/select';\r\nimport { XCascadeModule } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxModule } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerModule } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerModule } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberModule } from '@ng-nest/ui/input-number';\r\nimport { XRadioModule } from '@ng-nest/ui/radio';\r\nimport { XRateModule } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectModule } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchModule } from '@ng-nest/ui/switch';\r\nimport { XTimePickerModule } from '@ng-nest/ui/time-picker';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XFindModule } from '@ng-nest/ui/find';\r\nimport { XTextareaModule } from '@ng-nest/ui/textarea';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteModule } from '@ng-nest/ui/auto-complete';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\n\r\nconst modules = [\r\n XLayoutModule,\r\n XIconModule,\r\n XInputModule,\r\n XSelectModule,\r\n XCascadeModule,\r\n XCheckboxModule,\r\n XColorPickerModule,\r\n XDatePickerModule,\r\n XInputNumberModule,\r\n XRadioModule,\r\n XRateModule,\r\n XSliderSelectModule,\r\n XSwitchModule,\r\n XTimePickerModule,\r\n XTextareaModule,\r\n XFindModule,\r\n XAutoCompleteModule,\r\n XOutletModule,\r\n XBaseFormModule,\r\n XI18nModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [XFormComponent, XControlComponent, XFormProperty, XControlProperty],\r\n exports: [XFormComponent, XControlComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, ...modules]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i4","i5","i6","i7.XControlComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/control.component.ts","../../../../lib/ng-nest/ui/form/control.component.html","../../../../lib/ng-nest/ui/form/form.component.ts","../../../../lib/ng-nest/ui/form/form.component.html","../../../../lib/ng-nest/ui/form/form.module.ts","../../../../lib/ng-nest/ui/form/ng-nest-ui-form.ts"],"sourcesContent":["import { XIdentity, XIdentityProperty, XBoolean, XIsEmpty, XNumber, XInputNumber, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef, Output, EventEmitter } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { XInputOption, XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectOption, XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XCascadeOption, XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxOption, XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerOption, XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerOption, XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberOption, XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioOption, XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateOption, XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectOption, XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchOption, XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTimePickerOption, XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { XTextareaOption, XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XFindOption, XFindComponent } from '@ng-nest/ui/find';\r\nimport { XFormOption, XFormProp } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteOption, XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\n\r\n/**\r\n * Form\r\n * @selector x-form\r\n * @decorator component\r\n */\r\nexport const XFormPrefix = 'x-form';\r\nconst X_CONFIG_NAME = 'form';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XFormTemplate = { [property: string]: TemplateRef<any> };\r\n/**\r\n * Form Property\r\n */\r\n@Component({ selector: `${XFormPrefix}-property`, template: '' })\r\nexport class XFormProperty extends XFormProp {\r\n /**\r\n * @zh_CN 表单 FormGroup\r\n * @en_US Form FormGroup\r\n */\r\n @Input() formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n /**\r\n * @zh_CN 表单名称\r\n * @en_US Form name\r\n */\r\n @Input() title?: string;\r\n /**\r\n * @zh_CN 控件间距,单位rem\r\n * @en_US Control spacing, unit rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 1) @XInputNumber() space?: XNumber;\r\n /**\r\n * @zh_CN 控件宽度,24栅格\r\n * @en_US Control width, 24 grid\r\n */\r\n @Input() @XInputNumber() span?: XNumber;\r\n /**\r\n * @zh_CN 标签后缀\r\n * @en_US Label suffix\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, '') labelSuffix?: string;\r\n /**\r\n * @zh_CN 表单控件\r\n * @en_US Form control\r\n */\r\n @Input() controls: XFormControlOption[] | XFormRow[] = [];\r\n /**\r\n * @zh_CN 表单宽度\r\n * @en_US Form width\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '100%') width: string = '100%';\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n @Input() controlTpl: XFormTemplate = {};\r\n /**\r\n * @zh_CN Submit\r\n * @en_US Submit\r\n */\r\n @Output() xSubmit = new EventEmitter<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption extends XIdentityProperty {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 初始默认值\r\n * @en_US Default value\r\n */\r\n defaultValue?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: XBoolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Read only\r\n */\r\n readonly?: XBoolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: XBoolean;\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hide\r\n */\r\n hidden?: XBoolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport class XControl extends XIdentity implements XControlOption {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 开启这个,执行 reset 的时候初始为设置的 value,默认为 null\r\n * @en_US Enable this. When performing a reset, the initial value is the set value, which defaults to null\r\n */\r\n nonNullable?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: XBoolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Read only\r\n */\r\n readonly?: XBoolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: XBoolean;\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hide\r\n */\r\n hidden?: XBoolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 设置验证\r\n * @en_US Set verification\r\n */\r\n setValidators?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n\r\n constructor(option: XControlOption = {}) {\r\n super();\r\n if (XIsEmpty(this.value)) this.value = '';\r\n Object.assign(this, option);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 表单行对象\r\n * @en_US Form row object\r\n */\r\nexport interface XFormRow {\r\n /**\r\n * @zh_CN 行标题\r\n * @en_US Row header\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 行图标\r\n * @en_US Row icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 行中的控件\r\n * @en_US Control in row\r\n */\r\n controls: XFormControlOption[];\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hidden\r\n */\r\n hidden?: XBoolean;\r\n}\r\n\r\n/**\r\n * Control\r\n * @selector x-control\r\n * @decorator component\r\n */\r\nexport const XControlPrefix = 'x-control';\r\n\r\n/**\r\n * Control Property\r\n */\r\n@Component({ selector: `${XControlPrefix}-property`, template: '' })\r\nexport class XControlProperty {\r\n /**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\n @Input() option?: XControlOption;\r\n}\r\n\r\nexport class XFormControl extends UntypedFormControl {\r\n /**\r\n * @zh_CN 提示信息\r\n * @en_US Prompt information\r\n */\r\n messages?: string[] = [];\r\n}\r\n\r\nexport type XFormControlOption =\r\n | XInputControlOption\r\n | XSelectControlOption\r\n | XCascadeControlOption\r\n | XCheckboxControlOption\r\n | XColorPickerControlOption\r\n | XDatePickerControlOption\r\n | XInputNumberControlOption\r\n | XRadioControlOption\r\n | XRateControlOption\r\n | XSliderSelectControlOption\r\n | XSwitchControlOption\r\n | XTimePickerControlOption\r\n | XFindControlOption\r\n | XTemplateControlOption;\r\n\r\nexport type XFormControlComponent =\r\n | XInputComponent\r\n | XSelectComponent\r\n | XCascadeComponent\r\n | XCheckboxComponent\r\n | XColorPickerComponent\r\n | XDatePickerComponent\r\n | XInputNumberComponent\r\n | XRadioComponent\r\n | XRateComponent\r\n | XSliderSelectComponent\r\n | XSwitchComponent\r\n | XTimePickerComponent\r\n | XTextareaComponent\r\n | XFindComponent\r\n | XAutoCompleteComponent;\r\n\r\nexport type XFormControlType =\r\n | XInputControl\r\n | XSelectControl\r\n | XCascadeControl\r\n | XCheckboxControl\r\n | XColorPickerControl\r\n | XDatePickerControl\r\n | XInputNumberControl\r\n | XRadioControl\r\n | XRateControl\r\n | XSliderSelectControl\r\n | XSwitchControl\r\n | XTimePickerControl\r\n | XTextareaControl\r\n | XFindControl\r\n | XAutoCompleteControl;\r\n\r\nexport type XControlType =\r\n | 'input'\r\n | 'select'\r\n | 'cascade'\r\n | 'checkbox'\r\n | 'color-picker'\r\n | 'date-picker'\r\n | 'input-number'\r\n | 'radio'\r\n | 'rate'\r\n | 'slider-select'\r\n | 'switch'\r\n | 'time-picker'\r\n | 'textarea'\r\n | 'find'\r\n | 'auto-complete'\r\n | 'template';\r\n\r\n/**\r\n * Input Control\r\n */\r\nexport interface XInputControlOption extends XControlOption, XInputOption {}\r\nexport class XInputControl extends XControl {\r\n constructor(option: XInputControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Select Control\r\n */\r\nexport interface XSelectControlOption extends XControlOption, XSelectOption {}\r\nexport class XSelectControl extends XControl {\r\n constructor(option: XSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Cascade Control\r\n */\r\nexport interface XCascadeControlOption extends XControlOption, XCascadeOption {}\r\nexport class XCascadeControl extends XControl {\r\n constructor(option: XCascadeControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox Control\r\n */\r\nexport interface XCheckboxControlOption extends XControlOption, XCheckboxOption {}\r\nexport class XCheckboxControl extends XControl {\r\n constructor(option: XCheckboxControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * ColorPicker Control\r\n */\r\nexport interface XColorPickerControlOption extends XControlOption, XColorPickerOption {}\r\nexport class XColorPickerControl extends XControl {\r\n constructor(option: XColorPickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * DatePicker Control\r\n */\r\nexport interface XDatePickerControlOption extends XControlOption, XDatePickerOption {}\r\nexport class XDatePickerControl extends XControl {\r\n constructor(option: XDatePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * InputNumber Control\r\n */\r\nexport interface XInputNumberControlOption extends XControlOption, XInputNumberOption {}\r\nexport class XInputNumberControl extends XControl {\r\n constructor(option: XInputNumberControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Radio Control\r\n */\r\nexport interface XRadioControlOption extends XControlOption, XRadioOption {}\r\nexport class XRadioControl extends XControl {\r\n constructor(option: XRadioControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Rate Control\r\n */\r\nexport interface XRateControlOption extends XControlOption, XRateOption {}\r\nexport class XRateControl extends XControl {\r\n constructor(option: XRateControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * SliderSelect Control\r\n */\r\nexport interface XSliderSelectControlOption extends XControlOption, XSliderSelectOption {}\r\nexport class XSliderSelectControl extends XControl {\r\n constructor(option: XSliderSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Switch Control\r\n */\r\nexport interface XSwitchControlOption extends XControlOption, XSwitchOption {}\r\nexport class XSwitchControl extends XControl {\r\n constructor(option: XSwitchControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * TimePicker Control\r\n */\r\nexport interface XTimePickerControlOption extends XControlOption, XTimePickerOption {}\r\nexport class XTimePickerControl extends XControl {\r\n constructor(option: XTimePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Textarea Control\r\n */\r\nexport interface XTextareaControlOption extends XControlOption, XTextareaOption {}\r\nexport class XTextareaControl extends XControl {\r\n constructor(option: XTextareaControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Find Control\r\n */\r\nexport interface XFindControlOption extends XControlOption, XFindOption {}\r\nexport class XFindControl extends XControl {\r\n constructor(option: XFindControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * AutoComplete Control\r\n */\r\nexport interface XAutoCompleteControlOption extends XControlOption, XAutoCompleteOption {}\r\nexport class XAutoCompleteControl extends XControl {\r\n constructor(option: XAutoCompleteControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Template Control\r\n */\r\nexport interface XTemplateControlOption extends XControlOption, XFormOption {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport {\r\n XControlProperty,\r\n XFormControlOption,\r\n XFormControlComponent,\r\n XFormControlType,\r\n XCascadeControl,\r\n XCascadeControlOption,\r\n XInputControl,\r\n XInputControlOption,\r\n XSelectControl,\r\n XSelectControlOption,\r\n XCheckboxControl,\r\n XCheckboxControlOption,\r\n XRadioControl,\r\n XRadioControlOption,\r\n XDatePickerControlOption,\r\n XDatePickerControl,\r\n XInputNumberControl,\r\n XInputNumberControlOption,\r\n XSwitchControl,\r\n XSwitchControlOption,\r\n XRateControl,\r\n XRateControlOption,\r\n XSliderSelectControl,\r\n XSliderSelectControlOption,\r\n XTimePickerControl,\r\n XTimePickerControlOption,\r\n XColorPickerControl,\r\n XColorPickerControlOption,\r\n XFormControl,\r\n XFindControl,\r\n XFindControlOption,\r\n XTextareaControlOption,\r\n XTextareaControl,\r\n XAutoCompleteControl,\r\n XAutoCompleteControlOption\r\n} from './form.property';\r\nimport { FormControlName, Validators, UntypedFormControl, ValidatorFn, ControlValueAccessor, FormControlStatus } from '@angular/forms';\r\nimport { XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: 'x-control',\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XControlComponent extends XControlProperty implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() override option!: XFormControlOption;\r\n @Input() form: any;\r\n @ViewChild(FormControlName) control!: FormControlName;\r\n locale: XI18nForm = {};\r\n private _sharedProps = ['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign'];\r\n private _changeProps = ['label', ...this._sharedProps];\r\n private _control!: XFormControlType;\r\n private _validatorFns: ValidatorFn[] = [];\r\n private _unSubject = new Subject<void>();\r\n private _formControl!: UntypedFormControl;\r\n\r\n constructor(\r\n // @Host() @Optional() public form: XFormComponent,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.option = { ...this.option };\r\n this.setProps();\r\n if (XIsEmpty(this.option.label)) this.option.label = '';\r\n this.option.label = `${this.option.label}${this.form.labelSuffix}`;\r\n this._control = this.createControl(this.option);\r\n this._formControl = new UntypedFormControl(this._control.value, { nonNullable: this._control.nonNullable });\r\n this.setValidators();\r\n this._formControl.statusChanges.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.setMessages(x);\r\n });\r\n this._control.setValidators = () => this.setValidators();\r\n this.form.formGroup.addControl(this._control.id, this._formControl);\r\n this.option.change = () => {\r\n this._changeProps.forEach((x: string) => {\r\n if (this.control.valueAccessor && this.option[x]) {\r\n (this.control.valueAccessor as any)[x] = this.option[x];\r\n }\r\n });\r\n this.form.controlComponents[this._control.id].formControlChanges();\r\n };\r\n this.i18n.localeChange\r\n .pipe(\r\n map((x) => x.form as XI18nForm),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.locale = x;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n Object.assign(this.control.valueAccessor!, this._control as ControlValueAccessor);\r\n this.form.controlTypes[this._control.id] = this._control;\r\n this.form.controlComponents[this._control.id] = this.control.valueAccessor as XFormControlComponent;\r\n this.form.controlComponents[this._control.id].formControlChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setValidators() {\r\n this._validatorFns = [];\r\n if (this._control.disabled || this.form.disabled) {\r\n this._formControl.disable();\r\n } else {\r\n this._formControl.enable();\r\n }\r\n if (this._control.required && !this.form.disabled) {\r\n this._validatorFns = [...this._validatorFns, Validators.required];\r\n }\r\n if (this._control.pattern) {\r\n this.setPattern();\r\n }\r\n if (XIsFunction(this._control.inputValidator)) {\r\n this._validatorFns = [...this._validatorFns, XFormInputValidator(this._control.inputValidator!)];\r\n }\r\n this._formControl.setValidators(this._validatorFns);\r\n this._formControl.updateValueAndValidity();\r\n }\r\n\r\n setProps() {\r\n for (let prop of this._sharedProps) {\r\n if (XIsEmpty(this.option[prop])) this.option[prop] = (this.form as any)[prop];\r\n }\r\n }\r\n\r\n setPattern() {\r\n if (Array.isArray(this._control.pattern)) {\r\n for (const pt of this._control.pattern) {\r\n this._validatorFns = [...this._validatorFns, Validators.pattern(pt)];\r\n }\r\n } else {\r\n this._validatorFns = [...this._validatorFns, Validators.pattern(this._control.pattern as RegExp)];\r\n }\r\n }\r\n\r\n getPatternMsg(pattern: string) {\r\n if (Array.isArray(this._control.pattern)) {\r\n return (this._control.message as Array<any>)[this._control.pattern.findIndex((x) => String(x) === pattern)];\r\n } else {\r\n return this._control.message;\r\n }\r\n }\r\n\r\n setMessages(state: FormControlStatus) {\r\n let control: XFormControl = this._formControl;\r\n if (state === 'INVALID' && this._formControl.errors !== null) {\r\n let messages: string[] = [];\r\n for (const key in control.errors) {\r\n const label = this._control.label || this._control.id;\r\n if (key === 'required') {\r\n messages = [...messages, `${label} ${this.locale?.required || 'required'}`];\r\n } else if (key === 'pattern') {\r\n messages = [...messages, `${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];\r\n } else if (key === 'inputValidator') {\r\n messages = [...messages, `${label} ${this._control.message}`];\r\n }\r\n }\r\n control.messages = messages;\r\n } else if (state === 'VALID') {\r\n control.messages = [];\r\n }\r\n }\r\n\r\n createControl(option: XFormControlOption) {\r\n switch (option.control) {\r\n case 'input':\r\n return new XInputControl(option as XInputControlOption);\r\n case 'select':\r\n return new XSelectControl(option as XSelectControlOption);\r\n case 'checkbox':\r\n return new XCheckboxControl(option as XCheckboxControlOption);\r\n case 'radio':\r\n return new XRadioControl(option as XRadioControlOption);\r\n case 'switch':\r\n return new XSwitchControl(option as XSwitchControlOption);\r\n case 'rate':\r\n return new XRateControl(option as XRateControlOption);\r\n case 'date-picker':\r\n return new XDatePickerControl(option as XDatePickerControlOption);\r\n case 'time-picker':\r\n return new XTimePickerControl(option as XTimePickerControlOption);\r\n case 'input-number':\r\n return new XInputNumberControl(option as XInputNumberControlOption);\r\n case 'slider-select':\r\n return new XSliderSelectControl(option as XSliderSelectControlOption);\r\n case 'cascade':\r\n return new XCascadeControl(option as XCascadeControlOption);\r\n case 'color-picker':\r\n return new XColorPickerControl(option as XColorPickerControlOption);\r\n case 'textarea':\r\n return new XTextareaControl(option as XTextareaControlOption);\r\n case 'find':\r\n return new XFindControl(option as XFindControlOption);\r\n case 'auto-complete':\r\n return new XAutoCompleteControl(option as XAutoCompleteControlOption);\r\n default:\r\n return new XInputControl(option as XInputControlOption);\r\n }\r\n }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup\">\r\n <ng-container [ngSwitch]=\"option.control\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <x-input [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-input>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <x-select [formControlName]=\"option.id\"></x-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cascade'\">\r\n <x-cascade [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-cascade>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox [formControlName]=\"option.id\"></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'color-picker'\">\r\n <x-color-picker [formControlName]=\"option.id\"></x-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-picker'\">\r\n <x-date-picker [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-date-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input-number'\">\r\n <x-input-number [formControlName]=\"option.id\"></x-input-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <x-radio [formControlName]=\"option.id\"></x-radio>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rate'\">\r\n <x-rate [formControlName]=\"option.id\"></x-rate>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'slider-select'\">\r\n <x-slider-select [formControlName]=\"option.id\"></x-slider-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <x-switch [formControlName]=\"option.id\"></x-switch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'time-picker'\">\r\n <x-time-picker [formControlName]=\"option.id\"></x-time-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <x-textarea [formControlName]=\"option.id\" (clearEmit)=\"option.clearClick && option.clearClick($event)\"></x-textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'auto-complete'\">\r\n <x-auto-complete [formControlName]=\"option.id\" (nodeEmit)=\"option.nodeClick && option.nodeClick($event)\"></x-auto-complete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'find'\">\r\n <x-find [formControlName]=\"option.id\"></x-find>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, SimpleChanges } from '@angular/core';\r\nimport {\r\n XFormProperty,\r\n XFormRow,\r\n XFormPrefix,\r\n XFormControlOption,\r\n XFormControl,\r\n XFormControlComponent,\r\n XFormControlType\r\n} from './form.property';\r\nimport { XIsChange, XBoolean, XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XFormPrefix}`,\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnInit {\r\n controlsType!: 'controls' | 'rows';\r\n controlComponents: { [property: string]: XFormControlComponent } = {};\r\n controlTypes: { [property: string]: XFormControlType } = {};\r\n formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n\r\n constructor(public cdr: ChangeDetectorRef, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { disabled } = changes;\r\n XIsChange(disabled) && this.setDisabled();\r\n }\r\n\r\n ngOnInit() {\r\n this.setControls();\r\n this.setClassMap();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setDisabled();\r\n }\r\n\r\n setControls() {\r\n if (this.controls && this.controls.length > 0) {\r\n this.controlsType = this.controls[0].controls ? 'rows' : 'controls';\r\n }\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XFormPrefix}-${this.controlsType}`] = true;\r\n }\r\n\r\n setDisabled() {\r\n if (Object.keys(this.controlComponents).length === 0) return;\r\n if (this.disabled) {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabled = true;\r\n control.required = false;\r\n delete (control as any).pattern;\r\n type.setValidators && type.setValidators();\r\n control.formControlChanges();\r\n }\r\n } else {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabled = type.disabled as XBoolean;\r\n control.required = type.required as XBoolean;\r\n control.pattern = type.pattern as RegExp | RegExp[];\r\n type.setValidators && type.setValidators();\r\n control.formControlChanges();\r\n }\r\n }\r\n this.formGroup.updateValueAndValidity();\r\n }\r\n\r\n setValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.formControlValidator();\r\n type.setValidators && type.setValidators();\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n resetValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control] = [this.controlComponents[key]];\r\n control.validator = false;\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getValidatorMessages(): string[] {\r\n let result: string[] = [];\r\n if (this.formGroup.valid) return result;\r\n else {\r\n const eachControls = (array: XFormControlOption[]) => {\r\n for (const ctr of array) {\r\n const formCtr = this.formGroup.controls[ctr.id] as XFormControl;\r\n if (formCtr && formCtr.invalid) {\r\n result = [...result, ...(formCtr.messages as string[])];\r\n }\r\n }\r\n };\r\n if (this.controlsType === 'rows') {\r\n for (const row of this.controls as XFormRow[]) {\r\n eachControls(row.controls);\r\n }\r\n } else {\r\n eachControls(this.controls as XFormControlOption[]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n onSubmit(event: SubmitEvent) {\r\n this.setValidator();\r\n this.xSubmit.emit(event);\r\n }\r\n\r\n trackByControl(_index: number, item: XFormControlOption) {\r\n return item.id;\r\n }\r\n}\r\n","<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup\"\r\n [style.width]=\"width\"\r\n [style.padding-bottom.rem]=\"controlsType === 'controls' ? this.space : 0\"\r\n [ngClass]=\"classMap\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n <ng-container [ngSwitch]=\"controlsType\">\r\n <ng-container *ngSwitchCase=\"'controls'\">\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'rows'\">\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n <ng-container *ngFor=\"let row of rows\">\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space\">\r\n <x-col\r\n [style.padding-top.rem]=\"space\"\r\n [span]=\"!control.span ? span : control.span\"\r\n *ngFor=\"let control of controls; trackBy: trackByControl\"\r\n [hidden]=\"control.hidden\"\r\n >\r\n <ng-container *xOutlet=\"controlTpl[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\" [form]=\"this\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n <x-icon *ngIf=\"row.icon\" [type]=\"row.icon\"></x-icon>\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XFormComponent } from './form.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XLayoutModule } from '@ng-nest/ui/layout';\r\nimport { XControlComponent } from './control.component';\r\nimport { XFormProperty, XControlProperty } from './form.property';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XSelectModule } from '@ng-nest/ui/select';\r\nimport { XCascadeModule } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxModule } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerModule } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerModule } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberModule } from '@ng-nest/ui/input-number';\r\nimport { XRadioModule } from '@ng-nest/ui/radio';\r\nimport { XRateModule } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectModule } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchModule } from '@ng-nest/ui/switch';\r\nimport { XTimePickerModule } from '@ng-nest/ui/time-picker';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XFindModule } from '@ng-nest/ui/find';\r\nimport { XTextareaModule } from '@ng-nest/ui/textarea';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteModule } from '@ng-nest/ui/auto-complete';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\n\r\nconst modules = [\r\n XLayoutModule,\r\n XIconModule,\r\n XInputModule,\r\n XSelectModule,\r\n XCascadeModule,\r\n XCheckboxModule,\r\n XColorPickerModule,\r\n XDatePickerModule,\r\n XInputNumberModule,\r\n XRadioModule,\r\n XRateModule,\r\n XSliderSelectModule,\r\n XSwitchModule,\r\n XTimePickerModule,\r\n XTextareaModule,\r\n XFindModule,\r\n XAutoCompleteModule,\r\n XOutletModule,\r\n XBaseFormModule,\r\n XI18nModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [XFormComponent, XControlComponent, XFormProperty, XControlProperty],\r\n exports: [XFormComponent, XControlComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, ...modules]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i4","i5","i6","i7.XControlComponent"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { interval } from 'rxjs';
1
+ import { interval, fromEvent } from 'rxjs';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, HostListener, NgModule } from '@angular/core';
3
+ import { Component, Input, inject, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';
4
4
  import * as i1 from '@ng-nest/ui/core';
5
5
  import { XInputNumber, XWithConfig, XInputBoolean, XClearClass, XIsEmpty, isNotNil } from '@ng-nest/ui/core';
6
6
  import { __decorate } from 'tslib';
7
7
  import { XControlValueAccessor, XValueAccessor, XBaseFormModule } from '@ng-nest/ui/base-form';
8
8
  import * as i2 from '@angular/common';
9
- import { CommonModule } from '@angular/common';
9
+ import { DOCUMENT, CommonModule } from '@angular/common';
10
10
  import * as i3 from '@angular/forms';
11
11
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
12
12
  import * as i4 from '@ng-nest/ui/input';
@@ -105,9 +105,6 @@ class XInputNumberComponent extends XInputNumberProperty {
105
105
  this.setDisplayValue();
106
106
  this.cdr.detectChanges();
107
107
  }
108
- onMouseup(event) {
109
- this.up(event);
110
- }
111
108
  constructor(renderer, cdr, configService) {
112
109
  super();
113
110
  this.renderer = renderer;
@@ -119,6 +116,8 @@ class XInputNumberComponent extends XInputNumberProperty {
119
116
  this.icon = '';
120
117
  this.iconSpin = false;
121
118
  this.clearable = false;
119
+ this.isDown = false;
120
+ this.document = inject(DOCUMENT);
122
121
  }
123
122
  ngOnInit() {
124
123
  this.setFlex(this.inputNumber.nativeElement, this.renderer, this.justify, this.align, this.direction);
@@ -149,10 +148,14 @@ class XInputNumberComponent extends XInputNumberProperty {
149
148
  return;
150
149
  event.preventDefault();
151
150
  event.stopPropagation();
151
+ this.isDown = true;
152
152
  this.timer = setTimeout(() => {
153
153
  this.mousedown$ = interval(Number(this.debounce)).subscribe(() => {
154
154
  this.plus(event, limit, increase);
155
155
  });
156
+ this.mouseup$ = fromEvent(this.document.documentElement, 'mouseup').subscribe((event) => {
157
+ this.up(event);
158
+ });
156
159
  }, 150);
157
160
  }
158
161
  up(event) {
@@ -160,8 +163,11 @@ class XInputNumberComponent extends XInputNumberProperty {
160
163
  return;
161
164
  event.preventDefault();
162
165
  event.stopPropagation();
166
+ this.isDown = false;
163
167
  if (this.mousedown$)
164
168
  this.mousedown$.unsubscribe();
169
+ if (this.mouseup$)
170
+ this.mouseup$.unsubscribe();
165
171
  }
166
172
  plus(event, limit, increase = true) {
167
173
  if (this.disabled)
@@ -198,7 +204,7 @@ class XInputNumberComponent extends XInputNumberProperty {
198
204
  this.cdr.detectChanges();
199
205
  }
200
206
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: XInputNumberComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
201
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: XInputNumberComponent, selector: "x-input-number", host: { listeners: { "document:mouseup": "onMouseup($event)" } }, providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || minDisabled\"\r\n (click)=\"!minDisabled && plus($event, step, false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled && down($event, step, false)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [validator]=\"validator\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"beforeButtonTpl\"\r\n [after]=\"afterButtonTpl\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n (xInput)=\"formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || maxDisabled\"\r\n (click)=\"!maxDisabled && plus($event, step); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled && down($event, step)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <ng-container *ngIf=\"invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0;width:100%}.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XInputComponent, selector: "x-input" }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
207
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: XInputNumberComponent, selector: "x-input-number", providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || minDisabled\"\r\n (click)=\"!minDisabled && plus($event, step, false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled && down($event, step, false)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [validator]=\"validator\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"beforeButtonTpl\"\r\n [after]=\"afterButtonTpl\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n (xInput)=\"formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || maxDisabled\"\r\n (click)=\"!maxDisabled && plus($event, step); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled && down($event, step)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <ng-container *ngIf=\"invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0;width:100%}.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XInputComponent, selector: "x-input" }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
202
208
  }
203
209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: XInputNumberComponent, decorators: [{
204
210
  type: Component,
@@ -206,9 +212,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
206
212
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { inputNumber: [{
207
213
  type: ViewChild,
208
214
  args: ['inputNumber', { static: true }]
209
- }], onMouseup: [{
210
- type: HostListener,
211
- args: ['document:mouseup', ['$event']]
212
215
  }] } });
213
216
 
214
217
  class XInputNumberModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-input-number.mjs","sources":["../../../../lib/ng-nest/ui/input-number/input-number.property.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.html","../../../../lib/ng-nest/ui/input-number/input-number.module.ts","../../../../lib/ng-nest/ui/input-number/ng-nest-ui-input-number.ts"],"sourcesContent":["import { XBoolean, XInputBoolean, XInputNumber, XNumber, XSize, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Component } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * InputNumber\r\n * @selector x-input-number\r\n * @decorator component\r\n */\r\nexport const XInputNumberPrefix = 'x-input-number';\r\n\r\nconst X_CONFIG_NAME = 'inputNumber';\r\n\r\n/**\r\n * InputNumber Property\r\n */\r\n@Component({ selector: `${XInputNumberPrefix}-property`, template: '' })\r\nexport class XInputNumberProperty extends XControlValueAccessor<any> implements XInputNumberOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n @Input() @XInputNumber() min: XNumber = Number.MIN_SAFE_INTEGER;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n @Input() @XInputNumber() max: XNumber = Number.MAX_SAFE_INTEGER;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n @Input() @XInputNumber() step: XNumber = 1;\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n @Input() @XInputNumber() debounce: XNumber = 40;\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n @Input() @XInputNumber() precision: XNumber = 0;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n\r\n /**\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formatter\r\n */\r\n @Input() formatter!: (value: number) => XNumber;\r\n}\r\n\r\n/**\r\n * InputNumber Option\r\n * @undocument true\r\n */\r\nexport interface XInputNumberOption extends XFormOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n min?: XNumber;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n max?: XNumber;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n step?: XNumber;\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n debounce?: XNumber;\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n precision?: XNumber;\r\n\r\n /**\r\n *\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formate\r\n */\r\n xFormatter?: (value: number) => XNumber;\r\n}\r\n","import { Subscription, interval } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n HostListener,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XIsEmpty, XNumber, XClearClass, XConfigService, isNotNil } from '@ng-nest/ui/core';\r\nimport { XInputNumberPrefix, XInputNumberProperty } from './input-number.property';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XInputNumberPrefix}`,\r\n templateUrl: './input-number.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XInputNumberComponent)]\r\n})\r\nexport class XInputNumberComponent extends XInputNumberProperty implements OnInit {\r\n @ViewChild('inputNumber', { static: true }) inputNumber!: ElementRef<HTMLElement>;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.setDisplayValue();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n displayValue: any = '';\r\n minDisabled: boolean = false;\r\n maxDisabled: boolean = false;\r\n mousedown$!: Subscription;\r\n timer: any;\r\n icon: string = '';\r\n iconSpin = false;\r\n clearable = false;\r\n\r\n @HostListener('document:mouseup', ['$event']) onMouseup(event: Event) {\r\n this.up(event);\r\n }\r\n\r\n constructor(public renderer: Renderer2, public override cdr: ChangeDetectorRef, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.inputNumber.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setDisplayValue() {\r\n if (!XIsEmpty(this.value)) this.displayValue = Number(this.value).toFixed(Number(this.precision));\r\n if (!this.formatter) return;\r\n const displayValue = isNotNil(this.formatter(Number(this.value))) ? this.formatter(Number(this.value)) : '';\r\n if (isNotNil(displayValue)) {\r\n this.displayValue = displayValue;\r\n }\r\n }\r\n\r\n change(value: any) {\r\n this.verify(value);\r\n if (this.onChange) this.onChange(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n down(event: Event, limit: XNumber, increase: boolean = true): void {\r\n if (this.disabled) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.timer = setTimeout(() => {\r\n this.mousedown$ = interval(Number(this.debounce)).subscribe(() => {\r\n this.plus(event, limit, increase);\r\n });\r\n }, 150);\r\n }\r\n\r\n up(event: Event) {\r\n if (this.disabled) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.mousedown$) this.mousedown$.unsubscribe();\r\n }\r\n\r\n plus(event: Event, limit: XNumber, increase: boolean = true) {\r\n if (this.disabled) return;\r\n limit = Number(limit);\r\n if (!increase) limit = -limit;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.timer) clearTimeout(this.timer);\r\n if (Number.isNaN(+this.value)) this.value = 0;\r\n let value = Number(this.value) + limit;\r\n this.verify(value);\r\n this.cdr.detectChanges();\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n verify(value: any) {\r\n const oldValue: number = this.value;\r\n this.value = value;\r\n if (Number.isNaN(+this.value)) {\r\n this.value = oldValue;\r\n return;\r\n }\r\n this.maxDisabled = value >= this.max;\r\n this.minDisabled = value <= this.min;\r\n this.value = this.maxDisabled ? this.max : this.minDisabled ? this.min : value;\r\n this.setDisplayValue();\r\n }\r\n\r\n formControlChanges() {\r\n this.ngOnInit();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #inputNumber class=\"x-input-number\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || minDisabled\"\r\n (click)=\"!minDisabled && plus($event, step, false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled && down($event, step, false)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [validator]=\"validator\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"beforeButtonTpl\"\r\n [after]=\"afterButtonTpl\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n (xInput)=\"formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || maxDisabled\"\r\n (click)=\"!maxDisabled && plus($event, step); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled && down($event, step)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <ng-container *ngIf=\"invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XInputNumberComponent } from './input-number.component';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XInputNumberProperty } from './input-number.property';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\n\r\n@NgModule({\r\n declarations: [XInputNumberComponent, XInputNumberProperty],\r\n exports: [XInputNumberComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XInputModule, XButtonModule, XBaseFormModule]\r\n})\r\nexport class XInputNumberModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-input-number.mjs","sources":["../../../../lib/ng-nest/ui/input-number/input-number.property.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.ts","../../../../lib/ng-nest/ui/input-number/input-number.component.html","../../../../lib/ng-nest/ui/input-number/input-number.module.ts","../../../../lib/ng-nest/ui/input-number/ng-nest-ui-input-number.ts"],"sourcesContent":["import { XBoolean, XInputBoolean, XInputNumber, XNumber, XSize, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Component } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * InputNumber\r\n * @selector x-input-number\r\n * @decorator component\r\n */\r\nexport const XInputNumberPrefix = 'x-input-number';\r\n\r\nconst X_CONFIG_NAME = 'inputNumber';\r\n\r\n/**\r\n * InputNumber Property\r\n */\r\n@Component({ selector: `${XInputNumberPrefix}-property`, template: '' })\r\nexport class XInputNumberProperty extends XControlValueAccessor<any> implements XInputNumberOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n @Input() @XInputNumber() min: XNumber = Number.MIN_SAFE_INTEGER;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n @Input() @XInputNumber() max: XNumber = Number.MAX_SAFE_INTEGER;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n @Input() @XInputNumber() step: XNumber = 1;\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n @Input() @XInputNumber() debounce: XNumber = 40;\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n @Input() @XInputNumber() precision: XNumber = 0;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n\r\n /**\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formatter\r\n */\r\n @Input() formatter!: (value: number) => XNumber;\r\n}\r\n\r\n/**\r\n * InputNumber Option\r\n * @undocument true\r\n */\r\nexport interface XInputNumberOption extends XFormOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n min?: XNumber;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n max?: XNumber;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n step?: XNumber;\r\n /**\r\n * @zh_CN 按住后步进速度\r\n * @en_US Stepping speed after pressing\r\n */\r\n debounce?: XNumber;\r\n /**\r\n * @zh_CN 精度\r\n * @en_US Precision\r\n */\r\n precision?: XNumber;\r\n\r\n /**\r\n *\r\n * @zh_CN 数字格式化\r\n * @en_US Display Formate\r\n */\r\n xFormatter?: (value: number) => XNumber;\r\n}\r\n","import { Subscription, fromEvent, interval } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { XIsEmpty, XNumber, XClearClass, XConfigService, isNotNil } from '@ng-nest/ui/core';\r\nimport { XInputNumberPrefix, XInputNumberProperty } from './input-number.property';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XInputNumberPrefix}`,\r\n templateUrl: './input-number.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XInputNumberComponent)]\r\n})\r\nexport class XInputNumberComponent extends XInputNumberProperty implements OnInit {\r\n @ViewChild('inputNumber', { static: true }) inputNumber!: ElementRef<HTMLElement>;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.setDisplayValue();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n displayValue: any = '';\r\n minDisabled: boolean = false;\r\n maxDisabled: boolean = false;\r\n mousedown$!: Subscription;\r\n mouseup$!: Subscription;\r\n timer: any;\r\n icon: string = '';\r\n iconSpin = false;\r\n clearable = false;\r\n isDown = false;\r\n\r\n document = inject(DOCUMENT);\r\n\r\n constructor(public renderer: Renderer2, public override cdr: ChangeDetectorRef, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.inputNumber.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setDisplayValue() {\r\n if (!XIsEmpty(this.value)) this.displayValue = Number(this.value).toFixed(Number(this.precision));\r\n if (!this.formatter) return;\r\n const displayValue = isNotNil(this.formatter(Number(this.value))) ? this.formatter(Number(this.value)) : '';\r\n if (isNotNil(displayValue)) {\r\n this.displayValue = displayValue;\r\n }\r\n }\r\n\r\n change(value: any) {\r\n this.verify(value);\r\n if (this.onChange) this.onChange(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n down(event: Event, limit: XNumber, increase: boolean = true): void {\r\n if (this.disabled) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDown = true;\r\n this.timer = setTimeout(() => {\r\n this.mousedown$ = interval(Number(this.debounce)).subscribe(() => {\r\n this.plus(event, limit, increase);\r\n });\r\n this.mouseup$ = fromEvent(this.document.documentElement, 'mouseup').subscribe((event: Event) => {\r\n this.up(event);\r\n });\r\n }, 150);\r\n }\r\n\r\n up(event: Event) {\r\n if (this.disabled) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDown = false;\r\n if (this.mousedown$) this.mousedown$.unsubscribe();\r\n if (this.mouseup$) this.mouseup$.unsubscribe();\r\n }\r\n\r\n plus(event: Event, limit: XNumber, increase: boolean = true) {\r\n if (this.disabled) return;\r\n limit = Number(limit);\r\n if (!increase) limit = -limit;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.timer) clearTimeout(this.timer);\r\n if (Number.isNaN(+this.value)) this.value = 0;\r\n let value = Number(this.value) + limit;\r\n this.verify(value);\r\n this.cdr.detectChanges();\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n verify(value: any) {\r\n const oldValue: number = this.value;\r\n this.value = value;\r\n if (Number.isNaN(+this.value)) {\r\n this.value = oldValue;\r\n return;\r\n }\r\n this.maxDisabled = value >= this.max;\r\n this.minDisabled = value <= this.min;\r\n this.value = this.maxDisabled ? this.max : this.minDisabled ? this.min : value;\r\n this.setDisplayValue();\r\n }\r\n\r\n formControlChanges() {\r\n this.ngOnInit();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #inputNumber class=\"x-input-number\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || minDisabled\"\r\n (click)=\"!minDisabled && plus($event, step, false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled && down($event, step, false)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [validator]=\"validator\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n (ngModelChange)=\"change($event)\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"beforeButtonTpl\"\r\n [after]=\"afterButtonTpl\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n (xInput)=\"formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size\"\r\n [onlyIcon]=\"!bordered\"\r\n [disabled]=\"disabled || maxDisabled\"\r\n (click)=\"!maxDisabled && plus($event, step); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled && down($event, step)\"\r\n (mouseup)=\"up($event)\"\r\n ></x-button>\r\n </ng-template>\r\n <ng-container *ngIf=\"invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XInputNumberComponent } from './input-number.component';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XInputNumberProperty } from './input-number.property';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\n\r\n@NgModule({\r\n declarations: [XInputNumberComponent, XInputNumberProperty],\r\n exports: [XInputNumberComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XInputModule, XButtonModule, XBaseFormModule]\r\n})\r\nexport class XInputNumberModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}