{"version":3,"file":"ngx-antd-form-builder.mjs","sources":["../../../projects/ngx-antd-form-builder/src/lib/utils/sortablejs/sortablejs-binding.ts","../../../projects/ngx-antd-form-builder/src/lib/utils/sortablejs/sortablejs-bindings.ts","../../../projects/ngx-antd-form-builder/src/lib/utils/sortablejs/sortablejs.service.ts","../../../projects/ngx-antd-form-builder/src/lib/utils/sortablejs/sortablejs.directive.ts","../../../projects/ngx-antd-form-builder/src/lib/utils/sortablejs/sortablejs.module.ts","../../../projects/ngx-antd-form-builder/src/lib/components/collapse-item-list/collapse-item-list.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/collapse-item-list/collapse-item-list.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-change-option/design-form-change-option.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-change-option/design-form-change-option.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item-checkbox/design-form-item-checkbox.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item-checkbox/design-form-item-checkbox.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item-radio/design-form-item-radio.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item-radio/design-form-item-radio.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/pipes/has-rule.pipe.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item/design-form-item.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item/design-form-item.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-node/design-form-node.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-node/design-form-node.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/layout-item/layout-item.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/layout-item/layout-item.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/preview-data-dialog/preview-data.dialog.ts","../../../projects/ngx-antd-form-builder/src/lib/components/preview-data-dialog/preview-data.dialog.html","../../../projects/ngx-antd-form-builder/src/lib/components/build-blocks/build-blocks.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/build-blocks/build-blocks.component.html","../../../projects/ngx-antd-form-builder/src/lib/ngx-antd-form-viewer.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/preview-dialog/preview.dialog.ts","../../../projects/ngx-antd-form-builder/src/lib/components/preview-dialog/preview.dialog.html","../../../projects/ngx-antd-form-builder/src/lib/utils/func.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-component-panel/design-form-component-panel.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-component-panel/design-form-component-panel.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item-properties/design-form-item-properties.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-item-properties/design-form-item-properties.component.html","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-properties/design-form-properties.component.ts","../../../projects/ngx-antd-form-builder/src/lib/components/design-form-properties/design-form-properties.component.html","../../../projects/ngx-antd-form-builder/src/lib/utils/form-item.config.ts","../../../projects/ngx-antd-form-builder/src/lib/ngx-antd-form-builder.component.ts","../../../projects/ngx-antd-form-builder/src/public-api.ts","../../../projects/ngx-antd-form-builder/src/ngx-antd-form-builder.ts"],"sourcesContent":["import {SortableData} from './sortablejs.directive';\r\n\r\nexport class SortablejsBinding {\r\n\r\n  constructor(private target: SortableData) {\r\n  }\r\n\r\n  insert(index: number, item: any) {\r\n    if (this.isFormArray) {\r\n      this.target.insert(index, item);\r\n    } else {\r\n      this.target.splice(index, 0, item);\r\n    }\r\n  }\r\n\r\n  get(index: number) {\r\n    return this.isFormArray ? this.target.at(index) : this.target[index];\r\n  }\r\n\r\n  remove(index: number) {\r\n    let item;\r\n\r\n    if (this.isFormArray) {\r\n      item = this.target.at(index);\r\n      this.target.removeAt(index);\r\n    } else {\r\n      item = this.target.splice(index, 1)[0];\r\n    }\r\n\r\n    return item;\r\n  }\r\n\r\n  // we need this to identify that the target is a FormArray\r\n  // we don't want to have a dependency on @angular/forms just for that\r\n  private get isFormArray() {\r\n    // just checking for random FormArray methods not available on a standard array\r\n    return !!this.target.at && !!this.target.insert && !!this.target.reset;\r\n  }\r\n\r\n}\r\n","import { SortablejsBinding } from './sortablejs-binding';\r\nimport {SortableData} from './sortablejs.directive';\r\n\r\nexport class SortablejsBindings {\r\n\r\n  bindings: SortablejsBinding[];\r\n\r\n  constructor(bindingTargets: SortableData[]) {\r\n    this.bindings = bindingTargets.map(target => new SortablejsBinding(target));\r\n  }\r\n\r\n  injectIntoEvery(index: number, items: any[]) {\r\n    this.bindings.forEach((b, i) => b.insert(index, items[i]));\r\n  }\r\n\r\n  getFromEvery(index: number) {\r\n    return this.bindings.map(b => b.get(index));\r\n  }\r\n\r\n  extractFromEvery(index: number) {\r\n    return this.bindings.map(b => b.remove(index));\r\n  }\r\n\r\n  get provided() {\r\n    return !!this.bindings.length;\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class SortablejsService {\r\n\r\n  // original library calls the events in unnatural order\r\n  // first the item is added, then removed from the previous array\r\n  // this is a temporary event to work this around\r\n  // as long as only one sortable takes place at a certain time\r\n  // this is enough to have a single `global` event\r\n  transfer?: (items: any[]) => void ;\r\n\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChange,\r\n} from '@angular/core';\r\nimport Sortable, {Options, SortableEvent} from 'sortablejs';\r\nimport {SortablejsBindings} from './sortablejs-bindings';\r\nimport {SortablejsService} from './sortablejs.service';\r\n\r\nexport type SortableData = any | any[];\r\n\r\nconst getIndexesFromEvent = (event: SortableEvent) => {\r\n  if (event.hasOwnProperty('newDraggableIndex') && event.hasOwnProperty('oldDraggableIndex')) {\r\n    return {\r\n      new: event.newDraggableIndex,\r\n      old: event.oldDraggableIndex,\r\n    };\r\n  } else {\r\n    return {\r\n      new: event.newIndex,\r\n      old: event.oldIndex,\r\n    };\r\n  }\r\n};\r\n\r\nfunction removeNode(node: HTMLElement) {\r\n  if (node.parentElement !== null) {\r\n    node.parentElement.removeChild(node);\r\n  }\r\n}\r\n\r\nfunction insertNodeAt(fatherNode: HTMLElement, node: HTMLElement, position: number) {\r\n  const refNode =\r\n    position === 0\r\n      ? fatherNode.children[0]\r\n      : fatherNode.children[position - 1].nextSibling;\r\n  fatherNode.insertBefore(node, refNode);\r\n}\r\n\r\n@Directive({\r\n  selector: '[sortablejs]',\r\n})\r\nexport class SortablejsDirective implements OnInit, OnChanges, OnDestroy {\r\n\r\n  @Input()\r\n  sortablejs: SortableData; // array or a FormArray\r\n\r\n  @Input()\r\n  sortablejsContainer!: string;\r\n\r\n  @Input()\r\n  sortablejsOptions!: Options;\r\n\r\n  @Input()\r\n  sortablejsCloneFunction!: (item: any) => any;\r\n\r\n  private sortableInstance: any;\r\n\r\n  @Output() sortablejsInit = new EventEmitter();\r\n\r\n  constructor(\r\n    private service: SortablejsService,\r\n    private element: ElementRef,\r\n    private zone: NgZone,\r\n    private renderer: Renderer2,\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    //zone pollution\r\n    this.zone.runOutsideAngular(() => {\r\n      if (Sortable) { // Sortable does not exist in angular universal (SSR)\r\n        this.create();\r\n      }\r\n    })\r\n  }\r\n\r\n  ngOnChanges(changes: { [prop in keyof SortablejsDirective]: SimpleChange }) {\r\n    const optionsChange: SimpleChange = changes.sortablejsOptions;\r\n\r\n    if (optionsChange && !optionsChange.isFirstChange()) {\r\n      const previousOptions: Options = optionsChange.previousValue;\r\n      const currentOptions: Options = optionsChange.currentValue;\r\n\r\n      Object.keys(currentOptions).forEach(optionName => {\r\n        if (currentOptions[optionName as keyof Options] !== previousOptions[optionName as keyof Options]) {\r\n          // use low-level option setter\r\n          this.sortableInstance.option(optionName, this.options[optionName as keyof Options]);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.sortableInstance) {\r\n      this.sortableInstance.destroy();\r\n    }\r\n  }\r\n\r\n  private create() {\r\n    const container = this.sortablejsContainer ? this.element.nativeElement.querySelector(this.sortablejsContainer) : this.element.nativeElement;\r\n\r\n    setTimeout(() => {\r\n      this.sortableInstance = Sortable.create(container, this.options);\r\n      this.sortablejsInit.emit(this.sortableInstance);\r\n    }, 0);\r\n  }\r\n\r\n  private getBindings(): SortablejsBindings {\r\n    if (!this.sortablejs) {\r\n      return new SortablejsBindings([]);\r\n    } else if (this.sortablejs instanceof SortablejsBindings) {\r\n      return this.sortablejs;\r\n    } else {\r\n      return new SortablejsBindings([this.sortablejs]);\r\n    }\r\n  }\r\n\r\n  private get options() {\r\n    return {...this.optionsWithoutEvents, ...this.overridenOptions};\r\n  }\r\n\r\n  private get optionsWithoutEvents() {\r\n    return {...(this.sortablejsOptions || {})};\r\n  }\r\n\r\n  private proxyEvent(eventName: string, ...params: any[]) {\r\n    this.zone.run(() => { // re-entering zone, see https://github.com/SortableJS/angular-sortablejs/issues/110#issuecomment-408874600\r\n      if (this.optionsWithoutEvents && this.optionsWithoutEvents[eventName as keyof Options]) {\r\n        (this.optionsWithoutEvents[eventName as keyof Options] as any)(...params);\r\n      }\r\n    });\r\n  }\r\n\r\n  private get isCloning() {\r\n    return this.sortableInstance.options.group.checkPull(this.sortableInstance, this.sortableInstance) === 'clone';\r\n  }\r\n\r\n  private clone<T>(item: T): T {\r\n    // by default pass the item through, no cloning performed\r\n    return (this.sortablejsCloneFunction || (subitem => subitem))(item);\r\n  }\r\n\r\n  private get overridenOptions(): Options {\r\n    // always intercept standard events but act only in case items are set (bindingEnabled)\r\n    // allows to forget about tracking this.items changes\r\n    return {\r\n      onAdd: (event: SortableEvent) => {\r\n        this.service.transfer = (items: any[]) => {\r\n          this.getBindings().injectIntoEvery(event.newIndex as number, items);\r\n          this.proxyEvent('onAdd', event);\r\n        };\r\n        removeNode(event.item);\r\n\r\n        this.proxyEvent('onAddOriginal', event);\r\n      },\r\n      onRemove: (event: SortableEvent) => {\r\n        const bindings = this.getBindings();\r\n\r\n        if (bindings.provided) {\r\n          if (this.isCloning && this.service.transfer) {\r\n            this.service.transfer(bindings.getFromEvery(event.oldIndex as number).map(item => this.clone(item)));\r\n\r\n            // great thanks to https://github.com/tauu\r\n            // event.item is the original item from the source list which is moved to the target list\r\n            // event.clone is a clone of the original item and will be added to source list\r\n            // If bindings are provided, adding the item dom element to the target list causes artifacts\r\n            // as it interferes with the rendering performed by the angular template.\r\n            // Therefore we remove it immediately and also move the original item back to the source list.\r\n            // (event handler may be attached to the original item and not its clone, therefore keeping\r\n            // the original dom node, circumvents side effects )\r\n            this.renderer.removeChild(event.item.parentNode, event.item);\r\n            this.renderer.insertBefore(event.clone.parentNode, event.item, event.clone);\r\n            this.renderer.removeChild(event.clone.parentNode, event.clone);\r\n          } else {\r\n            this.service.transfer && this.service.transfer(bindings.extractFromEvery(event.oldIndex as number));\r\n          }\r\n\r\n          this.service.transfer = undefined;\r\n        }\r\n\r\n        this.proxyEvent('onRemove', event);\r\n      },\r\n      onUpdate: (event: SortableEvent) => {\r\n        removeNode(event.item);\r\n        insertNodeAt(event['from'], event.item, event.oldIndex as number);\r\n        const bindings = this.getBindings();\r\n        const indexes = getIndexesFromEvent(event);\r\n\r\n        bindings.injectIntoEvery(indexes.new as number, bindings.extractFromEvery(indexes.old as number));\r\n        this.proxyEvent('onUpdate', event);\r\n      },\r\n    };\r\n  }\r\n\r\n}","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {SortablejsDirective} from './sortablejs.directive';\r\nimport {Options} from 'sortablejs';\r\n\r\n@NgModule({\r\n  declarations: [SortablejsDirective],\r\n  exports: [SortablejsDirective],\r\n})\r\nexport class SortablejsModule {\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { Options, SortableEvent } from 'sortablejs';\r\nimport { NgxAntdFormBuilder } from '../../ngx-antd-form-builder.interface';\r\nimport { SortablejsModule } from '../../utils/sortablejs/sortablejs.module';\r\nimport { CommonModule } from '@angular/common';\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-collapse-item-list',\r\n  templateUrl: './collapse-item-list.component.html',\r\n  styleUrls: ['./collapse-item-list.component.scss'],\r\n  imports: [SortablejsModule, CommonModule]\r\n})\r\nexport class CollapseItemListComponent implements OnChanges {\r\n  @Input() fields: NgxAntdFormBuilder.AllType[] = []\r\n  @Output() readonly handleStart: EventEmitter<any> = new EventEmitter();\r\n  @Output() readonly generateKey: EventEmitter<any> = new EventEmitter();\r\n  _fields: NgxAntdFormBuilder.AllType[] = []\r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  options: Options = {\r\n    group: {\r\n      name:  'draggable-box',\r\n      pull: 'clone', put: false,\r\n    },\r\n    sort: false,\r\n    onStart: (event: SortableEvent) => {\r\n      this.handleStart.emit(this._fields[event.oldIndex as number].type)\r\n      this.generateKey.emit({\r\n        list: this._fields, \r\n        index: event.oldIndex\r\n      })\r\n    }\r\n  };\r\n  \r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['fields']) {\r\n      this._fields = changes['fields'].currentValue\r\n    }\r\n  }\r\n\r\n}\r\n","<ul\r\n  [sortablejs]=\"_fields\" [sortablejsOptions]=\"options\"\r\n>\r\n  <li class=\"draggable-item\" *ngFor=\"let val of _fields; index as i\"\r\n    >\r\n    {{ val.label }}\r\n    </li>\r\n</ul>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Component, Input, Output, EventEmitter, forwardRef, Inject, Optional } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzInputNumberModule } from \"ng-zorro-antd/input-number\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-change-option',\r\n  templateUrl: './design-form-change-option.component.html',\r\n  styleUrls: ['./design-form-change-option.component.scss'],\r\n  imports: [\r\n    NzInputNumberModule, NzInputModule, FormsModule,CommonModule,NzIconModule,NzButtonModule,NzGridModule,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DesignFormChangeOptionComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n  \r\n})\r\nexport class DesignFormChangeOptionComponent implements ControlValueAccessor {\r\n  constructor(\r\n  ) {}\r\n  _value: any\r\n  onChange: (_: any) => void = (_: any) => { };\r\n  onTouched: () => void = () => { };\r\n  writeValue(obj: any): void {\r\n    this._value = obj\r\n  }\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn\r\n  }\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    //throw new Error(\"Method not implemented.\");\r\n  }\r\n\r\n\r\n  //@Input() value: Array<any>;\r\n  @Input() type: string = 'option';\r\n  //@Output() readonly changeValue = new EventEmitter();\r\n\r\n  handleAdd() {\r\n    // 添加\r\n    const addData = [\r\n      ...this._value,\r\n      {\r\n        value: `${this._value.length + 1}`,\r\n        label: (this.type == 'collapse' ? \"Panel \" : \"Option \") + (this._value.length + 1),\r\n        list: this.type === \"tab\" || this.type == 'collapse' ? [] : undefined\r\n      }\r\n    ];\r\n    this._value = addData\r\n    this.onChange(addData)\r\n    //this.$emit(\"input\", addData);\r\n  }\r\n  handleAddCol() {\r\n    // 添加栅格Col\r\n    const addData = [\r\n      ...this._value,\r\n      {\r\n        span: 12,\r\n        list: []\r\n      }\r\n    ];\r\n    this._value = addData\r\n    this.onChange(addData)\r\n    //this.$emit(\"input\", addData);\r\n  }\r\n  handleAddRules() {\r\n    const addData = [\r\n      ...this._value,\r\n      {\r\n        pattern: \"\",\r\n        message: \"\"\r\n      }\r\n    ];\r\n    this._value = addData\r\n    this.onChange(addData)\r\n    //this.$emit(\"input\", addData);\r\n  }\r\n  handleDelete(deleteIndex) {\r\n    // 删除\r\n    this._value = this._value.filter((val, index) => index !== deleteIndex)\r\n    this.onChange(this._value)\r\n    // this.$emit(\r\n    //   \"input\",\r\n    //   this.value.filter((val, index) => index !== deleteIndex)\r\n    // );\r\n  }\r\n}","<div class=\"option-change-container\">\r\n  <div *ngIf=\"type === 'option' || type === 'tab'\">\r\n    <div nz-row [nzGutter]=\"6\" class=\"option-change-box\" *ngFor=\"let val of _value; let index = index\">\r\n      <div nz-col nzSpan=\"12\">\r\n        <input type=\"text\" [(ngModel)]=\"val.label\" nz-input placeholder=\"Label\">\r\n      </div>\r\n      <div nz-col nzSpan=\"6\">\r\n        <input type=\"text\" [(ngModel)]=\"val.value\" nz-input placeholder=\"Value\">\r\n      </div>\r\n      <!-- <div nz-col nzSpan=\"6\">\r\n        <input type=\"text\" [(ngModel)]=\"val.tooltip\" nz-input placeholder=\"tooltip\">\r\n      </div> -->\r\n      <div nz-col nzSpan=\"6\">\r\n        <div class=\"option-delete-box\" (click)=\"handleDelete(index)\">\r\n          <button nz-button nzDanger ><i nz-icon nzType=\"delete\"></i></button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div nz-col nzSpan=\"24\">\r\n      <button nz-button nzType=\"primary\" (click)=\"handleAdd()\">Add</button>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"type === 'rules'\">\r\n    <div nz-row class=\"option-change-box\" *ngFor=\"let val of _value; let index = index\">\r\n      <ng-container *ngIf=\"index !== 0\">\r\n        <div nz-col nzSpan=\"24\">\r\n          <input type=\"text\" [(ngModel)]=\"val.message\" nz-input placeholder=\"Validation Tooltip\">\r\n        </div>\r\n        <div nz-col nzSpan=\"20\">\r\n          <input type=\"text\" [(ngModel)]=\"val.pattern\" nz-input placeholder=\"Regex pattern\">\r\n        </div>\r\n        <div nz-col nzSpan=\"4\">\r\n          <div class=\"option-delete-box\" (click)=\"handleDelete(index)\">\r\n            <button nz-button nzType=\"primary\" nzDanger><i nz-icon nzType=\"delete\"></i></button>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n    </div>\r\n    <div nz-col nzSpan=\"24\">\r\n      <button nz-button nzType=\"primary\" (click)=\"handleAddRules()\">Add</button>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"type === 'colspan'\">\r\n    <div nz-row class=\"option-change-box\" *ngFor=\"let val of _value; let index = index\">\r\n      <div nz-col nzSpan=\"18\">\r\n        <nz-input-number [(ngModel)]=\"val.span\" style=\"width: 100%;\" [nzMax]=\"24\" [nzPlaceHolder]=\"'名称'\"></nz-input-number>\r\n      </div>\r\n      <div nz-col nzSpan=\"6\">\r\n        <div class=\"option-delete-box\" (click)=\"handleDelete(index)\">\r\n          <button nz-button nzDanger><i nz-icon nzType=\"delete\"></i></button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div nz-row>\r\n      <div nz-col nzSpan=\"24\">\r\n        <button nz-button (click)=\"handleAddCol()\">Add</button>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"type === 'collapse'\">\r\n    <div nz-row class=\"option-change-box\" *ngFor=\"let val of _value; let index = index\">\r\n      <div nz-col nzSpan=\"18\">\r\n        <input type=\"text\" [(ngModel)]=\"val.label\" nz-input placeholder=\"Name\">\r\n      </div>\r\n      <div nz-col nzSpan=\"6\">\r\n        <div class=\"option-delete-box\" (click)=\"handleDelete(index)\">\r\n          <button nz-button nzDanger><i nz-icon nzType=\"delete\"></i></button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div nz-col nzSpan=\"24\">\r\n      <button nz-button (click)=\"handleAdd()\">Add</button>\r\n    </div>\r\n  </div>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { Component, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { NzCheckboxModule } from \"ng-zorro-antd/checkbox\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-item-checkbox',\r\n  templateUrl: './design-form-item-checkbox.component.html',\r\n  styleUrls: ['./design-form-item-checkbox.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DesignFormItemCheckboxComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  imports: [NzCheckboxModule, FormsModule, CommonModule, ReactiveFormsModule]\r\n})\r\nexport class DesignFormItemCheckboxComponent implements ControlValueAccessor, OnChanges {  \r\n  @Input() options!: Array<Record<'label' | 'value', string>>\r\n  //defaultValue使用NgForm实现\r\n  //@Input() defaultValue: string[] = []\r\n  _first: string[] = []\r\n  /**\r\n  * Invoked when the model has been changed\r\n  */\r\n  onChange: (_: any) => void = (_: any) => { };\r\n  onTouched: () => void = () => { };\r\n  writeValue(obj: any): void {\r\n    if (obj && Array.isArray(obj)) {\r\n      this._first = obj\r\n    }\r\n  }\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn\r\n  }\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n  setDisabledState?(isDisabled: boolean): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // if (changes.defaultValue.currentValue.length > 0) {\r\n    //   this.writeValue(changes.defaultValue.currentValue)\r\n    // }\r\n  }\r\n\r\n  log(e) {\r\n    this.onTouched()\r\n    this.onChange(e)\r\n    //console.log(e)\r\n  }\r\n}","<!-- <nz-checkbox-group [ngModel]=\"options\" (ngModelChange)=\"log($event)\"></nz-checkbox-group> -->\r\n<nz-checkbox-wrapper style=\"width: 100%;\" (nzOnChange)=\"log($event)\">\r\n  <label nz-checkbox \r\n    *ngFor=\"let option of options; let index = index\" \r\n    [nzValue]=\"option.value\" [ngModel]=\"_first.includes(option.value)\"\r\n    >\r\n    {{option.label}}\r\n  </label>\r\n</nz-checkbox-wrapper>","import { CommonModule } from \"@angular/common\";\r\nimport { Component, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzRadioModule } from \"ng-zorro-antd/radio\";\r\nimport { NzToolTipModule } from \"ng-zorro-antd/tooltip\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-item-radio',\r\n  templateUrl: './design-form-item-radio.component.html',\r\n  styleUrls: ['./design-form-item-radio.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DesignFormItemRadioComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  imports: [\r\n    CommonModule,FormsModule,\r\n    NzToolTipModule,NzRadioModule,NzIconModule,\r\n  ]\r\n})\r\nexport class DesignFormItemRadioComponent implements ControlValueAccessor, OnChanges {  \r\n  @Input() record//: AmberdataFormDesign.RadioType;\r\n  onChange: (_: any) => void = (_: any) => { };\r\n  onTouched: () => void = () => { };\r\n\r\n  value;\r\n  isDisabled = false;\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn\r\n  }\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n  }\r\n\r\n  onModelChange(e) {\r\n    this.value = e;\r\n    this.onTouched()\r\n    this.onChange(e)\r\n    //console.log(e)\r\n  }\r\n}","<nz-radio-group  [ngModel]=\"value\" [nzDisabled]=\"isDisabled\"\r\n  (ngModelChange)=\"onModelChange($event)\" [ngStyle]=\"{'width': record.options.width}\">\r\n  <label *ngFor=\"let lbl of record.options.options\" nz-radio [nzValue]=\"lbl.value\">\r\n    <ng-container *ngIf=\"!lbl.tooltip\">{{lbl.label}}</ng-container>\r\n    <span style=\"display: inline-flex; align-items: center;\" *ngIf=\"lbl.tooltip\">{{lbl.label}}\r\n      <i style=\"margin-left: 2px;\" nz-icon nzType=\"question-circle\" nzTheme=\"outline\" \r\n        nz-tooltip [nzTooltipTitle]=\"lbl.tooltip\"></i>\r\n    </span>\r\n  </label>\r\n</nz-radio-group>","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ standalone: true, name: 'hasRule' })\r\nexport class HasRulePipe implements PipeTransform {\r\n  transform(rules: any[]) {\r\n    return rules.filter(rule => rule.pattern || rule.required).length > 0;\r\n  }\r\n}","import { Component, EventEmitter, Inject, Input, OnChanges, OnInit, Optional, Output, SimpleChanges } from '@angular/core';\r\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { NzFormModule, NzFormTooltipIcon } from 'ng-zorro-antd/form';\r\nimport { NgxAntdFormBuilder } from '../../ngx-antd-form-builder.interface';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\r\nimport { NzRateModule } from 'ng-zorro-antd/rate';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DesignFormItemCheckboxComponent } from '../design-form-item-checkbox/design-form-item-checkbox.component';\r\nimport { DesignFormItemRadioComponent } from '../design-form-item-radio/design-form-item-radio.component';\r\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\r\nimport { HasRulePipe } from '../pipes/has-rule.pipe';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\r\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\r\nimport { NzAlertModule } from 'ng-zorro-antd/alert';\r\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-item',\r\n  templateUrl: './design-form-item.component.html',\r\n  styleUrls: ['./design-form-item.component.scss'],\r\n  imports: [ \r\n    ReactiveFormsModule,CommonModule,\r\n    NzInputModule, NzInputNumberModule, NzFormModule, NzDividerModule,NzRateModule,\r\n    NzSelectModule,NzIconModule,NzSliderModule,NzSwitchModule,NzAlertModule,NzDatePickerModule,\r\n    DesignFormItemCheckboxComponent,DesignFormItemRadioComponent,HasRulePipe\r\n  ]\r\n})\r\nexport class DesignFormItemComponent implements OnChanges, OnInit {\r\n  infinity= Infinity\r\n  captchaTooltipIcon: NzFormTooltipIcon = {\r\n    type: 'info-circle',\r\n    theme: 'twotone'\r\n  };\r\n  //@Input() key //=\"record.key\"\r\n  //:selectItem.sync=\"selectItem\"\r\n  @Input() record!: NgxAntdFormBuilder.AllType //=\"record\"\r\n  @Input() formConfig //=\"record\"\r\n  @Input() form//: UntypedFormGroup  //??\r\n\r\n  get layoutConfig() {\r\n    return (this.record as any).options?.overrideLayout ? (this.record as any).options : this.formConfig;\r\n  }\r\n  constructor(\r\n  ) {}\r\n\r\n  get isCol() {\r\n    return this.formConfig.layout === 'horizontal' && this.formConfig.labelLayout === 'flex'\r\n  }\r\n  get isFlex() {\r\n    return this.formConfig.layout === 'horizontal' && this.formConfig.labelLayout !== 'flex'\r\n  }\r\n\r\n  get required() {\r\n    return this.record['rules'] && this.record['rules'][0] && this.record['rules'][0]['required'] === true \r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (!this.form && this.record && this.record.key) {\r\n      this.form = new UntypedFormGroup({\r\n        [this.record.key]: new UntypedFormControl()\r\n      })\r\n    }\r\n  }\r\n\r\n\r\n\r\n  clearValue() {\r\n    this.form.get(this.record.key).setValue('')\r\n  }\r\n\r\n  getValue() {\r\n    return this.form.get(this.record.key).value\r\n  }\r\n\r\n  valueLengthGtZero() {\r\n    const value = this.getValue()\r\n    return value && value.length\r\n  }\r\n}","<ng-container [formGroup]=\"form\">\r\n  <nz-form-item *ngIf=\"\r\n  record.type === 'input' ||\r\n  record.type === 'textarea' ||\r\n  record.type === 'number' ||\r\n  record.type === 'radio' ||\r\n  record.type === 'checkbox' ||\r\n  record.type === 'select' ||\r\n  record.type === 'rate' ||\r\n  record.type === 'switch' ||\r\n  record.type === 'date' ||\r\n  record.type === 'slider'\"\r\n    [ngStyle]=\"isFlex ? { display: 'flex' }:{}\">\r\n    <nz-form-label\r\n      *ngIf=\"isFlex && !record.help\"\r\n      [ngStyle]=\"{ width: layoutConfig.labelWidth + 'px'}\"\r\n      [nzRequired]=\"required\"\r\n    >{{record.label}}</nz-form-label>\r\n    <nz-form-label\r\n      *ngIf=\"isFlex && record.help\"\r\n      [ngStyle]=\"{ width: layoutConfig.labelWidth + 'px'}\"\r\n      [nzTooltipTitle]=\"record.help\"\r\n      [nzRequired]=\"required\"\r\n    >{{record.label}}</nz-form-label>\r\n    <nz-form-label [title]=\"record.label\"\r\n      *ngIf=\"!isFlex && !record.help\"\r\n      [nzXs]=\"isCol && layoutConfig.labelCol.xs\"\r\n      [nzSm]=\"isCol && layoutConfig.labelCol.sm\"\r\n      [nzMd]=\"isCol && layoutConfig.labelCol.md\"\r\n      [nzLg]=\"isCol && layoutConfig.labelCol.lg\"\r\n      [nzXl]=\"isCol && layoutConfig.labelCol.xl\"\r\n      [nzXXl]=\"isCol && layoutConfig.labelCol.xxl\"\r\n      [nzRequired]=\"required\"\r\n    >{{record.label}}</nz-form-label>\r\n    <nz-form-label [title]=\"record.label\"\r\n      *ngIf=\"!isFlex && record.help\"\r\n      [nzXs]=\"isCol && layoutConfig.labelCol.xs\"\r\n      [nzSm]=\"isCol && layoutConfig.labelCol.sm\"\r\n      [nzMd]=\"isCol && layoutConfig.labelCol.md\"\r\n      [nzLg]=\"isCol && layoutConfig.labelCol.lg\"\r\n      [nzXl]=\"isCol && layoutConfig.labelCol.xl\"\r\n      [nzXXl]=\"isCol && layoutConfig.labelCol.xxl\"\r\n      nz-tooltip\r\n      [nzTooltipTitle]=\"record.help\"\r\n      [nzTooltipIcon]=\"captchaTooltipIcon\"\r\n      [nzRequired]=\"required\"\r\n    >{{record.label}}</nz-form-label>\r\n    <nz-form-control\r\n      [ngStyle]=\"isFlex ? { 'flex-grow': '1', width: 'auto' } : {}\"\r\n      [nzXs]=\"isCol && layoutConfig.wrapperCol.xs\"\r\n      [nzSm]=\"isCol && layoutConfig.wrapperCol.sm\"\r\n      [nzMd]=\"isCol && layoutConfig.wrapperCol.md\"\r\n      [nzLg]=\"isCol && layoutConfig.wrapperCol.lg\"\r\n      [nzXl]=\"isCol && layoutConfig.wrapperCol.xl\"\r\n      [nzXXl]=\"isCol && layoutConfig.wrapperCol.xxl\"\r\n      [nzHasFeedback]=\"record.rules | hasRule\"\r\n      [nzErrorTip]=\"userErrorTpl\">\r\n      <ng-template #userErrorTpl let-control>\r\n        <ng-container>\r\n          {{control.errors?.message}}\r\n        </ng-container>\r\n        <!-- <ng-container *ngIf=\"control.hasError('duplicated')\">\r\n          The username is redundant!\r\n        </ng-container> -->\r\n      </ng-template>\r\n        <ng-container *ngIf=\"record.type == 'input'\">\r\n          <nz-input-group [nzSuffix]=\"suffixTemplateInfo\" [ngStyle]=\"{'width': record.options.width}\">\r\n            <input *ngIf=\"record.options.maxLength\" nz-input [formControlName]=\"record.key\"\r\n               [placeholder]=\"record.options.placeholder || ''\"\r\n              [maxLength]=\"record.options.maxLength\" />\r\n            <input *ngIf=\"!record.options.maxLength\"  nz-input [formControlName]=\"record.key\" \r\n              [placeholder]=\"record.options.placeholder || ''\" />\r\n          </nz-input-group>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'textarea'\">\r\n          <nz-input-group [nzSuffix]=\"suffixTemplateInfo\" class=\"ant-input-affix-wrapper-textarea-with-clear-btn\"  [ngStyle]=\"{'width': record.options.width}\">\r\n            <textarea nz-input *ngIf=\"record.options.maxLength\" [formControlName]=\"record.key\"\r\n            [placeholder]=\"record.options.placeholder || ''\" [maxLength]=\"record.options.maxLength\"\r\n            [nzAutosize]=\"{ minRows: record.options.minRows, maxRows: record.options.maxRows }\"></textarea>\r\n            <textarea nz-input *ngIf=\"!record.options.maxLength\" [formControlName]=\"record.key\" \r\n            [placeholder]=\"record.options.placeholder || ''\" [nzAutosize]=\"{ minRows: record.options.minRows, maxRows: record.options.maxRows }\"\r\n            ></textarea>\r\n          </nz-input-group>\r\n        </ng-container>\r\n        <ng-template #suffixTemplateInfo>\r\n          <i nz-icon\r\n              class=\"ant-input-textarea-clear-icon\"\r\n              style=\"margin-right: 4px;\"\r\n              nzType=\"close-circle\"\r\n              *ngIf=\"(record.type == 'textarea' || record.type == 'input') && record.options.clearable && valueLengthGtZero()\"\r\n              (click)=\"clearValue()\"\r\n            ></i>\r\n        </ng-template>\r\n\r\n        <ng-container *ngIf=\"record.type == 'number'\">\r\n          <nz-input-number [formControlName]=\"record.key\" [ngStyle]=\"{'width': record.options.width}\"\r\n            [nzPlaceHolder]=\"record.options.placeholder\" \r\n            [nzPrecision]=\"record.options.precision\" [nzStep]=\"record.options.step\"\r\n            ></nz-input-number>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'radio'\">\r\n          <app-design-form-item-radio [formControlName]=\"record.key\" [record]=\"record\"></app-design-form-item-radio>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'checkbox'\">\r\n          <!-- <nz-checkbox-group [ngModel]=\"record.options.options\" (ngModelChange)=\"log($event)\"></nz-checkbox-group> -->\r\n          <app-design-form-item-checkbox  \r\n          [formControlName]=\"record.key\" [options]=\"record.options.options\"></app-design-form-item-checkbox>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'select'\">\r\n          <nz-select [formControlName]=\"record.key\">\r\n            <nz-option *ngFor=\"let lbl of record.options.options\" \r\n              [nzValue]=\"lbl.value\" [nzLabel]=\"lbl.label\"></nz-option>\r\n          </nz-select>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'rate'\">\r\n          <nz-rate [formControlName]=\"record.key\" [nzAllowHalf]=\"record.options.allowHalf\"></nz-rate>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'slider'\">\r\n          <nz-slider\r\n           [formControlName]=\"record.key\"></nz-slider>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'switch'\">\r\n          <nz-switch\r\n           [formControlName]=\"record.key\"></nz-switch>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"record.type == 'date'\">\r\n          <nz-date-picker\r\n            [ngStyle]=\"{'width': record.options.width}\"\r\n            [formControlName]=\"record.key\"\r\n            [nzMode]=\"record.options.mode\"\r\n            [nzPlaceHolder]=\"record.options.placeholder\"\r\n          ></nz-date-picker>\r\n        </ng-container>\r\n    </nz-form-control>\r\n  </nz-form-item>\r\n\r\n  <ng-container *ngIf=\"record.type === 'divider'\">\r\n    <nz-divider [nzText]=\"record.label\" [nzOrientation]=\"record.options.orientation || 'center'\"></nz-divider>\r\n  </ng-container>\r\n  <ng-container *ngIf=\"record.type === 'alert'\">\r\n    <nz-form-item>\r\n      <nz-form-control>\r\n        <nz-alert [nzMessage]=\"record.label\"\r\n        [nzDescription]=\"record.options.description\"\r\n        [nzType]=\"record.options.type\"\r\n        [nzShowIcon]=\"record.options.showIcon\"\r\n        [nzCloseable]=\"record.options.closable\"\r\n        [nzBanner]=\"record.options.banner\">\r\n        </nz-alert>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n  </ng-container>\r\n  <ng-container *ngIf=\"record.type === 'text'\">\r\n    <nz-form-item>\r\n      <nz-form-control>\r\n        <div [ngStyle]=\"{ textAlign: record.options.textAlign }\">\r\n          <label\r\n            [ngClass]=\"{ 'ant-form-item-required': record.options.showRequiredMark }\"\r\n            [ngStyle]=\"{\r\n              fontFamily: record.options.fontFamily,\r\n              fontSize: record.options.fontSize\r\n            }\"\r\n          >\r\n            {{record.label}}\r\n        </label>\r\n        </div>\r\n      </nz-form-control>\r\n    </nz-form-item>\r\n  </ng-container>\r\n</ng-container>","import { Component, Input, Output, EventEmitter, Inject, Optional } from \"@angular/core\";\r\nimport { DesignFormItemComponent } from \"../design-form-item/design-form-item.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-node',\r\n  templateUrl: './design-form-node.component.html',\r\n  styleUrls: ['./design-form-node.component.scss'],\r\n  imports: [DesignFormItemComponent,CommonModule,NzIconModule]\r\n})\r\nexport class DesignFormNodeComponent {\r\n  @Input() selectItem \r\n  @Input() record //=\"record\"\r\n  @Input() config //=\"config\"\r\n  @Input() hideModel = false\r\n  @Output() readonly handleSelectItem = new EventEmitter();\r\n  @Output() readonly handleCopy = new EventEmitter();\r\n  @Output() readonly handleDelete = new EventEmitter();\r\n  constructor(\r\n  ) {}\r\n\r\n  handleSelectItemFn($event: Event) {\r\n    $event.stopPropagation()\r\n    this.handleSelectItem.emit(this.record)\r\n  } \r\n  handleCopyFn($event: Event) {\r\n    $event.stopPropagation()\r\n    this.handleCopy.emit(this.record)\r\n  }  \r\n  handleDeleteFn($event: Event) {\r\n    $event.stopPropagation()\r\n    this.handleDelete.emit(this.record)\r\n  }\r\n}","<div \r\n  class=\"drag-move-box\" \r\n  [ngClass]=\"{'active': record.key === selectItem.key}\"\r\n  (click)=\"handleSelectItemFn($event)\">\r\n  <div class=\"form-item-box\">\r\n    <app-design-form-item \r\n      [formConfig]=\"config\"\r\n      [record]=\"record\"\r\n    ></app-design-form-item>\r\n  </div>\r\n    <div\r\n      [hidden]=\"true\"\r\n        *ngIf=\"!hideModel\"\r\n        class=\"show-key-box\"\r\n      >\r\n      {{record.label + (record.key ? '/' + record.key : '')}}\r\n    </div>\r\n    <div\r\n      [ngClass]=\"['delete', record.key === selectItem.key ? 'active' : 'unactivated']\"\r\n      (click)=\"handleDeleteFn($event)\"\r\n    >\r\n      <i nz-icon nzType=\"delete\" nzTheme=\"outline\"></i>\r\n  </div>\r\n</div>","import { Component, EventEmitter, Inject, Input, OnChanges, Optional, Output, SimpleChanges } from \"@angular/core\";\r\nimport Sortable, { Options } from 'sortablejs';\r\nimport { NzCollapseModule } from \"ng-zorro-antd/collapse\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzInputNumberModule } from \"ng-zorro-antd/input-number\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { DesignFormNodeComponent } from \"../design-form-node/design-form-node.component\";\r\nimport { NzTabsModule } from \"ng-zorro-antd/tabs\";\r\nimport { SortablejsModule } from \"../../utils/sortablejs/sortablejs.module\";\r\nimport { NzCardModule } from \"ng-zorro-antd/card\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-layout-item',\r\n  templateUrl: './layout-item.component.html',\r\n  styleUrls: ['./layout-item.component.scss'],\r\n  imports: [\r\n    CommonModule, NzCollapseModule, NzInputModule, NzInputNumberModule,NzCardModule,\r\n    NzTabsModule,SortablejsModule,NzGridModule,NzIconModule,\r\n     DesignFormNodeComponent]\r\n})\r\nexport class LayoutItemComponent implements OnChanges {\r\n  @Input() record: any;\r\n  @Input() config: any;\r\n  @Input() selectItem: any;\r\n\r\n  @Output() readonly handleColAdd: EventEmitter<any> = new EventEmitter();\r\n  @Output() readonly handleSelectItem = new EventEmitter();\r\n  @Output() readonly handleCopy = new EventEmitter();\r\n  @Output() readonly handleDelete = new EventEmitter();\r\n\r\n  _cahce: {[key: string]: Options} = {\r\n  }\r\n\r\n  constructor(\r\n  ) {\r\n  }\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n  }\r\n\r\n  genOptions(colItem, index): Options {\r\n    if (!this._cahce[index]) {\r\n      this._cahce[index] = \r\n      {\r\n        group: 'draggable-box',\r\n        handle: '.drag-move',\r\n        onAdd: (evt) => {\r\n          this.onDrop({\r\n            evt, columns: colItem.list\r\n          })\r\n        } \r\n      }\r\n    }\r\n    const options = this._cahce[index]\r\n      return {\r\n        ...options\r\n      }\r\n  }\r\n\r\n  onDrop(evt) {\r\n    //debugger\r\n    this.handleColAdd.emit(\r\n      evt, \r\n    )\r\n  }\r\n\r\n  onDragDrop($event) {\r\n    //this.itemDrop.emit($event)\r\n  }\r\n\r\n  handleCopyFn($event: Event) {\r\n    $event.stopPropagation()\r\n    this.handleCopy.emit()\r\n  }  \r\n  handleDeleteFn($event: Event) {\r\n    $event.stopPropagation()\r\n    this.handleDelete.emit()\r\n  }\r\n\r\n  handleFormNodeDelete($event) {\r\n    this.handleDelete.emit($event)\r\n  }\r\n\r\n  handleSelectItemAndStop($event) {\r\n    $event.stopPropagation()\r\n    this.handleSelectItem.emit(this.record)\r\n  }\r\n\r\n  hiddenDelete() {\r\n    if ([//\"batch\",\r\n    //\"card\",\r\n    \"tabs\",\r\n    \"grid\",\r\n    'collapse',\r\n    \"table\"].includes(this.record.type)) {\r\n      return this.record.columns.some(col => col.list.length > 0)\r\n    } else if (\r\n      ['batch', 'card', 'block'].includes(this.record.type)) {\r\n      return this.record.list.length > 0\r\n    }\r\n  }\r\n}","<div [ngSwitch]=\"record.type\">\r\n  <ng-container *ngSwitchCase=\"'tabs'\">\r\n    <div [ngClass]=\"['grid-box', record.key === selectItem.key ? 'active' : 'unactivated']\"\r\n      (click)=\"handleSelectItemAndStop($event)\">\r\n      <nz-tabset class=\"grid-row\" [nzTabBarGutter]=\"record.options.tabBarGutter\" [nzType]=\"record.options.type\"\r\n        [nzSize]=\"record.options.size\" [nzTabPosition]=\"record.options.tabPosition\"\r\n        [nzAnimated]=\"record.options.animated\">\r\n        <nz-tab *ngFor=\"let colItem of record.columns; index as i\" [nzTitle]=\"colItem.label\">\r\n          <div class=\"grid-col\">\r\n            <div class=\"draggable-box\">\r\n              <div class=\"list-main\" [sortablejs]=\"colItem.list\" [sortablejsOptions]=\"genOptions(colItem, i)\">\r\n                <app-layout-item class=\"drag-move\" *ngFor=\"let subItem of colItem.list\" [record]=\"subItem\"\r\n                  [selectItem]=\"selectItem\" [config]=\"config\" \r\n                  (itemDrop)=\"onDragDrop($event)\" (handleDelete)=\"handleDelete.emit($event)\"\r\n                  (handleColAdd)=\"handleColAdd.emit($event)\"\r\n                  (handleCopy)=\"handleCopy.emit($event)\" (handleSelectItem)=\"handleSelectItem.emit($event)\">\r\n                </app-layout-item>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </nz-tab>\r\n      </nz-tabset>\r\n      <ng-container *ngTemplateOutlet=\"copyAndDelete\"></ng-container>\r\n    </div>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"'card'\">\r\n    <div [ngClass]=\"['grid-box', record.key === selectItem.key ? 'active' : 'unactivated']\"\r\n      (click)=\"handleSelectItemAndStop($event)\">\r\n      <nz-card class=\"grid-row\" [nzTitle]=\"nzCardTitle\">\r\n        <div class=\"grid-col\">\r\n          <div class=\"draggable-box\">\r\n            <div class=\"list-main\" [sortablejs]=\"record.list\" [sortablejsOptions]=\"genOptions(record, 0)\">\r\n              <app-layout-item class=\"drag-move\" *ngFor=\"let subItem of record.list\" [record]=\"subItem\"\r\n                [selectItem]=\"selectItem\" [config]=\"config\" \r\n                (itemDrop)=\"onDragDrop($event)\" (handleDelete)=\"handleDelete.emit($event)\"\r\n                (handleCopy)=\"handleCopy.emit($event)\" (handleSelectItem)=\"handleSelectItem.emit($event)\">\r\n              </app-layout-item>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </nz-card>\r\n      <ng-template #nzCardTitle>\r\n        <div style=\"white-space: normal;\">{{record.label}}</div>\r\n      </ng-template>\r\n      <ng-container *ngTemplateOutlet=\"copyAndDelete\"></ng-container>\r\n    </div>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"'block'\">\r\n    <div [ngClass]=\"['grid-box', record.key === selectItem.key ? 'active' : 'unactivated']\"\r\n      (click)=\"handleSelectItemAndStop($event)\">\r\n      <div class=\"grid-row\">\r\n        <div class=\"grid-col\">\r\n          <div class=\"draggable-box\">\r\n            <div class=\"list-main\" [sortablejs]=\"record.list\" [sortablejsOptions]=\"genOptions(record, 0)\">\r\n              <app-layout-item class=\"drag-move\" *ngFor=\"let subItem of record.list\" [record]=\"subItem\"\r\n                [selectItem]=\"selectItem\" [config]=\"config\" \r\n                (itemDrop)=\"onDragDrop($event)\" (handleDelete)=\"handleDelete.emit($event)\"\r\n                (handleCopy)=\"handleCopy.emit($event)\" (handleSelectItem)=\"handleSelectItem.emit($event)\">\r\n              </app-layout-item>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <ng-template #nzCardTitle>\r\n        <div style=\"white-space: normal;\">{{record.label}}</div>\r\n      </ng-template>\r\n      <ng-container *ngTemplateOutlet=\"copyAndDelete\"></ng-container>\r\n    </div>\r\n  </ng-container>\r\n    <ng-container *ngSwitchCase=\"'grid'\">\r\n      <div [ngClass]=\"['grid-box', record.key === selectItem.key ? 'active' : 'unactivated']\"\r\n        (click)=\"handleSelectItemAndStop($event)\">\r\n        <div class=\"grid-row\"  nz-row [nzGutter]=\"record.options.gutter\">\r\n          <div  class=\"grid-col\" *ngFor=\"let colItem of record.columns; index as i\" nz-col [nzSpan]=\"colItem.span || 0\">\r\n            <div class=\"draggable-box\">\r\n              <div class=\"list-main\" [sortablejs]=\"colItem.list\"\r\n                [sortablejsOptions]=\"genOptions(colItem, i)\">\r\n                <app-layout-item class=\"drag-move\" *ngFor=\"let subItem of colItem.list\" \r\n                  [record]=\"subItem\" \r\n                  [config]=\"config\"\r\n                  [selectItem]=\"selectItem\" \r\n                  (itemDrop)=\"onDragDrop($event)\"\r\n                  (handleColAdd)=\"handleColAdd.emit($event)\"\r\n                  (handleDelete)=\"handleFormNodeDelete($event)\"\r\n                  (handleSelectItem)=\"handleSelectItem.emit($event)\">\r\n                </app-layout-item>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <ng-container *ngTemplateOutlet=\"copyAndDelete\"></ng-container>\r\n      </div>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"'collapse'\">\r\n      <div [ngClass]=\"['grid-box', record.key === selectItem.key ? 'active' : 'unactivated']\" \r\n        (click)=\"handleSelectItemAndStop($event)\">\r\n        <nz-collapse class=\"grid-row\"\r\n          [nzAccordion]=\"record.options.accordion\"\r\n          [nzBordered]=\"record.options.bordered\"\r\n          [nzGhost]=\"record.options.ghost\"\r\n          [nzExpandIconPosition]=\"record.options.expandIconPosition\"\r\n        >\r\n          <nz-collapse-panel [nzActive]=\"true\" *ngFor=\"let colItem of record.columns; index as i\" [nzHeader]=\"colItem.label\">\r\n            <div class=\"grid-col\">\r\n              <div class=\"draggable-box\">\r\n                <div class=\"list-main\"\r\n                [sortablejs]=\"colItem.list\" [sortablejsOptions]=\"genOptions(colItem, i)\">\r\n                 <app-layout-item \r\n                  class=\"drag-move\" *ngFor=\"let subItem of colItem.list\"\r\n                   [record]=\"subItem\" \r\n                   [selectItem]=\"selectItem\"\r\n                   [config]=\"config\"\r\n                   (itemDrop)=\"onDragDrop($event)\"\r\n                   (handleColAdd)=\"handleColAdd.emit($event)\"\r\n                   (handleDelete)=\"handleDelete.emit($event)\"\r\n                   (handleCopy)=\"handleCopy.emit($event)\"\r\n                   (handleSelectItem)=\"handleSelectItem.emit($event)\">\r\n                 </app-layout-item>\r\n               </div>\r\n              </div>\r\n            </div>\r\n          </nz-collapse-panel>\r\n        </nz-collapse>\r\n        <ng-container *ngTemplateOutlet=\"copyAndDelete\"></ng-container>\r\n      </div>\r\n    </ng-container>\r\n    <ng-container *ngSwitchDefault>\r\n      <app-design-form-node class=\"drag-move\" \r\n        [selectItem]=\"selectItem\"\r\n        [config]=\"config\"\r\n        [record]=\"record\"\r\n        (handleDelete)=\"handleFormNodeDelete($event)\"\r\n        (handleSelectItem)=\"handleSelectItem.emit($event)\"\r\n        (handleCopy)=\"handleCopy.emit($event)\"\r\n      ></app-design-form-node>\r\n    </ng-container>\r\n</div>\r\n<ng-template #copyAndDelete>\r\n  <!-- <div [ngClass]=\"['copy', record.key === selectItem.key ? 'active' : 'unactivated']\" \r\n  (click)=\"handleCopyFn($event)\">\r\n    <i nz-icon nzType=\"copy\" nzTheme=\"outline\"></i>\r\n  </div> -->\r\n  <div [hidden]=\"hiddenDelete()\" [ngClass]=\"['delete', record.key === selectItem.key ? 'active' : 'unactivated']\"\r\n    (click)=\"handleDeleteFn($event)\">\r\n    <i nz-icon nzType=\"delete\" nzTheme=\"outline\"></i>\r\n  </div>\r\n</ng-template>","import { Component, Inject } from \"@angular/core\";\r\nimport {DialogRef, DIALOG_DATA} from '@angular/cdk/dialog';\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport 'codemirror/mode/javascript/javascript';\r\nimport { CodemirrorModule } from \"@ctrl/ngx-codemirror\";\r\nimport {Clipboard} from '@angular/cdk/clipboard';\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-preview-data-dialog',\r\n  templateUrl: './preview-data.dialog.html',\r\n  styleUrl: './preview-data.dialog.scss',\r\n  imports: [FormsModule, CodemirrorModule, NzButtonModule]\r\n})\r\nexport class PreviewDataDialog {\r\n  constructor(\r\n      public dialogRef: DialogRef<PreviewDataDialog>,\r\n      @Inject(DIALOG_DATA) public data,\r\n      private clipboard: Clipboard\r\n  ) {\r\n  }\r\n\r\n  public close() {\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  public copy() {\r\n    this.clipboard.copy(this.data.json);\r\n  }\r\n}\r\n\r\n","<ngx-codemirror\r\n  [ngModel]=\"data.json\"\r\n  [options]=\"{\r\n    lineNumbers: true,\r\n    theme: 'material',\r\n    mode: 'javascript'\r\n  }\"\r\n></ngx-codemirror>\r\n<hr>\r\n<div class=\"btn-group\">\r\n  <nz-button-group>\r\n    <button nz-button nzType=\"default\" (click)=\"close()\">Close</button>\r\n    <button nz-button nzType=\"primary\" (click)=\"copy()\">Copy JSON Data</button>\r\n  </nz-button-group>\r\n</div>","import { Component, EventEmitter, Input, Output, Optional, Inject } from \"@angular/core\";\r\nimport { ReactiveFormsModule, UntypedFormGroup } from \"@angular/forms\";\r\nimport { NzTabsModule } from \"ng-zorro-antd/tabs\";\r\nimport { NzCardModule } from \"ng-zorro-antd/card\";\r\nimport { NzCollapseModule } from \"ng-zorro-antd/collapse\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { DesignFormItemComponent } from \"../design-form-item/design-form-item.component\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-build-blocks',\r\n  templateUrl: './build-blocks.component.html',\r\n  styleUrls: ['./build-blocks.component.scss'],\r\n  imports: [\r\n    ReactiveFormsModule, NzTabsModule,NzCardModule,NzCollapseModule,CommonModule,NzGridModule,\r\n    DesignFormItemComponent,\r\n  ]\r\n})\r\nexport class BuildBlocksComponent  {\r\n  @Input() formConfig: any;\r\n  @Input() record: any;\r\n  @Input() form!: UntypedFormGroup;\r\n  constructor(\r\n  ) {}\r\n}","<ng-container [ngSwitch]=\"record.type\" [formGroup]=\"form\">\r\n  <div nz-row class=\"grid-row\" *ngSwitchCase=\"'grid'\" [nzGutter]=\"record.options.gutter\">\r\n    <div class=\"grid-col\" *ngFor=\"let colItem of record.columns; index as i\" nz-col [nzSpan]=\"colItem.span || 0\">\r\n        <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n          [record]=\"subItem\"\r\n          [formConfig]=\"formConfig\"\r\n          [form]=\"form\"\r\n          >\r\n        </app-build-blocks>\r\n    </div>\r\n  </div>\r\n  <nz-tabset class=\"grid-row\" *ngSwitchCase=\"'tabs'\"\r\n    [nzTabBarGutter]=\"record.options.tabBarGutter\"\r\n    [nzType]=\"record.options.type\"\r\n    [nzSize]=\"record.options.size\"\r\n    [nzTabPosition]=\"record.options.tabPosition\"\r\n    [nzAnimated]=\"record.options.animated\"\r\n    >\r\n    <nz-tab  *ngFor=\"let colItem of record.columns; index as i\" \r\n    [nzTitle]=\"colItem.label\">\r\n      <div [ngStyle]=\"{'max-height': record.options.contentMaxHeight, 'overflow-y': 'auto' }\" \r\n      *ngIf=\"record.options.contentMaxHeight != null && record.options.contentMaxHeight != -1\">\r\n        <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n        [record]=\"subItem\"\r\n        [formConfig]=\"formConfig\"\r\n        [form]=\"form\"\r\n        >\r\n      </app-build-blocks>\r\n      </div>\r\n      <ng-container *ngIf=\"record.options.contentMaxHeight == null || record.options.contentMaxHeight == -1\">\r\n        <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n        [record]=\"subItem\"\r\n        [formConfig]=\"formConfig\"\r\n        [form]=\"form\"\r\n        >\r\n      </app-build-blocks>\r\n      </ng-container>\r\n    </nz-tab>\r\n  </nz-tabset>\r\n  <nz-collapse *ngSwitchCase=\"'collapse'\"\r\n    class=\"grid-row\" [nzAccordion]=\"record.options.accordion\" [nzBordered]=\"record.options.bordered\"\r\n    [nzGhost]=\"record.options.ghost\" [nzExpandIconPosition]=\"record.options.expandIconPosition\">\r\n    <nz-collapse-panel [nzActive]=\"true\" *ngFor=\"let colItem of record.columns; index as i\" [nzHeader]=\"colItem.label\">\r\n      <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n        [record]=\"subItem\"\r\n        [formConfig]=\"formConfig\"\r\n        [form]=\"form\"\r\n        >\r\n      </app-build-blocks>\r\n    </nz-collapse-panel>\r\n  </nz-collapse>\r\n  <nz-card *ngSwitchCase=\"'card'\" class=\"grid-row\"\r\n  [nzTitle]=\"nzCardTitle\" \r\n  >\r\n    <app-build-blocks *ngFor=\"let subItem of record.list\" \r\n    [record]=\"subItem\"\r\n    [formConfig]=\"formConfig\"\r\n    [form]=\"form\"\r\n    >\r\n  </app-build-blocks>\r\n  </nz-card>\r\n  <ng-template #nzCardTitle>\r\n    <div style=\"padding-right: 12px; white-space: normal;\">{{record.label}}</div>\r\n  </ng-template>\r\n  <app-design-form-item *ngSwitchDefault\r\n    [formConfig]=\"formConfig\"\r\n    [record]=\"record\"\r\n    [form]=\"form\"\r\n  >\r\n  </app-design-form-item>\r\n</ng-container>","import { Component, EventEmitter, Inject, Input, OnChanges, Optional, Output, SimpleChanges } from \"@angular/core\";\r\nimport { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, ValidatorFn } from \"@angular/forms\";\r\nimport { NzLayoutModule } from \"ng-zorro-antd/layout\";\r\nimport { NzFormModule } from \"ng-zorro-antd/form\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { BuildBlocksComponent } from \"./components/build-blocks/build-blocks.component\";\r\n\r\n@Component({\r\n  selector: 'ngx-antd-form-viewer',\r\n  standalone: true,\r\n  template: `\r\n  <form *ngIf=\"json && json.list\" nz-form [nzLayout]=\"json.config.layout\"\r\n    class=\"k-form-build-9136076486841527\"\r\n    [formGroup]=\"_form\" [ngStyle]=\"{'width': json.config.previewWidth}\">\r\n    <app-build-blocks *ngFor=\"let record of json.list; index as i\"\r\n      [record]=\"record\"\r\n      [form]=\"_form\"\r\n      [formConfig]=\"json.config\"\r\n    ></app-build-blocks>\r\n  </form>\r\n  `,\r\n  styles: ``,\r\n  imports: [\r\n    BuildBlocksComponent,\r\n    NzLayoutModule, NzFormModule,CommonModule, ReactiveFormsModule,\r\n  ]\r\n})\r\nexport class NgxAntdFormViewerComponent implements OnChanges {\r\n  @Input() json: any;\r\n  @Input() initData: {[key: string]: any} = {};\r\n  @Input() readonly readonly: boolean = false;\r\n  @Input() readonly needInit: boolean = true;\r\n  @Output() readonly Submit = new EventEmitter();\r\n\r\n  _form: UntypedFormGroup;\r\n  private _flatResult\r\n  constructor(\r\n    private fb: UntypedFormBuilder,\r\n  ) {\r\n    this._form = new UntypedFormGroup({})\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes[\"json\"]) {\r\n      this.refreshFormGroup()\r\n      this.refreshReadOnly(this.readonly)\r\n    }\r\n    if (changes[\"readonly\"] && changes[\"readonly\"].currentValue != changes[\"readonly\"].previousValue) {\r\n      this.refreshReadOnly(changes[\"readonly\"].currentValue)\r\n    }\r\n  }\r\n\r\n  refreshReadOnly(readonly: boolean) {\r\n    Object.values(this._form.controls).forEach(control => {\r\n      if (readonly) {\r\n        control.disable()\r\n      } else {\r\n        control.enable()\r\n      }\r\n    })\r\n  }\r\n\r\n  refreshFormGroup() {\r\n    if (!this.json) {\r\n      return\r\n    }\r\n    const genRulesValidatorFn: ((rules: any[]) => ValidatorFn) = (rules)  => {\r\n      return (control: AbstractControl) => {\r\n        const value = control.value\r\n        if (rules.length == 0) {\r\n          return null;\r\n        }\r\n        if (typeof value == 'string') {\r\n          if (!value && rules[0].required) {\r\n            return {\r\n              message: rules[0].message\r\n            }\r\n          }\r\n          for (let i = 1; i < rules.length; i++) {\r\n            const regex = new RegExp(rules[i].pattern)\r\n            if (!regex.test(value)) {\r\n              return {\r\n                message: rules[i].message\r\n              }\r\n            }\r\n          }\r\n        } else {\r\n          //多选框\r\n          if (rules[0].required && (!value || value.length == 0)) {\r\n            return {\r\n              message: rules[0].message\r\n            }\r\n          } else {\r\n            return null\r\n          } \r\n        }\r\n        return null;\r\n      };\r\n    }\r\n    const getFlatList = (list, parent?) => {\r\n      const result: any[] = []\r\n      const recursive = (list, parent) => {\r\n        list.forEach(data => {\r\n          data.__parent = parent\r\n          if (['tabs', 'grid', 'collapse'].includes(data.type)) {\r\n            data.columns.forEach(col => {\r\n              recursive(col.list, data)\r\n            })\r\n          } else if (data.type == 'card' || data.type == 'block') {\r\n            recursive(data.list, data)\r\n          } else {\r\n            result.push(data)\r\n          }\r\n        })\r\n      }\r\n      recursive(list, parent ? parent :{})\r\n      return result\r\n    }\r\n    const result = getFlatList(this.json.list)\r\n    this._flatResult = result;\r\n    const obj = result.reduce((prev, cur) => {\r\n      prev[cur.key] = \r\n        this.initData && this.initData[cur.key] !== undefined ? [this.initData[cur.key]] : /**/\r\n        [this.needInit && cur.options?.defaultValue || ''];\r\n      if (cur.rules) {\r\n        prev[cur.key].push(genRulesValidatorFn(cur.rules))\r\n      } \r\n      return prev\r\n    }, {})\r\n    this._form = this.fb.group(obj)\r\n  }\r\n\r\n  public getData() {\r\n    return {\r\n      ...this._form.value\r\n    }\r\n  }\r\n\r\n  public checkValid() {\r\n    Object.values(this._form.controls).forEach(control => {\r\n      control.markAsDirty();\r\n      control.updateValueAndValidity();\r\n    })\r\n    return Object.entries(this._form.controls).filter(([k, c]) => !c.valid)\r\n      .map(([c]) => this._flatResult.find(f => f.key == c)).filter(c => !!c).map(c => c.label)\r\n  }\r\n}\r\n","import { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport {DialogRef, DIALOG_DATA, Dialog} from '@angular/cdk/dialog';\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\nimport { PreviewDataDialog } from \"../preview-data-dialog/preview-data.dialog\";\r\nimport { NgxAntdFormViewerComponent } from \"../../ngx-antd-form-viewer.component\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-preview-dialog',\r\n  templateUrl: './preview.dialog.html',\r\n  styleUrl: './preview.dialog.scss',\r\n  imports: [NgxAntdFormViewerComponent, NzButtonModule]\r\n})\r\nexport class PreviewDialog {\r\n  @ViewChild('designForm') designForm!: NgxAntdFormViewerComponent\r\n  constructor(\r\n      public dialog: Dialog,\r\n      public dialogRef: DialogRef<PreviewDialog>,\r\n      @Inject(DIALOG_DATA) public data\r\n  ) {\r\n  }\r\n\r\n  public close() {\r\n    this.dialogRef.close()\r\n  }\r\n\r\n  public view() {\r\n    const json = this.designForm.getData()\r\n    this.dialog.open(PreviewDataDialog, {\r\n      minWidth: '300px',\r\n      data: {\r\n        json: JSON.stringify(json, null, \"\\t\")\r\n      }\r\n    })\r\n  }\r\n\r\n  public check() {\r\n    this.designForm.checkValid();\r\n  }\r\n}\r\n\r\n","  <ngx-antd-form-viewer\r\n    #designForm\r\n    [json]=\"data.json\"\r\n  ></ngx-antd-form-viewer>\r\n  <hr>\r\n  <div class=\"btn-group\">\r\n    <nz-button-group>\r\n      <button nz-button nzType=\"default\" (click)=\"close()\">Close</button>\r\n      <button nz-button nzType=\"default\" (click)=\"check()\">Check Validation</button>\r\n      <button nz-button nzType=\"primary\" (click)=\"view()\">View JSON Data</button>\r\n    </nz-button-group>\r\n  </div>","export function cloneDeep(entity, cache = new WeakMap()) {\r\n  const referenceTypes = ['Array', 'Object', 'Map', 'Set', 'Date'];\r\n  const entityType = Object.prototype.toString.call(entity);\r\n  if (\r\n    !new RegExp(referenceTypes.join('|')).test(entityType) ||\r\n    entity instanceof WeakMap ||\r\n    entity instanceof WeakSet\r\n  )\r\n    return entity;\r\n  if (cache.has(entity)) {\r\n    return cache.get(entity);\r\n  }\r\n  const c = new entity.constructor();\r\n\r\n  if (entity instanceof Map) {\r\n    entity.forEach((value, key) =>\r\n      c.set(cloneDeep(key), cloneDeep(value))\r\n    );\r\n  }\r\n  if (entity instanceof Set) {\r\n    entity.forEach((value) => c.add(cloneDeep(value)));\r\n  }\r\n  if (entity instanceof Date) {\r\n    return new Date(entity);\r\n  }\r\n  cache.set(entity, c);\r\n  return Object.assign(\r\n    c,\r\n    ...Object.keys(entity).map((prop) => {\r\n      // debugger;\r\n      return {\r\n        [prop]: cloneDeep(entity[prop], cache),\r\n      };\r\n    })\r\n  );\r\n}","import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\r\nimport { Options } from 'sortablejs';\r\nimport { NgxAntdFormBuilderComponent } from '../../ngx-antd-form-builder.component';\r\nimport { LayoutItemComponent } from '../layout-item/layout-item.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\r\nimport { SortablejsModule } from '../../utils/sortablejs/sortablejs.module';\r\nimport { NzFormModule } from 'ng-zorro-antd/form';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button'\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport {Dialog, DialogModule} from '@angular/cdk/dialog';\r\nimport { PreviewDialog } from '../preview-dialog/preview.dialog';\r\nimport { cloneDeep } from '../../utils/func';\r\nimport { PreviewDataDialog } from '../preview-data-dialog/preview-data.dialog';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-component-panel',\r\n  templateUrl: './design-form-component-panel.component.html',\r\n  styleUrls: ['./design-form-component-panel.component.scss'],\r\n  imports: [\r\n    DialogModule,\r\n    LayoutItemComponent,CommonModule,NzLayoutModule,NzFormModule,NzButtonModule,NzIconModule,\r\n    SortablejsModule\r\n  ]\r\n})\r\nexport class DesignFormComponentPanelComponent {\r\n  @Input() data: any\r\n  @Input() selectItem: any;\r\n  @Output() readonly handleSetSelectItem: EventEmitter<any> = new EventEmitter()\r\n  @Output() readonly saveSchema: EventEmitter<void> = new EventEmitter()\r\n  options: Options = {\r\n    group: 'draggable-box',\r\n    // ghostClass: 'moving',\r\n    animation: 180,\r\n    handle: '.drag-move',\r\n    onAdd: this.deepClone.bind(this)\r\n  };\r\n  insertAllowedType: string[]= [\r\n    \"input\",\r\n    \"textarea\",\r\n    \"number\",\r\n    \"select\",\r\n    \"checkbox\",\r\n    \"radio\",\r\n    \"date\",\r\n    \"time\",\r\n    \"rate\",\r\n    \"slider\",\r\n    \"switch\",\r\n    \"text\",\r\n    \"html\"\r\n  ];\r\n  constructor(\r\n    private dialog: Dialog,\r\n    private antdFormBuilderComponent: NgxAntdFormBuilderComponent,\r\n  ) {\r\n  }\r\n\r\n  openPreview() {\r\n    this.dialog.open(PreviewDialog, {\r\n      minWidth: '300px',\r\n      data: {\r\n        json: this.antdFormBuilderComponent.getData()\r\n      }\r\n    })\r\n  }\r\n\r\n  openJsonSchema() {\r\n    this.dialog.open(PreviewDataDialog, {\r\n      minWidth: '600px',\r\n      data: {\r\n        json: this.antdFormBuilderComponent.getJsonSchema()\r\n      }\r\n    })\r\n  }\r\n\r\n  save() {\r\n    this.saveSchema.emit();\r\n  }\r\n\r\n  deepClone(evt) {\r\n    const newIndex = evt.newIndex;\r\n    // json深拷贝一次\r\n    //const listString = JSON.stringify(this.data.list);\r\n    this.data.list = cloneDeep(this.data.list)// JSON.parse(listString);\r\n    // 删除icon及compoent属性\r\n    delete this.data.list[newIndex].component;\r\n    this.handleSetSelectItem.emit(this.data.list[newIndex]);\r\n  }\r\n\r\n  handleColAdd($event) {\r\n    const {\r\n      evt, columns, isCopy = false\r\n    } = $event\r\n\r\n    // 重置或者生成key值\r\n    const newIndex = evt.newIndex;\r\n    const key = columns[newIndex].type + \"_\" + new Date().getTime();\r\n    if (columns[newIndex].key === \"\" || isCopy) {\r\n      columns[newIndex] = {\r\n        ...columns[newIndex],\r\n        key,\r\n      }\r\n      if (typeof columns[newIndex].options !== \"undefined\") {\r\n        // 深拷贝options\r\n        //const optionsStr = JSON.stringify(columns[newIndex].options);\r\n        columns[newIndex].options = cloneDeep(columns[newIndex].options) //JSON.parse(optionsStr);\r\n      }\r\n      if (typeof columns[newIndex].rules !== \"undefined\") {\r\n        // 深拷贝rules\r\n        //const rulesStr = JSON.stringify(columns[newIndex].rules);\r\n        columns[newIndex].rules = cloneDeep(columns[newIndex].rules) //JSON.parse(rulesStr);\r\n      }\r\n      if (typeof columns[newIndex].list !== \"undefined\") {\r\n        // 深拷贝list\r\n        columns[newIndex].list = [];\r\n      }\r\n      if (typeof columns[newIndex].columns !== \"undefined\") {\r\n        // 深拷贝columns\r\n        //const columnsStr = JSON.stringify(columns[newIndex].columns);\r\n        columns[newIndex].columns = cloneDeep(columns[newIndex].columns)// JSON.parse(columnsStr);\r\n        // 复制时，清空数据\r\n        columns[newIndex].columns.forEach(item => {\r\n          item.list = [];\r\n        });\r\n      }\r\n      if (columns[newIndex].type === \"table\") {\r\n        // 深拷贝trs\r\n        //const trsStr = JSON.stringify(columns[newIndex].trs);\r\n        columns[newIndex].trs = cloneDeep(columns[newIndex].trs)// JSON.parse(trsStr);\r\n        // 复制时，清空数据\r\n        columns[newIndex].trs.forEach(item => {\r\n          item.tds.forEach(val => {\r\n            val.list = [];\r\n          });\r\n        });\r\n      }\r\n    }\r\n    // 深拷贝数据\r\n    //const listString = JSON.stringify(columns[newIndex]);\r\n    columns[newIndex] = cloneDeep(columns[newIndex]) //JSON.parse(listString);\r\n    this.handleSetSelectItem.emit(columns[newIndex]);\r\n  }\r\n\r\n  handleCopy(isCopy = true, data) {\r\n  }\r\n  handleDelete($event) {\r\n    const traverse = array => {\r\n      array = array.filter((element, index) => {\r\n        if ([\"grid\", \"tabs\", \"selectInputList\", 'collapse'].includes(element.type)) {\r\n          // 栅格布局\r\n          element.columns.forEach(item => {\r\n            item.list = traverse(item.list);\r\n          });\r\n        }\r\n        if (element.type === \"card\" || element.type === \"batch\" || element.type === \"block\") {\r\n          // 卡片布局\r\n          element.list = traverse(element.list);\r\n        }\r\n        if (element.type === \"table\") {\r\n          // 表格布局\r\n          element.trs.forEach(item => {\r\n            item.tds.forEach(val => {\r\n              val.list = traverse(val.list);\r\n            });\r\n          });\r\n        }\r\n        if (element.key !== this.selectItem.key) {\r\n          return true;\r\n        } else {\r\n          if (array.length === 1) {\r\n            this.handleSetSelectItem.emit({ key: \"\" });\r\n            //this.handleSelectItem({ key: \"\" });\r\n          } else if (array.length - 1 > index) {\r\n            this.handleSetSelectItem.emit(array[index + 1]);\r\n            //this.handleSelectItem();\r\n          } else {\r\n            this.handleSetSelectItem.emit(array[index - 1]);\r\n            //this.handleSelectItem();\r\n          }\r\n          return false;\r\n        }\r\n      });\r\n      return array;\r\n    };\r\n    this.data.list = traverse(this.data.list)\r\n  }\r\n}\r\n","<div class=\"form-panel\">\r\n  <div class=\"panel-btn\">\r\n    <button nz-button (click)=\"openPreview()\">Preview</button>\r\n    <button nz-button (click)=\"openJsonSchema()\">View Schema</button>\r\n    <button nz-button nzType=\"primary\" (click)=\"save()\">Save</button>\r\n  </div>\r\n  <form nz-form  class=\"a-form-box\"\r\n    [nzLayout]=\"data.config.layout\" [ngStyle]=\"data.config.customStyle\">\r\n    <div class=\"draggable-box\">\r\n      <div class=\"list-main\" [sortablejs]=\"data.list\" [sortablejsOptions]=\"options\">\r\n        <app-layout-item class=\"drag-move\" *ngFor=\"let item of data.list\" \r\n          [record]=\"item\" [config]=\"data.config\"\r\n          [selectItem]=\"selectItem\"\r\n          (handleColAdd)=\"handleColAdd($event)\"\r\n          (handleSelectItem)=\"handleSetSelectItem.emit($event)\"\r\n          (handleCopy)=\"handleCopy($event, $event)\"\r\n          (handleDelete)=\"handleDelete($event)\"\r\n          >\r\n        </app-layout-item>\r\n      </div>\r\n    </div>\r\n  </form>\r\n</div>","import { Component, Inject, Input, OnChanges, Optional, SimpleChanges } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { NzInputNumberModule } from \"ng-zorro-antd/input-number\";\r\nimport { NzRateModule } from \"ng-zorro-antd/rate\";\r\nimport { DesignFormChangeOptionComponent } from \"../design-form-change-option/design-form-change-option.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NzEmptyModule } from \"ng-zorro-antd/empty\";\r\nimport { DesignFormItemCheckboxComponent } from \"../design-form-item-checkbox/design-form-item-checkbox.component\";\r\nimport { NzRadioModule } from \"ng-zorro-antd/radio\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzSelectModule } from \"ng-zorro-antd/select\";\r\nimport { NzCheckboxModule } from \"ng-zorro-antd/checkbox\";\r\nimport { NzDatePickerModule } from \"ng-zorro-antd/date-picker\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-item-properties',\r\n  templateUrl: './design-form-item-properties.component.html',\r\n  styleUrls: ['./design-form-item-properties.component.scss'],\r\n  imports: [\r\n    CommonModule, FormsModule, ReactiveFormsModule,\r\n    NzRateModule, NzInputNumberModule, NzEmptyModule, NzRadioModule, NzInputModule,\r\n    NzSelectModule,NzCheckboxModule,NzDatePickerModule,\r\n    DesignFormChangeOptionComponent, DesignFormItemCheckboxComponent]\r\n})\r\nexport class DesignFormItemPropertiesComponent implements OnChanges {\r\n  @Input() selectItem;\r\n  @Input() hideModel;\r\n  @Input() config;\r\n  showMetaDataModel: boolean = true\r\n\r\n  Infinity = Infinity\r\n\r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n  }\r\n\r\n  get options(): any {\r\n    return 'options' in this.selectItem? this.selectItem.options : {};\r\n  }\r\n\r\n  get showFreeModel() {\r\n    return typeof this.selectItem.key !== 'undefined'\r\n  }\r\n  getType(input: unknown) {\r\n    return typeof input\r\n  }\r\n\r\n  getOperationProperty() {\r\n    return typeof this.options.hidden !== 'undefined' ||\r\n      typeof this.options.readonly !== 'undefined' ||\r\n      typeof this.options.clearable !== 'undefined' ||\r\n      typeof this.options.multiple !== 'undefined'\r\n  }\r\n\r\n  colOverrideChange($event) {\r\n    this.options.overrideLayout = $event\r\n    if ($event) {\r\n      this.options.labelCol = {...this.config.labelCol};\r\n      this.options.wrapperCol = {...this.config.wrapperCol};\r\n      this.options.labelWidth = this.config.labelWidth;\r\n    }\r\n  }\r\n\r\n  handleChangeCol(e) {\r\n    this.options.labelCol.xs = this.options.labelCol.sm = this.options.labelCol.md = this.options.labelCol.lg = this.options.labelCol.xl = this.options.labelCol.xxl = e;\r\n\r\n    this.options.wrapperCol.xs = this.options.wrapperCol.sm = this.options.wrapperCol.md = this.options.wrapperCol.lg = this.options.wrapperCol.xl = this.options.wrapperCol.xxl =\r\n      24 - e;\r\n  }\r\n\r\n  handleChangeLabelCol(e) {\r\n    this.options.labelCol.xs = this.options.labelCol.sm = this.options.labelCol.md = this.options.labelCol.lg = this.options.labelCol.xl = this.options.labelCol.xxl = e;\r\n  }\r\n  handleChangeWrapperCol(e) {\r\n    this.options.wrapperCol.xs = this.options.wrapperCol.sm = this.options.wrapperCol.md = this.options.wrapperCol.lg = this.options.wrapperCol.xl = this.options.wrapperCol.xxl = e;\r\n  }\r\n}","<div class=\"properties-centent kk-checkbox\">\r\n  <div class=\"properties-body\">\r\n    <nz-empty\r\n      *ngIf=\"selectItem.key === ''\"\r\n      [nzNotFoundContent]=\"contentTpl\">\r\n      <ng-template #contentTpl>\r\n        <span>No Select Component</span>\r\n      </ng-template>\r\n    </nz-empty>\r\n    <div *ngIf=\"selectItem.key !== ''\">\r\n      <div *ngIf=\"getType(selectItem.label) !== 'undefined'\">\r\n        <label>\r\n          Label\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"selectItem.label\"/>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"showFreeModel\">\r\n        <label>\r\n          key\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"selectItem.key\"  />\r\n        </div>\r\n      </div>\r\n\r\n      <hr>\r\n      <!-- input type start -->\r\n      <div *ngIf=\"selectItem.type === 'input'\">\r\n        <label>\r\n          Input Type\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"options.type\"  />\r\n        </div>\r\n      </div>\r\n      <!-- input type end -->\r\n\r\n      <div *ngIf=\"getType(options.rangePlaceholder) !== 'undefined' && options.range; else placeHolderElse\">\r\n        <label>\r\n          placeholder\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"options.rangePlaceholder[0]\"  />\r\n          <input nz-input [(ngModel)]=\"options.rangePlaceholder[1]\" />\r\n        </div>\r\n      </div>\r\n      <ng-template #placeHolderElse>\r\n        <div *ngIf=\"getType(options.placeholder) !== 'undefined'\">\r\n          <label>\r\n            Placeholder\r\n          </label>\r\n          <div>\r\n            <input nz-input [(ngModel)]=\"options.placeholder\" placeholder=\"Placeholder\" />\r\n          </div>\r\n        </div>\r\n      </ng-template>\r\n\r\n      <div *ngIf=\"selectItem.type === 'textarea'\">\r\n        <label>\r\n          Size\r\n        </label>\r\n        <div>\r\n          <nz-input-number nzPlaceHolder=\"Min Rows\" [(ngModel)]=\"options.minRows\"></nz-input-number>\r\n          <nz-input-number nzPlaceHolder=\"Max Rows\" [(ngModel)]=\"options.maxRows\"></nz-input-number>\r\n        </div>\r\n      </div>\r\n\r\n      <div *ngIf=\"getType(options.width) !== 'undefined'\">\r\n        <label>\r\n          Width\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"options.width\"  />\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.height) !== 'undefined'\">\r\n        <label>\r\n          Height\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"options.height\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.step) !== 'undefined'\">\r\n        <label>\r\n          step\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"options.step\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.min) !== 'undefined'\">\r\n        <label>\r\n          Min value\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"options.min\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.max) !== 'undefined'\">\r\n        <label>\r\n          Max value\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"options.max\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.maxLength) !== 'undefined'\">\r\n        <label>\r\n          MaxLength\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"options.maxLength\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.tabBarGutter) !== 'undefined'\">\r\n        <label>\r\n          TabBarGutter\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"options.tabBarGutter\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"getType(options.precision) !== 'undefined'\">\r\n        <label>\r\n          Precision\r\n        </label>\r\n        <div>\r\n          <nz-input-number\r\n            [nzMin]=\"0\" [nzMax]=\"50\"\r\n           [(ngModel)]=\"options.precision\" ></nz-input-number>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 选项配置及动态数据配置 start -->\r\n      <div *ngIf=\"getType(options.options) !== 'undefined'\">\r\n        <label>\r\n          Options\r\n        </label>\r\n        <div>\r\n          <app-design-form-change-option \r\n            [(ngModel)]=\"options.options\"\r\n          ></app-design-form-change-option>\r\n        </div>\r\n      </div>\r\n      <!-- 选项配置及动态数据配置 end -->\r\n\r\n      <!-- tabs配置 start -->\r\n      <div *ngIf=\"selectItem.type == 'tabs' || selectItem.type == 'selectInputList'\">\r\n        <label>\r\n          {{selectItem.type === 'tabs' ? 'Tabs Config' : 'Grid Config'}}\r\n        </label>\r\n        <div>\r\n          <app-design-form-change-option [type]=\"'tab'\" [(ngModel)]=\"selectItem.columns\"></app-design-form-change-option>\r\n        </div>\r\n      </div>\r\n      <!-- tabs配置 end -->\r\n      <ng-container *ngIf=\"selectItem.type === 'tabs'\">\r\n        <!-- 页签位置 start -->\r\n        <div>\r\n          <label>\r\n            Tab position\r\n          </label>\r\n          <div>\r\n            <nz-radio-group nzButtonStyle=\"solid\" [(ngModel)]=\"options.tabPosition\">\r\n              <label nz-radio nzValue=\"top\">top</label>\r\n              <label nz-radio nzValue=\"right\">right</label>\r\n              <label nz-radio nzValue=\"bottom\">bottom</label>\r\n              <label nz-radio nzValue=\"left\">left</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n        <!-- 页签位置 end -->\r\n      \r\n        <!-- 页签类型 start -->\r\n        <div>\r\n          <label>\r\n            Tab Style\r\n          </label>\r\n          <div>\r\n            <nz-radio-group nzButtonStyle=\"solid\" [(ngModel)]=\"options.type\">\r\n              <label nz-radio nzValue=\"line\">line</label>\r\n              <label nz-radio nzValue=\"card\">card</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n        <!-- 页签类型 end -->\r\n      </ng-container>\r\n      <!-- 页签大小 start -->\r\n      <div *ngIf=\"getType(options.size) !== 'undefined'\">\r\n        <label>\r\n          Size\r\n        </label>\r\n        <div>\r\n          <nz-radio-group [(ngModel)]=\"options.size\">\r\n            <label nz-radio-button nzValue=\"large\">large</label>\r\n            <label nz-radio-button nzValue=\"default\">default</label>\r\n            <label nz-radio-button nzValue=\"small\">small</label>\r\n          </nz-radio-group>\r\n        </div>\r\n      </div>\r\n      <!-- 页签大小 end -->\r\n\r\n      <!-- grid type 配置 start -->\r\n      <ng-container *ngIf=\"selectItem.type === 'grid'\">\r\n        <div>\r\n          <label>\r\n            Grid Gutter\r\n          </label>\r\n          <div>\r\n            <nz-input-number [(ngModel)]=\"selectItem.options.gutter\"></nz-input-number>\r\n          </div>\r\n        </div>\r\n        <div>\r\n          <label>\r\n            Grid Config\r\n          </label>\r\n          <div>\r\n            <app-design-form-change-option [type]=\"'colspan'\" [(ngModel)]=\"selectItem.columns\"></app-design-form-change-option>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- grid type 配置 end-->\r\n\r\n      <!-- 默认值部分 start -->\r\n      <div *ngIf=\"selectItem.type === 'switch'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <nz-switch [(ngModel)]=\"options.defaultValue\"></nz-switch>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"selectItem.type === 'number' || selectItem.type === 'slider'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <nz-input-number\r\n            [nzStep]=\"options.step\"\r\n            [nzMin]=\"options.min || -Infinity\"\r\n            [nzMax]=\"options.max || Infinity\"\r\n            [(ngModel)]=\"options.defaultValue\"\r\n          ></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"selectItem.type === 'rate'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <nz-rate\r\n            [nzAllowHalf]=\"options.allowHalf\"\r\n            [nzCount]=\"options.max\"\r\n            [(ngModel)]=\"options.defaultValue\"\r\n          ></nz-rate>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- date -->\r\n      <ng-container *ngIf=\"selectItem.type === 'date'\">\r\n        <div>\r\n          <label>\r\n            Type\r\n          </label>\r\n          <div>\r\n            <nz-radio-group [(ngModel)]=\"options.mode\">\r\n              <label nz-radio nzValue=\"date\">Date</label>\r\n              <label nz-radio nzValue=\"week\">Week</label>\r\n              <label nz-radio nzValue=\"month\">Month</label>\r\n              <label nz-radio nzValue=\"year\">Year</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n        <div>\r\n          <label>\r\n            Default\r\n          </label>\r\n          <div>\r\n            <nz-date-picker [nzMode]=\"options.mode\" [(ngModel)]=\"options.defaultValue\"></nz-date-picker>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n      <!-- date end-->\r\n\r\n\r\n      <div *ngIf=\"selectItem.type === 'select'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <nz-select style=\"width: 100%;\"\r\n            [(ngModel)]=\"options.defaultValue\"\r\n          >\r\n          <nz-option *ngFor=\"let option of options.options\" \r\n            [nzValue]=\"option.value\" [nzLabel]=\"option.label\"></nz-option>\r\n        </nz-select>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"selectItem.type === 'radio'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <nz-radio-group [(ngModel)]=\"options.defaultValue\">\r\n            <label \r\n              *ngFor=\"let item of options.options\" nz-radio\r\n              [nzValue]=\"item.value\">{{item.label}}</label>\r\n          </nz-radio-group>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"selectItem.type === 'checkbox'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <app-design-form-item-checkbox \r\n            [options]=\"options.options\" [(ngModel)]=\"options.defaultValue\">\r\n          </app-design-form-item-checkbox>\r\n          <!-- <nz-checkbox-group></nz-checkbox-group>\r\n          <nz-radio-group [(ngModel)]=\"options.defaultValue\">\r\n            <label \r\n              *ngFor=\"let item of options.options\" nz-radio\r\n              [nzValue]=\"item.value\">{{item.label}}</label>\r\n          </nz-radio-group> -->\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"!(selectItem.type === 'number' || selectItem.type === 'radio' || selectItem.type === 'checkbox' \r\n        || selectItem.type === 'date' || selectItem.type === 'rate' || selectItem.type === 'select'\r\n        || selectItem.type === 'switch' || selectItem.type === 'slider'  || selectItem.type === 'html')\r\n          && getType(options.defaultValue) !== 'undefined'\">\r\n        <label>\r\n          Default\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"options.defaultValue\"/>\r\n        </div>\r\n      </div>\r\n      <!-- 默认值部分 end -->\r\n\r\n\r\n      <div *ngIf=\"getType(options.orientation) !== 'undefined'\">\r\n        <label>\r\n          Text Position\r\n        </label>\r\n        <div>\r\n          <nz-radio-group [(ngModel)]=\"options.orientation\">\r\n            <label nz-radio-button nzValue=\"left\">Left</label>\r\n            <label nz-radio-button nzValue=\"\">Center</label>\r\n            <label nz-radio-button nzValue=\"right\">Right</label>\r\n          </nz-radio-group>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- button -->\r\n      <ng-container *ngIf=\"selectItem.type === 'button'\">\r\n        <div>\r\n          <label>\r\n            Button Type\r\n          </label>\r\n          <div>\r\n            <nz-radio-group [(ngModel)]=\"options.type\">\r\n              <label nz-radio nzValue=\"primary\">Primary</label>\r\n              <label nz-radio nzValue=\"default\">Default</label>\r\n              <label nz-radio nzValue=\"dashed\">Dashed</label>\r\n              <label nz-radio nzValue=\"text\">Text</label>\r\n              <label nz-radio nzValue=\"link\">Link</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- alert -->\r\n      <ng-container *ngIf=\"selectItem.type === 'alert'\">\r\n        <div>\r\n          <label>\r\n            Description\r\n          </label>\r\n          <div>\r\n            <input nz-input [(ngModel)]=\"options.description\">\r\n          </div>\r\n        </div>\r\n        <div>\r\n          <label>\r\n            Alert Type\r\n          </label>\r\n          <div>\r\n            <nz-radio-group nzButtonStyle=\"solid\" [(ngModel)]=\"options.type\">\r\n              <label nz-radio nzValue=\"success\">success</label>\r\n              <label nz-radio nzValue=\"info\">info</label>\r\n              <label nz-radio nzValue=\"warning\">warning</label>\r\n              <label nz-radio nzValue=\"error\">error</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <!-- 折叠面板 start -->\r\n      <ng-container *ngIf=\"selectItem.type === 'collapse'\">\r\n        <!-- 页签位置 start -->\r\n        <div>\r\n          <label>\r\n            only one\r\n          </label>\r\n          <div>\r\n            <nz-radio-group [(ngModel)]=\"options.tabPosition\">\r\n              <label nz-radio [nzValue]=\"true\">True</label>\r\n              <label nz-radio [nzValue]=\"false\">False</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n        <!-- 页签位置 end -->\r\n      \r\n        <div>\r\n          <label>\r\n            Panel Config\r\n          </label>\r\n          <div>\r\n            <app-design-form-change-option [type]=\"'collapse'\" [(ngModel)]=\"selectItem.columns\"></app-design-form-change-option>\r\n          </div>\r\n        </div>\r\n        <!-- 页签类型 start -->\r\n      </ng-container>\r\n      <!-- 折叠面板 end -->\r\n\r\n      <ng-container *ngIf=\"selectItem.type === 'text'\">\r\n        <div>\r\n          <label>\r\n            Text align\r\n          </label>\r\n          <div>\r\n            <nz-radio-group nzButtonStyle=\"solid\" [(ngModel)]=\"options.textAlign\">\r\n              <label nz-radio-button nzValue=\"left\">Left</label>\r\n              <label nz-radio-button nzValue=\"center\">Center</label>\r\n              <label nz-radio-button nzValue=\"right\">Right</label>\r\n            </nz-radio-group>\r\n          </div>\r\n        </div>\r\n        <div>\r\n          <label>\r\n            Font family\r\n          </label>\r\n          <div>\r\n            <input nz-input [(ngModel)]=\"options.fontFamily\"/>\r\n          </div>\r\n        </div>\r\n        <div>\r\n          <label>\r\n            Font Size\r\n          </label>\r\n          <div>\r\n            <input nz-input [(ngModel)]=\"options.fontSize\"/>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n      \r\n\r\n      <div *ngIf=\"getOperationProperty()\">\r\n        <label>\r\n          Operation\r\n        </label>\r\n        <div>\r\n          <label *ngIf=\"getType(options.hidden) !== 'undefined'\" nz-checkbox [(ngModel)]=\"options.hidden\">Hidden</label>\r\n          <!-- <label *ngIf=\"getType(options.disabled) !== 'undefined'\" nz-checkbox [(ngModel)]=\"options.disabled\">Disable</label> -->\r\n          <label *ngIf=\"getType(options.readonly) !== 'undefined'\" nz-checkbox [(ngModel)]=\"options.readonly\">ReadOnly</label>\r\n          <label *ngIf=\"getType(options.clearable) !== 'undefined'\" nz-checkbox [(ngModel)]=\"options.clearable\">Clearable</label>\r\n          <label *ngIf=\"getType(options.multiple) !== 'undefined'\" nz-checkbox [(ngModel)]=\"options.multiple\">Multiple</label>\r\n        </div>\r\n      </div>\r\n\r\n      <ng-container *ngIf=\"getType(selectItem.rules) !== 'undefined'\r\n      && selectItem.rules.length > 0\">\r\n        <div >\r\n          <label>\r\n            Validation\r\n          </label>\r\n          <div>\r\n            <label nz-checkbox [(ngModel)]=\"selectItem.rules[0].required\">Required</label>\r\n            <input nz-input [(ngModel)]=\"selectItem.rules[0].message\" placeholder=\"Error Tooltip\" />\r\n          </div>\r\n        </div>\r\n        <div >\r\n          <label>\r\n          </label>\r\n          <div>\r\n            <app-design-form-change-option [type]=\"'rules'\" [(ngModel)]=\"selectItem.rules\"></app-design-form-change-option>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n      \r\n      <!-- <div *ngIf=\"getType(selectItem.help) !== 'undefined'\">\r\n        <label>\r\n          Help tooltip\r\n        </label>\r\n        <div>\r\n          <input nz-input [(ngModel)]=\"selectItem.help\" />\r\n        </div>\r\n      </div> -->\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Component, Inject, Input, Optional } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NzInputNumberModule } from \"ng-zorro-antd/input-number\";\r\nimport { NzRadioModule } from \"ng-zorro-antd/radio\";\r\nimport { NzSliderModule } from \"ng-zorro-antd/slider\";\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-design-form-properties',\r\n  templateUrl: './design-form-properties.component.html',\r\n  styleUrls: ['./design-form-properties.component.scss'],\r\n  imports: [\r\n    FormsModule,\r\n    NzInputNumberModule, NzRadioModule,CommonModule,NzSliderModule\r\n  ],\r\n})\r\nexport class DesignFormPropertiesComponent {\r\n  @Input() previewOptions //=\"record.key\"\r\n  @Input() config //=\"config\"\r\n\r\n  constructor(\r\n  ) {}\r\n\r\n  handleChangeCol(e) {\r\n    this.config.labelCol.xs = this.config.labelCol.sm = this.config.labelCol.md = this.config.labelCol.lg = this.config.labelCol.xl = this.config.labelCol.xxl = e;\r\n\r\n    this.config.wrapperCol.xs = this.config.wrapperCol.sm = this.config.wrapperCol.md = this.config.wrapperCol.lg = this.config.wrapperCol.xl = this.config.wrapperCol.xxl =\r\n      24 - e;\r\n  }\r\n\r\n  handleChangeLabelCol(e) {\r\n    this.config.labelCol.xs = this.config.labelCol.sm = this.config.labelCol.md = this.config.labelCol.lg = this.config.labelCol.xl = this.config.labelCol.xxl = e;\r\n  }\r\n  handleChangeWrapperCol(e) {\r\n    this.config.wrapperCol.xs = this.config.wrapperCol.sm = this.config.wrapperCol.md = this.config.wrapperCol.lg = this.config.wrapperCol.xl = this.config.wrapperCol.xxl = e;\r\n  }\r\n}","<div class=\"properties-centent kk-checkbox\">\r\n  <div class=\"properties-body\">\r\n    <!-- <div> -->\r\n      <div class=\"preview-width\">\r\n        <span>width：</span>\r\n        <input nz-input [(ngModel)]=\"config.previewWidth\"/>\r\n      </div>\r\n      <div class=\"table-layout\" *ngIf=\"config.layout != 'undefined'\">\r\n        <span>\r\n          Form Layout\r\n        </span>\r\n        <div>\r\n          <nz-radio-group [(ngModel)]=\"config.layout\">\r\n            <label nz-radio-button nzValue=\"horizontal\">Horizontal</label>\r\n            <label nz-radio-button nzValue=\"vertical\">Vertical</label>\r\n            <!-- <label nz-radio-button nzValue=\"inline\">Inline</label> -->\r\n          </nz-radio-group>\r\n        </div>\r\n      </div>\r\n      <hr>\r\n\r\n      <ng-container *ngIf=\"config.layout == 'horizontal'\">\r\n      <div>\r\n        <label>\r\n          Label Layout\r\n        </label>\r\n        <div>\r\n          <nz-radio-group [(ngModel)]=\"config.labelLayout\">\r\n            <label nz-radio-button nzValue=\"fixed\">Fixed</label>\r\n            <label nz-radio-button nzValue=\"flex\">Flex</label>\r\n          </nz-radio-group>\r\n        </div>\r\n      </div>\r\n      <hr>\r\n      \r\n      <div class=\"label-width\" [hidden]=\"config.labelLayout === 'flex'\">\r\n        <label>\r\n          Label Width(px)：\r\n        </label>\r\n        <div>\r\n          <nz-input-number [(ngModel)]=\"config.labelWidth\"></nz-input-number>\r\n        </div>\r\n      </div>\r\n      <div [hidden]=\"config.labelLayout !== 'flex'\">\r\n        <label>\r\n          labelCol:\r\n        </label>\r\n        <div class=\"col-config\">\r\n          <nz-slider\r\n            nzMax=\"24\" nzMin=\"0\"\r\n            [(ngModel)]=\"config.labelCol.xs\"\r\n            (ngModelChange)=\"handleChangeCol($event)\"\r\n          ></nz-slider>\r\n            <div>\r\n              <label>xs:</label>\r\n              <nz-input-number [(ngModel)]=\"config.labelCol.xs\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>sm:</label>\r\n              <nz-input-number [(ngModel)]=\"config.labelCol.sm\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>md:</label>\r\n              <nz-input-number [(ngModel)]=\"config.labelCol.md\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>lg:</label>\r\n              <nz-input-number [(ngModel)]=\"config.labelCol.lg\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>xl:</label>\r\n              <nz-input-number [(ngModel)]=\"config.labelCol.xl\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>xxl:</label>\r\n              <nz-input-number [(ngModel)]=\"config.labelCol.xxl\" ></nz-input-number>\r\n            </div>\r\n        </div>\r\n      </div>\r\n      <div [hidden]=\"config.labelLayout !== 'flex'\">\r\n        <label>\r\n          Input Col\r\n        </label>\r\n        <div class=\"col-config\">  \r\n            <div>\r\n              <label>xs:</label>\r\n              <nz-input-number [(ngModel)]=\"config.wrapperCol.xs\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>sm:</label>\r\n              <nz-input-number [(ngModel)]=\"config.wrapperCol.sm\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>md:</label>\r\n              <nz-input-number [(ngModel)]=\"config.wrapperCol.md\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>lg:</label>\r\n              <nz-input-number [(ngModel)]=\"config.wrapperCol.lg\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>xl:</label>\r\n              <nz-input-number [(ngModel)]=\"config.wrapperCol.xl\" ></nz-input-number>\r\n            </div>\r\n            <div>\r\n              <label>xxl:</label>\r\n              <nz-input-number [(ngModel)]=\"config.wrapperCol.xxl\" ></nz-input-number>\r\n            </div>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n","import { NgxAntdFormBuilder } from \"../ngx-antd-form-builder.interface\";\r\n\r\nconst inputComponent: NgxAntdFormBuilder.InputType = {\r\n  type: \"input\",\r\n  label: \"Input\", \r\n  options: {\r\n    type: \"text\",\r\n    width: \"100%\",\r\n    defaultValue: \"\",\r\n    placeholder: \"\", \r\n    clearable: false,\r\n    maxLength: null,\r\n    disabled: false \r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false, \r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n}\r\n\r\nconst textareaComponent: NgxAntdFormBuilder.TextareaType = { \r\n  type: \"textarea\",\r\nlabel: \"Textarea\", \r\noptions: {\r\n  width: \"100%\",\r\n  minRows: 4,\r\n  maxRows: 6,\r\n  maxLength: null,\r\n  defaultValue: \"\",\r\n  clearable: false,\r\n  disabled: false,\r\n  placeholder: \"\"\r\n},\r\nkey: \"\",\r\nhelp: \"\",\r\nrules: [\r\n  {\r\n    required: false,\r\n    message: \"Field Required\"\r\n  }\r\n]}\r\n\r\nconst numberComponent: NgxAntdFormBuilder.NumberType =   {\r\n  type: \"number\",\r\n  label: \"Number\",\r\n  options: {\r\n    width: \"100%\",\r\n    defaultValue: 0, \r\n    min: undefined, \r\n    max: undefined, \r\n    precision: undefined,\r\n    step: 1, \r\n    disabled: false, \r\n    placeholder: \"\"\r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n};\r\n\r\nconst selectComponent: NgxAntdFormBuilder.SelectType =   {\r\n  type: \"select\", \r\n  label: \"Select\", \r\n  options: {\r\n    width: \"100%\", \r\n    defaultValue: undefined, \r\n    multiple: false, \r\n    disabled: false, \r\n    clearable: false,\r\n    placeholder: \"\", \r\n    dynamicKey: \"\",\r\n    options: [\r\n      {\r\n        value: \"1\",\r\n        label: \"Option 1\"\r\n      },\r\n      {\r\n        value: \"2\",\r\n        label: \"Option 2\"\r\n      }\r\n    ],\r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n};\r\n\r\nconst checkBoxComponent: NgxAntdFormBuilder.CheckboxType =  {\r\n  type: \"checkbox\",\r\n  label: \"Checkbox\",\r\n  options: {\r\n    disabled: false, \r\n    defaultValue: [],\r\n    dynamicKey: \"\",\r\n    options: [\r\n      {\r\n        value: \"1\",\r\n        label: \"Option 1\"\r\n      },\r\n      {\r\n        value: \"2\",\r\n        label: \"Option 2\"\r\n      },\r\n    ]\r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n};\r\n\r\nconst radioComponent: NgxAntdFormBuilder.RadioType = {\r\n  type: \"radio\",\r\n  label: \"Radio \", \r\n  options: {\r\n    disabled: false, \r\n    defaultValue: \"\", \r\n    dynamicKey: \"\",\r\n    options: [\r\n      {\r\n        value: \"1\",\r\n        label: \"Option 1\"\r\n      },\r\n      {\r\n        value: \"2\",\r\n        label: \"Option 2\"\r\n      },\r\n    ]\r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n};\r\n\r\nconst rateComponent: NgxAntdFormBuilder.RateType =   {\r\n  type: \"rate\", \r\n  label: \"Rate\", \r\n  options: {\r\n    defaultValue: 0,\r\n    max: 5, \r\n    disabled: false, \r\n    allowHalf: false\r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n};\r\n\r\nconst sliderComponent: NgxAntdFormBuilder.SliderType = {\r\n  type: \"slider\",\r\n    label: \"Slider\", \r\n    options: {\r\n      width: \"100%\",\r\n      defaultValue: 0,\r\n      disabled: false,\r\n      min: 0, \r\n      max: 100, \r\n      step: 1, \r\n      showInput: false\r\n    },\r\n    key: \"\",\r\n    help: \"\",\r\n    rules: [\r\n      {\r\n        required: false,\r\n        message: \"Field Required\"\r\n      }\r\n    ]\r\n};\r\n\r\nconst dateComponent: NgxAntdFormBuilder.DateType = {\r\n  type: \"date\",\r\n  label: \"Date\",\r\n  options: {\r\n    width: '100%',\r\n    placeholder: 'Select Date',\r\n    disabled: false,\r\n    defaultValue: undefined,\r\n    mode: 'date',\r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n}\r\n\r\nconst switchComponent: NgxAntdFormBuilder.SwitchType =   {\r\n  type: \"switch\",\r\n  label: \"Switch\",\r\n  options: {\r\n    defaultValue: false, \r\n    disabled: false \r\n  },\r\n  key: \"\",\r\n  help: \"\",\r\n  rules: [\r\n    {\r\n      required: false,\r\n      message: \"Field Required\"\r\n    }\r\n  ]\r\n};\r\n\r\nconst alertComponent: NgxAntdFormBuilder.AlertType = {\r\n  type: \"alert\",\r\n  label: \"Alert\",\r\n  options: {\r\n    type: \"success\",\r\n    description: \"\",\r\n    showIcon: false,\r\n    banner: false,\r\n    closable: false\r\n  },\r\n  key: \"\"\r\n};\r\n\r\nconst textComponent: NgxAntdFormBuilder.TextType =   {\r\n  type: \"text\",\r\n  label: \"Text\",\r\n  options: {\r\n    textAlign: \"left\",\r\n    showRequiredMark: false,\r\n    fontFamily: \"\",\r\n    fontSize: \"16pt\"\r\n  },\r\n  key: \"\"\r\n};\r\n\r\nexport const ComponentList: Array<NgxAntdFormBuilder.AllComponentType> = [\r\n  inputComponent, textareaComponent, numberComponent,selectComponent,checkBoxComponent,\r\n  radioComponent,rateComponent, sliderComponent, alertComponent, textComponent, dateComponent\r\n]\r\n\r\n\r\nconst dividerLayout: NgxAntdFormBuilder.DividerLayout =  {\r\n  type: \"divider\",\r\n  label: \"Divider\",\r\n  options: {\r\n    orientation: \"left\"\r\n  },\r\n  key: \"\",\r\n};\r\n\r\nconst cardLayout: NgxAntdFormBuilder.CardLayout = \r\n{\r\n  type: \"card\",\r\n  label: \"Card\",\r\n  list: [],\r\n  key: \"\",\r\n}\r\n\r\nconst tabsLayout: NgxAntdFormBuilder.TabsLayout =\r\n{\r\n  type: \"tabs\",\r\n  label: \"Tabs\",\r\n  options: {\r\n    tabBarGutter: null,\r\n    type: \"line\",\r\n    tabPosition: \"top\",\r\n    size: \"default\",\r\n    animated: true\r\n  },\r\n  columns: [\r\n    {\r\n      value: \"1\",\r\n      label: \"Tab 1\",\r\n      list: []\r\n    },\r\n    {\r\n      value: \"2\",\r\n      label: \"Tab 2\",\r\n      list: []\r\n    }\r\n  ],\r\n  key: \"\",\r\n};\r\n\r\nconst gridLayout: NgxAntdFormBuilder.GridLayout = {\r\n  type: \"grid\",\r\n  label: \"Grid\",\r\n  columns: [\r\n    {\r\n      span: 12,\r\n      list: []\r\n    },\r\n    {\r\n      span: 12,\r\n      list: []\r\n    }\r\n  ],\r\n  options: {\r\n    gutter: 0\r\n  },\r\n  key: \"\",\r\n};\r\n\r\nconst collapseLayout: NgxAntdFormBuilder.CollapseLayout ={\r\n  type: \"collapse\",\r\n  label: \"Collapse\",\r\n  options: {\r\n    accordion: null,\r\n    bordered: \"line\",\r\n    ghost: false,\r\n    expandIconPosition: \"default\",\r\n    //animated: true\r\n  },\r\n  columns: [\r\n    {\r\n      value: \"1\",\r\n      label: \"Panel 1\",\r\n      list: []\r\n    },\r\n    {\r\n      value: \"2\",\r\n      label: \"Panel 2\",\r\n      list: []\r\n    }\r\n  ],\r\n  key: \"\",\r\n};\r\n\r\nexport const LayoutList: Array<NgxAntdFormBuilder.AllLayout> = [\r\n dividerLayout, cardLayout, tabsLayout, gridLayout, collapseLayout\r\n];\r\n\r\nexport const DefaultFields = [\r\n  \"input\",\r\n  \"textarea\",\r\n  \"number\",\r\n  \"select\",\r\n  \"checkbox\",\r\n  \"radio\",\r\n  \"rate\",\r\n  \"slider\",\r\n  \"date\",\r\n  \"switch\",\r\n  \"alert\",\r\n  \"text\",\r\n  \"divider\",\r\n  \"card\",\r\n  \"tabs\",\r\n  \"grid\",\r\n  \"collapse\",\r\n]","import { HttpClientModule } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\r\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\r\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\r\nimport {DialogModule} from '@angular/cdk/dialog'\r\nimport { CollapseItemListComponent } from './components/collapse-item-list/collapse-item-list.component';\r\nimport { DesignFormChangeOptionComponent } from './components/design-form-change-option/design-form-change-option.component';\r\nimport { DesignFormComponentPanelComponent } from './components/design-form-component-panel/design-form-component-panel.component';\r\nimport { DesignFormItemPropertiesComponent } from './components/design-form-item-properties/design-form-item-properties.component';\r\nimport { DesignFormNodeComponent } from './components/design-form-node/design-form-node.component';\r\nimport { DesignFormPropertiesComponent } from './components/design-form-properties/design-form-properties.component';\r\nimport { LayoutItemComponent } from './components/layout-item/layout-item.component';\r\nimport { ComponentList, DefaultFields, LayoutList } from './utils/form-item.config';\r\nimport { NgxAntdFormBuilder } from './ngx-antd-form-builder.interface';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { cloneDeep } from './utils/func';\r\n\r\n@Component({\r\n  selector: 'ngx-antd-form-builder',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    DesignFormNodeComponent,\r\n    CollapseItemListComponent,DesignFormComponentPanelComponent,LayoutItemComponent,\r\n    DesignFormPropertiesComponent,DesignFormItemPropertiesComponent,DesignFormChangeOptionComponent,\r\n    FormsModule,\r\n    HttpClientModule,\r\n    DialogModule,\r\n    NzCollapseModule,NzTabsModule,NzIconModule,\r\n    NzToolTipModule,\r\n  ],\r\n  template: `\r\n  <div class=\"content\">\r\n  <aside class=\"left\">\r\n    <nz-collapse>\r\n      <nz-collapse-panel\r\n        [nzHeader]=\"'Basic Components'\"\r\n        [nzActive]=\"true\"\r\n      >\r\n        <app-collapse-item-list\r\n          [fields]=\"basicArray\"\r\n          (generateKey)=\"generateKey($event.list, $event.index)\"\r\n        ></app-collapse-item-list>\r\n      </nz-collapse-panel>\r\n      <nz-collapse-panel [nzHeader]=\"'Layout Components'\" [nzActive]=\"true\">\r\n        <app-collapse-item-list\r\n          [fields]=\"layoutArray\"\r\n          (generateKey)=\"generateKey($event.list, $event.index)\"\r\n        ></app-collapse-item-list>\r\n      </nz-collapse-panel>\r\n    </nz-collapse>\r\n  </aside>\r\n  <section class=\"center\">\r\n    <app-design-form-component-panel\r\n      [data]=\"data\"\r\n      [selectItem]=\"selectItem\"\r\n      (handleSetSelectItem)=\"handleSetSelectItem($event)\"\r\n      (saveSchema)=\"save()\"\r\n    ></app-design-form-component-panel>\r\n  </section>\r\n  <aside class=\"right\">\r\n    <nz-tabset [(nzSelectedIndex)]=\"activeKey\">\r\n      <nz-tab nzTitle=\"Layout Properties\">\r\n        <app-design-form-properties\r\n          [config]=\"data.config\"\r\n        ></app-design-form-properties>\r\n      </nz-tab>\r\n      <nz-tab nzTitle=\"Component Properties\">\r\n        <app-design-form-item-properties\r\n          [selectItem]=\"selectItem\"\r\n          [config]=\"data.config\"\r\n        ></app-design-form-item-properties>\r\n      </nz-tab>\r\n    </nz-tabset>\r\n  </aside>\r\n</div>\r\n  `,\r\n  styles: `\r\n    .content {\r\n      height: 100%;\r\n      display: flex;\r\n    }\r\n    .left, .right {\r\n      width: 300px;\r\n    }\r\n    .center {\r\n      flex: 1;\r\n      margin: 0 8px 0;\r\n    }\r\n    .right {\r\n\r\n    }\r\n  `\r\n})\r\nexport class NgxAntdFormBuilderComponent {\r\n  @Input() fields: Array<string> = DefaultFields\r\n  @Input() json: string | NgxAntdFormBuilder.Config | undefined | null\r\n  @Output() readonly saveSchema: EventEmitter<NgxAntdFormBuilder.Config> = new EventEmitter()\r\n  //@ViewChild('appDesignFormItemProperties') public appDesignFormItemProperties: DesignFormItemPropertiesComponent;\r\n  //@Input() initData: any\r\n  basicArray: Array<NgxAntdFormBuilder.AllComponentType> = ComponentList.filter(item => this.fields.includes(item.type));\r\n  layoutArray:  Array<NgxAntdFormBuilder.AllLayout> = LayoutList.filter(item => this.fields.includes(item.type));\r\n\r\n  data: NgxAntdFormBuilder.Config = {\r\n    list: [],\r\n    config: {\r\n      \"layout\": \"horizontal\",\r\n      \"labelCol\": {\r\n        \"xs\": 4,\r\n        \"sm\": 4,\r\n        \"md\": 4,\r\n        \"lg\": 4,\r\n        \"xl\": 4,\r\n        \"xxl\": 4\r\n      },\r\n      \"labelWidth\": 100,\r\n      \"labelLayout\": \"flex\",\r\n      \"wrapperCol\": {\r\n        \"xs\": 18,\r\n        \"sm\": 18,\r\n        \"md\": 18,\r\n        \"lg\": 18,\r\n        \"xl\": 18,\r\n        \"xxl\": 18\r\n      },\r\n    }\r\n  }\r\n  selectItem: any = {\r\n    key: \"\"\r\n  }\r\n  activeKey: number = 0;\r\n\r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['fields']) {\r\n      this.basicArray = ComponentList.filter(item => this.fields.includes(item.type))\r\n      this.layoutArray = LayoutList.filter(item => this.fields.includes(item.type));\r\n    }\r\n    if (changes['json'] && changes['json'].currentValue) {\r\n      if (typeof changes['json'].currentValue === 'string') {\r\n        try {\r\n          this.init(JSON.parse(changes['json'].currentValue))\r\n        } catch (e) {\r\n          console.error(e);\r\n        }\r\n      } else {\r\n        this.init(this.json)\r\n      }\r\n    }\r\n  }\r\n\r\n  public init(data) {\r\n    this.data = cloneDeep(data)\r\n  }\r\n\r\n  public recursiveGetComponentList() {\r\n    const list: Array<NgxAntdFormBuilder.AllType> = []\r\n    const recursivePush = (item: NgxAntdFormBuilder.AllType) => {\r\n      if ( 'card' == item.type) {\r\n        item.list.forEach(recursivePush)\r\n      } else if (item.type == 'tabs' || item.type == 'grid' || item.type == 'collapse') {\r\n        item.columns.forEach(col => {\r\n          col.list.forEach(recursivePush)\r\n        })\r\n      } else {\r\n        list.push(item)\r\n      }\r\n    }\r\n    this.data.list.forEach(recursivePush)\r\n    return list\r\n  }\r\n\r\n  public getData() {\r\n    return cloneDeep(this.data)\r\n  }\r\n\r\n  public getJsonSchema() {\r\n    return JSON.stringify(this.data, null, \"\\t\")\r\n  }\r\n\r\n  save() {\r\n    this.saveSchema.emit(this.getData())\r\n  }\r\n\r\n  generateKey(list, index) {\r\n    const key = list[index].type + \"_\" + new Date().getTime();\r\n    list[index].key  = key\r\n  }\r\n\r\n  handleSetSelectItem(record) {\r\n    this.selectItem = record;\r\n    if (record.key) {\r\n      this.changeTab(2);\r\n    } else {\r\n      this.changeTab(1);\r\n    }\r\n  }\r\n\r\n  changeTab(e) {\r\n    this.activeKey = e;\r\n  }\r\n}\r\n\r\n","/*\r\n * Public API Surface of ngx-antd-form-builder\r\n */\r\n\r\nexport * from './lib/ngx-antd-form-builder.component';\r\nexport * from './lib/ngx-antd-form-viewer.component'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SortablejsService","i2","i1","i3","i4","i9","i5","i6","i7","i10","i2.NgxAntdFormBuilderComponent","i8.SortablejsDirective","i8"],"mappings":"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"}