{"version":3,"sources":["webpack:///./assets/javascripts/modules/components/SelectComponent.js"],"names":["SelectComponent","elem","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","setError","bind","resetState","Component","select","label","error","edited","input","$component","querySelector","SELECTORS","_this2","dom","readDOM","addEventListener","classList","toggle","CSS","value","length","add","document","e","dataset","id","detail","required","setLabel","bindEvents","msg","undefined","innerText","remove","innerHTML"],"mappings":"wWAEqBA,cAoBnB,SAAAA,EAAYC,gGAAMC,CAAAC,KAAAH,GAAA,IAAAI,mKAAAC,CAAAF,MAAAH,EAAAM,WAAAC,OAAAC,eAAAR,IAAAS,KAAAN,KACVF,IADU,OAEhBG,EAAKM,SAAWN,EAAKM,SAASC,KAAdP,GAChBA,EAAKQ,WAAaR,EAAKQ,WAAWD,KAAhBP,GAHFA,qUApByBS,iDAEzC,MAAO,oDAIP,OACEC,OAAQ,SACRC,MAAO,eACPC,MAAO,4CAKT,OACEC,OAAQ,WACRD,MAAO,oDAWT,OACEE,MAAOf,KAAKgB,WAAWC,cAAcjB,KAAKkB,UAAUP,QACpDC,MAAOZ,KAAKgB,WAAWC,cAAcjB,KAAKkB,UAAUN,OACpDC,MAAOb,KAAKgB,WAAWC,cAAcjB,KAAKkB,UAAUL,6CAI3C,IAAAM,EAAAnB,KACXA,KAAKoB,IAAMpB,KAAKqB,UAChBrB,KAAKoB,IAAIL,MAAMO,iBAAiB,SAAU,WACxCH,EAAKH,WAAWO,UAAUC,OAAOL,EAAKM,IAAIX,OAAQK,EAAKC,IAAIL,MAAMW,MAAMC,UAEzE3B,KAAKoB,IAAIL,MAAMO,iBAAiB,QAAS,WACvCH,EAAKH,WAAWO,UAAUK,IAAIT,EAAKM,IAAIX,UAEzCd,KAAKoB,IAAIL,MAAMO,iBAAiB,OAAQ,WACtCH,EAAKH,WAAWO,UAAUC,OAAOL,EAAKM,IAAIX,OAAQK,EAAKC,IAAIL,MAAMW,MAAMC,UAEzEE,SAASP,iBAAiB,cAAe,SAACQ,GACrCX,EAAKH,WAAWe,QAAQC,IAAMF,EAAEG,OAAOD,KACxCF,EAAEG,OAAOC,SAAWf,EAAKgB,SAASL,EAAEG,OAAOrB,MAAM,KAAOO,EAAKgB,SAASL,EAAEG,OAAOrB,2CAMnFZ,KAAKoB,IAAMpB,KAAKqB,UACZrB,KAAKoB,IAAIL,MAAMW,MAAMC,QACvB3B,KAAKgB,WAAWO,UAAUK,IAAI5B,KAAKyB,IAAIX,QAEzCd,KAAKoC,8CAKEC,GACPrC,KAAKoB,IAAMpB,KAAKqB,eACJiB,IAARD,IACFrC,KAAKoB,IAAIP,MAAM0B,UAAYF,GAE7BrC,KAAKgB,WAAWO,UAAUK,IAAI5B,KAAKyB,IAAIZ,4CAIvCb,KAAKoB,IAAMpB,KAAKqB,UAChBrB,KAAKoB,IAAIP,MAAM0B,UAAY,GAC3BvC,KAAKgB,WAAWO,UAAUiB,OAAOxC,KAAKyB,IAAIZ,wCAQnCD,GACPZ,KAAKoB,IAAMpB,KAAKqB,UAChBT,EAAQZ,KAAKoB,IAAIL,MAAMmB,SAAWtB,GAAO,IAAMA,EAC/CZ,KAAKoB,IAAIR,MAAM6B,UAAY7B,gCAN3B,OADAZ,KAAKoB,IAAMpB,KAAKqB,UACTrB,KAAKoB,IAAIL,MAAMW,eA9EL7B","file":"component-SelectComponent.chunks.js","sourcesContent":["import Component from '../abstracts/Component';\n\nexport default class SelectComponent extends Component {\n get COMPONENTNAME() {\n return 'SelectComponent';\n }\n\n get SELECTORS() {\n return {\n select: 'select',\n label: '[data-label]',\n error: '[data-error]'\n }\n }\n\n get CSS() {\n return {\n edited: '--edited',\n error: '--error'\n }\n }\n\n constructor(elem) {\n super(elem);\n this.setError = this.setError.bind(this);\n this.resetState = this.resetState.bind(this);\n }\n\n readDOM() {\n return {\n input: this.$component.querySelector(this.SELECTORS.select),\n label: this.$component.querySelector(this.SELECTORS.label),\n error: this.$component.querySelector(this.SELECTORS.error)\n }\n }\n\n bindEvents() {\n this.dom = this.readDOM();\n this.dom.input.addEventListener('change', () => {\n this.$component.classList.toggle(this.CSS.edited, this.dom.input.value.length);\n });\n this.dom.input.addEventListener('focus', () => {\n this.$component.classList.add(this.CSS.edited);\n });\n this.dom.input.addEventListener('blur', () => {\n this.$component.classList.toggle(this.CSS.edited, this.dom.input.value.length);\n });\n document.addEventListener('changeLabel', (e) => {\n if(this.$component.dataset.id == e.detail.id) {\n e.detail.required ? this.setLabel(e.detail.label+\"*\") : this.setLabel(e.detail.label);\n }\n });\n }\n\n render() {\n this.dom = this.readDOM();\n if (this.dom.input.value.length) {\n this.$component.classList.add(this.CSS.edited);\n }\n this.bindEvents();\n\n }\n\n // EXTERNAL API\n setError(msg) {\n this.dom = this.readDOM();\n if (msg !== undefined) {\n this.dom.error.innerText = msg;\n }\n this.$component.classList.add(this.CSS.error);\n }\n\n resetState() {\n this.dom = this.readDOM();\n this.dom.error.innerText = '';\n this.$component.classList.remove(this.CSS.error);\n }\n\n get value() {\n this.dom = this.readDOM();\n return this.dom.input.value;\n }\n\n setLabel(label) {\n this.dom = this.readDOM();\n label = this.dom.input.required ? label+=\"*\" : label;\n this.dom.label.innerHTML = label;\n }\n}\n"],"sourceRoot":""}