{"version":3,"file":"employees_dropdown_controller-DB_IViqb.js","sources":["../../../app/javascript/entrypoints/controllers/employees_dropdown_controller.js"],"sourcesContent":["import { Controller } from '@hotwired/stimulus';\nimport _ from 'lodash';\nimport Fuse from 'fuse.js';\n\nexport default class extends Controller {\n employees = [];\n\n static targets = ['input', 'options', 'item', 'checkmark'];\n\n static values = {\n list: Array,\n isMultiSelect: { type: Boolean, default: false },\n selectedIds: { type: Array, default: [] },\n selectedEmployees: { type: Array, default: [] },\n };\n\n connect() {\n this.element[\"employeesDropdown\"] = this;\n \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\n select(event) {\n [...this.checkmarkTargets].map((checkmark) => {\n checkmark.classList.add('hidden');\n });\n\n this.checkmarkTargets[event.params.index].classList.remove('hidden');\n }\n\n multiSelect(event) {\n this.setMultiSelectInputValue(event);\n\n [...this.checkmarkTargets].map((checkmark) => {\n if (!this.selectedEmployeesValue.includes(checkmark.parentElement.parentElement.getAttribute('data-employee-name'))) {\n checkmark.classList.add('hidden');\n } else {\n checkmark.classList.remove('hidden');\n }\n });\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.clearSearch();\n this.inputTarget.value = \"\";\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\") || event.relatedTarget.classList.contains(\"employee-toggle-button\"))\n ) {\n return;\n }\n\n this.optionsTarget.classList.add(\"hidden\");\n this.inputTarget.value = this.selectedEmployeesValue.join(', ');\n };\n\n clearSearch = () => {\n [...this.employees].map((employee) => {\n employee.classList.remove('hidden');\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 setInputValue(event) {\n this.inputTarget.value = this.employeeName(event);\n }\n\n setMultiSelectInputValue(event) {\n const employeeName = this.employeeName(event);\n const employeeId = parseInt(this.employeeId(event));\n\n if (this.selectedEmployeesValue.includes(employeeName)) {\n this.selectedEmployeesValue = _.without(this.selectedEmployeesValue, employeeName);\n this.selectedIdsValue = _.without(this.selectedIdsValue, employeeId);\n } else {\n this.selectedEmployeesValue = this.selectedEmployeesValue.concat(employeeName);\n this.selectedIdsValue = this.selectedIdsValue.concat(employeeId);\n }\n\n this.inputTarget.value = this.selectedEmployeesValue.join(', ');\n this.clearSearch();\n }\n\n employeeName = (event) => {\n return event.currentTarget.getAttribute('data-employee-name');\n }\n\n employeeId = (event) => {\n return event.currentTarget.getAttribute('data-id');\n }\n\n giveInputFocus() {\n this.inputTarget.scrollIntoView();\n this.inputTarget.focus();\n }\n}\n"],"names":["employees_dropdown_controller","Controller","__publicField","event","employee","resultArray","Fuse","r","employeeName","item","checkmark","employeeId","_"],"mappings":"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"}