diff --git a/assets/scripts/dist/bundle.js b/assets/scripts/dist/bundle.js index 21b12379..2c1e27aa 100644 --- a/assets/scripts/dist/bundle.js +++ b/assets/scripts/dist/bundle.js @@ -1,2 +1,2 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="/assets/scripts/dist/",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.Choices=void 0;var o=function(){function e(e,t){for(var n=0;n1)for(var a=1;a0?this.highlightPosition--:w=!1),w){var E=I[this.highlightPosition];if(E){var O=this.dropdown.querySelector("."+this.options.classNames.highlightedState),k=this.dropdown.querySelector('[data-choice-id="'+E.id+'"]');O&&O.classList.remove(this.options.classNames.highlightedState),k&&k.classList.add(this.options.classNames.highlightedState)}}}break;case n:case i:d&&!e.target.value&&(this.handleBackspaceKey(u),e.preventDefault())}}}},{key:"onKeyUp",value:function(e){var t=this;if(e.target===this.input&&"select-multiple"===this.passedElement.type&&this.options.allowSearch){var n=this.getOptions(),i=n.some(function(e){return e.active!==!0});if(this.input===document.activeElement)if(this.input.value){var r=(0,l.debounce)(function(){var e=t.getOptionsFiltedBySelectable(),n=new h.default(e),i=n.search(t.input.value,{fields:["label","value"],sort:[{field:"value",direction:"asc"}],limit:10});t.store.dispatch((0,u.filterOptions)(i))},100);r()}else i&&this.store.dispatch((0,u.activateOptions)())}}},{key:"onClick",value:function(e){var t=this,n=this.getItemsFilteredByActive(),i=!!e.shiftKey;if(this.dropdown&&this.toggleDropdown(),this.containerOuter.contains(e.target))this.input!==document.activeElement&&this.input.focus(),e.target.hasAttribute("data-choice-item")?this.handleClick(n,e.target,i):e.target.hasAttribute("data-choice-option")&&!function(){var n=t.getOptionsFilteredByActive(),i=e.target.getAttribute("data-choice-id"),r=n.find(function(e){return e.id===parseInt(i)});r.selected||t.addItem(r.value,r.label,r.id)}();else{var r=n.some(function(e){return e.selected===!0});r&&this.deselectAll(),"select-multiple"===this.passedElement.type&&this.dropdown.classList.contains(this.options.classNames.activeState)&&this.toggleDropdown()}}},{key:"onPaste",value:function(e){this.options.allowPaste||e.preventDefault()}},{key:"onMouseOver",value:function(e){this.dropdown&&e.target===this.dropdown&&console.log("hover")}},{key:"onFocus",value:function(e){this.containerOuter.classList.add(this.options.classNames.activeState)}},{key:"onBlur",value:function(e){this.containerOuter.classList.remove(this.options.classNames.activeState)}},{key:"clearInput",value:function(){this.input.value&&(this.input.value="")}},{key:"regexFilter",value:function(e){var t=new RegExp(this.options.regexFilter,"i"),n=t.test(e);return n}},{key:"getItemById",value:function(e){if(!e||!(0,l.isType)("Number",e))return void console.error("getItemById: An id was not given or was not a number");var t=this.getItems(),n=t.find(function(t){return t.id===parseInt(e)}),i=this.list.querySelector("[data-choice-id='"+n.id+"']");return i}},{key:"selectItem",value:function(e){if(e){var t=e.id;this.store.dispatch((0,u.selectItem)(t,!0))}}},{key:"deselectItem",value:function(e){if(e){var t=e.id;this.store.dispatch((0,u.selectItem)(t,!1))}}},{key:"selectAll",value:function(){var e=this,t=this.getItems();t.forEach(function(t){e.selectItem(t)})}},{key:"deselectAll",value:function(){var e=this,t=this.getItems();t.forEach(function(t){e.deselectItem(t)})}},{key:"addItem",value:function(e,t){var n=arguments.length<=2||void 0===arguments[2]?-1:arguments[2],i=arguments.length<=3||void 0===arguments[3]?this.options.callbackOnAddItem:arguments[3];this.options.debug&&console.debug("Add item");var r=e.trim(),o=t||r,s=n||-1;this.options.prependValue&&(r=this.options.prependValue+r.toString()),this.options.appendValue&&(r+=this.options.appendValue.toString());var a=this.store.getState().items.length+1;this.store.dispatch((0,u.addItem)(r,o,a,s)),i&&((0,l.isType)("Function",i)?i(a,e):console.error("callbackOnAddItem: Callback is not a function"))}},{key:"removeItem",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.options.callbackOnRemoveItem:arguments[1];if(!e||!(0,l.isType)("Object",e))return void console.error("removeItem: No item object was passed to be removed");var n=e.id,i=e.value,r=e.optionId;this.store.dispatch((0,u.removeItem)(n,r)),t&&((0,l.isType)("Function",t)?t(i):console.error("callbackOnRemoveItem: Callback is not a function"))}},{key:"removeItemsByValue",value:function(e){var t=this;e&&(0,l.isType)("String",e)||console.error("removeItemsByValue: No value was passed to be removed");var n=this.getItemsFilteredByActive();n.forEach(function(n){n.value===e&&t.removeItem(n)})}},{key:"removeAllItems",value:function(){var e=this,t=this.getItemsFilteredByActive();t.forEach(function(t){t.active&&e.removeItem(t)})}},{key:"removeAllSelectedItems",value:function(){var e=this,t=this.getItemsFilteredByActive();t.forEach(function(t){t.selected&&t.active&&e.removeItem(t)})}},{key:"showDropdown",value:function(){this.dropdown.classList.add(this.options.classNames.activeState);var e=this.dropdown.getBoundingClientRect(),t=e.top+e.height>=document.body.offsetHeight;t?this.dropdown.classList.add(this.options.classNames.flippedState):this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"hideDropdown",value:function(){var e=this.dropdown.classList.contains(this.options.classNames.flippedState);this.dropdown.classList.remove(this.options.classNames.activeState),e&&this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"toggleDropdown",value:function(){if(this.dropdown){var e=this.dropdown.classList.contains(this.options.classNames.activeState);e?this.hideDropdown():this.showDropdown()}}},{key:"addOption",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?-1:arguments[1],n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],i=this.store.getState(),r=i.options.length+1,o=e.value,s=e.innerHTML,a=e.selected;this.store.dispatch((0,u.addOption)(o,s,r,t,n)),a&&this.addItem(o,s,r)}},{key:"addGroup",value:function(e,t,n){var i=this,r=Array.from(e.getElementsByTagName("OPTION")),o=t;r?(this.store.dispatch((0,u.addGroup)(e.label,o,!0,e.disabled)),r.forEach(function(t,n){e.disabled?i.addOption(t,o,!0):i.addOption(t,o)})):this.store.dispatch((0,u.addGroup)(e.label,e.id,!1,e.disabled))}},{key:"getItems",value:function(){var e=this.store.getState();return e.items}},{key:"getItemsFilteredByActive",value:function(){var e=this.getItems(),t=e.filter(function(e){return e.active===!0},[]);return t}},{key:"getItemsReducedToValues",value:function(){var e=this.getItems(),t=e.reduce(function(e,t){return e.push(t.value),e},[]);return t}},{key:"getOptions",value:function(){var e=this.store.getState();return e.options}},{key:"getOptionsFilteredByActive",value:function(){var e=this.getOptions(),t=e.filter(function(e){return e.active===!0&&e.disabled===!1&&e.selected!==!0},[]);return t}},{key:"getOptionsFiltedBySelectable",value:function(){var e=this.getOptions(),t=e.filter(function(e){return e.disabled===!1},[]);return t}},{key:"getGroups",value:function(){var e=this.store.getState();return e.groups}},{key:"getGroupsFilteredByActive",value:function(){var e=this.getGroups(),t=this.getOptions(),n=e.filter(function(e){var n=e.active===!0&&e.disabled===!1,i=t.some(function(e){return e.active===!0&&e.disabled===!1});return!(!n||!i)},[]);return n}},{key:"generateInput",value:function(){var e=this,t=this.createTemplate("containerOuter"),n=this.createTemplate("containerInner"),i=this.createTemplate("list"),r=this.createTemplate("input");if(this.passedElement.classList.add(this.options.classNames.input,this.options.classNames.hiddenState),this.passedElement.tabIndex="-1",this.passedElement.setAttribute("style","display:none;"),this.passedElement.setAttribute("aria-hidden","true"),(0,l.wrap)(this.passedElement,n),(0,l.wrap)(n,t),this.options.placeholder&&this.options.placeholderValue&&(r.placeholder=this.options.placeholderValue,r.style.width=(0,l.getWidthOfInput)(r)),this.options.addItems||(r.disabled=!0,t.classList.add(this.options.classNames.disabledState)),t.appendChild(n),n.appendChild(i),n.appendChild(r),"select-multiple"===this.passedElement.type){this.highlightPosition=0;var o=this.createTemplate("dropdown"),s=Array.from(this.passedElement.getElementsByTagName("OPTGROUP"));if(t.appendChild(o),this.dropdown=o,s.length)s.forEach(function(t,n){var i=0===n;e.addGroup(t,n,i)});else{var a=Array.from(this.passedElement.options);a.forEach(function(t){e.addOption(t)})}}else"text"===this.passedElement.type&&this.presetItems.forEach(function(t){e.addItem(t)});this.containerOuter=t,this.containerInner=n,this.input=r,this.list=i}},{key:"render",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnRender:arguments[0],n=(this.options.classNames,this.getItemsFilteredByActive());"select-multiple"===this.passedElement.type&&!function(){var t=e.getOptionsFilteredByActive(),n=e.getGroupsFilteredByActive();e.dropdown.innerHTML="";var i=document.createDocumentFragment();if(n.length>=1?n.forEach(function(n,r){var o=t.filter(function(e){return e.groupId===n.id});o.length>=1&&!function(){var t=e.createTemplate("optgroup",n);o.forEach(function(n,i){var r=e.createTemplate("option",n);t.appendChild(r)}),i.appendChild(t)}()}):t.length>=1&&t.forEach(function(t,n){var r=e.createTemplate("option",t);i.appendChild(r)}),e.dropdown.appendChild(i),""===e.dropdown.innerHTML){var r=e.createTemplate("notice","No options to select");i.appendChild(r),e.dropdown.appendChild(i)}}(),n&&!function(){var t=e.getItemsReducedToValues();e.passedElement.value=t.join(e.options.delimiter),e.list.innerHTML="";var i=document.createDocumentFragment();n.forEach(function(t){var n=e.createTemplate("item",t);i.appendChild(n)}),e.list.appendChild(i)}(),t&&((0,l.isType)("Function",t)?t(n):console.error("callbackOnRender: Callback is not a function"))}},{key:"createTemplate",value:function(e){for(var t=this.options.classNames,n={containerOuter:function(){return(0,l.strToEl)('
')},containerInner:function(){return(0,l.strToEl)('
')},list:function(){return(0,l.strToEl)('')},input:function(){return(0,l.strToEl)('')},dropdown:function(){return(0,l.strToEl)('
')},notice:function(e){return(0,l.strToEl)('
'+e+"
")},option:function(e){return(0,l.strToEl)('\n
\n '+e.label+"\n
\n ")},optgroup:function(e){return(0,l.strToEl)('\n
\n
'+e.value+"
\n
\n ")},item:function(e){return(0,l.strToEl)('\n
\n '+e.label+"\n
\n ")}},i=arguments.length,r=Array(i>1?i-1:0),o=1;i>o;o++)r[o-1]=arguments[o];return n[e].apply(n,r)}},{key:"addEventListeners",value:function(){document.addEventListener("keyup",this.onKeyUp),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("click",this.onClick),document.addEventListener("paste",this.onPaste),document.addEventListener("mouseover",this.onMouseOver),this.input.addEventListener("focus",this.onFocus),this.input.addEventListener("blur",this.onBlur)}},{key:"removeEventListeners",value:function(){document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("click",this.onClick),document.removeEventListener("paste",this.onPaste),document.removeEventListener("mouseover",this.onMouseOver),this.input.removeEventListener("focus",this.onFocus),this.input.removeEventListener("blur",this.onBlur)}},{key:"init",value:function(){var e=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnInit:arguments[0];this.initialised=!0,this.generateInput(),this.store.subscribe(this.render),this.render(),this.addEventListeners(),e&&((0,l.isType)("Function",e)?e():console.error("callbackOnInit: Callback is not a function"))}},{key:"destroy",value:function(){this.passedElement=null,this.userOptions=null,this.options=null,this.initialised=null,this.store=null}}]),e}();window.Choices=e.exports=p},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0,t.compose=t.applyMiddleware=t.bindActionCreators=t.combineReducers=t.createStore=void 0;var r=n(3),o=i(r),s=n(8),a=i(s),c=n(10),u=i(c),l=n(11),d=i(l),h=n(12),p=i(h),f=n(9);i(f);t.createStore=o.default,t.combineReducers=a.default,t.bindActionCreators=u.default,t.applyMiddleware=d.default,t.compose=p.default},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){function i(){f===p&&(f=p.slice())}function o(){return h}function c(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return i(),f.push(e),function(){if(t){t=!1,i();var n=f.indexOf(e);f.splice(n,1)}}}function u(e){if(!(0,s.default)(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"==typeof e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(v)throw new Error("Reducers may not dispatch actions.");try{v=!0,h=d(h,e)}finally{v=!1}for(var t=p=f,n=0;nn;n++)t[n]=arguments[n];return function(e){return function(n,i,r){var s=e(n,i,r),c=s.dispatch,u=[],l={getState:s.getState,dispatch:function(e){return c(e)}};return u=t.map(function(e){return e(l)}),c=a.default.apply(void 0,u)(s.dispatch),o({},s,{dispatch:c})}}}var o=Object.assign||function(e){for(var t=1;tn;n++)t[n]=arguments[n];return function(){if(0===t.length)return arguments.length<=0?void 0:arguments[0];var e=t[t.length-1],n=t.slice(0,-1);return n.reduceRight(function(e,t){return t(e)},e.apply(void 0,arguments))}}t.__esModule=!0,t.default=n},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=n(14),s=i(o),a=n(15),c=i(a),u=n(16),l=i(u),d=(0,r.combineReducers)({items:s.default,groups:c.default,options:l.default});t.default=d},function(e,t){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t-1?e.map(function(e){return e.id===parseInt(t.optionId)&&(e.selected=!0),e}):e;case"REMOVE_ITEM":return t.optionId>-1?e.map(function(e){return e.id===parseInt(t.optionId)&&(e.selected=!1),e}):e;case"FILTER_OPTIONS":var i=t.results.items,r=e.map(function(e,t){return e.active=i.some(function(e){return e.id===t}),e});return r;case"ACTIVATE_OPTIONS":return e.map(function(e){return e.active=t.active,e});default:return e}};t.default=i},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.addItem=function(e,t,n,i){return{type:"ADD_ITEM",value:e,label:t,id:n,optionId:i}},t.removeItem=function(e,t){return{type:"REMOVE_ITEM",id:e,optionId:t}},t.selectItem=function(e,t){return{type:"SELECT_ITEM",id:e,selected:t}},t.addOption=function(e,t,n,i,r){return{type:"ADD_OPTION",value:e,label:t,id:n,groupId:i,disabled:r}},t.filterOptions=function(e){return{type:"FILTER_OPTIONS",results:e}},t.activateOptions=function(){var e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return{type:"ACTIVATE_OPTIONS",active:e}},t.addGroup=function(e,t,n,i){return{type:"ADD_GROUP",value:e,id:t,active:n,disabled:i}}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=(t.hasClass=function(e,t){return new RegExp(" "+t+" ").test(" "+e.className+" ")},t.capitalise=function(e){return e.replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})},t.isType=function(e,t){var n=Object.prototype.toString.call(t).slice(8,-1);return void 0!==t&&null!==t&&n===e}),i=(t.extend=function o(){for(var e={},t=!1,i=arguments.length,r=function(i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t&&n("Object",i[r])?e[r]=o(!0,e[r],i[r]):e[r]=i[r])},s=0;i>s;s++){var a=arguments[s];n("Object",a)?r(a):console.error("Custom options must be an object")}return e},t.whichTransitionEvent=function(){var e,t=document.createElement("fakeelement"),n={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in n)if(void 0!==t.style[e])return n[e]},t.whichAnimationEvent=function(){var e,t=document.createElement("fakeelement"),n={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in n)if(void 0!==t.style[e])return n[e]}),r=(t.getParentsUntil=function(e,t,n){for(var i=[];e&&e!==document;e=e.parentNode){if(t){var r=t.charAt(0);if("."===r&&e.classList.contains(t.substr(1)))break;if("#"===r&&e.id===t.substr(1))break;if("["===r&&e.hasAttribute(t.substr(1,t.length-1)))break;if(e.tagName.toLowerCase()===t)break}if(n){var o=n.charAt(0);"."===o&&e.classList.contains(n.substr(1))&&i.push(e),"#"===o&&e.id===n.substr(1)&&i.push(e),"["===o&&e.hasAttribute(n.substr(1,n.length-1))&&i.push(e),e.tagName.toLowerCase()===n&&i.push(e)}else i.push(e)}return 0===i.length?null:i},t.wrap=function(e,t){return t=t||document.createElement("div"),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)},t.getSiblings=function(e){for(var t=[],n=e.parentNode.firstChild;n;n=n.nextSibling)1===n.nodeType&&n!==e&&t.push(n);return t},t.findAncestor=function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},t.debounce=function(e,t,n){var i;return function(){var r=this,o=arguments,s=function(){i=null,n||e.apply(r,o)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(r,o)}},t.getElemDistance=function(e){var t=0;if(e.offsetParent)do t+=e.offsetTop,e=e.offsetParent;while(e);return t>=0?t:0},t.getElementOffset=function(e,t){var n=t;return n>1&&(n=1),n>0&&(n=0),Math.max(e.offsetHeight*n)},t.getScrollPosition=function(e){return"bottom"===e?Math.max((window.scrollY||window.pageYOffset)+(window.innerHeight||document.documentElement.clientHeight)):window.scrollY||window.pageYOffset},t.isInView=function(e,t,n){return this.getScrollPosition(t)>this.getElemDistance(e)+this.getElementOffset(e,n)},t.stripHTML=function(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""},t.addAnimation=function(e,t){var n=i(),r=function o(){e.classList.remove(t),e.removeEventListener(n,o,!1)};e.classList.add(t),e.addEventListener(n,r,!1)},t.getRandomNumber=function(e,t){return Math.floor(Math.random()*(t-e)+e)},t.strToEl=function(){var e=document.createElement("div");return function(t){var n;for(e.innerHTML=t,n=e.children[0];e.firstChild;)e.removeChild(e.firstChild);return n}}());t.getWidthOfInput=function(e){var t=arguments.length<=1||void 0===arguments[1]?20:arguments[1],n=e.value||e.placeholder,i=e.offsetWidth;if(n){var o=r(''+n+"");o.style.position="absolute",o.style.top="-9999px",o.style.left="-9999px",o.style.padding="0",o.style.width="auto",document.body.appendChild(o),o.offsetWidth>t&&o.offsetWidth!=e.offsetWidth&&(i=o.offsetWidth+t/4),document.body.removeChild(o)}return i+"px"}},function(e,t,n){var i,r;!function(o,s){i=s,r="function"==typeof i?i.call(t,n,t,e):i,!(void 0!==r&&(e.exports=r))}(this,function(){var e=function(e,t){this.items=e,this.settings=t||{diacritics:!0}};e.prototype.tokenize=function(e){if(e=i(String(e||"").toLowerCase()),!e||!e.length)return[];var t,n,o,a,c=[],u=e.split(/ +/);for(t=0,n=u.length;n>t;t++){if(o=r(u[t]),this.settings.diacritics)for(a in s)s.hasOwnProperty(a)&&(o=o.replace(new RegExp(a,"g"),s[a]));c.push({string:u[t],regex:new RegExp(o,"i")})}return c},e.prototype.iterator=function(e,t){var n;n=o(e)?Array.prototype.forEach||function(e){for(var t=0,n=this.length;n>t;t++)e(this[t],t,this)}:function(e){for(var t in this)this.hasOwnProperty(t)&&e(this[t],t,this)},n.apply(e,[t])},e.prototype.getScoreFunction=function(e,t){var n,i,r,o;n=this,e=n.prepareSearch(e,t),r=e.tokens,i=e.options.fields,o=r.length;var s=function(e,t){var n,i;return e?(e=String(e||""),i=e.search(t.regex),-1===i?0:(n=t.string.length/e.length,0===i&&(n+=.5),n)):0},a=function(){var e=i.length;return e?1===e?function(e,t){return s(t[i[0]],e)}:function(t,n){for(var r=0,o=0;e>r;r++)o+=s(n[i[r]],t);return o/e}:function(){return 0}}();return o?1===o?function(e){return a(r[0],e)}:"and"===e.options.conjunction?function(e){for(var t,n=0,i=0;o>n;n++){if(t=a(r[n],e),0>=t)return 0;i+=t}return i/o}:function(e){for(var t=0,n=0;o>t;t++)n+=a(r[t],e);return n/o}:function(){return 0}},e.prototype.getSortFunction=function(e,n){var i,r,o,s,a,c,u,l,d,h,p;if(o=this,e=o.prepareSearch(e,n),p=!e.query&&n.sort_empty||n.sort,d=function(e,t){return"$score"===e?t.score:o.items[t.id][e]},a=[],p)for(i=0,r=p.length;r>i;i++)(e.query||"$score"!==p[i].field)&&a.push(p[i]); -if(e.query){for(h=!0,i=0,r=a.length;r>i;i++)if("$score"===a[i].field){h=!1;break}h&&a.unshift({field:"$score",direction:"desc"})}else for(i=0,r=a.length;r>i;i++)if("$score"===a[i].field){a.splice(i,1);break}for(l=[],i=0,r=a.length;r>i;i++)l.push("desc"===a[i].direction?-1:1);return c=a.length,c?1===c?(s=a[0].field,u=l[0],function(e,n){return u*t(d(s,e),d(s,n))}):function(e,n){var i,r,o;for(i=0;c>i;i++)if(o=a[i].field,r=l[i]*t(d(o,e),d(o,n)))return r;return 0}:null},e.prototype.prepareSearch=function(e,t){if("object"==typeof e)return e;t=n({},t);var i=t.fields,r=t.sort,s=t.sort_empty;return i&&!o(i)&&(t.fields=[i]),r&&!o(r)&&(t.sort=[r]),s&&!o(s)&&(t.sort_empty=[s]),{options:t,query:String(e||"").toLowerCase(),tokens:this.tokenize(e),total:0,items:[]}},e.prototype.search=function(e,t){var n,i,r,o,s=this;return i=this.prepareSearch(e,t),t=i.options,e=i.query,o=t.score||s.getScoreFunction(i),e.length?s.iterator(s.items,function(e,r){n=o(e),(t.filter===!1||n>0)&&i.items.push({score:n,id:r})}):s.iterator(s.items,function(e,t){i.items.push({score:1,id:t})}),r=s.getSortFunction(i,t),r&&i.items.sort(r),i.total=i.items.length,"number"==typeof t.limit&&(i.items=i.items.slice(0,t.limit)),i};var t=function(e,t){return"number"==typeof e&&"number"==typeof t?e>t?1:t>e?-1:0:(e=a(String(e||"")),t=a(String(t||"")),e>t?1:t>e?-1:0)},n=function(e,t){var n,i,r,o;for(n=1,i=arguments.length;i>n;n++)if(o=arguments[n])for(r in o)o.hasOwnProperty(r)&&(e[r]=o[r]);return e},i=function(e){return(e+"").replace(/^\s+|\s+$|/g,"")},r=function(e){return(e+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},o=Array.isArray||"undefined"!=typeof $&&$.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s={a:"[aÀÁÂÃÄÅàáâãäåĀāąĄ]",c:"[cÇçćĆčČ]",d:"[dđĐďĎð]",e:"[eÈÉÊËèéêëěĚĒēęĘ]",i:"[iÌÍÎÏìíîïĪī]",l:"[lłŁ]",n:"[nÑñňŇńŃ]",o:"[oÒÓÔÕÕÖØòóôõöøŌō]",r:"[rřŘ]",s:"[sŠšśŚ]",t:"[tťŤ]",u:"[uÙÚÛÜùúûüůŮŪū]",y:"[yŸÿýÝ]",z:"[zŽžżŻźŹ]"},a=function(){var e,t,n,i,r="",o={};for(n in s)if(s.hasOwnProperty(n))for(i=s[n].substring(2,s[n].length-1),r+=i,e=0,t=i.length;t>e;e++)o[i.charAt(e)]=n;var a=new RegExp("["+r+"]","g");return function(e){return e.replace(a,function(e){return o[e]}).toLowerCase()}}();return e})}]); \ No newline at end of file +!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="/assets/scripts/dist/",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.Choices=void 0;var r=function(){function e(e,t){for(var n=0;n1)for(var a=1;a=document.body.offsetHeight;t?this.dropdown.classList.add(this.options.classNames.flippedState):this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"hideDropdown",value:function(){var e=this.dropdown.classList.contains(this.options.classNames.flippedState);this.dropdown.classList.remove(this.options.classNames.activeState),e&&this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"toggleDropdown",value:function(){if(this.dropdown){var e=this.dropdown.classList.contains(this.options.classNames.activeState);e?this.hideDropdown():this.showDropdown()}}},{key:"addOption",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?-1:arguments[1],n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],i=this.store.getState(),o=i.options.length+1,r=e.value,s=e.innerHTML,a=e.selected;this.store.dispatch((0,u.addOption)(r,s,o,t,n)),a&&this.addItem(r,s,o)}},{key:"addGroup",value:function(e,t,n){var i=this,o=Array.from(e.getElementsByTagName("OPTION")),r=t;o?(this.store.dispatch((0,u.addGroup)(e.label,r,!0,e.disabled)),o.forEach(function(t,n){e.disabled?i.addOption(t,r,!0):i.addOption(t,r)})):this.store.dispatch((0,u.addGroup)(e.label,e.id,!1,e.disabled))}},{key:"getItems",value:function(){var e=this.store.getState();return e.items}},{key:"getItemsFilteredByActive",value:function(){var e=this.getItems(),t=e.filter(function(e){return e.active===!0},[]);return t}},{key:"getItemsReducedToValues",value:function(){var e=this.getItems(),t=e.reduce(function(e,t){return e.push(t.value),e},[]);return t}},{key:"getOptions",value:function(){var e=this.store.getState();return e.options}},{key:"getOptionsFilteredByActive",value:function(){var e=this.getOptions(),t=e.filter(function(e){return e.active===!0&&e.disabled===!1&&e.selected!==!0},[]);return t}},{key:"getOptionsFiltedBySelectable",value:function(){var e=this.getOptions(),t=e.filter(function(e){return e.disabled===!1},[]);return t}},{key:"getGroups",value:function(){var e=this.store.getState();return e.groups}},{key:"getGroupsFilteredByActive",value:function(){var e=this.getGroups(),t=this.getOptions(),n=e.filter(function(e){var n=e.active===!0&&e.disabled===!1,i=t.some(function(e){return e.active===!0&&e.disabled===!1});return!(!n||!i)},[]);return n}},{key:"generateInput",value:function(){var e=this,t=this.createTemplate("containerOuter"),n=this.createTemplate("containerInner"),i=this.createTemplate("list"),o=this.createTemplate("input");if(this.passedElement.classList.add(this.options.classNames.input,this.options.classNames.hiddenState),this.passedElement.tabIndex="-1",this.passedElement.setAttribute("style","display:none;"),this.passedElement.setAttribute("aria-hidden","true"),(0,l.wrap)(this.passedElement,n),(0,l.wrap)(n,t),this.options.placeholder&&this.options.placeholderValue&&(o.placeholder=this.options.placeholderValue,o.style.width=(0,l.getWidthOfInput)(o)),this.options.addItems||(o.disabled=!0,t.classList.add(this.options.classNames.disabledState)),t.appendChild(n),n.appendChild(i),n.appendChild(o),"select-multiple"===this.passedElement.type){this.highlightPosition=0;var r=this.createTemplate("dropdown"),s=Array.from(this.passedElement.getElementsByTagName("OPTGROUP"));if(t.appendChild(r),this.dropdown=r,s.length)s.forEach(function(t,n){var i=0===n;e.addGroup(t,n,i)});else{var a=Array.from(this.passedElement.options);a.forEach(function(t){e.addOption(t)})}}else"text"===this.passedElement.type&&this.presetItems.forEach(function(t){e.addItem(t)});this.containerOuter=t,this.containerInner=n,this.input=o,this.list=i}},{key:"render",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnRender:arguments[0],n=(this.options.classNames,this.getItemsFilteredByActive());"select-multiple"===this.passedElement.type&&!function(){var t=e.getOptionsFilteredByActive(),n=e.getGroupsFilteredByActive();e.dropdown.innerHTML="";var i=document.createDocumentFragment();if(n.length>=1?n.forEach(function(n,o){var r=t.filter(function(e){return e.groupId===n.id});r.length>=1&&!function(){var t=e.createTemplate("optgroup",n);r.forEach(function(n,i){var o=e.createTemplate("option",n);t.appendChild(o)}),i.appendChild(t)}()}):t.length>=1&&t.forEach(function(t,n){var o=e.createTemplate("option",t);i.appendChild(o)}),e.dropdown.appendChild(i),""===e.dropdown.innerHTML){var o=e.createTemplate("notice","No options to select");i.appendChild(o),e.dropdown.appendChild(i)}else{var r=e.dropdown.querySelector("[data-choice-option]");r.classList.add(e.options.classNames.highlightedState)}}(),n&&!function(){var t=e.getItemsReducedToValues();e.passedElement.value=t.join(e.options.delimiter),e.list.innerHTML="";var i=document.createDocumentFragment();n.forEach(function(t){var n=e.createTemplate("item",t);i.appendChild(n)}),e.list.appendChild(i)}(),t&&((0,l.isType)("Function",t)?t(n):console.error("callbackOnRender: Callback is not a function"))}},{key:"createTemplate",value:function(e){for(var t=this.options.classNames,n={containerOuter:function(){return(0,l.strToEl)('
')},containerInner:function(){return(0,l.strToEl)('
')},list:function(){return(0,l.strToEl)('
    ')},input:function(){return(0,l.strToEl)('')},dropdown:function(){return(0,l.strToEl)('
    ')},notice:function(e){return(0,l.strToEl)('
    '+e+"
    ")},option:function(e){return(0,l.strToEl)('\n
    \n '+e.label+"\n
    \n ")},optgroup:function(e){return(0,l.strToEl)('\n
    \n
    '+e.value+"
    \n
    \n ")},item:function(e){return(0,l.strToEl)('\n
    \n '+e.label+"\n
    \n ")}},i=arguments.length,o=Array(i>1?i-1:0),r=1;i>r;r++)o[r-1]=arguments[r];return n[e].apply(n,o)}},{key:"addEventListeners",value:function(){document.addEventListener("keyup",this.onKeyUp),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("click",this.onClick),document.addEventListener("paste",this.onPaste),document.addEventListener("mouseover",this.onMouseOver),this.input.addEventListener("focus",this.onFocus),this.input.addEventListener("blur",this.onBlur)}},{key:"removeEventListeners",value:function(){document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("click",this.onClick),document.removeEventListener("paste",this.onPaste),document.removeEventListener("mouseover",this.onMouseOver),this.input.removeEventListener("focus",this.onFocus),this.input.removeEventListener("blur",this.onBlur)}},{key:"init",value:function(){var e=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnInit:arguments[0];this.initialised=!0,this.generateInput(),this.store.subscribe(this.render),this.render(),this.addEventListeners(),e&&((0,l.isType)("Function",e)?e():console.error("callbackOnInit: Callback is not a function"))}},{key:"destroy",value:function(){this.passedElement=null,this.userOptions=null,this.options=null,this.initialised=null,this.store=null}}]),e}();window.Choices=e.exports=h},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0,t.compose=t.applyMiddleware=t.bindActionCreators=t.combineReducers=t.createStore=void 0;var o=n(3),r=i(o),s=n(8),a=i(s),c=n(10),u=i(c),l=n(11),d=i(l),p=n(12),h=i(p),f=n(9);i(f);t.createStore=r.default,t.combineReducers=a.default,t.bindActionCreators=u.default,t.applyMiddleware=d.default,t.compose=h.default},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,n){function i(){f===h&&(f=h.slice())}function r(){return p}function c(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return i(),f.push(e),function(){if(t){t=!1,i();var n=f.indexOf(e);f.splice(n,1)}}}function u(e){if(!(0,s.default)(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"==typeof e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(v)throw new Error("Reducers may not dispatch actions.");try{v=!0,p=d(p,e)}finally{v=!1}for(var t=h=f,n=0;nn;n++)t[n]=arguments[n];return function(e){return function(n,i,o){var s=e(n,i,o),c=s.dispatch,u=[],l={getState:s.getState,dispatch:function(e){return c(e)}};return u=t.map(function(e){return e(l)}),c=a.default.apply(void 0,u)(s.dispatch),r({},s,{dispatch:c})}}}var r=Object.assign||function(e){for(var t=1;tn;n++)t[n]=arguments[n];return function(){if(0===t.length)return arguments.length<=0?void 0:arguments[0];var e=t[t.length-1],n=t.slice(0,-1);return n.reduceRight(function(e,t){return t(e)},e.apply(void 0,arguments))}}t.__esModule=!0,t.default=n},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),r=n(14),s=i(r),a=n(15),c=i(a),u=n(16),l=i(u),d=(0,o.combineReducers)({items:s.default,groups:c.default,options:l.default});t.default=d},function(e,t){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t-1?e.map(function(e){return e.id===parseInt(t.optionId)&&(e.selected=!0),e}):e;case"REMOVE_ITEM":return t.optionId>-1?e.map(function(e){return e.id===parseInt(t.optionId)&&(e.selected=!1),e}):e;case"FILTER_OPTIONS":var i=t.results.items,o=e.map(function(e,t){return e.active=i.some(function(e){return e.id===t}),e});return o;case"ACTIVATE_OPTIONS":return e.map(function(e){return e.active=t.active,e});default:return e}};t.default=i},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.addItem=function(e,t,n,i){return{type:"ADD_ITEM",value:e,label:t,id:n,optionId:i}},t.removeItem=function(e,t){return{type:"REMOVE_ITEM",id:e,optionId:t}},t.selectItem=function(e,t){return{type:"SELECT_ITEM",id:e,selected:t}},t.addOption=function(e,t,n,i,o){return{type:"ADD_OPTION",value:e,label:t,id:n,groupId:i,disabled:o}},t.filterOptions=function(e){return{type:"FILTER_OPTIONS",results:e}},t.activateOptions=function(){var e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return{type:"ACTIVATE_OPTIONS",active:e}},t.addGroup=function(e,t,n,i){return{type:"ADD_GROUP",value:e,id:t,active:n,disabled:i}}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=(t.hasClass=function(e,t){return new RegExp(" "+t+" ").test(" "+e.className+" ")},t.capitalise=function(e){return e.replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})},t.isType=function(e,t){var n=Object.prototype.toString.call(t).slice(8,-1);return void 0!==t&&null!==t&&n===e}),i=(t.extend=function r(){for(var e={},t=!1,i=arguments.length,o=function(i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(t&&n("Object",i[o])?e[o]=r(!0,e[o],i[o]):e[o]=i[o])},s=0;i>s;s++){var a=arguments[s];n("Object",a)?o(a):console.error("Custom options must be an object")}return e},t.whichTransitionEvent=function(){var e,t=document.createElement("fakeelement"),n={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in n)if(void 0!==t.style[e])return n[e]},t.whichAnimationEvent=function(){var e,t=document.createElement("fakeelement"),n={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in n)if(void 0!==t.style[e])return n[e]}),o=(t.getParentsUntil=function(e,t,n){for(var i=[];e&&e!==document;e=e.parentNode){if(t){var o=t.charAt(0);if("."===o&&e.classList.contains(t.substr(1)))break;if("#"===o&&e.id===t.substr(1))break;if("["===o&&e.hasAttribute(t.substr(1,t.length-1)))break;if(e.tagName.toLowerCase()===t)break}if(n){var r=n.charAt(0);"."===r&&e.classList.contains(n.substr(1))&&i.push(e),"#"===r&&e.id===n.substr(1)&&i.push(e),"["===r&&e.hasAttribute(n.substr(1,n.length-1))&&i.push(e),e.tagName.toLowerCase()===n&&i.push(e)}else i.push(e)}return 0===i.length?null:i},t.wrap=function(e,t){return t=t||document.createElement("div"),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)},t.getSiblings=function(e){for(var t=[],n=e.parentNode.firstChild;n;n=n.nextSibling)1===n.nodeType&&n!==e&&t.push(n);return t},t.findAncestor=function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},t.debounce=function(e,t,n){var i;return function(){var o=this,r=arguments,s=function(){i=null,n||e.apply(o,r)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(o,r)}},t.getElemDistance=function(e){var t=0;if(e.offsetParent)do t+=e.offsetTop,e=e.offsetParent;while(e);return t>=0?t:0},t.getElementOffset=function(e,t){var n=t;return n>1&&(n=1),n>0&&(n=0),Math.max(e.offsetHeight*n)},t.getAdjacentEl=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(e&&t){var i=e.parentNode.parentNode,o=Array.from(i.querySelectorAll(t)),r=o.indexOf(e),s=n>0?1:-1;return o[r+s]}},t.getScrollPosition=function(e){return"bottom"===e?Math.max((window.scrollY||window.pageYOffset)+(window.innerHeight||document.documentElement.clientHeight)):window.scrollY||window.pageYOffset},t.isInView=function(e,t,n){return this.getScrollPosition(t)>this.getElemDistance(e)+this.getElementOffset(e,n)},t.stripHTML=function(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""},t.addAnimation=function(e,t){var n=i(),o=function r(){e.classList.remove(t),e.removeEventListener(n,r,!1)};e.classList.add(t),e.addEventListener(n,o,!1)},t.getRandomNumber=function(e,t){return Math.floor(Math.random()*(t-e)+e)},t.strToEl=function(){var e=document.createElement("div");return function(t){var n;for(e.innerHTML=t,n=e.children[0];e.firstChild;)e.removeChild(e.firstChild);return n}}());t.getWidthOfInput=function(e){var t=arguments.length<=1||void 0===arguments[1]?20:arguments[1],n=e.value||e.placeholder,i=e.offsetWidth;if(n){var r=o(''+n+"");r.style.position="absolute",r.style.top="-9999px",r.style.left="-9999px",r.style.padding="0",r.style.width="auto",document.body.appendChild(r),r.offsetWidth>t&&r.offsetWidth!=e.offsetWidth&&(i=r.offsetWidth+t/4),document.body.removeChild(r)}return i+"px"}},function(e,t,n){var i,o;!function(r,s){i=s,o="function"==typeof i?i.call(t,n,t,e):i,!(void 0!==o&&(e.exports=o))}(this,function(){var e=function(e,t){this.items=e,this.settings=t||{diacritics:!0}};e.prototype.tokenize=function(e){if(e=i(String(e||"").toLowerCase()),!e||!e.length)return[];var t,n,r,a,c=[],u=e.split(/ +/);for(t=0,n=u.length;n>t;t++){if(r=o(u[t]),this.settings.diacritics)for(a in s)s.hasOwnProperty(a)&&(r=r.replace(new RegExp(a,"g"),s[a]));c.push({string:u[t],regex:new RegExp(r,"i")})}return c},e.prototype.iterator=function(e,t){var n;n=r(e)?Array.prototype.forEach||function(e){for(var t=0,n=this.length;n>t;t++)e(this[t],t,this)}:function(e){for(var t in this)this.hasOwnProperty(t)&&e(this[t],t,this)},n.apply(e,[t])},e.prototype.getScoreFunction=function(e,t){var n,i,o,r;n=this,e=n.prepareSearch(e,t),o=e.tokens,i=e.options.fields,r=o.length;var s=function(e,t){var n,i;return e?(e=String(e||""),i=e.search(t.regex),-1===i?0:(n=t.string.length/e.length,0===i&&(n+=.5),n)):0},a=function(){var e=i.length;return e?1===e?function(e,t){return s(t[i[0]],e); +}:function(t,n){for(var o=0,r=0;e>o;o++)r+=s(n[i[o]],t);return r/e}:function(){return 0}}();return r?1===r?function(e){return a(o[0],e)}:"and"===e.options.conjunction?function(e){for(var t,n=0,i=0;r>n;n++){if(t=a(o[n],e),0>=t)return 0;i+=t}return i/r}:function(e){for(var t=0,n=0;r>t;t++)n+=a(o[t],e);return n/r}:function(){return 0}},e.prototype.getSortFunction=function(e,n){var i,o,r,s,a,c,u,l,d,p,h;if(r=this,e=r.prepareSearch(e,n),h=!e.query&&n.sort_empty||n.sort,d=function(e,t){return"$score"===e?t.score:r.items[t.id][e]},a=[],h)for(i=0,o=h.length;o>i;i++)(e.query||"$score"!==h[i].field)&&a.push(h[i]);if(e.query){for(p=!0,i=0,o=a.length;o>i;i++)if("$score"===a[i].field){p=!1;break}p&&a.unshift({field:"$score",direction:"desc"})}else for(i=0,o=a.length;o>i;i++)if("$score"===a[i].field){a.splice(i,1);break}for(l=[],i=0,o=a.length;o>i;i++)l.push("desc"===a[i].direction?-1:1);return c=a.length,c?1===c?(s=a[0].field,u=l[0],function(e,n){return u*t(d(s,e),d(s,n))}):function(e,n){var i,o,r;for(i=0;c>i;i++)if(r=a[i].field,o=l[i]*t(d(r,e),d(r,n)))return o;return 0}:null},e.prototype.prepareSearch=function(e,t){if("object"==typeof e)return e;t=n({},t);var i=t.fields,o=t.sort,s=t.sort_empty;return i&&!r(i)&&(t.fields=[i]),o&&!r(o)&&(t.sort=[o]),s&&!r(s)&&(t.sort_empty=[s]),{options:t,query:String(e||"").toLowerCase(),tokens:this.tokenize(e),total:0,items:[]}},e.prototype.search=function(e,t){var n,i,o,r,s=this;return i=this.prepareSearch(e,t),t=i.options,e=i.query,r=t.score||s.getScoreFunction(i),e.length?s.iterator(s.items,function(e,o){n=r(e),(t.filter===!1||n>0)&&i.items.push({score:n,id:o})}):s.iterator(s.items,function(e,t){i.items.push({score:1,id:t})}),o=s.getSortFunction(i,t),o&&i.items.sort(o),i.total=i.items.length,"number"==typeof t.limit&&(i.items=i.items.slice(0,t.limit)),i};var t=function(e,t){return"number"==typeof e&&"number"==typeof t?e>t?1:t>e?-1:0:(e=a(String(e||"")),t=a(String(t||"")),e>t?1:t>e?-1:0)},n=function(e,t){var n,i,o,r;for(n=1,i=arguments.length;i>n;n++)if(r=arguments[n])for(o in r)r.hasOwnProperty(o)&&(e[o]=r[o]);return e},i=function(e){return(e+"").replace(/^\s+|\s+$|/g,"")},o=function(e){return(e+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},r=Array.isArray||"undefined"!=typeof $&&$.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s={a:"[aÀÁÂÃÄÅàáâãäåĀāąĄ]",c:"[cÇçćĆčČ]",d:"[dđĐďĎð]",e:"[eÈÉÊËèéêëěĚĒēęĘ]",i:"[iÌÍÎÏìíîïĪī]",l:"[lłŁ]",n:"[nÑñňŇńŃ]",o:"[oÒÓÔÕÕÖØòóôõöøŌō]",r:"[rřŘ]",s:"[sŠšśŚ]",t:"[tťŤ]",u:"[uÙÚÛÜùúûüůŮŪū]",y:"[yŸÿýÝ]",z:"[zŽžżŻźŹ]"},a=function(){var e,t,n,i,o="",r={};for(n in s)if(s.hasOwnProperty(n))for(i=s[n].substring(2,s[n].length-1),o+=i,e=0,t=i.length;t>e;e++)r[i.charAt(e)]=n;var a=new RegExp("["+o+"]","g");return function(e){return e.replace(a,function(e){return r[e]}).toLowerCase()}}();return e})}]); \ No newline at end of file diff --git a/assets/scripts/src/choices.js b/assets/scripts/src/choices.js index 58951a67..0a973b69 100644 --- a/assets/scripts/src/choices.js +++ b/assets/scripts/src/choices.js @@ -3,7 +3,7 @@ import { createStore } from 'redux'; import rootReducer from './reducers/index.js'; import { addItem, removeItem, selectItem, addOption, filterOptions, activateOptions, addGroup } from './actions/index'; -import { wrap, isType, strToEl, extend, getWidthOfInput, debounce } from './lib/utils.js'; +import { getAdjacentEl, findAncestor, wrap, isType, strToEl, extend, getWidthOfInput, debounce } from './lib/utils.js'; import Sifter from 'sifter'; /** @@ -275,32 +275,25 @@ export class Choices { case upKey: // If up or down key is pressed, traverse through options if(this.passedElement.type === 'select-multiple' && hasActiveDropdown) { - const selectableOptions = activeOptions.filter((option) => { - return !option.selected; - }); - let canHighlight = true; + const currentEl = this.dropdown.querySelector(`.${this.options.classNames.highlightedState}`); + let nextEl; - if(e.keyCode === downKey) { - this.highlightPosition < (selectableOptions.length - 1) ? this.highlightPosition++ : canHighlight = false; - } else if(e.keyCode === upKey) { - this.highlightPosition > 0 ? this.highlightPosition-- : canHighlight = false; - } - - if(canHighlight) { - const option = selectableOptions[this.highlightPosition]; - if(option) { - const previousElement = this.dropdown.querySelector(`.${this.options.classNames.highlightedState}`); - const currentElement = this.dropdown.querySelector(`[data-choice-id="${option.id}"]`); - - if(previousElement) { - previousElement.classList.remove(this.options.classNames.highlightedState); - } - - if(currentElement) { - currentElement.classList.add(this.options.classNames.highlightedState); - } + if(currentEl) { + if(e.keyCode === downKey) { + nextEl = getAdjacentEl(currentEl, '[data-choice-option]', 1); + } else if(e.keyCode === upKey) { + nextEl = getAdjacentEl(currentEl, '[data-choice-option]', -1); } + } else { + nextEl = this.dropdown.querySelector('[data-choice-option]'); + } + + if(nextEl) { + if(currentEl) { + currentEl.classList.remove(this.options.classNames.highlightedState); + } + nextEl.classList.add(this.options.classNames.highlightedState); } } break @@ -342,6 +335,7 @@ export class Choices { sort: [{field: 'value', direction: 'asc'}], limit: 10 }); + this.store.dispatch(filterOptions(results)); }, 100) @@ -427,8 +421,17 @@ export class Choices { * @return */ onMouseOver(e) { - if(this.dropdown && e.target === this.dropdown) { - console.log('hover'); + // If we have a dropdown and it is either the target or one of its children is the target + if(this.dropdown && (e.target === this.dropdown || findAncestor(e.target, this.options.classNames.listDropdown))) { + if(e.target.hasAttribute('data-choice-option')) { + const highlightedOptions = this.dropdown.querySelectorAll(`.${this.options.classNames.highlightedState}`); + // Remove any highlighted options + Array.from(highlightedOptions).forEach((element) => { + element.classList.remove(this.options.classNames.highlightedState); + }); + + e.target.classList.add(this.options.classNames.highlightedState); + } } } @@ -921,7 +924,6 @@ export class Choices { render(callback = this.options.callbackOnRender) { const classNames = this.options.classNames; const activeItems = this.getItemsFilteredByActive(); - // OPTIONS if(this.passedElement.type === 'select-multiple') { @@ -947,7 +949,6 @@ export class Choices { groupOptions.forEach((option, j) => { const dropdownItem = this.createTemplate('option', option); - dropdownGroup.appendChild(dropdownItem); }); @@ -969,6 +970,10 @@ export class Choices { optionListFragment.appendChild(dropdownItem); this.dropdown.appendChild(optionListFragment); + } else { + // Highlight first element in dropdown + const firstEl = this.dropdown.querySelector('[data-choice-option]'); + firstEl.classList.add(this.options.classNames.highlightedState); } } diff --git a/assets/scripts/src/lib/utils.js b/assets/scripts/src/lib/utils.js index 3e2aead2..9ce2265f 100644 --- a/assets/scripts/src/lib/utils.js +++ b/assets/scripts/src/lib/utils.js @@ -273,7 +273,7 @@ export const getElemDistance = function(el) { /** * Determine element height multiplied by any offsets * @private - * @param {Node} el Element to test for + * @param {HTMLElement} el Element to test for * @return {Number} Height of element */ export const getElementOffset = function(el, offset) { @@ -284,6 +284,25 @@ export const getElementOffset = function(el, offset) { return Math.max(el.offsetHeight*elOffset); }; +/** + * Get the next or previous element from a given start point + * @param {HTMLElement} startEl Element to start position from + * @param {String} className The class we will look through + * @param {Number} direction Positive next element, negative previous element + * @return {[HTMLElement} Found element + */ +export const getAdjacentEl = (startEl, className, direction = 1) => { + if(!startEl || !className) return; + + const parent = startEl.parentNode.parentNode; + const children = Array.from(parent.querySelectorAll(className)); + + const startPos = children.indexOf(startEl); + const operatorDirection = direction > 0 ? 1 : -1; + + return children[startPos + operatorDirection]; +}; + /** * Get scroll position based on top/bottom position * @private @@ -301,7 +320,7 @@ export const getScrollPosition = function(position) { /** * Determine whether an element is within the viewport - * @param {Node} el Element to test for + * @param {HTMLElement} el Element to test for * @return {String} Position of scroll * @return {Boolean} */ @@ -353,7 +372,7 @@ export const getRandomNumber = function(min, max) { /** * Turn a string into a node * @param {String} String to convert - * @return {Node} Converted node element + * @return {HTMLElement} Converted node element */ export const strToEl = (function() { var tmpEl = document.createElement('div'); diff --git a/assets/styles/css/choices.css b/assets/styles/css/choices.css index fa65c162..33fdd2a3 100644 --- a/assets/styles/css/choices.css +++ b/assets/styles/css/choices.css @@ -97,7 +97,7 @@ h1, h2, h3, h4, h5, h6 { opacity: .5; } .choices__list--dropdown .choices__item.is-selected:hover { background-color: #FFFFFF; } - .choices__list--dropdown .choices__item--selectable:hover, .choices__list--dropdown .choices__item--selectable.is-highlighted { + .choices__list--dropdown .choices__item--selectable.is-highlighted { background-color: #f9f9f9; } .choices__list--dropdown.is-active { display: block; } diff --git a/assets/styles/css/choices.min.css b/assets/styles/css/choices.min.css index 919a9e37..4b81b826 100644 --- a/assets/styles/css/choices.min.css +++ b/assets/styles/css/choices.min.css @@ -1 +1 @@ -*,:after,:before{box-sizing:border-box}body,html{margin:0;height:100%;widows:100%}html{font-size:62.5%}body{background-color:#333;font-family:"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:1.6rem;color:#fff}label{display:block;margin-bottom:.8rem;font-size:1.4rem;font-weight:500}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:1.2rem;font-weight:500}.container{display:block;margin:auto;max-width:35em;padding:2.4rem}.section{background-color:#fff;padding:2.4rem;color:#333}.choices{margin-bottom:2.4rem;position:relative}.choices__inner{background-color:#f9f9f9;padding:.75rem .75rem .375rem;border:1px solid #ddd;border-radius:.25rem;font-size:1.4rem;cursor:text}.is-active .choices__inner{border-color:#b7b7b7}.choices__inner:focus{outline:1px solid #00bcd4;outline-offset:-1px}.choices__list{margin:0;padding-left:0;list-style-type:none}.choices__list--items{display:inline}.choices__list--items .choices__item{display:inline-block;border-radius:2rem;padding:.4rem 1rem;font-size:1.2rem;margin-right:.375rem;margin-bottom:.375rem;background-color:#00bcd4;border:1px solid #00b1c7;color:#fff;word-break:break-all}.choices__list--items .choices__item.is-selected{background-color:#00a5bb}.choices__list--dropdown{z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;display:none;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;max-height:300px;overflow:auto}.is-active .choices__list--dropdown{border-color:#b7b7b7}.choices__list--dropdown .choices__item{padding:1rem;font-size:1.4rem}.choices__list--dropdown .choices__item.is-selected{opacity:.5}.choices__list--dropdown .choices__item.is-selected:hover{background-color:#fff}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list--dropdown .choices__item--selectable:hover{background-color:#f9f9f9}.choices__list--dropdown.is-active{display:block}.choices__list--dropdown.is-flipped{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.choices__group .choices__heading{font-size:1.2rem;padding:1rem;border-bottom:1px solid #eaeaea;color:gray}.choices__input{background-color:#f9f9f9;font-size:1.4rem;padding:0;margin-bottom:.5rem;display:inline-block;vertical-align:baseline;border:0;border-radius:0;max-width:100%;padding:.4rem 0 .4rem .2rem}.choices__input:focus{outline:0} \ No newline at end of file +*,:after,:before{box-sizing:border-box}body,html{margin:0;height:100%;widows:100%}html{font-size:62.5%}body{background-color:#333;font-family:"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:1.6rem;color:#fff}label{display:block;margin-bottom:.8rem;font-size:1.4rem;font-weight:500}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:1.2rem;font-weight:500}.container{display:block;margin:auto;max-width:35em;padding:2.4rem}.section{background-color:#fff;padding:2.4rem;color:#333}.choices{margin-bottom:2.4rem;position:relative}.choices__inner{background-color:#f9f9f9;padding:.75rem .75rem .375rem;border:1px solid #ddd;border-radius:.25rem;font-size:1.4rem;cursor:text}.is-active .choices__inner{border-color:#b7b7b7}.choices__inner:focus{outline:1px solid #00bcd4;outline-offset:-1px}.choices__list{margin:0;padding-left:0;list-style-type:none}.choices__list--items{display:inline}.choices__list--items .choices__item{display:inline-block;border-radius:2rem;padding:.4rem 1rem;font-size:1.2rem;margin-right:.375rem;margin-bottom:.375rem;background-color:#00bcd4;border:1px solid #00b1c7;color:#fff;word-break:break-all}.choices__list--items .choices__item.is-selected{background-color:#00a5bb}.choices__list--dropdown{z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;display:none;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;max-height:300px;overflow:auto}.is-active .choices__list--dropdown{border-color:#b7b7b7}.choices__list--dropdown .choices__item{padding:1rem;font-size:1.4rem}.choices__list--dropdown .choices__item.is-selected{opacity:.5}.choices__list--dropdown .choices__item.is-selected:hover{background-color:#fff}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f9f9f9}.choices__list--dropdown.is-active{display:block}.choices__list--dropdown.is-flipped{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.choices__group .choices__heading{font-size:1.2rem;padding:1rem;border-bottom:1px solid #eaeaea;color:gray}.choices__input{background-color:#f9f9f9;font-size:1.4rem;padding:0;margin-bottom:.5rem;display:inline-block;vertical-align:baseline;border:0;border-radius:0;max-width:100%;padding:.4rem 0 .4rem .2rem}.choices__input:focus{outline:0} \ No newline at end of file diff --git a/assets/styles/scss/choices.scss b/assets/styles/scss/choices.scss index 5ea0b69a..79532f64 100644 --- a/assets/styles/scss/choices.scss +++ b/assets/styles/scss/choices.scss @@ -114,7 +114,7 @@ h1, h2, h3, h4, h5, h6 { } } .choices__item--selectable { - &:hover, &.is-highlighted { background-color: mix(#000000, #FFFFFF, 2.5%); } + &.is-highlighted { background-color: mix(#000000, #FFFFFF, 2.5%); } } &.is-active { display: block; }