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