{"version":3,"sources":["../../../js/src/dropdown.js"],"names":["$","dropdownInit","$wrapperDropdownPill","$wrapperDropdownSelect","$dropdownWithSearch","each","$selectedOptions","this","find","$menuList","$selectNameHidden","attr","$arrayListSelected","map","get","length","append","_iterator","_isArray","Array","isArray","_i","Symbol","iterator","_ref","next","done","value","item","$itemId","$pillList","removePill","bind","e","target","addEventListener","activateThisItem","$optionSelected","$itemVal","text","html","$dropdownPillItems","$dropdownSelectItems","click","$inputSearch","$dropdownMenu","closest","keyup","$arrayListOptions","not","$searchText","currentTarget","toLocaleLowerCase","includes","removeClass","addClass","$hiddenOpt","$notFound","$badge","$val","remove","$dropdownType","$this","event","hasClass","$wrapperDropdown","$pill","document","ready"],"mappings":"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","sourcesContent":["import $ from 'jquery'\n\n// Create js for init dropdown\nconst dropdownInit = () => {\n // find dropdown with pill class\n const $wrapperDropdownPill = $('.dropdown-with-pill');\n\n // find dropdown with select class\n const $wrapperDropdownSelect = $('.dropdown-with-select');\n\n // find dropdown with search class\n const $dropdownWithSearch = $('.dropdown-action--search');\n\n // Init first load. If $wrapperDropdownPill exist, display all selected option in pill\n $wrapperDropdownPill.each(function(){\n let $selectedOptions = $(this).find('.dropdown-selected-list');\n const $menuList = $(this).find('.dropdown-menu-list');\n const $selectNameHidden = $menuList.attr('data-select-name');\n const $arrayListSelected = $(this).find('.dropdown-menu .is-selected').map(function(){return $(this).attr(\"data-val\");}).get();\n if (!$selectedOptions.length) {\n $(this).append(``);\n $selectedOptions = $(this).find('.dropdown-selected-list');\n }\n\n // insert all selected options to pill\n for(let item of $arrayListSelected) {\n const $itemId = $(this).find(\".dropdown-item[data-val='\"+item+\"']\").attr('data-id');\n $selectedOptions.append(`${item} `);\n }\n\n // find all dropdown pill and set listener for delete\n const $pillList = $('.dropdown-with-pill .badge .ic');\n removePill($pillList);\n\n // listen to DomInserted in dropdown-menu-list\n $menuList.bind(\"DOMNodeInserted\",function(e){\n if (e.target !== $menuList[0]) {\n e.target.addEventListener('click', activateThisItem);\n }\n }); \n });\n\n // Init first load. If $wrapperDropdownSelect exist, display selected option & append input hidden\n $wrapperDropdownSelect.each(function(){\n const $menuList = $(this).find('.dropdown-menu-list');\n const $selectNameHidden = $menuList.attr('data-select-name');\n\n const $optionSelected = $(this).find('.dropdown-menu .is-selected');\n const $itemId = $optionSelected.attr('data-id');\n const $itemVal = $optionSelected.text();\n\n // display selected option & append input hidden\n if ($itemVal){\n $(this).find('.dropdown-toggle').html($itemVal);\n $(this).append(``);\n } else {\n $(this).append(``);\n }\n });\n\n // find all options\n const $dropdownPillItems = $('.dropdown-with-pill .dropdown-item');\n const $dropdownSelectItems = $('.dropdown-with-select .dropdown-item');\n\n // Add 'is-selected' in dropdown menu when option is selected\n $dropdownPillItems.click(activateThisItem);\n $dropdownSelectItems.click(activateThisItem);\n\n // Init search dropdown. If $dropdownWithSearch exist, listen when keydown\n $dropdownWithSearch.each(function(){\n const $inputSearch = $(this).find(\"input[type='text']\");\n const $dropdownMenu = $inputSearch.closest('.dropdown-menu');\n \n $inputSearch.keyup(function(e) {\n const $arrayListOptions = $dropdownMenu.find('.dropdown-menu-list .dropdown-item').not('.text-link');\n const $searchText = e.currentTarget.value.toLocaleLowerCase();\n $arrayListOptions.each(function() {\n if(!$(this).text().toLocaleLowerCase().includes($searchText)) {\n $(this).addClass('d-none');\n } else {\n $(this).removeClass('d-none');\n }\n });\n\n // find all option with hiden ('d-none') class\n const $hiddenOpt = $dropdownMenu.find('.dropdown-menu-list .dropdown-item.d-none').not('.text-link');\n const $notFound = $dropdownMenu.find('span.dropdown-not-found');\n if ($hiddenOpt.length === $arrayListOptions.length) {\n if ($notFound.length) {\n $notFound.removeClass('d-none');\n } else {\n $dropdownMenu.append(`No data found`);\n }\n } else {\n $notFound.addClass('d-none');\n }\n });\n });\n}\n\nconst removePill = (item) => {\n // remove pill and class is-selected in dropdown menu when button 'x' is clicked\n item.click(function(){\n const $badge = $(this).closest('.badge');\n const $val = $badge.attr('data-val');\n const $itemId = $badge.attr('data-id');\n $badge.closest('.dropdown-selected-list').find(\"input[value='\"+$itemId+\"']\").remove();\n $badge.closest('.dropdown-with-pill')\n .find(\".is-selected[data-val='\"+$val+\"']\")\n .removeClass('is-selected');\n $badge.remove();\n });\n}\n\nconst activateThisItem = () => {\n const $this = $(event.currentTarget);\n let $dropdownType;\n if ($this.closest('.dropdown').hasClass('dropdown-with-select')){\n $dropdownType = '.dropdown-with-select';\n } else if ($this.closest('.dropdown').hasClass('dropdown-with-pill')) {\n $dropdownType = '.dropdown-with-pill';\n }\n if (!$this.hasClass('dropdown-action')){\n const $wrapperDropdown = $this.closest($dropdownType);\n let $selectedOptions = $wrapperDropdown.find('.dropdown-selected-list');\n\n // remove selected class in all options\n if($dropdownType == '.dropdown-with-select'){\n $wrapperDropdown.find('.dropdown-item').removeClass('is-selected');\n }\n\n // add selected class\n $this.addClass('is-selected');\n const $itemId = $this.attr('data-id');\n const $selectNameHidden = $wrapperDropdown.find('.dropdown-menu-list').attr('data-select-name');\n\n if($dropdownType == '.dropdown-with-pill'){\n // adding pill\n const $val = $this.attr('data-val');\n $selectedOptions.append(`${$val} `);\n \n const $pill = $selectedOptions.find(`.badge[data-val='${$val}'] .ic`);\n removePill($pill);\n } else if($dropdownType == '.dropdown-with-select'){\n // adding selected value & input hidden\n $wrapperDropdown.find('.dropdown-toggle').addClass('selected').html($this.text());\n $selectedOptions.html(``);\n }\n };\n}\n\n$(document).ready(function () {\n dropdownInit();\n})\n\nexport default dropdownInit"]}