{"version":3,"file":"laserfiche-lf-ui-components-lf-metadata.mjs","sources":["../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-connector.service.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-add-remove/get-field-type.pipe.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-add-remove/lf-field-add-remove.component.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-add-remove/lf-field-add-remove.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-token.service.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-validation-utils.ts","../../../projects/ui-components/lf-metadata/field-components/utils/metadata-utils.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/base-field/base-field.directive.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/base-field/datetime-base-field.directives.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.common.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.locales.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/flatpickr-locales.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.service.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/plugin-lfTimePicker.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/plugin-lfDatePicker.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.component.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-token-picker/lf-token-picker.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-token-picker/lf-token-picker.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/dynamic-field/dynamic-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/dynamic-field/dynamic-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-time-field/date-time-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-time-field/date-time-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/text-field/text-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/text-field/text-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-field/date-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-field/date-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/number-field/number-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/number-field/number-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/list-field/list-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/list-field/list-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/time-field/time-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/time-field/time-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-base/lf-field-base.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-base/lf-field-base.component.html","../../../projects/ui-components/lf-metadata/field-components/lf-field/lf-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field/lf-field.component.html","../../../projects/ui-components/lf-metadata/field-components/lf-field-multivalue/lf-field-multivalue.component.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field-multivalue/lf-field-multivalue.component.html","../../../projects/ui-components/lf-metadata/lf-field-metadata-connector.service.ts","../../../projects/ui-components/lf-metadata/lf-field-view.directive.ts","../../../projects/ui-components/lf-metadata/lf-field-container.directive.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-container.component.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-container.component.html","../../../projects/ui-components/lf-metadata/field-components/lf-field-group/lf-field-group-index-display.pipe.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field-group/lf-field-group.component.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field-group/lf-field-group.component.html","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container-states.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container.component.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container.component.html","../../../projects/ui-components/lf-metadata/lf-field-container/lf-field-container.component.ts","../../../projects/ui-components/lf-metadata/lf-field-container/lf-field-container.component.html","../../../projects/ui-components/lf-metadata/lf-field-container/public-api.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/public-api.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/public-api.ts","../../../projects/ui-components/lf-metadata/lf-metadata-public-api.ts","../../../projects/ui-components/lf-metadata/laserfiche-lf-ui-components-lf-metadata.ts"],"sourcesContent":["// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Injectable } from '@angular/core';\nimport { AdhocFieldInfo } from './lf-field-adhoc-container-types';\n\n/** @internal */\n@Injectable({\n  providedIn: 'root',\n})\nexport class AdhocFieldConnectorService {\n  private selectedFieldIds = new Set<number>();\n  private allFieldInfos: AdhocFieldInfo[] = [];\n  constructor() {}\n\n  setSelectedFieldIds(selectedFields: Set<number>) {\n    this.selectedFieldIds = selectedFields;\n  }\n\n  getSelectedFieldIds(): Set<number> {\n    return new Set<number>(this.selectedFieldIds);\n  }\n\n  setAllFieldInfos(fieldInfos: AdhocFieldInfo[]) {\n    this.allFieldInfos = fieldInfos;\n  }\n\n  getAllFieldInfos(): AdhocFieldInfo[] {\n    return this.allFieldInfos;\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { Observable } from 'rxjs';\nimport { LfFieldInfo } from './../../field-components/utils/lf-field-types';\n\n/**\n * Pipe that returns the localized field type, given a fieldInfo and a set of localized strings\n */\n@Pipe({\n  name: 'getFieldType',\n  standalone: true,\n})\nexport class GetFieldTypePipe implements PipeTransform {\n  constructor() {}\n\n  private localizedFieldTypes?: Map<string, Observable<string>>;\n\n  /**\n   * Returns the Localized Field type, given an LfFieldInfo\n   * @param fieldInfo the current LfFieldInfo\n   * @param localizedFieldTypes A Map of various localized strings that correspond to different FieldTypes, (i.e. 'FIELD_TYPE_STRING')\n   * @returns The localized field type\n   */\n  transform(\n    fieldInfo: LfFieldInfo,\n    localizedFieldTypes: Map<string, Observable<string>>\n  ): Observable<string> | undefined {\n    this.localizedFieldTypes = localizedFieldTypes;\n    return this.getFieldType(fieldInfo);\n  }\n\n  private getFieldType(field: LfFieldInfo): Observable<string> | undefined {\n    switch (field.fieldType) {\n      case FieldType.Blob: {\n        return this.localizedFieldTypes?.get('DATA');\n      }\n      case FieldType.Date: {\n        return this.localizedFieldTypes?.get('DATE');\n      }\n      case FieldType.DateTime: {\n        return this.localizedFieldTypes?.get('DATE_TIME');\n      }\n      case FieldType.List: {\n        return this.localizedFieldTypes?.get('LIST');\n      }\n      case FieldType.LongInteger: {\n        return this.localizedFieldTypes?.get('LONG_INTEGER');\n      }\n      case FieldType.Number: {\n        return this.localizedFieldTypes?.get('NUMBER');\n      }\n      case FieldType.ShortInteger: {\n        return this.localizedFieldTypes?.get('INTEGER');\n      }\n      case FieldType.String: {\n        return this.localizedFieldTypes?.get('TEXT');\n      }\n      case FieldType.Time: {\n        return this.localizedFieldTypes?.get('TIME');\n      }\n      default:\n        return undefined;\n    }\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  EventEmitter,\n  Output,\n  Input,\n  ChangeDetectorRef,\n  AfterViewInit,\n  ViewChild,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatCheckboxModule, MatCheckboxChange } from '@angular/material/checkbox';\nimport { AdhocFieldConnectorService } from '../lf-field-adhoc-connector.service';\nimport { AdhocFieldInfo } from '../lf-field-adhoc-container-types';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { debounceTime } from 'rxjs/operators';\nimport { LfFieldAdhocContainerService } from '../lf-field-adhoc-container.service';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { LfFieldInfo } from '../../field-components/utils/lf-field-types';\nimport { Observable } from 'rxjs';\nimport {\n  PopupModalResult,\n  AppLocalizationService,\n  filterObjectsByName,\n  PopupModalData,\n  LfLoaderComponent,\n  LfPopupModalComponent,\n} from '@laserfiche/lf-ui-components/internal-shared';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { GetFieldTypePipe } from './get-field-type.pipe';\n\n/**\n * @internal\n */\nexport enum AddRemoveState {\n  DEFAULT = 'default',\n  LOADING = 'isLoading',\n  HAS_ERROR = 'hasError',\n  DISPLAY_FIELD = 'displayField',\n}\n\n/**\n * @internal\n */\n@Component({\n  selector: 'lf-field-add-remove-component',\n  templateUrl: './lf-field-add-remove.component.html',\n  styleUrls: ['./lf-field-add-remove.component.css'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    A11yModule,\n    ScrollingModule,\n    MatCheckboxModule,\n    LfLoaderComponent,\n    LfPopupModalComponent,\n    GetFieldTypePipe,\n  ],\n})\nexport class LfFieldAddRemoveComponent implements AfterViewInit {\n  private adHocConnectorService = inject(AdhocFieldConnectorService);\n  ref = inject(ChangeDetectorRef);\n  popupDialog = inject(MatDialog);\n  private localizationService = inject(AppLocalizationService);\n\n  private readonly APPLY_CHANGES = this.localizationService.getStringLaserficheObservable('APPLY_CHANGES');\n  private readonly DO_YOU_WANT_TO_APPLY_YOUR_FIELD_CHANGES = this.localizationService.getStringLaserficheObservable(\n    'DO_YOU_WANT_TO_APPLY_YOUR_FIELD_CHANGES'\n  );\n  private readonly YES = this.localizationService.getStringLaserficheObservable('YES');\n  private readonly NO = this.localizationService.getStringLaserficheObservable('NO');\n  readonly CANCEL: Observable<string> = this.localizationService.getStringLaserficheObservable('CANCEL');\n  readonly APPLY: Observable<string> = this.localizationService.getStringLaserficheObservable('APPLY');\n  readonly ADD_REMOVE_FIELDS: Observable<string> =\n    this.localizationService.getStringLaserficheObservable('ADD_REMOVE_FIELDS');\n  readonly NO_MATCHING_FIELDS_FOUND: Observable<string> =\n    this.localizationService.getStringLaserficheObservable('NO_MATCHING_FIELDS_FOUND');\n  readonly SEARCH_FIELDS: Observable<string> = this.localizationService.getStringLaserficheObservable('SEARCH_FIELDS');\n  readonly AN_ERROR_OCCURED = this.localizationService.getStringLaserficheObservable('AN_ERROR_OCCURED');\n\n  readonly LOCALIZED_FIELD_TYPES: Map<string, Observable<string>> = new Map<string, Observable<string>>([\n    ['DATA', this.localizationService.getStringLaserficheObservable('DATA')],\n    ['DATE', this.localizationService.getStringLaserficheObservable('DATE')],\n    ['DATE_TIME', this.localizationService.getStringLaserficheObservable('DATE_TIME')],\n    ['LIST', this.localizationService.getStringLaserficheObservable('LIST')],\n    ['LONG_INTEGER', this.localizationService.getStringLaserficheObservable('LONG_INTEGER')],\n    ['NUMBER', this.localizationService.getStringLaserficheObservable('NUMBER')],\n    ['INTEGER', this.localizationService.getStringLaserficheObservable('INTEGER')],\n    ['TEXT', this.localizationService.getStringLaserficheObservable('TEXT')],\n    ['TIME', this.localizationService.getStringLaserficheObservable('TIME')],\n  ]);\n\n  allFieldInfos: AdhocFieldInfo[] = [];\n  displayFieldInfos: AdhocFieldInfo[] = [];\n  selectedFieldIds: Set<number> = new Set<number>();\n  areCheckboxChanges: boolean = false;\n  filterFieldsControl: FormControl = new FormControl();\n  fieldFilterText: string = '';\n\n  state: AddRemoveState = AddRemoveState.DEFAULT;\n  adhocFieldContainerService!: LfFieldAdhocContainerService;\n\n  dialogRef?: MatDialogRef<any>;\n  @ViewChild('addRemoveConfirmModal') popupModal?: TemplateRef<any>;\n\n  @Output() checkboxUpdate = new EventEmitter<void>();\n  @Output() clickBack = new EventEmitter<void>();\n\n  ngAfterViewInit() {\n    this.filterFieldsControl.valueChanges.pipe(debounceTime(200)).subscribe((value) => {\n      this.fieldFilterText = value;\n      this.filterDisplayedFields();\n      this.ref.detectChanges();\n    });\n  }\n\n  @Input()\n  initAsync = async (adhocContainerService: LfFieldAdhocContainerService): Promise<void> => {\n    this.adhocFieldContainerService = CoreUtils.validateDefined(adhocContainerService, 'adhocContainerService');\n    try {\n      this.state = AddRemoveState.LOADING;\n      await this.loadFieldDefinitionsInOrderAsync();\n      this.state = AddRemoveState.DISPLAY_FIELD;\n    } catch (error) {\n      this.state = AddRemoveState.HAS_ERROR;\n      console.error(error);\n    }\n  };\n\n  /** @internal */\n  get shouldShowErrorMessage(): boolean {\n    return this.state === AddRemoveState.HAS_ERROR;\n  }\n\n  /** @internal */\n  get isLoading(): boolean {\n    return this.state === AddRemoveState.LOADING;\n  }\n\n  async onClickBack() {\n    if (this.areCheckboxChanges) {\n      const popupModalData: PopupModalData = {\n        popupTitle: this.APPLY_CHANGES,\n        popupMessage: this.DO_YOU_WANT_TO_APPLY_YOUR_FIELD_CHANGES,\n        cancelButtonText: this.CANCEL,\n        confirmButtonText: this.YES,\n        noButtonText: this.NO,\n      };\n      this.dialogRef = this.popupDialog.open(this.popupModal!, {\n        width: '280px',\n        maxWidth: 'none',\n        data: popupModalData,\n      });\n\n      const result = await this.dialogRef.afterClosed().toPromise();\n      if (result === PopupModalResult.CONFIRM) {\n        this.onClickApply();\n      } else if (result === PopupModalResult.NO) {\n        this.onConfirmNo();\n      }\n    } else {\n      this.state = AddRemoveState.DEFAULT;\n      this.clickBack.emit();\n    }\n  }\n\n  onModalButtonClick(event: string) {\n    const buttonClicked: string = event;\n    this.dialogRef?.close(buttonClicked);\n  }\n\n  onClickApply() {\n    this.areCheckboxChanges = false;\n    this.adHocConnectorService.setSelectedFieldIds(this.selectedFieldIds);\n    this.state = AddRemoveState.DEFAULT;\n    this.clickBack.emit();\n  }\n\n  onClickCancel() {\n    this.getAppliedFields();\n    this.areCheckboxChanges = false;\n  }\n\n  onConfirmNo() {\n    this.areCheckboxChanges = false;\n    this.state = AddRemoveState.DEFAULT;\n    this.clickBack.emit();\n  }\n\n  private filterDisplayedFields() {\n    this.displayFieldInfos = filterObjectsByName(this.allFieldInfos, this.fieldFilterText) ?? [];\n  }\n\n  onClearFields() {\n    this.filterFieldsControl.setValue('');\n    this.fieldFilterText = '';\n    this.filterDisplayedFields();\n    this.ref.detectChanges();\n  }\n\n  onUpdateCheckbox(changeEvent: MatCheckboxChange, field: LfFieldInfo) {\n    this.areCheckboxChanges = true;\n    this.updateSelectedOptions(changeEvent.checked, field);\n    this.checkboxUpdate.emit();\n  }\n\n  ignoreEscapeKeydown(event: Event) {\n    event.stopPropagation();\n  }\n\n  private updateSelectedOptions(checked: boolean, field: LfFieldInfo) {\n    if (checked) {\n      this.selectedFieldIds.add(field.id);\n    } else {\n      this.selectedFieldIds.delete(field.id);\n    }\n  }\n\n  async updateSortedFieldInfos() {\n    this.getAppliedFields();\n    this.areCheckboxChanges = false;\n    this.allFieldInfos = this.partitionFieldInfos(this.allFieldInfos);\n    this.filterDisplayedFields();\n    this.ref.detectChanges();\n  }\n\n  private partitionFieldInfos(fieldDefinitions: AdhocFieldInfo[]) {\n    const selectedFieldInfos: AdhocFieldInfo[] =\n      fieldDefinitions?.filter(\n        (fieldInfo) => this.selectedFieldIds.has(fieldInfo.id) && !fieldInfo.inTemplateSelected\n      ) ?? [];\n    const unselectedFieldInfos: LfFieldInfo[] =\n      fieldDefinitions?.filter(\n        (fieldInfo) => !(this.selectedFieldIds.has(fieldInfo.id) || fieldInfo.inTemplateSelected)\n      ) ?? [];\n    const disabledFields: AdhocFieldInfo[] =\n      fieldDefinitions?.filter((fieldInfo) => fieldInfo.inTemplateSelected) ?? [];\n\n    const allOrderedFields = selectedFieldInfos.concat(unselectedFieldInfos).concat(disabledFields);\n    return allOrderedFields;\n  }\n\n  isFieldSelected(field: AdhocFieldInfo): boolean {\n    const selectedItemExists: boolean = this.selectedFieldIds ? this.selectedFieldIds.has(field.id) : false;\n    const isSelected: boolean = field.inTemplateSelected ?? false;\n    return selectedItemExists || isSelected;\n  }\n\n  getAppliedFields() {\n    this.selectedFieldIds = this.adHocConnectorService.getSelectedFieldIds();\n  }\n\n  private async loadFieldDefinitionsInOrderAsync(): Promise<void> {\n    const fieldInfos: LfFieldInfo[] = await this.getCurrentFieldOptionsAsync();\n    this.allFieldInfos = this.orderFieldInfosByName(fieldInfos);\n    this.adHocConnectorService.setAllFieldInfos(this.allFieldInfos);\n  }\n\n  private async getCurrentFieldOptionsAsync(): Promise<LfFieldInfo[]> {\n    const fieldInfos: AdhocFieldInfo[] = await this.adhocFieldContainerService.getAllFieldDefinitionsAsync();\n    const fieldDefinitions = fieldInfos.filter((val) => {\n      const validFieldType: boolean = val.fieldType in FieldType && val.fieldType !== FieldType.Blob;\n      if (!validFieldType) {\n        console.warn(`Invalid FieldType: ${val.fieldType}. Will not display field with name: ${val.name}`);\n      }\n      return validFieldType;\n    });\n    this.adHocConnectorService.setAllFieldInfos(fieldDefinitions);\n\n    if (fieldDefinitions?.length === 0) {\n      console.warn('getAllFieldDefinitionsAsync returned no definitions');\n    }\n    return fieldDefinitions;\n  }\n\n  /** @internal */\n  private orderFieldInfosByName(fieldInfos: LfFieldInfo[]): LfFieldInfo[] {\n    if (fieldInfos) {\n      const sortSelectedFieldInfosAlphabetically = fieldInfos?.sort((a, b) => {\n        const aName = a.name?.toLowerCase() ?? '';\n        const bName = b.name?.toLowerCase() ?? '';\n        return aName < bName ? -1 : 1;\n      });\n      return sortSelectedFieldInfosAlphabetically;\n    } else {\n      return [];\n    }\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div\n  id=\"add-remove-container\"\n  class=\"add-remove-container\"\n  cdkTrapFocus\n  tabindex=\"0\"\n  (keydown.escape)=\"ignoreEscapeKeydown($event)\"\n>\n  <div id=\"adhoc-back-button\" class=\"back-button-overlay\">\n    <button class=\"adhoc-back-button-container\" (click)=\"onClickBack()\">\n      <span class=\"material-icons adhoc-back-button\" id=\"arrow-left-18\" aria-label=\"back\"> arrow_back_ios_new </span>\n    </button>\n    <div class=\"ms-font-m back-button-text\">{{ ADD_REMOVE_FIELDS | async }}</div>\n  </div>\n  <div class=\"add-remove-content\">\n    @if (isLoading) {\n      <lf-loader-component class=\"lf-adhoc-state-message\"></lf-loader-component>\n    } @else {\n      @if (shouldShowErrorMessage) {\n        <div class=\"lf-adhoc-state-message error-entries-text\">{{ AN_ERROR_OCCURED | async }}</div>\n      } @else {\n        <div class=\"field-picker-container\" [ngClass]=\"{ 'has-changes': areCheckboxChanges }\">\n          <div class=\"search\">\n            <input [formControl]=\"filterFieldsControl\" placeholder=\"{{ SEARCH_FIELDS | async }}\" class=\"searchBox\" />\n            <div class=\"icon icon-search\"></div>\n            @if (fieldFilterText && fieldFilterText.length > 0) {\n              <div (click)=\"onClearFields()\" class=\"icon icon-clear\"></div>\n            }\n          </div>\n          @if (displayFieldInfos && displayFieldInfos.length > 0) {\n            <cdk-virtual-scroll-viewport itemSize=\"25\" class=\"pick-field\">\n              <div *cdkVirtualFor=\"let field of displayFieldInfos; let i = index\">\n                <mat-checkbox\n                  color=\"primary\"\n                  class=\"lf-checkbox\"\n                  (change)=\"onUpdateCheckbox($event, field)\"\n                  id=\"`add-remove-checkbox-{{ i }}`\"\n                  [checked]=\"isFieldSelected(field)\"\n                  title=\"{{ field.displayName }}\"\n                  [disabled]=\"field.inTemplateSelected\"\n                >\n                  {{ field.displayName }} ({{ field | getFieldType: LOCALIZED_FIELD_TYPES | async }})\n                </mat-checkbox>\n              </div>\n            </cdk-virtual-scroll-viewport>\n          } @else {\n            <div class=\"lf-adhoc-state-message fields-empty\">\n              {{ NO_MATCHING_FIELDS_FOUND | async }}\n            </div>\n          }\n        </div>\n      }\n    }\n  </div>\n  @if (areCheckboxChanges) {\n    <div class=\"button-container\">\n      <div class=\"button-padding-container\">\n        <button id=\"adhoc-apply-button\" class=\"primary-button lf-button adhoc-field-button\" (click)=\"onClickApply()\">\n          {{ APPLY | async }}\n        </button>\n        <button id=\"adhoc-cancel-button\" class=\"sec-button lf-button adhoc-field-button\" (click)=\"onClickCancel()\">\n          {{ CANCEL | async }}\n        </button>\n      </div>\n    </div>\n  }\n</div>\n\n<ng-template #addRemoveConfirmModal let-data>\n  <lf-popup-modal-component [data]=\"data\" (buttonClick)=\"onModalButtonClick($event)\"></lf-popup-modal-component>\n</ng-template>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { inject, Injectable } from '@angular/core';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { Observable } from 'rxjs';\nimport { LfToken, LfTokenService } from '../lf-token-picker/lf-token.service';\n\n/** @internal */\n@Injectable({\n  providedIn: 'root',\n})\nexport class LfFieldTokenService implements LfTokenService {\n  private localizationService = inject(AppLocalizationService);\n\n  private readonly defaultStringTokens: LfFieldTokenId[] = [\n    LfFieldTokenId.DATE,\n    LfFieldTokenId.TIME,\n    LfFieldTokenId.DATETIME,\n    // LfFieldTokenId.SESSION_COUNT,\n    LfFieldTokenId.REPOSITORY_COUNT,\n    LfFieldTokenId.USER_NAME,\n    LfFieldTokenId.ENTRY_NAME,\n    LfFieldTokenId.PARENT_NAME,\n    LfFieldTokenId.ENTRY_ID,\n    LfFieldTokenId.PARENT_ID,\n    LfFieldTokenId.PARENT_FIELD,\n  ];\n\n  private readonly defaultNumberTokens: LfFieldTokenId[] = [\n    LfFieldTokenId.SESSION_COUNT,\n    LfFieldTokenId.REPOSITORY_COUNT,\n    LfFieldTokenId.ENTRY_ID,\n    LfFieldTokenId.PARENT_ID,\n    LfFieldTokenId.PARENT_FIELD,\n  ];\n\n  private readonly DATE = this.localizationService.getStringLaserficheObservable('DATE');\n  private readonly TIME = this.localizationService.getStringLaserficheObservable('TIME');\n  private readonly DATE_TIME = this.localizationService.getStringLaserficheObservable('DATE_TIME');\n  private readonly SESSION_COUNT = this.localizationService.getStringLaserficheObservable('SESSION_COUNT');\n  private readonly REPOSITORY_COUNT = this.localizationService.getStringLaserficheObservable('REPOSITORY_COUNT');\n  private readonly USER_NAME = this.localizationService.getStringLaserficheObservable('USER_NAME');\n  private readonly ENTRY_NAME = this.localizationService.getStringLaserficheObservable('ENTRY_NAME');\n  private readonly PARENT_NAME = this.localizationService.getStringLaserficheObservable('PARENT_NAME');\n  private readonly ENTRY_ID = this.localizationService.getStringLaserficheObservable('ENTRY_ID');\n  private readonly PARENT_ID = this.localizationService.getStringLaserficheObservable('PARENT_ID');\n  private readonly PARENT_FIELD = this.localizationService.getStringLaserficheObservable('PARENT_FIELD');\n  private readonly FILE_NAME = this.localizationService.getStringLaserficheObservable('FILE_NAME');\n  private readonly FILE_EXTENSION = this.localizationService.getStringLaserficheObservable('FILE_EXTENSION');\n  private readonly FILE_MODIFIED = this.localizationService.getStringLaserficheObservable('FILE_MODIFIED');\n\n  private readonly defaultDateTokens: LfFieldTokenId[] = [LfFieldTokenId.DATE];\n\n  private readonly defaultDateTimeTokens: LfFieldTokenId[] = [LfFieldTokenId.DATETIME];\n\n  private readonly defaultTimeTokens: LfFieldTokenId[] = [LfFieldTokenId.TIME];\n\n  private readonly fieldTokenTexts: Map<LfFieldTokenId, string> = new Map([\n    [LfFieldTokenId.DATE, 'date'],\n    [LfFieldTokenId.TIME, 'time'],\n    [LfFieldTokenId.DATETIME, 'datetime'],\n    [LfFieldTokenId.SESSION_COUNT, 'count'],\n    [LfFieldTokenId.REPOSITORY_COUNT, 'gcount'],\n    [LfFieldTokenId.USER_NAME, 'username'],\n    [LfFieldTokenId.ENTRY_NAME, 'name'],\n    [LfFieldTokenId.PARENT_NAME, 'parentname'],\n    [LfFieldTokenId.ENTRY_ID, 'id'],\n    [LfFieldTokenId.PARENT_ID, 'parentid'],\n    [LfFieldTokenId.PARENT_FIELD, 'parent'],\n    [LfFieldTokenId.FILE_NAME, 'filename'],\n    [LfFieldTokenId.FILE_EXTENSION, 'fileextension'],\n    [LfFieldTokenId.FILE_MODIFIED, 'filemodified'],\n  ]);\n\n  constructor() {}\n\n  async getTokensAsync(lfFieldTokenData: LfFieldTokenData): Promise<LfToken[]> {\n    if (lfFieldTokenData?.fieldType === undefined) {\n      throw new Error('getTokensAsync() parameter lfFieldTokenData must be of type LfFieldTokenData');\n    }\n    let tokenIds: LfFieldTokenId[] = [];\n    switch (lfFieldTokenData.fieldType) {\n      case FieldType.Date:\n        tokenIds = this.defaultDateTokens;\n        break;\n      case FieldType.DateTime:\n        tokenIds = this.defaultDateTimeTokens;\n        break;\n      case FieldType.Time:\n        tokenIds = this.defaultTimeTokens;\n        break;\n      case FieldType.LongInteger:\n      case FieldType.Number:\n      case FieldType.ShortInteger:\n        tokenIds = this.defaultNumberTokens;\n        break;\n      case FieldType.String:\n        tokenIds = this.defaultStringTokens;\n        break;\n      default:\n        tokenIds = [];\n        break;\n    }\n\n    return this.convertTokenIdsToTokens(tokenIds);\n  }\n\n  private convertTokenIdsToTokens(tokenIds: LfFieldTokenId[]): LfToken[] {\n    return tokenIds.map((tokenId: LfFieldTokenId) => {\n      const LfToken: LfToken = {\n        id: tokenId,\n        friendlyName: this.getTokenFriendlyName(tokenId),\n        text: this.fieldTokenTexts.get(tokenId) ?? '',\n      };\n      return LfToken;\n    });\n  }\n\n  private getTokenFriendlyName(tokenId: LfFieldTokenId): Observable<string> {\n    switch (tokenId) {\n      case LfFieldTokenId.DATE: {\n        return this.DATE;\n      }\n      case LfFieldTokenId.TIME: {\n        return this.TIME;\n      }\n      case LfFieldTokenId.DATETIME: {\n        return this.DATE_TIME;\n      }\n      case LfFieldTokenId.SESSION_COUNT: {\n        return this.SESSION_COUNT;\n      }\n      case LfFieldTokenId.REPOSITORY_COUNT: {\n        return this.REPOSITORY_COUNT;\n      }\n      case LfFieldTokenId.USER_NAME: {\n        return this.USER_NAME;\n      }\n      case LfFieldTokenId.ENTRY_NAME: {\n        return this.ENTRY_NAME;\n      }\n      case LfFieldTokenId.PARENT_NAME: {\n        return this.PARENT_NAME;\n      }\n      case LfFieldTokenId.ENTRY_ID: {\n        return this.ENTRY_ID;\n      }\n      case LfFieldTokenId.PARENT_ID: {\n        return this.PARENT_ID;\n      }\n      case LfFieldTokenId.PARENT_FIELD: {\n        return this.PARENT_FIELD;\n      }\n      case LfFieldTokenId.FILE_NAME: {\n        return this.FILE_NAME;\n      }\n      case LfFieldTokenId.FILE_EXTENSION: {\n        return this.FILE_EXTENSION;\n      }\n      case LfFieldTokenId.FILE_MODIFIED: {\n        return this.FILE_MODIFIED;\n      }\n    }\n  }\n\n  getTokenText(token: LfFieldTokenId): string | undefined {\n    return this.fieldTokenTexts.get(token);\n  }\n\n  getTokensForFieldType(fieldType: FieldType, isImport: boolean): LfFieldTokenId[] {\n    switch (fieldType) {\n      case FieldType.Date:\n        return isImport ? this.defaultDateTokens.concat(LfFieldTokenId.FILE_MODIFIED) : this.defaultDateTokens;\n      case FieldType.DateTime:\n        return isImport ? this.defaultDateTimeTokens.concat(LfFieldTokenId.FILE_MODIFIED) : this.defaultDateTimeTokens;\n      case FieldType.Time:\n        return isImport ? this.defaultTimeTokens.concat(LfFieldTokenId.FILE_MODIFIED) : this.defaultTimeTokens;\n      case FieldType.LongInteger:\n      case FieldType.Number:\n      case FieldType.ShortInteger:\n        return this.defaultNumberTokens;\n      case FieldType.String:\n        return isImport\n          ? this.defaultStringTokens.concat([\n              LfFieldTokenId.FILE_NAME,\n              LfFieldTokenId.FILE_EXTENSION,\n              LfFieldTokenId.FILE_MODIFIED,\n            ])\n          : this.defaultStringTokens;\n      default:\n        return [];\n    }\n  }\n\n  containsTokenForFieldType(fieldValue: string, fieldType: FieldType, isImport: boolean): boolean {\n    if (!fieldValue || fieldValue === '') {\n      return false;\n    }\n    const validTokens: LfFieldTokenId[] = this.getTokensForFieldType(fieldType, isImport);\n    const lowercaseFieldValue: string = fieldValue.toString().toLowerCase();\n    for (const validToken of validTokens) {\n      const tokenText = this.getTokenText(validToken)?.toLowerCase();\n      if (tokenText) {\n        if (fieldType === FieldType.String) {\n          if (this.fieldIsToken(lowercaseFieldValue, tokenText)) {\n            return true;\n          }\n        } else {\n          if (this.fieldIsOnlyToken(lowercaseFieldValue, tokenText)) {\n            return true;\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  private fieldIsToken(fieldVal: string, token: string): boolean {\n    const trimmedFieldVal = fieldVal.trim();\n    const tokenRegExp: RegExp = new RegExp(`%\\\\(${token}(:.*)?\\\\)`);\n    const matches = trimmedFieldVal.match(tokenRegExp);\n    return matches !== null;\n  }\n\n  private fieldIsOnlyToken(fieldVal: string, token: string): boolean {\n    const trimmedFieldVal = fieldVal.trim();\n    const tokenRegExp: RegExp = new RegExp(`^%\\\\(${token}(:.*)?\\\\)$`);\n    const matches = trimmedFieldVal.match(tokenRegExp);\n    return matches !== null && trimmedFieldVal === matches[0];\n  }\n}\n\nexport enum LfFieldTokenId {\n  DATE,\n  TIME,\n  DATETIME,\n  SESSION_COUNT,\n  REPOSITORY_COUNT,\n  USER_NAME,\n  ENTRY_NAME,\n  PARENT_NAME,\n  ENTRY_ID,\n  PARENT_ID,\n  PARENT_FIELD,\n  FILE_NAME,\n  FILE_EXTENSION,\n  FILE_MODIFIED,\n}\n\nexport interface LfFieldTokenData {\n  fieldType: FieldType;\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\nimport { LfMetadataValidationUtils } from '@laserfiche/lf-js-utils';\nimport { LfFieldInfo } from '../../utils/lf-field-types';\n\nexport class LfFieldValidationUtils extends ValidationUtils {\n  static getDefaultValidators(lfFieldInfo: LfFieldInfo): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (lfFieldInfo.isRequired) {\n      const requiredRegexValidator = ValidationUtils.requiredValidator();\n      validators.push(requiredRegexValidator);\n    }\n    if (lfFieldInfo.length) {\n      validators.push(Validators.maxLength(lfFieldInfo.length));\n    }\n    if (lfFieldInfo.constraint) {\n      if (\n        lfFieldInfo.fieldType === FieldType.Number ||\n        lfFieldInfo.fieldType === FieldType.LongInteger ||\n        lfFieldInfo.fieldType === FieldType.ShortInteger\n      ) {\n        validators.push(this.numericValidator(lfFieldInfo.constraint));\n      } else {\n        const cleanedConstraint: string = LfMetadataValidationUtils.formatTextConstraint(lfFieldInfo.constraint);\n        validators.push(this.generalRegexValidator(new RegExp(cleanedConstraint)));\n      }\n    }\n    return validators;\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { LfFieldInfo, TemplateFieldInfo } from './lf-field-types';\n\nexport function isDynamicField(fieldInfo: LfFieldInfo): boolean {\n  const fieldInfoAsTemplateInfo = fieldInfo as TemplateFieldInfo;\n  return fieldInfoAsTemplateInfo.rule?.ancestors !== undefined;\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  OnInit,\n  Output,\n  EventEmitter,\n  Input,\n  Directive,\n  ViewChild,\n  ElementRef,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\nimport { LfFieldInfo, LfFieldValue } from '../../../utils/lf-field-types';\nimport { FormControl, ValidatorFn, FormGroup } from '@angular/forms';\nimport { LfFieldTokenData, LfFieldTokenService } from '../lf-field-token.service';\nimport { LfFieldValidationUtils } from '../lf-field-validation-utils';\nimport { AppLocalizationService, ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { isDynamicField } from '../../../utils/metadata-utils';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap, startWith } from 'rxjs/operators';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\n\n/** @internal */\n@Directive()\nexport abstract class BaseFieldDirective implements OnInit {\n  public tokenService = inject(LfFieldTokenService);\n  public ref = inject(ChangeDetectorRef);\n  public localizationService = inject(AppLocalizationService);\n\n  @Input() lf_field_info!: LfFieldInfo;\n  @Input() lf_field_form_control!: FormControl;\n  @Input() lf_field_value: LfFieldValue | undefined;\n  @Input() parent_form: FormGroup | undefined;\n  @Input() is_import_mode: boolean = false;\n  @Output() fieldValueChange = new EventEmitter<LfFieldValue>();\n  @ViewChild('tokenTarget') tokenTarget?: ElementRef;\n  @Input() dynamic_field_value_options: string[] | undefined;\n\n  showTokenTextBox: boolean = false;\n\n  private readonly CHARACTER_COUNT = this.localizationService.getStringLaserficheObservable('CHARACTER_COUNT');\n  private readonly NOT_AVAILABLE_WITH_TOKENS =\n    this.localizationService.getStringLaserficheObservable('NOT_AVAILABLE_WITH_TOKENS');\n\n  private readonly REQUIRED_FIELD_IS_EMPTY =\n    this.localizationService.getStringLaserficheObservable('REQUIRED_FIELD_IS_EMPTY');\n  private THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS?: Observable<string>;\n\n  get containsToken(): boolean {\n    return this.tokenService.containsTokenForFieldType(\n      this.lf_field_form_control.value ?? '',\n      this.lf_field_info.fieldType,\n      this.is_import_mode\n    );\n  }\n\n  get lfFieldTokenData(): LfFieldTokenData {\n    return {\n      fieldType: this.lf_field_info?.fieldType,\n    };\n  }\n\n  get isDynamic(): boolean {\n    return isDynamicField(this.lf_field_info);\n  }\n\n  readonly tokenCharacterCountHint = this.getTokenCharacterCountHint();\n\n  readonly noTokenCharacterCountHint = this.getNoTokenCharacterCountHint();\n\n  private getConcatenatedTokenLabel(firstVal: string): Observable<string> {\n    return this.NOT_AVAILABLE_WITH_TOKENS.pipe(map((value) => firstVal.concat(` ${value}`)));\n  }\n\n  private getTokenCharacterCountHint(): Observable<string> {\n    return this.CHARACTER_COUNT.pipe(mergeMap((value) => this.getConcatenatedTokenLabel(value)));\n  }\n\n  private getNoTokenCharacterCountHint(): Observable<string> {\n    const obs = this.CHARACTER_COUNT.pipe(\n      mergeMap((value) => {\n        const startValue = `${value}\n      ${this.lf_field_form_control.value ? this.lf_field_form_control.value.length : 0}\n      / ${this.lf_field_info?.length}`;\n        return this.getFieldLengthRatio(value).pipe(startWith(startValue));\n      })\n    );\n    return obs;\n  }\n\n  private getFieldLengthRatio(value: string): Observable<string> {\n    return this.lf_field_form_control.valueChanges.pipe(\n      map((thisVal) => {\n        return `${value}\n      ${thisVal ? this.lf_field_form_control.value.length : 0}\n      / ${this.lf_field_info?.length}`;\n      })\n    );\n  }\n\n  constructor() {}\n\n  fieldValidationErrorMsg!: Observable<string | undefined>;\n\n  async ngOnInit(): Promise<void> {\n    this.lf_field_info = CoreUtils.validateDefined(this.lf_field_info, 'LfFieldInfo');\n    this.lf_field_form_control = CoreUtils.validateDefined(this.lf_field_form_control, 'lfFieldFormControl');\n    this.setLfFieldFormControlValue(this.lf_field_value);\n\n    this.THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS = this.localizationService.getStringLaserficheObservable(\n      'THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS',\n      [this.lf_field_info?.length?.toString() ?? '0']\n    );\n\n    this.fieldValidationErrorMsg = this.lf_field_form_control.valueChanges.pipe(\n      mergeMap((value) => {\n        const validationRuleName = this.getBrokenValidationRule();\n        return this.getValidationErrorMsg(validationRuleName) ?? of(undefined);\n      })\n    );\n\n    if (\n      this.tokenService.containsTokenForFieldType(\n        this.lf_field_value ?? '',\n        this.lf_field_info.fieldType,\n        this.is_import_mode\n      )\n    ) {\n      this.showTokenTextBox = true;\n    } else {\n      this.resetToDefaultValidators();\n    }\n  }\n\n  abstract deserializeLfFieldValue(): string;\n\n  abstract serializeFieldFormControlValue(): string;\n\n  abstract getAdditionalValidatorsForFieldType(): ValidatorFn[];\n\n  abstract getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined;\n\n  protected fieldOnValueChanged(): void {\n    // do nothing\n    // derived classes will implement\n  }\n\n  getLfFieldFormControlValue(): string {\n    return this.lf_field_form_control.value;\n  }\n\n  setLfFieldFormControlValue(newValue: string | undefined) {\n    this.lf_field_value = newValue;\n    const deserializedValue: string = this.lf_field_value ? this.deserializeLfFieldValue() : '';\n    this.lf_field_form_control.setValue(deserializedValue);\n  }\n\n  onValueChanged(emitEvent: boolean = true) {\n    if (this.lf_field_form_control.valid) {\n      const currentValue = this.serializeFieldFormControlValue();\n      this.lf_field_value = currentValue;\n    } else {\n      this.lf_field_value = '';\n      this.fieldOnValueChanged();\n    }\n    if (emitEvent) {\n      this.fieldValueChange.emit(this.lf_field_value);\n    }\n  }\n\n  getBrokenValidationRule(): ValidationRule | undefined {\n    for (const validationRuleName of LfFieldValidationUtils.validationRulesInPriorityOrder) {\n      if (this.lf_field_form_control?.hasError(validationRuleName)) {\n        return validationRuleName;\n      }\n    }\n    return undefined;\n  }\n\n  onDateOrTimeTokenValueChanged() {\n    this.onFocusOutTokenInput();\n    this.onValueChanged();\n  }\n\n  onFocusOutTokenInput() {\n    if (this.containsToken) {\n      this.showTokenTextBox = true;\n      this.setLfFieldFormControlValue(this.lf_field_value);\n    } else {\n      this.showTokenTextBox = false;\n      this.setLfFieldFormControlValue('');\n      this.resetToDefaultValidators();\n    }\n  }\n\n  protected getValidationErrorMsg(validationRuleName: ValidationRule | undefined): Observable<string> | undefined {\n    if (validationRuleName === undefined) {\n      return undefined;\n    } else {\n      switch (validationRuleName) {\n        case ValidationRule.REQUIRED:\n          return this.REQUIRED_FIELD_IS_EMPTY;\n        case ValidationRule.MAX_LENGTH:\n          return this.THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS;\n        case ValidationRule.PATTERN:\n          return this.lf_field_info.constraintError ? of(this.lf_field_info.constraintError) : undefined;\n      }\n      return this.getValidationTextForFieldType(validationRuleName);\n    }\n  }\n\n  onTokenChosen(token: string) {\n    if (this.tokenTarget) {\n      const newFieldVal: string = this.createNewFieldValueWithToken(token);\n      this.showTokenTextBox = true;\n      this.ref.detectChanges();\n      this.setLfFieldFormControlValue(newFieldVal);\n      this.fieldValueChange.emit(newFieldVal);\n    }\n  }\n  createNewFieldValueWithToken(token: string): string {\n    return `%(${token})`;\n  }\n\n  resetToDefaultValidators() {\n    const defaultValidators = LfFieldValidationUtils.getDefaultValidators(this.lf_field_info);\n    const additionalValidators = this.getAdditionalValidatorsForFieldType();\n    this.lf_field_form_control.setValidators(defaultValidators.concat(additionalValidators));\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Directive, OnInit } from '@angular/core';\nimport { BaseFieldDirective } from './base-field.directive';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { of } from 'rxjs';\nimport { UniComponentConfig, UniComponentSettings } from '../../../../lf-date-time-picker/uni-date-time.common';\nimport { UniDateTimeComponent } from '../../../../lf-date-time-picker/uni-date-time.component';\n\n@Directive()\nexport abstract class DateTimeBaseFieldDirective extends BaseFieldDirective implements OnInit {\n  protected readonly internalDateFormat: string = 'YYYY-MM-DD';\n  protected readonly internalTimeFormat: string = 'HH:mm:ss';\n  uniDateTimeConfig!: UniComponentConfig;\n  uniDateTimeSettings!: UniComponentSettings;\n\n  onUniDateOrTimeChanged(dateTimeObject: { component: UniDateTimeComponent }) {\n    if (dateTimeObject?.component) {\n      this.ref.detectChanges();\n      this.setLfDateTimeFieldControl(dateTimeObject);\n      this.showTokenTextBox = false;\n      this.onValueChanged(true);\n    }\n  }\n\n  private setLfDateTimeFieldControl(dateTimeObject: { component: UniDateTimeComponent }) {\n    if (dateTimeObject.component.dateTimeControl?.value) {\n      this.setLfFieldFormControlValue(dateTimeObject.component.dateTimeControl?.value);\n      this.lf_field_form_control.updateValueAndValidity();\n    } else if (!!dateTimeObject.component.settings.showTimeOnly) {\n      this.setLfFieldFormControlValue(undefined);\n      this.lf_field_form_control.updateValueAndValidity();\n    } else {\n      this.setDateOrDateTimeValidationErrors(dateTimeObject);\n    }\n  }\n\n  private setDateOrDateTimeValidationErrors(dateTimeObject: { component: UniDateTimeComponent }) {\n    if (dateTimeObject.component.dateControl?.value && dateTimeObject.component.dateControl?.value.trim() !== '') {\n      this.setLfFieldFormControlValue(dateTimeObject.component.dateControl?.value);\n      if (!!dateTimeObject.component.settings.combinedDateTime) {\n        var dateTimeFormat: string =\n          dateTimeObject.component.settings.dateFormat + ' ' + dateTimeObject.component.settings.timeFormat;\n        this.lf_field_form_control.setErrors({\n          [ValidationRule.DATETIME_PICKER_PARSE]: {\n            text: dateTimeObject.component.dateControl?.value,\n            dateTimeFormat: dateTimeFormat,\n          },\n        });\n      } else {\n        this.lf_field_form_control.setErrors({\n          [ValidationRule.DATEPICKER_PARSE]: {\n            text: dateTimeObject.component.dateControl?.value,\n            dateTimeFormat: dateTimeObject.component.settings.dateFormat,\n          },\n        });\n      }\n    } else {\n      this.setLfFieldFormControlValue(undefined);\n      this.lf_field_form_control.updateValueAndValidity();\n    }\n    const validationRuleName = this.getBrokenValidationRule();\n    this.fieldValidationErrorMsg = this.getValidationErrorMsg(validationRuleName) ?? of(undefined);\n  }\n\n  protected getDateTimePickerDefaultDateValue(): string | undefined {\n    var initialDate: string | undefined;\n    if (!!this.containsToken) {\n      this.showTokenTextBox = true;\n      return (initialDate = undefined);\n    } else {\n      return (initialDate = this.lf_field_value);\n    }\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { AbstractControl } from '@angular/forms';\n\nexport enum UniControlType {\n  DateTime_date = 'dateTime-date',\n  DateTime_time = 'dateTime-time',\n  Time = 'time',\n  DateTime = 'dateTime',\n}\n\nexport enum FormatType {\n  DATE_FORMAT = 1,\n  TIME_FORMAT = 2,\n  DATETIME_FORMAT = 3,\n  LONG_DATE_FORMAT = 4,\n}\n\nexport type StateDataDateTime = {\n  dateStr?: string | null;\n  timeStr?: string | null;\n  dateTimeObj?: Date | null;\n};\nexport type StateDataTime = {\n  timeStr: string;\n  dateTimeObj?: Date;\n};\nexport type StateData = StateDataDateTime;\n\nexport enum FormChangeEvent {\n  // Revise, remove unused\n  Blur = 'Blur', // when source is User\n  Input = 'Input', // when source is User\n  DateChange = 'DateChange',\n  DateBlur = 'DateBlur',\n  DateClose = 'DateClose',\n  DateIconClick = 'DateIconClick',\n  TimeIconClick = 'TimeIconClick',\n  TimeChange = 'TimeChange',\n  TimeBlur = 'TimeBlur',\n  TimeClose = 'TimeClose',\n}\n\nexport enum FormChangeSource {\n  // Revise, remove unused\n  User = 'User',\n  InitializeComponent = 'InitializeComponent',\n}\n\nexport interface UniState {\n  data?: StateData;\n  hidden?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  disableUseCurrentDateTime?: boolean;\n  settings?: UniComponentSettings;\n}\n\nexport interface UniComponentSettings {\n  // Revise, remove unused\n  fieldId?: string;\n  required?: boolean;\n  readOnly?: boolean;\n  default?: unknown;\n  acceptTokens?: boolean;\n  label?: string;\n  showLabel?: boolean;\n\n  abstractControl?: AbstractControl;\n  dateControlName?: string;\n  timeControlName?: string;\n  dateTimeControlName?: string;\n\n  width?: number;\n  maxWidth?: number;\n  height?: number;\n  maxHeight?: number;\n  padding?: number;\n  minWidth?: number;\n  minHeight?: number;\n\n  combinedDateTime?: boolean;\n  capturedInBackend?: boolean;\n\n  min?: string;\n  max?: string;\n\n  defaultDate?: string;\n  defaultTimeOfDate?: string;\n  dateFormat?: string;\n  timeFormat?: string;\n  isAMPM?: boolean;\n  isTwentyfour?: boolean;\n  useCurrentTime?: boolean;\n  showTime?: boolean;\n  showTimeOnly?: boolean;\n  useCurrentDate?: boolean;\n  datePlaceholder?: string;\n  timePlaceholder?: string;\n\n  customErrorMessages?: any;\n  errorTokens?: { value: string; settingName: string }[];\n}\n\nexport interface UniComponentConfig {\n  defaultDateFormat?: string;\n  defaultTimeFormat?: string;\n  defaultDateTimeFormat?: string;\n  storedValueDateFormat?: string;\n  storedValueTimeFormat?: string;\n  storedValueDateTimeFormat?: string;\n  storedValueLocale?: string;\n  storedValueLanguage?: string;\n  tokensPatternRegex?: string;\n  useBackendDateTimeForCurrentDateTime?: boolean;\n  locale?: string;\n  language?: string;\n  defaultDateLocale?: string;\n  defaultDateLanguage?: string;\n  setDisplayFormatByLocale?: boolean;\n  setDisplayFormatByLocaleSeconds?: boolean;\n  isDisplayOnly?: boolean;\n  errorsPriorityOrder?: any;\n  fieldIdPrefix?: string;\n  hasLongDateFormat?: boolean;\n\n  formGroupValidators?: any;\n  dateControlValidators?: any;\n  timeControlValidators?: any;\n  dateTimeControlValidators?: any;\n\n  silent?: boolean;\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport class uniLocalizedFormat {\n  DateFormat!: string;\n  LongDateFormat!: string;\n  TimeFormat!: string;\n  TimeFormatWithSeconds!: string;\n}\nexport const uniLocalizedFormats: Record<string, uniLocalizedFormat> = {\n  'ar-AE': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-BH': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-DZ': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-EG': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-IQ': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-JO': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-KW': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-LB': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-LY': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-MA': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'ar-MR': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-OM': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-QA': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-SA': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-SD': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-SO': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-SS': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-SY': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-TD': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-TN': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'ar-YE': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-AE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-AG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-AI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-AS': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-AT': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-AU': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-BB': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-BE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-BI': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-BM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-BS': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-BW': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-BZ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-CA': {\n    DateFormat: 'YYYY-MM-DD',\n    LongDateFormat: 'YYYY MMMM D, EEEE',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-CC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-CH': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-CK': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-CM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-CX': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-CY': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-DE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-DK': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH.mm',\n    TimeFormatWithSeconds: 'HH.mm:ss',\n  },\n  'en-DM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-ER': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-FI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'H.mm',\n    TimeFormatWithSeconds: 'H.mm:ss',\n  },\n  'en-FJ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-FK': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-FM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-GB': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-GD': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-GG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-GH': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-GI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-GM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-GU': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-GY': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-HK': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-IE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-IL': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'H:mm',\n    TimeFormatWithSeconds: 'H:mm:ss',\n  },\n  'en-IM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-IN': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-IO': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-JE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-JM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-KE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-KI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-KN': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-KY': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-LC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-LR': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-LS': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-MG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-MH': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-MO': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-MP': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-MS': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-MT': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-MU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-MW': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-MY': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-NA': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-NF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-NG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-NL': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-NR': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-NU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-NZ': {\n    DateFormat: 'D/MM/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-PG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-PH': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-PK': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-PN': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-PR': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-PW': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-RW': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-SB': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-SC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-SD': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-SE': {\n    DateFormat: 'YYYY-MM-DD',\n    LongDateFormat: 'YYYY MMMM D, EEEE',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-SG': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-SH': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-SI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-SL': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-SS': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-SX': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-SZ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-TC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-TK': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-TO': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-TT': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-TV': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-TZ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-UG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-UM': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-US': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-VC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-VG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-VI': {\n    DateFormat: 'M/D/YYYY',\n    LongDateFormat: 'EEEE, MMMM D, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-VU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-WS': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-ZA': {\n    DateFormat: 'YYYY/MM/DD',\n    LongDateFormat: 'YYYY MMMM DD, EEEE',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'en-ZM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'en-ZW': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-AR': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-BO': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-BR': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-BZ': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-CL': {\n    DateFormat: 'DD-MM-YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-CO': {\n    DateFormat: 'D/MM/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'es-CR': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-CU': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-DO': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'es-EC': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-ES': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'H:mm',\n    TimeFormatWithSeconds: 'H:mm:ss',\n  },\n  'es-GQ': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'H:mm',\n    TimeFormatWithSeconds: 'H:mm:ss',\n  },\n  'es-GT': {\n    DateFormat: 'D/MM/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-HN': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-MX': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'H:mm',\n    TimeFormatWithSeconds: 'H:mm:ss',\n  },\n  'es-NI': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-PA': {\n    DateFormat: 'MM/DD/YYYY',\n    LongDateFormat: 'EEEE, MMMM DD, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'es-PE': {\n    DateFormat: 'D/MM/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-PH': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'es-PR': {\n    DateFormat: 'MM/DD/YYYY',\n    LongDateFormat: 'EEEE, MMMM DD, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'es-PY': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-SV': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-US': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'es-UY': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'es-VE': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-BE': {\n    DateFormat: 'D/MM/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-BF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-BI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-BJ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-BL': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CA': {\n    DateFormat: 'YYYY-MM-DD',\n    LongDateFormat: 'YYYY MMMM D, EEEE',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CD': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CH': {\n    DateFormat: 'DD.MM.YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CI': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-CM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-DJ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-DZ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-FR': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-GA': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-GF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-GN': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-GP': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-GQ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-HT': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-KM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-LU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-MA': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-MC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-MF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-MG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-ML': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-MQ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-MR': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-MU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-NC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-NE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-PF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-PM': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-RE': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-RW': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-SC': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-SN': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-SY': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-TD': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-TG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-TN': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-VU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'fr-WF': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'fr-YT': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-AO': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-BR': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-CH': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-CV': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-GQ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-GW': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-LU': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-MO': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A',\n    TimeFormatWithSeconds: 'h:mm:ss A',\n  },\n  'pt-MZ': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-PT': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-ST': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'pt-TL': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'HH:mm',\n    TimeFormatWithSeconds: 'HH:mm:ss',\n  },\n  'zh-CN': {\n    DateFormat: 'YYYY/M/D',\n    LongDateFormat: 'YYYY MMMM D, EEEE',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n  'zh-HK': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n  'zh-Hans-HK': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n  'zh-Hans-MO': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n  'zh-MO': {\n    DateFormat: 'D/M/YYYY',\n    LongDateFormat: 'EEEE, D MMMM, YYYY',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n  'zh-SG': {\n    DateFormat: 'DD/MM/YYYY',\n    LongDateFormat: 'EEEE, DD MMMM, YYYY',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n  'zh-TW': {\n    DateFormat: 'YYYY/M/D',\n    LongDateFormat: 'YYYY MMMM D, EEEE',\n    TimeFormat: 'h:mm A', // Adjusted for time picker\n    TimeFormatWithSeconds: 'h:mm:ss A', // Adjusted for time picker\n  },\n};\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport Flatpickr from 'flatpickr';\nimport { Arabic } from 'flatpickr/dist/l10n/ar.js';\nimport { Spanish } from 'flatpickr/dist/l10n/es.js';\nimport { French } from 'flatpickr/dist/l10n/fr.js';\nimport { Portuguese } from 'flatpickr/dist/l10n/pt.js';\nimport { Mandarin } from 'flatpickr/dist/l10n/zh.js';\nimport { MandarinTraditional } from 'flatpickr/dist/l10n/zh-tw.js';\n\nexport const FlatpickrLocales = {\n  en: Flatpickr.l10ns.en,\n  ar: Arabic,\n  es: Spanish,\n  fr: French,\n  pt: Portuguese,\n  zhHans: Mandarin,\n  zhHant: MandarinTraditional,\n};\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Injectable } from '@angular/core';\nimport {\n  parse,\n  parseISO,\n  format,\n  isValid,\n  isBefore,\n  isAfter,\n  isEqual,\n  isWithinInterval,\n  add,\n  addDays,\n  addMonths,\n  addMilliseconds,\n  milliseconds,\n  isMatch,\n  isLeapYear,\n  startOfDay,\n  endOfMonth,\n  getISOWeek,\n  differenceInYears,\n  differenceInMonths,\n  differenceInDays,\n  Duration,\n} from 'date-fns';\n\nimport { StateDataDateTime, UniComponentSettings, UniComponentConfig, FormatType } from './uni-date-time.common';\nimport { uniLocalizedFormats } from './uni-date-time.locales';\n\nimport { DateOption } from 'flatpickr/dist/types/options';\nimport { CustomLocale } from 'flatpickr/dist/types/locale';\nimport flatpickr from 'flatpickr';\nimport { FlatpickrLocales } from './flatpickr-locales';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UniDateTimeService {\n  public defaultErrorMessages = {\n    ['required']: () => 'Value is required.',\n    ['max']: (params: { min?: string | number; max?: string | number }) =>\n      `Value must be less than or equal to ${params.max}.`,\n    ['min']: (params: { min?: string | number; max?: string | number }) =>\n      `Value must be greater than or equal to ${params.min}.`,\n    ['range']: (params: { min?: string | number; max?: string | number }) =>\n      `Value must be between ${params.min} and ${params.max}.`,\n    ['invalidformat']: () => `Invalid input.`,\n  };\n\n  public fromDisplayDateTimeFormatToUnicodeTokens(displayFormat: string): string {\n    let newFormat = displayFormat;\n    newFormat = newFormat.replace(/Y/g, 'y');\n    newFormat = newFormat.replace(/D/g, 'd');\n    newFormat = newFormat.replace(/A/g, 'a');\n    return newFormat;\n  }\n\n  public isInDisplayDateTimeFormat(format: string): boolean {\n    const dsSymbols = ['YYYY', 'EEEE', 'MMMM', 'MMM', 'YY', 'DD', 'MM', 'hh', 'HH', 'mm', 'ss', 'A'];\n    for (let i = 0; i < dsSymbols.length; i++) {\n      if (format.indexOf(dsSymbols[i]) > -1) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  public fromDisplayDateTimeFormatToFlatpickrFormat(displayFormat: string, checkFirst: boolean = false): string {\n    if (checkFirst) {\n      if (!this.isInDisplayDateTimeFormat(displayFormat)) {\n        return displayFormat; // already converted or not convertable\n      }\n    }\n    const cFormats = ['YYYY', 'EEEE', 'MMMM', 'MMM', 'YY', 'DD', 'MM', 'hh', 'HH', 'mm', 'ss', 'A', 'D', 'M'];\n    const fFormats = ['Y', 'l', 'F', 'M', 'y', 'd', 'm', 'G', 'H', 'i', 'S', 'K', 'j', 'n'];\n    let newFormat = displayFormat;\n    for (let i = 0; i < cFormats.length; i++) {\n      newFormat = newFormat.replace(new RegExp(cFormats[i], 'g'), '{' + i + '}');\n    }\n    for (let i = 0; i < cFormats.length; i++) {\n      newFormat = newFormat.replace(new RegExp('\\\\{' + i + '\\\\}', 'g'), fFormats[i]);\n    }\n    return newFormat;\n  }\n\n  // public timezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  private referenceDate: Date;\n  private TokensPatternRegex: string = '{/[^{}]+}';\n  public supportedLanguages = [\n    'ar',\n    'at',\n    'az',\n    'be',\n    'bg',\n    'bn',\n    'bs',\n    'cs',\n    'cy',\n    'da',\n    'de',\n    'eo',\n    'en',\n    'es',\n    'et',\n    'fa',\n    'fi',\n    'fo',\n    'fr',\n    'ga',\n    'gr',\n    'he',\n    'hi',\n    'hr',\n    'hu',\n    'hy',\n    'id',\n    'is',\n    'it',\n    'ja',\n    'ka',\n    'km',\n    'ko',\n    'kz',\n    'lt',\n    'lv',\n    'mk',\n    'mn',\n    'ms',\n    'my',\n    'nl',\n    'nn',\n    'no',\n    'pa',\n    'pl',\n    'pt',\n    'ro',\n    'ru',\n    'si',\n    'sk',\n    'sl',\n    'sq',\n    'sr',\n    'sv',\n    'th',\n    'tr',\n    'uk',\n    'uz',\n    'vn',\n    'zh-hans',\n    'zh-hant',\n  ];\n\n  constructor() {\n    const today = new Date();\n    this.referenceDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n    this.TokensPatternRegex =\n      'TokenPatternRegex' in window ? (window['TokenPatternRegex'] as string) : this.TokensPatternRegex;\n  }\n\n  public parse(info: {\n    dateStr?: string | null;\n    timeStr?: string | null;\n    dateTimeStr?: string | null;\n    dateFormat?: string | null;\n    timeFormat?: string;\n    dateTimeFormat?: string;\n    language?: string;\n    locale?: string;\n  }): Date | null {\n    // Parse datetime if present\n    if (info.dateTimeStr && info.dateTimeFormat) {\n      const format = info.dateTimeFormat;\n\n      if (info.language || info.locale) {\n        return this.tryLocalizedParse(info.dateTimeStr, format, info.language, info.locale);\n      }\n\n      const obj = parse(\n        info.dateTimeStr,\n        this.fromDisplayDateTimeFormatToUnicodeTokens(info.dateTimeFormat) || info.dateTimeFormat,\n        this.referenceDate\n      );\n\n      return isValid(obj) ? obj : null;\n    }\n\n    if (!info.dateStr && !info.timeStr) {\n      return null;\n    }\n\n    let input = '',\n      dateTimeFormat = '',\n      timeless = true;\n    // Construct dateTime: add date format\n    if (info.dateStr && info.dateFormat) {\n      input += info.dateStr;\n      dateTimeFormat += info.dateFormat;\n    }\n    // construct dateTime: add time format\n    if (info.timeStr && info.timeFormat) {\n      if (info.timeStr.indexOf('-') > -1) {\n        input = info.timeStr.substring(info.timeStr.indexOf(' ') + 1);\n      } else {\n        input += input ? ' ' + info.timeStr : info.timeStr;\n      }\n      dateTimeFormat += (dateTimeFormat ? ' ' : '') + info.timeFormat;\n      timeless = false;\n    }\n\n    // Parse constructed dateTime\n    if (input && dateTimeFormat) {\n      if (info.language || info.locale) {\n        return this.tryLocalizedParse(input, dateTimeFormat, info.language, info.locale, timeless);\n      }\n\n      const obj = parse(input, this.fromDisplayDateTimeFormatToUnicodeTokens(dateTimeFormat), this.referenceDate);\n      return isValid(obj) ? obj : null;\n    }\n    return null;\n  }\n\n  public tryLocalizedParse(\n    dateTime: string,\n    format: string,\n    language?: string,\n    locale?: string,\n    timeless?: boolean\n  ): Date | null {\n    if (language) {\n      // flatpickr.localize(this.getFlatpickrLocale(language));\n      let dateObj = this.flatpickrParseDate(\n        dateTime,\n        this.fromDisplayDateTimeFormatToFlatpickrFormat(format),\n        timeless,\n        language\n      );\n      if (locale && !dateObj) {\n        // flatpickr.localize(this.getFlatpickrLocale(locale));\n        dateObj = this.flatpickrParseDate(\n          dateTime,\n          this.fromDisplayDateTimeFormatToFlatpickrFormat(format),\n          timeless,\n          locale\n        );\n        // flatpickr.localize(this.getFlatpickrLocale(language)); // set UI language back\n      }\n      return dateObj ? dateObj : null;\n    }\n    return null;\n  }\n\n  public format(info: {\n    dateTimeObj: Date | null;\n    dateFormat?: string | null;\n    timeFormat?: string | null;\n    dateTimeFormat?: string;\n    language?: string;\n  }): string {\n    if (!info || !info.dateTimeObj) {\n      return '';\n    }\n\n    if (info.dateTimeFormat) {\n      if (info.dateTimeFormat.indexOf('s') === -1) {\n        info.dateTimeObj.setSeconds(0);\n      }\n      return info.language\n        ? this.flatpickrFormatDate(\n            info.dateTimeObj,\n            this.fromDisplayDateTimeFormatToFlatpickrFormat(info.dateTimeFormat),\n            info.language\n          )\n        : format(info.dateTimeObj, info.dateTimeFormat);\n    }\n\n    let dateTimeFormat = '';\n    if (info.dateFormat) {\n      dateTimeFormat += info.dateFormat;\n    }\n    if (info.timeFormat) {\n      dateTimeFormat += (dateTimeFormat ? ' ' : '') + info.timeFormat;\n      if (info.timeFormat.indexOf('s') === -1) {\n        info.dateTimeObj.setSeconds(0);\n      }\n    }\n    return dateTimeFormat\n      ? info.language\n        ? this.flatpickrFormatDate(\n            info.dateTimeObj,\n            this.fromDisplayDateTimeFormatToFlatpickrFormat(dateTimeFormat),\n            info.language\n          )\n        : format(info.dateTimeObj, this.fromDisplayDateTimeFormatToUnicodeTokens(dateTimeFormat))\n      : '';\n  }\n\n  public flatpickrParseDate(\n    date: DateOption,\n    format?: string | undefined,\n    timeless?: boolean | undefined,\n    customLocaleOrLanguageStr?: CustomLocale | string\n  ): Date | undefined {\n    const customLocale: CustomLocale =\n      typeof customLocaleOrLanguageStr == 'string'\n        ? this.getFlatpickrLocale(customLocaleOrLanguageStr)\n        : customLocaleOrLanguageStr;\n    // create dummy flatpickr instance in order to localize parsing\n    const localFp = flatpickr(document.createElement('input'), { locale: customLocale });\n    return localFp.parseDate(date, format, timeless);\n  }\n\n  public flatpickrFormatDate(date: Date, format: string, customLocaleOrLanguageStr?: CustomLocale | string): string {\n    const customLocale: CustomLocale =\n      typeof customLocaleOrLanguageStr == 'string'\n        ? this.getFlatpickrLocale(customLocaleOrLanguageStr)\n        : customLocaleOrLanguageStr;\n    // create dummy flatpickr instance in order to localize formatting\n    const localFp = flatpickr(document.createElement('input'), { locale: customLocale });\n    return localFp.formatDate(date, format);\n  }\n\n  public isValid(date: Date): boolean {\n    return isValid(date);\n  }\n  public isBefore(input1: Date, input2: Date): boolean {\n    return isBefore(input1, input2);\n  }\n  public isAfter(input1: Date, input2: Date): boolean {\n    return isAfter(input1, input2);\n  }\n  public isBetween(date: Date, start: Date, end: Date): boolean {\n    return isWithinInterval(date, { start, end });\n  }\n  public isEqual(input1: Date, input2: Date): boolean {\n    return isEqual(input1, input2);\n  }\n  public add(date: Date, duration: Duration) {\n    return add(date, duration);\n  }\n  public addDays(date: Date, amount: number): Date {\n    return addDays(date, amount);\n  }\n  public addMonths(date: Date, amount: number): Date {\n    return addMonths(date, amount);\n  }\n  public addMilliseconds(date: Date, amount: number): Date {\n    return addMilliseconds(date, amount);\n  }\n  public getMilliseconds(duration: Duration): number {\n    return milliseconds(duration);\n  }\n  public isLeapYear(date: Date): boolean {\n    return isLeapYear(date);\n  }\n  public tryParse(dateTimeStr: string, formats: string[]): Date | null {\n    let date: Date | null = null;\n    let returnedDate: Date | null = null;\n    formats.forEach((f) => {\n      if (f === 'ISO_8601') {\n        date = parseISO(dateTimeStr);\n      } else if (isMatch(dateTimeStr, this.fromDisplayDateTimeFormatToUnicodeTokens(f) || f)) {\n        date = parse(dateTimeStr, this.fromDisplayDateTimeFormatToUnicodeTokens(f) || f, this.referenceDate);\n      }\n      if (date && isValid(date)) {\n        returnedDate = date;\n      }\n    });\n    return returnedDate;\n  }\n  public createDateTimeWithOffset(tzOffset: number, date?: Date): Date {\n    const d: Date = date ? date : new Date();\n    const offset: number = d.getTimezoneOffset();\n    if (tzOffset !== offset) {\n      d.setTime(d.getTime() + (offset - tzOffset) * 60000);\n    }\n    return d;\n  }\n  public startOfDay(date: Date): Date {\n    return startOfDay(date);\n  }\n  public endOfMonth(date: Date): Date {\n    return endOfMonth(date);\n  }\n\n  public getISOWeek(date: Date): number {\n    return getISOWeek(date);\n  }\n  public differenceInYears(endDate: Date, startDate: Date) {\n    return differenceInYears(endDate, startDate);\n  }\n  public differenceInMonths(endDate: Date, startDate: Date) {\n    return differenceInMonths(endDate, startDate);\n  }\n  public differenceInDays(endDate: Date, startDate: Date) {\n    return differenceInDays(endDate, startDate);\n  }\n\n  //-----------------\n  createDateTimeObject(\n    dateStr: string | undefined | null,\n    dateFormat: string | undefined | null,\n    timeStr?: string | null,\n    timeFormat?: string\n  ): Date | null {\n    return this.parse({ dateStr, dateFormat, timeStr, timeFormat });\n  }\n\n  generateDateTimeData(\n    dateStr: string | null,\n    dateFormat: string | null | undefined,\n    dateTimeObj?: Date | null,\n    timeStr?: string | null,\n    timeFormat?: string | null\n  ): StateDataDateTime {\n    const result = { dateStr: '', timeStr: '', dateTimeObj };\n    if (dateStr) {\n      result.dateStr = dateTimeObj ? this.format({ dateTimeObj, dateFormat }) : dateStr;\n    }\n    if (timeStr) {\n      result.timeStr = dateTimeObj ? this.format({ dateTimeObj, timeFormat }) : timeStr;\n    }\n    return result;\n  }\n  public createDataForDateTime(\n    dataValue: string | null,\n    settings: UniComponentSettings,\n    config: UniComponentConfig,\n    format?: string | null,\n    defaultDateFormat?: string,\n    defaultTimeFormat?: string\n  ): StateDataDateTime {\n    const fromDefault: boolean = typeof dataValue === 'string';\n    if (fromDefault) {\n      // TO-REFACTOR:\n      const { dateFormat, timeFormat, showTime, useCurrentDate, defaultDate, defaultTimeOfDate } = settings;\n      let dateStr,\n        timeStr = '';\n      if (useCurrentDate) {\n        // format using config.language\n        const dateTimeObj = new Date();\n        return {\n          dateStr: this.format({ dateTimeObj, dateFormat, language: config.language }),\n          timeStr: showTime ? this.format({ dateTimeObj, timeFormat, language: config.language }) : '',\n          dateTimeObj,\n        };\n      } else {\n        // parse using config.defaultDateLanguage\n        const dateTimeObj = this.parse({\n          dateStr: defaultDate,\n          dateFormat: defaultDateFormat,\n          timeStr: defaultTimeOfDate,\n          timeFormat: defaultTimeFormat,\n          language: config.defaultDateLanguage,\n          locale: config.defaultDateLocale,\n        });\n\n        // format using current language\n        dateStr = settings.defaultDate\n          ? this.format({\n              dateTimeObj,\n              dateFormat,\n              language: config.language,\n            })\n          : '';\n        timeStr = settings.defaultTimeOfDate\n          ? this.format({\n              dateTimeObj: dateTimeObj,\n              timeFormat,\n              language: config.language,\n            })\n          : '';\n\n        return {\n          dateStr,\n          timeStr,\n          dateTimeObj,\n        };\n      }\n    } else {\n      // parse using current language\n      const dateTimeObj = this.parse({\n        dateTimeStr: dataValue,\n        dateTimeFormat: format\n          ? format\n          : settings.showTime\n            ? `${settings.dateFormat} ${settings.timeFormat}`\n            : settings.dateFormat,\n        language: config.language,\n        locale: config.locale,\n      });\n\n      // format using current language\n      return dateTimeObj\n        ? {\n            dateStr: this.format({\n              dateTimeObj,\n              dateFormat: settings.dateFormat,\n              language: config.language,\n            }),\n            timeStr: settings.showTime\n              ? this.format({\n                  dateTimeObj,\n                  timeFormat: settings.timeFormat,\n                  language: config.language,\n                })\n              : '',\n            dateTimeObj,\n          }\n        : { dateStr: '', timeStr: '', dateTimeObj: null };\n    }\n  }\n\n  public generateGUID(): string {\n    // Creating fake (but still pretty good) guid based on date\n    let d = new Date().getTime();\n    if (window.performance && typeof window.performance.now === 'function') {\n      d += window.performance.now(); //use high-precision timer if available\n    }\n    const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n      const randomValues = new Uint8Array(1);\n      window.crypto.getRandomValues(randomValues);\n      const r = ((d + (randomValues[0] % 16)) % 16) | 0;\n      d = Math.floor(d / 16);\n      return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n    return uuid;\n  }\n\n  //----\n\n  public getSupportedLanguages() {\n    return this.supportedLanguages; // Add other supported/enabled languages here\n  }\n\n  public getDefaultSettings(): UniComponentSettings {\n    return {\n      // Input\n      required: false, // * Common setting\n      readOnly: false, // * Common setting\n      fieldId: '',\n      label: '',\n      showLabel: true,\n\n      // Options\n      showTime: false, // * Common setting\n      showTimeOnly: false, // * Common setting\n      combinedDateTime: false,\n\n      // Data\n      acceptTokens: false, // * Common setting, default = false\n      defaultDate: '', // * Common setting\n      defaultTimeOfDate: '', // * Common setting\n      dateFormat: 'YYYY-MM-DD', // * Common setting\n      timeFormat: 'hh:mm:ss A', // * Common setting\n      useCurrentDate: false, // * Common setting\n      useCurrentTime: false, // * Common setting\n      datePlaceholder: 'YYYY-MM-DD',\n      timePlaceholder: 'hh:mm:ss A',\n\n      // ReadOnly\n      isAMPM: true, // auto set\n      isTwentyfour: false, // auto set\n      capturedInBackend: false,\n\n      // Style and Display\n      minWidth: 440,\n      minHeight: 26,\n      padding: 0,\n\n      // Validation\n      min: '', // Revise\n      max: '', // Revise\n      customErrorMessages: {},\n      errorTokens: [\n        { value: '{_field_label}', settingName: 'label' },\n        { value: '{_max}', settingName: 'max' },\n        { value: '{_min}', settingName: 'min' },\n      ],\n    };\n  }\n\n  public getDefaultConfig(): UniComponentConfig {\n    return {\n      // Input\n      fieldIdPrefix: 'DATE_TIME',\n      isDisplayOnly: false, // * Common setting\n      silent: false,\n\n      // Data\n      defaultDateFormat: 'YYYY-MM-DD',\n      defaultTimeFormat: 'hh:mm:ss A',\n      defaultDateTimeFormat: 'YYYY-MM-DD hh:mm:ss A',\n      storedValueDateFormat: 'YYYY-MM-DD',\n      storedValueTimeFormat: 'hh:mm:ss A',\n      storedValueDateTimeFormat: '{DATE}T{TIME}',\n      tokensPatternRegex: '{/[^{}]+}', // Forms style tokens, or %\\([^\\(\\)]+\\) for Workflow style tokens\n\n      // Globalization\n      locale: 'en-US', // * Common setting\n      language: 'en', // * Common setting\n      setDisplayFormatByLocale: false, // * Common setting\n      setDisplayFormatByLocaleSeconds: true,\n      defaultDateLocale: 'en-US',\n      defaultDateLanguage: 'en',\n      storedValueLanguage: 'en',\n      storedValueLocale: 'en-US',\n\n      // Validation\n      errorsPriorityOrder: [\n        { errorType: 'required', mappedErrorType: 'required' },\n        { errorType: 'invalidformat', mappedErrorType: 'invalidformat' },\n        { errorType: 'min', mappedErrorType: 'range' },\n        { errorType: 'max', mappedErrorType: 'range' },\n        { errorType: 'range', mappedErrorType: 'range' },\n      ],\n    };\n  }\n\n  public getDefaultStrings(silent?: boolean) {\n    if (!silent) {\n      return {\n        dateTimeCapturedInBackend: 'Date/Time is captured on submission',\n        dateCapturedInBackend: 'Date is captured on submission',\n        timeCapturedInBackend: 'Time is captured on submission',\n        currentDate: 'Current Date',\n        selectDate: 'Select date',\n        currentTime: 'Current Time',\n        selectTime: 'Select time',\n      };\n    } else {\n      return {\n        dateTimeCapturedInBackend: '',\n        dateCapturedInBackend: '',\n        timeCapturedInBackend: '',\n        currentDate: '',\n        selectDate: '',\n        currentTime: '',\n        selectTime: '',\n      };\n    }\n  }\n\n  private fixLocaleCase = function (locale: string, extractLanguageOnly: boolean = false): string {\n    locale = locale.toLowerCase();\n\n    const parts = locale.split('-');\n    if (extractLanguageOnly) {\n      return parts.length == 2 && parts[1] != 'hans' && parts[1] != 'hant'\n        ? parts[0]\n        : parts.length == 3\n          ? parts[0] + '-' + parts[1].substring(0, 1).toUpperCase() + parts[1].substring(1)\n          : locale;\n    } else {\n      return parts.length == 1\n        ? locale\n        : parts.length == 2 && parts[1] != 'hans' && parts[1] != 'hant'\n          ? parts[0] + '-' + parts[1].toUpperCase()\n          : parts.length == 3\n            ? parts[0] +\n              '-' +\n              parts[1].substring(0, 1).toUpperCase() +\n              parts[1].substring(1) +\n              '-' +\n              parts[2].toUpperCase()\n            : parts[0] + '-' + parts[1].substring(0, 1).toUpperCase() + parts[1].substring(1);\n    }\n  };\n\n  public getFormatByLocale(locale: string | undefined, formatType: FormatType, withSeconds: boolean = false): string {\n    if (!locale) {\n      locale = 'en-US';\n    }\n    locale = this.fixLocaleCase(locale);\n    const localizedFormats = uniLocalizedFormats[locale] ? uniLocalizedFormats[locale] : uniLocalizedFormats['en-US'];\n    switch (formatType) {\n      case FormatType.DATE_FORMAT:\n        return localizedFormats['DateFormat'];\n      case FormatType.LONG_DATE_FORMAT:\n        return localizedFormats['LongDateFormat'];\n      case FormatType.TIME_FORMAT:\n        return withSeconds ? localizedFormats['TimeFormatWithSeconds'] : localizedFormats['TimeFormat'];\n      case FormatType.DATETIME_FORMAT:\n        return withSeconds\n          ? localizedFormats['DateFormat'] + ' ' + localizedFormats['TimeFormatWithSeconds']\n          : localizedFormats['DateFormat'] + ' ' + localizedFormats['TimeFormat'];\n    }\n  }\n\n  public applyLocaleCorrections(language: string, locale: any) {\n    locale.amPM = locale.amPM ? locale.amPM : FlatpickrLocales?.en?.amPM;\n    // Add other corrections if any\n    return locale;\n  }\n\n  public getFlatpickrLocale(localeString: string): any {\n    const language = this.fixLocaleCase(localeString, true);\n    switch (language) {\n      case 'ar':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.ar);\n      case 'es':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.es);\n      case 'fr':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.fr);\n      case 'pt':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.pt);\n      case 'zh-hans':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.zhHans);\n      case 'zh-hant':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.zhHant);\n      case 'en':\n      default:\n        return FlatpickrLocales.en;\n    }\n  }\n\n  public formatDateTimeForStoredValue(\n    dateTime: Date | undefined | null,\n    dateStr: string | undefined | null,\n    timeStr: string | undefined | null,\n    config: UniComponentConfig,\n    combinedDateTime: boolean | undefined\n  ): string | undefined | null {\n    const storedValueDateFormat = config.storedValueDateFormat\n      ? config.storedValueDateFormat\n      : this.getFormatByLocale(config.storedValueLocale, FormatType.DATE_FORMAT, true);\n    const storedValueTimeFormat = config.storedValueTimeFormat\n      ? config.storedValueTimeFormat\n      : this.getFormatByLocale(config.storedValueLocale, FormatType.TIME_FORMAT, true);\n    const flatpickrLocale: any = config.storedValueLanguage\n      ? this.getFlatpickrLocale(config.storedValueLanguage)\n      : undefined;\n    if (this.isToken(dateStr) || this.isToken(timeStr)) {\n      if (!this.isToken(dateStr) && dateTime) {\n        dateStr = this.flatpickrFormatDate(\n          dateTime,\n          this.fromDisplayDateTimeFormatToFlatpickrFormat(storedValueDateFormat),\n          flatpickrLocale\n        );\n      }\n      if (!this.isToken(timeStr) && !combinedDateTime && dateTime) {\n        timeStr = this.flatpickrFormatDate(\n          dateTime,\n          this.fromDisplayDateTimeFormatToFlatpickrFormat(storedValueTimeFormat),\n          flatpickrLocale\n        );\n      }\n\n      if (combinedDateTime && !timeStr) {\n        return dateStr;\n      } else {\n        return config.storedValueDateTimeFormat\n          ? config.storedValueDateTimeFormat\n              .replace('{DATE}', dateStr ? dateStr : '')\n              .replace('{TIME}', timeStr ? timeStr : '')\n          : dateStr + ' ' + timeStr; // default to \"{DATE} {TIME}\" for backend if tokens are present\n      }\n    } else {\n      if (!dateTime) {\n        return '';\n      }\n      const storedValueFormat = config.storedValueDateTimeFormat\n        ? config.storedValueDateTimeFormat\n            .replace('{DATE}', storedValueDateFormat)\n            .replace('{TIME}', storedValueTimeFormat)\n        : this.getFormatByLocale(config.storedValueLocale, FormatType.DATETIME_FORMAT, true);\n      return this.flatpickrFormatDate(\n        dateTime,\n        this.fromDisplayDateTimeFormatToFlatpickrFormat(storedValueFormat),\n        flatpickrLocale\n      );\n    }\n  }\n\n  public setTokensPatternRegex(newPatternRegex: string) {\n    this.TokensPatternRegex = newPatternRegex;\n    (window as { [key: string]: any })['TokenPatternRegex'] = newPatternRegex;\n  }\n\n  public isToken(value: string | null | undefined) {\n    const tokenRegex: RegExp = new RegExp(this.TokensPatternRegex, 'g');\n    return value && tokenRegex.test(value);\n  }\n\n  public removeTokens(value: string) {\n    const tokenRegex: RegExp = new RegExp(this.TokensPatternRegex, 'g');\n    return value.replace(tokenRegex, '');\n  }\n\n  public hasTimeFormat(format: string) {\n    return format.indexOf('G') == -1 && format.indexOf('H') == -1 && format.indexOf('h') == -1;\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Plugin } from 'flatpickr/dist/types/options';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { UniDateTimeService } from './uni-date-time.service';\n\nvar dateTimeService = new UniDateTimeService();\n\n/** Marks whether an onClose commit was just flatpickr's untouched default rather than a real user selection. */\nexport interface InstanceWithLfFlag extends Instance {\n  lfIsUntouchedEmptyCommit?: boolean;\n}\n\nexport function LFTimePickerPlugin(): Plugin {\n  return function (fp: Instance) {\n    const flatpickerKey: keyof typeof window = 'flatpickr' as keyof typeof window;\n    fp.config.parseDate = function (date: string, format: string, locale?: any) {\n      if (!dateTimeService.isToken(date)) {\n        const dateFormat = dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(format, true);\n        try {\n          /*\n\t\t\t\t\tif (isCustomFormat(fp.config.dateFormat)) {\n\t\t\t\t\t\tdateFormat = format === \"H:mm:ss\" ? \"H:i:S\" : \"H:i\";\n          }\n          */\n          locale = locale ? locale : fp.config.locale;\n          return window[flatpickerKey].parseDate(date, dateFormat, false, locale);\n        } catch (e) {\n          return new Date();\n        }\n      } else {\n        return new Date();\n      }\n    };\n    fp.config.formatDate = function (date: Date, format: string, locale?: any) {\n      if (!dateTimeService.isToken(fp.input?.value)) {\n        try {\n          locale = locale ? locale : fp.config.locale;\n          // if (isCustomFormat(fp.config.dateFormat)) {\n          const time = window[flatpickerKey].formatDate(\n            date,\n            dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(format, true),\n            locale\n          );\n          return time.replace(/^0?/, ''); // Not sure why? Revise\n          // }\n          // else {\n          //\treturn window[\"flatpickr\"].formatDate(date, format, locale);\n          //}\n        } catch (e) {\n          return fp.input.value;\n        }\n      } else {\n        return fp.input.value;\n      }\n    };\n\n    // force onChange event listener on time field when value is programtically changed with flatpickr\n    // This may be specific to forms-layout // Revise\n    fp.config.onValueUpdate.push(function () {\n      if (!fp.calendarContainer.classList.contains('open')) {\n        const parsedDate = fp.parseDate(parseTimeFromPicker(fp), fp.config.dateFormat); // Revise\n        fp.input.value = window[flatpickerKey].formatDate(parsedDate, fp.config.dateFormat, fp.config.locale);\n        const timeField = fp.input?.parentElement?.parentElement;\n        if (timeField) {\n          const event = new Event('change');\n          timeField.dispatchEvent(event);\n        }\n      }\n    });\n\n    // flatpickr's spinners always show a default value even untouched, so track whether the user\n    // actually changed one - lets onClose (in uni-date-time.component.ts) tell a real selection\n    // from an untouched default.\n    let wasEmptyOnOpen = false;\n    let touchedSinceOpen = false;\n    let closedViaOutsideClick = false;\n    // onValueUpdate (not onChange, which is debounced 300ms and can\n    // lag behind a synchronous close) fires synchronously on every real spinner edit.\n    fp.config.onValueUpdate.push(function () {\n      touchedSinceOpen = true;\n    });\n\n    function handleMouseDown(e: any) {\n      if (e.target !== fp.input && !fp.timeContainer?.contains(e.target)) {\n        let value = fp.input.value;\n        if (fp.timeContainer?.contains(document.activeElement)) {\n          value = parseTimeFromPicker(fp);\n        }\n        closedViaOutsideClick = true;\n        fp.setDate(value);\n        fp.close();\n      }\n    }\n\n    function handleKeyDown(e: any) {\n      if (e.key === 'Tab' && document.activeElement === fp.input) {\n        fp.setDate(fp.input.value);\n        fp.close();\n      }\n    }\n\n    // clickOpens (below) turns off flatpickr's built-in \"focus opens the calendar\" binding, so\n    // Tab into the input just moves on to the next field instead of opening the picker.\n    function handleInputClickWhenClosed() {\n      if (!fp.isOpen) {\n        fp.open();\n      }\n    }\n\n    function handleEnterOpensWhenClosed(e: KeyboardEvent) {\n      if (e.key === 'Enter' && !fp.isOpen && document.activeElement === fp.input) {\n        e.preventDefault();\n        e.stopPropagation();\n        fp.open();\n      }\n    }\n\n    function getRidOffNumTooltip() {\n      fp.minuteElement?.setAttribute('title', '');\n      fp.secondElement?.setAttribute('title', '');\n    }\n\n    return {\n      clickOpens: false,\n      onReady() {\n        fp.input.addEventListener('click', handleInputClickWhenClosed);\n        document.addEventListener('keydown', handleEnterOpensWhenClosed, { capture: true });\n      },\n      onOpen() {\n        wasEmptyOnOpen = !fp.input.value;\n        touchedSinceOpen = false;\n        closedViaOutsideClick = false;\n        getRidOffNumTooltip();\n        document.addEventListener('mousedown', handleMouseDown, { capture: true });\n        document.addEventListener('keydown', handleKeyDown, { capture: true });\n      },\n      onClose() {\n        document.removeEventListener('mousedown', handleMouseDown, { capture: true });\n        document.removeEventListener('keydown', handleKeyDown, { capture: true });\n        // closedViaOutsideClick is excluded here because flatpickr's own updateTime() hardcodes \"now\"\n        // as the default whenever selectedDates is empty and re-derives it from the spinners on its\n        // own outside-click handling regardless of what we do here, so there's no reliable way to\n        // keep that path blank - committing what's shown at least keeps the displayed value and the\n        // model in sync. Tab/Enter don't hit that same flatpickr code path, so they can stay blank.\n        const isUntouchedEmptyCommit = wasEmptyOnOpen && !touchedSinceOpen && !closedViaOutsideClick;\n        if (isUntouchedEmptyCommit) {\n          // flatpickr's own commit handling (e.g. Enter's updateTime()) already wrote the spinners'\n          // default into the visible input before onClose fires - clear it back out, since\n          // uni-date-time.component.ts's onClose only skips the Angular-level value, not this text.\n          fp.input.value = '';\n        }\n        (fp as InstanceWithLfFlag).lfIsUntouchedEmptyCommit = isUntouchedEmptyCommit;\n      },\n      onDestroy() {\n        fp.input.removeEventListener('click', handleInputClickWhenClosed);\n        document.removeEventListener('keydown', handleEnterOpensWhenClosed, { capture: true });\n        // onClose normally removes these, but destroy() can happen while the picker is still open\n        // (e.g. a multi-value row removed mid-edit), which would otherwise leave a document-level\n        // listener referencing this now-destroyed fp instance.\n        document.removeEventListener('mousedown', handleMouseDown, { capture: true });\n        document.removeEventListener('keydown', handleKeyDown, { capture: true });\n      },\n    };\n  };\n}\n\nfunction parseTimeFromPicker(fp: Instance): string {\n  let value;\n  if (fp.amPM && fp.amPM.innerText) {\n    value = formatTime12HourTo24Hour(fp);\n  } else {\n    value = fp.hourElement?.value + ':' + fp.minuteElement?.value;\n    if (fp.config.enableSeconds) {\n      value += ':' + fp.secondElement?.value;\n    }\n  }\n  return value;\n}\n\nfunction formatTime12HourTo24Hour(fp: Instance): string {\n  const localeSet = fp.config.locale as any;\n  const localizedAM = localeSet.amPM ? (localeSet.amPM[0] ? localeSet.amPM[0] : 'AM') : '';\n  const localizedPM = localeSet.amPM ? (localeSet.amPM[1] ? localeSet.amPM[1] : 'PM') : '';\n  let hour: number;\n  if (fp.hourElement?.value) {\n    hour = parseInt(fp.hourElement.value, 10);\n  } else {\n    hour = 0;\n  }\n\n  if (fp.amPM?.innerText === localizedPM && hour !== 12) {\n    hour += 12;\n  } else if (fp.amPM?.innerText === localizedAM && hour === 12) {\n    hour = 0;\n  }\n  let value: string = hour + ':' + fp.minuteElement?.value;\n  if (fp.config.enableSeconds) {\n    value += ':' + fp.secondElement?.value;\n  }\n  return value;\n}\n\n/*\nfunction isCustomFormat(dateFormat: string) {\n\treturn dateFormat === \"H:mm:ss\" || dateFormat === \"H:mm\";\n}\n*/\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Plugin } from 'flatpickr/dist/types/options';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { UniDateTimeService } from './uni-date-time.service';\nimport flatpickr from 'flatpickr';\n\nvar dateTimeService = new UniDateTimeService();\n\nexport function LFDatePickerPlugin(): Plugin {\n  return function (fp: Instance) {\n    const flatpickerKey: keyof typeof window = 'flatpickr' as keyof typeof window;\n    fp.config.parseDate = function (date: string, format: string, locale?: any) {\n      if (!dateTimeService.isToken(date)) {\n        const dateFormat = dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(format, true);\n        try {\n          locale = locale ? locale : fp.config.locale;\n          const timeless = dateTimeService.hasTimeFormat(dateFormat);\n          // Because parsing sometimes applied wrong locale, a dummy flatpickr instance\n          // should be created to enforce the correct locale\n          const flatpickrInst = flatpickr(document.createElement('input'), { locale });\n          return flatpickrInst.parseDate(date, dateFormat, timeless) ?? new Date();\n        } catch (e) {\n          return new Date();\n        }\n      } else {\n        return new Date();\n      }\n    };\n    fp.config.formatDate = function (date: Date, format: string, locale?: any) {\n      if (!dateTimeService.isToken(fp.input?.value)) {\n        try {\n          locale = locale ? locale : fp.config.locale;\n          return window[flatpickerKey].formatDate(date, format, locale);\n        } catch (e) {\n          return fp.input.value;\n        }\n      } else {\n        return fp.input.value;\n      }\n    };\n    function dateHandleMouseDown(event: any) {\n      if (event.target !== fp.input && !fp.calendarContainer.contains(event.target)) {\n        const value = fp.input.value;\n        fp.setDate(value);\n        fp.close();\n      } else if (dateTimeService.isToken(fp.input?.value) && event.target.dateObj) {\n        //if token, replace input with selected date value\n        fp.input.value = window[flatpickerKey].formatDate(event.target.dateObj, fp.config.dateFormat, fp.config.locale);\n      }\n    }\n\n    // clickOpens (below) turns off flatpickr's built-in \"focus opens the calendar\" binding, so\n    // Tab into the input just moves on to the next field instead of opening the picker.\n    function handleInputClickWhenClosed() {\n      if (!fp.isOpen) {\n        fp.open();\n      }\n    }\n\n    function handleEnterOpensWhenClosed(e: KeyboardEvent) {\n      if (e.key === 'Enter' && !fp.isOpen && document.activeElement === fp.input) {\n        e.preventDefault();\n        e.stopPropagation();\n        fp.open();\n      }\n    }\n\n    return {\n      clickOpens: false,\n      onReady() {\n        fp.input.addEventListener('click', handleInputClickWhenClosed);\n        document.addEventListener('keydown', handleEnterOpensWhenClosed, { capture: true });\n      },\n      onOpen() {\n        document.addEventListener('mousedown', dateHandleMouseDown, { capture: true });\n      },\n      onClose() {\n        document.removeEventListener('mousedown', dateHandleMouseDown, { capture: true });\n      },\n      onDestroy() {\n        fp.input.removeEventListener('click', handleInputClickWhenClosed);\n        document.removeEventListener('keydown', handleEnterOpensWhenClosed, { capture: true });\n        // onClose normally removes this, but destroy() can happen while the picker is still open\n        // (e.g. a multi-value row removed mid-edit), which would otherwise leave a document-level\n        // listener referencing this now-destroyed fp instance.\n        document.removeEventListener('mousedown', dateHandleMouseDown, { capture: true });\n      },\n    };\n  };\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\n// Core and essentials\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  OnInit,\n  AfterViewInit,\n  HostBinding,\n  Input,\n  AfterContentInit,\n  OnDestroy,\n  EventEmitter,\n  Output,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport forEach from 'lodash/forEach';\nimport isNil from 'lodash/isNil';\nimport cloneDeep from 'lodash/cloneDeep';\n\n// Component dependencies\nimport {\n  StateData,\n  UniState,\n  StateDataDateTime,\n  StateDataTime,\n  UniControlType,\n  UniComponentSettings,\n  UniComponentConfig,\n  FormChangeEvent,\n  FormChangeSource,\n  FormatType,\n} from './uni-date-time.common';\nimport { UniDateTimeService } from './uni-date-time.service';\n\n// Flaticker\nimport flatpickr from 'flatpickr';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { LFTimePickerPlugin } from './plugin-lfTimePicker';\nimport { LFDatePickerPlugin } from './plugin-lfDatePicker';\nimport { InstanceWithLfFlag } from './plugin-lfTimePicker';\n\n@Component({\n  selector: 'lf-uni-date-time',\n  templateUrl: './uni-date-time.component.html',\n  styleUrls: ['./uni-date-time.component.less'],\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule],\n})\nexport class UniDateTimeComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n  dateTimeService = inject(UniDateTimeService);\n  private ref = inject(ChangeDetectorRef);\n  private readonly emptyFormGroup = new FormGroup({});\n\n  @HostBinding('class.required') isRequired = false;\n  @HostBinding('class.readonly') isReadonly = false;\n  @HostBinding('class.disabled') isDisabled = false;\n\n  @Input() config!: UniComponentConfig;\n  @Input() settings!: UniComponentSettings;\n  @Input() customStrings?: {\n    // Revise\n    dateTimeCapturedInBackend?: string; // if useBackendDateTimeForCurrentDateTime=true, useCurrentDate: true, readOnly: true, showTime: true\n    dateCapturedInBackend?: string; // if useBackendDateTimeForCurrentDateTime=true, useCurrentDate: true, readOnly: true\n    timeCapturedInBackend?: string; // if useBackendDateTimeForCurrentDateTime=true, useCurrentTime: true, readOnly: true, showTimeOnly: true\n    currentDate?: string; // if useCurrentDate: true, readOnly: true, isDisplayOnly: true\n    selectDate?: string; // Date Icon tool tip\n    currentTime?: string; // if useCurrentTime: true, readOnly: true, isDisplayOnly: true\n    selectTime?: string; // Time Icon tool tip\n  };\n\n  // Copied from base\n  @Input() componentId?: string;\n  @Input() abstractControl?: AbstractControl;\n  @Input() dateControlName?: string;\n  @Input() timeControlName?: string;\n  @Input() dateTimeControlName?: string;\n\n  // Events // Revise\n  @Output() valueChangedEventHandler: EventEmitter<{\n    newValue: StateData;\n    newState: UniState;\n    controlType: UniControlType;\n    source: FormChangeSource;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n  @Output() blurEventHandler: EventEmitter<{\n    state: UniState;\n    source: FormChangeSource;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n  @Output() dateIconClickEventHandler: EventEmitter<{\n    state: UniState;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n  @Output() timeIconClickEventHandler: EventEmitter<{\n    state: UniState;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n\n  // Revise\n  state: UniState = {\n    data: {\n      dateStr: null,\n      timeStr: null,\n      dateTimeObj: null,\n    },\n    readonly: false,\n    disabled: false,\n    settings: {},\n  };\n\n  errorMessage = '';\n  customErrorMessages: { [errorType: string]: string } = {};\n\n  strings?: {\n    dateTimeCapturedInBackend?: string;\n    dateCapturedInBackend?: string;\n    timeCapturedInBackend?: string;\n    currentDate?: string;\n    selectDate?: string;\n    currentTime?: string;\n    selectTime?: string;\n  };\n\n  showLoadingSpinner = false;\n\n  date?: Instance;\n  time?: Instance;\n  defaultDateFormat: string = 'YYYY-MM-DD';\n  defaultTimeFormat: string = 'hh:mm:ss A';\n  defaultDateTimeFormat: string = 'YYYY-MM-DD hh:mm:ss A';\n\n  dateControl?: FormControl<string | null>;\n  timeControl?: FormControl<string | null>;\n  dateTimeControl?: FormControl<string | null>;\n  controls: {\n    date?: FormControl<string | null>;\n    time?: FormControl<string | null>;\n    dateTime?: FormControl<string | null>;\n  } = {};\n  errorMessages?: { date?: string; time?: string; dateTime?: string }; // Revise\n  showDateTimeErrorMessage = false; // Revise\n  prevSettings!: UniComponentSettings;\n  useBackendDateTimeForCurrentDateTime = false;\n  minDateTime?: Date;\n  minDateTimeStr?: string;\n  minTime?: string; // HH:mm\n  maxDateTime?: Date;\n  maxDateTimeStr?: string;\n  maxTime?: string; // HH:mm\n\n  @ViewChild('dateDiv') dateDiv!: ElementRef;\n  @ViewChild('timedateDiv') timedateDiv!: ElementRef;\n  @ViewChild('dateTimeInput') dateTimeInput?: ElementRef;\n  supportedLanguage = 'en';\n\n  get formGroup(): FormGroup {\n    return this.abstractControl instanceof FormGroup ? this.abstractControl : this.emptyFormGroup;\n  }\n\n  ngOnInit() {\n    this.populateConfig();\n    this.populateStrings();\n    this.populateSettings();\n    this.state.settings = this.settings;\n\n    if (!this.config.isDisplayOnly) {\n      this.customErrorMessages = this.settings.customErrorMessages; // revise\n    } else {\n      const dateTimeData = this.dateTimeService.createDataForDateTime(\n        null,\n        this.settings,\n        this.config,\n        null,\n        this.defaultDateFormat,\n        this.defaultTimeFormat\n      );\n      const dateStr =\n        dateTimeData.dateStr !== ''\n          ? dateTimeData.dateStr\n          : this.settings.defaultDate\n            ? this.settings.defaultDate\n            : null;\n      const timeStr = dateTimeData.timeStr !== '' ? dateTimeData.timeStr : this.settings.defaultTimeOfDate;\n      this.dateControl?.setValue(dateStr ?? null);\n      this.timeControl?.setValue(timeStr ?? null);\n      const formattedDateTime = this.dateTimeService.formatDateTimeForStoredValue(\n        dateTimeData.dateTimeObj,\n        dateStr,\n        timeStr,\n        this.config,\n        this.settings.combinedDateTime\n      );\n      this.dateTimeControl?.setValue(formattedDateTime ? formattedDateTime : null);\n    }\n  }\n\n  ngAfterViewInit() {\n    if (!this.config.isDisplayOnly && !this.state.readonly) {\n      this.localize(); // Also sets this.supportedLanguage\n\n      //-- Setting up date\n      let defaultDateToSet = '';\n      if (this.settings.useCurrentDate) {\n        defaultDateToSet = 'today';\n      } else if (this.settings.defaultDate) {\n        // Parse defaultDateformat using defaultDate language\n        defaultDateToSet = this.settings.defaultDate;\n        const parsedDefaultDate = this.dateTimeService.parse({\n          dateStr: defaultDateToSet,\n          dateFormat: this.config.defaultDateFormat,\n          language: this.config.defaultDateLanguage,\n        });\n        // Format using current language\n        defaultDateToSet = parsedDefaultDate\n          ? this.dateTimeService.format({\n              dateTimeObj: parsedDefaultDate,\n              dateFormat: this.settings.dateFormat,\n              language: this.config.language,\n            })\n          : defaultDateToSet;\n      }\n      const dateTimeData = this.state.data as StateDataDateTime;\n\n      //-- Setting up time\n      let defaultTimeToSet = '';\n      this.prevSettings.showTime = this.settings.showTime;\n      this.prevSettings.timeFormat = this.settings.timeFormat;\n\n      if (this.settings.useCurrentTime) {\n        if (!this.config.isDisplayOnly) {\n          // format using current language\n          defaultTimeToSet = this.dateTimeService.format({\n            dateTimeObj: new Date(),\n            timeFormat: this.settings.timeFormat,\n            language: this.config.language,\n          });\n        }\n      } else if (this.settings.defaultTimeOfDate) {\n        // format using current language\n        defaultTimeToSet = this.dateTimeService.format({\n          // Parse using defaultDate language\n          dateTimeObj: this.dateTimeService.parse({\n            timeStr: this.settings.defaultTimeOfDate,\n            timeFormat: this.defaultTimeFormat,\n            language: this.config.defaultDateLanguage,\n          }),\n          timeFormat: this.settings.timeFormat,\n          language: this.config.language,\n        });\n      }\n      const timeData = this.state.data as StateDataTime;\n      const defaultDate = isNil(dateTimeData?.dateStr) ? defaultDateToSet : dateTimeData.dateStr;\n      const defaultTime = isNil(timeData?.timeStr) ? defaultTimeToSet : timeData?.timeStr;\n      const timeFormatContainsSecond: boolean =\n        !!this.settings.timeFormat && this.settings.timeFormat.indexOf('s') > -1;\n      const hasAMPM: boolean = !!this.settings.timeFormat && this.settings.timeFormat.indexOf('A') > -1;\n      //-- Setting up flatpickr elements\n      if (!this.settings.showTimeOnly && this.dateDiv.nativeElement) {\n        this.date = flatpickr(this.dateDiv.nativeElement, {\n          locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n\n          enableTime: this.settings.combinedDateTime, // if combined\n          enableSeconds: this.settings.combinedDateTime && timeFormatContainsSecond,\n          time_24hr: this.settings.combinedDateTime && !hasAMPM,\n\n          allowInput: true,\n          allowInvalidPreload: true,\n          dateFormat: this.dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(\n            this.settings.dateFormat + (this.settings.combinedDateTime ? ' ' + this.settings.timeFormat : ''),\n            true\n          ),\n          defaultDate:\n            defaultDate +\n            (this.settings.combinedDateTime && defaultDate != 'today' && defaultTime ? ' ' + defaultTime : ''),\n          plugins: [LFDatePickerPlugin()],\n          onClose: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            setTimeout(() => {\n              this.onDateTimeChange(selectedDates[0], true, FormChangeEvent.DateClose);\n              if (this.settings.combinedDateTime) {\n                this.onDateTimeChange(selectedDates[0], true, FormChangeEvent.TimeClose);\n              }\n              this.ref.markForCheck();\n            }, 0);\n          },\n          onOpen: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.onCalendarOpen(instance);\n          },\n          onReady: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.addDaysContainerKeyboardHandler(selectedDates, instance);\n          },\n          wrap: true,\n          minDate: this.minDateTime,\n          maxDate: this.maxDateTime,\n        });\n      }\n\n      if (this.settings.showTime && !this.settings.combinedDateTime && this.timedateDiv.nativeElement) {\n        const flatpickrConfig = {\n          locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n          allowInput: true,\n          enableTime: true,\n          enableSeconds: timeFormatContainsSecond,\n          noCalendar: true,\n          time_24hr: !hasAMPM,\n          defaultDate: defaultTime,\n          plugins: [LFTimePickerPlugin()],\n          onClose: (selectedDates: Date[], dateStr: string, instance: InstanceWithLfFlag) => {\n            // lfIsUntouchedEmptyCommit (set by LFTimePickerPlugin) is true when the field was blank\n            // when opened and the user never actually changed hour/minute/second/AM-PM - in that case\n            // selectedDates[0] is just flatpickr's always-present default (e.g. 12:00 AM), not a real\n            // selection, so treat this commit as empty rather than filling in that default.\n            const isUntouchedEmptyCommit = instance.lfIsUntouchedEmptyCommit;\n            this.onDateTimeChange(isUntouchedEmptyCommit ? null : selectedDates[0], false, FormChangeEvent.TimeClose);\n          },\n          onOpen: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.onCalendarOpen(instance);\n          },\n          dateFormat: this.dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(this.settings.timeFormat ?? ''),\n          wrap: true,\n          minTime: this.minTime,\n          maxTime: this.maxTime,\n        };\n\n        this.time = flatpickr(this.timedateDiv.nativeElement, flatpickrConfig);\n      }\n\n      // Update stored value\n      setTimeout(() => {\n        if (this.date) {\n          this.dateControl?.setValue(this.date.input.value);\n        }\n        if (this.time) {\n          this.timeControl?.setValue(this.time.input.value);\n        }\n        if (!this.settings.showTimeOnly) {\n          this.processDateTimeValues(this.date?.input.value, true);\n        } else {\n          this.processDateTimeValues(this.time?.input.value, false);\n        }\n        this.state.readonly = this.settings.readOnly; // Revise\n        this.isReadonly = this.settings.readOnly ? this.settings.readOnly : this.isReadonly;\n        this.isRequired = this.settings.required ? this.settings.required : this.isRequired;\n        this.ref.markForCheck();\n      }, 0);\n    }\n  }\n\n  private onCalendarOpen(instance: Instance): void {\n    setTimeout(() => {\n      if (instance.daysContainer) {\n        instance.monthElements[0].focus();\n      } else if (instance.timeContainer) {\n        instance.hourElement?.focus();\n      } else {\n        instance.input.focus();\n      }\n    }, 0);\n  }\n\n  private addDaysContainerKeyboardHandler(selectedDates: Date[], instance: Instance) {\n    instance.calendarContainer?.addEventListener('keydown', function (event) {\n      var currentDate = selectedDates[0] || instance.selectedDates[0] || new Date();\n      if (event.target === instance.monthElements[0]) {\n        monthsKeyDownHandler(currentDate, instance, event);\n      } else if (event.target === instance.daysContainer) {\n        daysContainerKeyDownHandler(currentDate, instance, event);\n      } else if (instance.hourElement && event.target === instance.hourElement) {\n        handleTabKeyPress(event, instance.daysContainer, instance.minuteElement);\n      } else if (instance.minuteElement && event.target === instance.minuteElement) {\n        handleTabKeyPress(event, instance.hourElement, instance.secondElement);\n      } else if (instance.secondElement && event.target === instance.secondElement) {\n        handleTabKeyPress(event, instance.minuteElement, instance.amPM);\n      } else if (instance.amPM && event.target === instance.amPM) {\n        handleTabKeyPress(event, instance.secondElement, instance.input);\n        if (event.key === 'Tab') {\n          instance.close();\n        }\n      }\n    });\n\n    const closePickerWithInputFocus = function (instance: Instance) {\n      instance.input.focus();\n      instance.close();\n    };\n    const addDaysToSelect = function (instance: Instance, currentDate: Date, daysToAdd: number) {\n      currentDate.setDate(currentDate.getDate() + daysToAdd);\n      instance.setDate(currentDate);\n      instance.daysContainer?.focus();\n    };\n    const addMonthsToSelect = function (instance: Instance, currentDate: Date, monthsToAdd: number) {\n      currentDate.setMonth(currentDate.getMonth() + monthsToAdd);\n      instance.setDate(currentDate);\n      instance.monthElements[0]?.focus();\n    };\n    const daysContainerKeyDownHandler = function (currentDate: Date, instance: Instance, daysKeyEvent: any) {\n      if (daysKeyEvent.key === 'Tab') {\n        daysKeyEvent.preventDefault();\n        daysKeyEvent.stopPropagation();\n        if (daysKeyEvent.shiftKey) {\n          instance.monthElements[0]?.focus();\n        } else {\n          if (instance.hourElement) {\n            instance.hourElement.focus();\n          } else {\n            closePickerWithInputFocus(instance);\n          }\n        }\n      } else if (daysKeyEvent.key === 'ArrowLeft') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, -1);\n      } else if (daysKeyEvent.key === 'ArrowRight') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, 1);\n      } else if (daysKeyEvent.key === 'ArrowDown') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, 7);\n      } else if (daysKeyEvent.key === 'ArrowUp') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, -7);\n      } else if (daysKeyEvent.key === 'Shift') {\n        daysKeyEvent.preventDefault();\n        instance.daysContainer?.focus();\n      } else if (daysKeyEvent.key === 'Enter') {\n        daysKeyEvent.preventDefault();\n        closePickerWithInputFocus(instance);\n      }\n    };\n\n    const monthsKeyDownHandler = function (currentDate: Date, instance: Instance, monthsKeyEvent: any) {\n      if (monthsKeyEvent.key === 'Tab') {\n        monthsKeyEvent.preventDefault();\n        monthsKeyEvent.stopPropagation();\n        if (monthsKeyEvent.shiftKey) {\n          closePickerWithInputFocus(instance);\n        } else {\n          setTimeout(() => instance.daysContainer?.focus());\n        }\n      } else if (monthsKeyEvent.key === 'ArrowDown' || monthsKeyEvent.key === 'ArrowRight') {\n        monthsKeyEvent.preventDefault();\n        addMonthsToSelect(instance, currentDate, 1);\n      } else if (monthsKeyEvent.key === 'ArrowUp' || monthsKeyEvent.key === 'ArrowLeft') {\n        monthsKeyEvent.preventDefault();\n        addMonthsToSelect(instance, currentDate, -1);\n      } else if (monthsKeyEvent.key === 'Enter') {\n        monthsKeyEvent.preventDefault();\n        closePickerWithInputFocus(instance);\n      }\n    };\n\n    const handleTabKeyPress = function (\n      event: KeyboardEvent,\n      previousElement?: HTMLElement,\n      nextElement?: HTMLElement\n    ) {\n      if (event.key === 'Tab') {\n        event.preventDefault();\n        event.stopPropagation();\n        if (event.shiftKey) {\n          previousElement?.focus();\n        } else {\n          nextElement?.focus();\n        }\n      }\n    };\n  }\n\n  ngAfterContentInit() {\n    if (!this.config.isDisplayOnly) {\n      this.assignMinMaxForPicker(this.state); // Revise\n    }\n  }\n\n  ngOnDestroy() {\n    // Without this, a destroyed instance's flatpickr popup/listeners and deferred callbacks\n    // (e.g. onBlurWithKey's setTimeout) can keep running and writing into whatever now occupies\n    // this row (multi-value fields recreate rows via trackBy on every commit).\n    // Angular's @for can also physically reuse this input's DOM node for the next view it\n    // creates, so clear its raw value too - otherwise the new instance initializes flatpickr\n    // on top of this leftover text instead of a blank field.\n    if (this.date) {\n      this.date.input.value = '';\n      this.date.destroy();\n    }\n    if (this.time) {\n      this.time.input.value = '';\n      this.time.destroy();\n    }\n  }\n\n  private populateSettings() {\n    if (!this.settings) {\n      // Default Settings\n      this.settings = this.dateTimeService.getDefaultSettings();\n      this.prevSettings = this.settings;\n    } else {\n      if (!this.prevSettings) {\n        this.prevSettings = this.settings; // initially prevSetting = settings from input\n      }\n      this.settings = { ...this.dateTimeService.getDefaultSettings(), ...this.settings };\n    }\n\n    if (!this.componentId) {\n      this.componentId = this.dateTimeService.generateGUID(); // Revise\n    }\n\n    if (!this.settings.fieldId) {\n      this.settings.fieldId = this.config.fieldIdPrefix + this.componentId;\n    }\n\n    if (this.settings.abstractControl instanceof AbstractControl && !this.abstractControl) {\n      this.abstractControl = this.settings.abstractControl;\n      if (this.settings.dateControlName) {\n        this.dateControlName = this.settings.dateControlName;\n      }\n      if (this.settings.timeControlName) {\n        this.timeControlName = this.settings.timeControlName;\n      }\n      if (this.settings.dateTimeControlName) {\n        this.dateTimeControlName = this.settings.dateTimeControlName;\n      }\n    }\n\n    this.assignSubAbstractControl();\n    if (this.config.isDisplayOnly) {\n      this.dateControl?.disable();\n      this.timeControl?.disable();\n    }\n\n    if (this.config.setDisplayFormatByLocale == true) {\n      this.localizeFormat();\n    }\n\n    // this.state.readonly = this.settings.readOnly; // Revise\n\n    this.autoCorrectSettings();\n    this.settings.capturedInBackend =\n      (this.settings.useCurrentDate || this.settings.useCurrentTime) &&\n      this.useBackendDateTimeForCurrentDateTime &&\n      !this.state.disableUseCurrentDateTime &&\n      (this.settings.readOnly || this.state.readonly);\n  }\n\n  private autoCorrectSettings() {\n    //-- auto correct and override settings\n\n    // This is useful for Forms where field is readonly and value should be captured on submission\n    this.settings.capturedInBackend =\n      (this.settings.useCurrentDate || this.settings.useCurrentTime) &&\n      this.useBackendDateTimeForCurrentDateTime &&\n      !this.state.disableUseCurrentDateTime &&\n      ((this.config.isDisplayOnly && this.settings.readOnly) || this.state.readonly);\n\n    // showTimeOnly overrides showTime if true\n    if (this.settings.showTimeOnly) {\n      this.settings.showTime = true;\n    }\n\n    // combinedDateTime overrides showTime and showTimeOnly if true\n    if (this.settings.combinedDateTime) {\n      this.settings.showTime = true;\n      this.settings.showTimeOnly = false;\n    }\n\n    // placeholders are copied from display date/time format settings\n    if (this.settings.datePlaceholder == this.prevSettings.datePlaceholder) {\n      this.settings.datePlaceholder = this.settings.dateFormat;\n    }\n\n    if (this.settings.timePlaceholder == this.prevSettings.timePlaceholder) {\n      this.settings.timePlaceholder = this.settings.timeFormat;\n    }\n\n    if (this.settings.combinedDateTime) {\n      this.settings.datePlaceholder = this.settings.dateFormat + ' ' + this.settings.timeFormat;\n    }\n\n    // For information only\n    // Adjust 24h\n    const hasAMPM = !!this.settings.timeFormat && this.settings.timeFormat.indexOf('A') > -1;\n    this.settings.isAMPM = hasAMPM;\n    this.settings.isTwentyfour = !hasAMPM;\n  }\n\n  private populateConfig() {\n    this.config = !this.config\n      ? this.dateTimeService.getDefaultConfig()\n      : { ...this.dateTimeService.getDefaultConfig(), ...this.config };\n    if (this.config.defaultDateFormat) {\n      this.defaultDateFormat = this.config.defaultDateFormat;\n    }\n    if (this.config.defaultTimeFormat) {\n      this.defaultTimeFormat = this.config.defaultTimeFormat;\n    }\n    if (this.config.defaultDateTimeFormat) {\n      this.defaultDateTimeFormat = this.config.defaultDateTimeFormat;\n    }\n\n    if (this.config.tokensPatternRegex) {\n      this.dateTimeService.setTokensPatternRegex(this.config.tokensPatternRegex);\n    }\n\n    this.useBackendDateTimeForCurrentDateTime = this.config.useBackendDateTimeForCurrentDateTime\n      ? this.config.useBackendDateTimeForCurrentDateTime\n      : false;\n  }\n\n  public populateStrings() {\n    this.strings =\n      !this.strings || this.config.silent\n        ? this.dateTimeService.getDefaultStrings(this.config.silent)\n        : { ...this.dateTimeService.getDefaultStrings(this.config.silent), ...this.strings };\n    this.strings =\n      !this.customStrings || this.config.silent ? this.strings : { ...this.strings, ...this.customStrings };\n  }\n\n  // Revise\n  processInternalTokens(message: string, options?: { min?: string; max?: string }): string {\n    forEach(this.settings.errorTokens, (token) => {\n      const regex = new RegExp(token.value, 'g');\n      let strToReplace = '';\n      if (!this.settings.showTimeOnly) {\n        if (options && options.min && options.max) {\n          if (token.settingName === 'min') {\n            strToReplace = options.min;\n          } else if (token.settingName === 'max') {\n            strToReplace = options.max;\n          } else {\n            strToReplace = (this.settings as any)[token.settingName];\n          }\n        } else {\n          strToReplace = (this.settings as any)[token.settingName];\n        }\n      } else {\n        strToReplace = (this.settings as any)[token.settingName];\n      }\n      message = message.replace(regex, strToReplace);\n    });\n    return message;\n  }\n\n  // validate external tokens in values, remove if not accepted\n  substituteTokens(value: string, keepIfAccepted: boolean): string {\n    const isToken = this.dateTimeService.isToken(value);\n    value =\n      isToken && keepIfAccepted\n        ? this.settings.acceptTokens\n          ? value\n          : this.dateTimeService.removeTokens(value) // keep token string only if we accept tokens\n        : isToken && !keepIfAccepted\n          ? this.dateTimeService.removeTokens(value) // remove tokens if not accepted\n          : value; // keep value as-is if no tokens\n    return value ? value.trim() : '';\n  }\n  // Revise\n  onBlurWithKey(key: string) {\n    setTimeout(() => {\n      this.markAsTouched(key);\n      this.updateErrorDisplay();\n      const picker = key === 'date' ? this.date : this.time;\n      this.onDateTimeChange(\n        picker ? picker.latestSelectedDateObj : (this.state.data as StateDataDateTime).dateTimeObj,\n        key === 'date',\n        key === 'date' ? FormChangeEvent.DateBlur : FormChangeEvent.TimeBlur\n      );\n      this.blurEventHandler.emit({\n        state: this.state,\n        source: FormChangeSource.User,\n        event: key === 'date' ? FormChangeEvent.DateBlur : FormChangeEvent.TimeBlur,\n        component: this,\n      });\n      this.ref.markForCheck();\n    });\n  }\n\n  onIconClick(iconType: string) {\n    switch (iconType) {\n      case 'date':\n        this.dateIconClickEventHandler.emit({\n          state: this.state,\n          event: FormChangeEvent.DateIconClick,\n          component: this,\n        });\n        break;\n      case 'time':\n        this.timeIconClickEventHandler.emit({\n          state: this.state,\n          event: FormChangeEvent.TimeIconClick,\n          component: this,\n        });\n        break;\n    }\n  }\n\n  processDateTimeValues(value: string | Date | undefined | null, isDate: boolean) {\n    let v = value ? value : null;\n\n    if (this.settings.acceptTokens) {\n      if (this.config.tokensPatternRegex) {\n        this.dateTimeService.setTokensPatternRegex(this.config.tokensPatternRegex);\n      }\n      if (isDate && this.date) {\n        if (this.dateTimeService.isToken(this.date.input.value)) {\n          v = this.date.input.value;\n        }\n      } else if (this.time) {\n        if (this.dateTimeService.isToken(this.time.input.value)) {\n          v = this.time.input.value;\n        }\n      }\n    }\n\n    let result: { dateStr: string; timeStr: string; dateTimeObj: Date | undefined | null },\n      dateStr: string | undefined | null,\n      timeStr: string | undefined | null,\n      dateTimeObj: Date | undefined | null;\n    const { timeFormat, dateFormat, showTime, combinedDateTime } = this.settings;\n    const { dateStr: oldDateStr, timeStr: oldTimeStr } = this.state.data as StateDataDateTime;\n\n    if (showTime) {\n      if (typeof v === 'string') {\n        dateStr = isDate ? v : oldDateStr;\n        timeStr = isDate ? oldTimeStr : v;\n      } else {\n        // format using current language\n        dateStr = isDate\n          ? this.dateTimeService.format({ dateTimeObj: v, dateFormat, language: this.config.language })\n          : oldDateStr;\n        timeStr =\n          isDate && !combinedDateTime\n            ? oldTimeStr\n            : this.dateTimeService.format({ dateTimeObj: v, timeFormat, language: this.config.language });\n      }\n\n      if (combinedDateTime) {\n        // parse using current language\n        dateTimeObj =\n          dateStr || timeStr\n            ? this.dateTimeService.parse({\n                dateTimeStr:\n                  (dateStr ? this.substituteTokens(dateStr, false) : '') +\n                  (timeStr ? ' ' + this.substituteTokens(timeStr, false) : ''),\n                dateTimeFormat: dateFormat + (timeStr ? ' ' + timeFormat : ''),\n                language: this.config.language,\n              })\n            : null;\n      } else {\n        // parse using current language\n        dateTimeObj =\n          dateStr || timeStr\n            ? this.dateTimeService.parse({\n                dateStr: dateStr ? this.substituteTokens(dateStr, false) : '',\n                timeStr: timeStr ? this.substituteTokens(timeStr, false) : '',\n                dateFormat,\n                timeFormat,\n                language: this.config.language,\n              })\n            : null;\n      }\n\n      dateStr = dateStr ? this.substituteTokens(dateStr, true) : '';\n      timeStr = timeStr ? this.substituteTokens(timeStr, true) : '';\n      const formatDateStr = dateTimeObj && dateStr && !this.dateTimeService.isToken(dateStr);\n      const formatTimeStr =\n        combinedDateTime && this.dateTimeService.isToken(dateStr)\n          ? false\n          : dateTimeObj && timeStr && !this.dateTimeService.isToken(timeStr);\n\n      // format using current language\n      result = {\n        dateTimeObj,\n        dateStr: formatDateStr\n          ? this.dateTimeService.format({ dateTimeObj, dateFormat, language: this.config.language })\n          : this.dateTimeService.isToken(dateStr)\n            ? dateStr\n            : '',\n        timeStr: formatTimeStr\n          ? this.dateTimeService.format({ dateTimeObj, timeFormat, language: this.config.language })\n          : this.dateTimeService.isToken(timeStr)\n            ? timeStr\n            : '',\n      };\n    } else {\n      // isDate must be true\n      if (typeof v === 'string') {\n        // parse using current language\n        dateTimeObj =\n          v && !this.dateTimeService.isToken(dateStr)\n            ? this.dateTimeService.parse({ dateStr: v, dateFormat, language: this.config.language })\n            : null;\n      } else {\n        dateTimeObj = v;\n      }\n      dateStr = dateStr ? this.substituteTokens(dateStr, true) : '';\n      // format using current language\n      result = {\n        dateStr:\n          dateTimeObj && !this.dateTimeService.isToken(dateStr)\n            ? this.dateTimeService.format({ dateTimeObj, dateFormat, language: this.config.language })\n            : this.dateTimeService.isToken(dateStr)\n              ? dateStr\n              : '',\n        timeStr: '',\n        dateTimeObj,\n      };\n    }\n    const formattedDateTime = this.dateTimeService.formatDateTimeForStoredValue(\n      result.dateTimeObj,\n      result.dateStr,\n      result.timeStr,\n      this.config,\n      this.settings.combinedDateTime\n    );\n    this.dateTimeControl?.setValue(formattedDateTime ? formattedDateTime : null);\n\n    return result;\n  }\n\n  // Revise\n  onDateTimeChange(value: string | Date | undefined | null, isDate: boolean, event: FormChangeEvent) {\n    if (this.state.readonly || this.state.disabled) {\n      return;\n    }\n\n    const previousData = this.state.data as StateDataDateTime;\n    const result = this.processDateTimeValues(value, isDate);\n\n    // flatpickr's onClose and the input's native blur can both call this for one user commit (e.g.\n    // Tab out) - skip a no-op emit so multi-value fields don't see the same commit twice.\n    const isUnchanged =\n      previousData.dateStr === result.dateStr &&\n      previousData.timeStr === result.timeStr &&\n      (previousData.dateTimeObj?.getTime() ?? null) === (result.dateTimeObj?.getTime() ?? null);\n    if (isUnchanged) {\n      return;\n    }\n\n    // emit event?\n    const controlType = this.settings.combinedDateTime\n      ? UniControlType.DateTime\n      : isDate\n        ? UniControlType.DateTime_date\n        : this.settings.showTimeOnly\n          ? UniControlType.Time\n          : UniControlType.DateTime_time;\n\n    const newState = cloneDeep(this.state);\n    newState.data = result;\n    this.updateErrorDisplay();\n    this.state.data = result;\n    this.valueChangedEventHandler.emit({\n      newValue: result,\n      newState: newState,\n      controlType: controlType,\n      source: FormChangeSource.User,\n      event: event,\n      component: this,\n    });\n  }\n\n  // Revise\n  assignSubAbstractControl() {\n    this.dateControlName = this.dateControlName\n      ? this.dateControlName\n      : `${this.componentId}-${UniControlType.DateTime_date}`;\n    this.timeControlName = this.timeControlName\n      ? this.timeControlName\n      : `${this.componentId}-${UniControlType.DateTime_time}`;\n    this.dateTimeControlName = this.dateTimeControlName\n      ? this.dateTimeControlName\n      : `${this.componentId}-${UniControlType.DateTime}`;\n\n    if (!this.abstractControl) {\n      const defaultControls = {};\n      (defaultControls as any)[this.dateControlName] = new FormControl();\n      (defaultControls as any)[this.timeControlName] = new FormControl();\n      (defaultControls as any)[this.dateTimeControlName] = new FormControl();\n\n      this.abstractControl = new FormGroup(defaultControls);\n    }\n\n    this.dateControl = this.getControl(this.dateControlName) as FormControl<string | null>;\n    this.timeControl = this.getControl(this.timeControlName) as FormControl<string | null>;\n    this.dateTimeControl = this.getControl(this.dateTimeControlName) as FormControl<string | null>;\n\n    this.controls.date = this.dateControl;\n    this.controls.time = this.timeControl;\n    this.controls.dateTime = this.dateTimeControl;\n\n    // ToDo: add default self-validators\n\n    if (this.config.formGroupValidators) {\n      this.abstractControl.setValidators(this.config.formGroupValidators);\n      this.abstractControl.updateValueAndValidity();\n    }\n\n    if (this.config.dateControlValidators) {\n      this.controls.date.setValidators(this.config.dateControlValidators);\n      this.controls.date.updateValueAndValidity();\n    }\n    if (this.config.timeControlValidators) {\n      this.controls.time.setValidators(this.config.timeControlValidators);\n      this.controls.time.updateValueAndValidity();\n    }\n    if (this.config.dateTimeControlValidators) {\n      this.controls.dateTime.setValidators(this.config.dateTimeControlValidators);\n      this.controls.dateTime.updateValueAndValidity();\n    }\n  }\n\n  private getControl(controlName: string) {\n    let control: any;\n    try {\n      control = this.abstractControl?.get(controlName) as FormControl<string | null>;\n    } catch (ex) {\n      console.log('Could not locate control ' + controlName);\n    }\n    if (!control) {\n      control = new FormControl();\n    }\n    return control;\n  }\n\n  private assignMinMaxForPicker(state: UniState) {\n    // Revise\n    if (state.settings?.min) {\n      if (this.minDateTimeStr !== state.settings.min) {\n        const minDateTimeObj = this.dateTimeService.tryParse(state.settings.min as string, [\n          this.defaultDateTimeFormat,\n          this.defaultDateFormat,\n          this.defaultTimeFormat,\n        ]);\n        // const minTimeObj = this.dateTimeService.tryParse(state.settings.min as string, [this.defaultTimeFormat]);\n        if (minDateTimeObj && !state.settings.showTimeOnly) {\n          if (this.date) {\n            this.date.set('minDate', minDateTimeObj);\n          }\n          if (state.settings.showTime && !state.settings.combinedDateTime) {\n            // Known limitation: time min/max is not validated if split pickers\n            // ToDo: enforce time limit when pickers are split!\n          }\n          this.minDateTime = minDateTimeObj;\n          this.minDateTimeStr = state.settings.min as string;\n        }\n        if (minDateTimeObj && state.settings.showTimeOnly) {\n          if (this.time) {\n            this.time.set('minTime', minDateTimeObj);\n          }\n          this.minTime = this.dateTimeService.format({ dateTimeObj: minDateTimeObj, timeFormat: 'HH:mm' });\n        }\n      }\n    } else {\n      if (this.date && this.minDateTimeStr) {\n        this.date.set('minDate', '');\n      }\n      if (this.time && this.minDateTimeStr) {\n        this.time.set('minTime', '');\n      }\n      this.minDateTime = undefined;\n      this.minDateTimeStr = '';\n      this.minTime = '';\n    }\n    if (state.settings?.max) {\n      if (this.maxDateTimeStr !== state.settings.max) {\n        const maxDateTimeObj = this.dateTimeService.tryParse(state.settings.max as string, [\n          this.defaultDateTimeFormat,\n          this.defaultDateFormat,\n          this.defaultTimeFormat,\n        ]);\n        if (maxDateTimeObj && !state.settings.showTimeOnly) {\n          if (this.date) {\n            this.date.set('maxDate', maxDateTimeObj);\n          }\n          if (state.settings.showTime && !state.settings.combinedDateTime) {\n            // Known limitation: time min/max is not validated if split pickers\n            // ToDo: enforce time limit when pickers are split!\n          }\n          this.maxDateTime = maxDateTimeObj;\n          this.maxDateTimeStr = state.settings.max as string;\n        }\n        if (maxDateTimeObj && state.settings.showTimeOnly) {\n          if (this.time) {\n            this.time.set('maxTime', maxDateTimeObj);\n          }\n          this.maxTime = this.dateTimeService.format({ dateTimeObj: maxDateTimeObj, timeFormat: 'HH:mm' });\n        }\n      }\n    } else {\n      if (this.date && this.maxDateTimeStr) {\n        this.date.set('maxDate', '');\n      }\n      if (this.time && this.maxDateTimeStr) {\n        this.time.set('maxTime', '');\n      }\n      this.maxDateTime = undefined;\n      this.maxDateTimeStr = '';\n      this.maxTime = '';\n    }\n  }\n\n  //--\n  getErrorTypeWithHighestPriority(abstractControl: AbstractControl): string {\n    // Revise\n    const errorsPriority = this.config.errorsPriorityOrder;\n    if (abstractControl.errors) {\n      const errorTypes = Object.keys(abstractControl.errors);\n      if (errorTypes.length > 1) {\n        for (let orderIndex = 0; orderIndex < errorsPriority.length; orderIndex++) {\n          const errorType = errorsPriority[orderIndex].errorType;\n          const mappedErrorType = errorsPriority[orderIndex].mappedErrorType;\n          if (abstractControl.errors[errorType]) {\n            return mappedErrorType;\n          }\n        }\n      }\n      return errorTypes[0];\n    }\n    return '';\n  }\n\n  getDefaultErrorMessage(errorType: string, settings: UniComponentSettings) {\n    let message = '';\n    const params = {\n      min: settings.min,\n      max: settings.max,\n    };\n    const errorTypeKey = errorType as keyof typeof this.dateTimeService.defaultErrorMessages;\n    if (errorTypeKey in this.dateTimeService.defaultErrorMessages) {\n      message = this.dateTimeService.defaultErrorMessages[errorTypeKey](params);\n    }\n    return message;\n  }\n\n  updateErrorDisplay() {\n    // Revise\n    this.errorMessages = { date: '', time: '', dateTime: '' };\n    if (!this.config.silent) {\n      forEach(this.controls, (control?: FormControl<string | null>, key?: string) => {\n        if (control && control.touched && control.invalid) {\n          const errorType = this.getErrorTypeWithHighestPriority(control);\n          let message = errorType ? this.customErrorMessages[errorType] : '';\n          if (!message) {\n            message = this.getDefaultErrorMessage(errorType, this.settings);\n          } else {\n            const min = this.settings.min?.trim();\n            const max = this.settings.max?.trim();\n            message = this.processInternalTokens(message, { min, max });\n          }\n          if (this.errorMessages && key && key in this.errorMessages) {\n            this.errorMessages[key as keyof typeof this.errorMessages] = message;\n          }\n        }\n      });\n    }\n  }\n\n  markAsTouched(key?: string) {\n    if (key && this.controls[key as keyof typeof this.controls]) {\n      this.controls[key as keyof typeof this.controls]?.markAsTouched();\n      this.controls.dateTime?.markAsTouched();\n    } else {\n      forEach(this.controls, (control?: FormControl<string | null>, key?: string) => {\n        if (control) {\n          control.markAsTouched();\n        }\n      });\n    }\n  }\n\n  // Set flatpickr UI language\n  private localize() {\n    // en is default\n    const supportedLanguages = this.dateTimeService.getSupportedLanguages();\n    const langLCase = this.config.language?.toLowerCase();\n    let langShort = langLCase?.substring(0, 2);\n\n    langShort = langShort == 'zh' && langLCase && langLCase.length > 2 ? langLCase.substring(0, 7) : langShort;\n\n    this.supportedLanguage =\n      langLCase && supportedLanguages.indexOf(langLCase) > -1\n        ? langLCase\n        : langShort && supportedLanguages.indexOf(langShort) > -1\n          ? langShort\n          : 'en';\n    flatpickr.localize(this.dateTimeService.getFlatpickrLocale(this.supportedLanguage));\n  }\n\n  // Set flatpickr date/time format based on locale\n  public localizeFormat(locale?: string, withSeconds?: boolean) {\n    locale = locale ? locale : this.config.locale;\n    withSeconds = withSeconds ? withSeconds : this.config.setDisplayFormatByLocaleSeconds;\n\n    const dateFormatType = this.config.hasLongDateFormat ? FormatType.LONG_DATE_FORMAT : FormatType.DATE_FORMAT;\n    const dateFormat = this.dateTimeService.getFormatByLocale(locale, dateFormatType);\n    const timeFormat = this.dateTimeService.getFormatByLocale(locale, FormatType.TIME_FORMAT, withSeconds);\n    // const dateTimeFormat = this.dateTimeService.getFormatByLocale(locale, FormatType.DATETIME_FORMAT, withSeconds);\n\n    // ToDo?: convert from old to new\n\n    // Set new format\n    this.settings.dateFormat = dateFormat;\n    this.settings.timeFormat = timeFormat;\n    this.settings.datePlaceholder = dateFormat;\n    this.settings.timePlaceholder = timeFormat;\n\n    // Adjust 24h\n    const hasAMPM = timeFormat.indexOf('A') > -1;\n    this.settings.isAMPM = hasAMPM;\n    this.settings.isTwentyfour = !hasAMPM;\n\n    // Apply on existing controls // Revise\n    if (this.date && this.config.isDisplayOnly) {\n      this.dateDiv.nativeElement.flatpickr({\n        enableSeconds: this.settings.combinedDateTime && timeFormat.indexOf('s') > -1,\n        time_24hr: this.settings.combinedDateTime && !hasAMPM, // Revise\n        dateFormat: this.dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(dateFormat),\n        locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n      });\n    }\n\n    if (this.time && this.config.isDisplayOnly) {\n      this.timedateDiv.nativeElement.flatpickr({\n        enableSeconds: timeFormat.indexOf('s') > -1,\n        time_24hr: !hasAMPM, // Revise\n        dateFormat: timeFormat,\n        locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n      });\n    }\n  }\n\n  // Helpers\n  getCombinedStyles(settings: UniComponentSettings | undefined) {\n    settings = settings ? settings : this.settings;\n    let style = '';\n\n    style += settings.padding ? 'padding: ' + settings.padding + 'px; ' : '';\n    style += settings.height ? 'height: ' + settings.height + 'px; ' : '';\n    style += settings.width ? 'width:  ' + settings.width + 'px;' : '';\n    style += settings.maxHeight ? 'max-height: ' + settings.maxHeight + 'px; ' : '';\n    style += settings.maxWidth ? 'max-width:  ' + settings.maxWidth + 'px;' : '';\n\n    return style;\n  }\n}\n","<!-- Copyright Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information. -->\n\n<div class=\"fl-component\">\n  @if (settings.showLabel && settings.label) {\n    <div class=\"lib-datetime-label\">{{ settings.label }}</div>\n  }\n  <div [formGroup]=\"formGroup\" class=\"fl-datetime-inputs\" [style]=\"this.getCombinedStyles(this.settings)\">\n    <input type=\"text\" #dateTimeInput [formControlName]=\"dateTimeControlName ?? ''\" hidden />\n    <br />\n    @if (settings.capturedInBackend) {\n      <span>\n        {{\n          settings.showTimeOnly\n            ? strings?.timeCapturedInBackend\n            : settings.showTime\n              ? strings?.dateTimeCapturedInBackend\n              : strings?.dateCapturedInBackend\n        }}\n      </span>\n    } @else {\n      @if (settings.showTimeOnly !== true) {\n        <div class=\"fl-date-container\" [ngClass]=\"settings.combinedDateTime ? 'combined-datetime' : ''\">\n          <div class=\"lib-datetime-picker\" #dateDiv>\n            @if (settings.useCurrentDate && config.isDisplayOnly) {\n              <input\n                class=\"fl-datetime-input-date\"\n                type=\"text\"\n                id=\"{{ settings.fieldId }}\"\n                value=\"{{ strings?.currentDate }}\"\n                disabled\n              />\n            }\n            <mat-form-field class=\"lf-field lf-date-field lf-datepicker-input-box\" appearance=\"outline\">\n              <input\n                matInput\n                class=\"fl-datetime-input-date\"\n                id=\"{{ settings.fieldId }}\"\n                type=\"text\"\n                data-input\n                [readonly]=\"state.readonly || state.disabled\"\n                (blur)=\"onBlurWithKey('date')\"\n                [hidden]=\"settings.useCurrentDate && config.isDisplayOnly\"\n                [placeholder]=\"settings.datePlaceholder ?? ''\"\n                [formControlName]=\"dateControlName ?? ''\"\n                [ngClass]=\"{\n                  'ng-wrapper-invalid': dateTimeControl?.invalid,\n                  'ng-wrapper-touched': dateTimeControl?.touched,\n                }\"\n              />\n              @if (!state.readonly) {\n                <a\n                  class=\"datetime-icon\"\n                  title=\"{{ strings?.selectDate }}\"\n                  [ngClass]=\"{ isDisabled: config.isDisplayOnly || state.disabled, hidden: showLoadingSpinner }\"\n                  [attr.disabled]=\"config.isDisplayOnly\"\n                  data-toggle\n                  (click)=\"onIconClick('date')\"\n                >\n                  <div style=\"box-sizing: border-box\">\n                    <svg class=\"lf-icon-16\">\n                      <symbol xmlns=\"http://www.w3.org/2000/svg\" id=\"date\" viewBox=\"0 0 24 24\">\n                        <path\n                          d=\"M19,3h-1V1h-2v2H8V1H6v2H5C3.9,3,3,3.9,3,5l0,14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3z M19,19H5V8h14V19z\"\n                        ></path>\n                        <rect x=\"7\" y=\"10\" width=\"5\" height=\"5\"></rect>\n                      </symbol>\n                      <use xlink:href=\"#date\"></use>\n                    </svg>\n                  </div>\n                </a>\n              }\n            </mat-form-field>\n            @if (showLoadingSpinner) {\n              <div>\n                <ng-content select=\"[loading-spinner]\"></ng-content>\n              </div>\n            }\n          </div>\n          @if (dateControl?.invalid && dateControl?.touched && errorMessages) {\n            <div class=\"error-message\">\n              {{ errorMessages.date }}\n            </div>\n          }\n        </div>\n      }\n      <ng-content select=\"[between-pickers]\"></ng-content>\n      @if (settings.showTime && !settings.combinedDateTime) {\n        <div class=\"fl-time-container\">\n          <div class=\"lib-datetime-picker\" #timedateDiv>\n            @if (settings.useCurrentDate && config.isDisplayOnly) {\n              <input class=\"fl-datetime-input-time\" type=\"text\" value=\"{{ strings?.currentTime }}\" disabled />\n            }\n            <mat-form-field class=\"lf-field lf-date-field lf-datepicker-input-box\" appearance=\"outline\">\n              <input\n                matInput\n                class=\"fl-datetime-input-time\"\n                id=\"DateTime{{ settings.fieldId }}\"\n                type=\"text\"\n                data-input\n                [hidden]=\"settings.useCurrentDate && config.isDisplayOnly\"\n                [readonly]=\"state.readonly || state.disabled\"\n                (blur)=\"onBlurWithKey('time')\"\n                [placeholder]=\"settings.timePlaceholder ?? ''\"\n                [formControlName]=\"timeControlName ?? ''\"\n                [ngClass]=\"{\n                  'ng-wrapper-invalid': dateTimeControl?.invalid,\n                  'ng-wrapper-touched': dateTimeControl?.touched,\n                }\"\n              />\n              @if (!state.readonly) {\n                <a\n                  class=\"datetime-icon\"\n                  title=\"{{ strings?.selectTime }}\"\n                  [ngClass]=\"{ isDisabled: config.isDisplayOnly || state.disabled, hidden: showLoadingSpinner }\"\n                  data-toggle\n                  (click)=\"onIconClick('time')\"\n                >\n                  <div style=\"box-sizing: border-box\">\n                    <svg class=\"lf-icon-16\">\n                      <symbol xmlns=\"http://www.w3.org/2000/svg\" id=\"clock\" viewBox=\"0 0 24 24\">\n                        <path\n                          d=\"M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10c5.5,0,10-4.5,10-10S17.5,2,12,2z M12,20c-4.4,0-8-3.6-8-8s3.6-8,8-8c4.4,0,8,3.6,8,8S16.4,20,12,20z\"\n                        ></path>\n                        <polygon points=\"12.5,7 11,7 11,13 16.2,16.2 17,14.9 12.5,12.3 \"></polygon>\n                      </symbol>\n                      <use xlink:href=\"#clock\"></use>\n                    </svg>\n                  </div>\n                </a>\n              }\n            </mat-form-field>\n            @if (showLoadingSpinner) {\n              <div>\n                <ng-content select=\"[loading-spinner]\"></ng-content>\n              </div>\n            }\n          </div>\n          @if (timeControl?.invalid && timeControl?.touched) {\n            <div class=\"error-message\">{{ errorMessages?.time }}</div>\n          }\n        </div>\n      }\n      <ng-content></ng-content>\n    }\n  </div>\n  @if (dateTimeControl?.invalid && dateTimeControl?.touched && errorMessages?.dateTime) {\n    <div class=\"error-message\">\n      {{ errorMessages?.dateTime }}\n    </div>\n  }\n</div>\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { LfFieldTokenService } from '../lf-field-base/lf-field-token.service';\nimport { LfToken } from './lf-token.service';\n\n@Component({\n  selector: 'lf-token-picker-component',\n  templateUrl: './lf-token-picker.component.html',\n  styleUrls: ['./lf-token-picker.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, MatMenuModule],\n})\nexport class LfTokenPickerComponent implements OnInit {\n  tokenService = inject(LfFieldTokenService);\n\n  @Input() data: any;\n  @Output() tokenPicked: EventEmitter<string> = new EventEmitter();\n  tokens: LfToken[] = [];\n\n  async ngOnInit() {\n    this.tokens = await this.tokenService.getTokensAsync(this.data);\n  }\n\n  async onTokenChosen(token: LfToken) {\n    if (token) {\n      this.tokenPicked.emit(token.text);\n    }\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<button class=\"token-picker-button\" [matMenuTriggerFor]=\"tokenMenu\">\n  <span class=\"material-icons token-picker-icon\"> navigate_next </span>\n</button>\n<mat-menu #tokenMenu=\"matMenu\" class=\"token-picker-dropdown\">\n  @for (token of tokens; track token) {\n    <button class=\"token-picker-option\" mat-menu-item (click)=\"onTokenChosen(token)\">\n      {{ token.friendlyName | async }}\n    </button>\n  }\n</mat-menu>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable } from 'rxjs';\n\n@Component({\n  selector: 'lf-dynamic-field-component',\n  templateUrl: './dynamic-field.component.html',\n  styleUrls: ['./dynamic-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule],\n})\nexport class DynamicFieldComponent {\n  @Input() options: string[] | undefined = undefined;\n  @Input() formControl!: FormControl;\n  @Input() title: string | undefined;\n  @Input() fieldValidationErrorMsg: Observable<string | undefined> | undefined;\n  @Input() getBrokenValidationRule!: () => ValidationRule | undefined;\n  @Output() valueChange = new EventEmitter();\n\n  /**\n   * Default compare implementation, can be overrided by @Input\n   */\n  @Input() compareWith = (first: string, second: string) => {\n    return first === second;\n  };\n\n  constructor() {}\n\n  onValueChanged() {\n    this.valueChange.emit();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<mat-form-field [title]=\"title\" appearance=\"outline\" class=\"lf-field lf-dropdown\">\n  <mat-select\n    panelClass=\"lf-dropdown-overlay\"\n    [formControl]=\"formControl\"\n    [title]=\"formControl.value\"\n    (selectionChange)=\"onValueChanged()\"\n    [compareWith]=\"compareWith\"\n  >\n    <mat-option>--</mat-option>\n    @for (listOption of options; track listOption) {\n      <mat-option [value]=\"listOption\">\n        {{ listOption }}\n      </mat-option>\n    }\n  </mat-select>\n  @if (getBrokenValidationRule()) {\n    <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n  }\n</mat-form-field>\n","// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { LfMetadataDatetimeUtils } from '@laserfiche/lf-js-utils';\nimport { Observable, of } from 'rxjs';\nimport { DateTimeBaseFieldDirective } from '../base-field/datetime-base-field.directives';\nimport { FieldFormat } from '@laserfiche/lf-ui-components/shared';\nimport { UniDateTimeComponent } from '../../../../lf-date-time-picker/uni-date-time.component';\nimport { LfTokenPickerComponent } from '../../lf-token-picker/lf-token-picker.component';\nimport { DynamicFieldComponent } from '../dynamic-field/dynamic-field.component';\n\n@Component({\n  selector: 'lf-date-time-field-component',\n  templateUrl: './date-time-field.component.html',\n  styleUrls: ['./date-time-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: DateTimeBaseFieldDirective, useExisting: DateTimeFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    UniDateTimeComponent,\n    LfTokenPickerComponent,\n    DynamicFieldComponent,\n  ],\n})\nexport class DateTimeFieldComponent extends DateTimeBaseFieldDirective implements OnInit {\n  private LOCALE_DATE_TIME: Observable<string> | undefined;\n\n  async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n    const defaultDateTime: string | undefined = this.getDateTimePickerDefaultDateValue();\n    var defaultDateString: string | undefined = undefined;\n    var defaultTimeString: string | undefined = undefined;\n    const dateTimeSeparator = 'T';\n    const dateTimeElements = defaultDateTime?.split(dateTimeSeparator);\n    if (dateTimeElements && dateTimeElements.length == 2) {\n      [defaultDateString, defaultTimeString] = dateTimeElements;\n    }\n\n    this.uniDateTimeSettings = {\n      showLabel: false,\n      readOnly: false,\n      combinedDateTime: true,\n      defaultDate: defaultDateString,\n      defaultTimeOfDate: defaultTimeString,\n    };\n    this.uniDateTimeConfig = {\n      storedValueDateFormat: this.internalDateFormat,\n      storedValueTimeFormat: this.internalTimeFormat,\n      storedValueDateTimeFormat: `{DATE}${dateTimeSeparator}{TIME}`,\n      language: this.localizationService.currentLanguage ?? navigator.language,\n      locale: this.localizationService.currentLanguage ?? navigator.language,\n      setDisplayFormatByLocale: true,\n      silent: false, // no internal strings and no custom error messages\n      hasLongDateFormat: this.hasLongDateTimeFormat(),\n    };\n  }\n\n  compareDateStrings = LfMetadataDatetimeUtils.compareDateStrings;\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue();\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? '';\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    return [];\n  }\n\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    if (\n      this.lf_field_form_control.errors &&\n      (ValidationRule.DATETIME_PICKER_PARSE in this.lf_field_form_control.errors ||\n        ValidationRule.DATEPICKER_PARSE in this.lf_field_form_control.errors)\n    ) {\n      this.LOCALE_DATE_TIME = of(this.lf_field_form_control.errors[validationRuleName].dateTimeFormat);\n      var errorMessage = this.localizationService.getStringLaserficheWithObservableParams(\n        'DATE_TIME_FIELDS_MUST_BE_IN_FORMAT_0',\n        [this.LOCALE_DATE_TIME]\n      );\n      switch (validationRuleName) {\n        case ValidationRule.DATETIME_PICKER_PARSE:\n          return errorMessage;\n        case ValidationRule.DATEPICKER_PARSE:\n          return errorMessage;\n      }\n    }\n    return undefined;\n  }\n\n  private hasLongDateTimeFormat(): boolean {\n    return this.lf_field_info.format === FieldFormat.LongDateTime;\n  }\n}\n","<!--Copyright Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (!isDynamic) {\n  <span class=\"token-picker-field-box\" [ngClass]=\"{ 'extra-space': !getBrokenValidationRule() }\">\n    @if (showTokenTextBox) {\n      <mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-field\">\n        <input\n          #tokenTarget\n          matInput\n          [formControl]=\"lf_field_form_control\"\n          title=\"{{ lf_field_form_control.value }}\"\n          (change)=\"onDateOrTimeTokenValueChanged()\"\n        />\n      </mat-form-field>\n    }\n    @if (!showTokenTextBox) {\n      <lf-uni-date-time\n        #tokenTarget\n        class=\"lf-field\"\n        [config]=\"uniDateTimeConfig\"\n        [settings]=\"uniDateTimeSettings\"\n        (valueChangedEventHandler)=\"onUniDateOrTimeChanged($event)\"\n      >\n      </lf-uni-date-time>\n    }\n    <lf-token-picker-component\n      class=\"lf-field-token-picker\"\n      (tokenPicked)=\"onTokenChosen($event)\"\n      [data]=\"lfFieldTokenData\"\n    ></lf-token-picker-component>\n  </span>\n} @else {\n  <lf-dynamic-field-component\n    ngDefaultControl\n    [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\"\n    [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\"\n    [compareWith]=\"compareDateStrings\"\n  >\n  </lf-dynamic-field-component>\n}\n@if (getBrokenValidationRule()) {\n  <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { BaseFieldDirective } from '../base-field/base-field.directive';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable } from 'rxjs';\nimport { LfTokenPickerComponent } from '../../lf-token-picker/lf-token-picker.component';\nimport { DynamicFieldComponent } from '../dynamic-field/dynamic-field.component';\n\n@Component({\n  selector: 'lf-text-field-component',\n  templateUrl: './text-field.component.html',\n  styleUrls: ['./text-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: BaseFieldDirective, useExisting: TextFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    LfTokenPickerComponent,\n    DynamicFieldComponent,\n  ],\n})\nexport class TextFieldComponent extends BaseFieldDirective implements OnInit {\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    return undefined;\n  }\n\n  focusState: boolean | undefined;\n  get isShortField(): boolean {\n    return !this.lf_field_info.length || this.lf_field_info.length <= 40;\n  }\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue()?.trim();\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value?.trim() ?? '';\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    return [];\n  }\n\n  createNewFieldValueWithToken(token: string): string {\n    let newValue: string = '';\n    if (this.tokenTarget) {\n      const originalFieldVal: string = this.tokenTarget.nativeElement.value;\n      const selectionStart: number = this.tokenTarget.nativeElement.selectionStart;\n      const selectionEnd: number = this.tokenTarget.nativeElement.selectionEnd;\n      const formattedToken: string = `%(${token})`;\n      const textBeforeToken: string = originalFieldVal.substring(0, selectionStart);\n      const textAfterToken: string = originalFieldVal.substring(selectionEnd);\n      newValue = textBeforeToken + formattedToken + textAfterToken;\n    }\n    return newValue;\n  }\n\n  onFocusIn() {\n    this.focusState = true;\n    this.ref.detectChanges();\n  }\n\n  onFocusOut() {\n    this.focusState = false;\n    this.ref.detectChanges();\n  }\n\n  onEveryInputChange() {\n    this.ref.detectChanges();\n    if (this.containsToken) {\n      this.lf_field_form_control.clearValidators();\n    } else {\n      this.resetToDefaultValidators();\n    }\n    this.lf_field_form_control.updateValueAndValidity();\n    super.onValueChanged(false);\n  }\n\n  protected override fieldOnValueChanged(): void {\n    const currentValue = this.lf_field_form_control.value;\n    this.lf_field_form_control.setValue(currentValue ?? '');\n  }\n\n  onTextValueChanged() {\n    if (this.containsToken) {\n      this.lf_field_form_control.clearValidators();\n    } else {\n      this.resetToDefaultValidators();\n    }\n    this.lf_field_form_control.updateValueAndValidity();\n    super.onValueChanged();\n  }\n\n  onTextTokenChosen(token: string) {\n    const newFieldVal: string = this.createNewFieldValueWithToken(token);\n    if (this.tokenService.containsTokenForFieldType(newFieldVal, this.lf_field_info.fieldType, this.is_import_mode)) {\n      this.lf_field_form_control.clearValidators();\n      this.lf_field_form_control.updateValueAndValidity();\n    }\n    this.onTokenChosen(token);\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (!isDynamic) {\n  <span class=\"token-picker-field-box\">\n    @if (isShortField) {\n      <mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-field\">\n        <input\n          #tokenTarget\n          matInput\n          type=\"text\"\n          [formControl]=\"lf_field_form_control\"\n          title=\"{{ lf_field_form_control.value }}\"\n          (change)=\"onTextValueChanged()\"\n          (focus)=\"onFocusIn()\"\n          (focusout)=\"onFocusOut()\"\n          (input)=\"onEveryInputChange()\"\n        />\n        @if (focusState && this.lf_field_info.length) {\n          <mat-hint align=\"end\">\n            {{ containsToken ? (tokenCharacterCountHint | async) : (noTokenCharacterCountHint | async) }}\n          </mat-hint>\n        }\n        @if (getBrokenValidationRule()) {\n          <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n        }\n      </mat-form-field>\n    }\n    @if (!isShortField) {\n      <mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-textarea\">\n        <textarea\n          #tokenTarget\n          matInput\n          type=\"text\"\n          [formControl]=\"lf_field_form_control\"\n          title=\"{{ lf_field_form_control.value }}\"\n          (change)=\"onTextValueChanged()\"\n          (focus)=\"onFocusIn()\"\n          (focusout)=\"onFocusOut()\"\n          (input)=\"onEveryInputChange()\"\n        ></textarea>\n        @if (focusState && this.lf_field_info.length) {\n          <mat-hint align=\"end\">\n            {{ containsToken ? (tokenCharacterCountHint | async) : (noTokenCharacterCountHint | async) }}\n          </mat-hint>\n        }\n        @if (getBrokenValidationRule()) {\n          <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n        }\n      </mat-form-field>\n    }\n    <lf-token-picker-component\n      class=\"lf-field-token-picker\"\n      (tokenPicked)=\"onTextTokenChosen($event)\"\n      [data]=\"lfFieldTokenData\"\n    >\n    </lf-token-picker-component>\n  </span>\n} @else {\n  <lf-dynamic-field-component\n    ngDefaultControl\n    [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\"\n    [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onTextValueChanged()\"\n  >\n  </lf-dynamic-field-component>\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { AppLocalizationService, ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { LfMetadataDatetimeUtils } from '@laserfiche/lf-js-utils';\nimport { Observable, of } from 'rxjs';\nimport { DateTimeBaseFieldDirective } from '../base-field/datetime-base-field.directives';\nimport { FieldFormat } from '@laserfiche/lf-ui-components/shared';\nimport { UniDateTimeComponent } from '../../../../lf-date-time-picker/uni-date-time.component';\nimport { LfTokenPickerComponent } from '../../lf-token-picker/lf-token-picker.component';\nimport { DynamicFieldComponent } from '../dynamic-field/dynamic-field.component';\n\n@Component({\n  selector: 'lf-date-field-component',\n  templateUrl: './date-field.component.html',\n  styleUrls: ['./date-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: DateTimeBaseFieldDirective, useExisting: DateFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    UniDateTimeComponent,\n    LfTokenPickerComponent,\n    DynamicFieldComponent,\n  ],\n})\nexport class DateFieldComponent extends DateTimeBaseFieldDirective implements OnInit {\n  private LOCALE_DATE: Observable<string> | undefined;\n\n  async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n\n    this.uniDateTimeSettings = {\n      showLabel: false,\n      readOnly: false,\n      combinedDateTime: false,\n      showTime: false,\n      defaultDate: this.getDateTimePickerDefaultDateValue(),\n    };\n    this.uniDateTimeConfig = {\n      storedValueDateFormat: this.internalDateFormat,\n      storedValueDateTimeFormat: '{DATE}T00:00:00',\n      language: this.localizationService.currentLanguage ?? navigator.language,\n      locale: this.localizationService.currentLanguage ?? navigator.language,\n      setDisplayFormatByLocale: true,\n      silent: false, // no internal strings and no custom error messages\n      hasLongDateFormat: this.hasLongDateFormat(),\n    };\n  }\n\n  compareDateStrings = LfMetadataDatetimeUtils.compareDateStrings;\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue();\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? '';\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    return [];\n  }\n\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    switch (validationRuleName) {\n      case ValidationRule.DATEPICKER_PARSE:\n        if (this.lf_field_form_control.errors && ValidationRule.DATEPICKER_PARSE in this.lf_field_form_control.errors) {\n          this.LOCALE_DATE = of(this.lf_field_form_control.errors[ValidationRule.DATEPICKER_PARSE].dateTimeFormat);\n          var errorMessage = this.localizationService.getStringLaserficheWithObservableParams(\n            'DATE_FIELDS_MUST_BE_IN_FORMAT_0',\n            [this.LOCALE_DATE]\n          );\n          return errorMessage;\n        }\n    }\n    return undefined;\n  }\n\n  private hasLongDateFormat(): boolean {\n    return this.lf_field_info.format === FieldFormat.LongDate;\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (!isDynamic) {\n  <span class=\"token-picker-field-box\" [ngClass]=\"{ 'extra-space': !getBrokenValidationRule() }\">\n    @if (showTokenTextBox) {\n      <mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-field lf-date-field\">\n        <input\n          #tokenTarget\n          matInput\n          [formControl]=\"lf_field_form_control\"\n          title=\"{{ lf_field_form_control.value }}\"\n          (change)=\"onDateOrTimeTokenValueChanged()\"\n        />\n      </mat-form-field>\n    }\n    @if (!showTokenTextBox) {\n      <lf-uni-date-time\n        #tokenTarget\n        class=\"lf-field\"\n        [config]=\"uniDateTimeConfig\"\n        [settings]=\"uniDateTimeSettings\"\n        (valueChangedEventHandler)=\"onUniDateOrTimeChanged($event)\"\n      >\n      </lf-uni-date-time>\n    }\n    <lf-token-picker-component\n      class=\"lf-field-token-picker\"\n      (tokenPicked)=\"onTokenChosen($event)\"\n      [data]=\"lfFieldTokenData\"\n    ></lf-token-picker-component>\n  </span>\n} @else {\n  <lf-dynamic-field-component\n    ngDefaultControl\n    [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\"\n    [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\"\n    [compareWith]=\"compareDateStrings\"\n  >\n  </lf-dynamic-field-component>\n}\n@if (getBrokenValidationRule()) {\n  <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { BaseFieldDirective } from '../base-field/base-field.directive';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { FieldFormat, FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { ValidationRule, ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\nimport { DynamicFieldComponent } from '../dynamic-field/dynamic-field.component';\n\n@Component({\n  selector: 'lf-number-field-component',\n  templateUrl: './number-field.component.html',\n  styleUrls: ['./number-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: BaseFieldDirective, useExisting: NumberFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n    provideNgxMask(),\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    NgxMaskDirective,\n    DynamicFieldComponent,\n  ],\n})\nexport class NumberFieldComponent extends BaseFieldDirective implements OnInit, AfterViewInit {\n  private readonly NUMBER_FIELD_MUST_BE_VALID_NUMBER = this.localizationService.getStringLaserficheObservable(\n    'NUMBER_FIELD_MUST_BE_VALID_NUMBER'\n  );\n  private readonly SHORT_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_64999 =\n    this.localizationService.getStringLaserficheObservable('SHORT_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_64999');\n  private readonly LONG_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_3999999999 =\n    this.localizationService.getStringLaserficheObservable('LONG_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_3999999999');\n\n  prefix: string | undefined;\n  suffix: string | undefined;\n  mask: string | undefined;\n  thousandSeparator: string | undefined;\n  decimalMarker: '.' | ',' | undefined;\n  separatorLimit: string | undefined;\n  focusState: boolean | undefined;\n\n  ngAfterViewInit() {\n    this.setMaskForNumber();\n  }\n\n  onFocusIn() {\n    this.focusState = true;\n    this.ref.detectChanges();\n  }\n\n  onFocusOut() {\n    this.focusState = false;\n    this.ref.detectChanges();\n  }\n\n  onEveryInputChange() {\n    this.ref.detectChanges();\n    super.onValueChanged(false);\n  }\n\n  protected override fieldOnValueChanged(): void {\n    if (\n      this.lf_field_info.fieldType === FieldType.Number &&\n      this.lf_field_form_control.hasError(ValidationRule.NUMBER)\n    ) {\n      this.lf_field_form_control.setValue('');\n    } else {\n      const currentValue = this.lf_field_form_control.value;\n      this.lf_field_form_control.setValue(currentValue ?? '');\n    }\n  }\n\n  override onValueChanged(emitEvent: boolean = true) {\n    const rawValue = this.lf_field_form_control.value;\n    if (typeof rawValue === 'number' && isNaN(rawValue)) {\n      this.setLfFieldFormControlValue('0');\n      this.lf_field_value = '0';\n      if (emitEvent) {\n        this.fieldValueChange.emit(this.lf_field_value);\n      }\n      return;\n    }\n    super.onValueChanged(emitEvent);\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    validators.push(this.getNumericValidator());\n    return validators;\n  }\n\n  getValidationTextForFieldType(rule: ValidationRule): Observable<string> | undefined {\n    switch (rule) {\n      case ValidationRule.NUMERIC:\n        return this.lf_field_info.constraintError ? of(this.lf_field_info.constraintError) : undefined;\n      case ValidationRule.NUMBER:\n        return this.NUMBER_FIELD_MUST_BE_VALID_NUMBER;\n      case ValidationRule.SHORT_INT:\n        return this.SHORT_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_64999;\n      case ValidationRule.LONG_INT:\n        return this.LONG_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_3999999999;\n    }\n    return undefined;\n  }\n\n  private getNumericValidator(): ValidatorFn {\n    const tokenRegexString = ''; // TODO: token stuff\n    const decimalSeparator = '.';\n    switch (this.lf_field_info.fieldType) {\n      case FieldType.ShortInteger:\n        const shortIntPattern = new RegExp(`^(|[0-9]{0,4}|[0-5][0-9]{4}|[6][0-4][0-9]{3}${tokenRegexString})$`, 'i');\n        return ValidationUtils.generalRegexValidator(shortIntPattern, ValidationRule.SHORT_INT);\n      case FieldType.LongInteger:\n        const longIntPattern = new RegExp(`^(|[0-9]{0,9}|[0-3][0-9]{9}${tokenRegexString})$`, 'i');\n        return ValidationUtils.generalRegexValidator(longIntPattern, ValidationRule.LONG_INT);\n      default:\n        const numberPattern = new RegExp(\n          `^(|[-](\\\\d{0,12}(\\\\` +\n            decimalSeparator +\n            `\\\\d{0,5})?|\\\\d{13}(\\\\` +\n            decimalSeparator +\n            `\\\\d{0,4})?)|[\\\\+]?\\\\d{0,13}(\\\\` +\n            decimalSeparator +\n            `\\\\d{0,5})?${tokenRegexString})$`,\n          'i'\n        );\n        return ValidationUtils.generalRegexValidator(numberPattern, ValidationRule.NUMBER);\n    }\n  }\n\n  numberOnly(event: KeyboardEvent) {\n    if (\n      this.lf_field_info.fieldType === FieldType.ShortInteger ||\n      this.lf_field_info.fieldType === FieldType.LongInteger\n    ) {\n      if (['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'].indexOf(event.key) === -1) {\n        event.preventDefault();\n      }\n    }\n  }\n\n  override getLfFieldFormControlValue(): string {\n    const value = this.lf_field_form_control.value;\n    if (value == null || value === '') return '';\n    if (typeof value === 'number' && isNaN(value)) return '';\n    return String(value);\n  }\n\n  serializeFieldFormControlValue(): string {\n    const rawValue = this.lf_field_form_control.value;\n    const currentValue = this.getLfFieldFormControlValue();\n    if (currentValue === '-' || (typeof rawValue === 'number' && isNaN(rawValue))) {\n      this.setLfFieldFormControlValue('0');\n      return '0';\n    }\n    if (this.lf_field_info.fieldType === FieldType.Number) {\n      const parsedNumber = Number.parseFloat(currentValue);\n      if (!isNaN(parsedNumber)) {\n        return parsedNumber.toString();\n      }\n    }\n    if (\n      this.lf_field_info.fieldType === FieldType.ShortInteger ||\n      this.lf_field_info.fieldType === FieldType.LongInteger\n    ) {\n      const parsedNumber = Number.parseInt(currentValue, 10);\n      if (!isNaN(parsedNumber)) {\n        return parsedNumber.toString();\n      }\n    }\n    return currentValue;\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? '';\n  }\n\n  private getSeparator(separatorType?: string): '.' | ',' {\n    const numberWithGroupAndDecimalSeparator: number = 11111.1;\n    const numberString = numberWithGroupAndDecimalSeparator.toLocaleString(navigator.language);\n    const separators = numberString.replace(/1/g, '');\n    if (separatorType === 'group') {\n      return separators.slice(0, 1) as '.' | ',';\n    } else {\n      return separators.slice(1, 2) as '.' | ',';\n    }\n  }\n\n  private setMaskForNumber() {\n    if (this.lf_field_info.fieldType === FieldType.Number) {\n      this.mask = 'separator.5';\n      this.separatorLimit = '10000000000000'; // 10,000,000,000,000\n      this.thousandSeparator = '';\n      this.decimalMarker = this.getSeparator();\n      if (this.lf_field_info.format === FieldFormat.Currency && this.lf_field_info.currency) {\n        this.prefix = `${this.lf_field_info.currency} `;\n        this.mask = 'separator.2';\n        this.thousandSeparator = this.getSeparator('group');\n      }\n      if (this.lf_field_info.format === FieldFormat.Percent) {\n        this.suffix = ' %';\n      }\n      this.ref.detectChanges();\n    }\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (!isDynamic) {\n  <span class=\"token-picker-field-box\">\n    @if (!containsToken) {\n      <mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-field\">\n        <input\n          #tokenTarget\n          mask=\"{{ mask }}\"\n          thousandSeparator=\"{{ thousandSeparator }}\"\n          [decimalMarker]=\"decimalMarker ?? '.'\"\n          prefix=\"{{ prefix }}\"\n          suffix=\"{{ suffix }}\"\n          [allowNegativeNumbers]=\"true\"\n          separatorLimit=\"{{ separatorLimit }}\"\n          matInput\n          type=\"text\"\n          [formControl]=\"lf_field_form_control\"\n          title=\"{{ lf_field_form_control.value }}\"\n          (keypress)=\"numberOnly($event)\"\n          (change)=\"onValueChanged()\"\n          (focus)=\"onFocusIn()\"\n          (focusout)=\"onFocusOut()\"\n          (input)=\"onEveryInputChange()\"\n        />\n        @if (focusState && this.lf_field_info.length) {\n          <mat-hint align=\"end\">\n            {{ noTokenCharacterCountHint | async }}\n          </mat-hint>\n        }\n        @if (getBrokenValidationRule()) {\n          <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n        }\n      </mat-form-field>\n    }\n  </span>\n} @else {\n  <lf-dynamic-field-component\n    ngDefaultControl\n    [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\"\n    [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\"\n  >\n  </lf-dynamic-field-component>\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BaseFieldDirective } from '../base-field/base-field.directive';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable } from 'rxjs';\n\n@Component({\n  selector: 'lf-list-field-component',\n  templateUrl: './list-field.component.html',\n  styleUrls: ['./list-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: BaseFieldDirective, useExisting: ListFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule],\n})\nexport class ListFieldComponent extends BaseFieldDirective implements OnInit {\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    return undefined;\n  }\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue(); // TODO: undo locale stuff before saving\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? ''; // TODO: get locale and do stuff\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    return [];\n  }\n\n  get listOptions(): string[] | undefined {\n    return this.isDynamic ? this.dynamic_field_value_options : this.lf_field_info.listValues;\n  }\n\n  protected override fieldOnValueChanged(): void {\n    const currentValue = this.lf_field_form_control.value;\n    this.lf_field_form_control.setValue(currentValue ?? '');\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-field lf-dropdown\">\n  <mat-select\n    panelClass=\"lf-dropdown-overlay\"\n    [formControl]=\"lf_field_form_control\"\n    title=\"{{ lf_field_form_control.value }}\"\n    (selectionChange)=\"onValueChanged()\"\n  >\n    <mat-option>--</mat-option>\n    @for (listOption of listOptions; track listOption) {\n      <mat-option [value]=\"listOption\">\n        {{ listOption }}\n      </mat-option>\n    }\n  </mat-select>\n  @if (getBrokenValidationRule()) {\n    <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n  }\n</mat-form-field>\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { FieldFormat } from '@laserfiche/lf-ui-components/shared';\nimport { ValidationRule, ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { DateTimeBaseFieldDirective } from '../base-field/datetime-base-field.directives';\nimport { UniDateTimeComponent } from '../../../../lf-date-time-picker/uni-date-time.component';\nimport { LfTokenPickerComponent } from '../../lf-token-picker/lf-token-picker.component';\nimport { DynamicFieldComponent } from '../dynamic-field/dynamic-field.component';\n\n@Component({\n  selector: 'lf-time-field-component',\n  templateUrl: './time-field.component.html',\n  styleUrls: ['./time-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: DateTimeBaseFieldDirective, useExisting: TimeFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    UniDateTimeComponent,\n    LfTokenPickerComponent,\n    DynamicFieldComponent,\n  ],\n})\nexport class TimeFieldComponent extends DateTimeBaseFieldDirective implements OnInit {\n  private timeDisplayFormat: string | undefined;\n  private TIME_FIELDS_MUST_BE_IN_THE_FORMAT_0: Observable<string> | undefined;\n\n  async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n    this.timeDisplayFormat = this.getTimeFormat();\n    this.TIME_FIELDS_MUST_BE_IN_THE_FORMAT_0 = this.localizationService.getStringLaserficheWithObservableParams(\n      'TIME_FIELDS_MUST_BE_IN_FORMAT_0',\n      [of(this.timeDisplayFormat)]\n    );\n    this.uniDateTimeSettings = {\n      showLabel: false,\n      readOnly: false,\n      combinedDateTime: false,\n      showTimeOnly: true,\n      timeFormat: this.timeDisplayFormat,\n      timePlaceholder: this.timeDisplayFormat,\n      defaultTimeOfDate: this.lf_field_value,\n    };\n\n    this.uniDateTimeConfig = {\n      storedValueTimeFormat: this.internalTimeFormat,\n      storedValueDateTimeFormat: '{TIME}',\n      language: navigator.language,\n      silent: false, // no internal strings and no custom error messages\n    };\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? ''; // TODO: check what format the API gives us Time in\n  }\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue();\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    validators.push(ValidationUtils.createTimeValidator());\n    return validators;\n  }\n\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    switch (validationRuleName) {\n      case ValidationRule.TIME:\n        return this.TIME_FIELDS_MUST_BE_IN_THE_FORMAT_0;\n    }\n    return undefined;\n  }\n\n  private getTimeFormat(): string {\n    if (this.timeDisplayFormat) {\n      return this.timeDisplayFormat;\n    }\n    switch (this.lf_field_info?.format) {\n      case FieldFormat.ShortTime:\n        return 'hh:mm A';\n      case FieldFormat.LongTime:\n        return 'hh:mm:ss A';\n      default:\n        return 'hh:mm:ss A';\n    }\n  }\n  async onTimeValueChangedAsync() {\n    if (this.containsToken) {\n      this.lf_field_form_control.clearValidators();\n    } else {\n      this.resetToDefaultValidators();\n    }\n    super.onDateOrTimeTokenValueChanged();\n    this.lf_field_form_control.updateValueAndValidity();\n  }\n\n  onTimeTokenChosen(token: string) {\n    const newFieldVal: string = this.createNewFieldValueWithToken(token);\n    if (this.tokenService.containsTokenForFieldType(newFieldVal, this.lf_field_info.fieldType, this.is_import_mode)) {\n      this.lf_field_form_control.clearValidators();\n      this.lf_field_form_control.updateValueAndValidity();\n    }\n    this.onTokenChosen(token);\n  }\n}\n","<!--Copyright Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (!isDynamic) {\n  <span class=\"token-picker-field-box\" [ngClass]=\"{ 'extra-space': !getBrokenValidationRule() }\">\n    @if (showTokenTextBox) {\n      <mat-form-field title=\"{{ lf_field_info.displayName }}\" appearance=\"outline\" class=\"lf-field\">\n        <input\n          #tokenTarget\n          matInput\n          type=\"text\"\n          [formControl]=\"lf_field_form_control\"\n          title=\"{{ lf_field_form_control.value }}\"\n          (change)=\"onTimeValueChangedAsync()\"\n        />\n      </mat-form-field>\n    }\n    @if (!showTokenTextBox) {\n      <lf-uni-date-time\n        #tokenTarget\n        class=\"lf-field\"\n        [config]=\"uniDateTimeConfig\"\n        [settings]=\"uniDateTimeSettings\"\n        (valueChangedEventHandler)=\"onUniDateOrTimeChanged($event)\"\n      >\n      </lf-uni-date-time>\n    }\n    <lf-token-picker-component\n      class=\"lf-field-token-picker\"\n      (tokenPicked)=\"onTimeTokenChosen($event)\"\n      [data]=\"lfFieldTokenData\"\n    >\n    </lf-token-picker-component>\n  </span>\n} @else {\n  <lf-dynamic-field-component\n    ngDefaultControl\n    [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\"\n    [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\"\n  >\n  </lf-dynamic-field-component>\n}\n@if (getBrokenValidationRule()) {\n  <mat-error>{{ fieldValidationErrorMsg | async }}</mat-error>\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\n\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { LfFieldInfo, LfFieldValue } from '../../../utils/lf-field-types';\nimport { DateTimeFieldComponent } from '../date-time-field/date-time-field.component';\nimport { TextFieldComponent } from '../text-field/text-field.component';\nimport { DateFieldComponent } from '../date-field/date-field.component';\nimport { NumberFieldComponent } from '../number-field/number-field.component';\nimport { ListFieldComponent } from '../list-field/list-field.component';\nimport { TimeFieldComponent } from '../time-field/time-field.component';\n\n@Component({\n  selector: 'lf-field-base-component',\n  templateUrl: './lf-field-base.component.html',\n  styleUrls: ['./lf-field-base.component.css'],\n  standalone: true,\n  imports: [\n    DateTimeFieldComponent,\n    TextFieldComponent,\n    DateFieldComponent,\n    NumberFieldComponent,\n    ListFieldComponent,\n    TimeFieldComponent,\n  ],\n})\nexport class LfFieldBaseComponent {\n  @Input() lfFieldInfo!: LfFieldInfo;\n  @Input() lfFieldFormControl!: FormControl;\n  @Input() lfFieldValue: LfFieldValue | undefined;\n  @Input() parentForm: FormGroup | undefined;\n  @Input() isImportMode: boolean = false;\n  @Input() dynamicFieldValueOptions: string[] | undefined;\n  @Output() fieldValueChange = new EventEmitter<LfFieldValue>();\n\n  constructor() {}\n\n  onChange(event: LfFieldValue) {\n    this.fieldValueChange.emit(event);\n  }\n\n  get fieldTypeString() {\n    return FieldType.String;\n  }\n\n  get fieldTypeDate() {\n    return FieldType.Date;\n  }\n\n  get fieldTypeDateTime() {\n    return FieldType.DateTime;\n  }\n\n  get fieldTypeList() {\n    return FieldType.List;\n  }\n\n  get fieldTypeLongInteger() {\n    return FieldType.LongInteger;\n  }\n\n  get fieldTypeNumber() {\n    return FieldType.Number;\n  }\n\n  get fieldTypeShortInteger() {\n    return FieldType.ShortInteger;\n  }\n\n  get fieldTypeTime() {\n    return FieldType.Time;\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<span class=\"field-box\">\n  @switch (lfFieldInfo.fieldType) {\n    @case (fieldTypeDateTime) {\n      <lf-date-time-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-date-time-field-component>\n    }\n    @case (fieldTypeString) {\n      <lf-text-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-text-field-component>\n    }\n    @case (fieldTypeDate) {\n      <lf-date-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-date-field-component>\n    }\n    @case (fieldTypeShortInteger) {\n      <lf-number-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-number-field-component>\n    }\n    @case (fieldTypeLongInteger) {\n      <lf-number-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-number-field-component>\n    }\n    @case (fieldTypeList) {\n      <lf-list-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-list-field-component>\n    }\n    @case (fieldTypeNumber) {\n      <lf-number-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-number-field-component>\n    }\n    @case (fieldTypeTime) {\n      <lf-time-field-component\n        [parent_form]=\"parentForm\"\n        [lf_field_form_control]=\"lfFieldFormControl\"\n        [lf_field_info]=\"lfFieldInfo\"\n        [lf_field_value]=\"lfFieldValue\"\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\"\n        (fieldValueChange)=\"onChange($event)\"\n      >\n      </lf-time-field-component>\n    }\n  }\n</span>\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\n\nimport { ReactiveFormsModule, FormControl, FormGroup, FormBuilder } from '@angular/forms';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { LfLoaderComponent } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldValue, LfFieldInfo, LfFieldValue } from '../utils/lf-field-types';\nimport { LfFieldBaseComponent } from '../field-base-parts/lf-field-base/lf-field-base/lf-field-base.component';\n\n@Component({\n  selector: 'lf-field-component',\n  templateUrl: './lf-field.component.html',\n  styleUrls: ['./lf-field.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [ReactiveFormsModule, LfLoaderComponent, LfFieldBaseComponent],\n})\nexport class LfFieldComponent {\n  /**@internal */\n  private fb = inject(FormBuilder);\n  /**@internal */\n  private ref = inject(ChangeDetectorRef);\n\n  /** @internal */\n  lfFieldInfo!: LfFieldInfo;\n  /** @internal */\n  lfFieldValue: LfFieldValue = '';\n  /** @internal */\n  singleFieldParentForm: FormGroup;\n  /** @internal */\n  showLoader: boolean = false;\n\n  /** @internal */\n  @Output() fieldValueChanged = new EventEmitter<string>();\n  /** @internal */\n  dynamicFieldValueOptions: string[] | undefined;\n  /** @internal */\n  showField: boolean = false;\n\n  /** @internal */\n  constructor() {\n    this.singleFieldParentForm = this.fb.group({\n      singleField: [this.lfFieldValue],\n    });\n  }\n\n  /** @internal */\n  getSingleField(): FormControl {\n    return this.singleFieldParentForm.get('singleField') as FormControl;\n  }\n\n  /** @internal */\n  isValid(): boolean {\n    return this.singleFieldParentForm.valid;\n  }\n\n  /** @internal */\n  @Input()\n  forceValidation = (): boolean => {\n    this.getSingleField().markAsDirty();\n    this.getSingleField().updateValueAndValidity();\n    return this.isValid();\n  };\n\n  /** @internal */\n  getOptions() {\n    const options = this.dynamicFieldValueOptions;\n    return options;\n  }\n\n  /** @internal */\n  @Input()\n  initAsync = async (\n    field: LfFieldInfo,\n    fieldValue: LfFieldValue = '',\n    dynamicFieldValueOptions?: string[]\n  ): Promise<void> => {\n    this.lfFieldInfo = CoreUtils.validateDefined(field, 'field');\n    this.lfFieldValue = this.getInitialValue(fieldValue);\n    if (this.lfFieldInfo.fieldType === FieldType.Blob) {\n      console.warn('Blob field not supported');\n    } else if (!(this.lfFieldInfo.fieldType in FieldType)) {\n      throw new Error('FieldType not supported.');\n    } else {\n      this.showField = true;\n    }\n    this.dynamicFieldValueOptions = dynamicFieldValueOptions;\n    this.ref.detectChanges();\n    this.removeInvalidFieldValues(this.lfFieldValue);\n  };\n\n  /** @internal */\n  private removeInvalidFieldValues(fieldValue: string) {\n    const isValid = this.isValid();\n    if (!isValid) {\n      this.getSingleField().setValue('');\n      fieldValue = '';\n      this.lfFieldValue = fieldValue;\n      this.ref.detectChanges();\n    }\n  }\n\n  /** @internal */\n  private getInitialValue(fieldValue: string): string {\n    if (!fieldValue || fieldValue.length === 0) {\n      const defaultValue = this.lfFieldInfo.defaultValue;\n      if (defaultValue) {\n        fieldValue = defaultValue;\n      }\n    }\n    return fieldValue ?? '';\n  }\n\n  /** @internal */\n  @Input()\n  getFieldValue = (): FieldValue => {\n    const fieldVal: FieldValue = {\n      fieldName: this.lfFieldInfo.name,\n      fieldId: this.lfFieldInfo.id,\n      fieldType: this.lfFieldInfo.fieldType,\n      values: [\n        {\n          value: this.lfFieldValue,\n          position: '1',\n        },\n      ],\n    };\n    return fieldVal;\n  };\n\n  /** @internal */\n  fieldDataChange(value: LfFieldValue) {\n    this.lfFieldValue = value;\n    this.fieldValueChanged.emit(value);\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  get isLoading(): boolean {\n    return this.showLoader;\n  }\n\n  /** @internal */\n  set isLoading(val: boolean) {\n    this.showLoader = val;\n    this.ref.detectChanges();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (showField) {\n  <span class=\"lf-field-container\" id=\"lf-field-container\">\n    @if (lfFieldInfo.name) {\n      <span class=\"lf-field-title-container\">\n        <span class=\"lf-field-title\" title=\"{{ lfFieldInfo.displayName }}\">{{ lfFieldInfo.displayName }}</span>\n        @if (lfFieldInfo.isRequired) {\n          <span class=\"lf-field-is-required\">*</span>\n        }\n        @if (isLoading) {\n          <lf-loader-component></lf-loader-component>\n        }\n      </span>\n    }\n    <form class=\"lf-field-form\" [formGroup]=\"singleFieldParentForm\">\n      <lf-field-base-component\n        [parentForm]=\"singleFieldParentForm\"\n        [lfFieldFormControl]=\"getSingleField()\"\n        [dynamicFieldValueOptions]=\"getOptions()\"\n        [lfFieldInfo]=\"lfFieldInfo\"\n        [lfFieldValue]=\"lfFieldValue\"\n        (fieldValueChange)=\"fieldDataChange($event)\"\n      ></lf-field-base-component>\n    </form>\n  </span>\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\n\nimport { ReactiveFormsModule, FormGroup, FormBuilder, FormArray, FormControl } from '@angular/forms';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { LfLoaderComponent } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldValue, LfFieldInfo, LfFieldValue } from '../utils/lf-field-types';\nimport { LfFieldBaseComponent } from '../field-base-parts/lf-field-base/lf-field-base/lf-field-base.component';\n\n@Component({\n  selector: 'lf-field-multivalue-component',\n  templateUrl: './lf-field-multivalue.component.html',\n  styleUrls: ['./lf-field-multivalue.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [ReactiveFormsModule, LfLoaderComponent, LfFieldBaseComponent],\n})\nexport class LfFieldMultivalueComponent {\n  /**@internal */\n  private fb = inject(FormBuilder);\n  /**@internal */\n  private cdr = inject(ChangeDetectorRef);\n\n  /** @internal */\n  lfFieldInfo!: LfFieldInfo;\n  /** @internal */\n  lfFieldValues: LfFieldValue[] = [];\n  /** @internal */\n  multiValueFieldParentForm: FormGroup;\n  /** @internal */\n  showLoader: boolean = false;\n\n  /** @internal */\n  @Output() fieldValuesChanged = new EventEmitter<{ fieldValues: LfFieldValue[]; indexChanged: number }>();\n  /** @internal */\n  dynamicFieldOptions: string[][] | undefined;\n  /** @internal */\n  showField: boolean = false;\n\n  /** @internal */\n  constructor() {\n    this.multiValueFieldParentForm = this.fb.group({\n      fieldArray: new FormArray([]),\n    });\n  }\n\n  /** @internal */\n  private getArray(): FormArray {\n    return this.multiValueFieldParentForm.get('fieldArray') as FormArray;\n  }\n\n  /** @internal */\n  getSingleField(index: number): FormControl {\n    return this.getArray().controls[index] as FormControl;\n  }\n\n  /** @internal */\n  getLfFieldInfo(currentIndex: number): LfFieldInfo {\n    if (currentIndex === 0) {\n      return this.lfFieldInfo;\n    } else {\n      const optional = Object.assign({}, this.lfFieldInfo);\n      optional.isRequired = false;\n      return optional;\n    }\n  }\n\n  /** @internal */\n  isValid(): boolean {\n    return this.multiValueFieldParentForm.valid;\n  }\n\n  /** @internal */\n  @Input()\n  initAsync = async (\n    fieldDefinition: LfFieldInfo,\n    fieldValues: LfFieldValue[] = [],\n    dynamicFieldOptions?: string[][]\n  ): Promise<void> => {\n    this.lfFieldInfo = CoreUtils.validateDefined(fieldDefinition, 'fieldDefinition');\n    this.dynamicFieldOptions = dynamicFieldOptions;\n    if (this.lfFieldInfo.fieldType === FieldType.Blob) {\n      console.warn('Blob field not supported');\n    } else if (!(this.lfFieldInfo.fieldType in FieldType)) {\n      throw new Error('FieldType not supported.');\n    } else {\n      this.showField = true;\n    }\n    if ((!fieldValues || fieldValues.length === 0) && this.lfFieldInfo.defaultValue) {\n      this.lfFieldValues = [this.lfFieldInfo.defaultValue];\n    } else {\n      this.lfFieldValues = fieldValues.filter((val) => val !== undefined && val.trim().length > 0);\n    }\n    this.syncFormControlDataToFieldValues();\n\n    if (!this.isValid()) {\n      this.removeInvalidFieldValues();\n    }\n  };\n\n  /** @internal */\n  @Input()\n  forceValidation: () => boolean = () => {\n    this.getArray().controls.forEach((control) => {\n      control.markAsDirty();\n      control.updateValueAndValidity();\n    });\n    return this.isValid();\n  };\n\n  /** @internal */\n  private removeInvalidFieldValues() {\n    this.getArray().controls.forEach((control, index) => {\n      const value = control.value;\n      if (!control.valid && value && value.trim().length > 0) {\n        control.setValue('');\n        this.lfFieldValues[index] = '';\n      }\n    });\n    if (this.isValid()) {\n      this.lfFieldValues = this.lfFieldValues.filter((value) => value && value.trim().length > 0);\n      this.syncFormControlDataToFieldValues();\n    }\n  }\n\n  /** @internal */\n  getOptions() {\n    const options =\n      this.dynamicFieldOptions && this.dynamicFieldOptions.length > 0 ? this.dynamicFieldOptions[0] : undefined;\n    return options;\n  }\n\n  /** @internal */\n  syncFormControlDataToFieldValues() {\n    this.getArray().clear();\n    if (this.lfFieldValues) {\n      this.lfFieldValues.forEach((val) => {\n        this.getArray().push(new FormControl(val));\n      });\n      if (this.lfFieldValues.length === 0 || this.lfFieldValues[this.lfFieldValues.length - 1] !== undefined) {\n        this.addNewBlankField();\n      }\n    }\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  @Input()\n  getFieldValue: () => FieldValue = () => {\n    // Clean up blank inputs if valid\n    if (this.isValid()) {\n      this.lfFieldValues = this.lfFieldValues.filter((value) => value && value.trim().length > 0);\n      this.syncFormControlDataToFieldValues();\n    }\n\n    let fieldValues = this.lfFieldValues\n      .filter((value) => value && value.trim().length > 0)\n      .map((lfFieldValue, index) => {\n        return {\n          value: lfFieldValue,\n          position: (index + 1).toString(),\n        };\n      });\n\n    if (fieldValues?.length === 0) {\n      fieldValues = [{ value: '', position: '1' }];\n    }\n\n    const fieldVal: FieldValue = {\n      fieldName: this.lfFieldInfo.name,\n      fieldId: this.lfFieldInfo.id,\n      fieldType: this.lfFieldInfo?.fieldType,\n      values: fieldValues,\n    };\n\n    return fieldVal;\n  };\n\n  /** @internal */\n  onChange(value: LfFieldValue, indexChanged: number) {\n    this.lfFieldValues[indexChanged] = value;\n    const isValidMultiValueFieldValue =\n      this.isLastInArray(indexChanged) && this.fieldHasValue(value) && this.lastValueIsValid();\n    // Let this row's value-change settle in its own change detection pass before growing the\n    // array. Otherwise @for's diffing sees a removed key and two added keys in the same pass and\n    // can recycle the removed row's view/component (with its now-stale flatpickr state) into the\n    // newly-added blank row instead of creating it fresh.\n    this.cdr.detectChanges();\n    if (isValidMultiValueFieldValue) {\n      this.addNewBlankField();\n    }\n    this.fieldValuesChanged.emit({ fieldValues: this.lfFieldValues, indexChanged });\n  }\n\n  /** @internal */\n  private lastValueIsValid() {\n    const lastIndex: number = this.getArray().length - 1;\n    return this.getArray().controls[lastIndex].valid;\n  }\n\n  /** @internal */\n  private fieldHasValue(value: string) {\n    return value?.trim().length > 0;\n  }\n\n  /** @internal */\n  private isLastInArray(index: number) {\n    return index === this.getArray().length - 1;\n  }\n\n  /** @internal */\n  private addNewBlankField() {\n    this.lfFieldValues.push('');\n    this.getArray().push(new FormControl(''));\n\n    // Hack: if the field is required, and the value above is deleted,\n    // this one will immediately show required error even if not touched by user\n    const lastIndex: number = this.getArray().length - 1;\n    if (lastIndex !== 0) {\n      this.getArray().controls[lastIndex].markAsDirty();\n    }\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  removeField(indexChanged: number) {\n    this.lfFieldValues.splice(indexChanged, 1);\n    this.getArray().removeAt(indexChanged);\n    this.cdr.detectChanges();\n    this.fieldValuesChanged.emit({ fieldValues: this.lfFieldValues, indexChanged });\n  }\n\n  /** @internal */\n  trackByIndex(index: number, option: string) {\n    const res = `${index}${option}`;\n    return res;\n  }\n\n  /** @internal */\n  get isLoading(): boolean {\n    return this.showLoader;\n  }\n\n  /** @internal */\n  set isLoading(val: boolean) {\n    this.showLoader = val;\n    this.cdr.detectChanges();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n@if (showField) {\n  <span class=\"lf-field-title-container\">\n    <span class=\"lf-field-title\" title=\"{{ lfFieldInfo.displayName }}\">{{ lfFieldInfo.displayName }}</span>\n    @if (lfFieldInfo.isRequired) {\n      <span class=\"lf-field-is-required\">*</span>\n    }\n    @if (isLoading) {\n      <lf-loader-component></lf-loader-component>\n    }\n  </span>\n  <form class=\"lf-field-form\" [formGroup]=\"multiValueFieldParentForm\">\n    @for (\n      lfFieldValue of lfFieldValues;\n      track trackByIndex(currentIndex, lfFieldValue);\n      let currentIndex = $index;\n      let isLast = $last\n    ) {\n      <span class=\"single-field-container\">\n        <lf-field-base-component\n          [parentForm]=\"multiValueFieldParentForm\"\n          [lfFieldFormControl]=\"getSingleField(currentIndex)\"\n          [lfFieldInfo]=\"getLfFieldInfo(currentIndex)\"\n          [lfFieldValue]=\"lfFieldValue\"\n          [dynamicFieldValueOptions]=\"getOptions()\"\n          (fieldValueChange)=\"onChange($event, currentIndex)\"\n        >\n        </lf-field-base-component>\n        @if (!isLast && lfFieldValues.length > 1) {\n          <button class=\"lf-multivalue-remove-button\" (click)=\"removeField(currentIndex)\">\n            <span class=\"material-icons\" id=\"lf-multivalue-remove-icon\"> close </span>\n          </button>\n        }\n        @if (isLast && lfFieldValues.length > 1) {\n          <span class=\"lf-multivalue-remove-span\"></span>\n        }\n      </span>\n    }\n  </form>\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { FieldValue, FieldValues } from './field-components/utils/lf-field-types';\n\n/** @internal */\n@Injectable({\n  providedIn: 'root',\n})\nexport class LfFieldMetadataConnectorService {\n  private allFieldValues: FieldValues = {};\n  private readonly templateFields = new BehaviorSubject<number[]>([]);\n  private readonly adhocFieldsRefresh = new Subject<void>();\n  private readonly adhocDialogOpened = new Subject<boolean>();\n\n  constructor() {}\n\n  setFieldValue(fieldValue: FieldValue) {\n    this.allFieldValues[fieldValue.fieldId] = fieldValue;\n  }\n\n  setAllFieldValues(fieldValues: FieldValues) {\n    this.allFieldValues = fieldValues;\n  }\n\n  getAllFieldValues(): FieldValues {\n    return this.allFieldValues;\n  }\n\n  clearAllFieldValues(): void {\n    this.allFieldValues = {};\n    this.selectTemplateFields([]);\n  }\n\n  selectTemplateFields(newFields: number[]) {\n    this.templateFields.next(newFields);\n  }\n\n  getTemplateFields(): Observable<number[]> {\n    return this.templateFields;\n  }\n\n  adhocFieldDataUpdated(): Observable<void> {\n    return this.adhocFieldsRefresh;\n  }\n\n  updatedAdhocFieldData() {\n    this.adhocFieldsRefresh.next();\n  }\n\n  setAddRemoveContainerToggled(open: boolean) {\n    this.adhocDialogOpened.next(open);\n  }\n\n  getAddRemoveContainerToggled() {\n    return this.adhocDialogOpened;\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Directive, ViewContainerRef, inject } from '@angular/core';\n\n/** @internal */\n@Directive({\n  selector: '[lfFieldView]',\n  standalone: true,\n})\nexport class LfFieldViewDirective {\n  viewContainerRef = inject(ViewContainerRef);\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { ComponentRef, Directive, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { LfFieldMetadataConnectorService } from './lf-field-metadata-connector.service';\nimport { AdhocFieldInfo } from './lf-field-adhoc-container/lf-field-adhoc-container-types';\nimport { LfFieldViewDirective } from './lf-field-view.directive';\nimport { LfFieldComponent } from './field-components/lf-field/lf-field.component';\nimport { LfFieldMultivalueComponent } from './field-components/lf-field-multivalue/lf-field-multivalue.component';\nimport { LfFieldGroupComponent } from './field-components/lf-field-group/lf-field-group.component';\nimport {\n  FieldValue,\n  FieldValues,\n  LfFieldInfo,\n  LfFieldValue,\n  TemplateFieldInfo,\n} from './field-components/utils/lf-field-types';\n\n@Directive()\nexport abstract class LfFieldContainerDirective {\n  /** @internal */\n  public metadataFieldConnectorService = inject(LfFieldMetadataConnectorService);\n\n  @Output() fieldValuesChanged = new EventEmitter<boolean>();\n\n  /** @internal */\n  @ViewChild(LfFieldViewDirective) lfFieldView!: LfFieldViewDirective;\n  /** @internal */\n  componentRefs: ComponentRef<LfFieldComponent | LfFieldMultivalueComponent>[] = [];\n  /** @internal */\n  groupComponentRefs: ComponentRef<LfFieldGroupComponent>[] = [];\n  /** @internal */\n  allFieldInfos: (TemplateFieldInfo | LfFieldInfo | AdhocFieldInfo)[] = [];\n  /** @internal */\n  allFieldValues: FieldValues = {};\n  /** @internal */\n  private readonly VALUE_ACCESSOR = 'value';\n\n  /** @internal */\n  constructor() {}\n\n  /** @internal */\n  abstract clearAsync(): Promise<void>;\n  /** @internal */\n  abstract onFieldValueChangedAsync(\n    fieldValues: string[],\n    lfFieldInfo: LfFieldInfo,\n    indicesChanged?: number[]\n  ): Promise<void>;\n  /** @internal */\n  abstract renderFieldsAsync(fieldInfos: (TemplateFieldInfo | LfFieldInfo | AdhocFieldInfo)[]): Promise<void>;\n  /** @internal */\n  abstract multivalueComponentInitAsync(\n    componentRef: ComponentRef<LfFieldMultivalueComponent>,\n    fieldInfo: LfFieldInfo,\n    stringValues: LfFieldValue[]\n  ): Promise<void>;\n  /** @internal */\n  abstract fieldComponentInitAsync(\n    componentRef: ComponentRef<LfFieldComponent>,\n    fieldInfo: LfFieldInfo,\n    stringValues: LfFieldValue\n  ): Promise<void>;\n\n  @Input()\n  forceValidation = (): boolean => {\n    let valid: boolean = true;\n    this.componentRefs?.forEach((componentRef) => {\n      if (!componentRef.instance.forceValidation()) {\n        valid = false;\n      }\n    });\n    this.groupComponentRefs?.forEach((componentRef) => {\n      if (!componentRef.instance.forceValidation()) {\n        valid = false;\n      }\n    });\n    return valid;\n  };\n\n  /**\n   * @internal\n   * Returns whether container is valid without forcing validation\n   */\n  isValid(): boolean {\n    const valid: boolean = this.componentRefs?.every((component) => component.instance.isValid()) ?? true;\n    const groupsValid = this.groupComponentRefs?.every((component) => component.instance.isValid()) ?? true;\n    return valid && groupsValid;\n  }\n\n  /** @internal */\n  setFieldValue(fieldId: number, values: string[]): void {\n    const fieldValue = this.getOrCreateFieldValue(fieldId);\n    const formattedValues: { position: string; value: string }[] =\n      values?.map((value, index) => {\n        return { value, position: (index + 1).toString() };\n      }) ?? [];\n    if (formattedValues?.length > 0) {\n      fieldValue.values = formattedValues;\n    }\n    this.allFieldValues[fieldId] = fieldValue;\n    this.metadataFieldConnectorService.setFieldValue(fieldValue);\n  }\n\n  /** @internal */\n  getOrCreateFieldValue(fieldId: number): FieldValue {\n    if (!(fieldId in this.allFieldValues)) {\n      const val = this.createDefaultFieldValue(fieldId);\n      this.allFieldValues[fieldId] = val;\n      this.metadataFieldConnectorService.setFieldValue(val);\n    }\n    return this.allFieldValues[fieldId];\n  }\n\n  /** @internal */\n  protected async initializeFieldComponentAsync(\n    fieldComponentRef: ComponentRef<LfFieldComponent>,\n    fieldInfo: LfFieldInfo,\n    value: string\n  ) {\n    await this.fieldComponentInitAsync(fieldComponentRef, fieldInfo, value);\n    fieldComponentRef.instance.fieldValueChanged.subscribe(async (updatedValue: string) => {\n      await this.onFieldValueChangedAsync([updatedValue], fieldComponentRef.instance.lfFieldInfo);\n    });\n  }\n\n  /** @internal */\n  protected async initializeMultivalueComponentAsync(\n    multivalueComponentRef: ComponentRef<LfFieldMultivalueComponent>,\n    fieldInfo: LfFieldInfo,\n    stringValues: string[]\n  ): Promise<void> {\n    await this.multivalueComponentInitAsync(multivalueComponentRef, fieldInfo, stringValues);\n    multivalueComponentRef.instance.fieldValuesChanged.subscribe(\n      async (fieldChange: { fieldValues: string[]; indexChanged: number }) => {\n        await this.onFieldValueChangedAsync(fieldChange.fieldValues, multivalueComponentRef.instance.lfFieldInfo, [\n          fieldChange.indexChanged,\n        ]);\n      }\n    );\n  }\n\n  /** @internal */\n  protected getValuesById(fieldId: number): string[] {\n    const fieldValue: FieldValue = this.getOrCreateFieldValue(fieldId);\n    const stringValues =\n      fieldValue.values?.map((value) => {\n        return value[this.VALUE_ACCESSOR];\n      }) ?? [];\n    return stringValues;\n  }\n\n  /** @internal */\n  private createDefaultFieldValue(fieldId: number): FieldValue {\n    const templateFieldInfo = this.allFieldInfos?.find((fieldInfo) => fieldInfo?.id === fieldId);\n    if (!templateFieldInfo) {\n      throw new Error(`createDefaultFieldValue: Field ${fieldId} not found`);\n    }\n    const defaultFieldValue = this.createFieldValueFromFieldInfo(templateFieldInfo);\n    return defaultFieldValue;\n  }\n\n  /** @internal */\n  private createFieldValueFromFieldInfo(field: LfFieldInfo): FieldValue {\n    return { fieldName: field.name, fieldId: field.id, fieldType: field.fieldType };\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  ChangeDetectorRef,\n  Input,\n  ViewChild,\n  OnDestroy,\n  ComponentRef,\n  AfterViewInit,\n  EventEmitter,\n  Output,\n  inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LfFieldAdhocContainerService as LfFieldAdhocContainerService } from './lf-field-adhoc-container.service';\nimport { AdhocFieldConnectorService } from './lf-field-adhoc-connector.service';\nimport { AdhocFieldInfo } from './lf-field-adhoc-container-types';\nimport { Subscription } from 'rxjs';\nimport { LfFieldAddRemoveComponent } from './lf-field-add-remove/lf-field-add-remove.component';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldValue, FieldValues, LfFieldInfo } from '../field-components/utils/lf-field-types';\nimport { LfFieldComponent } from '../field-components/lf-field/lf-field.component';\nimport { LfFieldMultivalueComponent } from '../field-components/lf-field-multivalue/lf-field-multivalue.component';\nimport { LfFieldMetadataConnectorService } from '../lf-field-metadata-connector.service';\nimport { LfFieldContainerDirective } from '../lf-field-container.directive';\nimport { LfFieldViewDirective } from '../lf-field-view.directive';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\n\n@Component({\n  selector: 'lf-field-adhoc-container',\n  templateUrl: './lf-field-adhoc-container.component.html',\n  styleUrls: ['./lf-field-adhoc-container.component.css'],\n  providers: [AdhocFieldConnectorService],\n  standalone: true,\n  imports: [CommonModule, LfFieldViewDirective, LfFieldAddRemoveComponent],\n})\nexport class LfFieldAdhocContainerComponent extends LfFieldContainerDirective implements OnDestroy, AfterViewInit {\n  /**@internal */\n  private adhocFieldConnectorService = inject(AdhocFieldConnectorService);\n  /**@internal */\n  private ref = inject(ChangeDetectorRef);\n  /**@internal */\n  private localizationService = inject(AppLocalizationService);\n\n  /** @internal */\n  @ViewChild(LfFieldAddRemoveComponent) addRemoveComponent!: LfFieldAddRemoveComponent;\n  @Output() dialogOpened = new EventEmitter<void>();\n  @Output() dialogClosed = new EventEmitter<void>();\n\n  /** @internal */\n  readonly ADD_REMOVE_FIELDS = this.localizationService.getStringLaserficheObservable('ADD_REMOVE_FIELDS');\n\n  /** @internal */\n  readonly NO_ADDITIONAL_FIELDS_ASSIGNED = this.localizationService.getStringLaserficheObservable(\n    'NO_ADDITIONAL_FIELDS_ASSIGNED'\n  );\n\n  /** @internal */\n  showAdhocModal: boolean = false;\n  /** @internal */\n  adhocFieldContainerService!: LfFieldAdhocContainerService;\n  /** @internal */\n  templateFields: number[] = [];\n  /** @internal */\n  private selectedFieldIds: Set<number> = new Set<number>();\n  /** @internal */\n  private templateFieldsSub: Subscription | undefined;\n\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  /** @internal */\n  ngAfterViewInit() {\n    this.templateFieldsSub = this.metadataFieldConnectorService\n      .getTemplateFields()\n      .subscribe(async (currentTemplateFields) => {\n        this.templateFields = currentTemplateFields;\n        await this.refreshFieldsAsync();\n      });\n  }\n\n  /** @internal */\n  ngOnDestroy() {\n    this.templateFieldsSub?.unsubscribe();\n    this.resetComponentValues();\n  }\n\n  @Input()\n  getFieldValues = (): { [fieldName: string]: FieldValue } => {\n    const fieldValues: { [fieldName: string]: FieldValue } = {};\n    this.componentRefs?.forEach((componentRef) => {\n      const fieldValue = componentRef.instance.getFieldValue();\n      const fieldName = fieldValue.fieldName ?? undefined;\n      if (fieldName !== undefined) {\n        fieldValues[fieldName] = fieldValue;\n      } else {\n        console.warn('FieldValue.fieldName is undefined, skipping.');\n      }\n    });\n    return fieldValues;\n  };\n\n  @Input()\n  clearAsync = async (): Promise<void> => {\n    this.resetComponentValues();\n    this.metadataFieldConnectorService.clearAllFieldValues();\n    await this.resetFieldDataAsync([]);\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  initAsync = async (adhocFieldContainerService: LfFieldAdhocContainerService): Promise<void> => {\n    this.resetComponentValues();\n    this.adhocFieldContainerService = CoreUtils.validateDefined(\n      adhocFieldContainerService,\n      'adhocFieldContainerService'\n    );\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  resetFieldDataAsync = async (fields: { value: FieldValue; definition: LfFieldInfo }[]): Promise<void> => {\n    this.loadSelectedFieldValues(fields);\n    await this.refreshFieldsAsync();\n    this.metadataFieldConnectorService.updatedAdhocFieldData();\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  updateFieldValuesAsync = async (values: FieldValue[]): Promise<void> => {\n    values.forEach((field) => {\n      this.allFieldValues[field.fieldId] = field;\n    });\n\n    this.metadataFieldConnectorService.setAllFieldValues(this.allFieldValues);\n    await this.refreshFieldsAsync();\n    this.metadataFieldConnectorService.updatedAdhocFieldData();\n    this.ref.markForCheck();\n  };\n\n  /** @internal */\n  private resetComponentValues() {\n    this.templateFields = [];\n    this.metadataFieldConnectorService.setAllFieldValues({});\n    this.adhocFieldConnectorService.setSelectedFieldIds(new Set<number>());\n  }\n\n  /** @internal */\n  async renderFieldsAsync(fieldInfos: (LfFieldInfo | AdhocFieldInfo)[]): Promise<void> {\n    const vf = this.lfFieldView.viewContainerRef;\n    vf.clear();\n    this.componentRefs = [];\n    this.groupComponentRefs = [];\n\n    for (const fieldInfo of fieldInfos) {\n      const values = this.getValuesById(fieldInfo.id) ?? [];\n      if (fieldInfo.isMultiValue) {\n        const multivalueComponentRef = vf.createComponent(LfFieldMultivalueComponent);\n        this.componentRefs.push(multivalueComponentRef);\n        await this.initializeMultivalueComponentAsync(multivalueComponentRef, fieldInfo, values);\n      } else {\n        const fieldComponentRef = vf.createComponent(LfFieldComponent);\n        this.componentRefs.push(fieldComponentRef);\n        await this.initializeFieldComponentAsync(fieldComponentRef, fieldInfo, values?.length > 0 ? values[0] : '');\n      }\n    }\n  }\n\n  /** @internal */\n  async fieldComponentInitAsync(\n    fieldComponentRef: ComponentRef<LfFieldComponent>,\n    fieldInfo: LfFieldInfo,\n    value: string\n  ) {\n    await fieldComponentRef.instance.initAsync(fieldInfo, value);\n  }\n\n  /** @internal */\n  async multivalueComponentInitAsync(\n    multivalueFieldComponentRef: ComponentRef<LfFieldMultivalueComponent>,\n    fieldInfo: LfFieldInfo,\n    values: string[]\n  ) {\n    await multivalueFieldComponentRef.instance.initAsync(fieldInfo, values);\n  }\n\n  /** @internal */\n  private loadSelectedFieldValues(fields: { value: FieldValue; definition: LfFieldInfo }[]): void {\n    this.getInitialSelectedOptions(fields);\n    this.adhocFieldConnectorService.setSelectedFieldIds(this.selectedFieldIds);\n  }\n\n  /** @internal */\n  getMappedFieldValues(fieldValues: FieldValue[]): FieldValues {\n    const mappedFields: FieldValues = {};\n    fieldValues.forEach((fieldValue) => {\n      mappedFields[fieldValue.fieldId] = fieldValue;\n    });\n    return mappedFields;\n  }\n\n  /** @internal */\n  getFieldIds(fieldValues: FieldValue[]): Set<number> {\n    const fieldsSet = new Set<number>();\n    fieldValues.forEach((fieldValue) => {\n      fieldsSet.add(fieldValue.fieldId);\n    });\n    return fieldsSet;\n  }\n\n  /** @internal */\n  private getInitialSelectedOptions(fields: { value: FieldValue; definition: LfFieldInfo }[]): void {\n    const mappedFields = fields ?? [];\n\n    const fieldInfos: LfFieldInfo[] = [];\n    const fieldValues: FieldValue[] = [];\n    mappedFields.forEach((field) => {\n      if (field.value && field.definition) {\n        fieldInfos.push(field.definition);\n        fieldValues.push(field.value);\n      } else {\n        // skip field\n      }\n    });\n\n    this.allFieldInfos = fieldInfos;\n    this.allFieldValues = this.getMappedFieldValues(fieldValues);\n    this.adhocFieldConnectorService.setAllFieldInfos(this.allFieldInfos);\n    this.selectedFieldIds = this.getFieldIds(fieldValues);\n    this.metadataFieldConnectorService.setAllFieldValues(this.allFieldValues);\n  }\n\n  /** @internal */\n  fieldsEmpty() {\n    const isEmpty = !this.componentRefs || this.componentRefs?.length === 0;\n    return isEmpty;\n  }\n\n  /** @internal */\n  async addRemoveFieldsAsync(adhocPanel?: HTMLElement): Promise<void> {\n    this.toggleAdhocModal(true, adhocPanel);\n    await this.addRemoveComponent.initAsync(this.adhocFieldContainerService);\n    const fieldDefinitions = this.adhocFieldConnectorService.getAllFieldInfos();\n    this.updateTemplateFields(fieldDefinitions);\n    await this.addRemoveComponent.updateSortedFieldInfos();\n  }\n\n  /** @internal */\n  async onClickBackAsync(): Promise<void> {\n    this.toggleAdhocModal(false);\n    await this.refreshFieldsAsync();\n  }\n\n  /** @internal */\n  private toggleAdhocModal(open: boolean, panel?: HTMLElement) {\n    this.showAdhocModal = open;\n    this.metadataFieldConnectorService.setAddRemoveContainerToggled(open);\n    if (open) {\n      this.dialogOpened.emit();\n      setTimeout(() => panel?.focus());\n    } else {\n      this.dialogClosed.emit();\n    }\n  }\n\n  /** @internal */\n  async refreshFieldsAsync(): Promise<void> {\n    const fieldValues = this.metadataFieldConnectorService.getAllFieldValues() ?? {};\n    this.allFieldValues = { ...this.allFieldValues, ...fieldValues };\n    this.selectedFieldIds = this.adhocFieldConnectorService.getSelectedFieldIds();\n    const fieldInfosToRender = this.getSelectedFieldInfos();\n    await this.renderFieldsAsync(fieldInfosToRender);\n  }\n\n  /** @internal */\n  getSelectedFieldInfos(): LfFieldInfo[] {\n    this.allFieldInfos = this.adhocFieldConnectorService.getAllFieldInfos();\n    this.updateTemplateFields(this.allFieldInfos);\n    const fieldInfos: LfFieldInfo[] = this.allFieldInfos?.filter(\n      (fieldInfo) => this.selectedFieldIds.has(fieldInfo.id) && !(fieldInfo as AdhocFieldInfo).inTemplateSelected\n    );\n    return fieldInfos ?? [];\n  }\n\n  /** @internal */\n  private updateTemplateFields(fieldInfos: AdhocFieldInfo[]) {\n    fieldInfos?.forEach((fieldInfo) => {\n      if (this.templateFields?.includes(fieldInfo.id)) {\n        fieldInfo.inTemplateSelected = true;\n      } else {\n        fieldInfo.inTemplateSelected = false;\n      }\n    });\n  }\n\n  /** @internal */\n  async onFieldValueChangedAsync(values: string[], fieldInfo: LfFieldInfo): Promise<void> {\n    this.fieldValuesChanged.emit(this.isValid());\n    this.setFieldValue(fieldInfo.id, values);\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div class=\"adhoc-container\" [hidden]=\"showAdhocModal\">\n  <div>\n    <button\n      title=\"{{ ADD_REMOVE_FIELDS | async }}\"\n      id=\"adhoc-add-remove-button\"\n      class=\"lf-ellipsis-label sec-button lf-button adhoc-add-remove-button\"\n      (click)=\"addRemoveFieldsAsync(adhocPanel)\"\n    >\n      {{ ADD_REMOVE_FIELDS | async }}\n    </button>\n    @if (fieldsEmpty()) {\n      <div class=\"fields-empty lf-ellipsis-label\" title=\"{{ NO_ADDITIONAL_FIELDS_ASSIGNED | async }}\">\n        {{ NO_ADDITIONAL_FIELDS_ASSIGNED | async }}\n      </div>\n    }\n    <div class=\"responsive-form-container\">\n      <ng-template lfFieldView></ng-template>\n    </div>\n  </div>\n</div>\n<div [hidden]=\"!showAdhocModal\" class=\"addRemoveModal\" class=\"adhoc-modal\">\n  <div class=\"adhoc-modal-content\" #adhocPanel tabindex=\"0\">\n    <lf-field-add-remove-component (clickBack)=\"onClickBackAsync()\"></lf-field-add-remove-component>\n  </div>\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { StringUtils } from '@laserfiche/lf-js-utils';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * Pipe that formats a string '{0} of {1}' with the given parameters\n */\n@Pipe({\n  name: 'lfFieldGroupIndexDisplay',\n  standalone: true,\n})\nexport class LfFieldGroupIndexDisplayPipe implements PipeTransform {\n  constructor() {}\n\n  /**\n   * Formats the given string with the two expected params\n   * @param res_0_of_1 Localized string in the form '{0} of {1}'\n   * @param currentIndex The current index of the group (0-indexed)\n   * @param totalNumber The total number of groups\n   * @returns The string formatted with the given numbers. Adds one to the current index.\n   * Returns undefined if the string does not contain 2 params\n   */\n  transform(res_0_of_1: Observable<string>, currentIndex: number, totalNumber: number): Observable<string> {\n    const stringObservable = res_0_of_1.pipe(\n      map((stringToFormat) => {\n        try {\n          return StringUtils.formatString(stringToFormat, [(currentIndex + 1).toString(), totalNumber.toString()]);\n        } catch (err: any) {\n          console.warn('Unable to format string', err.message);\n          return stringToFormat;\n        }\n      })\n    );\n    return stringObservable;\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { CdkDragDrop, moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { AppLocalizationService, LfLoaderComponent } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldDefinition } from '../utils/lf-field-internal-types';\nimport { FieldValue, TemplateFieldInfo } from '../utils/lf-field-types';\nimport { isDynamicField } from '../utils/metadata-utils';\nimport { LfFieldBaseComponent } from '../field-base-parts/lf-field-base/lf-field-base/lf-field-base.component';\nimport { LfFieldGroupIndexDisplayPipe } from './lf-field-group-index-display.pipe';\n\n@Component({\n  selector: 'lf-field-group-component',\n  templateUrl: './lf-field-group.component.html',\n  styleUrls: ['./lf-field-group.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    DragDropModule,\n    LfLoaderComponent,\n    LfFieldBaseComponent,\n    LfFieldGroupIndexDisplayPipe,\n  ],\n})\nexport class LfFieldGroupComponent {\n  /**@internal */\n  private fb = inject(FormBuilder);\n  /**@internal */\n  private ref = inject(ChangeDetectorRef);\n  /**@internal */\n  localizationService = inject(AppLocalizationService);\n\n  /** @internal */\n  fieldDefinitions: FieldDefinition[] = [];\n  /** @internal */\n  fieldGroups: FormArray<FormGroup>;\n  /** @internal */\n  fieldValues: Map<number, FieldValue> = new Map<number, FieldValue>();\n  /** @internal */\n  groupId: number = 0;\n  /** @internal */\n  dynamicFieldOptions: Map<number, string[][]> | undefined;\n\n  /** @internal */\n  @Output() fieldValuesChanged = new EventEmitter<{ fieldValue: FieldValue; indicesChanged?: number[] }>();\n  /** @internal */\n  showLoaderIndex: number | undefined = undefined;\n\n  /** @internal */\n  readonly res_0_of_1 = this.localizationService.getStringLaserficheObservable('0_OF_1', ['{0}', '{1}']);\n\n  /** @internal */\n  constructor() {\n    this.fieldGroups = this.fb.array<FormGroup>([]);\n  }\n\n  /** @internal */\n  @Input()\n  getFieldValues = (): Map<number, FieldValue> => {\n    return this.fieldValues;\n  };\n\n  /** @internal */\n  @Input()\n  initAsync = async (\n    fieldDefinitions: FieldDefinition[],\n    dynamicFieldOptions?: Map<number, string[][]>\n  ): Promise<void> => {\n    this.fieldDefinitions = fieldDefinitions ?? [];\n    this.groupId = fieldDefinitions[0]?.fieldInfo?.groupId ?? 0;\n    this.dynamicFieldOptions = dynamicFieldOptions;\n    this.setFieldGroups(fieldDefinitions);\n    this.ref.detectChanges();\n  };\n\n  /** @internal */\n  getOptions(fieldInfo: TemplateFieldInfo, index: number) {\n    const optionsForFieldInfo = this.dynamicFieldOptions?.get(fieldInfo.id);\n    const options = optionsForFieldInfo ? optionsForFieldInfo[index] : undefined;\n    return options;\n  }\n\n  /** @internal */\n  @Input()\n  forceValidation: () => boolean = () => {\n    let isValid: boolean = true;\n    const groups = this.fieldGroupControlsArray();\n    groups.forEach((group) => {\n      this.fieldDefinitions.forEach((definition) => {\n        const fieldInfo = definition.fieldInfo;\n        const control = group.get(fieldInfo.id.toString());\n        control?.markAsDirty();\n        control?.updateValueAndValidity();\n        const valid = control?.valid;\n        if (!valid) {\n          isValid = false;\n        }\n      });\n    });\n    return isValid;\n  };\n\n  /** @internal */\n  isLoading(fieldInfo: TemplateFieldInfo, currentIndex: number): boolean {\n    if (this.showLoaderIndex !== undefined) {\n      if (currentIndex === this.showLoaderIndex && isDynamicField(fieldInfo)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /** @internal */\n  @Input()\n  showLoader(index: number) {\n    this.showLoaderIndex = index;\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  private setFieldGroups(fieldDefinitions: FieldDefinition[]) {\n    this.fieldGroups.clear();\n    const numGroups = fieldDefinitions[0].fieldValues?.length ?? 1;\n    for (let fieldNumber = 0; fieldNumber < numGroups; fieldNumber++) {\n      const formGroup: FormGroup = new FormGroup({});\n      fieldDefinitions.forEach((fieldDef) => {\n        if (fieldDef.fieldValues && fieldDef.fieldValues.length !== numGroups) {\n          // TODO localize\n          throw new Error('Number of fieldValues is not ' + numGroups + ' for fieldId: ' + fieldDef.fieldInfo.id);\n        }\n        if (fieldDef.fieldInfo.fieldType === FieldType.Blob) {\n          console.warn('Blob field not supported');\n        } else if (!(fieldDef.fieldInfo.fieldType in FieldType)) {\n          throw new Error('FieldType not supported.');\n        } else {\n          this.addFieldFormControl(fieldDef, fieldNumber, formGroup);\n        }\n      });\n      this.fieldGroups.push(formGroup);\n    }\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  private addFieldFormControl(fieldDef: FieldDefinition, fieldNumber: number, formGroup: FormGroup) {\n    const fieldValues = fieldDef.fieldValues;\n    const fieldValue = fieldValues ? fieldValues[fieldNumber] : '';\n    const fieldInfo = fieldDef.fieldInfo;\n\n    let initialValue: string | undefined;\n    if (fieldValue && fieldValue.length > 0) {\n      initialValue = fieldValue;\n    } else if (fieldInfo.defaultValue) {\n      initialValue = fieldInfo.defaultValue;\n    }\n\n    this.updateFieldValues(fieldInfo, initialValue, fieldNumber);\n    const formControl = new FormControl(initialValue ?? '');\n    formGroup.addControl(fieldInfo.id.toString(), formControl);\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  private updateFieldValues(fieldInfo: TemplateFieldInfo, initialValue: string | undefined, fieldNumber: number) {\n    const prevValues = this.fieldValues.get(fieldInfo.id);\n    const newValue = { value: initialValue ?? '', position: (fieldNumber + 1).toString() };\n    if (prevValues) {\n      prevValues.values?.push(newValue);\n    } else {\n      const newConfig: FieldValue = {\n        fieldName: fieldInfo.name,\n        fieldId: fieldInfo.id,\n        fieldType: fieldInfo.fieldType,\n        groupId: fieldInfo.groupId ?? 0,\n        values: [newValue],\n      };\n      this.fieldValues.set(fieldInfo.id, newConfig);\n    }\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  fieldDataChange(event: string, fieldInfo: TemplateFieldInfo, indexChanged: number) {\n    const fieldValue = this.fieldValues.get(fieldInfo.id);\n    if (fieldValue?.values) {\n      fieldValue.values[indexChanged]['value'] = event;\n    }\n    if (fieldValue) {\n      this.fieldValuesChanged.emit({ fieldValue, indicesChanged: [indexChanged] });\n    }\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  getSingleField(index: number, fieldId: number): FormControl {\n    const group = this.fieldGroupControlsArray()[index];\n    return group.get(fieldId.toString()) as FormControl;\n  }\n\n  /** @internal */\n  isValid(): boolean {\n    let isValid: boolean = true;\n    const groups = this.fieldGroupControlsArray();\n    groups.forEach((group) => {\n      this.fieldDefinitions.forEach((definition) => {\n        const fieldInfo = definition.fieldInfo;\n        const control = group.get(fieldInfo.id.toString());\n        const valid = control?.valid;\n        if (!valid) {\n          isValid = false;\n        }\n      });\n    });\n    return isValid;\n  }\n\n  /** @internal */\n  onDragAndDrop(event: CdkDragDrop<FormGroup[]>) {\n    const first: number = Math.min(event.previousIndex, event.currentIndex);\n    const last: number = Math.max(event.previousIndex, event.currentIndex);\n    const indicesChanged: number[] = [];\n    for (let tracker = first; tracker <= last; tracker++) {\n      indicesChanged.push(tracker);\n    }\n    moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      moveItemInArray(fieldValue?.values ?? [], event.previousIndex, event.currentIndex);\n      this.resetPositionValues(fieldValue);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged });\n      }\n    });\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  fieldGroupControlsArray(): FormGroup[] {\n    return this.fieldGroups.controls;\n  }\n\n  /** @internal */\n  onClickDelete(index: number) {\n    this.fieldGroups.removeAt(index);\n    const numIndices = this.fieldGroupControlsArray().length;\n    const indicesChanged: number[] = [];\n    for (let tracker = index; tracker < numIndices; tracker++) {\n      indicesChanged.push(tracker);\n    }\n    this.fieldValues.forEach((fieldValue) => {\n      fieldValue.values?.splice(index, 1);\n      this.resetPositionValues(fieldValue);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged });\n      }\n    });\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  private resetPositionValues(fieldValue: FieldValue | undefined) {\n    fieldValue?.values?.forEach((value, currIndex) => {\n      value['position'] = (currIndex + 1).toString();\n    });\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  onClickAdd(currentIndex: number) {\n    const formGroup: FormGroup = new FormGroup({});\n    const numIndices = this.fieldGroupControlsArray().length + 1;\n    const indicesChanged: number[] = [];\n    for (let tracker = currentIndex + 1; tracker < numIndices; tracker++) {\n      indicesChanged.push(tracker);\n    }\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      let val: string | undefined;\n      if (fieldInfo.defaultValue) {\n        val = fieldInfo.defaultValue;\n      }\n      const newValue = {\n        value: val ?? '',\n        position: (currentIndex + 2).toString(),\n      };\n      fieldValue?.values?.splice(currentIndex + 1, 0, newValue);\n      this.resetPositionValues(fieldValue);\n      const formControl = new FormControl(val ?? '');\n      formGroup.addControl(fieldInfo.id.toString(), formControl);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged });\n      }\n    });\n    this.fieldGroups.insert(currentIndex + 1, formGroup);\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  onClickUp(currentIndex: number) {\n    moveItemInArray(this.fieldGroupControlsArray(), currentIndex, currentIndex - 1);\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      const prevOne = fieldValue?.values ? fieldValue.values[currentIndex - 1] : {};\n      prevOne['position'] = (Number.parseInt(prevOne['position']) + 1).toString();\n      const thisOne = fieldValue?.values ? fieldValue.values[currentIndex] : {};\n      thisOne['position'] = (Number.parseInt(thisOne['position']) - 1).toString();\n      moveItemInArray(fieldValue?.values ?? [], currentIndex, currentIndex - 1);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged: [currentIndex, currentIndex - 1] });\n      }\n    });\n    this.ref.detectChanges();\n  }\n\n  /** @internal */\n  onClickDown(currentIndex: number) {\n    moveItemInArray(this.fieldGroupControlsArray(), currentIndex, currentIndex + 1);\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      const nextOne = fieldValue?.values ? fieldValue.values[currentIndex + 1] : {};\n      nextOne['position'] = (Number.parseInt(nextOne['position']) - 1).toString();\n      const thisOne = fieldValue?.values ? fieldValue.values[currentIndex] : {};\n      thisOne['position'] = (Number.parseInt(thisOne['position']) + 1).toString();\n      moveItemInArray(fieldValue?.values ?? [], currentIndex, currentIndex + 1);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged: [currentIndex, currentIndex + 1] });\n      }\n    });\n    this.ref.detectChanges();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div cdkDropList [cdkDropListData]=\"fieldGroupControlsArray()\" (cdkDropListDropped)=\"onDragAndDrop($event)\">\n  @for (group of fieldGroupControlsArray(); track group; let currentIndex = $index) {\n    <div cdkDrag class=\"lf-field-group\">\n      <div class=\"field-group-top-bar\">\n        <span class=\"drag-index-section\">\n          <span class=\"material-icons field-group-button field-group-drag-handle\" cdkDragHandle> drag_indicator </span>\n          <span class=\"index-display\">{{\n            res_0_of_1 | lfFieldGroupIndexDisplay: currentIndex : fieldGroupControlsArray().length | async\n          }}</span>\n        </span>\n        <span class=\"field-group-buttons\">\n          <button class=\"field-group-button\" (click)=\"onClickAdd(currentIndex)\">\n            <span class=\"material-icons\"> add </span>\n          </button>\n          <button class=\"field-group-button\" [disabled]=\"currentIndex === 0\" (click)=\"onClickUp(currentIndex)\">\n            <span class=\"material-icons\"> arrow_upward </span>\n          </button>\n          <button\n            class=\"field-group-button\"\n            [disabled]=\"currentIndex >= fieldGroupControlsArray().length - 1\"\n            (click)=\"onClickDown(currentIndex)\"\n          >\n            <span class=\"material-icons\"> arrow_downward </span>\n          </button>\n          <button\n            class=\"field-group-button\"\n            [disabled]=\"fieldGroupControlsArray().length <= 1\"\n            (click)=\"onClickDelete(currentIndex)\"\n          >\n            <span class=\"material-icons-outlined\"> delete </span>\n          </button>\n        </span>\n      </div>\n      @for (fieldDef of fieldDefinitions; track fieldDef) {\n        <div>\n          <span class=\"lf-field-container\" id=\"lf-field-container\">\n            @if (fieldDef?.fieldInfo?.name) {\n              <span class=\"lf-field-title-container\">\n                <span class=\"lf-field-title\" title=\"{{ fieldDef?.fieldInfo?.displayName }}\">{{\n                  fieldDef?.fieldInfo?.displayName\n                }}</span>\n                @if (fieldDef?.fieldInfo?.isRequired) {\n                  <span class=\"lf-field-is-required\">*</span>\n                }\n                @if (isLoading(fieldDef.fieldInfo, currentIndex)) {\n                  <lf-loader-component></lf-loader-component>\n                }\n              </span>\n            }\n            <lf-field-base-component\n              id=\"{{ fieldDef.fieldInfo.name }}{{ currentIndex }}\"\n              [parentForm]=\"group\"\n              [lfFieldFormControl]=\"getSingleField(currentIndex, fieldDef.fieldInfo.id)\"\n              [lfFieldValue]=\"getSingleField(currentIndex, fieldDef.fieldInfo.id).value\"\n              [lfFieldInfo]=\"fieldDef.fieldInfo\"\n              [dynamicFieldValueOptions]=\"getOptions(fieldDef.fieldInfo, currentIndex)\"\n              (fieldValueChange)=\"fieldDataChange($event, fieldDef.fieldInfo, currentIndex)\"\n            >\n            </lf-field-base-component>\n          </span>\n        </div>\n      }\n    </div>\n  }\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\n/**\n * @internal\n */\nexport enum DropDownState {\n  DEFAULT = 'default',\n  LOADING = 'isLoading',\n  HAS_ERROR = 'hasError',\n}\n\n/**\n * @internal\n */\nexport enum TemplateState {\n  DEFAULT = 'default',\n  LOADING = 'isLoading',\n  HAS_ERROR = 'hasError',\n  SHOW_TEMPLATE = 'showTemplate',\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnDestroy,\n  ComponentRef,\n  ViewContainerRef,\n  AfterViewInit,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule, MatSelectChange } from '@angular/material/select';\nimport { map, Observable, Subscription } from 'rxjs';\nimport { LfFieldMetadataConnectorService } from '../lf-field-metadata-connector.service';\nimport { LfFieldContainerDirective } from '../lf-field-container.directive';\nimport { LfFieldTemplateContainerService } from './lf-field-template-container.service';\nimport { LfFieldTemplateProviders } from './lf-field-template-container-types';\nimport {\n  FieldValue,\n  FieldValues,\n  LfFieldInfo,\n  TemplateFieldInfo,\n  TemplateInfo,\n  TemplateValue,\n} from '../field-components/utils/lf-field-types';\nimport { LfFieldComponent } from '../field-components/lf-field/lf-field.component';\nimport { LfFieldMultivalueComponent } from '../field-components/lf-field-multivalue/lf-field-multivalue.component';\nimport { LfFieldGroupComponent } from '../field-components/lf-field-group/lf-field-group.component';\nimport { FieldDefinition } from '../field-components/utils/lf-field-internal-types';\nimport { isDynamicField } from '../field-components/utils/metadata-utils';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { AppLocalizationService, LfLoaderComponent } from '@laserfiche/lf-ui-components/internal-shared';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { DropDownState, TemplateState } from './lf-field-template-container-states';\nimport { LfFieldViewDirective } from '../lf-field-view.directive';\n\n@Component({\n  selector: 'lf-field-template-container',\n  templateUrl: './lf-field-template-container.component.html',\n  styleUrls: ['./lf-field-template-container.component.css'],\n  standalone: true,\n  imports: [CommonModule, MatFormFieldModule, MatSelectModule, LfLoaderComponent, LfFieldViewDirective],\n})\nexport class LfFieldTemplateContainerComponent extends LfFieldContainerDirective implements AfterViewInit, OnDestroy {\n  /**@internal */\n  private localizationService = inject(AppLocalizationService);\n  /**@internal */\n  private ref = inject(ChangeDetectorRef);\n\n  @Output() templateSelectedChange = new EventEmitter<number>();\n\n  /** @internal */\n  hideTemplate: boolean = false;\n  /** @internal */\n  availableTemplates: TemplateInfo[] = [];\n  /** @internal */\n  loadedTemplates: boolean = false;\n  /** @internal */\n  templateFieldContainerService!: LfFieldTemplateContainerService;\n  /** @internal */\n  templateErrorMessage: Observable<string> | undefined;\n  /** @internal */\n  readonly emptyTemplateName: Observable<string> =\n    this.localizationService.getStringLaserficheObservable('NO_TEMPLATE_ASSIGNED');\n  /** @internal */\n  templateSelected: TemplateInfo | undefined;\n  /** @internal */\n  dynamicOptions: Map<number, string[][]> = new Map<number, string[][]>();\n  /** @internal */\n  private adhocFieldsSub: Subscription | undefined;\n  /** @internal */\n  private adhocDialogOpenedSub: Subscription | undefined;\n  /** @internal */\n  readonly AN_ERROR_OCCURED = this.localizationService.getStringLaserficheObservable('AN_ERROR_OCCURED');\n  /** @internal */\n  dropdownState: DropDownState = DropDownState.DEFAULT;\n  /** @internal */\n  templateState: TemplateState = TemplateState.DEFAULT;\n\n  /** @internal */\n  private readonly TEMPLATE_HAS_FAILED_TO_LOAD =\n    this.localizationService.getStringLaserficheObservable('TEMPLATE_HAS_FAILED_TO_LOAD');\n\n  /** @internal */\n  ngAfterViewInit() {\n    this.adhocFieldsSub = this.metadataFieldConnectorService.adhocFieldDataUpdated().subscribe(async () => {\n      if (this.templateFieldContainerService) {\n        await this.updateTemplateFieldsAsync();\n      }\n    });\n    this.adhocDialogOpenedSub = this.metadataFieldConnectorService\n      .getAddRemoveContainerToggled()\n      .subscribe(async (addRemovedOpened) => {\n        this.hideTemplate = addRemovedOpened;\n      });\n  }\n\n  /** @internal */\n  ngOnDestroy(): void {\n    this.adhocFieldsSub?.unsubscribe();\n    this.adhocDialogOpenedSub?.unsubscribe();\n    this.resetComponentValues();\n  }\n\n  @Input()\n  initAsync = async (providers: LfFieldTemplateProviders, templateIdentifier?: number | string): Promise<void> => {\n    this.resetComponentValues();\n    this.templateFieldContainerService = CoreUtils.validateDefined(\n      providers.templateFieldContainerService,\n      'templateFieldContainerService'\n    );\n    await this.selectTemplateAsync(templateIdentifier);\n    if (this.templateSelected) {\n      await this.updateTemplateFieldsAsync();\n    }\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  clearAsync = async (): Promise<void> => {\n    this.resetComponentValues();\n    this.metadataFieldConnectorService.clearAllFieldValues();\n    await this.renderFieldsAsync(this.allFieldInfos);\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  getTemplateValue: () => TemplateValue | undefined = () => {\n    if (!this.templateSelected) {\n      return undefined;\n    }\n\n    const fieldValues: { [key: string]: FieldValue } = {};\n    this.componentRefs?.forEach((componentRef) => {\n      const fieldValue = componentRef.instance.getFieldValue();\n      // TODO: should key by id, not name?\n      fieldValues[fieldValue.fieldName as string] = fieldValue;\n    });\n    this.groupComponentRefs?.forEach((componentRef) => {\n      const mappedFieldValues = componentRef.instance.getFieldValues();\n      mappedFieldValues.forEach((fieldValue) => {\n        // TODO: should key by id, not name?\n        fieldValues[fieldValue.fieldName as string] = fieldValue;\n      });\n    });\n    return { name: this.templateSelected.name as string, id: this.templateSelected.id, fieldValues };\n  };\n\n  /** @internal */\n  get isDropdownError(): boolean {\n    return this.dropdownState === DropDownState.HAS_ERROR;\n  }\n\n  /** @internal */\n  get isDropdownLoading(): boolean {\n    return this.dropdownState === DropDownState.LOADING;\n  }\n\n  /** @internal */\n  get isDropdownDefault(): boolean {\n    return this.dropdownState === DropDownState.DEFAULT;\n  }\n\n  /** @internal */\n  get isTemplateLoading(): boolean {\n    return this.templateState === TemplateState.LOADING;\n  }\n\n  /** @internal */\n  get isTemplateError(): boolean {\n    return this.templateState === TemplateState.HAS_ERROR;\n  }\n\n  /** @internal */\n  get isTemplateDisplay(): boolean {\n    return this.templateState === TemplateState.SHOW_TEMPLATE;\n  }\n\n  /** @internal */\n  private resetComponentValues() {\n    this.templateSelected = undefined;\n    this.allFieldInfos = [];\n    this.templateErrorMessage = undefined;\n    this.loadedTemplates = false;\n    this.availableTemplates = [];\n    this.allFieldValues = {};\n    this.metadataFieldConnectorService.setAllFieldValues({});\n    this.templateState = TemplateState.DEFAULT;\n  }\n\n  /** @internal */\n  async renderFieldsAsync(fieldInfos: (TemplateFieldInfo | LfFieldInfo)[]): Promise<void> {\n    if (this.templateState === TemplateState.SHOW_TEMPLATE) {\n      this.ref.detectChanges();\n      if (!this.lfFieldView) {\n        console.warn('Fields not displayed: lfFieldView not available.');\n        return;\n      }\n      const vf = this.lfFieldView.viewContainerRef;\n      vf.clear();\n      this.componentRefs = [];\n      this.groupComponentRefs = [];\n\n      const fieldGroups: Map<number, FieldDefinition[]> = new Map<number, FieldDefinition[]>();\n      for (const fieldInfo of fieldInfos) {\n        const values = this.getValuesById(fieldInfo.id) ?? [];\n        const templateFieldInfo: TemplateFieldInfo = fieldInfo as TemplateFieldInfo;\n        if (templateFieldInfo?.groupId && fieldInfo.isMultiValue) {\n          const groupCurrentFieldDefinitions = fieldGroups.get(templateFieldInfo.groupId);\n          const newDef: FieldDefinition = {\n            fieldInfo: templateFieldInfo,\n            fieldValues: values.length > 0 ? values : [''],\n          };\n          if (groupCurrentFieldDefinitions) {\n            this.addDefinitionToExistingGroup(groupCurrentFieldDefinitions, newDef);\n          } else {\n            this.createAndAddNewGroupRef(vf, templateFieldInfo.groupId, fieldGroups, newDef);\n          }\n        } else if (fieldInfo.isMultiValue) {\n          const multivalueComponentRef = vf.createComponent(LfFieldMultivalueComponent);\n          this.componentRefs.push(multivalueComponentRef);\n          await this.initializeMultivalueComponentAsync(multivalueComponentRef, fieldInfo, values);\n        } else {\n          const fieldComponentRef = vf.createComponent(LfFieldComponent);\n          this.componentRefs.push(fieldComponentRef);\n          await this.initializeFieldComponentAsync(fieldComponentRef, fieldInfo, values?.length > 0 ? values[0] : '');\n        }\n      }\n      for (const mapItem of fieldGroups) {\n        await this.initializeFieldGroupAsync(mapItem);\n      }\n      this.ref.detectChanges();\n    } else {\n      console.warn(`Fields not displayed in current template state: ${this.templateState}.`);\n    }\n  }\n\n  /** @internal */\n  private async initializeFieldGroupAsync(mapItem: [number, FieldDefinition[]]) {\n    const groupId = mapItem[0];\n    const group = mapItem[1];\n    const fieldGroupComponentRef = this.groupComponentRefs?.find((component) => component.instance.groupId === groupId);\n    if (fieldGroupComponentRef) {\n      await this.initializeFieldGroupComponentAsync(fieldGroupComponentRef, group);\n    } else {\n      console.warn('Unable to initialize fieldGroup', groupId);\n    }\n  }\n\n  /** @internal */\n  private addDefinitionToExistingGroup(groupCurrentFieldDefinitions: FieldDefinition[], newDef: FieldDefinition) {\n    groupCurrentFieldDefinitions.push(newDef);\n  }\n\n  /** @internal */\n  private createAndAddNewGroupRef(\n    vf: ViewContainerRef,\n    groupId: number,\n    fieldGroups: Map<number, FieldDefinition[]>,\n    newDef: FieldDefinition\n  ) {\n    const fieldGroupComponentRef = vf.createComponent(LfFieldGroupComponent);\n    fieldGroupComponentRef.instance.groupId = groupId;\n    this.groupComponentRefs.push(fieldGroupComponentRef);\n    fieldGroups.set(groupId, [newDef]);\n  }\n\n  /** @internal */\n  private async initializeFieldGroupComponentAsync(\n    fieldGroupComponentRef: ComponentRef<LfFieldGroupComponent>,\n    group: FieldDefinition[]\n  ) {\n    const firstLength = group[0]?.fieldValues?.length ?? 1;\n    const sameSizeGroups = group.every((def) => (def.fieldValues?.length ?? 1) === firstLength);\n    if (sameSizeGroups) {\n      await fieldGroupComponentRef.instance.initAsync(group, this.dynamicOptions);\n      fieldGroupComponentRef.instance.fieldValuesChanged.subscribe(\n        async (fieldChange: { fieldValue: FieldValue; indicesChanged: number[] }) => {\n          const fieldValue = fieldChange.fieldValue;\n          const id = fieldValue.fieldId;\n          const vals: string[] = fieldValue.values ? fieldValue.values?.map((value) => value['value'] ?? '') : [''];\n          const fieldInfo = this.allFieldInfos.find((fieldInfo) => fieldInfo.id === id) as TemplateFieldInfo;\n          await this.onFieldValueChangedAsync(vals, fieldInfo, fieldChange.indicesChanged);\n        }\n      );\n    }\n  }\n\n  /** @internal */\n  async fieldComponentInitAsync(\n    fieldComponentRef: ComponentRef<LfFieldComponent>,\n    fieldInfo: LfFieldInfo,\n    value: string\n  ) {\n    const optionsForFieldInfo = this.dynamicOptions.get(fieldInfo.id);\n    await fieldComponentRef.instance.initAsync(\n      fieldInfo,\n      value,\n      optionsForFieldInfo ? optionsForFieldInfo[0] : undefined\n    );\n  }\n\n  /** @internal */\n  async multivalueComponentInitAsync(\n    multivalueFieldComponentRef: ComponentRef<LfFieldMultivalueComponent>,\n    fieldInfo: LfFieldInfo,\n    values: string[]\n  ) {\n    await multivalueFieldComponentRef.instance.initAsync(fieldInfo, values, this.dynamicOptions.get(fieldInfo.id));\n  }\n\n  /** @internal */\n  compareTemplateInfoFunc(object1: TemplateInfo, object2: TemplateInfo) {\n    return object1 && object2 && object1.id == object2.id;\n  }\n\n  /** @internal */\n  async onToggleDropdownAsync(open: boolean): Promise<void> {\n    if (open && !this.loadedTemplates) {\n      try {\n        this.dropdownState = DropDownState.LOADING;\n        this.availableTemplates = await this.templateFieldContainerService.getAvailableTemplatesAsync();\n        this.dropdownState = DropDownState.DEFAULT;\n        this.loadedTemplates = true;\n        if (this.availableTemplates.length === 0) {\n          this.templateState = TemplateState.DEFAULT;\n        }\n        this.ref.markForCheck();\n      } catch (err) {\n        this.dropdownState = DropDownState.HAS_ERROR;\n        this.templateSelected = undefined;\n        this.templateState = TemplateState.DEFAULT;\n        this.ref.markForCheck();\n        console.error('getAvailableTemplatesAsync', err);\n      }\n    }\n  }\n\n  /** @internal */\n  async onTemplateChangedAsync(event: MatSelectChange): Promise<void> {\n    this.templateSelected = (event.value as TemplateInfo) ?? undefined;\n    await this.updateTemplateFieldsAsync();\n    this.templateSelectedChange.emit(this.templateSelected?.id);\n  }\n\n  /** @internal */\n  private async selectTemplateAsync(id: number | string | undefined): Promise<void> {\n    if (id === undefined) {\n      this.templateSelected = undefined;\n    } else {\n      try {\n        this.templateState = TemplateState.LOADING;\n        this.templateSelected = (await this.templateFieldContainerService.getTemplateDefinitionAsync(\n          id\n        )) as TemplateInfo;\n        if (!this.templateSelected) {\n          this.templateState = TemplateState.DEFAULT;\n          return;\n        }\n        if (!this.loadedTemplates && this.templateSelected) {\n          this.availableTemplates = [this.templateSelected];\n        }\n        this.templateState = TemplateState.SHOW_TEMPLATE;\n      } catch (error: any) {\n        if (error instanceof TypeError) {\n          this.templateSelected = undefined;\n          this.templateState = TemplateState.DEFAULT;\n        } else {\n          this.templateErrorMessage = this.TEMPLATE_HAS_FAILED_TO_LOAD.pipe(\n            map((message) => `${message} ${error.message}`)\n          );\n          this.templateState = TemplateState.HAS_ERROR;\n        }\n        console.error('getTemplateDefinitionAsync failed: ' + error.message);\n      }\n    }\n  }\n\n  /** @internal */\n  private async updateTemplateFieldsAsync(): Promise<void> {\n    await this.updateTemplateFieldInfoAsync();\n    this.allFieldValues = this.metadataFieldConnectorService.getAllFieldValues() ?? {};\n    const newFieldIds: number[] = this.allFieldInfos.map((fieldInfo) => fieldInfo.id);\n    this.metadataFieldConnectorService.selectTemplateFields(newFieldIds);\n    const noErrorOccurred = this.templateState === TemplateState.LOADING;\n    if (noErrorOccurred) {\n      this.templateState = TemplateState.SHOW_TEMPLATE;\n    }\n    await this.renderFieldsAsync(this.allFieldInfos);\n  }\n\n  /** @internal */\n  private async updateTemplateFieldInfoAsync(): Promise<void> {\n    await this.updateAllFieldInfosFromServiceAsync();\n\n    const baseDynamicFields = this.allFieldInfos.filter(\n      (fieldInfo): fieldInfo is TemplateFieldInfo =>\n        isDynamicField(fieldInfo) && (fieldInfo as TemplateFieldInfo).rule?.ancestors.length === 0\n    );\n    const noDynamicFieldsToInitialize = baseDynamicFields.length === 0;\n    if (noDynamicFieldsToInitialize) {\n      return;\n    }\n\n    let dynamicFieldValueOptions: { [fieldId: number]: string[] } = {};\n    try {\n      dynamicFieldValueOptions = await this.getDynamicFieldValueOptionsAsync(0);\n    } catch (err: unknown) {\n      this.templateState = TemplateState.HAS_ERROR;\n      this.templateErrorMessage = this.TEMPLATE_HAS_FAILED_TO_LOAD;\n      let consoleErrMsg = 'getDynamicFieldValueOptionsAsync failed';\n      if (err instanceof Error) {\n        consoleErrMsg += ': ' + err.message;\n      }\n      console.error(consoleErrMsg);\n      throw err;\n    }\n\n    for (const fieldInfo of baseDynamicFields) {\n      await this.initBaseDynamicFieldAsync(fieldInfo, dynamicFieldValueOptions);\n    }\n  }\n\n  /** @internal */\n  private async initBaseDynamicFieldAsync(\n    fieldInfo: TemplateFieldInfo,\n    dynamicFieldValueOptions: { [fieldId: number]: string[] }\n  ): Promise<void> {\n    const dynamicOptions = this.getOrCreateDynamicOptions(fieldInfo);\n    const numValues = this.getOrCreateFieldValue(fieldInfo.id).values?.length ?? 1;\n    for (let index = 0; index < numValues; index++) {\n      dynamicOptions[index] = dynamicFieldValueOptions[fieldInfo.id];\n      if (dynamicOptions[index] === undefined) {\n        console.warn(`Could not get dynamic field options of field ${fieldInfo.name} id ${fieldInfo.id}`);\n        continue;\n      }\n      const values: string[] = this.getValueIfSingleOption(dynamicOptions[index]);\n      await this.updateDynamicFieldsAsync(fieldInfo, values, index);\n    }\n  }\n\n  /** @internal */\n  private getValueIfSingleOption(dynamicOptions: string[]) {\n    const values: string[] = [];\n    if (dynamicOptions?.length === 1) {\n      values.push(dynamicOptions[0]);\n    }\n    return values;\n  }\n\n  /** @internal */\n  private async updateAllFieldInfosFromServiceAsync() {\n    this.allFieldInfos = [];\n    if (this.templateSelected) {\n      try {\n        this.templateState = TemplateState.LOADING;\n        const fieldInfos = await this.templateFieldContainerService.getTemplateFieldsAsync(this.templateSelected.id);\n        this.allFieldInfos = fieldInfos.filter((val) => {\n          const validFieldType: boolean = val.fieldType in FieldType && val.fieldType !== FieldType.Blob;\n          if (!validFieldType) {\n            console.warn(`Invalid FieldType: ${val.fieldType}. Will not display field with name: ${val.name}`);\n          }\n          return validFieldType;\n        });\n      } catch (err: unknown) {\n        this.templateErrorMessage = this.TEMPLATE_HAS_FAILED_TO_LOAD;\n        var consoleErrMsg = 'getTemplateFieldsAsync failed';\n        if (err instanceof Error) {\n          consoleErrMsg = consoleErrMsg + ': ' + err.message;\n        }\n        console.error(consoleErrMsg);\n        this.templateState = TemplateState.HAS_ERROR;\n      } finally {\n        this.ref.markForCheck();\n      }\n    }\n  }\n\n  /** @internal */\n  private getOrCreateDynamicOptions(fieldInfo: TemplateFieldInfo | LfFieldInfo) {\n    let dynamicOptions = this.dynamicOptions.get(fieldInfo.id);\n    if (!dynamicOptions) {\n      const defaultNone = [[]];\n      this.dynamicOptions.set(fieldInfo.id, defaultNone);\n      dynamicOptions = this.dynamicOptions.get(fieldInfo.id) ?? defaultNone;\n    }\n    return dynamicOptions;\n  }\n\n  /** @internal */\n  async onFieldValueChangedAsync(\n    fieldValues: string[],\n    lfFieldInfo: TemplateFieldInfo,\n    indicesChanged?: number[]\n  ): Promise<void> {\n    this.fieldValuesChanged.emit(this.isValid());\n    let indicesOfValueChanged = indicesChanged;\n    if (!indicesOfValueChanged) {\n      indicesOfValueChanged = [...Array(fieldValues.length).keys()];\n    }\n    if (isDynamicField(lfFieldInfo)) {\n      this.setFieldValue(lfFieldInfo.id, fieldValues);\n      for (const indexChanged of indicesOfValueChanged) {\n        this.showLoader(indexChanged);\n        const fieldInfoOptions = this.getOrCreateDynamicOptions(lfFieldInfo);\n        await CoreUtils.yieldAsync();\n        const fieldOptions = fieldInfoOptions[indexChanged];\n        if (!fieldOptions) {\n          const isBaseDynamicField = isDynamicField(lfFieldInfo) && lfFieldInfo.rule?.ancestors.length === 0;\n          if (isBaseDynamicField) {\n            await this.addFieldOptionsForIndexAsync(indexChanged, fieldInfoOptions, lfFieldInfo);\n          }\n        }\n        await this.updateDynamicFieldsAsync(lfFieldInfo, fieldValues, indexChanged);\n      }\n      await this.renderFieldsAsync(this.allFieldInfos);\n    } else {\n      this.setFieldValue(lfFieldInfo.id, fieldValues);\n    }\n  }\n\n  /** @internal */\n  private async addFieldOptionsForIndexAsync(\n    indexChanged: number,\n    fieldInfoOptions: string[][],\n    lfFieldInfo: TemplateFieldInfo\n  ) {\n    try {\n      const dynamicFieldValueOptions = await this.getDynamicFieldValueOptionsAsync(indexChanged);\n      fieldInfoOptions[indexChanged] = dynamicFieldValueOptions[lfFieldInfo.id];\n      if (fieldInfoOptions[indexChanged] === undefined) {\n        console.warn(\n          `Could not get dynamic field options of field ${lfFieldInfo.name} id ${lfFieldInfo.id}, index ${indexChanged}`\n        );\n      }\n    } catch (error) {\n      this.templateState = TemplateState.HAS_ERROR;\n      console.error('getDynamicFieldValueOptionsAsync failed:', error);\n    }\n  }\n\n  /** @internal */\n  private showLoader(indexChanged: number) {\n    for (const fieldComponent of this.componentRefs) {\n      if (isDynamicField(fieldComponent.instance.lfFieldInfo)) {\n        fieldComponent.instance.isLoading = true;\n      }\n    }\n    this.groupComponentRefs.forEach((component) => {\n      component.instance.showLoader(indexChanged);\n    });\n  }\n\n  /** @internal */\n  private async updateDynamicFieldsAsync(\n    fieldInfo: TemplateFieldInfo,\n    values: string[],\n    indexChanged: number\n  ): Promise<void> {\n    this.setFieldValue(fieldInfo.id, values);\n    const children = this.getDynamicFieldChildren(fieldInfo);\n    if (!children || children.length === 0) {\n      return;\n    }\n    try {\n      const dynamicFieldValueOptions = await this.getDynamicFieldValueOptionsAsync(indexChanged);\n      for (const childFieldInfo of children) {\n        const childId = childFieldInfo.id;\n        if (!(childId in dynamicFieldValueOptions)) {\n          console.warn(`Could not get dynamic field options of field ${childFieldInfo.name} id ${childFieldInfo.id}`);\n          continue;\n        }\n\n        const dynamicFieldOptions = this.getOrCreateDynamicOptions(childFieldInfo);\n        dynamicFieldOptions[indexChanged] = dynamicFieldValueOptions[childId] ?? [];\n\n        const childFieldValue: FieldValue = this.getUpdatedChildValue(\n          childFieldInfo,\n          dynamicFieldOptions,\n          indexChanged\n        );\n        const stringValues = childFieldValue.values?.map((val) => val['value']) ?? [''];\n        await this.updateDynamicFieldsAsync(childFieldInfo, stringValues, indexChanged);\n      }\n    } catch (error) {\n      this.templateState = TemplateState.HAS_ERROR;\n      console.error('getDynamicFieldValueOptionsAsync:', error);\n    }\n  }\n\n  /** @internal */\n  private getUpdatedChildValue(\n    childFieldInfo: TemplateFieldInfo,\n    dynamicFieldOptions: string[][],\n    indexChanged: number\n  ) {\n    const childFieldValues: FieldValue = this.getOrCreateFieldValue(childFieldInfo.id);\n    const optionsForIndex = dynamicFieldOptions[indexChanged];\n    if (optionsForIndex?.length === 1) {\n      if (childFieldValues.values) {\n        childFieldValues.values[indexChanged] = { value: optionsForIndex[0], position: (indexChanged + 1).toString() };\n      } else {\n        childFieldValues.values = [{ value: optionsForIndex[0], position: '1' }];\n      }\n    } else {\n      if (childFieldValues.values) {\n        childFieldValues.values[indexChanged] = { value: '', position: (indexChanged + 1).toString() };\n      } else {\n        childFieldValues.values = [{ value: '', position: '1' }];\n      }\n    }\n    return childFieldValues;\n  }\n\n  /** @internal */\n  private async getDynamicFieldValueOptionsAsync(indexChanged: number): Promise<{ [fieldId: number]: string[] }> {\n    const relevantValues: FieldValues = this.getRelevantValuesForIndex(indexChanged);\n    if (!this.templateSelected?.id) {\n      return {};\n    }\n    const dynamicFieldValueOptions = await this.templateFieldContainerService.getDynamicFieldValueOptionsAsync(\n      this.templateSelected.id,\n      relevantValues\n    );\n    return dynamicFieldValueOptions;\n  }\n\n  /** @internal */\n  private getRelevantValuesForIndex(indexChanged: number) {\n    const dynamicFieldValues: FieldValues = this.getDynamicFieldValues();\n    const relevantValues: FieldValues = {};\n    for (const id in dynamicFieldValues) {\n      const value = dynamicFieldValues[id];\n      const newVal: FieldValue = {\n        fieldId: value.fieldId,\n        fieldName: value.fieldName,\n        fieldType: value.fieldType,\n        groupId: value.groupId,\n      };\n      if (value.values) {\n        newVal.values = [value.values[indexChanged]];\n      }\n      relevantValues[value.fieldId] = newVal;\n    }\n    return relevantValues;\n  }\n\n  /** @internal */\n  private getDynamicFieldChildren(fieldInfo: TemplateFieldInfo): TemplateFieldInfo[] | undefined {\n    if (!isDynamicField(fieldInfo)) {\n      return undefined;\n    }\n\n    const parentId = fieldInfo.id;\n    const children = this.allFieldInfos.filter((templateFieldInfo) =>\n      (templateFieldInfo as TemplateFieldInfo).rule?.ancestors.includes(parentId)\n    );\n    return children;\n  }\n\n  /** @internal */\n  private getDynamicFieldValues(): FieldValues {\n    const result: FieldValues = {};\n    for (const fieldInfo of this.allFieldInfos) {\n      const fieldId = fieldInfo.id;\n      if (isDynamicField(fieldInfo) && fieldId in this.allFieldValues) {\n        result[fieldId] = this.allFieldValues[fieldId];\n      }\n    }\n    return result;\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div [hidden]=\"hideTemplate\">\n  <mat-form-field class=\"lf-field lf-template-picker lf-dropdown\">\n    <ng-template #showDefaultEmptyTemplate>\n      <mat-label class=\"lf-dropdown-label\">\n        {{ emptyTemplateName | async }}\n      </mat-label>\n    </ng-template>\n    <mat-select\n      panelClass=\"lf-dropdown-overlay\"\n      [placeholder]=\"(emptyTemplateName | async) ?? ''\"\n      name=\"template-dropdown\"\n      id=\"template-dropdown\"\n      class=\"lf-dropdown\"\n      (selectionChange)=\"onTemplateChangedAsync($event)\"\n      (openedChange)=\"onToggleDropdownAsync($event)\"\n      [(value)]=\"templateSelected\"\n      [compareWith]=\"compareTemplateInfoFunc\"\n    >\n      @if (isDropdownDefault) {\n        <mat-option selected>{{ emptyTemplateName | async }}</mat-option>\n      }\n      @if (isDropdownError) {\n        <mat-option selected class=\"dropdown-error-message\">{{ AN_ERROR_OCCURED | async }}</mat-option>\n      }\n      @if (isDropdownDefault) {\n        <div>\n          @for (template of availableTemplates; track template) {\n            <mat-option [value]=\"template\">{{ template.displayName }} </mat-option>\n          }\n        </div>\n      }\n    </mat-select>\n  </mat-form-field>\n  @if (isTemplateLoading) {\n    <lf-loader-component></lf-loader-component>\n  } @else {\n    @if (isTemplateError) {\n      <div class=\"error-message\">{{ templateErrorMessage | async }}</div>\n    } @else {\n      @if (isTemplateDisplay) {\n        <div class=\"responsive-form-container\">\n          <ng-template lfFieldView></ng-template>\n        </div>\n      } @else {}\n    }\n  }\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { LfFieldContainerService } from './lf-field-container.service';\nimport { LfFieldAdhocContainerComponent } from '../lf-field-adhoc-container/lf-field-adhoc-container.component';\nimport { LfFieldTemplateContainerComponent } from '../lf-field-template-container/lf-field-template-container.component';\nimport { FieldValue, LfFieldInfo, TemplateValue } from '../field-components/utils/lf-field-types';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\n\n@Component({\n  selector: 'lf-field-container',\n  templateUrl: './lf-field-container.component.html',\n  styleUrls: ['./lf-field-container.component.css'],\n  standalone: true,\n  imports: [CommonModule, MatExpansionModule, LfFieldTemplateContainerComponent, LfFieldAdhocContainerComponent],\n})\nexport class LfFieldContainerComponent {\n  /**@internal */\n  private ref = inject(ChangeDetectorRef);\n  /**@internal */\n  localizationService = inject(AppLocalizationService);\n\n  @Input() collapsible: boolean = false;\n  @Input() start_collapsed: boolean = false;\n\n  @Output() fieldValuesChanged = new EventEmitter<boolean>();\n  @Output() templateSelectedChanged = new EventEmitter<number>();\n  @Output() dialogOpened = new EventEmitter<void>();\n  @Output() dialogClosed = new EventEmitter<void>();\n\n  /** @internal */\n  @ViewChild(LfFieldTemplateContainerComponent) templateContainer!: LfFieldTemplateContainerComponent;\n  /** @internal */\n  @ViewChild(LfFieldAdhocContainerComponent) adhocContainer!: LfFieldAdhocContainerComponent;\n\n  /** @internal */\n  private lfFieldContainerService!: LfFieldContainerService;\n\n  /** @internal */\n  panelOpenState: boolean = this.start_collapsed;\n  /** @internal */\n  readonly FIELDS = this.localizationService.getStringLaserficheObservable('FIELDS');\n\n  /** @internal */\n  readonly TEMPLATE = this.localizationService.getStringLaserficheObservable('TEMPLATE');\n\n  /** @internal */\n  SELECTED_TEMPLATE_NAME = this.getSelectedTemplateName();\n\n  /** @internal */\n  getSelectedTemplateName(): Observable<string> {\n    const templateSelected = this.templateContainer?.templateSelected;\n    if (templateSelected) {\n      return of(templateSelected.displayName);\n    } else {\n      return this.templateContainer?.emptyTemplateName;\n    }\n  }\n\n  @Input()\n  initAsync = async (\n    lfFieldContainerService: LfFieldContainerService,\n    templateIdentifier?: number | string\n  ): Promise<void> => {\n    this.ref.detectChanges();\n    this.lfFieldContainerService = CoreUtils.validateDefined(lfFieldContainerService, 'lfFieldContainerService');\n    await this.adhocContainer.initAsync(this.lfFieldContainerService);\n    await this.templateContainer.initAsync(\n      { templateFieldContainerService: this.lfFieldContainerService },\n      templateIdentifier\n    );\n    this.SELECTED_TEMPLATE_NAME = this.getSelectedTemplateName();\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  forceValidation = (): boolean => {\n    const templateIsValid: boolean = this.templateContainer.forceValidation();\n    const adhocIsValid: boolean = this.adhocContainer.forceValidation();\n    return templateIsValid && adhocIsValid;\n  };\n\n  @Input()\n  clearAsync = async (): Promise<void> => {\n    await this.templateContainer.clearAsync();\n    await this.adhocContainer.clearAsync();\n  };\n\n  @Input()\n  getFieldValues = (): { [fieldName: string]: FieldValue } => {\n    const adhocFieldValues: { [fieldName: string]: FieldValue } = this.adhocContainer.getFieldValues();\n    const templateFieldValues: { [fieldName: string]: FieldValue } =\n      this.templateContainer.getTemplateValue()?.fieldValues ?? {};\n    return { ...adhocFieldValues, ...templateFieldValues };\n  };\n\n  @Input()\n  getNumAdhocFields = (): number => {\n    const adhocFields = Object.keys(this.adhocContainer.getFieldValues() ?? {}).length;\n    return adhocFields ?? 0;\n  };\n\n  @Input()\n  resetFieldDataAsync = async (fields: { value: FieldValue; definition: LfFieldInfo }[]): Promise<void> => {\n    await this.adhocContainer.resetFieldDataAsync(fields);\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  updateFieldValuesAsync = async (values: FieldValue[]): Promise<void> => {\n    await this.adhocContainer.updateFieldValuesAsync(values);\n    this.ref.markForCheck();\n  };\n\n  @Input()\n  getTemplateValue = (): TemplateValue | undefined => {\n    return this.templateContainer.getTemplateValue();\n  };\n\n  /** @internal */\n  onFieldValuesChanged(): void {\n    const templateIsValid: boolean = this.templateContainer.isValid();\n    const adhocIsValid: boolean = this.adhocContainer.isValid();\n    this.fieldValuesChanged.emit(templateIsValid && adhocIsValid);\n  }\n\n  /** @internal */\n  onTemplateSelectedChange(selectedTemplateId: number) {\n    this.templateSelectedChanged.emit(selectedTemplateId);\n    this.SELECTED_TEMPLATE_NAME = this.getSelectedTemplateName();\n  }\n\n  /** @internal */\n  onDialogOpened() {\n    this.dialogOpened.emit();\n  }\n\n  /** @internal */\n  onDialogClosed() {\n    this.dialogClosed.emit();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div class=\"lf-template-and-adhoc-container\">\n  <mat-expansion-panel\n    [hideToggle]=\"!collapsible\"\n    [expanded]=\"!collapsible || !start_collapsed\"\n    [disabled]=\"!collapsible\"\n    (opened)=\"panelOpenState = true\"\n    (closed)=\"panelOpenState = false\"\n    class=\"template-adhoc-expansion-panel\"\n  >\n    <mat-expansion-panel-header class=\"template-adhoc-expansion-panel\">\n      <mat-panel-title>\n        <p title=\"{{ TEMPLATE | async }}\" class=\"lf-text-label lf-ellipsis-label field-label\">{{ TEMPLATE | async }}</p>\n        @if (!panelOpenState && collapsible) {\n          <p\n            title=\"{{ SELECTED_TEMPLATE_NAME | async }}\"\n            class=\"lf-sub-label lf-text-body field-sub-label lf-ellipsis-label\"\n          >\n            &nbsp;&nbsp;&nbsp;&nbsp;{{ SELECTED_TEMPLATE_NAME | async }}\n          </p>\n        }\n      </mat-panel-title>\n    </mat-expansion-panel-header>\n    <lf-field-template-container\n      (fieldValuesChanged)=\"onFieldValuesChanged()\"\n      (templateSelectedChange)=\"onTemplateSelectedChange($event)\"\n    ></lf-field-template-container>\n  </mat-expansion-panel>\n  <hr class=\"combo-container-separater\" />\n  <mat-expansion-panel\n    [expanded]=\"!collapsible || !start_collapsed\"\n    class=\"template-adhoc-expansion-panel\"\n    [hideToggle]=\"!collapsible\"\n    [disabled]=\"!collapsible\"\n  >\n    <mat-expansion-panel-header class=\"template-adhoc-expansion-panel\">\n      <mat-panel-title>\n        <p title=\"{{ FIELDS | async }}\" class=\"lf-text-label field-label lf-ellipsis-label\">{{ FIELDS | async }}</p>\n      </mat-panel-title>\n    </mat-expansion-panel-header>\n    <lf-field-adhoc-container\n      (fieldValuesChanged)=\"onFieldValuesChanged()\"\n      (dialogOpened)=\"onDialogOpened()\"\n      (dialogClosed)=\"onDialogClosed()\"\n    ></lf-field-adhoc-container>\n  </mat-expansion-panel>\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfFieldContainerComponent } from './lf-field-container.component';\nexport { LfFieldContainerService } from './lf-field-container.service';\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfFieldAdhocContainerComponent } from './lf-field-adhoc-container.component';\nexport { LfFieldAdhocContainerService } from './lf-field-adhoc-container.service';\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfFieldTemplateContainerComponent } from './lf-field-template-container.component';\nexport { LfFieldTemplateProviders } from './lf-field-template-container-types';\nexport { LfFieldTemplateContainerService } from './lf-field-template-container.service';\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfFieldContainerComponent, LfFieldContainerService } from './lf-field-container/public-api';\nexport { LfFieldAdhocContainerComponent, LfFieldAdhocContainerService } from './lf-field-adhoc-container/public-api';\nexport {\n  LfFieldTemplateContainerComponent,\n  LfFieldTemplateProviders,\n  LfFieldTemplateContainerService,\n} from './lf-field-template-container/public-api';\nexport type { FieldValue, LfFieldInfo, TemplateFieldInfo } from './field-components/utils/lf-field-types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lf-metadata-public-api';\n"],"names":["Flatpickr","dateTimeService","i3","i4","i1","i2","map"],"mappings":"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"}