{"version":3,"sources":["webpack:///./@core/components/basicRecommendation/TheProductCard.vue?421c","webpack:///./node_modules/randomstring/lib/randomstring.js","webpack:///./node_modules/randomstring/lib/charset.js","webpack:///./node_modules/randomstring/index.js","webpack:///./@core/components/basicRecommendation/TheRcmdProductTemplate.vue?4ef8","webpack:///./@core/assets/myinfo-icon.svg","webpack:///./node_modules/randomstring/node_modules/randombytes/browser.js","webpack:///./src/views/kyc-form/section/recommendations/TheProductRecommendations.vue?5509","webpack:///./@core/components/basicRecommendation/TheInsuranceProductModal.vue?8bdc","webpack:///./@core/components/basicRecommendation/TheRcmdProductTemplate.vue?e24d","webpack:///./@core/components/basicRecommendation/TheRcmdProductTemplate.vue","webpack:///./@core/components/basicRecommendation/TheRcmdProductTemplate.vue?29bb","webpack:///./@core/components/basicRecommendation/TheRcmdProductTemplate.vue?17c0","webpack:///./@core/components/basicRecommendation/TheRcmdProductMixin.ts","webpack:///./@core/components/basicRecommendation/TheInsuranceProductModal.vue","webpack:///./@core/components/basicRecommendation/TheInsuranceProductModal.vue?ca15","webpack:///./@core/components/basicRecommendation/TheInsuranceProductModal.vue?7f48","webpack:///./@core/components/basicRecommendation/TheInvestmentProductModal.vue?c8c7","webpack:///./@core/components/basicRecommendation/TheInvestmentProductModal.vue","webpack:///./@core/components/basicRecommendation/TheInvestmentProductModal.vue?5453","webpack:///./@core/components/basicRecommendation/TheInvestmentProductModal.vue?ae3c","webpack:///./@core/components/basicRecommendation/TheProductCard.vue?e473","webpack:///./@core/components/basicRecommendation/TheProductCard.vue","webpack:///./@core/components/basicRecommendation/TheProductCard.vue?bcf9","webpack:///./@core/components/basicRecommendation/TheProductCard.vue?f00d","webpack:///./src/views/kyc-form/section/recommendations/TheProductRecommendations.vue","webpack:///./src/views/kyc-form/section/recommendations/TheProductRecommendations.vue?df1c","webpack:///./src/views/kyc-form/section/recommendations/TheProductRecommendations.vue?7935","webpack:///./src/views/kyc-form/section/recommendations/TheProductRecommendations.vue?e54b","webpack:///./@core/components/AppForm.vue?baa9","webpack:///./@core/components/AppCurrencyNA.vue?af5e","webpack:///./@core/tools/Formatter.ts","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":["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","oldBrowser","Error","crypto","global","msCrypto","size","rawBytes","Uint8Array","getRandomValues","bytes","Buffer","buffer","process","nextTick","render","_vm","_h","$createElement","_c","_self","staticClass","_v","on","openModal","unCategorizedProductList","attrs","uncategorisedProductStructure","$event","deleteProduct","editUnCategorisedProduct","_e","insuranceProductList","insuranceStructure","editProduct","investmentProductList","investmentStructure","isModalVisible","slot","_s","isAddNewProduct","openModalInsurance","openModalInvestment","isModalInsuranceVisible","newBasicProduct","ownerOptions","nameList","priorities","cdMetaList","productList","savingInsurance","saveInsurance","triggerSaveInsurance","isModalInvestmentVisible","recommendations","rcmd","kycForm","hasClient2","savingInvestment","saveInvestment","triggerSaveInvestment","staticRenderFns","productFormStructure","mainBasicProduct","riders","getRiderFormStructure","addRider","deleteRider","scopedSlots","_u","key","fn","proxy","_t","firstFormStructure","inputProductModal","_l","subProduct","additionalButtonEnable","deleteSubProductFund","subProductFormStructure","addSubProductOnClick","targetProductModal","$emit","riskRatingService","Object","assign","components","AppForm","component","needsOptions","label","value","PaymentModeOptions","undefined","concat","FrequencyOptions","map","freq","selectedPriorities","prior","name","id","riskRatingMap","keys","symbol","projectInfo","currencyToLabel","find","priority","need","productFund","newVal","oid","productNeedsCovered","includes","selectedOid","frontEndProductList","model","fromUI","selected","prod","uiService","alert","show","message","productMeta","ProductMeta","needsCovered","JSON","parse","setProduct","resetProduct","getPriorityById","needs","clearProductOidOnChange","product","mustFilledKey","mainAccountKey","display","filter","data","sharedVariable","ThePrioritiesNeeds","getNeeds","default","newRider","RiderProduct","clientIndex","clientChoice","event","splice","classes","owner","priorityOptionsMap","onChange","oldVal","handlePriorityOnChange","needsOptionsMap","includedIssuer","getInsuranceIssuerWithProducts","issuer","issuerOid","handleNeedsOnChange","handleIssuerOnChange","insuranceProductDisplayList","oldValue","recommendedRiskProfile","updateSelectedProduct","disabled","currencySymbol","precision","paymentModeOptions","frequencyOptions","updateInsurerName","issuerList","retrieveIssuerFromProducts","retrieveInsuranceProductList","newIssuerList","companyShortName","unshift","rider","riderProductList","getRiderProductList","retrieveRidersUsingFamilyCode","productFamilyCode","isCurrentPriorityValid","issuerName","forEach","defaultPriorityIfNotSet","saveOnClick","validationPass","insuranceModal","validRider","every","TheRcmdProductTemplate","investmentFunds","getProductFundFormStructure","customProductStructure","addProductFund","deleteProductFund","newProductFund","InvestmentProduct","issuerWithMainInvestmentProducts","investmentMainProductDisplayList","retrieveMainInvestmentProductList","fundList","getFundList","transactionTypeOptions","wrapOptions","WrapOptions","TransactionTypeOptions","retrieveInvestmentFundsVia","funds","mainAccountHasEmptyField","getProductNotFilledMessage","investmentModal","accountNumber","currentRcmdList","referenceId","hasNotFilled","subFunds","isCustom","flat","rcmdList","cardType","class","cardDisplayInColumn","plan","customCardHeader","productName","toggleExpand","formStructure","summaryElement","getDetail","subList","subProductTitle","getSubProduct","mainProduct","element","document","getElementById","getElementsByClassName","classList","contains","remove","add","currency","toString","kycFormStore","isEdit","editingIndex","getLifeAssured","array","validBasicProduct","priorityName","getPriorityFriendlyName","ownerName","getOwnerName","summary","details","client1","personalDetails","client2","getFilteredPriorities","priorityId","targetPriority","client1PersonalDetails","client2PersonalDetails","op","randomString","$set","fund","jointClientIndex","findIndexOfProduct","flatRcmd","prd","newProduct","findIndex","_product","confirm","isConfirm","productIndex","fetchCompanyDetails","fetchRecommendedAllProducts","State","Action","TheInsuranceProductModal","TheInvestmentProductModal","AppDialog","TheProductCard","convertToCurrencyFormat","Number","toLocaleString","uniqNoSet","arr","ret","indexOf","uniqSet","seen","Set","el","has","uniqSetWithForEach","doesForEachActuallyWork","style","structure","shouldShow","shouldDisabled","getCustomClass","hasErrors","focusId","getId","focusInner","getTestId","domProps","labelModelValue","labelModel","get","set","target","directives","rawName","labelKey","expression","composing","tooltip","ref","eidx","msg","full","fullErr","multiple","optionCols","multiLimit","buttonName","cycleMode","displayDirection","setValue","blurHandler","getValue","checkboxColumnNo","compact","option","isMyInfo","getLabelId","setSelectValue","decimal","maxChar","currencyFormat","futureDate","disabledFutureDate","rows","isVertical","maxSize","columns","getValueForTable","maxLength","counterMsg","isModernTheme","maxlength","numberAndNAOnly","onBlur","onFocus","onSelect","inputModal","textIsSelected","number","convertCurrencyToNumber","remainingChar","evt","window","charCode","which","keyCode","currentValue","isAlphabetN","isNonNumber","preventDefault","charCodeAt","isAlphabetA","formatValue","isNaN","source","useCurrency","currencyPrefix","replaceAll","inputValue","minimal","structures","errors","charLeft","getCharLeft","getCounterMsg","gridTemplateColumns","projectSettings","theme","condition","readOnly","Function","input","oriValue","String","labelValue","selectedOption","selectedIndex","_value","ex","uniqueID","snakeCaseKey","curAppForm","$el","hasOverflow","scrollWidth","clientWidth","eleId","ele","focus","mc","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-45b7f5a0.da865339.js","sourcesContent":["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!./TheProductCard.vue?vue&type=style&index=0&id=4adc4533&lang=scss&scoped=true&\"","\"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\");","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!./TheRcmdProductTemplate.vue?vue&type=style&index=0&id=154ca124&lang=scss&scoped=true&\"","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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title\"},[_vm._v(\" Our Recommendation - For Life, Investment Linked, Accident & Health Policies and Investments \"),_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.openModal}},[_vm._v(\"Add New Product\")])]),(_vm.unCategorizedProductList.length > 0)?_c('div',[_c('TheProductCard',{attrs:{\"rcmdList\":_vm.unCategorizedProductList,\"formStructure\":_vm.uncategorisedProductStructure,\"cardType\":'uncategorised',\"cardDisplayInColumn\":'two-column',\"customCardHeader\":'Expand and edit this product for recommendation'},on:{\"delete\":function($event){return _vm.deleteProduct($event)},\"edit\":function($event){return _vm.editUnCategorisedProduct($event)}}})],1):_vm._e(),_c('TheProductCard',{attrs:{\"rcmdList\":_vm.insuranceProductList,\"formStructure\":_vm.insuranceStructure,\"cardType\":'insurance'},on:{\"delete\":function($event){return _vm.deleteProduct($event)},\"edit\":function($event){return _vm.editProduct($event)}}}),_c('TheProductCard',{attrs:{\"rcmdList\":_vm.investmentProductList,\"formStructure\":_vm.investmentStructure,\"cardType\":'investment'},on:{\"delete\":function($event){return _vm.deleteProduct($event)},\"edit\":function($event){return _vm.editProduct($event)}}}),(_vm.isModalVisible)?_c('AppDialog',{attrs:{\"size\":'small',\"hideFooter\":true},on:{\"close\":function($event){_vm.isModalVisible = false}}},[_c('template',{slot:\"header\"},[_vm._v(_vm._s(_vm.isAddNewProduct ? 'Add New Product' : 'Please Choose Product Type'))]),_c('div',{staticClass:\"modal-add-content\",attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.openModalInsurance}},[_vm._v(\"Insurance Products\")]),_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.openModalInvestment}},[_vm._v(\"Investment Products\")])])],2):_vm._e(),(_vm.isModalInsuranceVisible)?_c('AppDialog',{attrs:{\"size\":'large'},on:{\"close\":function($event){_vm.isModalInsuranceVisible = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"New Insurance Product\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('TheInsuranceProductModal',{attrs:{\"newBasicProduct\":_vm.newBasicProduct,\"ownerOptions\":_vm.ownerOptions,\"nameList\":_vm.nameList,\"selectedPriorities\":_vm.priorities,\"cdMetaList\":_vm.cdMetaList,\"productList\":_vm.productList,\"saveOnClick\":_vm.savingInsurance},on:{\"save\":function($event){return _vm.saveInsurance($event)}}})],1),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":function($event){return _vm.triggerSaveInsurance()}}},[_vm._v(\"Save changes\")])])],2):_vm._e(),(_vm.isModalInvestmentVisible)?_c('AppDialog',{attrs:{\"size\":'large'},on:{\"close\":function($event){_vm.isModalInvestmentVisible = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"New Investment Product\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('TheInvestmentProductModal',{attrs:{\"newBasicProduct\":_vm.newBasicProduct,\"currentRcmdList\":_vm.recommendations.rcmd,\"ownerOptions\":_vm.ownerOptions,\"nameList\":_vm.nameList,\"selectedPriorities\":_vm.priorities,\"cdMetaList\":_vm.cdMetaList,\"productList\":_vm.productList,\"client2Included\":_vm.kycForm.hasClient2,\"saveOnClick\":_vm.savingInvestment},on:{\"save\":function($event){return _vm.saveInvestment($event)}}})],1),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":function($event){return _vm.triggerSaveInvestment()}}},[_vm._v(\"Save changes\")])])],2):_vm._e()],1)}\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',{staticClass:\"form-body\"},[_c('TheRcmdProductTemplate',{attrs:{\"firstFormStructure\":_vm.productFormStructure,\"inputProductModal\":_vm.mainBasicProduct,\"columns\":2,\"subProductList\":_vm.mainBasicProduct.riders,\"subProductFormStructure\":_vm.getRiderFormStructure},on:{\"addSubProduct\":function($event){return _vm.addRider()},\"deleteSubProduct\":function($event){return _vm.deleteRider($event)}},scopedSlots:_vm._u([{key:\"deleteSubProduct\",fn:function(){return [_vm._v(\"Delete Rider\")]},proxy:true},{key:\"addSubProduct\",fn:function(){return [_vm._v(\"Add Rider\")]},proxy:true}])})],1)}\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('div',{staticClass:\"main-account-title\"},[_vm._t(\"mainHeader\")],2),_c('AppForm',{attrs:{\"uniqueID\":\"new-insurance-product\",\"structures\":_vm.firstFormStructure,\"model\":_vm.inputProductModal,\"columns\":2}}),_vm._t(\"subSectionTitle\"),_vm._t(\"sub-sections\"),_vm._l((_vm.subProductList),function(subProduct,index){return [_c('div',{key:index,staticClass:\"form-body subProduct-item\"},[_c('div',{staticClass:\"wrapper-delete\"},[(_vm.additionalButtonEnable)?_c('AppForm',{attrs:{\"structures\":_vm.additionalButtonEnable,\"model\":subProduct}}):_vm._e(),_c('button',{staticClass:\"btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.deleteSubProductFund(index)}}},[_vm._t(\"deleteSubProduct\")],2)],1),_c('AppForm',{attrs:{\"uniqueID\":(\"new-subProduct-\" + index),\"structures\":_vm.subProductFormStructure(subProduct),\"model\":subProduct,\"columns\":2}})],1)]}),_c('button',{staticClass:\"btn-default btn-add-subProduct\",on:{\"click\":function($event){return _vm.addSubProductOnClick()}}},[_vm._t(\"addSubProduct\")],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 { Component, Prop, Vue } from 'vue-property-decorator'\nimport AppForm from '@core/components/AppForm.vue'\nimport { FormStructure } from '@master/model/structure/FormStructure'\nimport { BasicProductV2 as BasicProduct } from '@master/model/kyc-form/product/BasicProductV2'\nimport { IRiskRatingService } from '@master/services/IRiskRatingService'\nimport { inject } from 'inversify-props'\n\n@Component({\n components: {\n AppForm\n }\n})\nexport default class TheRcmdProductTemplate extends Vue {\n @inject()\n protected riskRatingService: IRiskRatingService\n\n @Prop() firstFormStructure: FormStructure\n @Prop() inputProductModal: BasicProduct\n @Prop() subsectionHeader: string\n @Prop() subProductFormStructure: Function | FormStructure\n @Prop() subProductList: FormStructure\n @Prop() additionalButtonEnable?: FormStructure\n\n private targetProductModal: BasicProduct = null\n\n addSubProductOnClick () {\n this.$emit('addSubProduct')\n }\n\n deleteSubProductFund (index) {\n this.$emit('deleteSubProduct', { index: index })\n }\n\n mounted () {\n this.targetProductModal = new BasicProduct(this.riskRatingService)\n Object.assign(this.targetProductModal, this.inputProductModal)\n }\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!./TheRcmdProductTemplate.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!./TheRcmdProductTemplate.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TheRcmdProductTemplate.vue?vue&type=template&id=154ca124&scoped=true&\"\nimport script from \"./TheRcmdProductTemplate.vue?vue&type=script&lang=ts&\"\nexport * from \"./TheRcmdProductTemplate.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TheRcmdProductTemplate.vue?vue&type=style&index=0&id=154ca124&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 \"154ca124\",\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Prop } from 'vue-property-decorator'\nimport { BasicProductV2 as BasicProduct } from '@master/model/kyc-form/product/BasicProductV2'\nimport { inject } from 'inversify-props'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport { UIService } from '@core/services/UIService'\nimport { PriorityItem } from '@master/model/kyc-form/need-analysis/PrioritiesNeeds2'\nimport ExistingPortfolio from '@master/model/kyc-form/existing-plans/ExistingPortfolio'\nimport KYCClient from '@master/model/kyc-form/KYCClient'\nimport { IPrioritiesStructure } from '@master/model/kyc-form/need-analysis/IPrioritiesStructure'\nimport { IRiskRatingService } from '@master/services/IRiskRatingService'\nimport { PaymentModeOptions } from '@master/model/options/PaymentModeOptions'\nimport { FrequencyOptions } from '@master/model/options/FrequencyOptions'\nimport { CompanyDetailsMetaList } from '@core/pages/companyDetails/model/CompanyDetailsMetaList'\nimport { ProductMeta } from '@master/model/common/ProductMeta'\nimport { ProductList } from '@core/pages/adminProductList/model/ProductList'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\nimport { options } from '@master/model/options/Options'\n\n@Component\nexport default class TheRcmdProductMixin extends Vue {\n @Prop() protected ownerOptions: { name: string; value: number }[]\n @Prop() protected newBasicProduct: BasicProduct\n @Prop() protected nameList: options[]\n @Prop() protected selectedPriorities: PriorityItem[]\n @Prop() protected cdMetaList: CompanyDetailsMetaList\n @Prop() protected productList: ProductList\n @Prop({ default: () => [] }) protected currentRcmdList: BasicProduct[]\n @Prop({ default: false }) saveOnClick\n\n @inject()\n private sharedVariable: SharedVariable\n\n @inject()\n private ThePrioritiesNeeds: IPrioritiesStructure\n\n @inject()\n protected riskRatingService: IRiskRatingService\n\n @inject()\n protected projectInfo: IProjectInfo\n\n protected mainBasicProduct: BasicProduct = null\n\n protected needsOptions = []\n\n protected uiService: UIService\n get paymentModeOptions () {\n return [{ label: '', value: '' }, ...PaymentModeOptions]\n }\n\n get frequencyOptions () {\n return [{ label: undefined, value: undefined }].concat(FrequencyOptions.map(freq => {\n return freq\n }))\n }\n\n get priorityOptionsMap () {\n return this.selectedPriorities.map(prior => {\n return {\n label: prior.name,\n value: prior.id\n }\n })\n }\n\n get riskRatingOption () {\n const riskRatingMap = this.riskRatingService.riskRatingMap()\n return Object.keys(riskRatingMap).map(key => {\n return {\n value: key,\n label: riskRatingMap[key]\n }\n })\n }\n\n get currencySymbol () {\n const symbol = this.projectInfo.currencyToLabel ?? '$'\n return `(${symbol})`\n }\n\n getPriorityById (id: string) {\n return this.selectedPriorities.find(priority => priority.id === id)\n }\n\n get needsOptionsMap () {\n return this.needsOptions.map(need => {\n return { label: need, value: need }\n })\n }\n\n updateCustomProduct (productFund, newVal) {\n if (!newVal) return\n productFund.oid = newVal\n\n // update the need: to empty the need if the selected product didnt cover the preset one\n if (!productFund.need ||\n (productFund.need && !productFund.productNeedsCovered.includes(productFund.need))) {\n productFund.need = productFund.productNeedsCovered[0] ?? ''\n }\n }\n\n updateSelectedProduct (selectedOid, frontEndProductList, model, fromUI = true) {\n if (!selectedOid) return\n\n const selected = frontEndProductList.find(prod => prod.oid === selectedOid)\n\n if (!selected && fromUI) {\n return this.uiService.alert.show({\n type: 'error',\n message: 'Invalid product selected'\n })\n } else if (!selected && !fromUI) {\n return\n }\n\n const productMeta = new ProductMeta()\n\n Object.assign(productMeta, {\n ...selected,\n needsCovered: JSON.parse(selected.needsCovered)\n })\n\n model.setProduct(productMeta)\n\n // update the need: to empty the need if the selected product didnt cover the preset one\n if (!model.need ||\n (model.need && !model.productNeedsCovered.includes(model.need))) {\n model.need = model.productNeedsCovered[0] ?? ''\n }\n }\n\n clearProductOidOnChange (model) {\n model.resetProduct()\n }\n\n handlePriorityOnChange (model, newVal) {\n if (!model.need) {\n model.need = this.getPriorityById(newVal).needs\n }\n }\n\n handleNeedsOnChange (model, newVal) {\n if (!model.productNeedsCovered.includes(newVal)) {\n // if preselected product's needs cover didnt include this needs, then reset\n this.clearProductOidOnChange(model)\n }\n }\n\n getProductNotFilledMessage (product, mustFilledKey: {key: string; display: string}[]) {\n return mustFilledKey.map(mainAccountKey => {\n const value = product[mainAccountKey.key]\n if (typeof value === 'undefined' || value === '' || value === null) {\n return mainAccountKey.display\n }\n }).filter(data => data)\n }\n\n mounted () {\n this.uiService = this.sharedVariable.uiService\n this.needsOptions = this.ThePrioritiesNeeds.getNeeds()\n }\n\n created () {\n this.mainBasicProduct = new BasicProduct(this.riskRatingService)\n Object.assign(this.mainBasicProduct, this.newBasicProduct)\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Mixins, Watch } from 'vue-property-decorator'\nimport { FormStructure } from '@master/model/structure/FormStructure'\nimport { BasicProductV2 as BasicProduct } from '@master/model/kyc-form/product/BasicProductV2'\nimport TheRcmdProductTemplate from '../basicRecommendation/TheRcmdProductTemplate.vue'\nimport TheRcmdProductMixin from '../basicRecommendation/TheRcmdProductMixin'\nimport RiderProduct from '@master/model/kyc-form/product/RiderProduct'\n\n@Component({\n components: {\n TheRcmdProductTemplate\n }\n})\nexport default class TheInsuranceProductModal extends Mixins(TheRcmdProductMixin) {\n addRider () {\n if (!this.mainBasicProduct.oid) {\n return this.uiService.alert.show({\n type: 'error',\n message: 'Please select a main insurance product before adding riders.'\n })\n }\n const newRider = new RiderProduct(this.riskRatingService, this.mainBasicProduct.clientIndex, this.mainBasicProduct.clientChoice)\n this.mainBasicProduct.riders.push(newRider)\n }\n\n deleteRider (event) {\n const { index } = event\n this.mainBasicProduct.riders.splice(index, 1)\n }\n\n get productFormStructure (): FormStructure {\n return [\n {\n label: 'Owner',\n key: 'clientIndex',\n classes: ['colspan'],\n options: this.ownerOptions.map(owner => {\n return {\n label: owner.name,\n value: owner.value\n }\n })\n },\n {\n label: 'Joint Owner',\n key: 'jointClientIndex',\n classes: ['colspan'],\n options: this.ownerOptions.filter(owner => owner.value !== this.mainBasicProduct.clientIndex).map(owner => {\n return {\n label: owner.name,\n value: owner.value\n }\n })\n },\n {\n label: 'Life Assured 1',\n key: 'lifeAssured',\n classes: ['colspan'],\n options: this.nameList\n },\n {\n label: 'Life Assured 2',\n key: 'lifeAssuredTwo',\n classes: ['colspan'],\n options: this.nameList\n },\n {\n label: 'Priority',\n key: 'priority',\n options: this.priorityOptionsMap,\n onChange: (oldVal, newVal) => {\n this.handlePriorityOnChange(this.mainBasicProduct, newVal)\n }\n },\n {\n label: 'Filtered By Needs',\n key: 'need',\n options: this.needsOptionsMap,\n onChange: (oldVal, newVal) => {\n // if issuer is not in the needs cover, should clear too\n const includedIssuer = this.getInsuranceIssuerWithProducts(newVal).find(issuer => issuer.value === this.mainBasicProduct.issuerOid)\n if (!includedIssuer) {\n this.mainBasicProduct.issuerOid = ''\n }\n this.handleNeedsOnChange(this.mainBasicProduct, newVal)\n }\n },\n {\n label: 'Issuer',\n key: 'issuerOid',\n classes: ['colspan'],\n options: this.getInsuranceIssuerWithProducts(this.mainBasicProduct.need),\n onChange: (oldVal, newVal) => {\n this.handleIssuerOnChange(newVal)\n }\n },\n {\n label: 'Product Name',\n key: 'oid',\n classes: ['colspan'],\n options: this.insuranceProductDisplayList.map(prod => {\n return { label: prod.name, value: prod.oid }\n }),\n onChange: (oldValue, newVal) => {\n if (!newVal) {\n this.mainBasicProduct.recommendedRiskProfile = undefined\n }\n this.updateSelectedProduct(newVal, this.insuranceProductDisplayList, this.mainBasicProduct)\n }\n },\n {\n label: 'Risk Rating',\n key: 'recommendedRiskProfileString',\n classes: ['colspan'],\n disabled: true\n },\n {\n label: 'Sum Assured ' + this.currencySymbol,\n key: 'sumAssured',\n type: 'currency'\n },\n {\n label: 'Premium Amount ' + this.currencySymbol,\n key: 'premiumAmount',\n type: 'currency',\n precision: 2\n },\n {\n label: 'Payment Mode',\n key: 'paymentMode',\n options: this.paymentModeOptions\n },\n {\n label: 'Policy Term',\n key: 'policyTerm'\n },\n {\n label: 'Premium Term',\n key: 'premiumTerm',\n type: 'number'\n },\n {\n label: 'Frequency',\n key: 'frequency',\n options: this.frequencyOptions\n }\n ]\n }\n\n handleIssuerOnChange (newVal: string) {\n if (!newVal) {\n return\n }\n this.updateInsurerName(newVal)\n // clear the product as issuer has change\n this.clearProductOidOnChange(this.mainBasicProduct)\n }\n\n getInsuranceIssuerWithProducts (need: string) {\n const issuerList = this.cdMetaList.retrieveIssuerFromProducts(this.productList.retrieveInsuranceProductList([need], []))\n // potential fix for ipad issues where it prepopulatest dropdown with the first option in the list\n const newIssuerList = issuerList.map(issuer => {\n return { label: issuer.companyShortName, value: issuer.oid }\n })\n newIssuerList.unshift({ label: '', value: '' })\n return newIssuerList\n }\n\n get insuranceProductDisplayList () {\n return this.productList.retrieveInsuranceProductList([this.mainBasicProduct.need], [this.mainBasicProduct.issuerOid])\n }\n\n // rider handler\n getRiderFormStructure (rider: RiderProduct): FormStructure {\n const riderProductList = this.getRiderProductList(rider)\n return [\n {\n label: 'Priority',\n key: 'priority',\n classes: ['colspan'],\n options: this.priorityOptionsMap,\n onChange: (oldVal, newVal) => {\n this.handlePriorityOnChange(rider, newVal)\n }\n },\n {\n label: 'Filtered by Need',\n key: 'need',\n options: this.needsOptionsMap,\n onChange: (oldVal, newVal) => {\n this.handleNeedsOnChange(rider, newVal)\n }\n },\n {\n label: 'Product Name',\n key: 'oid',\n options: riderProductList.map(rider => {\n return { label: rider.name, value: rider.oid }\n }),\n onChange: (oldVal, newVal) => {\n this.updateSelectedProduct(newVal, riderProductList, rider)\n }\n },\n {\n label: 'Sum Assured ' + this.currencySymbol,\n key: 'sumAssured',\n type: 'currency'\n },\n {\n label: 'Premium Amount ' + this.currencySymbol,\n key: 'premiumAmount',\n type: 'currency',\n precision: 2\n },\n {\n label: 'Frequency',\n key: 'frequency',\n options: this.frequencyOptions\n }\n ]\n }\n\n // rider\n getRiderProductList (rider) {\n return this.productList.retrieveRidersUsingFamilyCode(this.mainBasicProduct?.productFamilyCode, this.mainBasicProduct?.issuerOid, [rider.need])\n }\n\n defaultPriorityIfNotSet () {\n const isCurrentPriorityValid = this.priorityOptionsMap.find(priority => priority.value === this.mainBasicProduct.priority)\n if (!isCurrentPriorityValid) {\n // if selected priority is not included in this priority map, empty it, so that validation can prompt error\n if (this.mainBasicProduct.priority) {\n this.mainBasicProduct.priority = ''\n } else {\n // default to first of priority map\n this.mainBasicProduct.priority = this.priorityOptionsMap[0]?.value ?? ''\n }\n }\n }\n\n updateInsurerName (issuerOid: string) {\n const issuerName = this.getInsuranceIssuerWithProducts(this.mainBasicProduct.need).find(issuer => issuer.value === issuerOid).label\n this.mainBasicProduct.issuer = issuerName\n // had to update rider issuer name too\n if (this.mainBasicProduct.riders?.length > 0) {\n this.mainBasicProduct.riders.forEach(rider => {\n rider.issuer = issuerName\n rider.issuerOid = issuerOid\n })\n }\n }\n\n clearProductOidOnChange (model) {\n model.resetProduct()\n // remember to clear the riders too\n if (model.riders?.length > 0) {\n model.riders.forEach(rider => rider.resetProduct())\n }\n }\n\n mounted () {\n this.defaultPriorityIfNotSet()\n this.updateSelectedProduct(this.mainBasicProduct.oid, this.insuranceProductDisplayList, this.mainBasicProduct, false)\n }\n\n @Watch('saveOnClick')\n async saveProduct () {\n if (this.saveOnClick) {\n if (!this.mainBasicProduct.priority) {\n await this.uiService.alert.show({\n type: 'error',\n message: 'Priority field cannot be empty'\n })\n this.$emit('save', { validationPass: false, insuranceModal: undefined })\n return\n }\n const validRider = this.mainBasicProduct.riders.every(rider => rider.priority)\n if (!validRider) {\n await this.uiService.alert.show({\n type: 'error',\n message: 'Priority field in rider cannot be empty'\n })\n this.$emit('save', { validationPass: false, insuranceModal: undefined })\n return\n }\n this.$emit('save', { validationPass: true, insuranceModal: this.mainBasicProduct })\n }\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!./TheInsuranceProductModal.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!./TheInsuranceProductModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TheInsuranceProductModal.vue?vue&type=template&id=3f6e5800&scoped=true&\"\nimport script from \"./TheInsuranceProductModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./TheInsuranceProductModal.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 \"3f6e5800\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-body\"},[_c('TheRcmdProductTemplate',{attrs:{\"firstFormStructure\":_vm.productFormStructure,\"inputProductModal\":_vm.mainBasicProduct,\"columns\":2,\"subProductList\":_vm.mainBasicProduct.investmentFunds,\"subProductFormStructure\":_vm.getProductFundFormStructure,\"additionalButtonEnable\":_vm.customProductStructure},on:{\"addSubProduct\":function($event){return _vm.addProductFund()},\"deleteSubProduct\":function($event){return _vm.deleteProductFund($event)}},scopedSlots:_vm._u([{key:\"mainHeader\",fn:function(){return [_vm._v(\"Investment Account Info\")]},proxy:true},{key:\"subSectionTitle\",fn:function(){return [_vm._v(\"Product/Fund\")]},proxy:true},{key:\"deleteSubProduct\",fn:function(){return [_vm._v(\"Delete Product/Fund\")]},proxy:true},{key:\"addSubProduct\",fn:function(){return [_vm._v(\"Add Product/Fund\")]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Mixins, Watch } from 'vue-property-decorator'\nimport { FormStructure } from '@master/model/structure/FormStructure'\nimport { BasicProductV2 as BasicProduct } from '@master/model/kyc-form/product/BasicProductV2'\nimport TheRcmdProductTemplate from '../basicRecommendation/TheRcmdProductTemplate.vue'\nimport TheRcmdProductMixin from '../basicRecommendation/TheRcmdProductMixin'\nimport InvestmentProduct from '@master/model/kyc-form/product/InvestmentProduct'\nimport { TransactionTypeOptions } from '@master/model/options/TransactionTypeOptions'\nimport { WrapOptions } from '@master/model/options/WrapOptions'\nimport { isEmpty, uniq } from 'lodash/fp'\n\n@Component({\n components: {\n TheRcmdProductTemplate\n }\n})\nexport default class TheInvestmentProductModal extends Mixins(TheRcmdProductMixin) {\n // if there is needed on additional button, overwrite it in src\n get customProductStructure (): FormStructure {\n return null\n }\n\n addProductFund () {\n if (!this.mainBasicProduct.oid) {\n return this.uiService.alert.show({\n type: 'error',\n message: 'Please select a main investment product before adding funds.'\n })\n }\n const newProductFund = new InvestmentProduct(this.riskRatingService, this.mainBasicProduct)\n this.mainBasicProduct.investmentFunds.push(newProductFund)\n }\n\n deleteProductFund (event) {\n const { index } = event\n this.mainBasicProduct.investmentFunds.splice(index, 1)\n }\n\n get productFormStructure (): FormStructure {\n return [\n {\n label: 'Issuer',\n key: 'issuerOid',\n classes: ['colspan'],\n options: this.issuerWithMainInvestmentProducts,\n onChange: (oldVal, newVal) => {\n this.handleIssuerOnChange(newVal)\n }\n },\n {\n label: 'Account Name',\n key: 'oid',\n classes: ['colspan'],\n options: this.investmentMainProductDisplayList.map(prod => {\n return { label: prod.name, value: prod.oid }\n }),\n onChange: (oldVal, newVal) => {\n this.updateSelectedProduct(newVal, this.investmentMainProductDisplayList, this.mainBasicProduct)\n }\n },\n {\n label: 'Main Account Holder',\n key: 'clientIndex',\n classes: ['colspan'],\n options: this.ownerOptions.map(owner => {\n return {\n label: owner.name,\n value: owner.value\n }\n })\n },\n {\n label: 'Joint Account Holder',\n key: 'jointClientIndex',\n classes: ['colspan'],\n options: this.ownerOptions.filter(owner => owner.value !== this.mainBasicProduct.clientIndex).map(owner => {\n return {\n label: owner.name,\n value: owner.value\n }\n })\n },\n {\n label: 'Account Number',\n key: 'accountNumber',\n classes: ['colspan']\n }\n ]\n }\n\n get issuerWithMainInvestmentProducts () {\n return this.cdMetaList.retrieveIssuerFromProducts(this.productList.retrieveMainInvestmentProductList([])).map(issuer => {\n return { label: issuer.companyShortName, value: issuer.oid }\n })\n }\n\n get investmentMainProductDisplayList () {\n return this.productList.retrieveMainInvestmentProductList([this.mainBasicProduct.issuerOid])\n }\n\n getProductFundFormStructure (productFund: InvestmentProduct): FormStructure {\n const fundList = this.getFundList(productFund)\n return [\n {\n label: 'Priority',\n key: 'priority',\n options: this.priorityOptionsMap,\n onChange: (oldVal, newVal) => {\n this.handlePriorityOnChange(productFund, newVal)\n }\n },\n {\n label: 'Filtered by Need',\n key: 'need',\n options: this.needsOptionsMap,\n onChange: (oldVal, newVal) => {\n this.handleNeedsOnChange(productFund, newVal)\n }\n },\n {\n label: 'Fund Name',\n key: 'oid',\n options: fundList.map(prod => {\n return { label: prod.name, value: prod.oid }\n }),\n onChange: (oldVal, newVal) => {\n this.updateSelectedProduct(newVal, fundList, productFund)\n }\n },\n {\n label: 'Type of Transactions',\n key: 'transactionType',\n options: this.transactionTypeOptions\n },\n {\n label: 'Risk Rating',\n key: 'recommendedRiskProfileString',\n classes: ['colspan'],\n disabled: true\n },\n {\n label: 'Investment Amount ' + this.currencySymbol,\n key: 'sumAssured',\n classes: [],\n type: 'currency',\n precision: 2\n },\n {\n label: 'Payment Mode',\n key: 'paymentMode',\n classes: [],\n options: this.paymentModeOptions\n },\n {\n label: 'Frequency',\n key: 'frequency',\n classes: [],\n options: this.frequencyOptions\n },\n {\n label: 'Wrap / Non-Wrap',\n key: 'wrap',\n options: this.wrapOptions\n }\n ]\n }\n\n get wrapOptions () {\n return [{ label: '', value: '' }, ...WrapOptions]\n }\n\n get transactionTypeOptions () {\n return [{ label: undefined, value: undefined }, ...TransactionTypeOptions]\n }\n\n getFundList (productFund) {\n return this.productList.retrieveInvestmentFundsVia(this.mainBasicProduct?.productFamilyCode, this.mainBasicProduct.issuerOid, [productFund.need])\n }\n\n handleIssuerOnChange (newVal: string) {\n if (!newVal) {\n return\n }\n this.updateInsurerName(newVal)\n // had to update rider issuer name too\n // clear the product as issuer has change\n this.clearProductOidOnChange(this.mainBasicProduct)\n }\n\n updateInsurerName (issuerOid: string) {\n const issuerName = this.issuerWithMainInvestmentProducts.find(issuer => issuer.value === issuerOid).label\n this.mainBasicProduct.issuer = issuerName\n\n if (this.mainBasicProduct.investmentFunds?.length > 0) {\n this.mainBasicProduct.investmentFunds.forEach(funds => {\n funds.issuer = issuerName\n funds.issuerOid = issuerOid\n })\n }\n }\n\n clearProductOidOnChange (model) {\n model.resetProduct()\n // remember to clear the riders too\n if (model.investmentFunds?.length > 0) {\n model.investmentFunds.forEach(funds => funds.resetProduct())\n }\n }\n\n mounted () {\n this.updateSelectedProduct(this.mainBasicProduct.oid, this.investmentMainProductDisplayList, this.mainBasicProduct, false)\n }\n\n @Watch('saveOnClick')\n async saveProduct () {\n if (this.saveOnClick) {\n const mustFilledKey = [{ key: 'issuerOid', display: 'Issuer' }, { key: 'oid', display: 'Account Name' },\n { key: 'clientIndex', display: 'Main Account Holder' }]\n const mainAccountHasEmptyField = this.getProductNotFilledMessage(this.mainBasicProduct, mustFilledKey)\n\n if (mainAccountHasEmptyField?.length > 0) {\n await this.uiService.alert.show({\n type: 'error',\n message: mainAccountHasEmptyField.join(', ') + ' cannot be empty.'\n })\n this.$emit('save', { validationPass: false, investmentModal: undefined })\n return\n }\n\n // Check if there are existing rcmd that has the same account number\n if (!isEmpty(this.mainBasicProduct.accountNumber)) {\n const length = this.currentRcmdList.filter(rcmd => rcmd.accountNumber === this.mainBasicProduct.accountNumber && rcmd.referenceId !== this.mainBasicProduct.referenceId).length\n if (length > 0) {\n await this.uiService.alert.show({\n type: 'error',\n message: 'You already have an existing Investment Account with the same account number in the list.'\n })\n this.$emit('save', { validationPass: false, investmentModal: undefined })\n return\n }\n }\n\n if (this.mainBasicProduct.investmentFunds?.length > 0) {\n // clientIndex, priority\n const hasNotFilled = this.mainBasicProduct.investmentFunds.map(subFunds => {\n const mustFilledKey = [{ key: 'priority', display: 'Priority' }]\n if (subFunds.isCustom) {\n mustFilledKey.push({ key: 'productName', display: 'Custom Product Fund Name' })\n mustFilledKey.push({ key: 'recommendedRiskProfile', display: 'Custom Product Risk Rating' })\n }\n return this.getProductNotFilledMessage(subFunds, mustFilledKey)\n })\n .filter(data => data)\n .flat()\n if (hasNotFilled?.length > 0) {\n await this.uiService.alert.show({\n type: 'error',\n message: 'Investment Funds\\'s ' + uniq(hasNotFilled).join(', ') + ' cannot be empty.'\n })\n this.$emit('save', { validationPass: false, investmentModal: undefined })\n return\n }\n }\n this.$emit('save', { validationPass: true, investmentModal: this.mainBasicProduct })\n }\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!./TheInvestmentProductModal.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!./TheInvestmentProductModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TheInvestmentProductModal.vue?vue&type=template&id=e451df8e&scoped=true&\"\nimport script from \"./TheInvestmentProductModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./TheInvestmentProductModal.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 \"e451df8e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.rcmdList && _vm.rcmdList.length>0)?_c('div',{staticClass:\"bold-text\"},[_c('span',{staticClass:\"capitalize\"},[_vm._v(_vm._s(_vm.cardType))]),_vm._v(\" Products \")]):_vm._e(),_c('div',{class:'column-group ' + _vm.cardDisplayInColumn},_vm._l((_vm.rcmdList),function(plan,index){return _c('div',{key:'product-card-' + _vm.cardType + index,attrs:{\"id\":'product-card-' + _vm.cardType + index}},[_c('el-card',{staticClass:\"box-card\"},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(_vm._s(_vm.customCardHeader || plan.productName))]),_c('el-button',{staticClass:\"icon-collapse\",attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.toggleExpand('product-card-' + _vm.cardType +index)}}},[_c('i',{staticClass:\"fas fa-chevron-down\"})])],1),_c('div',{staticClass:\"body\",attrs:{\"id\":'product-card-'+index}},[_vm._l((_vm.formStructure.summary),function(summaryElement,index){return _c('el-row',{key:index,attrs:{\"type\":\"flex\"}},[_c('el-col',[_c('span',[_vm._v(_vm._s(summaryElement.label))])]),_c('el-col',[_vm._v(_vm._s(_vm.getDetail(plan, summaryElement)))])],1)}),(_vm.formStructure.subList.length > 0)?_c('el-row',{attrs:{\"type\":\"flex\"}},[_c('el-col',[_c('span',[_vm._v(_vm._s(_vm.subProductTitle)+\" Attached:\")])]),_c('el-col',[_vm._v(_vm._s(_vm.getSubProduct(plan).length))])],1):_vm._e(),_c('div',{staticClass:\"detail inactive\"},[_vm._l((_vm.formStructure.details),function(summaryElement,index){return _c('el-row',{key:index,attrs:{\"type\":\"flex\"}},[_c('el-col',[_c('span',[_vm._v(_vm._s(summaryElement.label))])]),_c('el-col',[_vm._v(_vm._s(_vm.getDetail(plan, summaryElement)))])],1)}),(_vm.getSubProduct(plan).length != 0)?_c('el-row',[_c('el-divider')],1):_vm._e(),_vm._l((_vm.getSubProduct(plan)),function(rider,index){return _c('div',{key:'rider_'+index,staticClass:\"rider\"},_vm._l((_vm.formStructure.subList),function(summaryElement,index){return _c('el-row',{key:index,attrs:{\"type\":\"flex\"}},[_c('el-col',[_c('span',[_vm._v(_vm._s(summaryElement.label))])]),_c('el-col',[_vm._v(_vm._s(_vm.getDetail(rider, summaryElement)))])],1)}),1)}),_c('el-row',{staticClass:\"control\"},[_c('button',{staticClass:\"btn-danger\",on:{\"click\":function($event){return _vm.deleteProduct(plan)}}},[_vm._v(\"Delete Product\")]),_c('button',{staticClass:\"btn-default\",on:{\"click\":function($event){return _vm.editProduct(plan, _vm.cardType)}}},[_vm._v(\"Edit Product\")])])],2)],2)])],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 { BasicProductV2 as BasicProduct } from '@master/model/kyc-form/product/BasicProductV2'\nimport { Component, Vue, Prop } from 'vue-property-decorator'\nimport { convertToCurrencyFormat } from '@core/tools/Formatter'\nimport { inject } from 'inversify-props'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\n\nexport interface CardStructure {\n summary: Element[];\n details: Element[];\n subList: Element[];\n}\n\ninterface Element {\n label: string;\n key: keyof T;\n type?: string;\n}\n\n@Component\nexport default class TheProductCard extends Vue {\n @Prop() rcmdList: BasicProduct[]\n @Prop() formStructure: CardStructure\n @Prop() cardType: 'insurance' | 'investment' | 'uncategorised'\n @Prop({ default: 'one-column' }) cardDisplayInColumn: 'one-column' | 'two-column'\n @Prop() customCardHeader?: string\n\n @inject()\n private projectInfo: IProjectInfo\n\n get subProductTitle () {\n if (this.cardType === 'insurance') {\n return 'Riders'\n }\n return 'Funds'\n }\n\n getSubProduct (mainProduct) {\n if (this.cardType === 'insurance') {\n return mainProduct?.riders\n }\n return mainProduct?.investmentFunds\n }\n\n toggleExpand (key) {\n const element = document\n .getElementById(key)\n .getElementsByClassName('detail')[0]\n const classList = element.classList\n if (classList.contains('active')) {\n classList.remove('active')\n classList.add('inactive')\n } else {\n classList.add('active')\n classList.remove('inactive')\n }\n }\n\n getDetail (plan, summaryElement) {\n if (summaryElement.value) {\n return summaryElement.value\n }\n const value = plan[summaryElement.key]\n if (!value) return\n if (summaryElement.type === 'currency') {\n return convertToCurrencyFormat(value, this.projectInfo.currency)\n }\n return value.toString()\n }\n\n deleteProduct (product: BasicProduct) {\n this.$emit('delete', { product: product })\n }\n\n editProduct (plan, cardType) {\n this.$emit('edit', { product: plan, type: cardType })\n }\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!./TheProductCard.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!./TheProductCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TheProductCard.vue?vue&type=template&id=4adc4533&scoped=true&\"\nimport script from \"./TheProductCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./TheProductCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TheProductCard.vue?vue&type=style&index=0&id=4adc4533&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 \"4adc4533\",\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\nimport { BasicProductV2 as BasicProduct } from '@master/model/kyc-form/product/BasicProductV2'\nimport { Component, Vue } from 'vue-property-decorator'\nimport { namespace } from 'vuex-class'\nimport KYCForm from '@company-common/model/kyc-form/KYCForm'\nimport TheInsuranceProductModal from '@core/components/basicRecommendation/TheInsuranceProductModal.vue'\nimport TheInvestmentProductModal from '@core/components/basicRecommendation/TheInvestmentProductModal.vue'\nimport { inject } from 'inversify-props'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport { IRiskRatingService } from '@master/services/IRiskRatingService'\nimport AppDialog from '@core/components/AppDialog.vue'\nimport { ProductList } from '@core/pages/adminProductList/model/ProductList'\nimport { CompanyDetailsMetaList } from '@core/pages/companyDetails/model/CompanyDetailsMetaList'\nimport { cloneDeep } from 'lodash/fp'\nimport { isEqual, keys, omit, pick } from 'lodash'\nimport TheProductCard, { CardStructure } from '@core/components/basicRecommendation/TheProductCard.vue'\nimport { IPrioritiesStructure } from '@master/model/kyc-form/need-analysis/IPrioritiesStructure'\nimport KYCClient from '@company-common/model/kyc-form/KYCClient'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\n\nconst kycFormStore = namespace('KYCFormStore')\n\n@Component({\n components: {\n TheInsuranceProductModal,\n TheInvestmentProductModal,\n AppDialog,\n TheProductCard\n }\n})\nexport default class TheProductRecommendations extends Vue {\n @kycFormStore.State\n private kycForm!: KYCForm;\n\n @kycFormStore.State\n private productList: ProductList\n\n @kycFormStore.State\n private cdMetaList: CompanyDetailsMetaList\n\n @kycFormStore.Action\n private fetchCompanyDetails!: () => void\n\n @kycFormStore.Action\n private fetchRecommendedAllProducts!: () => void\n\n uiService: UIService\n\n @inject()\n private sharedVariable: SharedVariable\n\n @inject()\n private riskRatingService: IRiskRatingService\n\n @inject()\n private ThePrioritiesNeeds: IPrioritiesStructure\n\n @inject()\n private projectInfo: IProjectInfo\n\n private isModalVisible = false;\n private isModalInsuranceVisible = false;\n private isModalInvestmentVisible = false;\n\n private newBasicProduct: BasicProduct = null\n private isEdit = false;\n private editingIndex = null;\n private savingInsurance = false\n private savingInvestment = false\n private isAddNewProduct = false\n\n get recommendations () {\n return this.kycForm.recommendations\n }\n\n get nameList () {\n return this.kycForm.getLifeAssured()\n }\n\n get unCategorizedProductList () {\n const array = this.recommendations.validBasicProduct.filter(product => !product.type)\n return array.map(product => {\n return {\n ...product,\n priorityName: this.getPriorityFriendlyName(product.priority),\n ownerName: this.getOwnerName(product.clientIndex)\n }\n })\n }\n\n get insuranceProductList () {\n return this.recommendations.validBasicProduct.filter(product => product.type === 'insurance')\n .map(product => {\n if (product.riders.length > 0) {\n product.riders.forEach(rider => {\n rider.priorityName = this.getPriorityFriendlyName(rider.priority)\n })\n }\n return {\n ...product,\n priorityName: this.getPriorityFriendlyName(product.priority)\n }\n })\n }\n\n get investmentProductList () {\n return this.recommendations.validBasicProduct.filter(product => product.type === 'investment')\n .map(product => {\n if (product.investmentFunds.length > 0) {\n product.investmentFunds.forEach(funds => {\n funds.priorityName = this.getPriorityFriendlyName(funds.priority)\n })\n }\n return {\n ...product,\n priorityName: this.getPriorityFriendlyName(product.priority)\n }\n })\n }\n\n get currencySymbol () {\n const symbol = this.projectInfo.currencyToLabel ?? '$'\n return `(${symbol})`\n }\n\n get insuranceStructure (): CardStructure {\n return {\n summary: [\n { label: 'Priority Type:', key: 'priorityName' }\n ],\n details: [\n { label: 'Product Type:', key: 'productType' },\n { label: 'Issuer:', key: 'issuer' },\n { label: 'Life Assured 1:', key: 'lifeAssured' },\n { label: 'Life Assured 2:', key: 'lifeAssuredTwo' },\n { label: 'Product Covered Needs:', key: 'productNeedsCovered' },\n { label: `Sum Assured ${this.currencySymbol}:`, key: 'sumAssured', type: 'currency' },\n { label: `Premium Amount ${this.currencySymbol}:`, key: 'premiumAmount', type: 'currency' },\n { label: 'Frequency:', key: 'frequency' },\n { label: 'Product Risk Rating:', key: 'recommendedRiskProfileString' }\n ],\n subList: [\n { label: 'Product Type:', key: 'productType' },\n { label: 'Product Name:', key: 'productName' },\n { label: 'Priority Type:', key: 'priorityName' },\n { label: `Sum Assured ${this.currencySymbol}:`, key: 'sumAssured', type: 'currency' },\n { label: `Premium Amount ${this.currencySymbol}:`, key: 'premiumAmount', type: 'currency' },\n { label: 'Frequency:', key: 'frequency' }\n ]\n }\n }\n\n get investmentStructure (): CardStructure {\n return {\n summary: [\n { label: 'Product Type:', key: 'productType' },\n { label: 'Issuer:', key: 'issuer' }\n ],\n details: [\n ],\n subList: [\n { label: 'Priority Type:', key: 'priorityName' },\n { label: 'Fund Name:', key: 'productName' },\n { label: 'Type of Transactions:', key: 'transactionType' },\n { label: `Investment Amount ${this.currencySymbol}:`, key: 'sumAssured', type: 'currency' }\n ]\n }\n }\n\n get uncategorisedProductStructure (): CardStructure {\n return {\n summary: [\n { label: 'Priority Type:', key: 'priorityName' },\n { label: 'Owner:', key: 'ownerName' }\n ],\n details: [\n ],\n subList: [\n ]\n }\n }\n\n get client1PersonalDetails () {\n return this.kycForm.client1.personalDetails\n }\n\n get client2PersonalDetails () {\n return this.kycForm.client2.personalDetails\n }\n\n get priorities () {\n return this.ThePrioritiesNeeds.getFilteredPriorities(this.kycForm)\n }\n\n getPriorityFriendlyName (priorityId: string) {\n const targetPriority = this.priorities.find(priority => priority.id === priorityId)\n return targetPriority?.name || ''\n }\n\n openModal () {\n this.resetProduct()\n this.isAddNewProduct = true\n this.isModalVisible = true\n }\n\n openModalInsurance () {\n this.isModalInsuranceVisible = true\n this.isModalInvestmentVisible = false\n this.isModalVisible = false\n }\n\n openModalInvestment () {\n this.isModalInsuranceVisible = false\n this.isModalInvestmentVisible = true\n this.isModalVisible = false\n }\n\n resetProduct () {\n this.newBasicProduct = new BasicProduct(this.riskRatingService)\n this.isEdit = false\n this.editingIndex = null\n this.savingInsurance = false\n this.savingInvestment = false\n this.isAddNewProduct = false\n }\n\n get ownerOptions () {\n const options = [\n { name: '', value: undefined },\n { name: this.client1PersonalDetails.name, value: 0 }\n ]\n\n if (this.kycForm.hasClient2) {\n options.push({\n name: this.client2PersonalDetails.name,\n value: 1\n })\n }\n return options\n }\n\n getOwnerName (clientIndex: number) {\n return this.ownerOptions.find(op => op.value === clientIndex)?.name\n }\n\n async triggerSaveInsurance () {\n this.savingInsurance = true\n }\n\n async triggerSaveInvestment () {\n this.savingInvestment = true\n }\n\n async saveInsurance (event) {\n const { validationPass, insuranceModal } = event\n this.savingInsurance = false\n if (!validationPass) {\n return\n }\n\n insuranceModal.type = 'insurance'\n // Generate Reference ID\n if (!insuranceModal.referenceId)insuranceModal.referenceId = insuranceModal.randomString(22)\n\n if (this.isEdit) {\n this.$set(this.kycForm.recommendations.rcmd, this.editingIndex, insuranceModal)\n } else {\n this.kycForm.recommendations.rcmd.push(insuranceModal)\n }\n\n this.$emit('save')\n this.isModalInsuranceVisible = false\n this.isModalInvestmentVisible = false\n\n this.resetProduct()\n }\n\n async saveInvestment (event) {\n const { validationPass, investmentModal } = event\n this.savingInvestment = false\n if (!validationPass) {\n return\n }\n\n investmentModal.type = 'investment'\n\n // Generate Reference ID\n if (!investmentModal.referenceId) investmentModal.referenceId = investmentModal.randomString(22)\n\n // Ensure that all investment funds has the same client index and jointClientIndex\n investmentModal.investmentFunds.map(fund => {\n fund.clientIndex = investmentModal.clientIndex\n fund.jointClientIndex = investmentModal.jointClientIndex\n })\n\n if (this.isEdit) {\n this.$set(this.kycForm.recommendations.rcmd, this.editingIndex, investmentModal)\n } else {\n this.kycForm.recommendations.rcmd.push(investmentModal)\n }\n\n this.$emit('save')\n this.isModalInsuranceVisible = false\n this.isModalInvestmentVisible = false\n\n this.resetProduct()\n }\n\n editUnCategorisedProduct (event) {\n const { product } = event\n this.isAddNewProduct = false\n this.isEdit = true\n this.newBasicProduct = cloneDeep(product)\n this.isModalVisible = true\n this.editingIndex = this.findIndexOfProduct(product)\n }\n\n findIndexOfProduct (product) {\n // to remove the proxy so that it can do comparison with the target product\n // this is because cannot compare the proxy to the object\n // and pick the very ori key only for comparison\n const flatRcmd = this.kycForm.recommendations.rcmd.map(prd => {\n return pick(prd, keys(new BasicProduct(this.riskRatingService)))\n })\n\n // only pick the key that contain in the new BasicProduct, so that it is not affected by the custom key: priorityName, ownerName\n const newProduct = pick(product, keys(new BasicProduct(this.riskRatingService)))\n\n return flatRcmd.findIndex(_product => isEqual(_product, newProduct))\n }\n\n editProduct (event) {\n const { product, type } = event\n this.editingIndex = this.findIndexOfProduct(product)\n\n this.newBasicProduct = cloneDeep(product)\n\n this.isEdit = true\n if (type === 'insurance') {\n this.isModalInsuranceVisible = true\n } else {\n this.isModalInvestmentVisible = true\n }\n }\n\n async deleteProduct (event) {\n const { product } = event\n const isConfirm = await this.uiService.confirm.show({\n type: 'warning',\n message: 'Are you sure you want to delete this product?'\n })\n\n if (isConfirm) {\n const productIndex = this.findIndexOfProduct(product)\n this.kycForm.recommendations.rcmd.splice(productIndex, 1)\n this.$emit('save')\n }\n }\n\n async created () {\n this.uiService = this.sharedVariable.uiService\n this.newBasicProduct = new BasicProduct(this.riskRatingService)\n await this.fetchCompanyDetails()\n await this.fetchRecommendedAllProducts()\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!./TheProductRecommendations.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!./TheProductRecommendations.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TheProductRecommendations.vue?vue&type=template&id=358955ff&scoped=true&\"\nimport script from \"./TheProductRecommendations.vue?vue&type=script&lang=ts&\"\nexport * from \"./TheProductRecommendations.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TheProductRecommendations.vue?vue&type=style&index=0&id=358955ff&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 \"358955ff\",\n null\n \n)\n\nexport default component.exports","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!./TheProductRecommendations.vue?vue&type=style&index=0&id=358955ff&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!./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&\"","export const convertToCurrencyFormat = (value, currency = '') => {\n if (!value && value !== 0) {\n return ''\n }\n\n return currency + Number(value).toLocaleString()\n}\n","'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":""}