{"version":3,"sources":["webpack:///../../../src/components/VExpansionPanel/VExpansionPanels.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelContent.ts","webpack:///../../../src/components/VForm/VForm.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/base/validations.ts","webpack:///./src/features/glossario/glossario-service.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelHeader.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanel.ts"],"names":["name","provide","expansionPanels","this","props","accordion","disabled","flat","hover","focusable","inset","popout","readonly","tile","Boolean","computed","classes","created","$attrs","hasOwnProperty","Array","value","length","methods","updateItem","getValue","item","nextValue","index","toggleMethod","baseMixins","isActive","expansionPanel","beforeDestroy","render","h","setBackgroundColor","staticClass","directives","showLazyContent","class","inheritAttrs","lazyValidation","data","inputs","watchers","errorBag","watch","handler","errors","Object","deep","immediate","watchInput","watcher","input","val","_uid","valid","shouldValidate","validate","filter","reset","resetErrorBag","setTimeout","resetValidation","register","unregister","found","find","i","unwatch","attrs","novalidate","attrs$","on","submit","e","$slots","autoGrow","noResize","rowHeight","type","Number","default","validator","v","isNaN","parseFloat","rows","parseInt","noResizeHandle","lazyValue","$nextTick","mounted","calculateInputHeight","$refs","height","minHeight","Math","genInput","onInput","onKeyDown","isFocused","getParam","params","req","isArray","undefined","Date","getTime","_","String","required","countDescription","count","maxLength","max","maxValue","minLength","min","minValue","decimalRegex","decimal","test","toString","GlossarioService","command","configure","getAxios","post","query","get","then","ripple","disableIconRotate","expandIcon","hideActions","hasMousedown","isDisabled","isReadonly","onClick","genIcon","icon","$createElement","tabindex","click","mousedown","mouseup","open","content","header","nextIsActive","groupClasses","registerContent","unregisterContent","registerHeader","vm","unregisterHeader","toggle","isBooted"],"mappings":"gLAce,qBAAqB,CAClCA,KADkC,qBAGlCC,QAHkC,WAIhC,MAAO,CACLC,gBAAiBC,OAIrBC,MAAO,CACLC,UADK,QAELC,SAFK,QAGLC,KAHK,QAILC,MAJK,QAKLC,UALK,QAMLC,MANK,QAOLC,OAPK,QAQLC,SARK,QASLC,KAAMC,SAGRC,SAAU,CACRC,QADQ,WAEN,wCACK,qCADE,OAAP,IAEE,sBAFK,EAGL,gCAAiCb,KAH5B,UAIL,2BAA4BA,KAJvB,KAKL,4BAA6BA,KALxB,MAML,gCAAiCA,KAN5B,UAOL,4BAA6BA,KAPxB,MAQL,6BAA8BA,KARzB,OASL,2BAA4BA,KAAKU,SAKvCI,QArCkC,WAuC5Bd,KAAKe,OAAOC,eAAhB,WACE,eAAS,SAAU,WAAnB,MAKAC,MAAA,QAAcjB,KAAd,QACAA,KAAKkB,MAAMC,OADX,GADF,mBAGSnB,KAAKkB,MAAZ,IAEA,eAAS,+BAAgC,kBAAzC,OAIJE,QAAS,CACPC,WADO,SACG,KACR,IAAMH,EAAQlB,KAAKsB,SAASC,EAA5B,GACMC,EAAYxB,KAAKsB,SAASC,EAAME,EAAtC,GAEAF,EAAA,SAAgBvB,KAAK0B,aAArB,GACAH,EAAA,aAAoBvB,KAAK0B,aAAzB,Q,oFCvEN,4EAcMC,EAAa,eAAO,EAAD,YAGvB,eAAiB,6CAHnB,sBAWe,OAAAA,EAAA,gBAAoC,CACjD9B,KADiD,4BAGjDe,SAAU,CACRgB,SADQ,WAEN,OAAO5B,KAAK6B,eAAZ,WAIJf,QATiD,WAU/Cd,KAAA,+BAAAA,OAGF8B,cAbiD,WAc/C9B,KAAA,oCAGF+B,OAjBiD,SAiB3C,GACJ,OAAOC,EAAE,EAAD,KAAoB,CAC1BA,EAAE,MAAOhC,KAAKiC,mBAAmBjC,KAAxB,MAAoC,CAC3CkC,YAD2C,4BAE3CC,WAAY,CAAC,CACXtC,KADW,OAEXqB,MAAOlB,KAAK4B,aAEZ5B,KAAKoC,gBAAgB,CACvBJ,EAAE,MAAO,CAAEK,MAAO,mCAAqC,eAR3D,gB,sJCzBW,sBAAO,EAAD,KAEnB,eAAmB,SAFN,OAIN,CACPxC,KADO,SAGPyC,cAHO,EAKPrC,MAAO,CACLsC,eADK,QAELrB,MAAOP,SAGT6B,KAAM,iBAAO,CACXC,OADW,GAEXC,SAFW,GAGXC,SAAU,KAGZC,MAAO,CACLD,SAAU,CACRE,QADQ,SACD,GACL,IAAMC,EAASC,OAAA,oBAAf,GAEA/C,KAAA,mBAEFgD,MANQ,EAORC,WAAW,IAIf7B,QAAS,CACP8B,WADO,SACG,GAAY,WACdC,EAAW,SAAAC,GACf,OAAOA,EAAA,mBAA0B,SAAAC,GAC/B,OAAU,EAAV,SAAyBD,EAAzB,UACC,CAAEH,WAAW,KAGZP,EAAqB,CACzBY,KAAMF,EADmB,KAEzBG,MAAO,aACPC,eAAgB,cAiBlB,OAdIxD,KAAJ,eAEE0C,EAAA,eAA0BU,EAAA,yBAAgC,SAAAC,GACxD,IAGI,0BAA6BD,EAAjC,QAEAV,EAAA,MAAiBS,EAAjB,QAGFT,EAAA,MAAiBS,EAAjB,GAGF,GAGFM,SA/BO,WAgCL,WAAOzD,KAAKyC,OAAOiB,QAAO,SAAAN,GAAK,OAAKA,EAAA,UAA7B,cAGTO,MAnCO,WAoCL3D,KAAA,gBAAoB,SAAAoD,GAAK,OAAIA,EAA7B,WACApD,KAAA,iBAEF4D,cAvCO,WAuCM,WACP5D,KAAJ,gBAEE6D,YAAW,WACT,gBADF,IAMJC,gBAhDO,WAiDL9D,KAAA,gBAAoB,SAAAoD,GAAK,OAAIA,EAA7B,qBACApD,KAAA,iBAEF+D,SApDO,SAoDC,GACN/D,KAAA,eACAA,KAAA,cAAmBA,KAAKkD,WAAxB,KAEFc,WAxDO,SAwDG,GACR,IAAMC,EAAQjE,KAAKyC,OAAOyB,MAAK,SAAAC,GAAC,OAAIA,EAAA,OAAWf,EAA/C,QAEA,MAEA,IAAMgB,EAAUpE,KAAK0C,SAASwB,MAAK,SAAAC,GAAC,OAAIA,EAAA,OAAWF,EAAnD,QACA,IACEG,EAAA,QACAA,EAAA,kBAGFpE,KAAA,SAAgBA,KAAK0C,SAASgB,QAAO,SAAAS,GAAC,OAAIA,EAAA,OAAWF,EAArD,QACAjE,KAAA,OAAcA,KAAKyC,OAAOiB,QAAO,SAAAS,GAAC,OAAIA,EAAA,OAAWF,EAAjD,QACAjE,KAAA,QAAaA,KAAb,SAA4BiE,EAA5B,SAIJlC,OArGO,SAqGD,GAAG,WACP,OAAOC,EAAE,OAAQ,CACfE,YADe,SAEfmC,MAAO,gBACLC,YADK,GAEFtE,KAAKuE,QAEVC,GAAI,CACFC,OAAS,SAAAC,GAAD,OAAc,uBAEvB1E,KAAK2E,OATR,a,gGC5GEhD,EAAa,eAAnB,QAOe,OAAAA,EAAA,OAAkB,CAC/B9B,KAD+B,aAG/BI,MAAO,CACL2E,SADK,QAELC,SAFK,QAGLC,UAAW,CACTC,KAAM,CAACC,OADE,QAETC,QAFS,GAGTC,UAAY,SAAAC,GAAD,OAAaC,MAAMC,WAAD,MAE/BC,KAAM,CACJP,KAAM,CAACC,OADH,QAEJC,QAFI,EAGJC,UAAY,SAAAC,GAAD,OAAaC,MAAMG,SAASJ,EAAV,QAIjCvE,SAAU,CACRC,QADQ,WAEN,uBACE,cADK,EAEL,wBAAyBb,KAFpB,SAGL,wBAAyBA,KAHpB,gBAIF,6CAGPwF,eATQ,WAUN,OAAOxF,KAAK6E,UAAY7E,KAAxB,WAIJ4C,MAAO,CACL6C,UADK,WAEHzF,KAAA,UAAiBA,KAAK0F,UAAU1F,KAAhC,uBAEF8E,UAJK,WAKH9E,KAAA,UAAiBA,KAAK0F,UAAU1F,KAAhC,wBAIJ2F,QAzC+B,WAyCxB,WACL9B,YAAW,WACT,YAAiB,EAAjB,yBADF,IAKFzC,QAAS,CACPwE,qBADO,WAEL,IAAMxC,EAAQpD,KAAK6F,MAAnB,MACA,MAEAzC,EAAA,iBACA,IAAM0C,EAAS1C,EAAf,aACM2C,EAAYR,SAASvF,KAAD,KAAR,IAA0BqF,WAAWrF,KANrC,WASlBoD,EAAA,aAAqB4C,KAAA,SAArB,OAEFC,SAZO,WAaL,IAAM7C,EAAQ,qCAAd,MAMA,OAJAA,EAAA,sBACOA,EAAA,WAAP,KACAA,EAAA,gBAA0BpD,KAA1B,KAEA,GAEFkG,QArBO,SAqBA,GACL,4CACAlG,KAAA,UAAiBA,KAAjB,wBAEFmG,UAzBO,SAyBE,GAIHnG,KAAKoG,WAAT,KAAsB1B,EAAA,SACpBA,EAAA,kBAGF1E,KAAA,wB,0PCjGN,SAASqG,EAAYC,GACjB,MAAsB,oBAAXA,EACCA,IAELA,EAOX,IAAMC,EAAM,SAACrF,GACT,GAAID,MAAMuF,QAAQtF,GAAQ,QAASA,EAAMC,OACzC,QAAcsF,IAAVvF,GAAiC,OAAVA,EACvB,OAAO,EAGX,IAAc,IAAVA,EACA,OAAO,EAGX,GAAIA,aAAiBwF,KAEjB,OAAQtB,MAAMlE,EAAMyF,WAGxB,GAAqB,WAAjB,eAAOzF,GAAoB,CAC3B,IAAK,IAAI0F,KAAK1F,EAAO,OAAO,EAC5B,OAAO,EAGX,QAAS2F,OAAO3F,GAAOC,QAOrB,SAAU2F,EAAS5F,GACrB,OAAKqF,EAAIrF,IACE,uBA+Bf,SAAS6F,EAAiBC,GACtB,OAAgB,GAATA,EAAa,aAAb,UAA+BA,EAA/B,eAOL,SAAUC,EAAUC,GACtB,OAAO,SAAChG,GACJ,IAAKqF,EAAIrF,GACL,OAAO,EAEX,IAAIiG,EAAWd,EAASa,GAExB,MAAqB,kBAAVhG,GAAsBA,EAAMC,OAASgG,GACrC,qBAAP,OAA4BJ,EAAiBI,GAA7C,4BAA0EJ,EAAiB7F,EAAMC,UAUvG,SAAUiG,EAAUC,GACtB,OAAO,SAACnG,GACJ,IAAKqF,EAAIrF,GACL,OAAO,EAEX,IAAIoG,EAAWjB,EAASgB,GAExB,QAAKd,EAAIrF,IAA2B,kBAAVA,GAAsBA,EAAMC,OAASmG,IACpD,qBAAP,OAA4BP,EAAiBO,GAA7C,uCAAqFP,EAAiB7F,EAAMC,QAA5G,MAqEN,SAAUmG,EAASD,GACrB,OAAO,SAACnG,GACJ,IAAKqF,EAAIrF,GACL,OAAO,EAEX,IAAIoG,EAAWjB,EAASgB,GAExB,OAAKnG,GAASoG,GACH,6BAAP,OAAoCA,EAApC,MAwBZ,IAAMC,EAAe,oBAMf,SAAUC,EAAQtG,GACpB,SAAIqF,EAAIrF,IAAWqG,EAAaE,KAAKvG,EAAMwG,cAChC,6B,kGC3NTC,E,8JACF,WAAsBC,GAAtB,iGACU,OAAmBC,YAD7B,gCAGW,OAAmBC,WAAWC,KAAK,kCAAmCH,IAHjF,2C,gJAMA,WAAsBI,GAAtB,iGACU,OAAmBH,YAD7B,gCAGW,OAAmBC,WAAWG,IAAI,kCAAmC,CAAE3B,OAAQ0B,IAASE,MAAK,SAAAxD,GAAC,OAAIA,EAAElC,SAH/G,2C,2IAMA,WAAiBoF,GAAjB,iGACU,OAAmBC,YAD7B,gCAGW,OAAmBC,WAAWC,KAAK,wBAAyBH,IAHvE,2C,2IAMA,WAAiBI,GAAjB,iGACU,OAAmBH,YAD7B,gCAGW,OAAmBC,WAAWG,IAAI,wBAAyB,CAAE3B,OAAQ0B,IAASE,MAAK,SAAAxD,GAAC,OAAIA,EAAElC,SAHrG,2C,iEAOW,WAAImF,G,sICVbhG,EAAa,eAAO,EAAD,KAEvB,eAAiB,4CAFnB,sBAUe,OAAAA,EAAA,gBAAoC,CACjD9B,KADiD,2BAGjDsC,WAAY,CAAEgG,OAAA,QAEdlI,MAAO,CACLmI,kBADK,QAELC,WAAY,CACVtD,KADU,OAEVE,QAAS,WAEXqD,YANK,QAOLH,OAAQ,CACNpD,KAAM,CAACpE,QADD,QAENsE,SAAS,IAIbzC,KAAM,iBAAO,CACX+F,cAAc,IAGhB3H,SAAU,CACRC,QADQ,WAEN,MAAO,CACL,mCAAoCb,KAD/B,SAEL,sCAAuCA,KAAKuI,eAGhD3G,SAPQ,WAQN,OAAO5B,KAAK6B,eAAZ,UAEF2G,WAVQ,WAWN,OAAOxI,KAAK6B,eAAZ,YAEF4G,WAbQ,WAcN,OAAOzI,KAAK6B,eAAZ,aAIJf,QAxCiD,WAyC/Cd,KAAA,8BAAAA,OAGF8B,cA5CiD,WA6C/C9B,KAAA,mCAGFoB,QAAS,CACPsH,QADO,SACA,GACL1I,KAAA,kBAEF2I,QAJO,WAKL,IAAMC,EAAO,eAAQ5I,KAAR,YACX,CAACA,KAAK6I,eAAe,EAApB,KAA2B7I,KAD9B,aAGA,OAAOA,KAAK6I,eAAe,EAApB,KAAqC,CAC1C7I,KAAK6I,eAAe,MAAO,CACzB3G,YADyB,iCAEzBG,MAAO,CACL,iDAAkDrC,KAAKoI,mBAEzDjG,WAAY,CAAC,CACXtC,KADW,OAEXqB,OAAQlB,KAAKwI,cARnB,OAeJzG,OAvEiD,SAuE3C,GAAG,WACP,OAAOC,EAAE,SAAUhC,KAAKiC,mBAAmBjC,KAAxB,MAAoC,CACrDkC,YADqD,2BAErDG,MAAOrC,KAF8C,QAGrDqE,MAAO,CACLyE,SAAU9I,KAAKwI,YAAL,EADL,KAELzD,KAAM,UAER5C,WAAY,CAAC,CACXtC,KADW,SAEXqB,MAAOlB,KAAKmI,SAEd3D,GAAI,iCACCxE,KADD,YAAF,IAEA+I,MAAO/I,KAFL,QAGFgJ,UAAW,kBAAO,gBAHhB,GAIFC,QAAS,kBAAO,gBAAoB,OAEpC,CACF,eAAQjJ,KAAM,UAAW,CAAEkJ,KAAMlJ,KAAK4B,WADpC,GAEF5B,KAAKsI,aAAetI,KAnBtB,gB,kGClFW,sBACb,eAAgB,sCADG,sBAEnB,eAAmB,kBAAkB,IAFxB,OAIN,CACPH,KADO,oBAGPI,MAAO,CACLE,SADK,QAELM,SAAUE,SAGZ6B,KARO,WASL,MAAO,CACL2G,QADK,KAELC,OAFK,KAGLC,cAAc,IAIlBzI,SAAU,CACRC,QADQ,WAEN,uBACE,4BAA6Bb,KADxB,SAEL,iCAAkCA,KAF7B,aAGL,8BAA+BA,KAH1B,YAIFA,KAAKsJ,eAGZd,WATQ,WAUN,OAAOxI,KAAKD,gBAAgBI,UAAYH,KAAxC,UAEFyI,WAZQ,WAaN,OAAOzI,KAAKD,gBAAgBU,UAAYT,KAAxC,WAIJoB,QAAS,CACPmI,gBADO,SACQ,GACbvJ,KAAA,WAEFwJ,kBAJO,WAKLxJ,KAAA,cAEFyJ,eAPO,SAOO,GACZzJ,KAAA,SACA0J,EAAA,YAAgB1J,KAAhB,UAEF2J,iBAXO,WAYL3J,KAAA,aAEF0I,QAdO,SAcA,GACDhE,EAAJ,QAAc1E,KAAKoJ,OAAL,WAEdpJ,KAAA,iBAEAA,KAAA,YAAmBA,KAAnB,YAAsCA,KAAtC,UAEF4J,OArBO,WAqBD,WAEA5J,KAAJ,UAAkBA,KAAKmJ,QAAQU,UAAW,GAC1C7J,KAAA,WAAe,kBAAM,QAArB,eAIJ+B,OA7DO,SA6DD,GACJ,OAAOC,EAAE,MAAO,CACdE,YADc,oBAEdG,MAAOrC,KAFO,QAGdqE,MAAO,CACL,gBAAiBwC,OAAO7G,KAAD,YAExB,eANH","file":"js/chunk-0da59852.fd5fae4f.js","sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { BaseItemGroup, GroupableInstance } from '../VItemGroup/VItemGroup'\nimport VExpansionPanel from './VExpansionPanel'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\ninterface VExpansionPanelInstance extends InstanceType {}\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-expansion-panels',\n\n provide (): object {\n return {\n expansionPanels: this,\n }\n },\n\n props: {\n accordion: Boolean,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n readonly: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-expansion-panels': true,\n 'v-expansion-panels--accordion': this.accordion,\n 'v-expansion-panels--flat': this.flat,\n 'v-expansion-panels--hover': this.hover,\n 'v-expansion-panels--focusable': this.focusable,\n 'v-expansion-panels--inset': this.inset,\n 'v-expansion-panels--popout': this.popout,\n 'v-expansion-panels--tile': this.tile,\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('expand')) {\n breaking('expand', 'multiple', this)\n }\n\n /* istanbul ignore next */\n if (\n Array.isArray(this.value) &&\n this.value.length > 0 &&\n typeof this.value[0] === 'boolean'\n ) {\n breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this)\n }\n },\n\n methods: {\n updateItem (item: GroupableInstance & VExpansionPanelInstance, index: number) {\n const value = this.getValue(item, index)\n const nextValue = this.getValue(item, index + 1)\n\n item.isActive = this.toggleMethod(value)\n item.nextIsActive = this.toggleMethod(nextValue)\n },\n },\n})\n","// Components\nimport VExpansionPanel from './VExpansionPanel'\nimport { VExpandTransition } from '../transitions'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n expansionPanel: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-content',\n\n computed: {\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n },\n\n created () {\n this.expansionPanel.registerContent(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterContent()\n },\n\n render (h): VNode {\n return h(VExpandTransition, [\n h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-content',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }), this.showLazyContent([\n h('div', { class: 'v-expansion-panel-content__wrap' }, getSlot(this)),\n ])),\n ])\n },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n inheritAttrs: false,\n\n props: {\n lazyValidation: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","type DynamicParam = () => T;\n\ntype Param = T | DynamicParam;\n\n/**\n * Retorna o valor de um parâmetro. Se o parâmetro for uma função, então ela é executada e seu resultado é retornado.\n * @param params\n */\nfunction getParam(params: Param): T {\n if (typeof params === 'function')\n return (params as any)();\n\n return params;\n}\n\n/**\n * Retorna true se o valor de um campo for considerado como preenchido.\n * @param value\n */\nconst req = (value: any) => {\n if (Array.isArray(value)) return !!value.length\n if (value === undefined || value === null) {\n return false\n }\n\n if (value === false) {\n return true\n }\n\n if (value instanceof Date) {\n // invalid date won't pass\n return !isNaN(value.getTime())\n }\n\n if (typeof value === 'object') {\n for (let _ in value) return true\n return false\n }\n\n return !!String(value).length\n}\n\n/**\n * Obriga o preenchimento do campo.\n * @param value\n */\nexport function required(value: any) {\n if (!req(value))\n return 'Preencha este campo.';\n\n return false;\n}\n\n/**\n * Obriga o preenchimento do campo somente se condition for válida.\n * @param condition Condição em que o campo deve ser preenchido.\n */\nexport function requiredIf(condition: Param) {\n return (value: any) => {\n if (getParam(condition))\n return required(value);\n\n return false;\n }\n}\n\n/**\n * Obriga o preenchimento do campo a não ser que a condição seja válida.\n * @param condition\n */\nexport function requiredUnless(condition: Param) {\n return (value: any) => {\n if (!getParam(condition))\n return required(value);\n\n return false;\n }\n}\n\nfunction countDescription(count: number) {\n return count == 1 ? '1 caracter' : `${count} caracteres`;\n}\n\n/**\n * Obriga um tamanho máximo de texto.\n * @param max Quantidade máxima de caracteres. Pode ser passada uma função para que a quantidade seja dinâmica.\n */\nexport function maxLength(max: Param) {\n return (value: string) => {\n if (!req(value))\n return false;\n\n let maxValue = getParam(max);\n\n if (typeof value === 'string' && value.length > maxValue)\n return `Tamanho máximo de ${countDescription(maxValue)}, você preencheu ${countDescription(value.length)}`;\n\n return false;\n };\n}\n\n/**\n * Obriga um tamanho mínimo de texto.\n * @param min Quantidade mínima de caracteres. Pode ser passada uma função para que a configuração seja dinâmica.\n */\nexport function minLength(min: Param) {\n return (value: string) => {\n if (!req(value))\n return false;\n\n let minValue = getParam(min);\n\n if (!req(value) || typeof value === 'string' && value.length < minValue)\n return `Tamanho mínimo de ${countDescription(minValue)} caracteres, você preencheu ${countDescription(value.length)}.`;\n\n return false;\n };\n}\n\nconst alphaRegex = /^[a-zA-Z]*$/;\n\n/**\n * Obriga somente letras (sem espaço e acentuação).\n * @param value\n */\nexport function alpha(value: string) {\n if (req(value) && !alphaRegex.test(value))\n return 'Informe somente letras.';\n\n return false;\n}\n\nconst alphaNumRegex = /^[a-zA-Z0-9]*$/;\n\n/**\n * Obriga somente letras e números (sem espaço e acentuação).\n * @param value\n */\nexport function alphaNum(value: string) {\n if (req(value) && !alphaNumRegex.test(value))\n return 'Informe somente letras ou números.';\n\n return false;\n}\n\nconst emailRegex = /(^$|^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$)/\n\n/**\n * Obriga que o texto esteja em formato de email.\n * @param value\n */\nexport function email(value: string) {\n if (req(value) && !emailRegex.test(value))\n return 'E-mail inválido.';\n\n return false;\n}\n\n/**\n * Obriga que o valor esteja entre os parâmetros passados.\n * @param min Valor mínimo (>=). Pode ser passada uma função para que a configuração seja dinâmica.\n * @param max Valor máximo (<=). Pode ser passada uma função para que a configuração seja dinâmica.\n */\nexport function between(min: Param, max: Param) {\n return (value: string) => {\n if (!req(value))\n return false;\n\n let minValue = getParam(min);\n let maxValue = getParam(max);\n\n if (+value < +minValue || +value > +maxValue)\n return `Deve estar entre ${minValue} e ${maxValue}.`;\n\n return false;\n };\n}\n\n/**\n * Obriga que o valor seja maior ou igual ao parâmetro.\n * @param min Valor mínimo. Pode ser passada uma função para que a configuração seja dinâmica.\n */\nexport function minValue(min: Param) {\n return (value: string) => {\n if (!req(value))\n return false;\n\n let minValue = getParam(min);\n\n if (+value < +minValue)\n return `Deve ser maior ou igual a ${minValue}.`;\n\n return false;\n };\n}\n\n/**\n * Obriga que o valor seja menor ou igual ao parâmetro.\n * @param max Valor máximo. Pode ser passada uma função para que a configuração seja dinâmica.\n */\nexport function maxValue(max: Param) {\n return (value: string) => {\n if (!req(value))\n return false;\n\n let maxValue = getParam(max);\n\n if (+value > +maxValue)\n return `Deve ser menor ou igual a ${maxValue}.`;\n\n return false;\n };\n}\n\nconst decimalRegex = /^[-]?\\d*(\\.\\d+)?$/;\n\n/**\n * Obriga um decimal válido (formato en-US).\n * @param value\n */\nexport function decimal(value: any) {\n if (req(value) && !decimalRegex.test(value.toString() as any))\n return 'Número decimal inválido.';\n\n return false;\n}\n\nconst decimalPtBrRegex = /^[-]?\\d*(\\,\\d+)?$/;\n\n/**\n * Obriga um decimal válido (formato pt-BR).\n * @param value\n */\nexport function decimalPtBr(value: any) {\n if (req(value) && !decimalPtBrRegex.test(value.toString() as any))\n return 'Número decimal inválido.';\n\n return false;\n}\n\nconst integerRegex = /(^[0-9]*$)|(^-[0-9]+$)/;\n\n/**\n * Obriga um número inteiro (incluindo número negativo)\n * @param value\n */\nexport function integer(value: number) {\n if (req(value) && !integerRegex.test(value as any))\n return 'Número inteiro inválido.';\n\n return false;\n}\n\nconst numericRegex = /^[0-9]*$/;\n\n/**\n * Obriga um número inteiro positivo.\n * @param value\n */\nexport function numeric(value: number) {\n if (req(value) && !numericRegex.test(value as any))\n return 'Número inválido.';\n\n return false;\n}\n\n/**\n * Obriga que o valor esteja de acordo com a expressão regurar\n * @param regex\n */\nexport function match(regex: Param) {\n return (value: string) => {\n let regexValue = getParam(regex);\n\n if (req(value) && !regexValue.test(value as any))\n return 'Formato inválido.';\n\n return false;\n };\n}","import Api from '../../base/api.typings';\nimport axiosConfiguration from '../../base/axios-configuration';\n\nclass GlossarioService {\n async salvarCategoria(command: Api.App.Server.Glossario.CategoriaSalvar.Command): Promise {\n await axiosConfiguration.configure();\n\n return axiosConfiguration.getAxios().post('/api/glossario/categoria/salvar', command);\n }\n\n async listarCategoria(query: Api.App.Server.Glossario.CategoriaListar.Query): Promise {\n await axiosConfiguration.configure();\n\n return axiosConfiguration.getAxios().get('/api/glossario/categoria/listar', { params: query }).then(e => e.data);\n }\n\n async salvarItem(command: Api.App.Server.Glossario.CategoriaSalvar.Command): Promise {\n await axiosConfiguration.configure();\n\n return axiosConfiguration.getAxios().post('/api/glossario/salvar', command);\n }\n\n async listarItem(query: Api.App.Server.Glossario.ItemListar.Query): Promise {\n await axiosConfiguration.configure();\n\n return axiosConfiguration.getAxios().get('/api/glossario/listar', { params: query }).then(e => e.data);\n }\n}\n\nexport default new GlossarioService();","// Components\nimport { VFadeTransition } from '../transitions'\nimport VExpansionPanel from './VExpansionPanel'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n expansionPanel: InstanceType\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-header',\n\n directives: { ripple },\n\n props: {\n disableIconRotate: Boolean,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n data: () => ({\n hasMousedown: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel-header--active': this.isActive,\n 'v-expansion-panel-header--mousedown': this.hasMousedown,\n }\n },\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n isDisabled (): boolean {\n return this.expansionPanel.isDisabled\n },\n isReadonly (): boolean {\n return this.expansionPanel.isReadonly\n },\n },\n\n created () {\n this.expansionPanel.registerHeader(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterHeader()\n },\n\n methods: {\n onClick (e: MouseEvent) {\n this.$emit('click', e)\n },\n genIcon () {\n const icon = getSlot(this, 'actions') ||\n [this.$createElement(VIcon, this.expandIcon)]\n\n return this.$createElement(VFadeTransition, [\n this.$createElement('div', {\n staticClass: 'v-expansion-panel-header__icon',\n class: {\n 'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate,\n },\n directives: [{\n name: 'show',\n value: !this.isDisabled,\n }],\n }, icon),\n ])\n },\n },\n\n render (h): VNode {\n return h('button', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-header',\n class: this.classes,\n attrs: {\n tabindex: this.isDisabled ? -1 : null,\n type: 'button',\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.$listeners,\n click: this.onClick,\n mousedown: () => (this.hasMousedown = true),\n mouseup: () => (this.hasMousedown = false),\n },\n }), [\n getSlot(this, 'default', { open: this.isActive }, true),\n this.hideActions || this.genIcon(),\n ])\n },\n})\n","// Components\nimport VExpansionPanels from './VExpansionPanels'\nimport VExpansionPanelHeader from './VExpansionPanelHeader'\nimport VExpansionPanelContent from './VExpansionPanelContent'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VExpansionPanelHeaderInstance = InstanceType\ntype VExpansionPanelContentInstance = InstanceType\n\nexport default mixins(\n GroupableFactory<'expansionPanels', typeof VExpansionPanels>('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'),\n RegistrableProvide('expansionPanel', true)\n /* @vue/component */\n).extend({\n name: 'v-expansion-panel',\n\n props: {\n disabled: Boolean,\n readonly: Boolean,\n },\n\n data () {\n return {\n content: null as VExpansionPanelContentInstance | null,\n header: null as VExpansionPanelHeaderInstance | null,\n nextIsActive: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel--active': this.isActive,\n 'v-expansion-panel--next-active': this.nextIsActive,\n 'v-expansion-panel--disabled': this.isDisabled,\n ...this.groupClasses,\n }\n },\n isDisabled (): boolean {\n return this.expansionPanels.disabled || this.disabled\n },\n isReadonly (): boolean {\n return this.expansionPanels.readonly || this.readonly\n },\n },\n\n methods: {\n registerContent (vm: VExpansionPanelContentInstance) {\n this.content = vm\n },\n unregisterContent () {\n this.content = null\n },\n registerHeader (vm: VExpansionPanelHeaderInstance) {\n this.header = vm\n vm.$on('click', this.onClick)\n },\n unregisterHeader () {\n this.header = null\n },\n onClick (e: MouseEvent) {\n if (e.detail) this.header!.$el.blur()\n\n this.$emit('click', e)\n\n this.isReadonly || this.isDisabled || this.toggle()\n },\n toggle () {\n /* istanbul ignore else */\n if (this.content) this.content.isBooted = true\n this.$nextTick(() => this.$emit('change'))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-expansion-panel',\n class: this.classes,\n attrs: {\n 'aria-expanded': String(this.isActive),\n },\n }, getSlot(this))\n },\n})\n"],"sourceRoot":""}