{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wool-fe/src/views/widgets/podcastLandingListWidget/js/podcastLandingListWidget.js","webpack:///./listsFilter.js"],"names":["CLS","PodcastLandingListWidget","_createClass","element","_classCallCheck","this","$element","$","pageSize","listItems","find","concat","dataMatched","loadMoreButton","emptyResultText","currentLoad","filters","clearButton","itemClassName","handleListFilters","count_elements","length","text","change","html","current","on","hasClass","__webpack_require__","d","__webpack_exports__","self","isClear","showItems","matchedItems","not","last","nextAll","slice","removeClass","addClass","each","index","val","attr","filteredIndexes","dataStr","selectedValue","data","indexOf","push","filter","a","i","aa","lastIndexOf","matchedItemsCount"],"mappings":"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","file":"widget-13.430117f348aedc9992ce.js","sourcesContent":["const NS = 'PodcastLandingListWidget';\nconst CLS = 'podcastLandingListWidget';\n\nimport { handleListFilters } from '../../../../global/js/listsFilter';\n\nexport class PodcastLandingListWidget {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\tthis.pageSize = 5; // zero-indexed\n\t\tthis.listItems = this.$element.find(`.${CLS}-item`);\n\t\tthis.dataMatched = this.$element.find(`[data-matched=\"true\"]`);\n\t\tthis.loadMoreButton = this.$element.find(`.load-more`);\n\t\tthis.emptyResultText = this.$element.find(`.${CLS}-emptyResult`);\n\t\tthis.currentLoad = this.$element.find(`.currentLoad`);\n\t\t// handles two filter names only atm (dates/topics), might be improved to be dynamic if needed\n\t\tthis.filters = this.$element.find(`.${CLS}-filters select`);\n\t\tthis.clearButton = this.$element.find(`.${CLS}-btnClearWrap button`);\n\t\tthis.itemClassName = '.podcastLandingListItemWidget';\n\t\thandleListFilters(this);\n\n\t\tvar count_elements = $(`[data-matched=\"true\"]`).length;\n\t\t$(`.totalLoad`).text(count_elements);\n\n\t\tthis.filters.change(function(){\n\t\t\tvar count_elements = $(`[data-matched=\"true\"]`).length;\n\t\t\tif(count_elements < 6){\n\t\t\t\t$(`.currentLoadMsg`).html(\"\"+count_elements+\" out of \"+count_elements+\" are showing\");\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$(`.totalLoad`).text(count_elements);\n\t\t\t}\n\t\t});\n\n\t\tthis.currentLoad.text(6);\n\t\tvar current = 6;\n\t\tthis.loadMoreButton.on('click', function () {\n\t\t\tif(!$(`.podcastLandingListWidget-loadmore`).hasClass(\"d-none\")){\n\t\t\t\tcurrent += 6;\n\t\t\t\t$(`.currentLoad`).text(current);\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$(`.currentLoadMsg`).html(\"\"+count_elements+\" out of \"+count_elements+\" are showing\");\n\t\t\t}\n\t\t});\n\n\t\tthis.clearButton.on(\"click\",function(){\n\t\t\tvar count_elements = $(`[data-matched=\"true\"]`).length;\n\t\t\t$(`.currentLoad`).text(current);\n\t\t\t$(`.totalLoad`).text(count_elements);\n\n\t\t})\n\t\t\n\t}\n\n}\n","export const handleListFilters = (self) => {\n\tlet isClear;\n\n\tshowItems(self);\n\n\t// get clicks on the load more button\n\tself.loadMoreButton.on('click', () => {\n\t\t// get the last visible element in the matched set\n\t\tlet lastVisibleItem = self.matchedItems.not('.d-none').last();\n\t\t// show the next few items\n\t\tlastVisibleItem.nextAll('[data-matched=\"true\"]').slice(0, self.pageSize + 1).removeClass('d-none');\n\t\t// check if all matched items are shown and hide the load more button\n\t\tif(self.matchedItems.not(':visible').length === 0) {\n\t\t\tself.loadMoreButton.addClass('d-none');\n\t\t}\n\t});\n\n\t// get items on filters change\n\tself.filters.on('change', () => {\n\t\tif(!isClear) {\n\t\t\tshowItems(self);\n\t\t}\n\t});\n\n\t// get clicks on the clear button\n\tself.clearButton.on('click', () => {\n\t\tself.filters.each((index, element) => {\n\t\t\tisClear = true;\n\t\t\t$(element).val($(element).find('option:first').attr('value')).change();\n\t\t});\n\n\t\tisClear = false;\n\t\tshowItems(self);\n\t});\n};\n\nconst showItems = (self) => {\n\t// resets\n\tself.filteredIndexes = [];\n\tself.listItems.addClass('d-none');\n\tself.listItems.attr('data-matched', false);\n\tself.emptyResultText.addClass('d-none');\n\n\t// loop through filters\n\tself.filters.each((index, element) => {\n\t\tlet selectedValue = $(element).val();\n\t\tlet dataStr;\n\t\t($(element).attr('id') === 'datesFilter') ? dataStr = 'dates' : dataStr = 'topics';\n\t\tself.listItems.each((index, element) => {\n\t\t\tif($(element).find(self.itemClassName).data(dataStr).indexOf(selectedValue) > -1) {\n\t\t\t\tself.filteredIndexes.push(index);\n\t\t\t}\n\t\t});\n\t});\n\n\t// reduce the array to duplicate items only (items matched by both filters)\n\tself.filteredIndexes = self.filteredIndexes.filter((a, i, aa) => aa.indexOf(a) === i && aa.lastIndexOf(a) !== i);\n\n\t// use the filtered indexes to show / hide list items\n\tself.listItems.each((index, element) => {\n\t\tif(self.filteredIndexes.indexOf(index) > -1) {\n\t\t\t$(element).removeClass('d-none');\n\t\t\t$(element).attr('data-matched', true);\n\t\t}\n\t});\n\n\t// show only the first few\n\tself.matchedItems = self.$element.find('[data-matched=\"true\"]');\n\tself.matchedItemsCount = self.matchedItems.length;\n\n\tif(self.matchedItemsCount-1 > self.pageSize) {\n\t\tself.loadMoreButton.removeClass('d-none');\n\t\tself.matchedItems.each((index, element) => {\n\t\t\tif(index > self.pageSize) {\n\t\t\t\t$(element).addClass('d-none');\n\t\t\t}\n\t\t});\n\t}\n\telse {\n\t\tself.loadMoreButton.addClass('d-none');\n\t}\n\n\t// handle zero results (no matched filters)\n\tif(self.matchedItemsCount == 0) {\n\t\tself.emptyResultText.removeClass('d-none');\n\t}\n};\n"],"sourceRoot":""}