{"version":3,"file":"ng-stalk-i18n-multiple-input.mjs","sources":["../../components/i18n-multiple-input/ns-i18n-multiple-input.component.ts","../../components/i18n-multiple-input/ns-i18n-multiple-input.component.html","../../components/i18n-multiple-input/ns-i18n-multiple-input.module.ts","../../components/i18n-multiple-input/information-pair.ts","../../components/i18n-multiple-input/ns-i18n-key-values.ts","../../components/i18n-multiple-input/public-api.ts","../../components/i18n-multiple-input/ng-stalk-i18n-multiple-input.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n  ChangeDetectionStrategy, ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit, ViewEncapsulation\n} from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as _ from 'lodash';\nimport {\n  MagFormField2, MagInitConfig\n} from 'ng-stalk/core/model';\nimport {\n  MagConfigService\n} from 'ng-stalk/core/service';\nimport { CodeAndName } from 'ng-stalk/core/types';\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { I18nMultipleInputFormModel } from './i18n-multiple-input-form-model';\nimport { CustomLabel } from './custom-label';\nimport { InformationPair } from './information-pair';\nimport { NsI18nKeyValues } from \"./ns-i18n-key-values\";\n\n@Component({\n  selector: 'ns-i18n-multiple-input',\n  templateUrl: './ns-i18n-multiple-input.component.html',\n  styleUrls: ['./ns-i18n-multiple-input.component.less'],\n  exportAs: 'nsI18nMultipleInput',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NsI18nMultipleInputComponent),\n      multi: true\n    }\n  ],\n  host: {\n    '(click)': 'hostClick($event)'\n  }\n})\nexport class NsI18nMultipleInputComponent extends MagFormField2<NsI18nKeyValues> implements OnInit, OnDestroy {\n\n  modelForm!: FormGroup;\n\n  mode: 'tab' | 'whole' = 'tab';\n\n  @Input()\n  editable = true;\n\n  @Input()\n  langs: string[] | Observable<string[]> = [];\n\n  // private langsType: 'string' | 'observer' = 'string';\n\n  /**\n   * language 데이터 set\n   * 폼 노출 여부와 상관없는 지원 가능한 언어 code and i18n name set 목록\n   */\n  languages: CodeAndName[] = [];\n\n  /**\n   * 폼 노출하는 언어 코드 목록\n   */\n  displayLangs: string[] = [];\n\n  @Input()\n  placeholderKey = '배급사';\n\n  @Input()\n  placeholderValue = 'CJ'\n\n  @Input()\n  customLabels: CustomLabel[] = [];\n\n  reqruiedErrorMessage = '값 입력은 필수입니다';\n\n  constructor(\n    public override nzConfigService: NzConfigService,\n    protected override cdr: ChangeDetectorRef,\n    protected override focusMonitor: FocusMonitor,\n    // biz\n    protected fb: FormBuilder,\n    private magConfigService: MagConfigService<MagInitConfig>\n  ) {\n    super(nzConfigService, cdr, focusMonitor);\n    this.languages = this.magConfigService.getInitConfig().supportLanguages;\n  }\n\n  override ngOnInit(): void {\n\n    super.ngOnInit();\n\n    if (this.langs && (this.langs instanceof Observable)) {\n      // // langs 입력이 옵저버인 경우\n\n      this.initForm([], {\n        data: {}\n      });\n\n      let first = true;\n      // 이후 lang 변화에 대한 대응 적용\n      this.langs.pipe(takeUntil(this._unsubscribeAll))\n        .subscribe((newLangs: string[]) => {\n          if (first) {\n            this.displayLangs = newLangs;\n            first = false;\n          } else {\n            this.fitControls(newLangs);\n          }\n          this.cdr.markForCheck();\n        });\n    } else {\n      this.initForm(this.langs as string[] || [], {\n        data: {}\n      });\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  override writeValue(value: NsI18nKeyValues): void {\n    this.modelForm!.patchValue(value);\n    this.initForm(this.displayLangs, {\n      data: value\n    });\n    super.writeValue(value);\n    this.cdr.markForCheck();\n  }\n\n  protected override updateValue(value: NsI18nKeyValues): void {\n    super.updateValue(value);\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n  }\n\n  changeMode(mode: 'tab' | 'whole'): void {\n    this.mode = mode;\n  }\n\n  initForm(langs: string[], formModel: I18nMultipleInputFormModel): void {\n    // const formModel: AdditionalInfoFormModel = new AdditionalInfoFormModel();\n    for (const lang of langs) {\n      if (!formModel.data[lang] || formModel.data[lang].length === 0) {\n        formModel.data[lang] = [{}];\n      }\n    }\n\n    this.modelForm = this.createForm(formModel);\n\n    this.modelForm.valueChanges.subscribe(() => {\n      const value: I18nMultipleInputFormModel = {\n        data: this.modelForm!.getRawValue()\n      };\n      const newValue: I18nMultipleInputFormModel = {\n        data: {}\n      };\n      for (const key in value.data) {\n        // key is lang\n        // @ts-ignore\n        newValue.data.set(key, pairs.filter(pair => {\n          const trimValue = _.trim(pair.title);\n          const result = typeof (trimValue === 'string') && trimValue !== '';\n          return result;\n        }));\n      }\n\n      this.updateValue(newValue.data);\n    });\n  }\n\n  createForm(model: I18nMultipleInputFormModel): FormGroup {\n    const formGroup: FormGroup = this.fb.group({});\n\n    const addedLangs: string[] = [];\n\n    for (const key in model.data) {\n      const value = model.data[key];\n      addedLangs.push(key);\n      formGroup.addControl(key, this.makePairControls(value));\n    }\n\n    for (const lang of this.displayLangs) {\n      if (addedLangs.indexOf(lang) < 0) {\n        formGroup.addControl(lang, this.makePairControls(this.editable ? [{}] : []));\n      }\n    }\n    return formGroup;\n  }\n\n  makePairControls(pairs: InformationPair[]): FormArray {\n    return this.fb.array(pairs.map(pair => {\n      return this.fb.group({\n        title: [pair.title],\n        body: [pair.body]\n      });\n    }));\n  }\n\n  //\n  // makeCategoryControl(artist: LabelArtistView, categoryIds: number[]) {\n  //   // 아티스트별 카테고리 폼 컨트롤을 생성한다.\n  //   const newControl = this.formBuilder.control(categoryIds, []);\n  //   // @ts-ignore\n  //   newControl.context = {\n  //     artist: artist\n  //   };\n  //   return newControl;\n  // }\n\n  fitControls(newLangs: string[]): void {\n    const value: I18nMultipleInputFormModel = {\n      data: this.modelForm.getRawValue()\n    };\n\n    const currentLangs: string[] = [];\n    for (const key in value.data) {\n      currentLangs.push(key);\n    }\n\n    const addIds = _.difference(newLangs, currentLangs);\n    const removeIds = _.difference(currentLangs, newLangs);\n\n    for (const lang of addIds) {\n      // @ts-ignore\n      this.modelForm.addControl(lang, this.makePairControls(this.editable ? [new InformationPair({\n        title: null,\n        body: null\n      })] : []));\n    }\n\n    for (const lang of removeIds) {\n      this.modelForm.removeControl(lang);\n    }\n\n    // const removeIndex: number[] = removeIds.map(lang => currentLangs.indexOf(lang))\n    //   .sort((a, b) => b - a);\n    // for (const index of removeIndex) {\n    //   // @ts-ignore\n    //   //.controls['entries'].removeAt(removeIndex);\n    // }\n\n    this.displayLangs = newLangs;\n\n  }\n\n  pairItems(code: string): AbstractControl[] {\n    // @ts-ignore\n    return this.modelForm.controls[code].controls;\n  }\n\n  public addBlankLine(languageCode: string): void {\n    const formArray: FormArray = this.modelForm.controls[languageCode] as FormArray;\n    formArray.push(this.fb.group({\n      title: [],\n      body: []\n    }));\n    this.cdr.markForCheck();\n  }\n\n}\n","<!--<fuse-sidebar class=\"sidebar\" name=\"carded-left-sidebar-tabbed-2\" position=\"left\" [formGroup]=\"modelForm\">-->\n\n<form nz-form [formGroup]=\"modelForm\" *ngIf=\"modelForm\">\n  <div class=\"mode-panel\">\n    <button nz-button (click)=\"changeMode('tab')\"><i nz-icon nzType=\"hdd\" nzTheme=\"outline\"></i></button>\n    <button nz-button (click)=\"changeMode('whole')\"><i nz-icon nzType=\"database\" nzTheme=\"outline\"></i></button>\n  </div>\n  <!-- Tab Mode -->\n  <nz-tabset nzTabPosition=\"left\" *ngIf=\"mode === 'tab'\">\n    <nz-tab\n      [nzTitle]=\"language | magLang \"\n      [nzForceRender]=\"true\"\n      *ngFor=\"let language of displayLangs\" [formArrayName]=\"language\">\n\n      <nz-table #attributesTable [nzBordered]=\"true\" nzSize=\"small\"\n                [nzTemplateMode]=\"true\" [nzShowPagination]=\"false\" [nzShowSizeChanger]=\"false\"\n      [ngStyle]=\"{width: '100%'}\">\n        <thead>\n        <tr>\n          <th>Label</th>\n          <th>Value</th>\n<!--          <th>Action</th>-->\n        </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let row of pairItems(language); let i = index;\" [formGroupName]=\"i\">\n            <td>\n              <nz-form-item>\n                <input nz-input  formControlName=\"title\" [placeholder]=\"placeholderKey\">\n              </nz-form-item>\n            </td>\n            <td>\n              <nz-form-item>\n                <nz-form-control nzHasFeedback nzValidatingTip=\"Validating...\" [nzErrorTip]=\"additionalInfoItemErrorTpl\">\n                  <!--        <input nz-input formControlName=\"body\" [placeholder]=\"placeholder\" (ngModelChange)=\"detectValueChange(i)\"-->\n                  <!--               *ngIf=\"fieldType === 'input' || fieldType === 'text' \" />-->\n                  <!--        <textarea nz-input formControlName=\"body\" [placeholder]=\"placeholder\" (ngModelChange)=\"detectValueChange(i)\"-->\n                  <!--                  *ngIf=\"fieldType === 'textarea'\" ></textarea>-->\n\n                  <textarea nz-input formControlName=\"body\" [placeholder]=\"placeholderValue\"></textarea>\n\n                  <ng-template #additionalInfoItemErrorTpl let-control>\n                    <ng-container *ngIf=\"control.hasError('required')\">\n                      {{ reqruiedErrorMessage }}\n                    </ng-container>\n                    <!--          <ng-container *ngIf=\"control.hasError('duplicated')\">-->\n                    <!--            The file name is redundant!-->\n                    <!--          </ng-container>-->\n                  </ng-template>\n                </nz-form-control>\n              </nz-form-item>\n            </td>\n<!--            <td>-->\n<!--              up | down-->\n<!--            </td>-->\n\n          </tr>\n        </tbody>\n      </nz-table>\n      <div>\n        <button nz-button nzType=\"dashed\" (click)=\"addBlankLine(language)\">\n          <i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i> Add Row</button>\n      </div>\n\n    </nz-tab>\n  </nz-tabset>\n\n  <!-- Whole Mode -->\n  <div *ngIf=\"mode === 'whole'\">\n    <div nz-row *ngFor=\"let language of displayLangs\" [formArrayName]=\"language\">\n      <div nz-col [nzSpan]=\"4\">\n        {{ language | magLang }}\n      </div>\n      <div  nz-col [nzSpan]=\"20\">\n        <nz-table #attributesTable [nzBordered]=\"true\" nzSize=\"small\"\n                  [nzTemplateMode]=\"true\" [nzShowPagination]=\"false\" [nzShowSizeChanger]=\"false\"\n                  [ngStyle]=\"{width: '100%'}\">\n          <thead>\n          <tr>\n            <th>Label</th>\n            <th>Value</th>\n            <!--          <th>Action</th>-->\n          </tr>\n          </thead>\n          <tbody>\n          <tr *ngFor=\"let row of pairItems(language); let i = index;\" [formGroupName]=\"i\">\n            <td>\n              <nz-form-item>\n                <input nz-input  formControlName=\"title\" [placeholder]=\"placeholderKey\">\n              </nz-form-item>\n            </td>\n            <td>\n              <nz-form-item>\n                <nz-form-control nzHasFeedback nzValidatingTip=\"Validating...\" [nzErrorTip]=\"additionalInfoItemErrorTpl\">\n                  <!--        <input nz-input formControlName=\"body\" [placeholder]=\"placeholder\" (ngModelChange)=\"detectValueChange(i)\"-->\n                  <!--               *ngIf=\"fieldType === 'input' || fieldType === 'text' \" />-->\n                  <!--        <textarea nz-input formControlName=\"body\" [placeholder]=\"placeholder\" (ngModelChange)=\"detectValueChange(i)\"-->\n                  <!--                  *ngIf=\"fieldType === 'textarea'\" ></textarea>-->\n\n                  <textarea nz-input formControlName=\"body\" [placeholder]=\"placeholderValue\"></textarea>\n\n                  <ng-template #additionalInfoItemErrorTpl let-control>\n                    <ng-container *ngIf=\"control.hasError('required')\">\n                      {{ reqruiedErrorMessage }}\n                    </ng-container>\n                    <!--          <ng-container *ngIf=\"control.hasError('duplicated')\">-->\n                    <!--            The file name is redundant!-->\n                    <!--          </ng-container>-->\n                  </ng-template>\n                </nz-form-control>\n              </nz-form-item>\n            </td>\n            <!--            <td>-->\n            <!--              up | down-->\n            <!--            </td>-->\n\n          </tr>\n          </tbody>\n        </nz-table>\n      </div>\n\n      <div nz-col [nzSpan]=\"4\">\n      </div>\n      <div nz-col [nzSpan]=\"20\" class=\"action-button-panel\">\n        <button nz-button nzType=\"dashed\" (click)=\"addBlankLine(language)\">\n          <i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i> Add Row</button>\n      </div>\n\n    </div>\n  </div>\n\n</form>\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MagPipeModule } from 'ng-stalk/core/pipe';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\n\nimport { NsI18nMultipleInputComponent } from './ns-i18n-multiple-input.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    NzGridModule,\n    NzIconModule,\n    NzDividerModule,\n    NzFormModule,\n    NzInputModule,\n    NzDescriptionsModule,\n    NzTabsModule,\n    NzTableModule,\n    NzButtonModule,\n    MagPipeModule\n  ],\n  declarations: [\n    NsI18nMultipleInputComponent\n  ],\n  exports: [\n    NsI18nMultipleInputComponent\n  ]\n})\nexport class NsI18nMultipleInputModule { }\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport interface InformationPair {\n  title?: string;\n  body?: string;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { InformationPair } from \"./information-pair\";\n\nexport type NsI18nKeyValues = { [key: string]: InformationPair[] };\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './ns-i18n-multiple-input.component';\nexport * from './ns-i18n-multiple-input.module';\nexport * from './information-pair';\nexport * from './ns-i18n-key-values';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}