{"version":3,"file":"extranet.min.js","sources":["../../../../Frontend/src/js/page-files/extranet.js"],"sourcesContent":["const FeatureSniffer = new function featureSniffer() {\r\n this.IsIE11 = function isIE11() {\r\n return !!window.MSInputMethodContext && !!document.documentMode;\r\n };\r\n this.ISEdge = function isEdge(){\r\n let userAgent = navigator.userAgent;\r\n // Detect Chromium-based Edge\r\n return (/Edg/.test(userAgent));\r\n };\r\n this.IsIOS = function isIOS() {\r\n const ua = navigator.userAgent;\r\n if (/iPad|iPhone|iPod/.test(ua) ||\r\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n this.SupportsCustomScrollbars = function supportsCustomScrollbars() {\r\n // Tested Element\r\n let test = document.createElement('div'),\r\n\r\n // Fake body\r\n fake = false,\r\n root = document.body || (function () {\r\n fake = true;\r\n return document.documentElement.appendChild(document.createElement('body'));\r\n }());\r\n\r\n // Force scrollbar\r\n test.id = '__sb';\r\n test.style.overflow = 'scroll';\r\n test.style.width = '40px';\r\n\r\n // Apply scrollbar style for all vendors\r\n test.innerHTML = '­';\r\n\r\n root.appendChild(test);\r\n\r\n // If css scrollbar is supported, than the scrollWidth should not be impacted\r\n const ret = test.scrollWidth == 40;\r\n\r\n // Cleaning\r\n document.body.removeChild(test);\r\n if (fake) {\r\n document.documentElement.removeChild(root);\r\n }\r\n return ret;\r\n };\r\n this.SupportsTouch = function supportsTouch() {\r\n return ((('ontouchstart' in window) ||\r\n (navigator.maxTouchPoints > 0) ||\r\n (navigator.msMaxTouchPoints > 0)));\r\n };\r\n};\r\n\r\nString.prototype.format = function () {\r\n let str = this;\r\n const args = Array.prototype.slice.call(arguments);\r\n if (args.length == 1) {\r\n if (!$.isArray(args[0])) {\r\n str = str.replace('{0}', args[0]);\r\n } else {\r\n for (var i = 0; i < args[0].length; i++) {\r\n str = str.replace(`{${i}}`, args[0][i]);\r\n }\r\n }\r\n } else if (args.length > 1) {\r\n for (i = 0; i < args.length; i++) {\r\n str = str.replace(`{${i}}`, args[i]);\r\n }\r\n }\r\n return str;\r\n};\r\n\r\nconst Extranet = {\r\n Current: {\r\n Culture: $('html').attr('lang'),\r\n IsIE11: FeatureSniffer.IsIE11(),\r\n SupportsTouch: FeatureSniffer.SupportsTouch(),\r\n SupportsCustomScrollbars: FeatureSniffer.SupportsCustomScrollbars(),\r\n IsIOS: FeatureSniffer.IsIOS()\r\n },\r\n ResolveUrl: function resolveUrl(url) {\r\n const basePath = $('body').attr('data-baseurl') || '';\r\n if (url.indexOf(basePath) == -1) {\r\n url = basePath + url;\r\n }\r\n return url;\r\n },\r\n ResolveWebApiControllerUrl: function resolveWebApiControllerUrl(relativeUrl) {\r\n if (typeof (relativeUrl) == 'undefined' || relativeUrl == null) {\r\n relativeUrl = '';\r\n }\r\n const basePath = $('body').attr('data-baseurl') || '';\r\n if (relativeUrl[0] == '/') {\r\n relativeUrl = relativeUrl.substring(1);\r\n }\r\n return `${basePath}/extranet/api/${relativeUrl}`;\r\n },\r\n NewGuid: function newGuid() {\r\n let d = new Date().getTime();\r\n if (window.performance && typeof window.performance.now === 'function') {\r\n d += performance.now(); //use high-precision timer if available\r\n }\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n },\r\n EntityActions: {},\r\n Init (settings) {\r\n //Misc init stuff\r\n const $html = $('html');\r\n\r\n if (Extranet.Current.SupportsTouch) {\r\n $html.addClass('touch');\r\n } else {\r\n $html.addClass('no-touch');\r\n }\r\n\r\n if (!Extranet.Current.SupportsCustomScrollbars) {\r\n $html.addClass('no-custom-scrollbars');\r\n }\r\n\r\n if (Extranet.Current.IsIOS) {\r\n $html.addClass('ios');\r\n }\r\n\r\n if (Extranet.Current.IsIE11) {\r\n $html.addClass('ie11');\r\n }\r\n\r\n $.ajaxSetup({\r\n statusCode: {\r\n 401 (err) {\r\n Extranet.Dialogs.HideAll();\r\n Extranet.Dialogs.Alert(null, ResourceManager.Get('AjaxLoggedOutError'), function() {\r\n location.reload(true);\r\n });\r\n }\r\n }\r\n });\r\n\r\n new Extranet.WindowScrollHandler({});\r\n\r\n //Misc on page ready stuff\r\n $(function () {\r\n const $body = $('body');\r\n const navigation = document.querySelector('.navigation');\r\n\r\n // Set standby class\r\n setTimeout(() => {\r\n document.body.classList.remove('standby');\r\n }, 0);\r\n\r\n // Navigation toggle\r\n if (navigation) {\r\n const navigationToggles = document.querySelectorAll('[data-action~=\"navigation-toggle\"]');\r\n const burgerNavigationMedia = window.matchMedia('(max-width: 1023px)');\r\n\r\n navigationToggles.forEach(navigationToggle => {\r\n navigationToggle.addEventListener('click', () => {\r\n if (navigation.classList.contains('navigation--open')) {\r\n navigation.classList.remove('navigation--open');\r\n\r\n if (burgerNavigationMedia.matches) {\r\n document.body.classList.remove('no-scroll');\r\n }\r\n } else {\r\n navigation.classList.add('navigation--open');\r\n\r\n if (burgerNavigationMedia.matches) {\r\n document.body.classList.add('no-scroll');\r\n }\r\n }\r\n });\r\n });\r\n\r\n function handleBodyScrollOnResize () {\r\n setTimeout(() => {\r\n if (navigation.classList.contains('navigation--open') && burgerNavigationMedia.matches) {\r\n document.body.classList.add('no-scroll');\r\n } else {\r\n document.body.classList.remove('no-scroll');\r\n }\r\n }, 100);\r\n }\r\n\r\n window.addEventListener('resize', handleBodyScrollOnResize);\r\n window.addEventListener('orientationchange', handleBodyScrollOnResize);\r\n }\r\n\r\n\r\n // Log out triggers\r\n const logoutTriggers = document.querySelectorAll('[data-action~=\"log-out\"]');\r\n logoutTriggers.forEach(logOutTrigger => {\r\n logOutTrigger.addEventListener('click', logoutClickHandler);\r\n });\r\n\r\n function logoutClickHandler(e) {\r\n $body.addClass('busy');\r\n $.ajax({\r\n url: '/extranet/api/applicationuser/logout',\r\n type: 'post',\r\n success (data) {\r\n location.replace('/');\r\n },\r\n error (response) {\r\n Extranet.Dialogs.Alert(null, ResourceManager.Get('GenericAjaxError'));\r\n $body.removeClass('busy');\r\n }\r\n });\r\n return false;\r\n };\r\n\r\n // Log out triggers\r\n const helpDialogToggles = document.querySelectorAll('[data-action~=\"help-dialog-toggle\"]');\r\n helpDialogToggles.forEach(helpDialogToggle => {\r\n helpDialogToggle.addEventListener('click', helpDialogClickHandler);\r\n });\r\n\r\n function helpDialogClickHandler(e) {\r\n const markup = [];\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{1}

');\r\n markup.push('

');\r\n markup.push(' {3}');\r\n markup.push('

');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push(' {4}');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n\r\n const dialogText = ResourceHelper.Get('HelpDialog.Text').split(/\\r?\\n/);\r\n const dialog = markup.join('').format(\r\n ResourceHelper.Get('HelpDialog.Header'),\r\n dialogText.join('
'),\r\n settings.supportEmail,\r\n settings.supportEmail,\r\n ResourceHelper.Get('HelpDialog.ButtonText'));\r\n Extranet.Dialogs.Show(dialog);\r\n return false;\r\n }\r\n\r\n Extranet.Current.ServiceItemSearchFormHandler = new Extranet.ServiceItemSearchFormHandler({});\r\n\r\n });\r\n\r\n\r\n }\r\n};\r\n\r\nExtranet.Stickyfier = new function stickyfier() {\r\n\r\n let _timerId;\r\n const _$win = $(window);\r\n let _maxWidth;\r\n let _maxHeight;\r\n let _widthElementSelector;\r\n let _stickyElementSelector;\r\n let _stickyLeft;\r\n\r\n function init(maxWidth, maxHeight, widthElementSelector, stickyElementSelector, stickyLeft) {\r\n\r\n _maxWidth = maxWidth;\r\n _maxHeight = maxHeight;\r\n _widthElementSelector = widthElementSelector;\r\n _stickyElementSelector = stickyElementSelector;\r\n _stickyLeft = stickyLeft || '1rem';\r\n\r\n _$win.on('resize', resizeHandler);\r\n\r\n toggleStickyness();\r\n };\r\n\r\n function isActiveViewport() {\r\n return _$win.width() < _maxWidth || _$win.height() < _maxHeight;\r\n };\r\n\r\n function applyStickyness() {\r\n const $widthElm = $(_widthElementSelector);\r\n const width = $widthElm.innerWidth();\r\n const elementSelectors = _stickyElementSelector.split(',');\r\n for (let i = 0; i < elementSelectors.length; i++) {\r\n const $this = $(elementSelectors[i]);\r\n $this.parent().css('width', '{0}px'.format(width));\r\n $this.css({\r\n position: 'sticky',\r\n left: _stickyLeft\r\n });\r\n }\r\n };\r\n\r\n function removeStickyness() {\r\n $(_stickyElementSelector).each(function() {\r\n const $this = $(this);\r\n $this.css({\r\n position: 'static',\r\n left: 'auto'\r\n });\r\n $this.parent().css('width','auto');\r\n });\r\n };\r\n\r\n function toggleStickyness() {\r\n if (isActiveViewport())\r\n {\r\n applyStickyness();\r\n }\r\n else\r\n {\r\n removeStickyness();\r\n }\r\n };\r\n\r\n function resizeHandler(e) {\r\n clearTimeout(_timerId);\r\n _timerId = setTimeout(toggleStickyness, 50);\r\n };\r\n\r\n this.Init = init;\r\n};\r\n\r\nExtranet.ServiceItemSearchFormHandler = function serviceItemSearchFormHandler(settings) {\r\n\r\n let _$searchForm;\r\n let _$results;\r\n let _timerId;\r\n\r\n const _searchingClass = 'searching';\r\n const _showResultsClass = 'show-results';\r\n\r\n function init() {\r\n _$searchForm = $('#search-form');\r\n _$searchForm.on('submit', formSubmitHandler);\r\n const $inp = _$searchForm.find('input[type=\"search\"]');\r\n $inp.on('focus', inputFocusHandler)\r\n .on('input', inputSearchHandler)\r\n .on('click', inputClickHandler);\r\n\r\n _$results = _$searchForm.find('.search-form__results');\r\n _$results.on('click', 'table tbody tr', searchResultClickHandler);\r\n _$results.on('click', resultsClickHandler);\r\n $('body').on('click', bodyClickHandler);\r\n };\r\n\r\n\r\n\r\n function showSearchResults() {\r\n _$searchForm.addClass(_showResultsClass).removeAttr('data-summary');\r\n }\r\n\r\n function showSearchResultsAndUpdate(search) {\r\n showSearchResults();\r\n updateSearchResults(search);\r\n };\r\n\r\n function hideSearchResults() {\r\n clearTimeout(_timerId);\r\n _timerId = setTimeout(function () {\r\n _$searchForm.removeClass(_showResultsClass);\r\n }, 100);\r\n };\r\n\r\n function updateSearchResults(search) {\r\n setTimeout(function () {\r\n _$searchForm.addClass(_searchingClass);\r\n }, 0);\r\n const $inp = _$searchForm.find('input[type=\"search\"]');\r\n\r\n $.ajax({\r\n url: Extranet.ResolveWebApiControllerUrl('serviceitem/rendersearchresults'),\r\n type: 'get',\r\n cache: false,\r\n data: {\r\n search,\r\n culture: Extranet.Current.Culture\r\n },\r\n success (markup) {\r\n _$results.html(markup);\r\n _$searchForm.removeClass(_searchingClass);\r\n },\r\n error (response) {\r\n Extranet.Dialogs.Alert(null, ResourceHelper.Get('ServiceItemSearch.ErrorMessage'));\r\n _$searchForm.removeClass(_searchingClass);\r\n }\r\n });\r\n };\r\n\r\n function updateSearchResultCount(count) {\r\n if (count) {\r\n const existingVal = _$searchForm.attr('data-summary');\r\n if (!existingVal) {\r\n _$searchForm.attr('data-summary', ResourceHelper.Get('ServiceItemSearch.SearchResultSummary').format(count));\r\n }\r\n }\r\n };\r\n\r\n function formSubmitHandler(e) {\r\n hideSearchResults();\r\n };\r\n\r\n function inputSearchHandler(e) {\r\n clearTimeout(_timerId);\r\n const $this = $(this);\r\n const search = $this.val();\r\n const $body = $('body');\r\n let triggerSearch = true;\r\n\r\n //If this is the service item index\r\n if ($body.hasClass('serviceitem index')) {\r\n //If search is cleared: Don't trigger regular search but reload page instead\r\n if (!search || search === '') {\r\n hideSearchResults();\r\n triggerSearch = false;\r\n location.replace(location.pathname);\r\n }\r\n }\r\n\r\n if (triggerSearch) {\r\n _timerId = setTimeout(function () {\r\n showSearchResultsAndUpdate(search);\r\n }, 300);\r\n }\r\n };\r\n\r\n function inputFocusHandler(e) {\r\n clearTimeout(_timerId);\r\n _$searchForm.removeAttr('data-summary');\r\n const search = $(this).val();\r\n if (search && search.length > 0) {\r\n _timerId = setTimeout(function () {\r\n showSearchResultsAndUpdate(search);\r\n }, 200);\r\n } else {\r\n hideSearchResults();\r\n }\r\n\r\n };\r\n\r\n function searchResultClickHandler(e) {\r\n clearTimeout(_timerId);\r\n const $this = $(this);\r\n const url = $this.attr('data-url');\r\n if (url) {\r\n location.href = url;\r\n }\r\n e.stopPropagation();\r\n return false;\r\n };\r\n\r\n function inputClickHandler(e) {\r\n e.stopPropagation();\r\n };\r\n\r\n function bodyClickHandler(e) {\r\n hideSearchResults();\r\n };\r\n\r\n function resultsClickHandler(e) {\r\n e.stopPropagation();\r\n };\r\n\r\n this.UpdateSearchResultCount = updateSearchResultCount;\r\n\r\n init();\r\n};\r\n\r\nExtranet.IndexFilterHandler = function (settings) {\r\n let _$wrapper;\r\n const _$win = $(window);\r\n const _$body = $('body');\r\n const _winWidth = _$win.width();\r\n const _mobileThreshholdWidth = 930;\r\n\r\n const _isMobileBreakpoint = _winWidth <= _mobileThreshholdWidth;\r\n\r\n function init() {\r\n _$wrapper = $(settings.wrapper);\r\n\r\n _$wrapper.on('click', '#filter-btn', showFilterClickHandler);\r\n\r\n\r\n };\r\n\r\n function applyFilterCalendars() {\r\n const $aside = $('#aside-filter');\r\n const $dateFilters = $aside.find('.filter__wrapper[data-type=\"DateIntervalFilterGroupModel\"] input[type=\"text\"]');\r\n\r\n $dateFilters.each(function () {\r\n //Variables\r\n const $this = $(this);\r\n const $parent = $this.parent();\r\n const id = $this.attr('id');\r\n const $calContainer = $this.parents('.filter__box__controls:first').find('.filter__input__calendar-container:first');\r\n let initialDate = $this.val();\r\n if (!initialDate || initialDate === '') {\r\n initialDate = $this.attr('placeholder');\r\n }\r\n const minDate = $this.attr('data-low');\r\n const maxDate = $this.attr('data-high');\r\n\r\n //Initialize pickmeup\r\n const options = {\r\n hide_on_select: false,\r\n default_date: false,\r\n date: initialDate,\r\n flat: true,\r\n min: minDate,\r\n max: maxDate\r\n };\r\n const pmuInstance = pickmeup($parent.get(0), options);\r\n\r\n //Move pickmeup inside filter container\r\n const $pickmeup = $parent.find('.pickmeup:first');\r\n $pickmeup.attr('for', id).addClass('pmu-hidden');\r\n $calContainer.append($pickmeup);\r\n\r\n //Handle events\r\n $parent.on('pickmeup-change', function (e) {\r\n const $container = $(e.target);\r\n const pickerInstance = pickmeup($container.get(0));\r\n const serverDate = pickerInstance.get_date('Y-m-d');\r\n const formattedDate = pickerInstance.get_date(true);\r\n\r\n const $server = $container.find('input[type=\"hidden\"]');\r\n const $formatted = $container.find('input[type=\"text\"]');\r\n $server.val(serverDate);\r\n $formatted.val(formattedDate);\r\n\r\n pickerInstance.hide();\r\n $server.trigger('change');\r\n $formatted.trigger('blur');\r\n });\r\n\r\n //Handle show/hide\r\n $this.on('focus', function (e) {\r\n const $this = $(this);\r\n const id = $this.attr('id');\r\n const $controls = $this.parents('.filter__box__controls:first');\r\n $controls.find('.pickmeup').addClass('pmu-hidden');\r\n $controls.find('.pickmeup[for=\"{0}\"]:first'.format(id)).removeClass('pmu-hidden');\r\n $controls.get(0).scrollIntoView({\r\n inline: 'end',\r\n behavior: 'smooth'\r\n });\r\n }).on('blur', function (e) {\r\n const $this = $(this);\r\n const inputName = $this.attr('name');\r\n const $inputSlot = $this.parents('.filter__interval--slot:first');\r\n const inputVal = $this.val();\r\n\r\n\r\n if (inputVal && inputVal !== '') {\r\n pmuInstance.set_date(inputVal);\r\n\r\n const inputDate = pmuInstance.get_date(false);\r\n const formattedInputDate = pmuInstance.get_date('d-m-Y');\r\n\r\n if (formattedInputDate !== inputVal) {\r\n $this.val(formattedInputDate);\r\n }\r\n else {\r\n if (inputName.endsWith('min_picker')) {\r\n const $maxInput = $inputSlot.next('.filter__interval--slot').find('input[type=\"text\"]:first');\r\n const maxPickerInstance = pickmeup($maxInput.parent().get(0));\r\n const maxDate = maxPickerInstance.get_date(false);\r\n if (inputDate.getTime() > maxDate.getTime()) {\r\n pmuInstance.set_date(maxDate);\r\n $this.val(pmuInstance.get_date('d-m-Y'));\r\n }\r\n } else if (inputName.endsWith('max_picker')) {\r\n const $minInput = $inputSlot.prev('.filter__interval--slot').find('input[type=\"text\"]:first');\r\n const minPickerInstance = pickmeup($minInput.parent().get(0));\r\n const minDate = minPickerInstance.get_date(false);\r\n if (inputDate.getTime() < minDate.getTime()) {\r\n pmuInstance.set_date(minDate);\r\n $this.val(pmuInstance.get_date('d-m-Y'));\r\n }\r\n }\r\n }\r\n\r\n $parent.find('input[type=\"hidden\"]').val(pmuInstance.get_date('Y-m-d'));\r\n } else {\r\n pmuInstance.clear();\r\n }\r\n\r\n setTimeout(function () {\r\n const id = $this.attr('id');\r\n $this.parents('.filter__box__controls:first').find('.pickmeup[for=\"{0}\"]:first'.format(id))\r\n .addClass('pmu-hidden');\r\n }, 200);\r\n });\r\n });\r\n };\r\n\r\n function updateFilterAside() {\r\n const $filter = _$wrapper.find('#filter-container');\r\n const $aside = _$body.find('#aside-filter');\r\n\r\n if ($aside.length == 1) {\r\n $aside.html($filter.html());\r\n $filter.html('');\r\n\r\n $aside.find('a.cancel').on('click', hideFilterClickHandler);\r\n $aside.find('.aside-tab__footer button:first').on('click', resetFilterClickHandler);\r\n $aside.find('#filter-close').on('click', hideFilterClickHandler);\r\n $aside.find('form:first').on('submit', filterFormSubmitHandler);\r\n $aside.find('.filter__box .filter__button--reset').on('click', resetFilterGroupClickHandler);\r\n $aside.find('.filter__button--save').on('click', filterGroupSaveClickHandler);\r\n $aside.find('.filter__box input[type=\"number\"]').on('blur', filterNumberInputChangeHandler);\r\n $aside.find('.filter__label').on('click', filterLabelClickHandler);\r\n\r\n applyFilterCalendars();\r\n }\r\n };\r\n\r\n\r\n\r\n function showFilterAside() {\r\n hideFilterAside();\r\n const $aside = $('
');\r\n _$body.append($aside).addClass('aside--show');\r\n _$body.find('#aside-overlay').on('click', hideFilterClickHandler);\r\n updateFilterAside();\r\n };\r\n\r\n function hideFilterAside() {\r\n const $filter = _$wrapper.find('#filter-container');\r\n const $aside = _$body.find('#aside-filter');\r\n if ($aside.length == 1) {\r\n closeOpenFilterGroups();\r\n $filter.html($aside.html());\r\n $aside.remove();\r\n _$body.find('#aside-overlay').remove();\r\n _$body.removeClass('aside--show');\r\n }\r\n };\r\n\r\n function closeOpenFilterGroups() {\r\n const $aside = $('#aside-filter');\r\n $aside.find('.filter__group.filter--open').each(function () {\r\n closeFilterGroup($(this));\r\n });\r\n };\r\n\r\n function closeFilterGroup($group) {\r\n $group.removeClass('.filter--open');\r\n };\r\n\r\n function resetFilterGroup($group) {\r\n $group.find('input').val('')\r\n .prop('checked', false);\r\n $group.removeClass('filter--active');\r\n };\r\n\r\n function resetAllFilterGroups() {\r\n const $form = $('#filter-form');\r\n const $activeFilterGroups = $form.find('li.filter__wrapper.filter--active[data-type]');\r\n $activeFilterGroups.each(function() {\r\n resetFilterGroup($(this));\r\n });\r\n };\r\n\r\n function serializeFilter() {\r\n const $form = $('#filter-form');\r\n const $filterGroups = $form.find('li.filter__wrapper[data-type]');\r\n const filterGroups = [];\r\n\r\n $filterGroups.each(function () {\r\n const $group = $(this);\r\n const type = $group.attr('data-type');\r\n const propertyId = $group.attr('data-propertyid');\r\n let val;\r\n\r\n switch (type) {\r\n case 'OptionFilterGroupModel':\r\n val = $group.find('input:checked').toArray()\r\n .map(function (i) {\r\n return (i.value != null && typeof (i.value) != 'undefined' && i.value !== '') ? i.value : ' ';\r\n })\r\n .join('ยค');\r\n break;\r\n case 'NumericIntervalFilterGroupModel':\r\n const numMin = $group.find('input:first').val();\r\n const numMax = $group.find('input:last').val();\r\n val = `${numMin.toString()}:${numMax.toString()}`;\r\n break;\r\n case 'DateIntervalFilterGroupModel':\r\n const dateMin = $group.find('.filter__interval--slot:first input[type=\"hidden\"]').val();\r\n const dateMax = $group.find('.filter__interval--slot:last input[type=\"hidden\"]').val();\r\n val = `${dateMin.toString()}:${dateMax.toString()}`;\r\n break;\r\n case 'TextSearchFilterGroupModel':\r\n val = $group.find('input:first').val()\r\n .trim();\r\n break;\r\n }\r\n\r\n if (val && val !== '' && val !== ':')\r\n filterGroups.push({\r\n type,\r\n propertyId,\r\n value: val\r\n });\r\n\r\n });\r\n\r\n return filterGroups.length > 0 ? JSON.stringify(filterGroups) : null;\r\n };\r\n\r\n function filterLabelClickHandler(e) {\r\n const $filter = $(this).parents('.filter__wrapper:first');\r\n const type = $filter.attr('data-type');\r\n $filter.toggleClass('filter--open');\r\n\r\n if (type === 'TextSearchFilterGroupModel') {\r\n $filter.find('input:first').trigger('focus');\r\n }\r\n\r\n return false;\r\n };\r\n\r\n function showFilterClickHandler(e) {\r\n showFilterAside();\r\n return false;\r\n };\r\n\r\n function hideFilterClickHandler(e) {\r\n hideFilterAside();\r\n return false;\r\n };\r\n\r\n function filterFormSubmitHandler(e) {\r\n try {\r\n closeOpenFilterGroups();\r\n\r\n if (_isMobileBreakpoint) {\r\n if (typeof (settings.onMobileFilterSubmit) === 'function') {\r\n settings.onMobileFilterSubmit();\r\n }\r\n }\r\n else {\r\n if (typeof (settings.onFilterSubmit) === 'function') {\r\n settings.onFilterSubmit();\r\n }\r\n }\r\n\r\n hideFilterAside();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n function resetFilterGroupClickHandler(e) {\r\n const $this = $(this);\r\n const $filter = $this.parents('.filter__wrapper:first');\r\n resetFilterGroup($filter);\r\n closeFilterGroup($filter);\r\n\r\n if (typeof (settings.onFilterGroupReset) === 'function') {\r\n settings.onFilterGroupReset($filter);\r\n }\r\n };\r\n\r\n function resetFilterClickHandler(e) {\r\n\r\n resetAllFilterGroups();\r\n\r\n if (typeof (settings.onFilterReset) === 'function') {\r\n settings.onFilterReset();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n function filterGroupSaveClickHandler(e) {\r\n\r\n if (typeof (settings.onFilterGroupSave) === 'function') {\r\n settings.onFilterGroupSave();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n function filterNumberInputChangeHandler(e) {\r\n const $this = $(this);\r\n const inputName = $this.attr('name');\r\n const $inputSlot = $this.parents('.filter__interval--slot:first');\r\n\r\n if (inputName.endsWith('_min')) {\r\n const rawMinVal = $this.val() || $this.attr('placeholder');\r\n const parsedMinVal = parseInt(rawMinVal);\r\n\r\n const $maxInput = $inputSlot.next('.filter__interval--slot').find('input[type=\"number\"]:first');\r\n const rawMaxVal = $maxInput.val() || $maxInput.attr('placeholder');\r\n const parsedMaxVal = parseInt(rawMaxVal);\r\n\r\n if (parsedMinVal > parsedMaxVal) {\r\n $this.val(parsedMaxVal);\r\n return false;\r\n }\r\n }\r\n else if (inputName.endsWith('_max')) {\r\n const rawMaxVal = $this.val() || $this.attr('placeholder');\r\n const parsedMaxVal = parseInt(rawMaxVal);\r\n\r\n const $minInput = $inputSlot.prev('.filter__interval--slot').find('input[type=\"number\"]:first');\r\n const rawMinVal = $minInput.val() || $minInput.attr('placeholder');\r\n const parsedMinVal = parseInt(rawMinVal);\r\n\r\n if (parsedMaxVal < parsedMinVal) {\r\n $this.val(parsedMinVal);\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n this.UpdateFilterAside = updateFilterAside;\r\n this.Hide = hideFilterAside;\r\n this.Serialize = serializeFilter;\r\n\r\n init();\r\n};\r\n\r\nExtranet.WindowScrollHandler = function (settings) {\r\n const $body = $('body');\r\n const _headerContainer = document.querySelector('.header__container');\r\n\r\n let _prevScroll = window.scrollY;\r\n let _curScroll;\r\n let _direction = 0;\r\n let _prevDirection = 0;\r\n let _scrollTimerId;\r\n\r\n function init() {\r\n $(window).on('scroll', windowScrollHandler);\r\n };\r\n\r\n function checkScroll() {\r\n _curScroll = window.scrollY;\r\n\r\n if (_curScroll > _prevScroll) {\r\n _direction = 2;\r\n } else if (_curScroll < _prevScroll) {\r\n _direction = 1;\r\n }\r\n\r\n if (_direction !== _prevDirection) {\r\n toggleHeader();\r\n }\r\n\r\n _prevScroll = _curScroll;\r\n };\r\n\r\n function toggleHeader() {\r\n if (_direction === 2 && _curScroll > _headerContainer.clientHeight) {\r\n $body.addClass('header-sticky');\r\n } else if (_direction === 1) {\r\n $body.removeClass('header-sticky');\r\n\r\n\r\n }\r\n _prevDirection = _direction;\r\n };\r\n\r\n function windowScrollHandler(e) {\r\n clearTimeout(_scrollTimerId);\r\n _scrollTimerId = setTimeout(checkScroll, 100);\r\n };\r\n\r\n init();\r\n};\r\n\r\nExtranet.ContentOverlayHandler = function contentOverlay(containerSelector) {\r\n const _overlaySelector = '#content__overlay';\r\n\r\n function init() {\r\n const $win = $(window);\r\n $win.on('pageshow', function (e) {\r\n if (e.originalEvent.persisted) {\r\n hide();\r\n }\r\n });\r\n };\r\n\r\n function getContainer() {\r\n return $(containerSelector);\r\n };\r\n\r\n function hide() {\r\n $('body').removeClass('busy content--overlay');\r\n getContainer().find(_overlaySelector)\r\n .remove();\r\n };\r\n\r\n function show(text) {\r\n\r\n const markup = [];\r\n markup.push('
'.format(_overlaySelector.replace('#', '')));\r\n markup.push(' ');\r\n markup.push(' ');\r\n markup.push(' ');\r\n markup.push(' ');\r\n markup.push(' ');\r\n markup.push(' {0}'.format(text));\r\n markup.push(' ');\r\n markup.push('
');\r\n\r\n getContainer().append(markup.join(''));\r\n $('body').addClass('busy content--overlay');\r\n };\r\n\r\n this.Show = show;\r\n this.Hide = hide;\r\n\r\n init();\r\n};\r\n\r\nExtranet.TableScrollHandler = function tableScrollHandler($scrollContainer, settings) {\r\n let _scrollTimerId;\r\n let _resizeTimerId;\r\n\r\n settings = settings || {\r\n attachWindowResizeHandler: true\r\n };\r\n settings.elementsToMeasure = settings.elementsToMeasure || 'header,.page-header__body,ul.action-list';\r\n function init() {\r\n $scrollContainer.on('scroll', tableContainerScrollHandler);\r\n $scrollContainer.parent().find('#shadow-top')\r\n .on('mouseover', topShadowMouseOverHandler);\r\n setTableScrollContainerHeight($scrollContainer, settings.elementsToMeasure);\r\n setTableScrollContainerShadowClasses($scrollContainer);\r\n\r\n if (settings.attachWindowResizeHandler === true) {\r\n $(window).on('resize', windowResizeHandler);\r\n }\r\n };\r\n\r\n function setTableScrollContainerHeight($scrollContainer, elementsToMeasure) {\r\n const $elementsToMeasure = $(elementsToMeasure);\r\n let height = $(window).height();\r\n $elementsToMeasure.each(function () {\r\n const $this = $(this);\r\n height -= $this.outerHeight(true);\r\n\r\n });\r\n\r\n height -= 20; //This ensures a bit of spacing under the bottom scrollbar\r\n $scrollContainer.css('max-height', height);\r\n };\r\n\r\n function tableContainerScrollHandler(e) {\r\n clearTimeout(_scrollTimerId);\r\n _scrollTimerId = setTimeout(function () {\r\n setTableScrollContainerShadowClasses($scrollContainer);\r\n }, 50);\r\n };\r\n\r\n function setTableScrollContainerShadowClasses($scrollContainer) {\r\n\r\n const scrollContainer = $scrollContainer.get(0);\r\n const $container = $scrollContainer.parent();\r\n const containerWidth = Math.ceil($container.outerWidth());\r\n const containerHeight = Math.ceil($container.outerHeight());\r\n const scrollWidth = Math.ceil(scrollContainer.scrollWidth);\r\n const scrolledLeft = Math.ceil(scrollContainer.scrollLeft + containerWidth);\r\n const scrollHeight = Math.ceil(scrollContainer.scrollHeight);\r\n const scrolledTop = Math.ceil(scrollContainer.scrollTop + containerHeight);\r\n\r\n $container.toggleClass('can-scroll-left', scrolledLeft > containerWidth);\r\n $container.toggleClass('can-scroll-right', scrolledLeft < scrollWidth);\r\n\r\n $container.toggleClass('can-scroll-down', scrolledTop < scrollHeight);\r\n $container.toggleClass('can-scroll-up', scrolledTop > containerHeight);\r\n };\r\n\r\n function getScroll() {\r\n return {\r\n x: parseInt($scrollContainer.get(0).scrollLeft),\r\n y: parseInt($scrollContainer.get(0).scrollTop)\r\n };\r\n };\r\n\r\n function scrollTo(x, y) {\r\n $scrollContainer.get(0).scrollLeft = x;\r\n $scrollContainer.get(0).scrollTop = y;\r\n };\r\n\r\n function windowResizeHandler(e) {\r\n clearTimeout(_resizeTimerId);\r\n _resizeTimerId = setTimeout(function () {\r\n setTableScrollContainerHeight($scrollContainer, settings.elementsToMeasure);\r\n setTableScrollContainerShadowClasses($scrollContainer);\r\n }, 50);\r\n };\r\n\r\n function topShadowMouseOverHandler(e) {\r\n $(this).parents('#service-item-table-container')\r\n .removeClass('can-scroll-up');\r\n };\r\n\r\n this.UpdateTableScrollContainerShadowClasses = function updateTableScrollContainerShadowClasses() {\r\n setTableScrollContainerShadowClasses($scrollContainer);\r\n };\r\n\r\n this.UpdateTableScrollContainerHeight = function updateTableScrollContainerHeight() {\r\n setTableScrollContainerHeight($scrollContainer, settings.elementsToMeassure);\r\n };\r\n\r\n this.ScrollToTop = function scrollToTop() {\r\n scrollTo(0, 0);\r\n };\r\n\r\n this.GetScroll = getScroll;\r\n this.ScrollTo = scrollTo;\r\n\r\n init();\r\n};\r\n\r\nExtranet.Dialogs = new function () {\r\n function hideAllDialogs() {\r\n $('body .dialog-module').remove();\r\n $('body').removeClass('has-dialog has-confirm-dialog has-alert-dialog');\r\n };\r\n\r\n function hideDialog($dialog) {\r\n const $body = $('body');\r\n $dialog.remove();\r\n if ($body.find('.dialog-module').length == 0) {\r\n $body.removeClass('has-dialog has-confirm-dialog has-alert-dialog');\r\n }\r\n };\r\n\r\n function confirm(header, subHeader, text, okText, cancelText, onOK, onCancel) {\r\n // hideAllDialogs();\r\n $('body').addClass('has-dialog has-confirm-dialog');\r\n\r\n const markup = [];\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n if (header && header !== '') {\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

'.format(header));\r\n markup.push('
');\r\n markup.push('
');\r\n }\r\n if (subHeader && subHeader !== '') {\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

'.format(subHeader));\r\n markup.push('
');\r\n markup.push('
');\r\n }\r\n if (text && text !== '') {\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

'.format(text));\r\n markup.push('
');\r\n markup.push('
');\r\n }\r\n markup.push('
');\r\n markup.push(' {0}'.format(cancelText));\r\n markup.push(' {0}'.format(okText));\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n\r\n const $markup = $(markup.join(''));\r\n $markup.find('.button--grey-color').on('click', function (e) {\r\n hideDialog($markup);\r\n\r\n if (typeof onCancel === 'function') {\r\n onCancel();\r\n }\r\n\r\n return false;\r\n });\r\n\r\n $markup.find('.button--pri-color').on('click', function (e) {\r\n hideDialog($markup);\r\n\r\n if (typeof onOK === 'function') {\r\n onOK();\r\n }\r\n\r\n return false;\r\n });\r\n $('body').append($markup);\r\n };\r\n\r\n function alert(header, text, onHide) {\r\n // hideAllDialogs();\r\n $('body').addClass('has-dialog has-alert-dialog');\r\n\r\n header = header || ResourceManager.Get('Dialogs.Alert.Header');\r\n\r\n const markup = [];\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n if (header && header !== '') {\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

'.format(header));\r\n markup.push('
');\r\n markup.push('
');\r\n }\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

'.format(text));\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push(' {0}'.format(ResourceManager.Get('Dialogs.Alert.OK')));\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n\r\n const $markup = $(markup.join(''));\r\n $markup.find('.button--pri-color').on('click', function (e) {\r\n if (typeof (onHide) == 'function') {\r\n onHide();\r\n }\r\n hideDialog($markup);\r\n return false;\r\n });\r\n\r\n $('body').append($markup);\r\n };\r\n\r\n function show(text) {\r\n const markup = [];\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('

{0}

'.format(text));\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n markup.push('
');\r\n\r\n const $markup = $(markup.join(''));\r\n $markup.on('click', '.header-module .dialog-box__button, .dialog--close', function (e) {\r\n hideDialog($markup);\r\n e.preventDefault();\r\n });\r\n\r\n $('body').addClass('has-dialog')\r\n .append($markup);\r\n\r\n return $markup;\r\n };\r\n\r\n this.Alert = alert;\r\n this.Confirm = confirm;\r\n this.Show = show;\r\n this.HideAll = hideAllDialogs;\r\n};\r\n\r\nExtranet.Forms = new function forms() {\r\n function enable($frm) {\r\n $frm.removeClass('disabled');\r\n $frm.find('input,textarea,select,button').not('.default-disabled')\r\n .prop('disabled', false);\r\n $frm.find('a').removeClass('disabled');\r\n };\r\n\r\n function disable($frm) {\r\n $frm.addClass('disabled');\r\n $frm.find('input,textarea,select,button').not('.default-disabled')\r\n .prop('disabled', true);\r\n $frm.find('a').addClass('disabled');\r\n };\r\n\r\n function enableSubmitMode($frm, $btn) {\r\n $('body').addClass('busy');\r\n disable($frm);\r\n\r\n if (typeof($btn) == 'undefined')\r\n $btn = $frm.find('button:submit:last');\r\n else {\r\n if (!$btn.jquery) {\r\n $btn = $($btn);\r\n }\r\n }\r\n let busyText = $btn.attr('data-busytext');\r\n $btn.attr('data-text', $btn.text());\r\n if (!busyText || busyText === '') {\r\n busyText = ResourceManager.Get('Forms.SubmitButtonBusyText');\r\n }\r\n $btn.text(busyText);\r\n };\r\n\r\n function disableSubmitMode($frm, $btn) {\r\n\r\n if (typeof($btn) == 'undefined')\r\n $btn = $frm.find('button:submit:last');\r\n else {\r\n if (!$btn.jquery) {\r\n $btn = $($btn);\r\n }\r\n }\r\n\r\n $btn.text($btn.attr('data-text'));\r\n enable($frm);\r\n $('body').removeClass('busy');\r\n };\r\n\r\n this.Enable = enable;\r\n this.Disable = disable;\r\n this.EnableSubmitMode = enableSubmitMode;\r\n this.DisableSubmitMode = disableSubmitMode;\r\n};"],"names":["handleBodyScrollOnResize","$this","id","maxDate","minDate","$scrollContainer"],"mappings":"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"}