{"version":3,"sources":["jsdelivr-header.js","/npm/sf-i-form@1.0.191/src/sf-i-form.ts"],"names":[],"mappings":"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","file":"/npm/sf-i-form@1.0.191/sf-i-form.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/sf-i-form@1.0.191/sf-i-form.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\r\n * @license\r\n * Copyright 2022 Superflow.dev\r\n * SPDX-License-Identifier: MIT\r\n */\r\n\r\nimport { LitElement, html, css, PropertyValueMap } from 'lit';\r\nimport { customElement, query, queryAssignedElements, property } from 'lit/decorators.js';\r\nimport { SfISelect } from 'sf-i-select';\r\nimport { SfISubSelect } from 'sf-i-sub-select';\r\nimport { SfIEvents } from 'sf-i-events';\r\nimport { SfIUploader } from 'sf-i-uploader';\r\n// import {customElement, query, property} from 'lit/decorators.js';\r\nimport Util from './util';\r\n// import {LitElement, html, css} from 'lit';\r\n// import {customElement} from 'lit/decorators.js';\r\n\r\n\r\n/*\r\n\r\nModes: View, Add, Edit, Delete, Admin\r\nDB: partitionKey, rangeKey, values\r\n\r\n*/\r\n\r\n/**\r\n * SfIForm element.\r\n * @fires renderComplete - When the list is populated\r\n * @fires valueChanged - When the value is changed\r\n * @property apiId - backend api id\r\n * @property label - input label\r\n * @property name - name of the input\r\n * @property mode - mode of operation\r\n * @property selectedId - id to preselect\r\n * @property selectedValue - callback function\r\n */\r\n@customElement('sf-i-form')\r\nexport class SfIForm extends LitElement {\r\n\r\n  searchPhraseOriginal = \"\";\r\n  blockSize = 10;\r\n  VALIDATION_TEXT_BASIC = \"text-basic\"\r\n  VALIDATION_TEXT_DATE = \"text-date\"\r\n  // VALIDATION_UPLOADER = \"uploader\"\r\n\r\n  @property()\r\n  mode!: string;\r\n\r\n  @property()\r\n  maxSelect!: string;\r\n\r\n  @property()\r\n  flow: string = \"\";\r\n\r\n  @property()\r\n  enableEditButton: string = \"no\";\r\n\r\n  @property()\r\n  showAllResults: string = \"no\";\r\n\r\n  @property()\r\n  showEdit: boolean = false;\r\n\r\n  @property()\r\n  showCalendar: boolean = false;\r\n\r\n  @property()\r\n  searchPhrase: string = \"\";\r\n\r\n  @property()\r\n  selectProjection!: string;\r\n\r\n  @property()\r\n  selectAnotherProjection!: string;\r\n\r\n  @property()\r\n  ignoreProjections: string = \"[]\";\r\n\r\n  getIgnoreProjections = () => {\r\n\r\n    try {\r\n      return JSON.parse(this.ignoreProjections)\r\n    } catch (e) {\r\n      return [];\r\n    }\r\n\r\n  }\r\n\r\n  @property()\r\n  dependencies: string = \"[]\";\r\n\r\n  @property()\r\n  inputIds: string = \"[]\";\r\n\r\n  @property()\r\n  fields: string = \"[]\";\r\n\r\n  @property()\r\n  validations: string = \"[]\";\r\n\r\n  @property()\r\n  selectedViewToDetailValues: string = \"[]\";\r\n\r\n  @property()\r\n  useInApi: string = \"[]\";\r\n\r\n  @property()\r\n  unitFiltersNew: string = \"[]\";\r\n\r\n  @property()\r\n  unitFiltersDetail: string = \"[]\";\r\n\r\n  @queryAssignedElements({ slot: 'form' })\r\n  _sfSlottedForm: any;\r\n\r\n  @property()\r\n  apiId!: string;\r\n\r\n  @property()\r\n  apiIdCalendarDetail: string = \"\";\r\n\r\n  @property()\r\n  searchIndex!: string;\r\n\r\n  @property()\r\n  selectedId!: string;\r\n\r\n  @property()\r\n  selectedObj!: any;\r\n\r\n  @property()\r\n  selectedObjArr: any = [];\r\n\r\n  @property()\r\n  // selectedSearchId: string[] = [\"f0f17ddb-546a-45f5-8a94-a5689fde8e64\"] ;\r\n  // selectedSearchId: string[] = [\"41ab3c86-ccc0-4c0e-8e31-cd079a07a710\"];\r\n  // selectedSearchId: any = [\"96316acb-6d29-4fe9-912a-3b0d53e965fb\"];\r\n  selectedSearchId: any = [];\r\n  // selectedSearchId: any = [\"4b145b2d-9f87-4c38-b1be-318366df43af\"];\r\n  // selectedSearchId: any = [\"41ab3c86-ccc0-4c0e-8e31-cd079a07a710\"];\r\n\r\n  @property()\r\n  preselectedValues!: string;\r\n\r\n  getPreselectedValues = () => {\r\n\r\n    try {\r\n      return JSON.parse(this.preselectedValues);\r\n    } catch (e) {\r\n      return [];\r\n    }\r\n\r\n  }\r\n\r\n  @property()\r\n  label!: string;\r\n\r\n  @property()\r\n  latestDaysBlock: number = 7;\r\n\r\n  @property()\r\n  name!: string;\r\n\r\n  @property()\r\n  shortlistedSearchPhrases: any = {};\r\n\r\n  @property()\r\n  removedValues: string[] = [];\r\n\r\n  @property()\r\n  selectedTextPhrase: string = \"\";\r\n\r\n  @property()\r\n  projectField: string = \"\";\r\n\r\n  @property()\r\n  prevCursor: Array<any> = [];\r\n\r\n  @property()\r\n  nextCursor: Array<any> = [];\r\n\r\n  @property()\r\n  noLatestMessage: string = \"\";\r\n\r\n  @property()\r\n  titleMessage: string = \"\";\r\n\r\n  @property()\r\n  multiselectArr: Array<string> = [];\r\n\r\n  selectedValues = () => {\r\n\r\n    if (this.mode == \"multiselect-dropdown\") {\r\n\r\n      const values = [];\r\n\r\n      var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n      for (var i = 0; i < divArr.length; i++) {\r\n        if (this.flow == \"read\" || this.maxSelect != null) {\r\n          values.push((divArr[i]).getAttribute('value'));\r\n        } else {\r\n          values.push(divArr[i].innerText);\r\n        }\r\n\r\n      }\r\n\r\n      return values;\r\n\r\n    } else if (this.mode == \"list\" || this.mode == \"select\" || this.mode == \"multiselect-list\") {\r\n\r\n      const values = [];\r\n\r\n      const checkboxes = (this._SfSearchSelectContainer as HTMLElement).querySelectorAll('input');\r\n\r\n      const len = checkboxes.length;\r\n      for (var i = 0; i < len; i++) {\r\n        const cb = checkboxes[i] as HTMLInputElement;\r\n        if (cb.checked) {\r\n          values.push(cb.value);\r\n        }\r\n      }\r\n\r\n      return values;\r\n\r\n    } else {\r\n\r\n      const values = [];\r\n\r\n      const len = this._sfInputSelect.options.length;\r\n      for (var i = 0; i < len; i++) {\r\n        const opt = this._sfInputSelect.options[i];\r\n        if (opt.selected && opt.value != \"noselect\") {\r\n          values.push(opt.value);\r\n        }\r\n      }\r\n\r\n      console.log('returning values', values);\r\n\r\n      return values;\r\n    }\r\n\r\n  }\r\n\r\n  selectedTexts = () => {\r\n\r\n    if (this.mode == \"multiselect-dropdown\") {\r\n\r\n      const values = [];\r\n\r\n      var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n\r\n      for (var i = 0; i < divArr.length; i++) {\r\n\r\n        values.push(divArr[i].innerText);\r\n\r\n      }\r\n\r\n      return values;\r\n\r\n    } if (this.mode == \"list\" || this.mode == \"select\" || this.mode == \"multiselect-list\") {\r\n\r\n      const values = [];\r\n\r\n      const checkboxes = (this._SfSearchSelectContainer as HTMLElement).querySelectorAll('input');\r\n      const divs = (this._SfSearchSelectContainer as HTMLElement).querySelectorAll('.append-str');\r\n\r\n      const len = divs.length;\r\n      for (var i = 0; i < len; i++) {\r\n        const div = divs[i] as HTMLDivElement;\r\n        const cb = checkboxes[i] as HTMLInputElement;\r\n        if (cb.checked) {\r\n          values.push(div.innerText);\r\n        }\r\n      }\r\n\r\n      return values;\r\n\r\n    } else {\r\n\r\n      const values = [];\r\n\r\n      const len = this._sfInputSelect.options.length;\r\n      for (var i = 0; i < len; i++) {\r\n        const opt = this._sfInputSelect.options[i];\r\n        if (opt.selected && opt.value != \"noselect\") {\r\n          values.push(this._sfInputSelect.options[i].text)\r\n        }\r\n      }\r\n\r\n      return values;\r\n\r\n    }\r\n\r\n  }\r\n\r\n  selectedEntireValues = () => {\r\n    return this.mode == \"select\" ? this.selectedObj : this.selectedObjArr;\r\n  }\r\n\r\n  // @property()\r\n  // selectedListSearchItemsValues: any[] = [];\r\n\r\n  // @property()\r\n  // selectedListSearchItemsTexts: any[] = [];\r\n\r\n  // @property()\r\n  // selectedValue = () => {\r\n  //   return this._SfInputSelect.value;\r\n  // }\r\n\r\n  static override styles = css`\r\n\r\n    \r\n    .SfIFormC {\r\n      display: flex;\r\n      flex-direction: column;\r\n      align-items: stretch;\r\n      justify-content: space-between;\r\n      overflow-x: auto;\r\n    }\r\n\r\n    .SfIFormCAdmin {\r\n      padding: 10px 20px;\r\n    }\r\n\r\n    .SfIFormC label{\r\n      padding-bottom: 5px;\r\n    }\r\n\r\n    .SfIFormC > div{\r\n      display: flex;\r\n      align-items: center;\r\n    }\r\n\r\n    .SfIFormC > div > select{\r\n      flex-grow: 1;\r\n    }\r\n\r\n    .pointer {\r\n      cursor: pointer;\r\n    }\r\n\r\n    input:not([type='radio']):not([type='checkbox']) {\r\n\r\n      font-weight: 400;\r\n      border: none;\r\n      padding: 10px;\r\n      border-radius: 5px;\r\n      background: #efefef;\r\n      box-shadow: inset 3px 3px 5px #bbbbbb,\r\n                  inset -5px -5px 8px #ffffff;\r\n      border-top: solid 1px rgba(255, 255, 255, 0.8);\r\n      border-left: solid 1px rgba(255, 255, 255, 0.8);\r\n      border-bottom: solid 1px rgba(255, 255, 255, 0.8);\r\n      border-right: solid 1px rgba(255, 255, 255, 0.8);\r\n      transition: 0.3s;\r\n      margin-bottom: 0px;\r\n  \r\n      }\r\n\r\n    .badge-multiselected {\r\n      font-size: 70%;\r\n      padding: 5px;\r\n      border-radius: 10px;\r\n      border: solid 1px #dddddd;\r\n      white-space: nowrap;\r\n      overflow: hidden !important;\r\n      width: 50px;\r\n    }\r\n\r\n    .badge-multiselected-name {\r\n      font-size: 70%;\r\n      padding: 5px;\r\n      border-radius: 10px;\r\n      border: solid 1px #dddddd;\r\n      white-space: nowrap;\r\n      overflow: hidden !important;\r\n      min-width: 50px;\r\n    }\r\n\r\n    ul {\r\n      list-style-type:none;\r\n    }\r\n\r\n    .flex-wrap {\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    .mb-10 {\r\n      margin-bottom: 10px;\r\n    }\r\n    .mr-10 {\r\n      margin-right: 10px;\r\n    }\r\n\r\n    .mt-10 {\r\n      margin-top: 10px;\r\n    }\r\n    .pb-10 {\r\n      padding-bottom: 10px;\r\n    }\r\n\r\n    .flex-grow {\r\n      flex-grow: 1;\r\n    }\r\n\r\n    .text-center {\r\n      text-align:center;\r\n    }\r\n\r\n    .left-sticky {\r\n      left: 0px;\r\n      position: sticky;\r\n    }\r\n\r\n    .border-right-solid {\r\n      border-right: solid 1px gray;\r\n    }\r\n\r\n    .link {\r\n      text-decoration: underline;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .gone {\r\n      display: none\r\n    }\r\n\r\n    .loader-element {\r\n      position: fixed;\r\n      right: 10px;\r\n      top: 10px;\r\n      margin-left: 5px;\r\n    }\r\n\r\n    .color-gray {\r\n      color: gray;\r\n    }\r\n\r\n    .td-head {\r\n      text-transform: capitalize;\r\n    }\r\n\r\n\r\n    .td-body {\r\n      padding: 5px;\r\n    }\r\n\r\n    .td-dark {\r\n      background-color: #e9e9e9;\r\n    }\r\n\r\n    .td-highlight {\r\n      background-color: black;\r\n      color: white;\r\n    }\r\n\r\n    .td-light {\r\n      background-color: #f6f6f6;\r\n    }\r\n\r\n    .align-start {\r\n      align-items: flex-start;\r\n    }\r\n\r\n    .align-end {\r\n      align-items: flex-end;\r\n    }\r\n\r\n    .align-center {\r\n      align-items: center;\r\n    }\r\n    .flex-1 {\r\n      flex: 1;\r\n    }\r\n\r\n    #form-container {\r\n      width: 90%;\r\n    }\r\n\r\n    #search-list-container {\r\n      overflow-x: auto;\r\n      width: 90%;\r\n    }\r\n\r\n    #calendar-container {\r\n      width: 90%;\r\n    }\r\n\r\n    .button-icon-small-cancel{\r\n      font-size: 100%;\r\n      margin-right: 3px;\r\n    }\r\n    #search-select-container {\r\n      overflow-x: auto;\r\n      width: 100%;\r\n    }\r\n\r\n    #logs-list-container {\r\n      overflow-x: auto;\r\n      width: 90%;\r\n    }\r\n\r\n    #logs-list-container {\r\n      overflow-x: auto;\r\n    }\r\n\r\n    #latest-list-container {\r\n      overflow-x: auto;\r\n      flex-direction: column;\r\n    }\r\n\r\n    #input-search {\r\n      margin-bottom: 5px;\r\n      width: 300px;\r\n    }\r\n    \r\n    .button-icon {\r\n      padding-top: 8px;\r\n      padding-bottom: 6px;\r\n      padding-left: 10px;\r\n      padding-right: 10px;\r\n      margin-left: 5px;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .button-icon-small {\r\n      padding-top: 2px;\r\n      padding-bottom: 2px;\r\n      padding-left: 2px;\r\n      padding-right: 2px;\r\n      margin: 0px;\r\n      font-size: 85%;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .SfIFormC td {\r\n      vertical-align: top;\r\n    }\r\n\r\n    .lds-dual-ring {\r\n      display: inline-block;\r\n      width: 50px;\r\n      height: 50px;\r\n    }\r\n    .lds-dual-ring:after {\r\n      content: \" \";\r\n      display: block;\r\n      width: 50px;\r\n      height: 50px;\r\n      margin: 0px;\r\n      border-radius: 50%;\r\n      border: 2px solid #fff;\r\n      border-color: #888 #ddd #888 #ddd;\r\n      background-color: white;\r\n      animation: lds-dual-ring 0.8s linear infinite;\r\n    }\r\n\r\n    .lds-dual-ring-lg {\r\n      display: inline-block;\r\n      width: 30px;\r\n      height: 30px;\r\n    }\r\n    .lds-dual-ring-lg:after {\r\n      content: \" \";\r\n      display: block;\r\n      width: 30px;\r\n      height: 30px;\r\n      margin: 0px;\r\n      border-radius: 50%;\r\n      border: 3px solid #fff;\r\n      border-color: #888 #ddd #888 #ddd;\r\n      animation: lds-dual-ring 0.8s linear infinite;\r\n    }\r\n\r\n    td {\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .div-row-error {\r\n      display: flex;\r\n      justify-content: center;\r\n      position: fixed;\r\n      position: fixed;\r\n      top: 0px;\r\n      right: 0px;\r\n      margin-top: 20px;\r\n      margin-right: 20px;\r\n      display: none;\r\n      align-items:center;\r\n      background-color: white;\r\n      border: dashed 1px red;\r\n      padding: 20px;\r\n    }\r\n\r\n    .div-row-error-message {\r\n      color: red;\r\n      padding: 5px;\r\n      background-color: white;\r\n      text-align: center;\r\n    }\r\n\r\n    .div-row-notif {\r\n      display: flex;\r\n      justify-content: center;\r\n      position: fixed;\r\n      top: 0px;\r\n      left: 0px;\r\n      margin-top: 20px;\r\n      margin-left: 20px;\r\n      display: none;\r\n      align-items:center;\r\n      background-color: white;\r\n      border: dashed 1px blue;\r\n      padding: 20px;\r\n    }\r\n\r\n    .div-row-notif-message {\r\n      color: blue;\r\n      padding: 5px;\r\n      background-color: white;\r\n      text-align: center;\r\n    }\r\n\r\n    .div-row-success {\r\n      display: flex;\r\n      justify-content: center;\r\n      position: fixed;\r\n      top: 0px;\r\n      right: 0px;\r\n      margin-top: 20px;\r\n      margin-right: 20px;\r\n      display: none;\r\n      align-items:center;\r\n      background-color: white;\r\n      border: dashed 1px green;\r\n      padding: 20px;\r\n    }\r\n\r\n    .div-row-success-message {\r\n      color: green;\r\n      padding: 5px;\r\n      background-color: white;\r\n      text-align: center;\r\n    }\r\n\r\n    #search-multiselect-select {\r\n      width: 170px;\r\n    }\r\n\r\n    #search-multiselect-input {\r\n      width: 150px;\r\n    }\r\n\r\n    .d-flex {\r\n      display: flex;\r\n    }\r\n\r\n    .flex-col {\r\n      flex-direction: column;\r\n    }\r\n\r\n    .justify-start {\r\n      justify-content: flex-start;\r\n    }\r\n\r\n    .justify-center {\r\n      justify-content: center;\r\n    }\r\n\r\n    .justify-between {\r\n      justify-content: space-between;\r\n    }\r\n\r\n    .justify-end {\r\n      justify-content: flex-end;\r\n    }\r\n\r\n    @keyframes lds-dual-ring {\r\n      0% {\r\n        transform: rotate(0deg);\r\n      }\r\n      100% {\r\n        transform: rotate(360deg);\r\n      }\r\n    }  \r\n\r\n    .hide {\r\n      display: none;\r\n    }\r\n\r\n    .badge {\r\n      margin-top: -20px;\r\n    }\r\n\r\n    .badge-filled {\r\n      border: solid 1px gray;\r\n      background-color: white;\r\n      padding-top: 1px;\r\n      padding-bottom: 1px;\r\n      padding-left: 10px;\r\n      padding-right: 10px;\r\n      border-radius: 20px;\r\n      margin-top: -20px;\r\n    }\r\n\r\n    .lb {\r\n      width: 5%\r\n    }\r\n    .rb {\r\n      width: 5%\r\n    }\r\n\r\n    .tcId {\r\n      min-width: 300px;\r\n    }\r\n\r\n    .tcName {\r\n      min-width: 200px;\r\n    }\r\n\r\n    .tcActions {\r\n      min-width: 150px;\r\n      text-align: right;\r\n    }\r\n\r\n    .SfIFormCAdmin th {\r\n      border-bottom: solid 1px black\r\n    }\r\n\r\n    .SfIFormCAdmin td {\r\n      border-bottom: solid 1px gray\r\n    }\r\n\r\n    .tableC {\r\n      overflow-x: auto;\r\n    }\r\n\r\n    #button-submit {\r\n      padding: 10px;\r\n    }\r\n    \r\n\r\n    @media (orientation: landscape) {\r\n\r\n      .lb {\r\n        width: 30%\r\n      }\r\n      .rb {\r\n        width: 30%\r\n      }\r\n\r\n      #search-list-container {\r\n        overflow-x: auto;\r\n        width: 40%;\r\n      }\r\n\r\n      #search-select-container {\r\n        overflow-x: auto;\r\n        width: 100%;\r\n      }\r\n\r\n      #logs-list-container {\r\n        overflow-x: auto;\r\n        width: 40%;\r\n      }\r\n\r\n      #latest-list-container {\r\n        overflow-x: auto;\r\n      }\r\n\r\n      #form-container {\r\n        width: 40%;\r\n      }\r\n\r\n      #calendar-container {\r\n        width: 40%;\r\n      }\r\n  \r\n    }\r\n\r\n    .w-100 {\r\n      width: 100%;\r\n    }\r\n\r\n  `;\r\n\r\n  @query('#button-submit')\r\n  _sfButtonSubmit: any;\r\n\r\n  @query('#button-all')\r\n  _sfButtonAll: any;\r\n\r\n  @query('#button-trail')\r\n  _sfButtonTrail: any;\r\n\r\n  @query('#button-calendar-cancel')\r\n  _sfButtonCalendarCancel: any;\r\n\r\n  @query('#button-calendar')\r\n  _sfButtonCalendar: any;\r\n\r\n  @query('#input-search')\r\n  _sfInputSearch: any;\r\n\r\n  @query('#input-select')\r\n  _sfInputSelect: any;\r\n\r\n  @query('#select-search-input')\r\n  _sfInputSearchSelect: any;\r\n\r\n  @query('#input-list')\r\n  _sfInputList: any;\r\n\r\n  @query('#sf-button-delete')\r\n  _sfButtonDelete: any;\r\n\r\n  @query('#selection-count')\r\n  _sfSelectionCount: any;\r\n\r\n  @query('#button-clear-selection')\r\n  _sfButtonClearSelection: any;\r\n\r\n  @query('.div-row-error')\r\n  _SfRowError: any;\r\n\r\n  @query('.div-row-error-message')\r\n  _SfRowErrorMessage: any;\r\n\r\n  @query('.div-row-success')\r\n  _SfRowSuccess: any;\r\n\r\n  @query('.div-row-success-message')\r\n  _SfRowSuccessMessage: any;\r\n\r\n  @query('.div-row-notif')\r\n  _SfRowNotif: any;\r\n\r\n  @query('.div-row-notif-message')\r\n  _SfRowNotifMessage: any;\r\n\r\n  @query('.loader-element')\r\n  _SfLoader: any;\r\n\r\n  @query('#form-container')\r\n  _SfFormContainer: any;\r\n\r\n  @query('#calendar-container')\r\n  _SfCalendarContainer: any;\r\n\r\n  @query('#search-list-container')\r\n  _SfSearchListContainer: any;\r\n\r\n  @query('#search-select-container')\r\n  _SfSearchSelectContainer: any;\r\n\r\n  @query('#logs-list-container')\r\n  _SfLogsListContainer: any;\r\n\r\n  @query('#latest-list-container')\r\n  _SfLatestListContainer: any;\r\n\r\n  @query('#button-back')\r\n  _SfButtonBack: any;\r\n\r\n  @query('#button-edit')\r\n  _SfButtonEdit: any;\r\n\r\n  @query('#button-delete')\r\n  _SfButtonDelete: any;\r\n\r\n  @query('#button-new')\r\n  _SfButtonNew: any;\r\n\r\n  @query('#button-delete-confirm')\r\n  _SfButtonDeleteConfirm: any;\r\n\r\n  @query('#search-multiselect-select')\r\n  _SfSearchMultiselectSelect: any;\r\n\r\n  @query('#search-multiselect-input')\r\n  _SfSearchMultiselectInput: any;\r\n\r\n  @query('#search-multiselect-delete')\r\n  _SfSearchMultiselectDelete: any;\r\n\r\n  @query('#search-multiselect-selected')\r\n  _SfSearchMultiselectSelected: any;\r\n\r\n  @query('#button-edit-cancel')\r\n  _SfButtonEditCancel: any;\r\n\r\n  @query('#button-delete-cancel')\r\n  _SfButtonDeleteCancel: any;\r\n\r\n  @query('#sf-i-events')\r\n  _SfIEvents: any;\r\n\r\n  @query('#button-copypaste-open')\r\n  _SfButtonCopypasteOpen: any;\r\n\r\n  @query('#button-copypaste-copy')\r\n  _SfButtonCopypasteCopy: any;\r\n\r\n  @query('#button-copypaste-paste')\r\n  _SfButtonCopypastePaste: any;\r\n\r\n  @query('#input-startdate')\r\n  _SfInputStartDate: any;\r\n\r\n  @query('#input-enddate')\r\n  _SfInputEndDate: any;\r\n\r\n  @query('#button-fetch-log')\r\n  _SfButtonFetchLog: any;\r\n\r\n  @queryAssignedElements({ slot: 'form' })\r\n  _SfFormC: any;\r\n\r\n  @queryAssignedElements({ slot: 'calendar' })\r\n  _SfCalendarC: any;\r\n\r\n  flagValChange = false;\r\n\r\n  getInputFromField = (field: string) => {\r\n\r\n    for (var i = 0; i < this.getFields().length; i++) {\r\n\r\n      if (field == this.getFields()[i]) {\r\n        return this.getInputs()[i];\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  getFieldFromInput = (input: string) => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      if (input == this.getInputs()[i]) {\r\n        return this.getFields()[i];\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  getUseInApi = () => {\r\n    return JSON.parse(this.useInApi);\r\n  }\r\n\r\n  getUnitFiltersNew = () => {\r\n    return JSON.parse(this.unitFiltersNew);\r\n  }\r\n\r\n  getUnitFiltersDetail = () => {\r\n    return JSON.parse(this.unitFiltersDetail);\r\n  }\r\n\r\n  getSelectedViewToDetailValues = () => {\r\n    return JSON.parse(this.selectedViewToDetailValues);\r\n  }\r\n\r\n  getFields = () => {\r\n    return JSON.parse(this.fields);\r\n  }\r\n\r\n  getValidations = () => {\r\n    return JSON.parse(this.validations);\r\n  }\r\n\r\n  getDependencies = () => {\r\n    return JSON.parse(this.dependencies);\r\n  }\r\n\r\n  getInputs = () => {\r\n    return JSON.parse(this.inputIds);\r\n  }\r\n\r\n  dispatchMyEvent = (ev: string, args?: any) => {\r\n\r\n    console.log('dispatching event', ev, args);\r\n    const event = new CustomEvent(ev, { detail: args, bubbles: true, composed: true });\r\n    this.dispatchEvent(event);\r\n\r\n  }\r\n\r\n  onChangeSelect = (ev: any) => {\r\n\r\n    this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: ev.target.value, newText: ev.target.options[ev.target.selectedIndex].text });\r\n\r\n    // console.log('change', this.selectedListSearchItemsTexts, this.selectedListSearchItemsValues);\r\n\r\n  }\r\n\r\n  clearSelection = () => {\r\n    // if(this.mode == \"select\") {\r\n    //   this._sfInputSelect.value = 'noselect';\r\n    // }\r\n    // if(this.mode == \"list\") {\r\n    //   this._sfInputList.value = 'noselect';\r\n    // }\r\n    this.searchPhrase = \"\"\r\n    this.searchPhraseOriginal = \"\"\r\n  }\r\n\r\n  // getSelectedSearchId = () => {\r\n  //   return this.selectedSearchId;\r\n  // }\r\n\r\n  // getSelectedSearchValue = () => {\r\n  //   return (this._sfInputSelect as HTMLSelectElement).value;\r\n  // }\r\n\r\n  getSelectedSearchText = () => {\r\n    if (this._sfInputSelect.selectedIndex >= 0) {\r\n      return this._sfInputSelect.options[this._sfInputSelect.selectedIndex].text;\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  getInputValue = (id: string) => {\r\n    console.log('id', this._SfFormC, (this._SfFormC[0].querySelector('#' + id) as HTMLElement).tagName);\r\n    console.log('field getuseapi', this.getUseInApi());\r\n    var value: any = null;\r\n\r\n    if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).tagName.toLowerCase() == \"sf-i-select\") {\r\n      if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).style.display == \"none\") {\r\n        if (this.getUseInApi().includes(this.getFieldFromInput(id))) {\r\n          value = {\r\n            type: \"sf-i-select\",\r\n            value: (this._SfFormC[0].querySelector('#' + id) as SfISelect).selectedValues(),\r\n            text: (this._SfFormC[0].querySelector('#' + id) as SfISelect).selectedTexts()\r\n          }\r\n        } else {\r\n          value = {\r\n            type: \"sf-i-select\",\r\n            value: [],\r\n            text: []\r\n          }\r\n        }\r\n      } else {\r\n        value = {\r\n          type: \"sf-i-select\",\r\n          value: (this._SfFormC[0].querySelector('#' + id) as SfISelect).selectedValues(),\r\n          text: (this._SfFormC[0].querySelector('#' + id) as SfISelect).selectedTexts()\r\n        }\r\n      }\r\n    } else if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).tagName.toLowerCase() == \"sf-i-sub-select\") {\r\n      if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).style.display == \"none\") {\r\n        if (this.getUseInApi().includes(this.getFieldFromInput(id))) {\r\n          value = {\r\n            type: \"sf-i-sub-select\",\r\n            value: (this._SfFormC[0].querySelector('#' + id) as SfISubSelect).selectedValues(),\r\n            text: (this._SfFormC[0].querySelector('#' + id) as SfISubSelect).selectedTexts()\r\n          }\r\n        } else {\r\n          value = {\r\n            type: \"sf-i-sub-select\",\r\n            value: [],\r\n            text: []\r\n          }\r\n        }\r\n      } else {\r\n        value = {\r\n          type: \"sf-i-sub-select\",\r\n          value: (this._SfFormC[0].querySelector('#' + id) as SfISubSelect).selectedValues(),\r\n          text: (this._SfFormC[0].querySelector('#' + id) as SfISubSelect).selectedTexts()\r\n        }\r\n      }\r\n\r\n    } else if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).tagName.toLowerCase() == \"sf-i-form\") {\r\n      if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).style.display == \"none\") {\r\n        if (this.getUseInApi().includes(this.getFieldFromInput(id))) {\r\n          value = {\r\n            type: \"sf-i-form\",\r\n            value: (this._SfFormC[0].querySelector('#' + id) as SfIForm).selectedValues(),\r\n            text: (this._SfFormC[0].querySelector('#' + id) as SfIForm).selectedTexts()\r\n          }\r\n        } else {\r\n          value = {\r\n            type: \"sf-i-form\",\r\n            value: [],\r\n            text: []\r\n          }\r\n        }\r\n      } else {\r\n        value = {\r\n          type: \"sf-i-form\",\r\n          value: (this._SfFormC[0].querySelector('#' + id) as SfIForm).selectedValues(),\r\n          text: (this._SfFormC[0].querySelector('#' + id) as SfIForm).selectedTexts()\r\n        }\r\n      }\r\n\r\n    } else if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).tagName.toLowerCase() == \"sf-i-uploader\") {\r\n      console.log('selectedvalues', (this._SfFormC[0].querySelector('#' + id) as SfIForm).selectedValues())\r\n      if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).style.display == \"none\") {\r\n        if (this.getUseInApi().includes(this.getFieldFromInput(id))) {\r\n          value = {\r\n            type: \"sf-i-uploader\",\r\n            value: (this._SfFormC[0].querySelector('#' + id) as SfIUploader).selectedValues(),\r\n            text: (this._SfFormC[0].querySelector('#' + id) as SfIUploader).selectedTexts()\r\n          }\r\n        } else {\r\n          value = {\r\n            type: \"sf-i-uploader\",\r\n            value: [],\r\n            text: []\r\n          }\r\n        }\r\n      } else {\r\n        value = {\r\n          type: \"sf-i-uploader\",\r\n          value: (this._SfFormC[0].querySelector('#' + id) as SfIUploader).selectedValues(),\r\n          text: (this._SfFormC[0].querySelector('#' + id) as SfIUploader).selectedTexts()\r\n        }\r\n      }\r\n\r\n    } else {\r\n      if ((this._SfFormC[0].querySelector('#' + id) as HTMLElement).style.display == \"none\") {\r\n        if (this.getUseInApi().includes(this.getFieldFromInput(id))) {\r\n          value = (this._SfFormC[0].querySelector('#' + id)).value;\r\n          value = {\r\n            type: \"input\",\r\n            value: (this._SfFormC[0].querySelector('#' + id)).value\r\n          }\r\n        } else {\r\n          value = (this._SfFormC[0].querySelector('#' + id)).value;\r\n          value = {\r\n            type: \"input\",\r\n            value: \"\"\r\n          }\r\n        }\r\n      } else {\r\n        value = (this._SfFormC[0].querySelector('#' + id)).value;\r\n        value = {\r\n          type: \"input\",\r\n          value: (this._SfFormC[0].querySelector('#' + id)).value\r\n        }\r\n      }\r\n\r\n    }\r\n    return value;\r\n  }\r\n\r\n  prepareXhr = async (data: any, url: string, loaderElement: any, authorization: any) => {\r\n\r\n\r\n    if (loaderElement != null) {\r\n      loaderElement.innerHTML = '<div class=\"lds-dual-ring\"></div>';\r\n    }\r\n    return await Util.callApi(url, data, authorization);\r\n\r\n  }\r\n\r\n  clearMessages = () => {\r\n    this._SfRowError.style.display = 'none';\r\n    this._SfRowErrorMessage.innerHTML = '';\r\n    this._SfRowSuccess.style.display = 'none';\r\n    this._SfRowSuccessMessage.innerHTML = '';\r\n  }\r\n\r\n  setError = (msg: string) => {\r\n    this._SfRowError.style.display = 'flex';\r\n    this._SfRowErrorMessage.innerHTML = msg;\r\n    this._SfRowSuccess.style.display = 'none';\r\n    this._SfRowSuccessMessage.innerHTML = '';\r\n    // this._SfRowNotif.style.display = 'none';\r\n    // this._SfRowNotifMessage.innerHTML = '';\r\n  }\r\n\r\n  setSuccess = (msg: string) => {\r\n    this._SfRowError.style.display = 'none';\r\n    this._SfRowErrorMessage.innerHTML = '';\r\n    this._SfRowSuccess.style.display = 'flex';\r\n    this._SfRowSuccessMessage.innerHTML = msg;\r\n    // this._SfRowNotif.style.display = 'none';\r\n    // this._SfRowNotifMessage.innerHTML = '';\r\n  }\r\n\r\n  setNotif = (msg: string) => {\r\n    this._SfRowError.style.display = 'none';\r\n    this._SfRowErrorMessage.innerHTML = '';\r\n    this._SfRowSuccess.style.display = 'none';\r\n    this._SfRowSuccessMessage.innerHTML = '';\r\n    this._SfRowNotif.style.display = 'flex';\r\n    this._SfRowNotifMessage.innerHTML = msg;\r\n  }\r\n\r\n  setListSelection = (value: string, text: string) => {\r\n\r\n    // if(!this.selectedListSearchItemsValues.includes(value)) {\r\n    //   this.selectedListSearchItemsValues.push(value);\r\n    //   this.selectedListSearchItemsTexts.push(text);\r\n    // } else {\r\n    //   var index = this.selectedListSearchItemsValues.indexOf(value);\r\n    //   if (index !== -1) {\r\n    //     this.selectedListSearchItemsValues.splice(index, 1);\r\n    //     this.selectedListSearchItemsTexts.splice(index, 1);\r\n    //   }\r\n    // }\r\n\r\n    this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: value, newText: text });\r\n    // console.log(this.selectedListSearchItemsTexts, this.selectedListSearchItemsValues);\r\n\r\n  }\r\n  nextListRead = (cursor: any) => {\r\n    console.log('nextlistRead called', cursor, this.nextCursor.indexOf(cursor), this.nextCursor)\r\n    if (this.nextCursor.indexOf(cursor) < 0) {\r\n      this.prevCursor.push(this.prevCursor.length === 0 ? 'initial' : this.nextCursor[this.nextCursor.length - 1]);\r\n      this.nextCursor.push(cursor);\r\n      console.log('fetchSearchSelect calling', this.nextCursor)\r\n      this.fetchSearchSelect(this.nextCursor[this.nextCursor.length - 1], true);\r\n    }\r\n\r\n  }\r\n\r\n  clickTableNextList = (cursor: any) => {\r\n\r\n    if (this.nextCursor.indexOf(cursor) < 0) {\r\n      this.prevCursor.push(this.prevCursor.length === 0 ? 'initial' : this.nextCursor[this.nextCursor.length - 1]);\r\n      this.nextCursor.push(cursor);\r\n\r\n      this.fetchSearchSelect(this.nextCursor[this.nextCursor.length - 1], false);\r\n    }\r\n\r\n  }\r\n\r\n  clickTableNext = (cursor: any) => {\r\n\r\n    if (this.nextCursor.indexOf(cursor) < 0) {\r\n      this.prevCursor.push(this.prevCursor.length === 0 ? 'initial' : this.nextCursor[this.nextCursor.length - 1]);\r\n      this.nextCursor.push(cursor);\r\n\r\n      this.fetchSearch(this.nextCursor[this.nextCursor.length - 1]);\r\n    }\r\n\r\n  }\r\n\r\n  clickTablePrev = () => {\r\n\r\n    if (this.nextCursor.length > 0) {\r\n      this.nextCursor.pop();\r\n      this.prevCursor.pop();\r\n    }\r\n\r\n    console.log('clicked prev', this.prevCursor, this.nextCursor);\r\n\r\n    if (this.nextCursor.length > 1) {\r\n      this.fetchSearch(this.nextCursor[this.nextCursor.length - 1]);\r\n    } else {\r\n      this.fetchSearch();\r\n    }\r\n\r\n\r\n  }\r\n\r\n  renderSearch = (values: any, found: any, cursor: any) => {\r\n\r\n    console.log('cursors', this.prevCursor, this.nextCursor);\r\n\r\n    let html = '';\r\n\r\n    if (values.length > 0) {\r\n\r\n      html += '<h3 part=\"results-title\" class=\"left-sticky\">Search Results (' + found + ')</h3>'\r\n\r\n      if (values.length === this.blockSize) {\r\n        html += '<div class=\"d-flex justify-end left-sticky mb-10 align-center\" id=\"button-next-cursor link\">';\r\n        if (this.prevCursor.length > 0) {\r\n          html += '<button id=\"button-prev-cursor\" part=\"button-icon-small\" class=\"material-icons\">chevron_left</button>&nbsp;';\r\n        }\r\n        html += '<span part=\"td-head\">&nbsp;&nbsp;' + (this.prevCursor.length + 1) + \"/\" + (Math.ceil(parseInt(found) / this.blockSize)) + '&nbsp;&nbsp;</span>'\r\n        html += '<button id=\"button-next-cursor\" part=\"button-icon-small\" class=\"material-icons\">chevron_right</button>&nbsp;&nbsp;';\r\n        html += '</div>';\r\n      } else {\r\n        html += '<div class=\"d-flex justify-end left-sticky mb-10\" id=\"button-next-cursor link\">';\r\n        if (this.prevCursor.length > 0) {\r\n          html += '<button id=\"button-prev-cursor\" part=\"button-icon-small\" class=\"material-icons\">chevron_left</button>&nbsp;&nbsp;';\r\n        }\r\n        html += '<span part=\"td-head\">&nbsp;&nbsp;' + (this.prevCursor.length + 1) + \"/\" + (Math.ceil(parseInt(found) / this.blockSize)) + '&nbsp;&nbsp;</span>'\r\n        html += '</div>';\r\n      }\r\n\r\n      html += '<table class=\"pb-10\">';\r\n      //console.log('search', values)\r\n\r\n      html += '<thead>';\r\n      // html += '<th part=\"td-action\" class=\"td-head left-sticky\">'\r\n      // html += 'Action';\r\n      // html += '</th>'\r\n      // for(var i = 0; i < cols.length; i++) {\r\n      //   if(!this.getIgnoreProjections().includes(cols[i])) {\r\n      //     html += '<th part=\"td-head\" class=\"td-head\">'\r\n      //     html += cols[i]\r\n      //     html += '</th>'\r\n      //   }\r\n      // }\r\n      html += '</thead>'\r\n\r\n      for (var i = 0; i < values.length; i++) {\r\n\r\n\r\n        const cols = JSON.parse(values[i].fields.cols);\r\n\r\n        // console.log(JSON.parse(values[i].fields.data));\r\n        let data = JSON.parse(values[i].fields.data);\r\n\r\n\r\n        var classBg = \"\";\r\n\r\n        if (i % 2 === 0) {\r\n          classBg = 'td-light';\r\n        } else {\r\n          classBg = 'td-dark';\r\n        }\r\n\r\n        html += '<tr>';\r\n        html += '<td part=\"td-action\" class=\"left-sticky\">';\r\n        html += '<div id=\"search-' + i + '\"><button part=\"button\" class=\"button-search-view\">View</button></div>';\r\n        html += '</td>';\r\n        html += '<td part=\"td-body\" class=\"td-body ' + classBg + '\">';\r\n        html += ('<div part=\"row-col-title\">id</div>')\r\n        html += ('<sf-i-elastic-text text=\"' + values[i].id + '\" minLength=\"10\"></sf-i-elastic-text>');\r\n        html += '</td>';\r\n        for (var j = 0; j < cols.length; j++) {\r\n\r\n          console.log('getignoreprojects', this.getIgnoreProjections());\r\n\r\n          if (!this.getIgnoreProjections().includes(cols[j].toLowerCase())) {\r\n            html += '<td part=\"td-body\" class=\"td-body ' + classBg + '\">';\r\n            html += ('<div part=\"row-col-title\">' + cols[j] + '</div>')\r\n            if (cols[j] == \"lastModifiedTime\") {\r\n              // html += `<sf-i-elastic-text text=\"${new Date(parseInt(data[j])).toLocaleDateString('en-US', { timeZone: 'Asia/Kolkata'})}-${new Date(parseInt(data[j])).toLocaleTimeString('en-US', { timeZone: 'Asia/Kolkata'})}\" minLength=\"80\"></sf-i-elastic-text>`\r\n              html += `<sf-i-elastic-text text=\"${Util.timeSince(parseInt(data[j]))}ago\" minLength=\"80\"></sf-i-elastic-text>`\r\n            } else\r\n              if (Array.isArray(data[j])) {\r\n                if (data[j][0] != null && Util.isJsonString(data[j][0]) && JSON.parse(data[j][0])['key'] != null && JSON.parse(data[j][0])['ext'] != null) {\r\n                  console.log('displaying cols Arr', cols[j], data[j])\r\n                }\r\n                if (data[j][0] != null && Util.isJsonString(data[j][0]) && JSON.parse(data[j][0])['key'] != null && JSON.parse(data[j][0])['ext'] != null) {\r\n                  html += ('<sf-i-elastic-text text=\"files[' + data[j].length + ']\" minLength=\"80\"></sf-i-elastic-text>')\r\n                } else {\r\n                  for (var k = 0; k < data[j].length; k++) {\r\n                    html += ('<sf-i-elastic-text text=\"' + data[j][k] + '\" minLength=\"80\"></sf-i-elastic-text>');\r\n                    if (k < (data[j].length - 1)) {\r\n                      html += \"; \";\r\n                    }\r\n                  }\r\n                }\r\n\r\n              } else {\r\n                html += ('<sf-i-elastic-text text=\"' + data[j] + '\" minLength=\"80\"></sf-i-elastic-text>')\r\n              }\r\n            html += '</td>';\r\n          }\r\n\r\n        }\r\n\r\n        html += '</tr>';\r\n\r\n\r\n      }\r\n      html += '</table>';\r\n      this._SfSearchListContainer.innerHTML = html;\r\n\r\n      for (var i = 0; i < values.length; i++) {\r\n\r\n        //console.log(this._SfSearchListContainer.querySelector('#search-' + i))\r\n        this._SfSearchListContainer.querySelector('#search-' + i).addEventListener('click', (ev: any) => {\r\n          // console.log('id', ev.currentTarget.id)\r\n          this.selectedId = values[parseInt((ev.currentTarget.id + \"\").split('-')[1])].id\r\n          this.mode = \"detail\";\r\n          this.loadMode();\r\n        });\r\n\r\n      }\r\n\r\n      (this._SfSearchListContainer as HTMLDivElement).querySelector('#button-next-cursor')?.addEventListener('click', () => {\r\n        this.clickTableNext(cursor);\r\n      });\r\n\r\n      (this._SfSearchListContainer as HTMLDivElement).querySelector('#button-prev-cursor')?.addEventListener('click', () => {\r\n        this.clickTablePrev();\r\n      });\r\n\r\n    } else {\r\n\r\n      html += '<h3>No Records Found</h3>'\r\n      this._SfSearchListContainer.innerHTML = html;\r\n\r\n    }\r\n\r\n  }\r\n\r\n  renderListRows = (values: any, multiSelect: boolean, cursor = \"\", fromFetchDetails: boolean = false) => {\r\n\r\n    console.log('renderlistrows', values, cursor);\r\n\r\n    var html = '';\r\n    let foundFlag = false\r\n    for (var i = 0; i < values.length; i++) {\r\n\r\n      let data;\r\n      let cols;\r\n      if (fromFetchDetails) {\r\n        data = Object.values(values[i]);\r\n        cols = Object.keys(values[i]);\r\n        console.log('renderlistrows', cols)\r\n      } else {\r\n        data = JSON.parse(values[i].fields.data);\r\n        cols = JSON.parse(values[i].fields.cols);\r\n      }\r\n\r\n\r\n\r\n      var classBg = \"\";\r\n\r\n      if (i % 2 === 0) {\r\n        classBg = 'td-light';\r\n      } else {\r\n        classBg = 'td-dark';\r\n      }\r\n\r\n      var appendStr = \"\";\r\n      for (var j = 0; j < cols.length; j++) {\r\n        // console.log('data[j]', data[j]);\r\n        console.log('this.getIgnoreProjections()', this.getIgnoreProjections().includes(cols[j].toLowerCase()), cols[j].toLowerCase())\r\n        if (!(this.getIgnoreProjections().includes(cols[j].toLowerCase())) && cols[j] != \"id\") {\r\n          if(appendStr != \"\"){\r\n            appendStr += \" \"\r\n          }\r\n          if (Array.isArray(data[j])) {\r\n\r\n            for (var k = 0; k < data[j].length; k++) {\r\n              appendStr += (data[j][k]);\r\n              if (k < (data[j].length - 1)) {\r\n                appendStr += \"\";\r\n              }\r\n            }\r\n\r\n          } else {\r\n            // appendStr += ((fromFetchDetails ? JSON.parse(data[j]) : data[j]) + \" \");\r\n            appendStr += ((fromFetchDetails ? JSON.parse(data[j]) : data[j]));\r\n          }\r\n\r\n        }\r\n\r\n        //console.log('append', appendStr);\r\n      }\r\n\r\n      var checked = '';\r\n      console.log(\"Checking\", values[i].id, this.selectedSearchId)\r\n      console.log(\"Checking\", values[i].id, this.selectedSearchId, this.selectedSearchId.includes(values[i].id))\r\n      if (fromFetchDetails) {\r\n        if (this.selectedSearchId.includes(values[i].id)) {\r\n          checked = \"checked\";\r\n        } else {\r\n          checked = \"\";\r\n        }\r\n      } else if (this.selectedSearchId.includes(values[i].id)) {\r\n        checked = \"checked\";\r\n      } else {\r\n        checked = \"\";\r\n      }\r\n\r\n      var disabled = '';\r\n\r\n      if (this.flow == \"read\") {\r\n        disabled = 'disabled';\r\n      }\r\n      if (this.flow == \"read\" && this.selectedSearchId.length > 0 && checked != \"checked\" && this.searchPhrase == \"\") {\r\n        // if(this.selectedSearchId.length > 0 && checked != \"checked\"){\r\n        console.log('renderlistrows continuing', values[i])\r\n        continue;\r\n      }\r\n      if (checked == \"checked\") {\r\n        console.log(\"Checked Found\", values[i], cursor)\r\n      }\r\n      foundFlag = (foundFlag || (checked == \"checked\"))\r\n      let rowhtml = ''\r\n      rowhtml += '<tr' + ((checked != \"checked\") ? ' class=\"hide-edit\"' : '') + '>';\r\n      rowhtml += '<td part=\"td-action\" class=\"left-sticky\">';\r\n      if (multiSelect) {\r\n        rowhtml += '<div><input id=\"search-' + i + '\" part=\"input-checkbox\" type=\"checkbox\" value=\"' + values[i].id + '\" ' + checked + ' ' + disabled + '/><div class=\"append-str gone\">' + appendStr + '</div></div>';\r\n      } else {\r\n        rowhtml += '<div><input id=\"search-' + values[i].id + '\" class=\"search-select-input\" name=\"select-statute\" part=\"input-checkbox\" type=\"' + (this.mode == \"select\" ? \"radio\" : \"checkbox\") + '\" value=\"' + values[i].id + '\" ' + checked + ' ' + disabled + '/><div class=\"append-str gone\">' + appendStr + '</div></div>';\r\n      }\r\n\r\n      rowhtml += '</td>';\r\n\r\n      for (j = 0; j < cols.length; j++) {\r\n\r\n        // console.log('data', data[j]);\r\n\r\n        if (!this.getIgnoreProjections().includes(cols[j].toLowerCase()) && cols[j] != \"id\") {\r\n\r\n          rowhtml += '<td part=\"td-body\" class=\"td-body ' + classBg + '\">';\r\n          if (cols[j] == \"lastModifiedTime\") {\r\n            // rowhtml += `${new Date(parseInt(data[j])).toLocaleDateString('en-US', { timeZone: 'Asia/Kolkata'})}-${new Date(parseInt(data[j])).toLocaleTimeString('en-US', { timeZone: 'Asia/Kolkata'})}`\r\n            rowhtml += `${Util.timeSince(parseInt(data[j]))}ago`\r\n          } else if (Array.isArray(data[j])) {\r\n            if (data[j][0] != null && Util.isJsonString(data[j][0]) && JSON.parse(data[j][0])['key'] != null && JSON.parse(data[j][0])['ext'] != null) {\r\n              rowhtml += 'files[' + data[j].length + ']'\r\n            } else {\r\n              for (var k = 0; k < data[j].length; k++) {\r\n\r\n                rowhtml += data[j][k];\r\n                if (k < (data[j].length - 1)) {\r\n                  rowhtml += \" &nbsp; \";\r\n                }\r\n              }\r\n            }\r\n\r\n          } else {\r\n            rowhtml += (fromFetchDetails ? JSON.parse(data[j]) : data[j])\r\n          }\r\n          rowhtml += '</td>';\r\n\r\n        }\r\n\r\n      }\r\n      rowhtml += '</tr>';\r\n      console.log('rendering search rows', rowhtml, !html.includes(values[i].id), (!(this._SfSearchSelectContainer as HTMLElement).innerHTML.includes(values[i].id) || this.flow != \"read\"))\r\n      // console.log('rendering search rows', rowhtml, !(this._SfSearchSelectContainer as HTMLElement).innerHTML.includes(values[i].id))\r\n      if (!html.includes(values[i].id) && (!(this._SfSearchSelectContainer as HTMLElement).innerHTML.includes(values[i].id) || this.flow != \"read\")) {\r\n        // if(!(this._SfSearchSelectContainer as HTMLElement).innerHTML.includes(values[i].id)){\r\n        html += rowhtml\r\n      }\r\n    }\r\n    console.log('returning html', html)\r\n    return [html, foundFlag];\r\n\r\n  }\r\n\r\n  clearSearchSelection = () => {\r\n    this.selectedSearchId = [];\r\n    this.selectedObjArr = []\r\n    this.flagValChange = true;\r\n    // this.dispatchMyEvent(\"valueChanged\", {bubbles: true, newValue: {}, newText: {}});\r\n    this.loadMode();\r\n  }\r\n\r\n  renderList = (values: any, found: any, cursor: any, multiSelect: boolean = false, hideEdit: boolean = true, fromFetchDetails: boolean = false) => {\r\n\r\n    console.log('renderlist search', values, this.nextCursor, this.prevCursor, this.searchPhrase, hideEdit, this.selectedSearchId);\r\n    if (this._sfButtonClearSelection != null) {\r\n      this._sfButtonClearSelection.style.display = (this.selectedSearchId.length == 0) ? 'none' : 'flex';\r\n    }\r\n    if (this._sfSelectionCount != null) {\r\n      this._sfSelectionCount.style.display = (this.selectedSearchId.length == 0) ? 'none' : 'flex';\r\n      this._sfSelectionCount.innerHTML = this.selectedSearchId.length + ' selected'\r\n    }\r\n    let html = '';\r\n    if (fromFetchDetails) {\r\n      html += '<table id=\"select-list-table\">';\r\n      //console.log('search', values)\r\n\r\n      let cols = Object.keys(values[0]);\r\n\r\n      html += '<thead>';\r\n      html += '<th part=\"td-action\" class=\"td-head left-sticky\">'\r\n      html += 'Action';\r\n      html += '</th>'\r\n      for (var i = 0; i < cols.length; i++) {\r\n        if (!this.getIgnoreProjections().includes(cols[i].toLowerCase()) && cols[i] != \"id\") {\r\n          html += '<th part=\"td-head\" class=\"td-head\">'\r\n          html += cols[i]\r\n          html += '</th>'\r\n        }\r\n      }\r\n      html += '</thead>'\r\n      let renderedRowsArr = this.renderListRows(values, multiSelect, cursor, fromFetchDetails)\r\n      html += renderedRowsArr[0];\r\n\r\n      html += '</table>';\r\n      this._SfSearchSelectContainer.innerHTML = html;\r\n      if (renderedRowsArr[1]) {\r\n        this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: {}, newText: {} });\r\n      }\r\n    } else if (values.length > 0 && this.nextCursor.length === 0) {\r\n      if (this.flow != \"read\") {\r\n        html += '<h3 part=\"results-title\" class=\"left-sticky\">Search Results (' + found + ')</h3>'\r\n      }\r\n      html += '<table id=\"select-list-table\">';\r\n      //console.log('search', values)\r\n      let renderedRowsArr = []\r\n\r\n      let cols = JSON.parse(values[0].fields.cols);\r\n\r\n      html += '<thead>';\r\n      html += '<th part=\"td-action\" class=\"td-head left-sticky\">'\r\n      html += 'Action';\r\n      html += '</th>'\r\n      for (var i = 0; i < cols.length; i++) {\r\n        if (!this.getIgnoreProjections().includes(cols[i].toLowerCase())) {\r\n          html += '<th part=\"td-head\" class=\"td-head\">'\r\n          html += cols[i]\r\n          html += '</th>'\r\n        }\r\n      }\r\n      html += '</thead>'\r\n      renderedRowsArr = this.renderListRows(values, multiSelect, cursor)\r\n      html += renderedRowsArr[0];\r\n\r\n      html += '</table>';\r\n\r\n      if (values.length === this.blockSize && this.flow != \"read\") {\r\n        html += '<div id=\"down-indicator\" class=\"d-flex justify-start align-center mt-10 left-sticky hide-edit\">';\r\n        html += '<span part=\"td-head\" id=\"page-num\">&nbsp;&nbsp;' + (this.prevCursor.length + 1) + \"/\" + (Math.ceil(parseInt(found) / this.blockSize)) + '&nbsp;&nbsp;</span>'\r\n        html += '<button id=\"button-next-cursor\" part=\"button-icon-small\" class=\"material-icons\">expand_more</button>&nbsp;&nbsp;';\r\n        html += '</div>';\r\n        if (this.enableEditButton == \"yes\") {\r\n          html += '<div class=\"d-flex justify-center align-center mt-10 w-100\">';\r\n          html += '<button id=\"button-expand-edit\" part=\"button-icon-small\" class=\"material-icons\">expand_more</button>&nbsp;&nbsp;';\r\n          html += '<button id=\"button-collapse-edit\" part=\"button-icon-small\" class=\"material-icons hide-edit\">keyboard_arrow_up</button>&nbsp;&nbsp;';\r\n        }\r\n        html += '</div>';\r\n      }\r\n      console.log('renderlist search 1', html)\r\n      this._SfSearchSelectContainer.innerHTML = html;\r\n\r\n      const inputElements = (this._SfSearchSelectContainer as HTMLDivElement).querySelectorAll('.search-select-input') as NodeListOf<HTMLInputElement>;\r\n\r\n      console.log('inputs', inputElements);\r\n\r\n      for (var i = 0; i < inputElements.length; i++) {\r\n        let tempObj: any = values[i] ?? {};\r\n        (inputElements[i] as HTMLInputElement).addEventListener('click', (ev: any) => {\r\n          //console.log('event', (ev.currentTarget as HTMLInputElement).id);\r\n          if (ev.target.checked) {\r\n            this.selectedObj = tempObj\r\n            this.selectedObjArr.push(tempObj)\r\n            this.selectedSearchId.push(tempObj.id)\r\n            console.group('selected obj', this.selectedObj)\r\n          } else {\r\n            for (let obj of this.selectedObjArr) {\r\n              if (obj.id == tempObj.id) {\r\n                this.selectedObjArr.splice(this.selectedObjArr.indexOf(obj), 1);\r\n                if (this.selectedSearchId.indexOf(obj.id) >= 0) {\r\n                  this.selectedSearchId.splice(this.selectedSearchId.indexOf(obj.id), 1)\r\n                }\r\n              }\r\n            }\r\n          }\r\n          this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: {}, newText: {} });\r\n          if (this._sfButtonClearSelection != null) {\r\n            this._sfButtonClearSelection.style.display = (this.selectedSearchId.length == 0) ? 'none' : 'flex';\r\n          }\r\n          if (this._sfSelectionCount != null) {\r\n            this._sfSelectionCount.style.display = (this.selectedSearchId.length == 0) ? 'none' : 'flex';\r\n            this._sfSelectionCount.innerHTML = this.selectedSearchId.length + ' selected'\r\n          }\r\n          console.log('selection:', this.selectedObjArr, this.selectedEntireValues());\r\n        })\r\n\r\n      }\r\n      if (this._sfButtonClearSelection != null) {\r\n        this._sfButtonClearSelection.removeEventListener('click', this.clearSearchSelection);\r\n        this._sfButtonClearSelection.addEventListener('click', this.clearSearchSelection);\r\n      }\r\n\r\n      // for(var i = 0; i < values.length; i++) {\r\n\r\n      //  // console.log(this._SfSearchSelectContainer.querySelector('#search-' + i))\r\n      //   this._SfSearchSelectContainer.querySelector('#search-' + i).addEventListener('click', () => {\r\n      //   //  console.log('id', ev.currentTarget.id)\r\n      //     this.dispatchMyEvent(\"valueChanged\", {newValue: {}, newText: {}});\r\n      //   });\r\n\r\n      // }\r\n\r\n      (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-next-cursor')?.addEventListener('click', () => {\r\n        console.log('next clicked', cursor)\r\n        this.clickTableNextList(cursor);\r\n      });\r\n      (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-expand-edit')?.addEventListener('click', (e: any) => {\r\n        for (let element of (this._SfSearchSelectContainer as HTMLDivElement).querySelectorAll('.hide-edit')) {\r\n          if (element.id == 'down-indicator') {\r\n            (element as HTMLElement).style.display = 'flex'\r\n          } else if (element.id == 'button-collapse-edit') {\r\n            (element as HTMLElement).style.display = 'block'\r\n          } else {\r\n            (element as HTMLElement).style.display = 'table-row'\r\n          }\r\n        }\r\n        (e.target as HTMLElement).style.display = 'none';\r\n        ((this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-next-cursor') as HTMLButtonElement).addEventListener('click', () => {\r\n          console.log('next clicked 1', cursor)\r\n          this.clickTableNextList(cursor);\r\n        });\r\n      });\r\n      (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-collapse-edit')?.addEventListener('click', () => {\r\n        for (let element of (this._SfSearchSelectContainer as HTMLDivElement).querySelectorAll('.hide-edit')) {\r\n          (element as HTMLElement).style.display = 'none'\r\n        }\r\n        ((this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-expand-edit') as HTMLElement).style.display = 'block'\r\n      });\r\n      console.log(\"flow and selected\", this.flow, this.selectedSearchId, this.name, renderedRowsArr[1])\r\n      if (this.flow == \"read\" || (this.selectedSearchId.length > 0 && hideEdit)) {\r\n        if (renderedRowsArr[1]) {\r\n          this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: {}, newText: {} });\r\n        } else if (values.length > 0) {\r\n          console.log('nextlistRead called1', cursor)\r\n          this.nextListRead(cursor);\r\n        }\r\n      }\r\n      if (hideEdit) {\r\n        for (let element of (this._SfSearchSelectContainer as HTMLDivElement).querySelectorAll('.hide-edit')) {\r\n          (element as HTMLElement).style.display = 'none'\r\n        }\r\n      }\r\n    } else if (values.length > 0 && this.nextCursor.length > 0) {\r\n      let html = this._SfSearchSelectContainer.querySelector('#select-list-table').innerHTML\r\n      console.log('innerHTML', html, values)\r\n      let renderedRowsArr = this.renderListRows(values, multiSelect, cursor + \" calling 2\")\r\n      if (this.flow == \"read\") {\r\n        this._SfSearchSelectContainer.querySelector('#select-list-table').innerHTML = html + renderedRowsArr[0]\r\n      } else {\r\n        this._SfSearchSelectContainer.querySelector('#select-list-table').insertAdjacentHTML('beforeend', renderedRowsArr[0])\r\n      }\r\n      if (this.flow != \"read\") {\r\n        this._SfSearchSelectContainer.querySelector('#page-num').innerHTML = '&nbsp;&nbsp;' + (this.prevCursor.length + 1) + \"/\" + (Math.ceil(parseInt(found) / this.blockSize)) + '&nbsp;&nbsp;';\r\n      }\r\n\r\n      if (values.length < this.blockSize && this.flow != \"read\") {\r\n        ((this._SfSearchSelectContainer as HTMLDivElement).querySelector('#down-indicator') as HTMLDivElement).style.display = 'none';\r\n      }\r\n\r\n      const inputElements = (this._SfSearchSelectContainer as HTMLDivElement).querySelectorAll('.search-select-input') as NodeListOf<HTMLInputElement>;\r\n\r\n      for (var i = (this.nextCursor.length * 10); i < inputElements.length; i++) {\r\n        let tempObj: any = {};\r\n        tempObj = values[i - (this.nextCursor.length * 10)];\r\n        (inputElements[i] as HTMLInputElement).addEventListener('click', (ev: any) => {\r\n          if (ev.target.checked) {\r\n            this.selectedObj = tempObj\r\n            this.selectedObjArr.push(tempObj)\r\n            console.log('selected Obj 1', this.selectedObj);\r\n          } else {\r\n            for (let obj of this.selectedObjArr) {\r\n              if (obj.id == tempObj.id) {\r\n                this.selectedObjArr.splice(this.selectedObjArr.indexOf(obj), 1);\r\n              }\r\n            }\r\n          }\r\n          this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: {}, newText: {} });\r\n        })\r\n\r\n      }\r\n      console.log(\"flow and selected 1\", this.flow, this.selectedSearchId, this.name, renderedRowsArr[1])\r\n      if (this.flow == \"read\" || (this.selectedSearchId.length > 0 && hideEdit)) {\r\n        if (renderedRowsArr[1]) {\r\n          this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: {}, newText: {} });\r\n        } else if (values.length > 0) {\r\n          console.log('nextlistRead called1', cursor)\r\n          this.nextListRead(cursor);\r\n        }\r\n      } else {\r\n        // var old_element = (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-next-cursor');\r\n        // var new_element = old_element!.cloneNode(true);\r\n        // old_element?.parentElement?.replaceChild(new_element, old_element!);\r\n        // (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-next-cursor')?.addEventListener('click', () => {\r\n        //   this.clickTableNextList(cursor);\r\n        // });\r\n      }\r\n      if (hideEdit) {\r\n        for (let element of (this._SfSearchSelectContainer as HTMLDivElement).querySelectorAll('.hide-edit')) {\r\n          (element as HTMLElement).style.display = 'none'\r\n        }\r\n      }\r\n      var old_element = (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-next-cursor');\r\n      if (old_element != null) {\r\n        var new_element = old_element!.cloneNode(true);\r\n        old_element?.parentElement?.replaceChild(new_element, old_element!);\r\n      }\r\n      (this._SfSearchSelectContainer as HTMLDivElement).querySelector('#button-next-cursor')?.addEventListener('click', () => {\r\n        this.clickTableNextList(cursor);\r\n      });\r\n    } else {\r\n\r\n      html += '<h3>No Records Found</h3>'\r\n      this._SfSearchSelectContainer.innerHTML = html;\r\n\r\n    }\r\n\r\n    if (this.flagValChange) {\r\n      this.flagValChange = false;\r\n      this.dispatchMyEvent(\"valueChanged\", { bubbles: true, newValue: {}, newText: {} });\r\n    }\r\n\r\n  }\r\n\r\n  renderLogs = (values: any) => {\r\n\r\n    console.log('values', values);\r\n\r\n    let html = '';\r\n\r\n    if (values.length > 0) {\r\n\r\n      html += '<h3 class=\"left-sticky\">Logs Results (' + values.length + ')</h3>'\r\n\r\n      for (var i = (values.length - 1); i >= 0; i--) {\r\n\r\n        console.log('timestamp', (new Date(values[i].timestamp)));\r\n\r\n        html += '<table class=\"left-sticky\">';\r\n        html += '<tr>';\r\n        html += '<td>';\r\n        html += '<div><button part=\"button-icon-small\" id=\"button-collapse-' + i + '\" class=\"material-icons gone button-icon-small\">expand_less</button><button part=\"button-icon-small\" id=\"button-expand-' + i + '\" class=\"material-icons button-icon-small\">expand_more</button></div>';\r\n        html += '</td>';\r\n        html += '<td>';\r\n        html += '<div id=\"search-' + i + '\"><strong>' + values[i].message.op + '</strong></div>';\r\n        html += '</td>';\r\n        html += '<td>';\r\n        html += '<div>&nbsp;<strong>' + values[i].message.httpCode + '</strong></div>';\r\n        html += '</td>';\r\n        html += '<td>';\r\n        html += '<div>&nbsp;' + values[i].message.userId + '</div>';\r\n        html += '</td>';\r\n        html += '<td>';\r\n        html += '<div>&nbsp;' + (new Date(values[i].timestamp) + \"\").split(' (')[0] + '</div>';\r\n        html += '</td>';\r\n        html += '</tr>';\r\n        html += '</table>';\r\n\r\n        html += '<table>';\r\n        html += '<tr>';\r\n        html += '<td>';\r\n        html += '<div id=\"row-expand-' + i + '\" class=\"gone\">';\r\n\r\n        if (values[i].message.delta != null) {\r\n\r\n          const jsonDelta = (values[i].message.delta);\r\n          console.log(\"delta\", jsonDelta);\r\n          html += '<div><strong>Delta</strong></div>'\r\n          html += '<table>';\r\n          html += '<thead>';\r\n          for (var j = 0; j < jsonDelta.length; j++) {\r\n            if (jsonDelta[j].oldValue == jsonDelta[j].newValue) {\r\n              html += '<th class=\"td-head\">';\r\n            } else {\r\n              html += '<th class=\"td-highlight\">';\r\n            }\r\n            html += jsonDelta[j].field;\r\n            html += '</th>';\r\n          }\r\n          html += '</thead>';\r\n          html += '<tr>';\r\n          for (var j = 0; j < jsonDelta.length; j++) {\r\n            if (jsonDelta[j].oldValue == jsonDelta[j].newValue) {\r\n              html += '<td class=\"td-dark\">';\r\n            } else {\r\n              html += '<td class=\"td-highlight\">';\r\n            }\r\n            html += jsonDelta[j].oldValue;\r\n            html += '</td>';\r\n          }\r\n          html += '</tr>';\r\n          html += '<tr>';\r\n          for (var j = 0; j < jsonDelta.length; j++) {\r\n            if (jsonDelta[j].oldValue == jsonDelta[j].newValue) {\r\n              html += '<td class=\"td-light\">';\r\n            } else {\r\n              html += '<td class=\"td-highlight\">';\r\n            }\r\n            html += jsonDelta[j].newValue;\r\n            html += '</td>';\r\n          }\r\n          html += '</tr>';\r\n          html += '</table>';\r\n\r\n        }\r\n\r\n        const req = JSON.parse(values[i].message.req.body).values;\r\n\r\n        if (req != null) {\r\n\r\n          html += '<div><strong>Request</strong></div>'\r\n\r\n          html += '<table>';\r\n          html += '<thead>';\r\n\r\n          for (var j = 0; j < Object.keys(req).length; j++) {\r\n            html += '<th class=\"td-head\">';\r\n            html += Object.keys(req)[j];\r\n            html += '</th>';\r\n          }\r\n          html += '</thead>';\r\n          html += '<tr>';\r\n\r\n          for (var j = 0; j < Object.keys(req).length; j++) {\r\n            html += '<td class=\"td-light\">';\r\n            html += req[Object.keys(req)[j]].value;\r\n            html += '</td>';\r\n          }\r\n          html += '</tr>';\r\n          html += '</table>';\r\n\r\n        } else {\r\n          html += '<strong>Request</strong> - ' + JSON.stringify(values[i].message.req.body) + '<br />';\r\n        }\r\n\r\n        html += '<strong>Response</strong> - ' + JSON.stringify(values[i].message.resp.body) + '';\r\n        html += '</div>';\r\n        html += '</td>';\r\n        html += '</tr>';\r\n        html += '</table>';\r\n\r\n      }\r\n      this._SfLogsListContainer.innerHTML = html;\r\n\r\n      for (var i = 0; i < values.length; i++) {\r\n\r\n        this._SfLogsListContainer.querySelector('#button-expand-' + i).addEventListener('click', (ev: any) => {\r\n          const id = (ev.currentTarget as HTMLElement).id;\r\n          this._SfLogsListContainer.querySelector('#row-expand-' + id.split('-')[2]).style.display = 'block';\r\n          this._SfLogsListContainer.querySelector('#button-collapse-' + id.split('-')[2]).style.display = 'block';\r\n          this._SfLogsListContainer.querySelector('#button-expand-' + id.split('-')[2]).style.display = 'none';\r\n        });\r\n\r\n        this._SfLogsListContainer.querySelector('#button-collapse-' + i).addEventListener('click', (ev: any) => {\r\n          const id = (ev.currentTarget as HTMLElement).id;\r\n          this._SfLogsListContainer.querySelector('#row-expand-' + id.split('-')[2]).style.display = 'none';\r\n          this._SfLogsListContainer.querySelector('#button-collapse-' + id.split('-')[2]).style.display = 'none';\r\n          this._SfLogsListContainer.querySelector('#button-expand-' + id.split('-')[2]).style.display = 'block';\r\n        });\r\n\r\n      }\r\n\r\n    } else {\r\n\r\n      html += '<h3>No Records Found</h3>'\r\n      this._SfLogsListContainer.innerHTML = html;\r\n\r\n    }\r\n\r\n  }\r\n\r\n  renderLatestListRows = (values: any) => {\r\n\r\n    console.log('renderlatestlistrows', values);\r\n\r\n    var html = '';\r\n\r\n    for (var i = 0; i < values.length; i++) {\r\n\r\n\r\n      const cols = JSON.parse(values[i].fields.cols);\r\n\r\n      // console.log(JSON.parse(values[i].fields.data));\r\n      let data = JSON.parse(values[i].fields.data);\r\n      // let data = Object.values(values[i]);\r\n      // let cols = Object.keys(values[i]);\r\n      // console.log('data', data, cols);\r\n\r\n      var classBg = \"\";\r\n\r\n      if (i % 2 === 0) {\r\n        classBg = 'td-light';\r\n      } else {\r\n        classBg = 'td-dark';\r\n      }\r\n\r\n\r\n      html += '<tr>';\r\n\r\n      for (let j = 0; j < cols.length; j++) {\r\n\r\n\r\n\r\n        if (!this.getIgnoreProjections().includes(cols[j].toLowerCase())) {\r\n\r\n          html += '<td part=\"td-body\" class=\"td-body ' + classBg + '\">';\r\n          html += ('<div part=\"row-col-title\">' + cols[j] + '</div>')\r\n          let txt = \"\"\r\n          if (Array.isArray(data[j])) {\r\n            if (data[j] != null && Util.isJsonString(data[j] as string) && JSON.parse(data[j] as string)['key'] != null && JSON.parse(data[j] as string)['ext'] != null) {\r\n              txt += 'files[' + (data[j] as Array<any>).length + ']'\r\n            } else {\r\n              for (var k = 0; k < (data[j] as Array<string>).length; k++) {\r\n\r\n                txt += (data[j] as Array<string>)[k];\r\n                if (k < ((data[j] as Array<string>).length - 1)) {\r\n                  txt += \" &nbsp; \";\r\n                }\r\n              }\r\n            }\r\n\r\n          } else {\r\n            if (data[j] != null && Util.isJsonString(data[j] as string) && JSON.parse(data[j] as string)[0]['key'] != null && JSON.parse(data[j] as string)[0]['ext'] != null) {\r\n              txt += 'files[' + (JSON.parse(data[j] as string)).length + ']'\r\n            } else {\r\n              txt += (Util.isJsonString((data[j] as string) ?? \"\") ? JSON.parse((data[j] as string)) : ((data[j] as string) ?? \"undef\"))\r\n            }\r\n          }\r\n          html += '<sf-i-elastic-text text=\"' + txt + '\" minLength=\"50\" lineSize=\"5\"></sf-i-elastic-text>';\r\n          html += '</td>';\r\n\r\n        }\r\n\r\n      }\r\n      html += '</tr>';\r\n\r\n    }\r\n\r\n    return html;\r\n\r\n  }\r\n\r\n  renderLatest = (values: any) => {\r\n\r\n    console.log('values', values);\r\n\r\n    let html = '';\r\n\r\n    if (values.length > 0) {\r\n\r\n      html += '<h3 part=\"latest-title\">' + this.titleMessage + '</h3>'\r\n\r\n      html += '<table part=\"latest-list-table\" id=\"latest-list-table\">';\r\n\r\n      html += this.renderLatestListRows(values);\r\n\r\n      html += '</table>';\r\n      this._SfLatestListContainer.innerHTML = html;\r\n\r\n    } else {\r\n      if (this.noLatestMessage != \"\") {\r\n        html += `<h3 part=\"latest-title\">${this.titleMessage}</h3>`\r\n        html += `<h3 part=\"no-latest-title\">${this.noLatestMessage}</h3>`\r\n      }\r\n      this._SfLatestListContainer.innerHTML = html;\r\n\r\n    }\r\n\r\n  }\r\n\r\n  renderClipboard = (value: any) => {\r\n\r\n    var sValues = '';\r\n\r\n    console.log('fields', this.getFields().length);\r\n    for (var i = 0; i < this.getFields().length; i++) {\r\n      if (value[this.getFields()[i]] == null) {\r\n        this.setError('Error in copy paste!');\r\n        setTimeout(() => { this.clearMessages() }, 3000);\r\n        return;\r\n      }\r\n    }\r\n\r\n    sValues += '[';\r\n    for (var i = 0; i < this.getFields().length; i++) {\r\n\r\n      console.log('fields', i, value[this.getFields()[i]]);\r\n\r\n      if (value[this.getFields()[i]] != null && Array.isArray(value[this.getFields()[i]]['value'])) {\r\n\r\n        sValues += '[';\r\n\r\n        for (var j = 0; j < value[this.getFields()[i]]['value'].length; j++) {\r\n\r\n\r\n          if (value[this.getFields()[i]]['value'][j]['key'] != null && value[this.getFields()[i]]['value'][j]['ext'] != null) {\r\n            sValues += JSON.stringify(value[this.getFields()[i]]['value'][j]);\r\n          } else {\r\n            sValues += '\"';\r\n            sValues += value[this.getFields()[i]]['value'][j];\r\n            sValues += '\"';\r\n          }\r\n          sValues += ',';\r\n          //data[j][0] != null && Util.isJsonString(data[j][0]) && JSON.parse(data[j][0])['key'] != null && JSON.parse(data[j][0])['ext'] != null\r\n          console.log('fields insrting 1', value[this.getFields()[i]]['value'][j]);\r\n\r\n        }\r\n\r\n        sValues = sValues.replace(/(^,)|(,$)/g, \"\")\r\n        sValues += '],';\r\n\r\n      } else {\r\n\r\n\r\n        console.log('fields insrting', value[this.getFields()[i]]['value']);\r\n\r\n        //sValues += '\"';\r\n        sValues += value[this.getFields()[i]] != null ? '\"' + value[this.getFields()[i]]['value'].replace(/\\n/g, '\\\\n') + '\"' : '\"\"';\r\n        //sValues += '\",';\r\n        sValues += ',';\r\n\r\n      }\r\n\r\n    }\r\n    sValues = sValues.replace(/(^,)|(,$)/g, \"\")\r\n    sValues += ']';\r\n\r\n    console.log('selected values', sValues);\r\n\r\n    this.selectedViewToDetailValues = (sValues);\r\n\r\n  }\r\n\r\n  renderDetail = (value: any) => {\r\n\r\n    var sValues = '';\r\n\r\n    console.log('selected fields', this.getFields().length);\r\n\r\n    sValues += '[';\r\n    for (var i = 0; i < this.getFields().length; i++) {\r\n\r\n      // console.log('selected fields', i, value[this.getFields()[i]], Array.isArray(JSON.parse(value[this.getFields()[i]])));\r\n\r\n      if (value[this.getFields()[i]] != null && Array.isArray(JSON.parse(value[this.getFields()[i]]))) {\r\n\r\n        sValues += '[';\r\n\r\n        for (var j = 0; j < JSON.parse(value[this.getFields()[i]]).length; j++) {\r\n          console.log(\"selected adding object\", JSON.parse(value[this.getFields()[i]])[j], typeof JSON.parse(value[this.getFields()[i]])[j])\r\n          if (typeof JSON.parse(value[this.getFields()[i]])[j] == \"object\") {\r\n            sValues += JSON.stringify(JSON.parse(value[this.getFields()[i]])[j]);\r\n            console.log('selected added object', sValues)\r\n            sValues += \",\"\r\n          } else {\r\n            sValues += '\"';\r\n            sValues += JSON.parse(value[this.getFields()[i]])[j];\r\n            sValues += '\",';\r\n          }\r\n\r\n        }\r\n\r\n        sValues = sValues.replace(/(^,)|(,$)/g, \"\")\r\n        sValues += '],';\r\n\r\n      } else {\r\n\r\n        //sValues += '\"';\r\n        sValues += value[this.getFields()[i]] != null ? value[this.getFields()[i]] : '\"\"';\r\n        //sValues += '\",';\r\n        sValues += ',';\r\n\r\n      }\r\n\r\n    }\r\n    sValues = sValues.replace(/(^,)|(,$)/g, \"\")\r\n    sValues += ']';\r\n\r\n    console.log('selected values', sValues, value);\r\n\r\n    this.selectedViewToDetailValues = sValues;\r\n\r\n\r\n  }\r\n\r\n  renderSearchMultiselectRead = (values: Array<any>, cursor = \"\", preselect: boolean = false) => {\r\n\r\n    var html = '';\r\n    let flagFound = false\r\n    var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n    for (var i = 0; i < values.length; i++) {\r\n\r\n      const id = values[i].id;\r\n      const cols = JSON.parse(values[i].fields.cols[0]) as Array<any>;\r\n      const data = JSON.parse(values[i].fields.data[0]) as Array<any>;\r\n      if (this.selectedSearchId.includes(id)) {\r\n        flagFound = true;\r\n        let flagExisting = false\r\n        for (let div of divArr) {\r\n          if (div.getAttribute('value') == id) {\r\n            flagExisting = true;\r\n            break;\r\n          }\r\n        }\r\n        if (flagExisting) {\r\n\r\n        } else {\r\n          let selectProjectionValue = \"\";\r\n          for (var j = 0; j < cols.length; j++) {\r\n            if (cols[j] == this.selectProjection) {\r\n              selectProjectionValue = Array.isArray(data[j]) ? data[j][0] : data[j];\r\n            }\r\n          }\r\n          html += `<div part=\"badge-multiselected-name\" class=\"badge-multiselected-name\" value=\"${id}\">` + selectProjectionValue + `</div>`;\r\n        }\r\n\r\n      }\r\n\r\n    }\r\n    (this._SfSearchMultiselectSelected as HTMLDivElement).insertAdjacentHTML('beforeend', html);\r\n    var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n    if ((this.maxSelect != null && divArr.length >= parseInt(this.maxSelect)) || this.flow == \"read\") {\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).style.display = 'none';\r\n    } else {\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).style.display = 'block';\r\n    }\r\n    if (!flagFound && values.length > 0) {\r\n      this.fetchSearchMultiselect(cursor, preselect)\r\n    }\r\n  }\r\n\r\n  renderSearchMultiselect = (values: Array<any>, cursor = \"\", preselect: boolean = false) => {\r\n\r\n    var html = '';\r\n    if (!preselect) {\r\n      html += '<option value=\"noselect\">Select</option>';\r\n\r\n      for (var i = 0; i < values.length; i++) {\r\n\r\n        const id = values[i].id;\r\n        const cols = JSON.parse(values[i].fields.cols[0]) as Array<any>;\r\n        const data = JSON.parse(values[i].fields.data[0]) as Array<any>;\r\n\r\n        let selectProjectionValue = \"\";\r\n        let selectAnotherProjectionValue = \"\";\r\n\r\n        for (var j = 0; j < cols.length; j++) {\r\n          if (cols[j] == this.selectProjection) {\r\n            selectProjectionValue = Array.isArray(data[j]) ? data[j][0] : data[j];\r\n          }\r\n          if (this.selectAnotherProjection != null && this.selectAnotherProjection.length > 0) {\r\n            if (cols[j] == this.selectAnotherProjection) {\r\n              selectAnotherProjectionValue = Array.isArray(data[j]) ? data[j][0] : data[j];\r\n            }\r\n          }\r\n        }\r\n\r\n        if (this.selectAnotherProjection != null && selectAnotherProjectionValue.length > 0) {\r\n          html += '<option value=\"' + selectProjectionValue + ';' + id + ';' + selectAnotherProjectionValue + '\">' + selectProjectionValue + '</option>';\r\n        } else {\r\n          html += '<option value=\"' + selectProjectionValue + ';' + id + '\">' + selectProjectionValue + '</option>';\r\n        }\r\n\r\n      }\r\n\r\n      (this._SfSearchMultiselectSelect as HTMLSelectElement)!.innerHTML = html;\r\n    } else {\r\n      this.renderSearchMultiselectRead(values, cursor, preselect)\r\n    }\r\n\r\n  }\r\n\r\n  fetchSearch = async (cursor: any = \"\") => {\r\n\r\n    this.clearMessages();\r\n\r\n    const body: any = { \"searchstring\": this._sfInputSearch != null ? this._sfInputSearch.value : \"\", \"cursor\": cursor };\r\n    let url = \"https://\" + this.apiId + \"/list\";\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      console.log(jsonRespose);\r\n      this.renderSearch(jsonRespose.values, jsonRespose.found, jsonRespose.cursor);\r\n\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  fetchSearchMultiselect = async (cursor: any = \"\", preselect: boolean = false) => {\r\n\r\n    this.clearMessages();\r\n\r\n    const body: any = { \"searchstring\": (this._SfSearchMultiselectInput as HTMLInputElement).value + \"&\" + this.searchPhrase, \"cursor\": cursor };\r\n    let url = \"https://\" + this.apiId + \"/list\";\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      console.log('multiselected', jsonRespose, this.selectedSearchId);\r\n      if (this.flow == \"read\") {\r\n        this.renderSearchMultiselectRead(jsonRespose.values as Array<any>, jsonRespose.cursor, preselect);\r\n      } else {\r\n        this.renderSearchMultiselect(jsonRespose.values as Array<any>, jsonRespose.cursor, preselect);\r\n      }\r\n      //this.renderSearch(jsonRespose.values, jsonRespose.found, jsonRespose.cursor);\r\n\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  fetchSearchSelect = async (cursor: any = \"\", hideEdit: boolean = false) => {\r\n\r\n    const body: any = { \"searchstring\": this.searchPhrase != null ? this.searchPhrase : \"\", \"cursor\": cursor };\r\n    console.log(body);\r\n    let url = \"https://\" + this.apiId + \"/list\";\r\n\r\n    console.log('fetchsearchselect searchphrase', this.searchPhrase, cursor);\r\n\r\n    if (this.searchPhrase != null) {\r\n\r\n      console.log('fetchsearchselect', body);\r\n\r\n      const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n      const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n      this._SfLoader.innerHTML = '';\r\n      if (xhr.status == 200) {\r\n        const jsonRespose = JSON.parse(xhr.responseText);\r\n        console.log('fetchsearchselect', jsonRespose);\r\n        if (this.mode == \"select\" || this.mode == \"multiselect-list\") {\r\n          //this.renderSelect(jsonRespose.values);\r\n          this.renderList(jsonRespose.values, jsonRespose.found, jsonRespose.cursor, false, hideEdit);\r\n        } else if (this.mode == \"list\") {\r\n          this.renderList(jsonRespose.values, jsonRespose.found, jsonRespose.cursor, true, hideEdit);\r\n        }\r\n      } else {\r\n        // const jsonRespose = JSON.parse(xhr.responseText);\r\n        // this.setError(jsonRespose.error);\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  fetchSearchList = async (cursor: any = \"\") => {\r\n\r\n    const body: any = { \"searchstring\": this.searchPhrase, \"cursor\": cursor };\r\n    let url = \"https://\" + this.apiId + \"/list\";\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      console.log(\"list response\", jsonRespose);\r\n      this.renderList(jsonRespose.values, jsonRespose.found, jsonRespose.cursor);\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  fetchDetail = async () => {\r\n\r\n    const body: any = { \"id\": this.mode == \"select\" ? this.selectedSearchId[0] : this.selectedId };\r\n    let url = \"https://\" + this.apiId + \"/detail\";\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      console.log('detail', jsonRespose);\r\n      if (this.mode == \"text\") {\r\n        return jsonRespose.data.value[this.projectField].replace(/\"/g, '');\r\n      } else if (this.mode == \"select\" && this.flow == \"read\") {\r\n        this.renderList([jsonRespose.data.value], 1, \"\", false, true, true)\r\n      } else {\r\n        this.renderDetail(jsonRespose.data.value);\r\n      }\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n    return null;\r\n\r\n  }\r\n\r\n  fetchLogs = async () => {\r\n    let startDate = (this._SfInputStartDate as HTMLInputElement).value\r\n    let endDate = (this._SfInputEndDate as HTMLInputElement).value\r\n    let startTime = new Date(startDate).getTime()\r\n    let endTime = (new Date(endDate).getTime()) + 1000\r\n    const body: any = { \"starttime\": startTime + \"\", \"endtime\": endTime + \"\" }\r\n    console.log(body)\r\n    let url = \"https://\" + this.apiId + \"/logs\";\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      console.log(jsonRespose);\r\n      this.renderLogs(jsonRespose.data);\r\n\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  fetchLatest = async () => {\r\n    let endTime = new Date().getTime()\r\n    let startTime = endTime - (this.latestDaysBlock * 24 * 60 * 60 * 1000)\r\n    const body: any = { \"starttime\": startTime + \"\", \"endtime\": endTime + \"\" }\r\n    console.log(body)\r\n    let url = \"https://\" + this.apiId + \"/getlatestlist\";\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      console.log(jsonRespose);\r\n      this.renderLatest(jsonRespose.data);\r\n\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  submitDelete = async () => {\r\n\r\n    this.clearMessages();\r\n\r\n    const body: any = {};\r\n    let url = \"\";\r\n\r\n    body[\"id\"] = this.selectedId;\r\n    url = \"https://\" + this.apiId + \"/delete\";\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      this.setSuccess('Operation Successful!');\r\n      setTimeout(() => {\r\n        this.clearMessages();\r\n        this._SfButtonBack.dispatchEvent(new Event('click'));\r\n      }, 2000);\r\n\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  submitNew = async () => {\r\n\r\n    this.clearMessages();\r\n\r\n    console.log('submitNew called');\r\n\r\n    const body: any = {};\r\n    let url = \"https://\" + this.apiId + \"/create\";\r\n\r\n    const values: any = {};\r\n\r\n    for (var i = 0; i < this.getFields().length; i++) {\r\n\r\n      const field = this.getFields()[i] as string;\r\n      values[field] = this.getInputValue(this.getInputs()[i])\r\n\r\n    }\r\n\r\n    body[\"values\"] = values;\r\n\r\n    console.log(body);\r\n    console.log(JSON.stringify(body));\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      this.setSuccess('Operation Successful!');\r\n      this.clearInputs();\r\n      setTimeout(() => {\r\n        this.clearMessages();\r\n        this._SfButtonBack.click();\r\n      }, 2000);\r\n\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n      setTimeout(() => {\r\n        this.clearMessages();\r\n      }, 2000);\r\n    }\r\n\r\n  }\r\n\r\n  submitEdit = async () => {\r\n\r\n    this.clearMessages();\r\n\r\n    console.log('submitEdit called');\r\n\r\n    const body: any = {};\r\n    let url = \"\";\r\n\r\n    const values: any = this.populateValues();\r\n\r\n    body[\"values\"] = values;\r\n    body[\"id\"] = this.selectedId;\r\n    url = \"https://\" + this.apiId + \"/update\";\r\n\r\n    console.log(body, url);\r\n\r\n    const authorization = btoa(Util.readCookie('email') + \":\" + Util.readCookie('accessToken'));\r\n    const xhr: any = (await this.prepareXhr(body, url, this._SfLoader, authorization)) as any;\r\n    this._SfLoader.innerHTML = '';\r\n    if (xhr.status == 200) {\r\n      this.setSuccess('Operation Successful!');\r\n      if (this.mode == \"detail\") {\r\n        setTimeout(() => {\r\n          this.clearMessages();\r\n          this._SfButtonBack.click();\r\n        }, 2000);\r\n      } else {\r\n        this.dispatchMyEvent(\"valueChanged\", {});\r\n        this.dispatchMyEvent(\"valueUpdated\", {});\r\n        this.loadMode();\r\n      }\r\n      setTimeout(() => {\r\n        this.clearMessages();\r\n      }, 3000);\r\n    } else {\r\n      const jsonRespose = JSON.parse(xhr.responseText);\r\n      this.setError(jsonRespose.error);\r\n    }\r\n\r\n  }\r\n\r\n  populateValues = () => {\r\n    const values: any = {};\r\n\r\n    for (var i = 0; i < this.getFields().length; i++) {\r\n\r\n      const field = this.getFields()[i] as string;\r\n      console.log('field', field);\r\n      values[field] = this.getInputValue(this.getInputs()[i])\r\n\r\n    }\r\n    console.log('copied values', values)\r\n    return values;\r\n  }\r\n\r\n  getValidationOfElement = (id: string) => {\r\n\r\n    let ret = \"\";\r\n\r\n    for (var i = 0; i < Object.keys(this.getValidations()).length; i++) {\r\n\r\n      const key = Object.keys(this.getValidations())[i];\r\n      console.log('key', key);\r\n      if (key == id) {\r\n        return this.getValidations()[id]\r\n      }\r\n    }\r\n\r\n    return ret;\r\n\r\n  }\r\n\r\n  evalSubmit = () => {\r\n\r\n    var evaluate = true;\r\n\r\n    console.log('inputs', this.getInputs());\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const id = this.getInputs()[i];\r\n      const element = (this._sfSlottedForm[0].querySelector('#' + id) as HTMLElement);\r\n\r\n      if ((element as HTMLElement).style.display != \"none\") {\r\n\r\n        if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n          const elementSfISelect = element as SfISelect;\r\n          const parentElement = (elementSfISelect.parentElement as HTMLDivElement);\r\n          const icon = parentElement.querySelector('.error-icon') as HTMLElement;\r\n          if (icon != null) {\r\n            parentElement.removeChild(icon);\r\n          }\r\n          if (element.hasAttribute('mandatory') && (elementSfISelect.selectedValues().length === 0 || elementSfISelect.selectedIndex() === 0)) {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            evaluate = false;\r\n            break;\r\n          } else {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-success\"><div class=\"material-icons\">done</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n          }\r\n        } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n          const elementSfISubSelect = element as SfISubSelect;\r\n          const parentElement = (elementSfISubSelect.parentElement as HTMLDivElement);\r\n          const icon = parentElement.querySelector('.error-icon') as HTMLElement;\r\n          if (icon != null) {\r\n            parentElement.removeChild(icon);\r\n          }\r\n          if (element.hasAttribute('mandatory') && (elementSfISubSelect.selectedValues().length === 0 || elementSfISubSelect.selectedIndex() === 0)) {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            evaluate = false;\r\n            break;\r\n          } else if (elementSfISubSelect.style.display != \"none\") {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-success\"><div class=\"material-icons\">done</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n          }\r\n        } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n          const elementSfIForm = element as SfIForm;\r\n          const parentElement = (elementSfIForm.parentElement as HTMLDivElement);\r\n          const icon = parentElement.querySelector('.error-icon') as HTMLElement;\r\n          if (icon != null) {\r\n            parentElement.removeChild(icon);\r\n          }\r\n          if (elementSfIForm.mode == \"list\") {\r\n\r\n            console.log('form selected values', elementSfIForm.selectedValues());\r\n            console.log('form selected texts', elementSfIForm.selectedTexts());\r\n\r\n            if (element.hasAttribute('mandatory') && elementSfIForm.selectedValues().length === 0) {\r\n              const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n              parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n              console.log('evaluate false return', element)\r\n              evaluate = false;\r\n              break;\r\n            } else {\r\n              const errorHtml = '<div class=\"error-icon d-flex justify-end color-success\"><div class=\"material-icons\">done</div></div>';\r\n              parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            }\r\n\r\n          } else {\r\n            console.log('elementSfIForm selected values', element.hasAttribute('mandatory'), element.id, elementSfIForm.selectedValues());\r\n            if (element.hasAttribute('mandatory') && elementSfIForm.selectedValues().length === 0) {\r\n              const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n              parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n              console.log('evaluate false return', element, elementSfIForm.selectedValues(), elementSfIForm.mode, elementSfIForm.flow)\r\n              evaluate = false;\r\n              break;\r\n            } else {\r\n              const errorHtml = '<div class=\"error-icon d-flex justify-end color-success\"><div class=\"material-icons\">done</div></div>';\r\n              parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            }\r\n\r\n          }\r\n\r\n        } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n          const elementSfIUploader = element as SfIUploader;\r\n          const parentElement = ((elementSfIUploader as SfIUploader).parentElement as HTMLDivElement);\r\n          const icon = parentElement.querySelector('.error-icon') as HTMLElement;\r\n          if (icon != null) {\r\n            parentElement.removeChild(icon);\r\n          }\r\n          let errInValidation = true\r\n          console.log('elementSfUploader uploadvalid', elementSfIUploader.uploadValid, elementSfIUploader.inputArr.length, element.hasAttribute('mandatory'))\r\n          if (element.hasAttribute('mandatory')) {\r\n            if (elementSfIUploader.uploadValid) {\r\n              errInValidation = false\r\n            }\r\n            // errInValidation = !(elementSfIUploader.uploadValid || elementSfIUploader.inputArr.length == 0)\r\n          } else {\r\n            if (elementSfIUploader.uploadValid) {\r\n              errInValidation = false\r\n            } else if (elementSfIUploader.inputArr.length === 0) {\r\n              errInValidation = false\r\n            }\r\n            // errInValidation = !(elementSfIUploader.uploadValid)\r\n          }\r\n\r\n          if (errInValidation) {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            console.log('evaluate false return', element)\r\n            evaluate = false;\r\n            break;\r\n          } else {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-success\"><div class=\"material-icons\">done</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n          }\r\n\r\n\r\n\r\n        } else {\r\n          const parentElement = (element.parentElement as HTMLDivElement);\r\n          const icon = parentElement.querySelector('.error-icon') as HTMLElement;\r\n          if (icon != null) {\r\n            parentElement.removeChild(icon);\r\n          }\r\n\r\n          let errInValidation = false;\r\n\r\n          console.log('testingvalidate', (element as HTMLInputElement).value, (/\\s{2}/.test((element as HTMLInputElement).value)), this.getValidationOfElement(id));\r\n\r\n          if (!(/\\s{2}/.test((element as HTMLInputElement).value))) {\r\n\r\n\r\n            if (this.getValidationOfElement(id) == this.VALIDATION_TEXT_BASIC) {\r\n\r\n              let value = (element as HTMLInputElement).value;\r\n\r\n              if ((element as HTMLInputElement).value.length > 0 && !(/\\s{2}/.test((element as HTMLInputElement).value))) {\r\n\r\n                if (value.indexOf('[') >= 0 || value.indexOf(']') >= 0) {\r\n                  errInValidation = true;\r\n                }\r\n                if (value.indexOf('\"') >= 0) {\r\n                  errInValidation = true;\r\n                }\r\n\r\n                if (errInValidation) {\r\n                  evaluate = false;\r\n                  const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n                  parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n                  console.log('evaluate false return', element)\r\n                  evaluate = false;\r\n                  return;\r\n                }\r\n\r\n              }\r\n\r\n\r\n            }\r\n\r\n            if (this.getValidationOfElement(id) == this.VALIDATION_TEXT_DATE) {\r\n\r\n              let value = (element as HTMLInputElement).value;\r\n\r\n              if ((element as HTMLInputElement).value.length > 0) {\r\n\r\n                if (value.indexOf(' ') >= 0) {\r\n                  errInValidation = true;\r\n                }\r\n\r\n                var regExpAlpha = /[a-zA-Z]/g;\r\n                var regExpSpecial = /[ `!@#$%^&()_+\\-=\\[\\]{};':\"|.<>?~]/;\r\n\r\n                if (regExpAlpha.test(value) || regExpSpecial.test(value)) {\r\n                  errInValidation = true;\r\n                }\r\n\r\n                if (errInValidation) {\r\n                  evaluate = false;\r\n                  const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n                  parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n                  console.log('evaluate false return', element)\r\n                  evaluate = false;\r\n                  return;\r\n                }\r\n\r\n              }\r\n\r\n\r\n            }\r\n\r\n          } else {\r\n            const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-symbols-outlined\">exclamation</div></div>';\r\n            parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            errInValidation = true;\r\n            evaluate = false;\r\n          }\r\n\r\n          if (!errInValidation) {\r\n            if (element.hasAttribute('mandatory') && (element as HTMLInputElement).value.length === 0) {\r\n              const errorHtml = '<div class=\"error-icon d-flex justify-end color-error\"><div class=\"material-icons\">exclamation</div></div>';\r\n              parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n              console.log('evaluate false return', element)\r\n              evaluate = false;\r\n              break;\r\n            } else {\r\n              const errorHtml = '<div class=\"error-icon d-flex justify-end color-success\"><div class=\"material-icons\">check_circle</div></div>';\r\n              parentElement.insertAdjacentHTML('beforeend', errorHtml);\r\n            }\r\n          }\r\n\r\n          console.log('getvalidationofelement', id, this.getValidationOfElement(id));\r\n\r\n        }\r\n\r\n      } else {\r\n        const parentElement = (element.parentElement as HTMLDivElement);\r\n        const icon = parentElement.querySelector('.error-icon') as HTMLElement;\r\n        if (icon != null) {\r\n          parentElement.removeChild(icon);\r\n        }\r\n      }\r\n\r\n    }\r\n\r\n    console.log('evaluate', evaluate);\r\n\r\n    if (evaluate) {\r\n      this._sfButtonSubmit?.removeAttribute('disabled');\r\n    } else {\r\n      this._sfButtonSubmit?.setAttribute('disabled', true);\r\n    }\r\n\r\n  }\r\n\r\n  disableConfirm = (value: boolean) => {\r\n\r\n    if (!value) {\r\n      //(this._sfButtonTrail as HTMLButtonElement).style.display = 'none';\r\n      (this._sfButtonCalendar as HTMLButtonElement).style.display = 'none';\r\n      (this._sfButtonCalendarCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonEditCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteConfirm as HTMLButtonElement).style.display = 'block';\r\n      (this._SfButtonDeleteCancel as HTMLButtonElement).style.display = 'block';\r\n      (this._SfButtonEdit as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDelete as HTMLButtonElement).style.display = 'none';\r\n      (this._sfButtonSubmit as HTMLButtonElement).style.display = 'none';\r\n    } else {\r\n      this.disableEdit(true);\r\n    }\r\n\r\n  }\r\n\r\n  disableCalendar = (value: boolean) => {\r\n\r\n    if (value) {\r\n      (this._sfButtonCalendar as HTMLButtonElement).style.display = 'block';\r\n      (this._sfButtonCalendarCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonEditCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteConfirm as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonEdit as HTMLButtonElement).style.display = 'block';\r\n      (this._SfButtonDelete as HTMLButtonElement).style.display = 'block';\r\n      (this._sfButtonSubmit as HTMLButtonElement).style.display = 'none';\r\n      (this._SfCalendarContainer as HTMLDivElement).style.display = 'none';\r\n      (this._SfFormContainer as HTMLDivElement).style.display = 'block';\r\n\r\n    } else {\r\n      (this._sfButtonCalendar as HTMLButtonElement).style.display = 'none';\r\n      (this._sfButtonCalendarCancel as HTMLButtonElement).style.display = 'block';\r\n      (this._SfButtonEditCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteConfirm as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonEdit as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDelete as HTMLButtonElement).style.display = 'none';\r\n      (this._sfButtonSubmit as HTMLButtonElement).style.display = 'none';\r\n      (this._SfCalendarContainer as HTMLDivElement).style.display = 'block';\r\n      (this._SfFormContainer as HTMLDivElement).style.display = 'none';\r\n    }\r\n\r\n  }\r\n\r\n  disableEdit = (value: boolean) => {\r\n\r\n    if (value) {\r\n      if (this.apiIdCalendarDetail != \"\") {\r\n        (this._sfButtonCalendar as HTMLButtonElement).style.display = 'block';\r\n        (this._sfButtonCalendarCancel as HTMLButtonElement).style.display = 'none';\r\n      }\r\n      (this._SfButtonEditCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteConfirm as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonEdit as HTMLButtonElement).style.display = 'block';\r\n      if (this.mode != \"consumer\") {\r\n        (this._SfButtonDelete as HTMLButtonElement).style.display = 'block';\r\n      }\r\n      (this._sfButtonSubmit as HTMLButtonElement).style.display = 'none';\r\n    } else {\r\n      // (this._sfButtonTrail as HTMLButtonElement).style.display = 'none';\r\n      if (this.apiIdCalendarDetail != \"\") {\r\n        (this._sfButtonCalendar as HTMLButtonElement).style.display = 'none';\r\n        (this._sfButtonCalendarCancel as HTMLButtonElement).style.display = 'none';\r\n      }\r\n      (this._SfButtonEditCancel as HTMLButtonElement).style.display = 'block';\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).style.display = 'block';\r\n      (this._SfButtonDeleteConfirm as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDeleteCancel as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonEdit as HTMLButtonElement).style.display = 'none';\r\n      (this._SfButtonDelete as HTMLButtonElement).style.display = 'none';\r\n      (this._sfButtonSubmit as HTMLButtonElement).style.display = 'block';\r\n\r\n    }\r\n\r\n    this.processFiltersByEvent();\r\n\r\n  }\r\n\r\n  hideDelete = () => {\r\n    (this._SfButtonDelete as HTMLButtonElement).style.display = 'none';\r\n  }\r\n\r\n  hideBack = () => {\r\n    (this._SfButtonBack as HTMLButtonElement).style.visibility = 'hidden';\r\n  }\r\n\r\n  formatShortlistedSearchPhrase = () => {\r\n\r\n    var searchStr = \"\";\r\n\r\n    for (var i = 0; i < Object.keys(this.shortlistedSearchPhrases).length; i++) {\r\n      searchStr += (this.shortlistedSearchPhrases[Object.keys(this.shortlistedSearchPhrases)[i]])\r\n      if (i < (Object.keys(this.shortlistedSearchPhrases).length - 1)) {\r\n        searchStr += '&'\r\n      }\r\n    }\r\n\r\n    this.searchPhrase = searchStr;\r\n\r\n  }\r\n  updateShortlistedSearchTimeout: any;\r\n  updateShortlistedSearchPhrase = (parents: any, childElement: any) => {\r\n    // let oldSearchPhrase = childElement.searchPhrase\r\n    let oldShortlistedPhrases = JSON.stringify(childElement.shortlistedSearchPhrases)\r\n    console.log('updateshortlistedsearchphrase 1233', oldShortlistedPhrases, childElement.shortlistedSearchPhrases)\r\n    for (var k = 0; k < parents.length; k++) {\r\n\r\n      const parentElement = (this._sfSlottedForm[0].querySelector('#' + parents[k]) as HTMLElement);\r\n      if (parentElement.style.display == \"none\") {\r\n        console.log('updateshortlistedsearchphrase hiding', parentElement, 'display none')\r\n        childElement.shortlistedSearchPhrases[parentElement.id] = ''\r\n        continue;\r\n      }\r\n      if (parentElement.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        var selText = '';\r\n        for (var l = 0; l < (parentElement as SfISelect).selectedTexts().length; l++) {\r\n          selText += (parentElement as SfISelect).selectedTexts()[l]\r\n          if (l < ((parentElement as SfISelect).selectedTexts().length - 1)) {\r\n            selText += '&'\r\n          }\r\n        }\r\n        childElement.shortlistedSearchPhrases[parentElement.id] = selText\r\n\r\n      } else if (parentElement.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        var selText = '';\r\n        for (var l = 0; l < (parentElement as SfISubSelect).selectedTexts().length; l++) {\r\n          selText += (parentElement as SfISubSelect).selectedTexts()[l]\r\n          if (l < ((parentElement as SfISubSelect).selectedTexts().length - 1)) {\r\n            selText += '&'\r\n          }\r\n        }\r\n        childElement.shortlistedSearchPhrases[parentElement.id] = selText\r\n\r\n      } else if (parentElement.nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n        var selText = '';\r\n        for (var l = 0; l < (parentElement as SfISubSelect).selectedTexts().length; l++) {\r\n          selText += (parentElement as SfISubSelect).selectedTexts()[l]\r\n          if (l < ((parentElement as SfISubSelect).selectedTexts().length - 1)) {\r\n            selText += '&'\r\n          }\r\n        }\r\n        childElement.shortlistedSearchPhrases[parentElement.id] = selText\r\n\r\n      } else if (parentElement.nodeName.toLowerCase() == \"input\" || parentElement.nodeName.toLowerCase() == \"textarea\") {\r\n\r\n        var selText = '';\r\n        selText += (parentElement as HTMLInputElement).value + \"&\"\r\n        childElement.shortlistedSearchPhrases[parentElement.id] = selText\r\n\r\n      }\r\n\r\n    }\r\n\r\n    childElement.formatShortlistedSearchPhrase();\r\n\r\n\r\n    // if(childElement.searchPhrase != oldSearchPhrase){\r\n\r\n    let refreshFlag = false\r\n    for (let key of Object.keys(childElement.shortlistedSearchPhrases)) {\r\n      console.log('updateshortlistedsearchphrase assessing key', key, childElement.shortlistedSearchPhrases[key], JSON.parse(oldShortlistedPhrases)[key])\r\n      if (JSON.parse(oldShortlistedPhrases)[key] == childElement.shortlistedSearchPhrases[key]) {\r\n        // refreshFlag = false\r\n      } else {\r\n        refreshFlag = true\r\n      }\r\n    }\r\n    console.log('updateshortlistedsearchphrase 1234', oldShortlistedPhrases, childElement.shortlistedSearchPhrases, refreshFlag)\r\n    if (refreshFlag && childElement.flow != \"read\") {\r\n      console.log('updateshortlistedsearchphrase 123', oldShortlistedPhrases, childElement.shortlistedSearchPhrases, childElement.selectedSearchId)\r\n      console.log(\"populating clearing input\");\r\n      childElement.selectedSearchId = []\r\n      // }\r\n      childElement.loadMode();\r\n      console.log('loadmode called', childElement)\r\n      if (this.updateShortlistedSearchTimeout != null) {\r\n        clearTimeout(this.updateShortlistedSearchTimeout);\r\n      }\r\n      let thisObj = this\r\n      this.updateShortlistedSearchTimeout = setTimeout(() => {\r\n        thisObj.populateSelectedFields([(childElement as HTMLElement).id])\r\n      }, 2000)\r\n    }\r\n\r\n  }\r\n\r\n  processDependencies = () => {\r\n\r\n    for (var i = 0; i < this.getDependencies().length; i++) {\r\n\r\n      const type = this.getDependencies()[i].type;\r\n\r\n      if (type == \"searchable\") {\r\n\r\n        const parents = this.getDependencies()[i].parents;\r\n        const child = this.getDependencies()[i].child;\r\n        const childElement = (this._sfSlottedForm[0].querySelector('#' + child) as SfIForm);\r\n\r\n        for (var j = 0; j < parents.length; j++) {\r\n\r\n          const parent = parents[j];\r\n          const parentElement = (this._sfSlottedForm[0].querySelector('#' + parent) as HTMLElement);\r\n\r\n          if (parentElement.nodeName.toLowerCase() == \"sf-i-form\" || parentElement.nodeName.toLowerCase() == \"sf-i-select\" || parentElement.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n            parentElement?.addEventListener('valueChanged', (e: any) => {\r\n              console.log('value changed 2', parentElement, e)\r\n              if (e.detail && e.detail.bubbles) {\r\n\r\n              } else {\r\n                this.updateShortlistedSearchPhrase(parents, childElement);\r\n              }\r\n            });\r\n\r\n            // parentElement?.addEventListener('renderComplete', (e:any) => {\r\n            //   console.log('updateshortlistedsearchphrase 123', parents, childElement, e)\r\n            //   this.updateShortlistedSearchPhrase(parents, childElement);\r\n            // });\r\n\r\n          } else if (parentElement.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n            parentElement?.addEventListener('uploadValid', () => {\r\n              this.updateShortlistedSearchPhrase(parents, childElement);\r\n            })\r\n            // parentElement?.addEventListener('uploadComplete', () => {\r\n            //   console.log('value changed', parentElement.nodeName.toLowerCase(), (parentElement as HTMLInputElement).value)\r\n            //   this.updateShortlistedSearchPhrase(parents, childElement);\r\n            // });\r\n            // parentElement?.addEventListener('analysisCompleted', () => {\r\n            //   console.log('value changed', parentElement.nodeName.toLowerCase(), (parentElement as HTMLInputElement).value)\r\n            //   this.updateShortlistedSearchPhrase(parents, childElement);\r\n            // });\r\n          } else {\r\n\r\n            parentElement?.addEventListener('keyup', (e: any) => {\r\n              console.log('keyup fired...');\r\n              if (e.detail && e.detail.bubbles) {\r\n\r\n              } else {\r\n                this.updateShortlistedSearchPhrase(parents, childElement);\r\n              }\r\n            })\r\n\r\n            // parentElement?.addEventListener('input', () => {\r\n            //   console.log('input fired...');\r\n            //   this.updateShortlistedSearchPhrase(parents, childElement);\r\n            // })\r\n\r\n            // parentElement?.addEventListener('change', () => {\r\n            //   console.log('input fired...');\r\n            //   this.updateShortlistedSearchPhrase(parents, childElement);\r\n            // })\r\n\r\n          }\r\n\r\n        }\r\n\r\n      } else {\r\n\r\n        const parent = this.getDependencies()[i].parent;\r\n        const child = this.getDependencies()[i].child;\r\n\r\n        const parentElement = (this._sfSlottedForm[0].querySelector('#' + parent) as SfISelect);\r\n        const childElement = (this._sfSlottedForm[0].querySelector('#' + child) as SfISubSelect);\r\n\r\n        parentElement?.addEventListener('valueChanged', (ev: any) => {\r\n          childElement.filterId = ev.detail.newValue;\r\n          childElement.populateList();\r\n        });\r\n\r\n        childElement.filterId = parentElement.selectedValues()[0];\r\n        childElement.populateList();\r\n\r\n      }\r\n\r\n\r\n    }\r\n\r\n  }\r\n\r\n  initShowInputs = () => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      console.log(this.getInputs()[i]);\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n      element.style.display = 'block';\r\n\r\n    }\r\n\r\n  }\r\n\r\n  initDisableInputs = async (value: boolean) => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n      console.log('disabling', element);\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n        (element as SfISelect).flow = value ? \"read\" : \"\";\r\n        console.log('disabling1', element);\r\n        (element as SfISelect).initState();\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n        (element as SfISubSelect).flow = value ? \"read\" : \"\";\r\n        (element as SfISubSelect).initState();\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n        console.log('init disabling form', (element as SfIForm).mode);\r\n        let oldFlow = (element as SfIForm).flow;\r\n        (element as SfIForm).flow = value ? \"read\" : \"\";\r\n        if ((element as SfIForm).flow != oldFlow) {\r\n          await (element as SfIForm).loadMode();\r\n        }\r\n        //(element as SfIForm).initState();\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n        console.log('init disabling form', (element as SfIUploader).readOnly, value, (element as SfIUploader).max, (element as SfIUploader).current);\r\n        (element as SfIUploader).readOnly = value;\r\n        (element as SfIUploader).loadMode();\r\n        //(element as SfIForm).initState();\r\n      } else {\r\n        if (value) {\r\n          (element as HTMLInputElement).setAttribute('disabled', 'disabled');\r\n        } else {\r\n          (element as HTMLInputElement).removeAttribute('disabled');\r\n        }\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  clearInputs = () => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        (element as SfISelect).selectedId = [];\r\n        (element as SfISelect).clearSelection();\r\n\r\n        // if((element as SfISelect).selectedId == null || (element as SfISelect).selectedId == \"\") {\r\n        //   (element as SfISelect).clearSelection();\r\n        // }\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        (element as SfISubSelect).selectedId = [];\r\n        (element as SfISubSelect).clearSelection();\r\n\r\n        // if((element as SfISubSelect).selectedId == null || (element as SfISubSelect).selectedId == \"\") {\r\n        //   (element as SfISubSelect).clearSelection();\r\n        // }\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n        console.log('clearing form input 1');\r\n        (element as SfIForm).selectedSearchId = [];\r\n        (element as SfIForm).clearSelection();\r\n        (element as SfIForm).loadMode();\r\n\r\n        // if((element as SfIForm).selectedSearchId == null || (element as SfIForm).selectedSearchId == \"\") {\r\n        //   (element as SfIForm).clearSelection();\r\n        // }\r\n\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n        console.log('clearing inputs');\r\n        (element as SfIUploader).prepopulatedInputArr = \"[]\";\r\n        (element as SfIUploader).clearUploads();\r\n        (element as SfIUploader).loadMode();\r\n        console.log('clearing inputs');\r\n        // if((element as SfIForm).selectedSearchId == null || (element as SfIForm).selectedSearchId == \"\") {\r\n        //   (element as SfIForm).clearSelection();\r\n        // }\r\n\r\n\r\n      } else {\r\n\r\n        (element as HTMLInputElement).value = \"\";\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  removeItemByValue = (value: string) => {\r\n\r\n    if (!this.removedValues.includes(value)) this.removedValues.push(value);\r\n\r\n  }\r\n\r\n  processFormLayouting = () => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n      } else {\r\n\r\n        //(element as HTMLInputElement).style.width = '98%';\r\n\r\n      }\r\n\r\n    }\r\n\r\n    this._sfButtonSubmit.style.width = '100%';\r\n\r\n  }\r\n\r\n  fWait = (ms: number) => {\r\n    return new Promise((resolve) => {\r\n      setTimeout(() => {\r\n        console.log(\"Done waiting\");\r\n        resolve(ms)\r\n      }, ms)\r\n    })\r\n  }\r\n\r\n  checkButtonState = true;\r\n\r\n  // triggerCheckButtonStates = async () => {\r\n\r\n  //   const func = () => {\r\n  //     console.log('i = func called');\r\n  //     this.checkButtonStates();\r\n  //   }\r\n\r\n  //   let myPromise = new Promise((resolve) => {\r\n\r\n  //     func();\r\n  //     console.log('i = 20 checkbuttonstate', this.checkButtonState);\r\n  //     if(this.checkButtonState) {\r\n  //       console.log('i = settimeout', this.checkButtonState);\r\n  //       setTimeout(() => {\r\n  //         func();\r\n  //       }, 2000);\r\n  //     } else {\r\n  //       console.log('i = resolving promise', this.checkButtonState);\r\n  //       resolve('')\r\n  //     }\r\n  //   });\r\n\r\n  //   return myPromise;\r\n  // }\r\n\r\n  checkButtonStates = () => {\r\n\r\n    this.checkButtonState = false;\r\n    var checkCount = 0;\r\n    var checkTotal = 0;\r\n\r\n    if ((this._SfFormC[0] as HTMLDivElement) == null) {\r\n      this.checkButtonState = true;\r\n      console.log('i = func checkbuttonstate returning null', this.checkButtonState);\r\n      return;\r\n    }\r\n\r\n    console.log('i = func checkbuttonstate no null 10', this.checkButtonState);\r\n    const selects = (this._SfFormC[0] as HTMLDivElement).querySelectorAll('sf-i-select') as NodeListOf<SfISelect>;\r\n    for (var i = 0; i < selects.length; i++) {\r\n      checkTotal++;\r\n      const outerHtml = selects[i].nextElementSibling?.outerHTML;\r\n      if (selects[i].hasAttribute('mandatory')) {\r\n        if (outerHtml != null) {\r\n          if (outerHtml!.indexOf('color-success') >= 0) {\r\n            checkCount++;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    console.log('i = func checkbuttonstate no null 11', this.checkButtonState);\r\n    if (!this.checkButtonState) {\r\n      const subSelects = (this._SfFormC[0] as HTMLDivElement).querySelectorAll('sf-i-sub-select') as NodeListOf<SfISubSelect>;\r\n      for (var i = 0; i < subSelects.length; i++) {\r\n        checkTotal++;\r\n        const outerHtml = subSelects[i].nextElementSibling?.outerHTML;\r\n        console.log('checkbuttonstate', subSelects[i], subSelects[i].hasAttribute('mandatory'));\r\n        if (subSelects[i].hasAttribute('mandatory')) {\r\n          if (outerHtml != null) {\r\n            if (outerHtml!.indexOf('color-success') >= 0) {\r\n              checkCount++;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    console.log('i = func checkbuttonstate no null 12', this.checkButtonState);\r\n    if (!this.checkButtonState) {\r\n      const subForms = (this._SfFormC[0] as HTMLDivElement).querySelectorAll('sf-i-form') as NodeListOf<SfIForm>;\r\n      for (var i = 0; i < subForms.length; i++) {\r\n        checkTotal++;\r\n        const outerHtml = subForms[i].nextElementSibling?.outerHTML;\r\n        if (subForms[i].hasAttribute('mandatory')) {\r\n          if (outerHtml != null) {\r\n            if (outerHtml!.indexOf('color-success') >= 0) {\r\n              checkCount++;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    console.log('i = func checkbuttonstate no null 13', this.checkButtonState);\r\n    if (!this.checkButtonState) {\r\n      const subInputs = (this._SfFormC[0] as HTMLDivElement).querySelectorAll('input') as NodeListOf<HTMLInputElement>;\r\n      for (var i = 0; i < subInputs.length; i++) {\r\n        checkTotal++;\r\n        const outerHtml = subInputs[i].nextElementSibling?.outerHTML;\r\n        if (subInputs[i].hasAttribute('mandatory')) {\r\n          if (outerHtml != null) {\r\n            if (outerHtml!.indexOf('color-success') >= 0) {\r\n              checkCount++;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    if (checkCount < checkTotal / 2) this.checkButtonState = true;\r\n    console.log('i = func checkbuttonstate no null 2', this.checkButtonState);\r\n\r\n  }\r\n\r\n  loopThroughSearchResults = async () => {\r\n\r\n    this.setNotif('Refresh in progress...')\r\n\r\n    // Indicates the page that has been processed\r\n    var count = 0;\r\n\r\n    while (true) {\r\n\r\n      // Get the next button\r\n      var buttonNext = (this._SfSearchListContainer as HTMLDivElement).querySelector('#button-next-cursor') as HTMLButtonElement;\r\n      if (buttonNext != null && count > 0) {\r\n        // If next button exists and if the flow is on the subsequent pages\r\n        for (var k = 0; k < count; k++) {\r\n          buttonNext.click();\r\n          await this.fWait(3000);\r\n          buttonNext = (this._SfSearchListContainer as HTMLDivElement).querySelector('#button-next-cursor') as HTMLButtonElement;\r\n        }\r\n      }\r\n\r\n      // At this point, we have arrived on the right page\r\n      // Get the list of view buttons\r\n      var buttons = (this._SfSearchListContainer as HTMLDivElement).querySelectorAll('.button-search-view') as NodeListOf<HTMLButtonElement>;\r\n\r\n      for (var i = 0; i < buttons.length; i++) {\r\n\r\n        // Click the next view button and go to the detail page\r\n        buttons[i].click();\r\n        await this.fWait(2000);\r\n        this.setNotif('Refresh in progress... ' + parseInt(((i * 100) / buttons.length) + \"%\"))\r\n        await this.fWait(3000);\r\n        // Click the edit button\r\n        (this._SfButtonEdit as HTMLButtonElement).click();\r\n        await this.fWait(2000);\r\n        // Validate all fields\r\n        this.evalSubmit();\r\n        await this.fWait(2000);\r\n        // Submit, after success it goes back to the search screen\r\n        (this._sfButtonSubmit as HTMLButtonElement).click();\r\n        await this.fWait(5000);\r\n        // Fetch the search list\r\n        // await this.fetchSearch();\r\n      }\r\n\r\n      buttonNext = (this._SfSearchListContainer as HTMLDivElement).querySelector('#button-next-cursor') as HTMLButtonElement;\r\n      if (buttonNext == null) {\r\n        break;\r\n      }\r\n\r\n      // Increment the count that indicates the page that been processed\r\n      count++;\r\n      await this.fetchSearch();\r\n      await this.fWait(5000);\r\n\r\n      // // Get the next button\r\n      // var buttonNext = (this._SfSearchListContainer as HTMLDivElement).querySelector('#button-next-cursor') as HTMLButtonElement;\r\n      // if(buttonNext != null) {\r\n      //   // If the next button exists\r\n      //   for(var k = 0; k < count; k++) {\r\n      //     buttonNext.click();\r\n      //     await this.fWait(3000);\r\n      //   }\r\n\r\n\r\n      //   for(var i = 0; i < buttons.length; i++) {\r\n      //     buttons[i].click();\r\n      //     await this.fWait(2000);\r\n      //     this.setNotif('Refresh in progress... ' + parseInt(((i*100)/buttons.length) + \"%\"))\r\n      //     await this.fWait(3000);\r\n      //     this.checkButtonStates();\r\n      //     if(this.checkButtonState) {\r\n      //       i--;\r\n      //     } else {\r\n      //       (this._SfButtonEdit as HTMLButtonElement).click();\r\n      //       await this.fWait(5000);\r\n      //       var allClear = false;\r\n      //       while(!allClear) {\r\n      //         this.checkButtonStates();\r\n      //         await this.fWait(2000);\r\n      //         if(!this.checkButtonState) {\r\n      //           allClear = true;\r\n      //         }\r\n      //       }\r\n      //       this.evalSubmit();\r\n      //       await this.fWait(2000);\r\n      //       (this._sfButtonSubmit as HTMLButtonElement).click();\r\n      //       await this.fWait(5000);\r\n      //       await this.fetchSearch();\r\n      //       await this.fWait(2000);\r\n      //       this.setNotif('Refresh in progress... ' + parseInt(((i*100)/buttons.length) + \"%\"))\r\n      //       await this.fWait(3000);\r\n      //       for(var k = 0; k < count; k++) {\r\n      //         buttonNext.click();\r\n      //         await this.fWait(3000);\r\n      //       }\r\n      //       buttons = (this._SfSearchListContainer as HTMLDivElement).querySelectorAll('.button-search-view') as NodeListOf<HTMLButtonElement>;\r\n      //     }\r\n      //   }\r\n      //   count++;\r\n      //   for(var k = 0; k < count; k++) {\r\n      //     buttonNext.click();\r\n      //     await this.fWait(3000);\r\n      //   }\r\n      //   //await this.fWait(5000);\r\n      //   //break;\r\n      // } else {\r\n      //   break;\r\n      // }\r\n    }\r\n\r\n  }\r\n\r\n  initListenersView = () => {\r\n\r\n    console.log('init listeners view');\r\n    let searchTimeout: any;\r\n    this._sfInputSearch?.addEventListener('keyup', (e: any) => {\r\n      if (searchTimeout != null) {\r\n        clearTimeout(searchTimeout)\r\n      }\r\n      console.log('keyup called', e.key);\r\n      if (e.key == null || e.key.toLowerCase() == \"enter\") {\r\n        this.searchPhrase = this._sfInputSearch.value;\r\n        if (this._sfInputSearch.value.length > 2) {\r\n          this.fetchSearch();\r\n        }\r\n      } else {\r\n        searchTimeout = setTimeout(() => {\r\n          this.searchPhrase = this._sfInputSearch.value;\r\n          if (this._sfInputSearch.value.length > 2) {\r\n            this.fetchSearch();\r\n          }\r\n        }, 2000)\r\n      }\r\n\r\n    });\r\n\r\n    this._SfButtonNew?.addEventListener('click', () => {\r\n      this.mode = \"new\";\r\n      this.loadMode();\r\n    });\r\n\r\n    this._sfButtonTrail.addEventListener('click', () => {\r\n      console.log('trail clicked');\r\n      this.mode = \"trail\";\r\n      this.loadMode();\r\n    });\r\n\r\n    this._sfButtonAll.addEventListener('click', () => {\r\n      console.log('all clicked');\r\n      if (this.searchPhrase == null || this.searchPhrase.length === 0) {\r\n        this.searchPhrase = \"\";\r\n      }\r\n      this.prevCursor = []\r\n      this.nextCursor = []\r\n      this.fetchSearch();\r\n    });\r\n\r\n  }\r\n\r\n  initListenersTrail = async () => {\r\n\r\n    this._SfButtonBack.addEventListener('click', () => {\r\n      this.mode = \"view\";\r\n      this.loadMode();\r\n    });\r\n\r\n    console.log(this._SfButtonFetchLog)\r\n    this._SfButtonFetchLog.addEventListener('click', () => {\r\n      console.log(\"fetch logs clicked\", (this._SfInputStartDate as HTMLInputElement).value, (this._SfInputEndDate as HTMLInputElement).value)\r\n      this.fetchLogs()\r\n    })\r\n\r\n    this._SfInputStartDate.addEventListener('change', () => {\r\n      this._SfInputEndDate.setAttribute('min', new Date((this._SfInputStartDate as HTMLInputElement).value).toISOString().slice(0, 10))\r\n      this.fetchLogs()\r\n    });\r\n    this._SfInputEndDate.addEventListener('change', () => {\r\n      this._SfInputStartDate.setAttribute('max', new Date((this._SfInputEndDate as HTMLInputElement).value).toISOString().slice(0, 10))\r\n      this.fetchLogs()\r\n    });\r\n\r\n  }\r\n\r\n  clearUnitFilters = () => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        (element as SfISelect).removedValues = [];\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        (element as SfISubSelect).removedValues = [];\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n        (element as SfIForm).removedValues = [];\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  processFiltersByEvent = () => {\r\n\r\n    var filters = null;\r\n\r\n    if (this.mode == \"new\") {\r\n      filters = this.getUnitFiltersNew();\r\n    }\r\n\r\n    if (this.mode == \"detail\" || this.mode == \"consumer\") {\r\n      filters = this.getUnitFiltersDetail();\r\n    }\r\n    console.log('unit filters', filters)\r\n    for (var i = 0; i < filters.length; i++) {\r\n\r\n      if (filters[i].op == \"hide\") {\r\n\r\n        const inputElement = this._SfFormC[0].querySelector('#' + filters[i].input);\r\n        const value = filters[i].value;\r\n\r\n        //\r\n\r\n        if (filters[i].input != null) {\r\n\r\n          if ((inputElement as HTMLInputElement).nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n            if (Array.isArray(value)) {\r\n\r\n              var foundFlag = false;\r\n\r\n              for (var j = 0; j < value.length; j++) {\r\n\r\n                if ((inputElement as SfISelect).selectedValues()[0] == value[j]) {\r\n                  foundFlag = true;\r\n                }\r\n\r\n              }\r\n\r\n              if (foundFlag) {\r\n                if (Array.isArray(filters[i].target)) {\r\n                  for (var k = 0; k < filters[i].target.length; k++) {\r\n                    const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                    let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                    (targetElement as HTMLElement).style.display = 'none';\r\n                    targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n\r\n                  }\r\n                } else {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'none';\r\n                  console.log('display toggle', targetElement, oldDisplay, (targetElement as HTMLElement).style.display)\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n\r\n                }\r\n\r\n              } else {\r\n                if (Array.isArray(filters[i].target)) {\r\n                  for (var k = 0; k < filters[i].target.length; k++) {\r\n                    const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                    let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                    (targetElement as HTMLElement).style.display = 'inline';\r\n                    targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                  }\r\n                } else {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'inline';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n              }\r\n            } else {\r\n              console.log(inputElement);\r\n              if ((inputElement as SfISelect).selectedValues()[0] == value) {\r\n\r\n                if (Array.isArray(filters[i].target)) {\r\n                  for (var k = 0; k < filters[i].target.length; k++) {\r\n                    const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                    let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                    (targetElement as HTMLElement).style.display = 'none';\r\n                    console.log('event bubbles hiding element 1', targetElement, oldDisplay, (targetElement as HTMLElement).style.display)\r\n                    targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                  }\r\n                } else {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'none';\r\n                  console.log('event bubbles hiding element', targetElement, oldDisplay, (targetElement as HTMLElement).style.display)\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n\r\n              } else {\r\n\r\n                if (Array.isArray(filters[i].target)) {\r\n                  for (var k = 0; k < filters[i].target.length; k++) {\r\n                    const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                    let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                    (targetElement as HTMLElement).style.display = 'inline';\r\n                    targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                  }\r\n                } else {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'inline';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n\r\n              }\r\n\r\n            }\r\n\r\n\r\n          } else if ((inputElement as HTMLInputElement).nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n            if ((inputElement as SfISubSelect).selectedValues()[0] == value) {\r\n\r\n              if (Array.isArray(filters[i].target)) {\r\n                for (var k = 0; k < filters[i].target.length; k++) {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'none';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n\r\n                }\r\n              } else {\r\n                const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                (targetElement as HTMLElement).style.display = 'none';\r\n                console.log('display toggle', targetElement, oldDisplay, (targetElement as HTMLElement).style.display)\r\n                targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n\r\n              }\r\n\r\n            } else {\r\n\r\n              if (Array.isArray(filters[i].target)) {\r\n                for (var k = 0; k < filters[i].target.length; k++) {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'inline';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n              } else {\r\n                const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                (targetElement as HTMLElement).style.display = 'inline';\r\n                targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n              }\r\n\r\n            }\r\n\r\n          } else if ((inputElement as HTMLInputElement).nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n            if ((inputElement as SfIForm).selectedValues()[0] == value) {\r\n\r\n              if (Array.isArray(filters[i].target)) {\r\n                for (var k = 0; k < filters[i].target.length; k++) {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'none';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n              } else {\r\n                const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                (targetElement as HTMLElement).style.display = 'none';\r\n                targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n              }\r\n\r\n            } else {\r\n\r\n              if (Array.isArray(filters[i].target)) {\r\n                for (var k = 0; k < filters[i].target.length; k++) {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'inline';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n              } else {\r\n                const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                (targetElement as HTMLElement).style.display = 'inline';\r\n                targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n              }\r\n\r\n\r\n            }\r\n\r\n          } else {\r\n\r\n            if ((inputElement as HTMLInputElement).value == value) {\r\n\r\n              if (Array.isArray(filters[i].target)) {\r\n                for (var k = 0; k < filters[i].target.length; k++) {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'none';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n              } else {\r\n                const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                (targetElement as HTMLElement).style.display = 'none';\r\n                targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n              }\r\n\r\n            } else {\r\n\r\n              if (Array.isArray(filters[i].target)) {\r\n                for (var k = 0; k < filters[i].target.length; k++) {\r\n                  const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n                  let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                  (targetElement as HTMLElement).style.display = 'inline';\r\n                  targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n                }\r\n              } else {\r\n                const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n                let oldDisplay = (targetElement as HTMLElement).style.display;\r\n                (targetElement as HTMLElement).style.display = 'inline';\r\n                targetElement.dispatchEvent(new CustomEvent('valueChanged', { detail: { bubbles: oldDisplay == (targetElement as HTMLElement).style.display } }))\r\n              }\r\n\r\n            }\r\n\r\n          }\r\n\r\n\r\n        } else {\r\n\r\n          if (Array.isArray(filters[i].target)) {\r\n            for (var k = 0; k < filters[i].target.length; k++) {\r\n              const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target[k]);\r\n              (targetElement as HTMLElement).style.display = 'none';\r\n              // targetElement.dispatchEvent(new CustomEvent('valueChanged',{detail:{bubbles:true}}))\r\n            }\r\n          } else {\r\n            const targetElement = this._SfFormC[0].querySelector('#' + filters[i].target);\r\n            (targetElement as HTMLElement).style.display = 'none';\r\n            // targetElement.dispatchEvent(new CustomEvent('valueChanged',{detail:{bubbles:true}}))\r\n          }\r\n\r\n        }\r\n\r\n        console.log('processing filters element', inputElement);\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  completeSelect = () => {\r\n    if (this.selectedSearchId.length > 0 || this.maxSelect != null) {\r\n      var found = false;\r\n      var html = '';\r\n      let valToAdd = (this._SfSearchMultiselectSelect as HTMLSelectElement)!.value.split(';')[0]\r\n      let idToAdd = (this._SfSearchMultiselectSelect as HTMLSelectElement)!.value.split(';')[1]\r\n      var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n      for (let div of divArr) {\r\n        if (div.getAttribute('value') == idToAdd) {\r\n          found = true;\r\n        }\r\n      }\r\n      if (!found) {\r\n        html += `<div part=\"badge-multiselected-name\" class=\"badge-multiselected-name\" value=\"${idToAdd}\">` + valToAdd + `</div>`;\r\n      }\r\n      (this._SfSearchMultiselectSelected as HTMLDivElement).insertAdjacentHTML('beforeend', html);\r\n      divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).value = '';\r\n      console.log(this.maxSelect, divArr.length)\r\n      if (this.maxSelect != null && divArr.length >= parseInt(this.maxSelect)) {\r\n        (this._SfSearchMultiselectInput as HTMLInputElement).style.display = 'none';\r\n      } else {\r\n        (this._SfSearchMultiselectInput as HTMLInputElement).focus();\r\n      }\r\n      (this._SfSearchMultiselectSelect as HTMLSelectElement).selectedIndex = 0;\r\n      (this._SfSearchMultiselectSelect as HTMLSelectElement).style.display = 'none';\r\n      (this._SfSearchMultiselectDelete as HTMLElement).style.display = divArr.length > 0 ? 'flex' : 'none';\r\n      if (!found) {\r\n        this.dispatchMyEvent(\"valueChanged\", {});\r\n        console.log(this.selectedValues())\r\n      }\r\n      return;\r\n    }\r\n    var found = false;\r\n    let valToAdd = (this._SfSearchMultiselectSelect as HTMLSelectElement)!.value\r\n    console.log('valToAdd', valToAdd)\r\n    // if(valToAdd != \"noselect\" && valToAdd != \"\"){\r\n    //   for (let selectedVal of this.multiselectArr){\r\n    //     if(selectedVal == valToAdd){\r\n    //       found = true\r\n    //     }\r\n    //   }\r\n    // }\r\n    // if(!found && valToAdd != \"noselect\" && valToAdd != \"\"){\r\n    //   this.multiselectArr.push(valToAdd)\r\n    // }\r\n    var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n    if (this.maxSelect != null && divArr.length >= parseInt(this.maxSelect)) {\r\n      return\r\n    }\r\n    for (var i = 0; i < divArr.length; i++) {\r\n\r\n      console.log(divArr[i], divArr[i].innerHTML)\r\n      if (divArr[i].innerHTML == (this._SfSearchMultiselectSelect as HTMLSelectElement)!.value) {\r\n        found = true;\r\n      }\r\n\r\n    }\r\n    // let html = ''\r\n    // for(var i = 0; i < this.multiselectArr.length; i++) {\r\n\r\n    //   html += `<div part=\"badge-multiselected\" class=\"badge-multiselected d-flex align-center\"><div part=\"button-icon-small-cancel\" class=\"d-flex material-icons color-gray pointer button-icon-small-cancel\" id=\"search-multiselect-delete-${i}\">cancel</div>`+this.multiselectArr[i]+`</div>`;\r\n\r\n    // }\r\n\r\n    // (this._SfSearchMultiselectSelected as HTMLDivElement).innerHTML =  html;\r\n    // (this._SfSearchMultiselectInput as HTMLInputElement).value = '';\r\n    // if(this.multiselectArr.length > 0){\r\n    //   (this._SfSearchMultiselectInput as HTMLInputElement).focus();\r\n    // }\r\n    // (this._SfSearchMultiselectSelect as HTMLSelectElement).selectedIndex = 0;\r\n    // (this._SfSearchMultiselectSelect as HTMLSelectElement).style.display = 'none';\r\n    // if(this.multiselectArr.length > 0){\r\n    //   (this._SfSearchMultiselectDelete as HTMLSelectElement).style.display = 'flex';\r\n    // }else{\r\n    //   (this._SfSearchMultiselectDelete as HTMLSelectElement).style.display = 'none';\r\n    // }\r\n    // for(i = 0; i < this.multiselectArr.length; i++) {\r\n    //   let index = i;\r\n    //   ((this._SfSearchMultiselectSelected as HTMLDivElement).querySelector('#search-multiselect-delete-' + i) as HTMLDivElement).addEventListener('click',() => {\r\n    //     console.log(\"deleting 1\", this.multiselectArr[index] , index)\r\n    //     this.removeFromMultiselect(index)\r\n    //   })\r\n\r\n    // }\r\n\r\n    if (!found) {\r\n      let compareString = '<div part=\"badge-multiselected\" class=\"badge-multiselected\">'\r\n      let innerHtml = (this._SfSearchMultiselectSelected as HTMLDivElement).innerHTML\r\n      var count = (innerHtml.split(compareString).length) - 1;\r\n      console.log('count', count)\r\n      var html = '';\r\n      let val = (this._SfSearchMultiselectSelect as HTMLSelectElement)!.value\r\n      // html += `<div part=\"badge-multiselected\" class=\"badge-multiselected\">`+val+`<div part=\"button-icon-small\" class=\"d-flex hide material-icons color-gray pointer\" id=\"search-multiselect-delete-${count}\" style=\"display: flex;\">delete</div></div>`;\r\n      html += `<div part=\"badge-multiselected\" class=\"badge-multiselected\">` + val + `</div>`;\r\n      (this._SfSearchMultiselectSelected as HTMLDivElement).insertAdjacentHTML('beforeend', html);\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).value = '';\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).focus();\r\n      (this._SfSearchMultiselectSelect as HTMLSelectElement).selectedIndex = 0;\r\n      (this._SfSearchMultiselectSelect as HTMLSelectElement).style.display = 'none';\r\n      (this._SfSearchMultiselectDelete as HTMLElement).style.display = 'flex';\r\n      // ((this._SfSearchMultiselectSelected as HTMLDivElement).querySelector('#search-multiselect-delete-' + count) as HTMLDivElement).addEventListener('click',() => {\r\n      //   console.log(\"deleting 1\", val , count)\r\n      //   this.removeFromMultiselect(val, count)\r\n      // },false)\r\n      this.dispatchMyEvent(\"valueChanged\", {});\r\n    }\r\n\r\n  }\r\n\r\n  removeFromMultiselect = (index: number) => {\r\n    console.log('unchanged arr', this.multiselectArr)\r\n    if (index == 0 && this.multiselectArr.length == 1) {\r\n      this.multiselectArr = []\r\n    } else {\r\n      this.multiselectArr.splice(index, 1)\r\n    }\r\n    console.log('changed arr', this.multiselectArr)\r\n    this.completeSelect()\r\n    // var html = `<div part=\"badge-multiselected\" class=\"badge-multiselected\">`+val+`<div part=\"button-icon-small\" class=\"d-flex hide material-icons color-gray pointer\" id=\"search-multiselect-delete-${count}\" style=\"display: flex;\">delete</div></div>`;\r\n    // let innerHtml = (this._SfSearchMultiselectSelected as HTMLDivElement).innerHTML\r\n    // console.log('html', html)\r\n    // console.log('innerhtml', innerHtml)\r\n    // innerHtml = innerHtml.replace(html,'');\r\n    // (this._SfSearchMultiselectSelected as HTMLDivElement).innerHTML = innerHtml\r\n    this.dispatchMyEvent(\"valueChanged\", {});\r\n  }\r\n\r\n  initListenersMultiselect = () => {\r\n    let searchTimeout: any;\r\n    (this._SfSearchMultiselectInput as HTMLInputElement)!.addEventListener('keyup', (e: any) => {\r\n      var divArr = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div');\r\n      if (this.maxSelect != null && divArr.length >= parseInt(this.maxSelect)) {\r\n\r\n      } else {\r\n        if (searchTimeout != null) {\r\n          clearTimeout(searchTimeout);\r\n        }\r\n        if (e.key == null || e.key.toLowerCase() == \"enter\") {\r\n          (this._SfSearchMultiselectSelect as HTMLSelectElement)!.style.display = 'block';\r\n          this.fetchSearchMultiselect();\r\n        } else {\r\n          searchTimeout = setTimeout(() => {\r\n            (this._SfSearchMultiselectSelect as HTMLSelectElement)!.style.display = 'block';\r\n            this.fetchSearchMultiselect();\r\n          }, 2000)\r\n        }\r\n      }\r\n\r\n    });\r\n\r\n    (this._SfSearchMultiselectSelect as HTMLSelectElement)!.addEventListener('change', () => {\r\n      console.log('change');\r\n      const value = (this._SfSearchMultiselectSelect as HTMLSelectElement)!.value;\r\n      if (value != \"\" && value != \"noselect\") {\r\n        this.completeSelect();\r\n      }\r\n    });\r\n\r\n    (this._SfSearchMultiselectDelete as HTMLSelectElement)!.addEventListener('click', () => {\r\n      (this._SfSearchMultiselectSelected as HTMLDivElement)!.innerHTML = '';\r\n      (this._SfSearchMultiselectDelete as HTMLSelectElement)!.style.display = 'none';\r\n      (this._SfSearchMultiselectInput as HTMLSelectElement)!.style.display = 'block';\r\n      this.dispatchMyEvent(\"valueChanged\", {});\r\n    });\r\n\r\n  }\r\n\r\n  disableEditMultiselect = (disable: boolean) => {\r\n    (this._SfSearchMultiselectSelected as HTMLDivElement)!.innerHTML = '';\r\n    if (disable) {\r\n      (this._SfSearchMultiselectDelete as HTMLElement).style.display = 'none';\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).style.display = 'none';\r\n      (this._SfSearchMultiselectSelect as HTMLSelectElement).style.display = 'none';\r\n    } else {\r\n      (this._SfSearchMultiselectDelete as HTMLElement).style.display = 'flex';\r\n      (this._SfSearchMultiselectInput as HTMLInputElement).style.display = 'block';\r\n    }\r\n  }\r\n\r\n  initListenersNew = () => {\r\n\r\n    this._SfButtonBack.addEventListener('click', () => {\r\n      this.mode = \"view\";\r\n      this.loadMode();\r\n    });\r\n\r\n    this._sfButtonSubmit.addEventListener('click', () => {\r\n      this.submitNew();\r\n    });\r\n\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        element.addEventListener('valueChanged', (e: any) => {\r\n          this.evalSubmit();\r\n          console.log('event bubbles 1', JSON.stringify(e.detail), e.target)\r\n          if (e.detail && e.detail.bubbles) {\r\n\r\n          } else {\r\n            this.processFiltersByEvent();\r\n          }\r\n        });\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        element.addEventListener('valueChanged', (e: any) => {\r\n          this.evalSubmit();\r\n          console.log('event bubbles 3', JSON.stringify(e.detail), e.target)\r\n          if (e.detail && e.detail.bubbles) {\r\n\r\n          } else {\r\n            this.processFiltersByEvent();\r\n          }\r\n        });\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n        element.addEventListener('valueChanged', (e: any) => {\r\n          this.evalSubmit();\r\n          console.log('event bubbles 2', e)\r\n          if (e.detail && e.detail.bubbles) {\r\n\r\n          } else {\r\n            this.processFiltersByEvent();\r\n          }\r\n        });\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n        element.addEventListener('uploadValid', () => {\r\n          this.evalSubmit();\r\n          this.processFiltersByEvent();\r\n        })\r\n        // element.addEventListener('uploadCompleted', () => {\r\n        //   console.log('value changed', element.nodeName.toLowerCase(), element.value)\r\n        //   this.evalSubmit();\r\n        //   this.processFiltersByEvent();\r\n        // });\r\n        // element.addEventListener('analysisCompleted', () => {\r\n        //   console.log('value changed', element.nodeName.toLowerCase(), element.value)\r\n        //   this.evalSubmit();\r\n        //   this.processFiltersByEvent();\r\n        // });\r\n\r\n      } else {\r\n        let evalTimeout: any;\r\n        element.addEventListener('keyup', () => {\r\n          if (evalTimeout != null) {\r\n            clearTimeout(evalTimeout)\r\n          }\r\n          evalTimeout = setTimeout(() => {\r\n            this.evalSubmit();\r\n            this.processFiltersByEvent();\r\n          }, 2000)\r\n\r\n        });\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  initListenersSearch = () => {\r\n\r\n    if (this._sfInputSearchSelect != null) {\r\n      this._sfInputSearchSelect.addEventListener('keyup', (e: any) => {\r\n\r\n        if (e.key.toLowerCase() == \"enter\") {\r\n\r\n          this.searchPhrase = this.searchPhraseOriginal + '&(' + ((this._sfInputSearchSelect as HTMLInputElement).value + \"|\" + (this._sfInputSearchSelect as HTMLInputElement).value.toLowerCase() + \"|\" + (this._sfInputSearchSelect as HTMLInputElement).value.toUpperCase()) + \")\";\r\n          console.log(this.searchPhrase);\r\n          this.prevCursor = [];\r\n          this.nextCursor = [];\r\n          console.log('fetchSearchSelect calling keyup', e)\r\n          this.fetchSearchSelect(\"\", this.selectedSearchId.length > 0 && this.searchPhrase == \"\");\r\n        } else {\r\n          console.log(e);\r\n        }\r\n\r\n      });\r\n    }\r\n\r\n  }\r\n\r\n  initListenersDetail = () => {\r\n    this._SfButtonBack.addEventListener('click', () => {\r\n      this.mode = \"view\";\r\n      this.prevCursor = [];\r\n      this.nextCursor = [];\r\n      this.loadMode();\r\n    });\r\n    if (this._SfButtonEdit != null) {\r\n      this._SfButtonEdit.addEventListener('click', () => {\r\n        this.disableEdit(false);\r\n        this.initDisableInputs(false)\r\n      })\r\n    }\r\n\r\n    if (this._SfButtonEditCancel != null) {\r\n      this._SfButtonEditCancel.addEventListener('click', () => {\r\n        this.disableEdit(true);\r\n        this.initDisableInputs(true)\r\n      })\r\n    }\r\n\r\n    if (this._SfButtonDelete != null) {\r\n      this._SfButtonDelete.addEventListener('click', () => {\r\n        this.disableConfirm(false);\r\n      })\r\n    }\r\n\r\n    if (this._SfButtonDeleteCancel != null) {\r\n      this._SfButtonDeleteCancel.addEventListener('click', () => {\r\n        this.disableConfirm(true);\r\n      })\r\n    }\r\n\r\n    if (this._sfButtonSubmit != null) {\r\n      this._sfButtonSubmit?.addEventListener('click', () => {\r\n        console.log('submit clicked');\r\n        this.submitEdit();\r\n      });\r\n    }\r\n\r\n    if (this._SfButtonDeleteConfirm != null) {\r\n      this._SfButtonDeleteConfirm.addEventListener('click', () => {\r\n        this.submitDelete();\r\n      })\r\n    }\r\n\r\n    if (this._sfButtonCalendar != null) {\r\n      this._sfButtonCalendar.addEventListener('click', () => {\r\n        this.disableCalendar(false);\r\n      })\r\n    }\r\n\r\n    if (this._sfButtonCalendarCancel != null) {\r\n      this._sfButtonCalendarCancel.addEventListener('click', () => {\r\n        this.disableCalendar(true);\r\n      })\r\n    }\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        element.addEventListener('valueChanged', (e: any) => {\r\n          console.log('value changed 1', element.nodeName.toLowerCase(), element.value)\r\n          this.evalSubmit();\r\n          console.log('event bubbles 4', e.detail.bubbles, element)\r\n          if (e.detail && e.detail.bubbles) {\r\n\r\n          } else {\r\n            this.processFiltersByEvent();\r\n          }\r\n        });\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        element.addEventListener('valueChanged', (e: any) => {\r\n          this.evalSubmit();\r\n          console.log('event bubbles 5', e.detail, element)\r\n          if (e.detail && e.detail.bubbles) {\r\n\r\n          } else {\r\n            this.processFiltersByEvent();\r\n          }\r\n        });\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n        element.addEventListener('valueChanged', (e: any) => {\r\n          this.evalSubmit();\r\n          console.log('event bubbles 6', e.detail, element)\r\n          if (e.detail && e.detail.bubbles) {\r\n\r\n          } else {\r\n            this.processFiltersByEvent();\r\n          }\r\n        });\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n        element.addEventListener('uploadValid', () => {\r\n          this.evalSubmit();\r\n          this.processFiltersByEvent();\r\n        })\r\n        // element.addEventListener('uploadCompleted', () => {\r\n        //   console.log('value changed', element.nodeName.toLowerCase(), element.value)\r\n        //   this.evalSubmit();\r\n        //   this.processFiltersByEvent();\r\n        // });\r\n        // element.addEventListener('analysisCompleted', () => {\r\n        //   console.log('value changed', element.nodeName.toLowerCase(), element.value)\r\n        //   this.evalSubmit();\r\n        //   this.processFiltersByEvent();\r\n        // });\r\n\r\n      } else {\r\n        let evalTimeout: any\r\n        element.addEventListener('keyup', () => {\r\n          if (evalTimeout != null) {\r\n            clearTimeout(evalTimeout)\r\n          }\r\n          evalTimeout = setTimeout(() => {\r\n            this.evalSubmit();\r\n            this.processFiltersByEvent();\r\n          }, 2000)\r\n\r\n        });\r\n\r\n      }\r\n\r\n    }\r\n  }\r\n\r\n  populateSelectedViewToDetailValues = () => {\r\n\r\n    console.log('populating selected', this.getSelectedViewToDetailValues());\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      console.log(element, element.nodeName.toLowerCase());\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        (element as SfISelect).selectedId = this.getSelectedViewToDetailValues()[i];\r\n        (element as SfISelect).loadMode();\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        (element as SfISubSelect).selectedId = this.getSelectedViewToDetailValues()[i];\r\n        (element as SfISubSelect).loadMode();\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n        console.log('populating selected form', (element as SfIForm).mode, element, (element as SfIForm).selectedSearchId, this.getSelectedViewToDetailValues()[i] ?? [], this.getSelectedViewToDetailValues());\r\n        let oldSearcheId = (element as SfIForm).selectedSearchId;\r\n        (element as SfIForm).selectedSearchId = this.getSelectedViewToDetailValues()[i] ?? [];\r\n        if ((element as SfIForm).selectedSearchId != oldSearcheId) {\r\n          console.log('populating selected sf-i-form loadmode called', (element as SfIForm).selectedSearchId);\r\n          (element as SfIForm).loadMode();\r\n        }\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n        console.log(\"uploader populated\", this.getSelectedViewToDetailValues()[i]);\r\n        (element as SfIUploader).prepopulatedInputArr = JSON.stringify(this.getSelectedViewToDetailValues()[i]);\r\n        (element as SfIUploader).loadMode();\r\n\r\n      } else {\r\n\r\n        (element as HTMLInputElement).value = this.getSelectedViewToDetailValues()[i];\r\n        (element as HTMLInputElement).dispatchEvent(new Event('keyup'));\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  populateSelectedFields = (fieldsToBePopulated: string[]) => {\r\n\r\n    console.log('populating only selected', this.getSelectedViewToDetailValues());\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n      if (!fieldsToBePopulated.includes(this.getInputs()[i])) {\r\n        continue\r\n      }\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n\r\n      console.log(element, element.nodeName.toLowerCase());\r\n\r\n      if (element.nodeName.toLowerCase() == \"sf-i-select\") {\r\n\r\n        (element as SfISelect).selectedId = this.getSelectedViewToDetailValues()[i];\r\n        (element as SfISelect).loadMode();\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n        (element as SfISubSelect).selectedId = this.getSelectedViewToDetailValues()[i];\r\n        (element as SfISubSelect).loadMode();\r\n\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-form\") {\r\n\r\n        console.log('populating selected form', i, (element as SfIForm).mode, element, (element as SfIForm).selectedSearchId, this.getSelectedViewToDetailValues()[i] ?? []);\r\n        let oldSearcheId = (element as SfIForm).selectedSearchId;\r\n        (element as SfIForm).selectedSearchId = this.getSelectedViewToDetailValues()[i] ?? [];\r\n        if ((element as SfIForm).selectedSearchId != oldSearcheId) {\r\n          console.log('populating selected sf-i-form loadmode called', (element as SfIForm).selectedSearchId);\r\n          (element as SfIForm).loadMode();\r\n        }\r\n      } else if (element.nodeName.toLowerCase() == \"sf-i-uploader\") {\r\n        console.log(\"uploader populated\", this.getSelectedViewToDetailValues()[i]);\r\n        (element as SfIUploader).prepopulatedInputArr = JSON.stringify(this.getSelectedViewToDetailValues()[i]);\r\n        (element as SfIUploader).loadMode();\r\n\r\n      } else {\r\n\r\n        (element as HTMLInputElement).value = this.getSelectedViewToDetailValues()[i];\r\n        (element as HTMLInputElement).dispatchEvent(new Event('keyup'));\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  checkIfAlreadySelected = (value: string) => {\r\n\r\n    const arrSelected = (this._SfSearchMultiselectSelected as HTMLDivElement).querySelectorAll('div') as NodeListOf<HTMLDivElement>;\r\n\r\n    for (var i = 0; i < arrSelected.length; i++) {\r\n\r\n      if (arrSelected[i].innerHTML == value) {\r\n        return true;\r\n      }\r\n\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  populatePreselected = () => {\r\n    if (this.selectedSearchId.length > 0 && this.maxSelect != null) {\r\n      this.fetchSearchMultiselect(\"\", true)\r\n      return\r\n    }\r\n    (this._SfSearchMultiselectSelected as HTMLDivElement).innerHTML = '';\r\n\r\n    for (var i = 0; i < (this.getPreselectedValues() as Array<any>).length; i++) {\r\n      // if(this.multiselectArr.indexOf(this.getPreselectedValues()[i]) < 0){\r\n      //   console.log('pushing to multiselect', this.getPreselectedValues()[i],i)\r\n      //   this.multiselectArr.push(this.getPreselectedValues()[i])\r\n      // }\r\n\r\n      if (!this.checkIfAlreadySelected(this.getPreselectedValues()[i])) {\r\n        var html = '';\r\n        html += '<div part=\"badge-multiselected\" class=\"badge-multiselected\">' + this.getPreselectedValues()[i] + '</div>';\r\n        (this._SfSearchMultiselectSelected as HTMLDivElement).insertAdjacentHTML('beforeend', html);\r\n      }\r\n\r\n    }\r\n    // this.completeSelect()\r\n    console.log((this._SfSearchMultiselectSelected as HTMLDivElement)!.innerHTML);\r\n\r\n    if ((this.getPreselectedValues() as Array<any>).length > 0) {\r\n      (this._SfSearchMultiselectDelete as HTMLSelectElement)!.style.display = 'flex';\r\n    } else {\r\n      (this._SfSearchMultiselectDelete as HTMLSelectElement)!.style.display = 'none';\r\n    }\r\n\r\n  }\r\n\r\n  processDisabled = () => {\r\n\r\n    for (var i = 0; i < this.getInputs().length; i++) {\r\n\r\n      const element = this._sfSlottedForm[0].querySelector('#' + this.getInputs()[i]);\r\n      if (this.mode == \"view\" || this.mode == \"delete\") {\r\n        element.setAttribute('disabled', true);\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  processUnitFiltersNew = () => {\r\n\r\n    console.log('filters', this.getUnitFiltersNew().length, \"select\");\r\n\r\n    for (var i = 0; i < this.getUnitFiltersNew().length; i++) {\r\n\r\n      if (this.getUnitFiltersNew()[i].op == \"select\") {\r\n\r\n        const inputElement = this._SfFormC[0].querySelector('#' + this.getUnitFiltersNew()[i].input);\r\n        const value = this.getUnitFiltersNew()[i].value;\r\n\r\n        console.log('filters', inputElement, value, \"select\");\r\n\r\n        if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-select\") {\r\n\r\n          console.log('filters-select', \"sf-i-select\", value);\r\n          (inputElement as SfISelect).selectedId = value;\r\n          (inputElement as SfISelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n          console.log('filters-select', \"sf-i-sub-select\", value);\r\n          (inputElement as SfISubSelect).selectedId = value;\r\n          (inputElement as SfISubSelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-form\") {\r\n\r\n          console.log('filters-select', \"sf-i-form\", value);\r\n          let oldSearcheId = (inputElement as SfIForm).selectedSearchId;\r\n          console.log('clearing form input 2', value);\r\n          (inputElement as SfIForm).selectedSearchId = value;\r\n          if ((inputElement as SfIForm).selectedSearchId != oldSearcheId) {\r\n            (inputElement as SfIForm).loadMode();\r\n          }\r\n\r\n        }\r\n\r\n      }\r\n\r\n      if (this.getUnitFiltersNew()[i].op == \"remove\") {\r\n\r\n        const inputElement = this._SfFormC[0].querySelector('#' + this.getUnitFiltersNew()[i].input);\r\n        const value = this.getUnitFiltersNew()[i].value;\r\n\r\n        console.log('filters', inputElement, value, \"remove\");\r\n\r\n        if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-select\") {\r\n\r\n          console.log('filters-remove', \"sf-i-select\", value);\r\n          (inputElement as SfISelect).removeItemByValue(value);\r\n          (inputElement as SfISelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n          console.log('filters-remove', \"sf-i-sub-select\", value);\r\n          (inputElement as SfISubSelect).removeItemByValue(value);\r\n          (inputElement as SfISubSelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-form\") {\r\n\r\n          console.log('filters-remove', \"sf-i-form\", value);\r\n          (inputElement as SfIForm).removeItemByValue(value);\r\n          (inputElement as SfIForm).loadMode();\r\n\r\n        }\r\n\r\n      }\r\n\r\n\r\n\r\n    }\r\n\r\n  }\r\n\r\n  processUnitFiltersDetail = () => {\r\n\r\n    console.log('filters', this.getUnitFiltersDetail().length, \"select\");\r\n\r\n    for (var i = 0; i < this.getUnitFiltersDetail().length; i++) {\r\n\r\n      if (this.getUnitFiltersDetail()[i].op == \"select\") {\r\n\r\n        const inputElement = this._SfFormC[0].querySelector('#' + this.getUnitFiltersDetail()[i].input);\r\n        const value = this.getUnitFiltersDetail()[i].value;\r\n\r\n        console.log('filters', inputElement, value, \"select\");\r\n\r\n        if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-select\") {\r\n\r\n          console.log('filters-select', \"sf-i-select\", value);\r\n          (inputElement as SfISelect).selectedId = value;\r\n          (inputElement as SfISelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n          console.log('filters-select', \"sf-i-sub-select\", value);\r\n          (inputElement as SfISubSelect).selectedId = value;\r\n          (inputElement as SfISubSelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-form\") {\r\n\r\n          console.log('filters-select', \"sf-i-form\", value);\r\n          let oldSearcheId = (inputElement as SfIForm).selectedSearchId;\r\n          console.log('clearing form input 3', value);\r\n          (inputElement as SfIForm).selectedSearchId = value;\r\n          if ((inputElement as SfIForm).selectedSearchId != oldSearcheId) {\r\n            (inputElement as SfIForm).loadMode();\r\n          }\r\n\r\n        }\r\n\r\n      }\r\n\r\n      if (this.getUnitFiltersDetail()[i].op == \"remove\") {\r\n\r\n        const inputElement = this._SfFormC[0].querySelector('#' + this.getUnitFiltersDetail()[i].input);\r\n        const value = this.getUnitFiltersDetail()[i].value;\r\n\r\n        console.log('filters', inputElement, value, \"remove\");\r\n\r\n        if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-select\") {\r\n\r\n          console.log('filters-remove', \"sf-i-select\", value);\r\n          (inputElement as SfISelect).removeItemByValue(value);\r\n          (inputElement as SfISelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-sub-select\") {\r\n\r\n          console.log('filters-remove', \"sf-i-sub-select\", value);\r\n          (inputElement as SfISubSelect).removeItemByValue(value);\r\n          (inputElement as SfISubSelect).loadMode();\r\n\r\n        } else if ((inputElement as HTMLElement).tagName.toLowerCase() == \"sf-i-form\") {\r\n\r\n          console.log('filters-remove', \"sf-i-form\", value);\r\n          (inputElement as SfIForm).removeItemByValue(value);\r\n          (inputElement as SfIForm).loadMode();\r\n\r\n        }\r\n\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n  initListenerClipboardControls = () => {\r\n\r\n    if (this.mode == \"new\") {\r\n\r\n      Util.replaceElement((this._SfButtonCopypastePaste as HTMLButtonElement));\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).addEventListener('click', async () => {\r\n        let values: string = \"\";\r\n        try {\r\n          values = JSON.parse(await navigator.clipboard.readText());\r\n        } catch (e: any) {\r\n          console.log(e);\r\n          this.setError('Clipboard contains no data!');\r\n          setTimeout(() => { this.clearMessages() }, 3000);\r\n        }\r\n        this.renderClipboard(values);\r\n        this.renderNewAfterContentPopulated();\r\n      });\r\n\r\n    }\r\n\r\n    if (this.mode == \"detail\") {\r\n\r\n      Util.replaceElement((this._SfButtonCopypasteCopy as HTMLButtonElement));\r\n      (this._SfButtonCopypasteCopy as HTMLButtonElement).addEventListener('click', async () => {\r\n        const values: string = JSON.stringify(this.populateValues());\r\n        await navigator.clipboard.writeText((values));\r\n        this.setSuccess('Copied to clipboard!')\r\n        setTimeout(() => { this.clearMessages() }, 3000);\r\n        console.log(JSON.parse(await navigator.clipboard.readText()));\r\n      });\r\n\r\n      Util.replaceElement((this._SfButtonCopypastePaste as HTMLButtonElement));\r\n      (this._SfButtonCopypastePaste as HTMLButtonElement).addEventListener('click', async () => {\r\n        let values: string = \"\";\r\n        try {\r\n          values = JSON.parse(await navigator.clipboard.readText());\r\n        } catch (e: any) {\r\n          console.log(e);\r\n          this.setError('Clipboard contains no data!');\r\n          setTimeout(() => { this.clearMessages() }, 3000);\r\n        }\r\n        this.renderClipboard(values);\r\n        this.renderDetailAfterContentPopulated();\r\n      });\r\n    }\r\n\r\n  }\r\n\r\n  renderNewAfterContentPopulated = () => {\r\n\r\n    console.log('renderNewAfterContentPopulated');\r\n\r\n    this.populateSelectedViewToDetailValues();\r\n    // this.initListenersNew();\r\n    this.processFormLayouting();\r\n    this.clearUnitFilters();\r\n    this.processUnitFiltersNew();\r\n    this.initListenerClipboardControls();\r\n\r\n    if (this.mode == \"consumer\") {\r\n      this.hideDelete();\r\n      this.hideBack();\r\n    }\r\n  }\r\n\r\n  renderDetailAfterContentPopulated = () => {\r\n    this.populateSelectedViewToDetailValues();\r\n    this.initListenersDetail();\r\n    this.processFormLayouting();\r\n    this.clearUnitFilters();\r\n    this.processUnitFiltersDetail();\r\n    this.initListenerClipboardControls();\r\n\r\n    if (this.mode == \"consumer\") {\r\n      this.hideDelete();\r\n      this.hideBack();\r\n    }\r\n  }\r\n\r\n  loadMode = async () => {\r\n\r\n    console.log('load mode', this.mode);\r\n\r\n    if (this.mode == \"multiselect-dropdown\") {\r\n\r\n      setTimeout(() => {\r\n        if (this.flow == \"read\") {\r\n          this.disableEditMultiselect(true)\r\n        } else {\r\n          this.disableEditMultiselect(false)\r\n        }\r\n        this.initListenersMultiselect();\r\n        if (this.flow == \"read\") {\r\n          console.log('loadmode fetching', this.selectedSearchId)\r\n          if (this.selectedSearchId.length > 0 && this.selectedSearchId[0] != '') {\r\n            this.fetchSearchMultiselect(\"\", true)\r\n          }\r\n        }\r\n        this.populatePreselected();\r\n      }, 500)\r\n\r\n    } else if (this.mode == \"text\") {\r\n\r\n      this.selectedTextPhrase = await this.fetchDetail();\r\n\r\n    } else if (this.mode == \"select\" || this.mode == \"list\" || this.mode == \"multiselect-list\") {\r\n\r\n      setTimeout(() => {\r\n        // this.initListenersTrail();\r\n        this.searchPhraseOriginal = this.searchPhrase;\r\n        console.log('searchPhrase loadmode', this.searchPhrase);\r\n        this.prevCursor = [];\r\n        this.nextCursor = [];\r\n        console.log(\"fetchsearchSelect calling loadmode\")\r\n        if (this.flow == \"read\") {\r\n          console.log('details fetching', this.selectedSearchId)\r\n          if (this.selectedSearchId.length > 0)\r\n            this.fetchDetail()\r\n        } else {\r\n          console.log('this.selectedSearchId', this.selectedSearchId);\r\n          if (this.nextCursor.length == 0) {\r\n            this.fetchSearchSelect(\"\", this.selectedSearchId.length > 0);\r\n          }\r\n\r\n        }\r\n        this.initListenersSearch();\r\n      }, 500)\r\n\r\n    } else if (this.mode == \"trail\") {\r\n\r\n      setTimeout(async () => {\r\n        this.initListenersTrail();\r\n        let d = new Date();\r\n        let [day, month, year] = Util.getDayMonthYear(d)\r\n        let lastWeek = new Date();\r\n        lastWeek.setDate(d.getDate() - 7);\r\n        let [lastday, lastmonth, lastyear] = Util.getDayMonthYear(lastWeek);\r\n        (this._SfInputStartDate as HTMLInputElement).value = \"\" + lastyear + \"-\" + lastmonth + \"-\" + lastday;\r\n        (this._SfInputEndDate as HTMLInputElement).value = \"\" + year + \"-\" + month + \"-\" + day\r\n        this._SfInputEndDate.setAttribute('min', new Date((this._SfInputStartDate as HTMLInputElement).value).toISOString().slice(0, 10))\r\n        this._SfInputStartDate.setAttribute('max', new Date((this._SfInputEndDate as HTMLInputElement).value).toISOString().slice(0, 10))\r\n        this.fetchLogs()\r\n      }, 500)\r\n\r\n    } else if (this.mode == \"latest\") {\r\n\r\n      setTimeout(async () => {\r\n        // this.initListenersTrail();\r\n        this.fetchLatest()\r\n      }, 500)\r\n\r\n    } else if (this.mode == \"new\") {\r\n\r\n      setTimeout(async () => {\r\n        this.initShowInputs();\r\n        await this.initDisableInputs(false);\r\n        this.initListenersNew();\r\n        this.processDependencies();\r\n        this.processFormLayouting();\r\n        this.clearInputs();\r\n        this.clearUnitFilters();\r\n        this.processUnitFiltersNew();\r\n        // this.showControls();\r\n        this.initListenerClipboardControls();\r\n      }, 500)\r\n\r\n    } else if (this.mode == \"view\") {\r\n\r\n      setTimeout(() => {\r\n        this.initListenersView();\r\n        this._sfInputSearch.value = this.searchPhrase == null ? \"\" : this.searchPhrase;\r\n        var event = new Event('keyup');\r\n        this._sfInputSearch.dispatchEvent(event);\r\n      }, 500)\r\n\r\n\r\n    } else if (this.mode == \"detail\" || (this.mode == \"consumer\" && this.selectedId.length != null && this.selectedId.length > 0)) {\r\n\r\n      console.log('load mode detail');\r\n\r\n      setTimeout(async () => {\r\n\r\n        if (this._SfCalendarC != null && this._SfCalendarC[0] != null) {\r\n\r\n          (this._SfCalendarC[0].querySelector('sf-i-events') as SfIEvents).apiIdList = this.apiId;\r\n          (this._SfCalendarC[0].querySelector('sf-i-events') as SfIEvents).apiBodyList = \"{\\\"id\\\": \\\"\" + this.selectedId + \"\\\"}\";\r\n          (this._SfCalendarC[0].querySelector('sf-i-events') as SfIEvents).loadMode();\r\n\r\n        }\r\n\r\n        this.initShowInputs();\r\n        this.disableEdit(true);\r\n        if (this.apiIdCalendarDetail != \"\") {\r\n          this.disableCalendar(true);\r\n        }\r\n        await this.initDisableInputs(true);\r\n        this.processDependencies();\r\n        await this.fetchDetail();\r\n        this.renderDetailAfterContentPopulated();\r\n\r\n      }, this.mode == \"detail\" ? 3000 : 3000)\r\n\r\n    }\r\n\r\n  }\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  protected override firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\r\n\r\n    this.firtUpdatedLoadMode()\r\n\r\n  }\r\n\r\n  firtUpdatedLoadMode = () => {\r\n    this.loadMode();\r\n  }\r\n\r\n  override connectedCallback() {\r\n    super.connectedCallback()\r\n  }\r\n\r\n  override render() {\r\n\r\n    console.log('form mode', this.mode, this.selectedId);\r\n\r\n    if (this.mode == \"multiselect-dropdown\") {\r\n\r\n      return html`\r\n          \r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <label part=\"input-label\">${this.label}</label>\r\n          <div>\r\n            <div class=\"d-flex justify-center align-start flex-wrap\">\r\n              <div class=\"d-flex\" id=\"search-multiselect-selected\"></div>\r\n              <div part=\"button-icon-small\" class=\"d-flex hide material-icons color-gray pointer\" id=\"search-multiselect-delete\">delete</div>\r\n              <div class=\"d-flex flex-col\">\r\n                <input part=\"input\" id=\"search-multiselect-input\" type=\"text\" />\r\n                <select part=\"input-select\" id=\"search-multiselect-select\" class=\"hide\"></select>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"loader-element\"></div>\r\n          <div class=\"d-flex justify-between\">\r\n            <div class=\"lb\"></div>\r\n            <div>\r\n              <div class=\"div-row-error div-row-submit gone\">\r\n                <div part=\"errormsg\" class=\"div-row-error-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-success div-row-submit gone\">\r\n                <div part=\"successmsg\" class=\"div-row-success-message\"></div>\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n        </div>\r\n\r\n        `;\r\n\r\n    } else if (this.mode == \"list\") {\r\n\r\n      if (this.flow == \"read\") {\r\n\r\n\r\n        return html`\r\n          \r\n          <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n          <div class=\"SfIFormC\">\r\n            <label part=\"input-label\">${this.label}</label>\r\n            <div>\r\n              <div id=\"search-select-container\">\r\n                <h3 part=\"results-title\" class=\"left-sticky\">No Results</h3>\r\n              </div>\r\n              <div class=\"loader-element\"></div>\r\n            </div>\r\n          </div>\r\n\r\n          `;\r\n\r\n      } else {\r\n\r\n\r\n        return html`\r\n            \r\n          <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n          <div class=\"SfIFormC\">\r\n            <label part=\"input-label\">${this.label}</label>\r\n            <div>\r\n              <div id=\"search-select-container\">\r\n                <h3 part=\"results-title\" class=\"left-sticky\">No Results</h3>\r\n              </div>\r\n              <div class=\"loader-element\"></div>\r\n            </div>\r\n            <div>\r\n              <button id=\"button-edit-continue\" part=\"button-icon\" class=\"material-icons button-icon\">chevron_down</button>\r\n            </div>\r\n          </div>\r\n\r\n        `;\r\n\r\n      }\r\n\r\n\r\n    } else if (this.mode == \"read\") {\r\n\r\n\r\n      return html`\r\n        \r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <label part=\"input-label\" >${this.label}</label>\r\n          <div>\r\n            <select id=\"input-select\" @change=\"${this.onChangeSelect}\" disabled>\r\n            </select>\r\n            <div class=\"loader-element\"></div>\r\n          </div>\r\n        </div>\r\n      \r\n      `;\r\n\r\n    } else if (this.mode == \"latest\") {\r\n\r\n\r\n      return html`\r\n        \r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <label part=\"input-label\" >${this.label}</label>\r\n          <div part=\"latest-container\">\r\n            <div part=\"latest-list-container\" id=\"latest-list-container\" class=\"flex-grow\"></div>\r\n          </div>\r\n          <div>\r\n            <div class=\"loader-element\"></div>\r\n          </div>\r\n        </div>\r\n      \r\n      `;\r\n\r\n    } else if (this.mode == \"select\" || this.mode == \"multiselect-list\") {\r\n\r\n      if (this.flow == \"read\") {\r\n\r\n        return html`\r\n\r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <label part=\"input-label\">${this.label}</label>\r\n          <div>\r\n            <div id=\"search-select-container\">\r\n              <h3 part=\"results-title\" class=\"left-sticky\">No Results</h3>\r\n            </div>\r\n            <div class=\"loader-element\"></div>\r\n          </div>\r\n          \r\n        </div>\r\n        \r\n      `;\r\n\r\n      } else {\r\n        return html`\r\n        \r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <br />\r\n          <label part=\"input-label\">${this.label}</label>\r\n          <div>\r\n            <div>\r\n              <input part=\"input\" id=\"select-search-input\" class=\"mb-10\" placeholder=\"Filter\" />\r\n              <div id=\"search-select-container\">\r\n                <h3 part=\"results-title\" class=\"left-sticky\">No Results</h3>\r\n              </div>\r\n              <h6 id=\"selection-count\" class=\"hide\"></h6>\r\n              <button id=\"button-clear-selection\" part=\"button-icon-small\" class=\"align-center button-icon d-flex hide\"><span class=\"material-icons mr-10\">clear</span>Clear Selection</button>\r\n              <div class=\"loader-element\"></div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      \r\n      `;\r\n\r\n      }\r\n\r\n\r\n\r\n    } else if (this.mode == \"trail\") {\r\n\r\n      return html`\r\n        \r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <div class=\"d-flex justify-center\">\r\n              <h1 part=\"title\">${this.name}</h1>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div part=\"badge\" class=\"badge\">Log Trail</div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"d-flex flex-grow justify-between\">\r\n              <button id=\"button-back\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\r\n              <div class=\"d-flex\">\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"w-50-m-0\">\r\n              <label part=\"input-label\">From Date *</label><br>\r\n              <input part=\"input\" id=\"input-startdate\" type=\"date\" class=\"w-100-m-0\" mandatory=\"\" autocomplete=\"off\" style=\"display: block;\">\r\n            </div>\r\n            <div class=\"w-50-m-0\">\r\n              <label part=\"input-label\">To Date *</label><br>\r\n              <input part=\"input\" id=\"input-enddate\" type=\"date\" class=\"w-100-m-0\" mandatory=\"\" autocomplete=\"off\" style=\"display: block;\">\r\n            </div>\r\n            <div class=\"w-50-m-0\">\r\n              <br>\r\n              <button id=\"button-fetch-log\" part=\"button-icon\" class=\"material-icons button-icon\">receipt_long</button>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"loader-element\"></div>\r\n          </div>\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\"></div>\r\n            <div id=\"logs-list-container\" class=\"flex-grow\"></div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          \r\n        </div>\r\n      \r\n      `;\r\n\r\n    } else if (this.mode == \"new\") {\r\n\r\n      return html`\r\n        \r\n      <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n      <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\" />\r\n        <div class=\"SfIFormC\">\r\n          <div class=\"d-flex justify-center\">\r\n              <h1 part=\"title\">${this.name}</h1>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div part=\"badge\" class=\"badge\">Create New</div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"d-flex flex-grow justify-between\">\r\n              <button id=\"button-back\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\r\n              <div class=\"d-flex\">\r\n                <button id=\"button-copypaste-paste\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-symbols-outlined\">content_paste</span></button>\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <br /><br />\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"flex-grow\" id=\"form-container\">\r\n              <slot name=\"form\"></slot>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-between\">\r\n            <div class=\"lb\"></div>\r\n            <div>\r\n              <div class=\"div-row-error div-row-submit gone\">\r\n                <div part=\"errormsg\" class=\"div-row-error-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-success div-row-submit gone\">\r\n                <div part=\"successmsg\" class=\"div-row-success-message\"></div>\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"loader-element\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"d-flex justify-start flex-grow\">\r\n              <button part=\"button-lg\" id=\"button-submit\" disabled>Submit</button>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          \r\n        </div>\r\n      \r\n      `;\r\n\r\n    } else if (this.mode == \"view\") {\r\n\r\n      return html`\r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <div class=\"SfIFormC\">\r\n          <div class=\"d-flex justify-center\">\r\n              <h1 part=\"title\">${this.name}</h1>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div part=\"badge\" class=\"badge\">Search</div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\" part=\"lb\"></div>\r\n            <div class=\"d-flex align-end justify-between flex-grow\">\r\n              <div class=\"d-flex flex-col\">\r\n                <label>Search</label>\r\n                <div class=\"d-flex align-end\">\r\n                  <input part=\"input\" id=\"input-search\" type=\"text\" placeholder=\"3 or more characters\"/>&nbsp;&nbsp;\r\n                  <button id=\"button-all\" part=\"button-icon\" class=\"material-icons button-icon\">filter_list</button>\r\n                </div>\r\n                <div class=\"loader-element\"></div>\r\n              </div>\r\n              <div class=\"d-flex\">\r\n                <button id=\"button-trail\" part=\"button-icon\" class=\"material-icons button-icon\">receipt_long</button>\r\n                <button id=\"button-new\" part=\"button-icon\" class=\"material-icons button-icon\">add</button>\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\" part=\"rb\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\" part=\"lb\"></div>\r\n            <div class=\"d-flex flex-col\">\r\n              <div class=\"d-flex justify-center gone\">\r\n              </div>\r\n              <div class=\"div-row-error div-row-submit gone\">\r\n                <div part=\"errormsg\" class=\"div-row-error-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-success div-row-submit\">\r\n                <div part=\"successmsg\" class=\"div-row-success-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-notif div-row-submit\">\r\n                <div part=\"notifmsg\" class=\"div-row-notif-message\"></div>\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\" part=\"rb\"></div>\r\n          </div>\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\" part=\"lb\"></div>\r\n            <div id=\"search-list-container\" class=\"flex-grow\"></div>\r\n            <div class=\"rb\" part=\"rb\"></div>\r\n          </div>\r\n        </div>\r\n      `;\r\n\r\n    } else if (this.mode == \"text\") {\r\n\r\n      return html`\r\n        <div class=\"SfIFormC\">\r\n          <div>${this.selectedTextPhrase}<div class=\"loader-element\"></div></div>\r\n        </div>\r\n      `;\r\n\r\n    } else if (this.mode == \"detail\" || this.mode == \"consumer\") {\r\n\r\n      return html`\r\n        <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\r\n        <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\" />\r\n        <div class=\"SfIFormC\">\r\n          <div class=\"d-flex justify-center\">\r\n              <h1 part=\"title\">${this.name}</h1>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div part=\"badge\" class=\"badge\">View Detail</div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"d-flex flex-grow justify-between\">\r\n              <button id=\"button-back\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">keyboard_backspace</span></button>\r\n              <div class=\"d-flex\">\r\n                <button id=\"button-copypaste-copy\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-symbols-outlined\">content_copy</span></button>\r\n                <button id=\"button-calendar\" part=\"button-icon\" class=\"button-icon hide\"><span class=\"material-icons\">calendar_month</span></button>\r\n                <button id=\"button-calendar-cancel\" part=\"button-icon\" class=\"button-icon hide\"><span class=\"material-icons\">close</span></button>\r\n                <button id=\"button-edit\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">edit</span></button>\r\n                <button id=\"button-copypaste-paste\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-symbols-outlined\">content_paste</span></button>\r\n                <button id=\"button-edit-cancel\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">edit_off</span></button>\r\n                <button id=\"button-delete\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">delete</span></button>\r\n                <button id=\"button-delete-cancel\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">close</span></button>\r\n                <button id=\"button-delete-confirm\" part=\"button-icon\" class=\"button-icon\"><span class=\"material-icons\">delete</span><span class=\"material-icons\">done</span></button>\r\n                \r\n              </div>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"flex-grow\" id=\"form-container\">\r\n              <slot name=\"form\"></slot>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"flex-grow flexpcol hide\" part=\"calendar-container\" id=\"calendar-container\">\r\n              <div><h3 part=\"results-title\"  class=\"text-center\">Compliance Calendar</h3></div>\r\n              <slot name=\"calendar\"></slot>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-between\">\r\n            <div class=\"lb\"></div>\r\n            <div>\r\n              <div class=\"div-row-error div-row-submit gone\">\r\n                <div part=\"errormsg\" class=\"div-row-error-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-success div-row-submit gone\">\r\n                <div part=\"successmsg\" class=\"div-row-success-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-notif div-row-submit\">\r\n                <div part=\"notifmsg\" class=\"div-row-notif-message\"></div>\r\n              </div>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          <br />\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"loader-element\"></div>\r\n          </div>\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"d-flex justify-center flex-grow\">\r\n              <button part=\"button-lg\" id=\"button-submit\" disabled>Submit</button>\r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n          \r\n        </div>\r\n      `;\r\n    }\r\n    else {\r\n\r\n      return html`\r\n        <div class=\"SfIFormC\">\r\n          <div class=\"d-flex justify-center\">\r\n            <div class=\"lb\"></div>\r\n            <div class=\"d-flex flex-col\">\r\n              <slot name=\"form\"></slot>\r\n              <div class=\"div-row-error div-row-submit\">\r\n                <div part=\"errormsg\" class=\"div-row-error-message\"></div>\r\n              </div>\r\n              <div class=\"div-row-success div-row-submit\">\r\n                <div part=\"successmsg\" class=\"div-row-success-message\"></div>\r\n              </div>\r\n              <div class=\"d-flex justify-center\">\r\n                <div class=\"loader-element\"></div>\r\n              </div>\r\n             \r\n            </div>\r\n            <div class=\"rb\"></div>\r\n          </div>\r\n        </div>\r\n      `;\r\n\r\n    }\r\n  }\r\n\r\n}\r\n\r\ndeclare global {\r\n  interface HTMLElementTagNameMap {\r\n    'sf-i-form': SfIForm;\r\n  }\r\n}\r\n"]}