{"version":3,"sources":["webpack:///./@master/model/options/NationalityAndCountryOptions.ts","webpack:///./node_modules/randomstring/lib/randomstring.js","webpack:///./node_modules/randomstring/lib/charset.js","webpack:///./node_modules/randomstring/index.js","webpack:///./@core/pages/clientManagement-v2/views/ClientDependants.vue?781a","webpack:///./@core/pages/client-management/model/ClientDependant.ts","webpack:///./@master/model/options/RelationshipCorporateOptions.ts","webpack:///./@core/pages/clientManagement-v2/mixins/ClientDependantsMixin.ts","webpack:///./@core/pages/clientManagement-v2/views/ClientDependants.vue","webpack:///./@core/pages/clientManagement-v2/views/ClientDependants.vue?4686","webpack:///./@core/pages/clientManagement-v2/views/ClientDependants.vue?3eab","webpack:///./@core/assets/myinfo-icon.svg","webpack:///./node_modules/randomstring/node_modules/randombytes/browser.js","webpack:///./@core/components/AppForm.vue?baa9","webpack:///./@core/components/AppCurrencyNA.vue?af5e","webpack:///./node_modules/randomstring/node_modules/array-uniq/index.js","webpack:///./@core/components/AppForm.vue?4190","webpack:///./@core/components/AppCurrencyNA.vue?2c19","webpack:///./@core/components/AppCurrencyNA.vue","webpack:///./@core/components/AppCurrencyNA.vue?4219","webpack:///./@core/components/AppCurrencyNA.vue?6502","webpack:///./@core/components/AppForm.vue","webpack:///./@core/components/AppForm.vue?cec5","webpack:///./@core/components/AppForm.vue?3db6"],"names":["CountryOptions","Object","keys","map","key","label","value","sort","a","b","localeCompare","NationalityOptions","NationalityLabelToCode","randomBytes","Charset","unsafeRandomBytes","length","stack","i","push","Math","floor","random","readUInt8","index","safeRandomBytes","e","processString","buf","initialString","chars","reqLen","maxByte","string","randomByte","charAt","getAsyncString","cb","err","generatedString","exports","generate","options","charset","setType","capitalization","setcapitalization","readable","removeUnreadable","removeDuplicates","charsLen","ceil","arrayUniq","this","prototype","type","numbers","charsLower","charsUpper","toUpperCase","hexChars","binaryChars","octalChars","unreadableChars","replace","toLowerCase","charMap","split","join","module","render","_vm","_h","$createElement","_c","_self","staticClass","_v","readOnly","_e","on","createDep","_l","dep","didx","df","dfidx","_s","displayValue","retrievePersonalInfoFromDep","$event","editDep","removeDep","oid","closeDialog","slot","attrs","dependantStructure","depObj","save","staticRenderFns","clientOid","undefined","childClientOid","citizenship","nationality","dateOfBirth","gender","name","nric","relationship","smoker","occupation","dependencyPeriod","raw","genderOptions","find","gl","CitizenshipOptions","cz","ClientInfoBase","RawKey","Ignore","RelationshipCorporateOptions","clientInfoStore","dependants","depObjIdx","showDepForm","isNameDisabled","clientList","clientListOptionsMap","isCorporate","unixTime","dateService","format","Number","$store","getters","currentUser","curUser","isSuperUser","$route","params","policyOid","client","clientId","dependant","personalInfoJson","clientListOptions","disabled","onChange","oldVal","newVal","clientObj","elem","RelationshipOptions","show","prop","val","formattedDate","ClientDependantsService","getDependantRelationshpList","response","forEach","newDep","JSON","parse","toString","list","newList","data","keyValues","newKey","assign","retrieveClientList","inRelationship","stringify","saveNewDependantRelationship","relationshipData","updateDependantRelationship","depOid","removeDependant","idx","uiService","confirm","message","isConfirm","fetchDependants","found","console","log","checkForExistingRelationship","saveTarget","updateDependantObj","addDependant","clientDto","accountType","sharedVariable","fetchClientList","checkAccountType","State","components","AppForm","AppDialog","component","oldBrowser","Error","crypto","global","msCrypto","size","rawBytes","Uint8Array","getRandomValues","bytes","Buffer","buffer","process","nextTick","uniqNoSet","arr","ret","indexOf","uniqSet","seen","Set","filter","el","has","add","uniqSetWithForEach","doesForEachActuallyWork","style","structure","shouldShow","class","shouldDisabled","getCustomClass","hasErrors","focusId","getId","focusInner","getTestId","domProps","labelModelValue","labelModel","get","set","target","directives","rawName","model","labelKey","expression","composing","$set","tooltip","ref","eidx","msg","full","fullErr","multiple","optionCols","multiLimit","buttonName","cycleMode","displayDirection","setValue","blurHandler","getValue","checkboxColumnNo","compact","option","isMyInfo","getLabelId","setSelectValue","decimal","maxChar","currencyFormat","precision","futureDate","disabledFutureDate","rows","isVertical","maxSize","columns","getValueForTable","remove","maxLength","counterMsg","isModernTheme","maxlength","numberAndNAOnly","onBlur","onFocus","onSelect","inputModal","textIsSelected","number","convertCurrencyToNumber","remainingChar","evt","window","event","charCode","which","keyCode","currentValue","isAlphabetN","isNonNumber","preventDefault","charCodeAt","isAlphabetA","formatValue","$emit","isNaN","source","useCurrency","currencyPrefix","toLocaleString","currency","replaceAll","projectInfo","inputValue","default","minimal","structures","errors","charLeft","getCharLeft","getCounterMsg","gridTemplateColumns","projectSettings","theme","condition","Function","input","oriValue","String","labelValue","selectedOption","selectedIndex","_value","ex","uniqueID","snakeCaseKey","curAppForm","$el","hasOverflow","scrollWidth","clientWidth","eleId","ele","document","getElementById","focus","mc","classes","swe","first","s","scrollIntoView","behavior","block","arrangeCols","addEventListener","Date","now","deep","AppSmartSelect","AppCheckboxGroup","AppRadioSelection","AppDateInput","AppFormTable","AppCurrencyNA","AppDecimalNumber","AppTooltip"],"mappings":"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","file":"js/chunk-7fc1e7ae.37ef54d9.js","sourcesContent":["import CodeToNationality from '@master/config/nationality-code-to-label.json'\nimport CodeToCountry from '@master/config/country-code-to-label.json'\nimport LabelToCodeCountry from '@master/config/country-label-to-code.json'\nimport LabelToCodeNationality from '@master/config/nationality-label-to-code.json'\nimport { options } from './Options'\n\nexport const CountryOptions: options[] = Object.keys(CodeToCountry).map(key => {\n return {\n label: CodeToCountry[key],\n value: key\n }\n}).sort((a, b) => {\n if (a.value === 'SG') {\n return -1\n } else if (b.value === 'SG') {\n return 1\n } else if (a.value === 'MY') {\n return -1\n } else if (b.value === 'MY') {\n return 1\n } else {\n return a.label.localeCompare(b.label)\n }\n}) // sort by Singapore, Malaysia, and the rest of countries\n\nexport const NationalityOptions: options[] = Object.keys(CodeToNationality).map(key => {\n return {\n label: CodeToNationality[key],\n value: key\n }\n}).sort((a, b) => {\n if (a.value === 'SG') {\n return -1\n } else if (b.value === 'SG') {\n return 1\n } else if (a.value === 'MY') {\n return -1\n } else if (b.value === 'MY') {\n return 1\n } else {\n return a.label.localeCompare(b.label)\n }\n}) // sort by Singapore, Malaysia, and the rest of nationalities\n\nexport const CountryLabelToCode = LabelToCodeCountry\nexport const NationalityLabelToCode = LabelToCodeNationality\n","\"use strict\";\n\nvar randomBytes = require('randombytes');\nvar Charset = require('./charset.js');\n\n\nfunction unsafeRandomBytes(length) {\n var stack = [];\n for (var i = 0; i < length; i++) {\n stack.push(Math.floor(Math.random() * 255));\n }\n\n return {\n length,\n readUInt8: function (index) {\n return stack[index];\n }\n };\n}\n\nfunction safeRandomBytes(length) {\n try {\n return randomBytes(length);\n } catch (e) {\n /* React/React Native Fix + Eternal loop removed */\n return unsafeRandomBytes(length);\n }\n}\n\nfunction processString(buf, initialString, chars, reqLen, maxByte) {\n var string = initialString;\n for (var i = 0; i < buf.length && string.length < reqLen; i++) {\n var randomByte = buf.readUInt8(i);\n if (randomByte < maxByte) {\n string += chars.charAt(randomByte % chars.length);\n }\n }\n return string;\n}\n\nfunction getAsyncString(string, chars, length, maxByte, cb) {\n randomBytes(length, function(err, buf) {\n if (err) {\n // Since it is waiting for entropy, errors are legit and we shouldn't just keep retrying\n cb(err);\n }\n var generatedString = processString(buf, string, chars, length, maxByte);\n if (generatedString.length < length) {\n getAsyncString(generatedString, chars, length, maxByte, cb);\n } else {\n cb(null, generatedString);\n }\n })\n}\n\nexports.generate = function(options, cb) {\n var charset = new Charset();\n\n var length, chars, capitalization, string = '';\n\n // Handle options\n if (typeof options === 'object') {\n length = typeof options.length === 'number' ? options.length : 32;\n\n if (options.charset) {\n charset.setType(options.charset);\n }\n else {\n charset.setType('alphanumeric');\n }\n\n if (options.capitalization) {\n charset.setcapitalization(options.capitalization);\n }\n\n if (options.readable) {\n charset.removeUnreadable();\n }\n\n charset.removeDuplicates();\n }\n else if (typeof options === 'number') {\n length = options;\n charset.setType('alphanumeric');\n }\n else {\n length = 32;\n charset.setType('alphanumeric');\n }\n\n // Generate the string\n var charsLen = charset.chars.length;\n var maxByte = 256 - (256 % charsLen);\n\n if (!cb) {\n while (string.length < length) {\n var buf = safeRandomBytes(Math.ceil(length * 256 / maxByte));\n string = processString(buf, string, charset.chars, length, maxByte);\n }\n\n return string;\n }\n\n getAsyncString(string, charset.chars, length, maxByte, cb);\n\n};\n","var arrayUniq = require('array-uniq');\n\nfunction Charset() {\n this.chars = '';\n}\n\nCharset.prototype.setType = function(type) {\n var chars;\n\n var numbers = '0123456789';\n var charsLower = 'abcdefghijklmnopqrstuvwxyz';\n var charsUpper = charsLower.toUpperCase();\n var hexChars = 'abcdef';\n var binaryChars = '01';\n var octalChars = '01234567';\n\n if (type === 'alphanumeric') {\n chars = numbers + charsLower + charsUpper;\n }\n else if (type === 'numeric') {\n chars = numbers;\n }\n else if (type === 'alphabetic') {\n chars = charsLower + charsUpper;\n }\n else if (type === 'hex') {\n chars = numbers + hexChars;\n }\n else if (type === 'binary') {\n chars = binaryChars;\n }\n else if (type === 'octal') {\n chars = octalChars;\n }\n else {\n chars = type;\n }\n\n this.chars = chars;\n}\n\nCharset.prototype.removeUnreadable = function() {\n var unreadableChars = /[0OIl]/g;\n this.chars = this.chars.replace(unreadableChars, '');\n}\n\nCharset.prototype.setcapitalization = function(capitalization) {\n if (capitalization === 'uppercase') {\n this.chars = this.chars.toUpperCase();\n }\n else if (capitalization === 'lowercase') {\n this.chars = this.chars.toLowerCase();\n }\n}\n\nCharset.prototype.removeDuplicates = function() {\n var charMap = this.chars.split('');\n charMap = arrayUniq(charMap);\n this.chars = charMap.join('');\n}\n\nmodule.exports = exports = Charset;\n","module.exports = require(\"./lib/randomstring\");","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"header\"},[_vm._v(\" Relationships \"),(!_vm.readOnly)?_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.createDep}},[_vm._v(\"Add\")]):_vm._e()]),_c('div',_vm._l((_vm.dependants),function(dep,didx){return _c('div',{key:(\"dep-\" + didx)},[_c('el-card',{staticClass:\"box-card\"},[_c('table',[_vm._l((_vm.dependantDisplayFields),function(df,dfidx){return _c('tr',{key:(\"dep-\" + didx + \"-df-\" + dfidx),staticClass:\"card-field\"},[_c('td',[_vm._v(_vm._s(df.label))]),_c('td',[_vm._v(\": \"+_vm._s(_vm.displayValue(df, dep[df.key])))])])}),_vm._l((_vm.dependantContactInfo),function(df,dfidx){return _c('tr',{key:(\"dep-\" + didx + \"-df-\" + dfidx + \"-clientInfo\"),staticClass:\"card-field\"},[_c('td',[_vm._v(_vm._s(df.label))]),_c('td',[_vm._v(\": \"+_vm._s(_vm.displayValue(df, _vm.retrievePersonalInfoFromDep(dep)[df.key])))])])})],2),(!_vm.readOnly)?_c('button',{staticClass:\"btn-default\",on:{\"click\":function($event){return _vm.editDep(dep, didx)}}},[_vm._v(\"Edit\")]):_vm._e(),(!_vm.readOnly)?_c('button',{staticClass:\"btn-danger\",on:{\"click\":function($event){return _vm.removeDep(dep.oid)}}},[_vm._v(\"Remove\")]):_vm._e()])],1)}),0),(_vm.showDepForm)?_c('AppDialog',{staticClass:\"modal-form\",on:{\"close\":_vm.closeDialog}},[_c('template',{slot:\"header\"},[_vm._v(\"Add Relationship\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('AppForm',{attrs:{\"readOnly\":_vm.readOnly,\"structures\":_vm.dependantStructure,\"model\":_vm.depObj}})],1),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.save}},[_vm._v(\"Save\")])])],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { CitizenshipOptions } from '@master/model/options/CitizenshipOptions'\nimport { Ignore } from '@master/annotation/Ignore'\nimport { getRawKey, RawKey } from '@master/annotation/RawKey'\nimport { ClientInfoBase } from './ClientInfoBase'\nexport class ClientDependant extends ClientInfoBase {\n @RawKey('dependant_oid')\n oid = ''\n\n clientOid = undefined\n childClientOid = undefined\n citizenship = undefined\n nationality = undefined\n dateOfBirth = undefined\n gender = undefined\n name = undefined\n nric = undefined\n relationship = []\n smoker: 'Y' | 'N' | '' = ''\n occupation = undefined\n dependencyPeriod = undefined // in years\n\n convertToRawData () {\n const raw = super.convertToRawData()\n delete raw[getRawKey(this, 'oid')]\n return raw\n }\n\n @Ignore()\n get genderDisplay () {\n return this.genderOptions.find(gl => gl.value === this.gender)?.label\n }\n\n @Ignore()\n get citizenshipDisplay () {\n return CitizenshipOptions.find(cz => cz.value === this.citizenship)?.label\n }\n\n @Ignore()\n get relationshipDisplay () {\n return this.relationship?.join(', ')\n }\n\n @Ignore()\n get genderOptions () {\n return [\n {\n label: 'Male',\n value: 'male'\n },\n {\n label: 'Female',\n value: 'female'\n }\n ]\n }\n}\n","export const RelationshipCorporateOptions = [\n { value: '', label: '' },\n { label: 'Officer/Authorized Representative', value: 'Officer/Authorized Representative' },\n { label: 'Shareholder', value: 'Shareholder' },\n { label: 'Authorized Signatory', value: 'Authorized Signatory' }\n]\n","/* eslint-disable @typescript-eslint/camelcase */\nimport { Component, Vue } from 'vue-property-decorator'\nimport { inject } from 'inversify-props'\nimport API from '@core/services/API'\nimport AppForm from '@core/components/AppForm.vue'\nimport { IDateService } from '@master/services/IDateService'\nimport { ClientDependant } from '@core/pages/client-management/model/ClientDependant'\nimport { FormStructure } from '@master/model/structure/FormStructure'\nimport { NationalityOptions } from '@master/model/options/NationalityAndCountryOptions'\nimport { namespace } from 'vuex-class'\nimport { RelationshipOptions } from '@master/model/options/RelationshipOptions'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport AppDialog from '@core/components/AppDialog.vue'\nimport { ClientDependantsService } from '@core/pages/client-management/api/services/ClientDependantsService'\nimport { RelationshipCorporateOptions } from '@master/model/options/RelationshipCorporateOptions'\nimport { ClientDto, ClientResponseDto, ClientService, PersonalInfo } from '@core/pages/client-management/api'\n\nconst clientInfoStore = namespace('ClientInfoStore')\n\ninterface Client {\n _oid: string;\n name: string;\n nric: string;\n mobile_number: string;\n status: string;\n client_since: string;\n account_type: string;\n redirect: string;\n keyword: string;\n client_id: string;\n}\n\n@Component({\n components: {\n AppForm,\n AppDialog\n }\n})\nexport class ClientDependantsMixin extends Vue {\n @inject()\n protected dateService: IDateService\n\n @clientInfoStore.State\n private clientDto: ClientDto\n\n @inject()\n protected $api: API\n\n uiService: UIService\n\n @inject()\n private sharedVariable: SharedVariable\n\n @clientInfoStore.State\n private readOnly\n\n protected dependants: ClientDependant[] = []\n protected depObj: ClientDependant = new ClientDependant()\n protected depObjIdx = -1\n protected showDepForm = false\n protected isNameDisabled = false\n\n private clientList: ClientResponseDto[] = []\n private clientListOptionsMap = []\n private isCorporate = false\n\n formattedDate (unixTime: number | string) {\n return this.dateService.format(Number(unixTime), 'YYYY-MM-DD')\n }\n\n get curUser () {\n return this.$store.getters.currentUser\n }\n\n get isSuperUser () {\n return this.curUser?.isSuperUser || false\n }\n\n get policyOid () {\n return this.$route.params.policyOid\n }\n\n get clientOid () {\n return this.$route.params.clientOid\n }\n\n get nationalityOptions () {\n return NationalityOptions\n }\n\n get clientListOptions () {\n return this.clientList.map(client => {\n return {\n label: `${client.name} (${client.clientId ? client.clientId : 'unknown'})`,\n value: client.oid\n }\n })\n }\n\n get dependantDisplayFields (): FormStructure {\n return [\n {\n label: 'Name',\n key: 'name'\n },\n {\n label: 'Relationship',\n key: 'relationshipDisplay'\n }\n ]\n }\n\n retrievePersonalInfoFromDep (dependant: ClientDependant) {\n return this.clientList.find(client => dependant.childClientOid === client.oid)?.personalInfoJson || {}\n }\n\n get dependantContactInfo (): FormStructure {\n return [\n {\n label: 'Mobile No.',\n key: 'mobileNoOne'\n },\n {\n label: 'Office No.',\n key: 'officeNoOne'\n }\n ]\n }\n\n get dependantStructure (): FormStructure {\n return [\n {\n label: 'Name',\n key: 'childClientOid',\n options: this.clientListOptions,\n disabled: this.isNameDisabled,\n onChange: (oldVal, newVal) => {\n const clientObj = this.clientList.find((elem) => {\n return elem.oid === newVal\n })\n this.depObj.name = clientObj?.name\n }\n },\n {\n label: 'Relationship',\n key: 'relationship',\n options: RelationshipOptions,\n show: () => !this.isCorporate\n },\n {\n label: 'Relationship',\n key: 'relationship',\n type: 'multi',\n options: RelationshipCorporateOptions,\n show: () => this.isCorporate\n }\n ]\n }\n\n displayValue (prop, val) {\n if (prop.type === 'date') {\n return val ? this.formattedDate(val) : val\n } else {\n return val\n }\n }\n\n async fetchDependants () {\n const response = await ClientDependantsService.getDependantRelationshpList(this.clientOid)\n this.dependants = []\n response.forEach((dep) => {\n const newDep = new ClientDependant()\n Object.keys(dep).forEach(function (key) {\n newDep[key] = dep[key]\n })\n // parses the relationship as array\n newDep.relationship = JSON.parse(newDep.relationship?.toString()) as string[]\n this.dependants.push(newDep)\n })\n }\n\n renameObjectKeys (list: Array, keys: Array): Array {\n const newList = list.map(function (data) {\n const keyValues = Object.keys(data).map(function (key) {\n const newKey = keys[key]\n return { [newKey]: data[key] }\n })\n return Object.assign({}, ...keyValues)\n })\n return newList\n }\n\n closeDialog () {\n this.showDepForm = false\n this.isNameDisabled = false\n }\n\n async fetchClientList () {\n this.clientList = await ClientService.retrieveClientList()\n }\n\n async addDependant (newDep: ClientDependant) {\n const inRelationship = this.isCorporate ? JSON.stringify(newDep.relationship) : JSON.stringify([newDep.relationship])\n await ClientDependantsService.saveNewDependantRelationship({\n clientOid: this.clientOid,\n childClientOid: newDep.childClientOid,\n relationship: inRelationship,\n relationshipData: JSON.stringify({}) // can be extended in the future in case the relationship requires more details\n })\n }\n\n async updateDependantObj (dep: ClientDependant) {\n const inRelationship = this.isCorporate ? JSON.stringify(dep.relationship) : JSON.stringify([dep.relationship])\n await ClientDependantsService.updateDependantRelationship({\n oid: dep.oid,\n childClientOid: dep.childClientOid,\n relationship: inRelationship\n })\n }\n\n async removeDependant (depOid) {\n await ClientDependantsService.removeDependant(depOid)\n }\n\n createDep () {\n this.depObjIdx = -1\n this.depObj = new ClientDependant()\n this.showDepForm = true\n }\n\n editDep (dep: ClientDependant, idx: number) {\n this.depObjIdx = idx\n Object.assign(this.depObj, dep)\n this.showDepForm = true\n this.isNameDisabled = true\n }\n\n async removeDep (depOid: string) {\n const isConfirm = await this.uiService.confirm.show({\n type: 'warning',\n message: 'Confirm to remove dependant ?'\n })\n if (isConfirm) {\n await this.removeDependant(depOid)\n await this.fetchDependants()\n }\n }\n\n // checks for existing relationships, and if found, calls the update endpoint instead of the create endpoint\n checkForExistingRelationship () {\n const found = this.dependants.find(elem => elem.childClientOid === this.depObj.childClientOid)\n console.log(found)\n if (found) {\n // as long as depObjIdx is not -1, its considered updating a new client\n this.depObjIdx = 0\n this.depObj.oid = found.oid\n }\n }\n\n async save () {\n this.checkForExistingRelationship()\n const saveTarget = Object.assign(new ClientDependant(), this.depObj)\n if (this.depObjIdx !== -1) { // edit existing dep\n await this.updateDependantObj(saveTarget)\n } else { // add new dep\n await this.addDependant(saveTarget)\n }\n this.showDepForm = false\n await this.fetchDependants()\n }\n\n checkAccountType () {\n this.isCorporate = this.clientDto?.accountType === 'corporate'\n }\n\n async mounted () {\n // take injected UIService and set it to local\n this.uiService = this.sharedVariable.uiService\n\n await this.fetchDependants()\n this.fetchClientList()\n this.checkAccountType()\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Mixins } from 'vue-property-decorator'\nimport { ClientDependantsMixin } from '../mixins/ClientDependantsMixin'\n\nexport default class ClientDependants extends Mixins(ClientDependantsMixin) {\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDependants.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDependants.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ClientDependants.vue?vue&type=template&id=528c8c4c&scoped=true&\"\nimport script from \"./ClientDependants.vue?vue&type=script&lang=ts&\"\nexport * from \"./ClientDependants.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"528c8c4c\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/myinfo-icon.28e75045.svg\";","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\n\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n // phantomjs doesn't like a buffer being passed here\n var bytes = new Buffer(rawBytes.buffer)\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=style&index=0&id=11928856&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=style&index=0&id=423a3b72&lang=scss&scoped=true&\"","'use strict';\n\n// there's 3 implementations written in increasing order of efficiency\n\n// 1 - no Set type is defined\nfunction uniqNoSet(arr) {\n\tvar ret = [];\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (ret.indexOf(arr[i]) === -1) {\n\t\t\tret.push(arr[i]);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// 2 - a simple Set type is defined\nfunction uniqSet(arr) {\n\tvar seen = new Set();\n\treturn arr.filter(function (el) {\n\t\tif (!seen.has(el)) {\n\t\t\tseen.add(el);\n\t\t\treturn true;\n\t\t}\n\t});\n}\n\n// 3 - a standard Set type is defined and it has a forEach method\nfunction uniqSetWithForEach(arr) {\n\tvar ret = [];\n\n\t(new Set(arr)).forEach(function (el) {\n\t\tret.push(el);\n\t});\n\n\treturn ret;\n}\n\n// V8 currently has a broken implementation\n// https://github.com/joyent/node/issues/8449\nfunction doesForEachActuallyWork() {\n\tvar ret = false;\n\n\t(new Set([true])).forEach(function (el) {\n\t\tret = el;\n\t});\n\n\treturn ret === true;\n}\n\nif ('Set' in global) {\n\tif (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {\n\t\tmodule.exports = uniqSetWithForEach;\n\t} else {\n\t\tmodule.exports = uniqSet;\n\t}\n} else {\n\tmodule.exports = uniqNoSet;\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"column-group\",style:(_vm.gridStyle),attrs:{\"id\":\"app-form\"}},[_vm._l((_vm.structuresDetails),function(structure){return [(_vm.shouldShow(structure.show))?_c('div',{key:structure.key,staticClass:\"input-group-with-theme\",class:[{ 'input-disabled': _vm.shouldDisabled(structure.disabled)}, _vm.getCustomClass(structure)],attrs:{\"has-msg\":structure.hasErrors,\"focusing\":_vm.focusId == _vm.getId(structure.key),\"id\":(\"box-\" + (_vm.getId(structure.key)))},on:{\"click\":function($event){return _vm.focusInner(structure)}}},[[(structure.labelModel)?_c('input',{staticClass:\"label\",attrs:{\"type\":\"text\",\"placeholder\":structure.label,\"data-test\":(\"label-input:\" + (_vm.getTestId(structure.key)))},domProps:{\"value\":_vm.labelModelValue(structure.labelModel.get())},on:{\"input\":function($event){return structure.labelModel.set($event.target.value)}}}):(structure.labelKey)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model[structure.labelKey]),expression:\"model[structure.labelKey]\"}],staticClass:\"label\",attrs:{\"type\":\"text\",\"data-test\":(\"label-input:\" + (_vm.getTestId(structure.key)))},domProps:{\"value\":(_vm.model[structure.labelKey])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, structure.labelKey, $event.target.value)}}}):_vm._e(),(structure.labelModel || structure.labelKey)?_c('i',{staticClass:\"fa fa-pencil-alt right-sided\"}):(structure.type === 'single-checkbox')?_c('span'):_c('label',{attrs:{\"for\":_vm.getId(structure.key),\"id\":_vm.getId(structure.key) + '_label'},domProps:{\"innerHTML\":_vm._s(structure.label)}}),(structure.tooltip)?_c('AppTooltip',{attrs:{\"tooltipConfig\":structure.tooltip}}):_vm._e(),(_vm.isModernTheme)?_vm._l((structure.errors),function(ref,eidx){\nvar msg = ref.msg;\nreturn _c('div',{key:((structure.key) + \"-error-\" + eidx),staticClass:\"form-msg\",class:{\n full:\n eidx === 0 || _vm.fullErr === ((structure.key) + \"-error-\" + eidx),\n },on:{\"click\":function($event){_vm.fullErr = (structure.key) + \"-error-\" + eidx}}},[_c('el-tooltip',[_c('span',{staticClass:\"el-icon-warning\"}),_c('span',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(_vm._s(msg))])])],1)}):_vm._e()],(structure.options && structure.type === 'smart')?_c('AppSmartSelect',{attrs:{\"options\":structure.options,\"value\":_vm.model[structure.key],\"multiple\":structure.multiple,\"cols\":structure.optionCols,\"multiLimit\":structure.multiLimit,\"buttonName\":structure.buttonName,\"cycleMode\":structure.cycleMode,\"displayDirection\":structure.displayDirection,\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'single-checkbox')?_c('el-checkbox',{attrs:{\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"change\":function($event){return _vm.setValue(structure, $event)}}},[_vm._v(\" \"+_vm._s(structure.label)+\" \")]):(structure.options && structure.type === 'checkbox')?_c('AppCheckboxGroup',{attrs:{\"structure\":structure,\"model\":_vm.model,\"column\":structure.checkboxColumnNo,\"compact\":structure.compact},on:{\"change\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.options && structure.type === 'radio')?_c('AppRadioSelection',{attrs:{\"options\":structure.options,\"value\":_vm.model[structure.key],\"buttonName\":structure.buttonName,\"displayDirection\":structure.displayDirection,\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'multi')?_c('el-select',{staticClass:\"form-multi-select\",attrs:{\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"multiple\":\"\",\"collapse-tags\":\"\",\"size\":'small',\"popper-class\":'wen-popper-class'},on:{\"change\":function($event){return _vm.setValue(structure, $event)}}},_vm._l((structure.options),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):(structure.options)?_c('select',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"disabled\":_vm.shouldDisabled(structure.disabled)},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setSelectValue($event.target, structure)}}},_vm._l((structure.options),function(option,index){return _c('option',{key:index,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.label)+\" \")])}),0):(structure.type === 'decimal-number')?[_c('AppDecimalNumber',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"decimal\":structure.decimal,\"inputValue\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)}}})]:(structure.type === 'number' || structure.type === 'time' || structure.type === 'password')?_c('input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"type\":structure.type,\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'currency')?_c('currency-input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"currency\":structure.currencyFormat,\"aria-labelledby\":_vm.getLabelId(structure.key),\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"precision\":structure.precision},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'date' || structure.type === 'month')?_c('AppDateInput',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"value\":_vm.getValue(structure),\"id\":_vm.getId(structure.key),\"input-type\":structure.type,\"data-test\":_vm.getTestId(structure.key),\"aria-label\":structure.label,\"disabled\":_vm.shouldDisabled(structure.disabled),\"futureDate\":structure.futureDate,\"disabledFutureDate\":structure.disabledFutureDate},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'textarea')?_c('textarea',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar,\"rows\":structure.rows || 10},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'table')?_c('AppFormTable',{staticClass:\"inner-table\",attrs:{\"innerTable\":true,\"vertical\":structure.isVertical,\"maxSize\":structure.maxSize,\"fields\":structure.columns,\"data\":_vm.getValueForTable(structure)},on:{\"add\":structure.add,\"remove\":structure.remove}}):(structure.type==='na-currency')?[_c('AppCurrencyNA',{attrs:{\"inputValue\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxLength},on:{\"input\":function($event){return _vm.setValue(structure, $event)}}})]:_c('input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"type\":\"text\",\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler(structure, $event.target.value)}}}),(structure.isMyInfo)?_c('img',{staticClass:\"input-hint logo\",attrs:{\"src\":require(\"@core/assets/myinfo-icon.svg\")}}):_vm._e(),(structure.counterMsg && _vm.isModernTheme)?_c('div',{staticClass:\"char-counter\"},[_vm._v(\" \"+_vm._s(structure.counterMsg)+\" \")]):_vm._e()],2):_vm._e()]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModal),expression:\"inputModal\"}],attrs:{\"maxlength\":_vm.maxlength,\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.inputModal)},on:{\"keypress\":function($event){return _vm.numberAndNAOnly($event)},\"blur\":function($event){return _vm.onBlur()},\"focus\":function($event){return _vm.onFocus()},\"select\":function($event){return _vm.onSelect($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.inputModal=$event.target.value}}}),(!_vm.disabled)?_c('div',{staticClass:\"char-counter\"},[_vm._v(\" \"+_vm._s(_vm.counterMsg)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\nimport { inject } from 'inversify-props'\n\n@Component\nexport default class AppCurrencyNA extends Vue {\n @Prop() inputValue\n @Prop({ default: true }) useCurrency!: boolean\n @Prop({ default: 10 }) maxlength?: number\n @Prop({ default: false }) disabled: boolean\n\n @inject()\n private projectInfo: IProjectInfo\n\n inputModal = ''\n textIsSelected = false\n\n get counterMsg () {\n if (typeof this.maxlength === 'undefined') return\n const number = this.convertCurrencyToNumber(this.inputModal)\n const remainingChar = this.maxlength - (number.toString().length || 0)\n return remainingChar > 0 ? `${remainingChar} letter(s) remaining` : 'Max character limit reached'\n }\n\n numberAndNAOnly (evt) {\n evt = (evt) || window.event\n const charCode = (evt.which) ? evt.which : evt.keyCode\n\n const currentValue = evt.target.value\n if (this.textIsSelected) {\n if (!this.isAlphabetN(charCode) && this.isNonNumber(charCode)) {\n evt.preventDefault()\n } else {\n this.textIsSelected = false\n }\n return true\n }\n\n // if current value is 'NA', cannot key in other character\n if (currentValue.toUpperCase() === 'NA') {\n evt.preventDefault()\n }\n\n // if current value is N, the followed char must be A\n if (this.isAlphabetN(currentValue.charCodeAt(0))) {\n if (this.isAlphabetA(charCode)) {\n return true\n }\n evt.preventDefault() // only can accept A\n }\n\n // if there is empty value, it can either key in char N or number only\n if (!currentValue) {\n if (this.isAlphabetN(charCode)) {\n return true\n }\n }\n\n // cannot key in non number value\n if (this.isNonNumber(charCode)) {\n evt.preventDefault()\n } else {\n return true\n }\n }\n\n isAlphabetN (charCode) {\n return charCode === 78 || charCode === 110\n }\n\n isAlphabetA (charCode) {\n return charCode === 65 || charCode === 97\n }\n\n isNonNumber (charCode) {\n return charCode > 31 && (charCode < 48 || charCode > 57)\n }\n\n onBlur () {\n if (!this.inputModal && this.inputModal !== '0') {\n this.inputModal = this.formatValue('')\n this.$emit('input', '')\n return\n }\n\n // format na to NA to display\n if (this.inputModal.toUpperCase() === 'NA') {\n this.inputModal = 'NA'\n this.$emit('input', 'NA')\n return\n }\n\n // in case only key in 'n' and on blur, format it to NA\n if (isNaN(Number(this.inputModal))) {\n this.inputModal = 'NA'\n this.$emit('input', 'NA')\n return\n }\n\n const number = this.convertCurrencyToNumber(this.inputModal)\n this.inputModal = this.formatValue(number)\n this.$emit('input', Number(number))\n }\n\n onFocus () {\n this.inputModal = this.convertCurrencyToNumber(this.inputModal)\n }\n\n onSelect () {\n this.textIsSelected = true\n }\n\n formatValue (source) {\n if (typeof source === 'string') {\n if (source.toUpperCase() === 'NA' || source === '') {\n return source\n }\n source = Number(source.replace('$', '').replace(',', ''))\n } else if (source === undefined || source == null) {\n source = ''\n }\n return this.useCurrency ? this.currencyPrefix + source?.toLocaleString('en-US') : source?.toLocaleString('en-US')\n }\n\n convertCurrencyToNumber (currency) {\n return currency.replaceAll(this.currencyPrefix, '').replaceAll(',', '')\n }\n\n get currencyPrefix () {\n return this.projectInfo.currency ?? 'SGD$'\n }\n\n @Watch('inputValue')\n inputValueOnChange () {\n if (this.inputValue || this.inputValue === '0' || Number(this.inputValue) === 0) {\n this.inputModal = this.formatValue(this.inputValue)\n } else {\n this.inputModal = this.formatValue('')\n }\n }\n\n mounted () {\n this.inputModal = this.formatValue(this.inputValue)\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppCurrencyNA.vue?vue&type=template&id=423a3b72&scoped=true&\"\nimport script from \"./AppCurrencyNA.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppCurrencyNA.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppCurrencyNA.vue?vue&type=style&index=0&id=423a3b72&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"423a3b72\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Base } from '@master/model/Base'\nimport { FormStructure, Input, TableSetup } from '@master/model/structure/FormStructure'\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport AppCheckboxGroup from '@core/components/AppCheckboxGroup.vue'\nimport AppFormTable from '@core/components/AppFormTable.vue'\nimport AppRadioSelection from '@core/components/AppRadioSelection.vue'\nimport AppSmartSelect from '@core/components/AppSmartSelect.vue'\nimport { inject } from 'inversify-props'\nimport { IDateService } from '@master/services/IDateService'\nimport AppDateInput from './AppDateInput.vue'\nimport { getMaxChar } from '@master/annotation/MaxChar'\nimport { IProjectSettings } from '@master/config/IProjectSettings'\nimport { isUndefined } from 'lodash/fp'\nimport randomstring from 'randomstring'\nimport AppCurrencyNA from './AppCurrencyNA.vue'\nimport AppDecimalNumber from './AppDecimalNumber.vue'\nimport AppTooltip from './AppTooltip.vue'\n\n@Component({\n components: {\n AppSmartSelect,\n AppCheckboxGroup,\n AppRadioSelection,\n AppDateInput,\n AppFormTable,\n AppCurrencyNA,\n AppDecimalNumber,\n AppTooltip\n }\n})\n\nexport default class AppForm extends Vue {\n @Prop() readonly structures!: FormStructure[];\n @Prop() readonly model!: T;\n @Prop({ default: 1 }) readonly columns: number;\n @Prop() readonly errors?: { key: string; msg: string }[];\n @Prop({ default: () => { return Date.now() } })\n readonly uniqueID: string;\n\n @Prop({ default: false }) readonly readOnly: boolean;\n\n @inject()\n private dateService: IDateService;\n\n @inject()\n private projectSettings: IProjectSettings;\n\n private minimal = true;\n // private renderCnt = 0;\n private focusId = null;\n private fullErr = null;\n\n get structuresDetails () {\n return this.structures.map((structure) => {\n const key = (structure as any).key\n const errors = this.errors?.filter((err) => err.key === key) || []\n const maxChar = getMaxChar(this.model, key)\n const charLeft = this.getCharLeft(key)\n const counterMsg = this.getCounterMsg(maxChar, charLeft)\n return {\n errors,\n hasErrors: errors?.length > 0,\n maxChar,\n counterMsg,\n ...structure\n }\n })\n }\n\n get gridStyle () {\n return {\n gridTemplateColumns: `repeat(${this.columns}, minmax(0, 1fr))`\n }\n }\n\n get isModernTheme () {\n return this.projectSettings.theme === 'Modern'\n }\n\n getCounterMsg (maxChar, charLeft) {\n if (!this.isModernTheme) return '' // counterMsg only used in Modern Theme\n return maxChar ? charLeft > 0 ? `${charLeft} letters remaining` : 'Max character limit reached' : ''\n }\n\n shouldDisabled (condition: boolean | Function = false) {\n if (this.readOnly) return true\n if (condition === undefined) {\n return false\n } else if (condition instanceof Function) {\n return condition(this.model)\n } else {\n return condition\n }\n }\n\n shouldShow (condition: boolean | Function = true) {\n if (condition === undefined) {\n return false\n } else if (condition instanceof Function) {\n return condition(this.model)\n } else {\n return condition\n }\n }\n\n getValue (input: Input) {\n if (input.type === 'currency') {\n const oriValue = this.model[input.key]\n if (typeof oriValue === 'string' || oriValue instanceof String) {\n return Number(this.model[input.key])\n }\n }\n if (input.key) {\n return this.model[input.key]\n } else if (input.model) {\n return input.model.get()\n } else {\n throw new Error(\n `Invalid config for label ${input.label}: key or model is required`\n )\n }\n }\n\n /**\n * Return null as the label if it is empty so\n * that the placeholder will appear\n */\n labelModelValue (labelValue: string) {\n return !labelValue ? null : labelValue\n }\n\n getValueForTable (input: TableSetup) {\n if (input.key) {\n return this.model[input.key]\n } else if (input.data) {\n return input.data\n } else {\n throw new Error(\n `Invalid config for label ${input.label}: key or model is required`\n )\n }\n }\n\n // this is to resolve the issue of event.target.value is always passed as string, but our use cases might need number\n setSelectValue (event, structure) {\n const selectedOption = structure.options[event.selectedIndex]\n this.setValue(structure, selectedOption.value)\n }\n\n setValue (input: Input, _value: T[keyof T]) {\n const value: any = input.type === 'number' ? +_value || 0 : _value\n\n if (input.key) {\n if (input.onChange) {\n input.onChange(this.model[input.key], value)\n }\n // when only has getter (for currency input), sidestep the error\n try {\n this.model[input.key] = value\n } catch (ex) {}\n } else if (input.model) {\n if (input.onChange) {\n input.onChange(this.model[input.key], value)\n }\n return input.model.set(value)\n } else {\n throw new Error(`Invalid config for label ${input.label}: key or model is required`)\n }\n }\n\n getId (key: string) {\n if (this.model && 'snakeCaseKey' in this.model) {\n return `${this.uniqueID}_${this.model.snakeCaseKey(key)}`\n }\n\n if (isUndefined(key)) {\n key = randomstring.generate(6)\n }\n\n if (this.uniqueID) {\n return `${this.uniqueID}_${key}`\n }\n\n return `${key}`\n }\n\n getTestId (key: string) {\n if (this.model && 'snakeCaseKey' in this.model) {\n return `${this.model.snakeCaseKey(key)}`\n }\n return undefined\n }\n\n getLabelId (key: string) {\n return this.getId(key) + '_label'\n }\n\n arrangeCols () {\n const curAppForm = this.$el\n const hasOverflow = curAppForm.scrollWidth > curAppForm.clientWidth\n if (hasOverflow) this.minimal = true\n }\n\n blurHandler (input: Input, _value: T[keyof T]) {\n if (this.isModernTheme) {\n this.focusId = null\n }\n\n if (input && input?.onBlur) {\n input.onBlur(_value)\n }\n }\n\n // use to handle Modern theme\n focusInner (structure: any) {\n // this means label is also editable, thus do not auto focus input\n if (structure.labelModel || structure.labelKey || structure.model) return\n const eleId = this.getId(structure.key)\n this.focusId = eleId\n const ele = document.getElementById(eleId)\n if (ele) ele.focus()\n }\n\n getCharLeft (key: string) {\n const mc = getMaxChar(this.model, key)\n return mc ? mc - (this.model[key]?.length || 0) : mc\n }\n\n getCustomClass (structure) {\n return structure.classes ? [...structure.classes] : []\n }\n\n // @Watch('structures')\n // structuresUpdated () {\n // // this is to allow view to be updated when structures change\n // this.renderCnt++\n // }\n\n @Watch('structuresDetails', { deep: true })\n focusError (swe) {\n if (!this.isModernTheme) return // this is used for Modern Theme\n\n const first = swe.find((s) => 'msg' in s)\n if (!first) return\n const ele = document.getElementById(`box-${this.getId(first.key)}`)\n if (!ele) return\n ele.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n\n updated () {\n this.arrangeCols()\n }\n\n mounted () {\n this.arrangeCols()\n window.addEventListener('resize', () => this.arrangeCols())\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppForm.vue?vue&type=template&id=11928856&scoped=true&\"\nimport script from \"./AppForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppForm.vue?vue&type=style&index=0&id=11928856&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11928856\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}