{"version":3,"sources":["Areas/Products/Views/Search/search.js"],"names":["FD","Page","$overlay","$","updateFilterHeader","total","find","length","toggleClass","text","concat","setupAutocomplete","$search","$input","$results","$items","$blank","_FD$Utility$getContro","Utility","getControlValuesByContainer","Division","CustomSegment","prevQuery","val","updateResults","query","results","html","map","_ref","index","url","param","backUrl","join","getResultMarkup","fetchResults","debounceAjax","fdAjax","method","autoComplete","Search","callback","response","data","update","e","key","setTimeout","preventDefault","on","clearTimeout","activeTimeout","child","init","clearAllFilters","closest","each","$this","this","addClass","prop","clearFilters","_","element","toggleFilter","isSelected","$group","applyFilters","submit","openProjectModal","xhr","stopLadda","call","Modal","openModal","onCreate","$modal","$newProject","value","saveToProject","target","saveToProjectAction","params","serialize","contentTypeHelper","result","modal","productId","$actions","$newLink","projectUrl","replace","innerHTML","tooltip","valid","name","addProjectAction","append","Object","assign"],"mappings":"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","file":"search.min.js","sourcesContent":["FD.Page = function() {\r\n 'use strict';\r\n\r\n const $overlay = $('[data-fd-toggle-target=\"product-filters\"]');\r\n \r\n function updateFilterHeader() {\r\n const total = $overlay.find('.filter.is-selected').length;\r\n $overlay.find('.product-filters-header')\r\n .toggleClass('visibility-hidden', total === 0)\r\n .find('.label-static').text(`Filters (${total})`);\r\n }\r\n\r\n function setupAutocomplete() {\r\n const $search = $('[data-search-container]'); \r\n const $input = $search.find('input');\r\n const $results = $search.find('[data-search-results]');\r\n const $items = $search.find('[data-search-items]');\r\n const $blank = $search.find('[data-search-blank-state]');\r\n const { Division, CustomSegment } = FD.Utility.getControlValuesByContainer(\"#SEARCH\");\r\n let prevQuery = $input.val();\r\n let activeTimeout;\r\n const getResultMarkup = function (query, results) {\r\n if (!query) return '';\r\n return results.map(({ url, text, param }, index) =>\r\n `
  • ${text}
  • `\r\n ).join('');\r\n }\r\n const updateResults = function (query, results) {\r\n $results.toggleClass('is-loading', false);\r\n $blank.toggleClass('d-none', results.length > 0);\r\n $items.toggleClass('d-none', results.length === 0);\r\n $items.html(getResultMarkup(query, results));\r\n }\r\n\r\n const fetchResults = FD.Utility.debounceAjax(() => {\r\n const query = $input.val();\r\n if (prevQuery === query) return;\r\n prevQuery = query;\r\n\r\n if (!query) {\r\n updateResults(query, []);\r\n return;\r\n }\r\n return $.fdAjax({\r\n method: \"GET\",\r\n url: `${FD.Page.autoComplete}?${$.param({ Division,CustomSegment, Search: query})}`,\r\n callback: (response) => {\r\n updateResults(query, response.data.results);\r\n }\r\n });\r\n }, 250);\r\n\r\n function update(e) {\r\n if (e?.key === 'Enter') {\r\n e.preventDefault();\r\n return;\r\n }\r\n $results.toggleClass('is-loading', true);\r\n setTimeout(() => {\r\n fetchResults();\r\n });\r\n }\r\n $input.on('keydown', update);\r\n\r\n $input.on('change', update);\r\n\r\n $input.on('focus', () => {\r\n clearTimeout(activeTimeout);\r\n $results.toggleClass('active', true);\r\n });\r\n\r\n $input.on('blur', () => {\r\n //activeTimeout = setTimeout(() => {\r\n // $results.toggleClass('active', false);\r\n //},250)\r\n });\r\n\r\n update();\r\n }\r\n\r\n const child = {\r\n init: function() {\r\n updateFilterHeader();\r\n setupAutocomplete();\r\n },\r\n clearAllFilters: function() {\r\n $('[data-fd-toggle-target=\"product-filters\"] .filter.is-selected')\r\n .closest('.filter-group')\r\n .each(function() {\r\n const $this = $(this);\r\n\r\n $this.find('.clear').addClass('hidden'); \r\n $this.find('.filter').toggleClass('is-selected', false)\r\n .find('input').prop('disabled', true);\r\n });\r\n \r\n updateFilterHeader();\r\n },\r\n clearFilters: function(_,e) {\r\n e.preventDefault();\r\n this.element.addClass('hidden')\r\n .closest('.filter-group')\r\n .find('.filter').toggleClass('is-selected', false)\r\n .find('input').prop('disabled', true);\r\n \r\n updateFilterHeader();\r\n },\r\n toggleFilter: function () {\r\n const $input = $(\"input\", this.element);\r\n const isSelected = $input.prop(\"disabled\"); // flip selection\r\n $input.prop(\"disabled\", !isSelected);\r\n this.element.toggleClass(\"is-selected\", isSelected);\r\n const $group = this.element.closest('.filter-group');\r\n $group.find('.clear').toggleClass('hidden', ! $group.find('.is-selected').length );\r\n updateFilterHeader();\r\n },\r\n applyFilters: function () {\r\n $('input[name$=PageNumber]').val(1);\r\n this.element.closest('form').submit();\r\n },\r\n openProjectModal: function (xhr) {\r\n FD.Utility.stopLadda.call(this);\r\n FD.Modal.openModal(xhr, {\r\n onCreate: function($modal) { \r\n var $newProject = $modal.find('#newProject');\r\n $modal.find('#project').on('change', function() {\r\n $newProject.toggleClass(\"d-none\", this.value > 0);\r\n });\r\n }\r\n });\r\n },\r\n saveToProject: function (data, e) {\r\n e.preventDefault();\r\n var element = e.target;\r\n const submit = () => {\r\n $.fdAjax({\r\n url: FD.Page.saveToProjectAction,\r\n params: $(element).serialize(),\r\n contentTypeHelper: 'form',\r\n callback: (result) => {\r\n $('#FD_MODAL').modal('hide');\r\n const productId = $('#AddToProject_Customization_ProductId').val();\r\n const $actions = $(`[data-product-itemid=${productId}] .product-grid-item-actions`);\r\n \r\n const $newLink = $(``)\r\n .html($actions.find('a')[0].innerHTML)\r\n .tooltip();\r\n $actions.html($newLink);\r\n }\r\n });\r\n }\r\n \r\n if ($(\"#project\").val() == \"0\") {\r\n if ($(element).valid()) {\r\n const name = $('#newProject_Name').val();\r\n\r\n $.fdAjax({\r\n url: FD.Page.addProjectAction,\r\n params: $(element).serialize(),\r\n contentTypeHelper: \"form\",\r\n callback: (result) => {\r\n $(\"#project\").append($(``));\r\n $(\"#project\").val(result.data);\r\n submit();\r\n }\r\n });\r\n }\r\n } else {\r\n submit();\r\n }\r\n },\r\n\r\n };\r\n\r\n return Object.assign({}, FD.Page, child);\r\n}();"]}