{"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/form.token.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, XBoolean, XIsEmpty, XNumber, XToCssPixelValue, XToNumber, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, model, input, output } 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 { XFormControlFunction, XFormOption } 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_FORM_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 XFormControlFunction(X_FORM_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 表单 FormGroup\r\n   * @en_US Form FormGroup\r\n   * @default new UntypedFormGroup({})\r\n   */\r\n  readonly formGroup = input<UntypedFormGroup>(new UntypedFormGroup({}));\r\n  /**\r\n   * @zh_CN 表单名称\r\n   * @en_US Form name\r\n   */\r\n  readonly title = input<string>('');\r\n  /**\r\n   * @zh_CN 控件间距\r\n   * @en_US Control spacing\r\n   */\r\n  readonly space = input<string, XNumber>(this.config?.space ?? '1.75rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 控件宽度，24栅格\r\n   * @en_US Control width, 24 grid\r\n   */\r\n  readonly span = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 标签后缀\r\n   * @en_US Label suffix\r\n   */\r\n  readonly labelSuffix = input<string>(this.config?.labelSuffix ?? '');\r\n  /**\r\n   * @zh_CN 表单控件\r\n   * @en_US Form control\r\n   */\r\n  readonly controls = input<XFormControlOption[] | XFormRow[]>([]);\r\n  /**\r\n   * @zh_CN 表单宽度\r\n   * @en_US Form width\r\n   */\r\n  readonly width = input<string, XNumber>(this.config?.width ?? '100%', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 自定义模板\r\n   * @en_US Custom template\r\n   */\r\n  readonly controlTpl = input<XFormTemplate>({});\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN Submit\r\n   * @en_US Submit\r\n   */\r\n  readonly xSubmit = output<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption {\r\n  /**\r\n   * @zh_CN 列 Id\r\n   * @en_US The column Id\r\n   */\r\n  id?: any;\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?: boolean;\r\n  /**\r\n   * @zh_CN 只读\r\n   * @en_US Read only\r\n   */\r\n  readonly?: boolean;\r\n  /**\r\n   * @zh_CN 必填\r\n   * @en_US Required\r\n   */\r\n  required?: boolean;\r\n  /**\r\n   * @zh_CN 隐藏\r\n   * @en_US Hide\r\n   */\r\n  hidden?: boolean;\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;\r\n  /**\r\n   * @zh_CN 验证不通过提示文字\r\n   * @en_US Verification failed prompt text\r\n   */\r\n  message?: 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?: boolean;\r\n  /**\r\n   * @zh_CN 只读\r\n   * @en_US Read only\r\n   */\r\n  readonly?: boolean;\r\n  /**\r\n   * @zh_CN 必填\r\n   * @en_US Required\r\n   */\r\n  required?: boolean;\r\n  /**\r\n   * @zh_CN 隐藏\r\n   * @en_US Hide\r\n   */\r\n  hidden?: boolean;\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;\r\n  /**\r\n   * @zh_CN 验证不通过提示文字\r\n   * @en_US Verification failed prompt text\r\n   */\r\n  message?: 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  readonly option = model.required<XControl>({});\r\n}\r\n\r\n/**\r\n * Form control\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\n/**\r\n * @zh_CN 表单控件参数\r\n * @en_US Form control option\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\n/**\r\n * @zh_CN 表单控件组件\r\n * @en_US Form control component\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\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\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\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\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 { InjectionToken, InputSignal, InputSignalWithTransform } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { XControl, XFormControlComponent } from './form.property';\r\nimport type { XBoolean } from '@ng-nest/ui/core';\r\n\r\nexport interface XFormContext {\r\n  formGroup: InputSignal<UntypedFormGroup>;\r\n  controlComponents: { [property: string]: XFormControlComponent };\r\n  controlTypes: { [property: string]: XControl };\r\n  disabled: InputSignalWithTransform<boolean, XBoolean>;\r\n  labelSuffix: InputSignal<string>;\r\n}\r\n\r\nexport const X_FORM_CONTEXT = new InjectionToken<XFormContext>('X_FORM_CONTEXT');\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  OnInit,\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  inject,\r\n  viewChild,\r\n  signal,\r\n  ViewContainerRef,\r\n  ComponentRef,\r\n  OutputEmitterRef,\r\n  effect\r\n} from '@angular/core';\r\nimport { XControlProperty, XFormControlOption, XFormControlComponent, XFormControl } from './form.property';\r\nimport {\r\n  Validators,\r\n  UntypedFormControl,\r\n  ValidatorFn,\r\n  FormControlStatus,\r\n  FormsModule,\r\n  ReactiveFormsModule\r\n} from '@angular/forms';\r\nimport { XIsEmpty, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CdkPortalOutlet, ComponentPortal, Portal, PortalModule } from '@angular/cdk/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\nimport { XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XFindComponent } from '@ng-nest/ui/find';\r\nimport { XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { X_FORM_CONTEXT } from './form.token';\r\n\r\n@Component({\r\n  selector: 'x-control',\r\n  imports: [FormsModule, ReactiveFormsModule, PortalModule],\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  private i18n = inject(XI18nService);\r\n  private viewContainerRef = inject(ViewContainerRef);\r\n  private _sharedProps = signal(['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign']);\r\n  private validatorFns = signal<ValidatorFn[]>([]);\r\n  private formControl = signal<UntypedFormControl | null>(null);\r\n  private _unSubject = new Subject<void>();\r\n  value = signal<any>(null);\r\n\r\n  form = inject(X_FORM_CONTEXT, { optional: true })!;\r\n  locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.form as XI18nForm)), { initialValue: zh_CN.form });\r\n  portal = signal<Portal<any> | null>(null);\r\n  componentPortal!: ComponentPortal<XFormControlComponent>;\r\n  componentRef!: ComponentRef<XFormControlComponent>;\r\n  portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n  constructor() {\r\n    super();\r\n\r\n    effect(() => {\r\n      this.formControl()!.patchValue(this.value());\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setOption();\r\n\r\n    this.formControl.set(\r\n      new UntypedFormControl(this.option().value, {\r\n        nonNullable: this.option().nonNullable\r\n      })\r\n    );\r\n    this.setValidators();\r\n    this.formControl()!\r\n      .statusChanges.pipe(takeUntil(this._unSubject))\r\n      .subscribe((x) => {\r\n        this.setMessages(x);\r\n      });\r\n    this.formControl()!\r\n      .valueChanges.pipe(takeUntil(this._unSubject))\r\n      .subscribe((x) => {\r\n        this.componentRef?.instance?.writeValue(x);\r\n      });\r\n    this.option().setValidators = () => this.setValidators();\r\n    this.form.formGroup().addControl(this.option().id, this.formControl());\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentPortal = this.createComponentPortal(this.option());\r\n    this.componentRef = this.portalOutlet().attachComponentPortal(this.componentPortal);\r\n\r\n    for (let key in this.option()) {\r\n      if (key in this.componentRef.instance) {\r\n        const val = (this.componentRef.instance as any)[key];\r\n        if (XIsFunction(val)) {\r\n          const valSymbols = Object.getOwnPropertySymbols(val);\r\n          if (valSymbols.length !== 1) break;\r\n          const valSymbol = val[valSymbols[0]];\r\n          if (valSymbol.hasOwnProperty('transformFn')) {\r\n            // input\r\n            this.componentRef.setInput(key, this.option()[key]);\r\n          } else {\r\n            // signal\r\n            val.set(this.option()[key]);\r\n          }\r\n        } else if (val instanceof OutputEmitterRef) {\r\n          // output\r\n          val.subscribe((x) => this.option()[key](x));\r\n        }\r\n      }\r\n    }\r\n\r\n    if (this.option().value !== undefined) {\r\n      this.componentRef.instance.writeValue(this.option().value);\r\n      this.value.set(this.option().value);\r\n    }\r\n\r\n    this.componentRef.instance.valueObservable.subscribe((x) => {\r\n      this.value.set(x);\r\n    });\r\n\r\n    this.form.controlTypes[this.option().id] = this.option();\r\n    this.form.controlComponents[this.option().id] = this.componentRef.instance;\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.set([]);\r\n    if (this.option().disabled || this.form.disabled()) {\r\n      this.formControl()!.disable();\r\n    } else {\r\n      this.formControl()!.enable();\r\n    }\r\n    if (this.option().required && !this.form.disabled()) {\r\n      this.validatorFns.update((x) => [...x, Validators.required]);\r\n    }\r\n    if (this.option().pattern) {\r\n      this.setPattern();\r\n    }\r\n    if (XIsFunction(this.option().inputValidator)) {\r\n      this.validatorFns.update((x) => [...x, XFormInputValidator(this.option().inputValidator!)]);\r\n    }\r\n    this.formControl()!.setValidators(this.validatorFns());\r\n    this.formControl()!.updateValueAndValidity();\r\n  }\r\n\r\n  setOption() {\r\n    for (let prop of this._sharedProps()) {\r\n      if (XIsEmpty(this.option()[prop])) {\r\n        this.option.update((x) => {\r\n          x[prop] = (this.form as any)[prop]();\r\n          return x;\r\n        });\r\n      }\r\n    }\r\n    if (XIsEmpty(this.option().label)) {\r\n      this.option.update((x) => {\r\n        x.label = '';\r\n        return x;\r\n      });\r\n    }\r\n    this.option.update((x) => {\r\n      x.label = `${this.option().label}${this.form.labelSuffix()}`;\r\n      return x;\r\n    });\r\n  }\r\n\r\n  setPattern() {\r\n    const pattern = this.option().pattern;\r\n    if (pattern) {\r\n      this.validatorFns.update((x) => [...x, Validators.pattern(pattern as RegExp)]);\r\n    }\r\n    return;\r\n  }\r\n\r\n  getPatternMsg(_pattern: string) {\r\n    const controlPattern = this.option().pattern;\r\n    if (controlPattern) {\r\n      return this.option().message;\r\n    }\r\n    return '';\r\n  }\r\n\r\n  setMessages(state: FormControlStatus) {\r\n    let control = this.formControl()! as XFormControl;\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.option().label || this.option().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.option().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  createComponentPortal(option: XFormControlOption) {\r\n    switch (option.control) {\r\n      case 'input':\r\n        return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n      case 'select':\r\n        return new ComponentPortal(XSelectComponent, this.viewContainerRef);\r\n      case 'checkbox':\r\n        return new ComponentPortal(XCheckboxComponent, this.viewContainerRef);\r\n      case 'radio':\r\n        return new ComponentPortal(XRadioComponent, this.viewContainerRef);\r\n      case 'switch':\r\n        return new ComponentPortal(XSwitchComponent, this.viewContainerRef);\r\n      case 'rate':\r\n        return new ComponentPortal(XRateComponent, this.viewContainerRef);\r\n      case 'date-picker':\r\n        return new ComponentPortal(XDatePickerComponent, this.viewContainerRef);\r\n      case 'time-picker':\r\n        return new ComponentPortal(XTimePickerComponent, this.viewContainerRef);\r\n      case 'input-number':\r\n        return new ComponentPortal(XInputNumberComponent, this.viewContainerRef);\r\n      case 'slider-select':\r\n        return new ComponentPortal(XSliderSelectComponent, this.viewContainerRef);\r\n      case 'cascade':\r\n        return new ComponentPortal(XCascadeComponent, this.viewContainerRef);\r\n      case 'color-picker':\r\n        return new ComponentPortal(XColorPickerComponent, this.viewContainerRef);\r\n      case 'textarea':\r\n        return new ComponentPortal(XTextareaComponent, this.viewContainerRef);\r\n      case 'find':\r\n        return new ComponentPortal(XFindComponent, this.viewContainerRef);\r\n      case 'auto-complete':\r\n        return new ComponentPortal(XAutoCompleteComponent, this.viewContainerRef);\r\n      default:\r\n        return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n    }\r\n  }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup()\">\r\n  <ng-template cdkPortalOutlet></ng-template>\r\n</div>\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  OnChanges,\r\n  AfterViewInit,\r\n  computed\r\n} 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  XControl\r\n} from './form.property';\r\nimport { XIsChange } from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XControlComponent } from './control.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { X_FORM_CONTEXT, XFormContext } from './form.token';\r\n\r\n@Component({\r\n  selector: `${XFormPrefix}`,\r\n  imports: [\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    XRowComponent,\r\n    XColComponent,\r\n    XOutletDirective,\r\n    XIconComponent,\r\n    XControlComponent\r\n  ],\r\n  templateUrl: './form.component.html',\r\n  styleUrls: ['./form.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: X_FORM_CONTEXT,\r\n      useExisting: XFormComponent\r\n    }\r\n  ]\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnChanges, AfterViewInit, XFormContext {\r\n  controlsType = computed(() => {\r\n    const controls = this.controls();\r\n    return controls && controls.length > 0 && (controls[0] as XFormRow).controls ? 'rows' : 'controls';\r\n  });\r\n  controlComponents: { [property: string]: XFormControlComponent } = {};\r\n  controlTypes: { [property: string]: XControl } = {};\r\n  formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n  classMap = computed(() => ({\r\n    [`${XFormPrefix}-${this.controlsType()}`]: true\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  ngAfterViewInit() {\r\n    this.setDisabled();\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.disabledSignal.set(true);\r\n        control.requiredSignal.set(false);\r\n        control.patternSignal.set(null);\r\n        type.setValidators && type.setValidators();\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.disabledSignal.set(type.disabled!);\r\n        control.requiredSignal.set(type.required!);\r\n        control.patternSignal.set(type.pattern as RegExp);\r\n        type.setValidators && type.setValidators();\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.validatorSignal.set(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","<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]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n  [ngClass]=\"classMap()\"\r\n  (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n  @if (title()) {\r\n    <div class=\"x-form-title\">{{ title() }}</div>\r\n  }\r\n  @switch (controlsType()) {\r\n    @case ('controls') {\r\n      <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n    }\r\n    @case ('rows') {\r\n      <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n    }\r\n  }\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  @for (row of rows; track row) {\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  }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n  <x-row [space]=\"space()\">\r\n    @for (control of controls; track control) {\r\n      <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n        <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n          <x-control [option]=\"control\"></x-control>\r\n        </ng-container>\r\n      </x-col>\r\n    }\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    @if (row.icon) {\r\n      <x-icon [type]=\"row.icon\"></x-icon>\r\n    }\r\n    <span>{{ row.title }}</span>\r\n  </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFormComponent } from './form.component';\r\nimport { XControlComponent } from './control.component';\r\n\r\n@NgModule({\r\n  exports: [XFormComponent, XControlComponent],\r\n  imports: [XFormComponent, XControlComponent]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}