{"version":3,"file":"employees_controller-vXUWZwjQ.js","sources":["../../../app/javascript/entrypoints/controllers/employees_controller.js"],"sourcesContent":["import { Controller } from \"@hotwired/stimulus\";\nimport _ from \"lodash\";\nimport Fuse from \"fuse.js\";\n\nimport { post } from \"@rails/request.js\";\n\nexport default class extends Controller {\n employees = [];\n\n static targets = [\"input\", \"options\", \"item\"];\n\n static values = {\n list: Array,\n };\n\n connect() {\n this.employees = document.querySelectorAll(\"[data-employee-name]\");\n\n this.inputTarget.addEventListener(\"focus\", this.onFocus);\n this.inputTarget.addEventListener(\"blur\", this.onBlur);\n\n [...this.itemTargets].map((item) => {\n item.addEventListener(\"blur\", this.onBlur);\n });\n\n this.giveInputFocus();\n }\n\n disconnect() {\n this.inputTarget.removeEventListener(\"focus\", this.onFocus);\n this.inputTarget.removeEventListener(\"blur\", this.onBlur);\n\n [...this.itemTargets].map((item) => {\n item.removeEventListener(\"blur\", this.onBlur);\n });\n }\n\n onFocus = () => {\n this.optionsTarget.classList.remove(\"hidden\");\n };\n\n toggle = () => {\n this.optionsTarget.classList.toggle(\"hidden\");\n };\n\n onBlur = (event) => {\n if (\n event.relatedTarget &&\n (event.relatedTarget.classList.contains(\"employee-item\") ||\n event.relatedTarget.classList.contains(\"employee-toggle-button\"))\n ) {\n return;\n }\n\n this.optionsTarget.classList.add(\"hidden\");\n const postRow = this.inputTarget.closest(\".post-row\");\n\n if (postRow) {\n postRow.parentElement.remove();\n }\n };\n\n search = (event) => {\n if (event.target.value.length > 0) {\n const fuse = new Fuse(this.listValue, { threshold: 0.3 });\n const result = fuse.search(event.target.value);\n const resultArray = result.map((r) => {\n return r.item;\n });\n\n [...this.employees].map((employee) => {\n const employeeName = employee.getAttribute(\"data-employee-name\");\n if (resultArray.includes(employeeName)) {\n employee.classList.remove(\"hidden\");\n } else {\n employee.classList.add(\"hidden\");\n }\n });\n }\n\n if (event.target.value == \"\") {\n [...this.employees].map((employee) => {\n employee.classList.remove(\"hidden\");\n });\n }\n };\n\n add(event) {\n const dataset = event.currentTarget.dataset;\n post(`/employee_nodes/add`, {\n responseKind: \"turbo-stream\",\n body: {\n node: {\n nodeable_id: dataset.employeesNodeableIdParam,\n parent_id: dataset.employeesParentIdParam,\n nodeable_type: \"Employee\",\n },\n },\n });\n }\n\n giveInputFocus() {\n this.inputTarget.scrollIntoView();\n this.inputTarget.focus();\n }\n}\n"],"names":["employees_controller","Controller","__publicField","event","postRow","resultArray","Fuse","employee","employeeName","item","dataset","post"],"mappings":"8YAMe,MAAKA,UAASC,CAAW,CAAzB,kCACbC,EAAA,iBAAY,CAAA,GA8BZA,EAAA,eAAU,IAAM,CACd,KAAK,cAAc,UAAU,OAAO,QAAQ,CAChD,GAEEA,EAAA,cAAS,IAAM,CACb,KAAK,cAAc,UAAU,OAAO,QAAQ,CAChD,GAEEA,EAAA,cAAUC,GAAU,CAClB,GACEA,EAAM,gBACLA,EAAM,cAAc,UAAU,SAAS,eAAe,GACrDA,EAAM,cAAc,UAAU,SAAS,wBAAwB,GAEjE,OAGF,KAAK,cAAc,UAAU,IAAI,QAAQ,EACzC,MAAMC,EAAU,KAAK,YAAY,QAAQ,WAAW,EAEhDA,GACFA,EAAQ,cAAc,QAE5B,GAEEF,EAAA,cAAUC,GAAU,CAClB,GAAIA,EAAM,OAAO,MAAM,OAAS,EAAG,CAGjC,MAAME,EAFO,IAAIC,EAAK,KAAK,UAAW,CAAE,UAAW,EAAG,CAAE,EACpC,OAAOH,EAAM,OAAO,KAAK,EAClB,IAAK,GACvB,EAAE,IACV,EAED,CAAC,GAAG,KAAK,SAAS,EAAE,IAAKI,GAAa,CACpC,MAAMC,EAAeD,EAAS,aAAa,oBAAoB,EAC3DF,EAAY,SAASG,CAAY,EACnCD,EAAS,UAAU,OAAO,QAAQ,EAElCA,EAAS,UAAU,IAAI,QAAQ,CAEzC,CAAO,CACF,CAEGJ,EAAM,OAAO,OAAS,IACxB,CAAC,GAAG,KAAK,SAAS,EAAE,IAAKI,GAAa,CACpCA,EAAS,UAAU,OAAO,QAAQ,CAC1C,CAAO,CAEP,GAtEE,SAAU,CACR,KAAK,UAAY,SAAS,iBAAiB,sBAAsB,EAEjE,KAAK,YAAY,iBAAiB,QAAS,KAAK,OAAO,EACvD,KAAK,YAAY,iBAAiB,OAAQ,KAAK,MAAM,EAErD,CAAC,GAAG,KAAK,WAAW,EAAE,IAAKE,GAAS,CAClCA,EAAK,iBAAiB,OAAQ,KAAK,MAAM,CAC/C,CAAK,EAED,KAAK,eAAc,CACpB,CAED,YAAa,CACX,KAAK,YAAY,oBAAoB,QAAS,KAAK,OAAO,EAC1D,KAAK,YAAY,oBAAoB,OAAQ,KAAK,MAAM,EAExD,CAAC,GAAG,KAAK,WAAW,EAAE,IAAKA,GAAS,CAClCA,EAAK,oBAAoB,OAAQ,KAAK,MAAM,CAClD,CAAK,CACF,CAoDD,IAAIN,EAAO,CACT,MAAMO,EAAUP,EAAM,cAAc,QACpCQ,EAAK,sBAAuB,CAC1B,aAAc,eACd,KAAM,CACJ,KAAM,CACJ,YAAaD,EAAQ,yBACrB,UAAWA,EAAQ,uBACnB,cAAe,UAChB,CACF,CACP,CAAK,CACF,CAED,gBAAiB,CACf,KAAK,YAAY,iBACjB,KAAK,YAAY,OAClB,CACH,CAhGER,EAHkBF,EAGX,UAAU,CAAC,QAAS,UAAW,MAAM,GAE5CE,EALkBF,EAKX,SAAS,CACd,KAAM,KACV"}