diff --git a/assets/scripts/dist/bundle.js b/assets/scripts/dist/bundle.js index efcdd7f..2d5919e 100644 --- a/assets/scripts/dist/bundle.js +++ b/assets/scripts/dist/bundle.js @@ -1,2 +1,2 @@ -!function(t){function e(n){if(i[n])return i[n].exports;var s=i[n]={exports:{},id:n,loaded:!1};return t[n].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var i={};return e.m=t,e.c=i,e.p="/assets/scripts/dist/",e(0)}([function(t,e,i){t.exports=i(1)},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.Choices=void 0;var o=function(){function t(t,e){for(var i=0;i1)for(var r=1;r=1){var t=e.store.getOptionsFiltedBySelectable(),i=e.input.value,n=new c.default(t,{keys:["label","value"],shouldSort:!0,include:"score"}),s=n.search(i);e.isSearching=!0,e.store.dispatch((0,r.filterOptions)(s))}},500);s()}else n&&(this.isSearching=!1,this.store.dispatch((0,r.activateOptions)()))}}},{key:"onClick",value:function(t){var e=this,i=this.store.getItemsFilteredByActive(),n=!!t.shiftKey;if("select-multiple"!==this.passedElement.type||this.dropdown.classList.contains(this.options.classNames.activeState)||this.toggleDropdown(),this.containerOuter.contains(t.target))this.input!==document.activeElement&&this.input.focus(),t.target.hasAttribute("data-item")?this.handleClick(i,t.target,n):t.target.hasAttribute("data-option")&&!function(){var i=e.store.getOptionsFilteredByActive(),n=t.target.getAttribute("data-id"),s=i.find(function(t){return t.id===parseInt(n)});s.selected||s.disabled||e.addItem(s.value,s.label,s.id)}();else{var s=i.some(function(t){return t.selected===!0});s&&this.deselectAll(),this.containerOuter.classList.remove(this.options.classNames.focusState),"select-multiple"===this.passedElement.type&&this.dropdown.classList.contains(this.options.classNames.activeState)&&this.toggleDropdown()}}},{key:"onPaste",value:function(t){this.options.allowPaste||t.preventDefault()}},{key:"onMouseOver",value:function(t){this.dropdown&&(t.target===this.dropdown||(0,a.findAncestor)(t.target,this.options.classNames.listDropdown))&&t.target.hasAttribute("data-option")&&this.highlightOption(t.target)}},{key:"onFocus",value:function(t){this.containerOuter.classList.contains(this.options.classNames.activeState)||this.containerOuter.classList.add(this.options.classNames.focusState)}},{key:"onBlur",value:function(t){var e=this.dropdown&&this.dropdown.classList.contains(this.options.classNames.activeState);e||this.containerOuter.classList.remove(this.options.classNames.focusState)}},{key:"clearInput",value:function(){this.input.value&&(this.input.value="")}},{key:"regexFilter",value:function(t){var e=new RegExp(this.options.regexFilter,"i"),i=e.test(t);return i}},{key:"scrollToOption",value:function(t,e){var i=this;if(t){var n=this.dropdown.offsetHeight,s=t.offsetHeight,o=t.offsetTop+s,r=this.dropdown.scrollTop+n,a=void 0,l=function c(t,e,n){var s=!1,o=void 0,r=void 0,a=4;n>0?(o=(e-i.dropdown.scrollTop)/a,r=o>1?o:1,i.dropdown.scrollTop=i.dropdown.scrollTop+r,i.dropdown.scrollTop1?o:1,i.dropdown.scrollTop=i.dropdown.scrollTop-r,i.dropdown.scrollTop>e&&(s=!0)),s&&requestAnimationFrame(function(t){c(t,e,n)})};e>0?(a=this.dropdown.scrollTop+o-r,requestAnimationFrame(function(t){l(t,a,1)})):(a=t.offsetTop,requestAnimationFrame(function(t){l(t,a,-1)}))}}},{key:"highlightOption",value:function(t){var e=this,i=Array.from(this.dropdown.querySelectorAll("[data-option-selectable]"));if(i.length){var n=Array.from(this.dropdown.querySelectorAll("."+this.options.classNames.highlightedState));if(n.forEach(function(t){t.classList.remove(e.options.classNames.highlightedState)}),t)t.classList.add(this.options.classNames.highlightedState),this.highlightPosition=i.indexOf(t);else{var s=void 0;s=i.length>this.highlightPosition?i[this.highlightPosition]:i[i.length-1],s||(s=i[0]),s.classList.add(this.options.classNames.highlightedState)}}}},{key:"selectItem",value:function(t){if(t){var e=t.id;this.store.dispatch((0,r.selectItem)(e,!0))}}},{key:"deselectItem",value:function(t){if(t){var e=t.id;this.store.dispatch((0,r.selectItem)(e,!1))}}},{key:"selectAll",value:function(){var t=this,e=this.store.getItems();e.forEach(function(e){t.selectItem(e)})}},{key:"deselectAll",value:function(){var t=this,e=this.store.getItems();e.forEach(function(e){t.deselectItem(e)})}},{key:"addItem",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?-1:arguments[2],n=arguments.length<=3||void 0===arguments[3]?this.options.callbackOnAddItem:arguments[3],s=this.store.getItems(),o=t.trim(),l=e||o,c=i||-1;this.options.prependValue&&(o=this.options.prependValue+o.toString()),this.options.appendValue&&(o+=this.options.appendValue.toString());var u=s?s.length+1:1;this.store.dispatch((0,r.addItem)(o,l,u,c)),n&&((0,a.isType)("Function",n)?n(u,t):console.error("callbackOnAddItem: Callback is not a function"))}},{key:"removeItem",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.options.callbackOnRemoveItem:arguments[1];if(!t||!(0,a.isType)("Object",t))return void console.error("removeItem: No item object was passed to be removed");var i=t.id,n=(t.value,t.optionId);return this.store.dispatch((0,r.removeItem)(i,n)),e?void((0,a.isType)("Function",e)||console.error("callbackOnRemoveItem: Callback is not a function")):void 0}},{key:"removeItemsByValue",value:function(t){return void(t&&(0,a.isType)("String",t)||console.error("removeItemsByValue: No value was passed to be removed"))}},{key:"removeAllItems",value:function(){var t=this,e=this.store.getItemsFilteredByActive();e.forEach(function(e){e.active&&t.removeItem(e)})}},{key:"removeAllSelectedItems",value:function(){var t=this,e=this.store.getItemsFilteredByActive();e.forEach(function(e){e.selected&&e.active&&t.removeItem(e)})}},{key:"showDropdown",value:function(){this.containerOuter.classList.add(this.options.classNames.openState),this.dropdown.classList.add(this.options.classNames.activeState);var t=this.dropdown.getBoundingClientRect(),e=t.top+t.height>=document.body.offsetHeight;e?this.dropdown.classList.add(this.options.classNames.flippedState):this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"hideDropdown",value:function(){var t=this.dropdown.classList.contains(this.options.classNames.flippedState);this.containerOuter.classList.remove(this.options.classNames.openState),this.dropdown.classList.remove(this.options.classNames.activeState),t&&this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"toggleDropdown",value:function(){if(this.dropdown){var t=this.dropdown.classList.contains(this.options.classNames.activeState);t?this.hideDropdown():this.showDropdown()}}},{key:"addOption",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?-1:arguments[1],i=this.store.getOptions(),n=i.length+1,s=t.value,o=t.innerHTML,a=t.disabled||t.parentNode.disabled;this.store.dispatch((0,r.addOption)(s,o,n,e,a)),t.selected&&!a&&this.addItem(s,o,n)}},{key:"addGroup",value:function(t,e,i){var n=this,s=Array.from(t.getElementsByTagName("OPTION")),o=e;s?(this.store.dispatch((0,r.addGroup)(t.label,o,!0,t.disabled)),s.forEach(function(t,e){n.addOption(t,o)})):this.store.dispatch((0,r.addGroup)(t.label,t.id,!1,t.disabled))}},{key:"getTemplate",value:function(t){if(t){for(var e=this.options.templates,i=arguments.length,n=Array(i>1?i-1:0),s=1;i>s;s++)n[s-1]=arguments[s];return e[t].apply(e,n)}}},{key:"createTemplates",value:function(){var t=this.options.classNames,e={containerOuter:function(){return(0,a.strToEl)('
')},containerInner:function(){return(0,a.strToEl)('
')},list:function(){return(0,a.strToEl)('
    ')},input:function(){return(0,a.strToEl)('')},dropdown:function(){return(0,a.strToEl)('
    ')},notice:function(e){return(0,a.strToEl)('
    '+e+"
    ")},option:function(e){return(0,a.strToEl)('\n
    \n '+e.label+"\n
    \n ")},optgroup:function(e){return(0,a.strToEl)('\n
    \n
    '+e.value+"
    \n
    \n ")},item:function(e){return(0,a.strToEl)('\n
    \n '+e.label+"\n
    \n ")}};this.options.templates=(0,a.extend)(this.options.templates,e)}},{key:"generateInput",value:function(){var t=this,e=this.getTemplate("containerOuter"),i=this.getTemplate("containerInner"),n=this.getTemplate("list"),s=this.getTemplate("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,a.wrap)(this.passedElement,i),(0,a.wrap)(i,e),this.options.placeholder&&this.options.placeholderValue&&(s.placeholder=this.options.placeholderValue,s.style.width=(0,a.getWidthOfInput)(s)),this.options.addItems||(s.disabled=!0,e.classList.add(this.options.classNames.disabledState)),e.appendChild(i),i.appendChild(n),i.appendChild(s),"select-multiple"===this.passedElement.type){this.highlightPosition=0;var o=this.getTemplate("dropdown"),r=Array.from(this.passedElement.getElementsByTagName("OPTGROUP"));if(e.appendChild(o),this.dropdown=o,this.isSearching=!1,r.length)r.forEach(function(e,i){var n=0===i;t.addGroup(e,i,n)});else{var l=Array.from(this.passedElement.options);l.forEach(function(e){t.addOption(e)})}}else"text"===this.passedElement.type&&this.presetItems.forEach(function(e){t.addItem(e)});this.containerOuter=e,this.containerInner=i,this.input=s,this.list=n}},{key:"renderGroups",value:function(t,e,i){var n=this;t.forEach(function(t,s){var o=e.filter(function(e){return e.groupId===t.id});o.length>=1&&!function(){var e=n.getTemplate("optgroup",t);o.forEach(function(t,i){var s=n.getTemplate("option",t);e.appendChild(s)}),i.appendChild(e)}()})}},{key:"renderOptions",value:function(t,e){var i=this;t.forEach(function(t,n){var s=i.getTemplate("option",t);e.appendChild(s)})}},{key:"renderItems",value:function(t,e){var i=this,n=this.store.getItemsReducedToValues();this.passedElement.value=n.join(this.options.delimiter),this.list.innerHTML="",t.forEach(function(t){var n=i.getTemplate("item",t);e.appendChild(n)}),this.list.appendChild(e)}},{key:"render",value:function(){if(this.currentState=this.store.getState(),this.currentState!==this.prevState){if((this.currentState.options!==this.prevState.options||this.currentState.groups!==this.prevState.groups)&&"select-multiple"===this.passedElement.type){var t=this.store.getGroupsFilteredByActive(),e=this.store.getOptionsFilteredByActive(),i=document.createDocumentFragment();if(this.dropdown.innerHTML="",t.length>=1&&this.isSearching!==!0?this.renderGroups(t,e,i):e.length>=1&&this.renderOptions(e,i),i.children.length)this.dropdown.appendChild(i),this.highlightOption();else{var n=this.getTemplate("notice","No options to select");this.dropdown.appendChild(n)}}if(this.currentState.items!==this.prevState.items){var s=this.store.getItemsFilteredByActive();if(s){var o=document.createDocumentFragment();this.renderItems(s,o)}}this.prevState=this.currentState}}},{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 t=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnInit:arguments[0];this.createTemplates(),this.generateInput(),this.store.subscribe(this.render),this.render(),this.addEventListeners(),t&&((0,a.isType)("Function",t)?t():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}}]),t}();window.Choices=t.exports=h},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.addItem=function(t,e,i,n){return{type:"ADD_ITEM",value:t,label:e,id:i,optionId:n}},e.removeItem=function(t,e){return{type:"REMOVE_ITEM",id:t,optionId:e}},e.selectItem=function(t,e){return{type:"SELECT_ITEM",id:t,selected:e}},e.addOption=function(t,e,i,n,s){return{type:"ADD_OPTION",value:t,label:e,id:i,groupId:n,disabled:s}},e.filterOptions=function(t){return{type:"FILTER_OPTIONS",results:t}},e.activateOptions=function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return{type:"ACTIVATE_OPTIONS",active:t}},e.addGroup=function(t,e,i,n){return{type:"ADD_GROUP",value:t,id:e,active:i,disabled:n}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=(e.hasClass=function(t,e){return new RegExp(" "+e+" ").test(" "+t.className+" ")},e.capitalise=function(t){return t.replace(/\w\S*/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})},e.isType=function(t,e){var i=Object.prototype.toString.call(e).slice(8,-1);return void 0!==e&&null!==e&&i===t}),n=(e.extend=function o(){for(var t={},e=!1,n=arguments.length,s=function(n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e&&i("Object",n[s])?t[s]=o(!0,t[s],n[s]):t[s]=n[s])},r=0;n>r;r++){var a=arguments[r];i("Object",a)?s(a):console.error("Custom options must be an object")}return t},e.whichTransitionEvent=function(){var t,e=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in i)if(void 0!==e.style[t])return i[t]},e.whichAnimationEvent=function(){var t,e=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(t in i)if(void 0!==e.style[t])return i[t]}),s=(e.getParentsUntil=function(t,e,i){for(var n=[];t&&t!==document;t=t.parentNode){if(e){var s=e.charAt(0);if("."===s&&t.classList.contains(e.substr(1)))break;if("#"===s&&t.id===e.substr(1))break;if("["===s&&t.hasAttribute(e.substr(1,e.length-1)))break;if(t.tagName.toLowerCase()===e)break}if(i){var o=i.charAt(0);"."===o&&t.classList.contains(i.substr(1))&&n.push(t),"#"===o&&t.id===i.substr(1)&&n.push(t),"["===o&&t.hasAttribute(i.substr(1,i.length-1))&&n.push(t),t.tagName.toLowerCase()===i&&n.push(t)}else n.push(t)}return 0===n.length?null:n},e.wrap=function(t,e){return e=e||document.createElement("div"),t.nextSibling?t.parentNode.insertBefore(e,t.nextSibling):t.parentNode.appendChild(e),e.appendChild(t)},e.getSiblings=function(t){for(var e=[],i=t.parentNode.firstChild;i;i=i.nextSibling)1===i.nodeType&&i!==t&&e.push(i);return e},e.findAncestor=function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t},e.debounce=function(t,e,i){var n;return function(){var s=this,o=arguments,r=function(){n=null,i||t.apply(s,o)},a=i&&!n;clearTimeout(n),n=setTimeout(r,e),a&&t.apply(s,o)}},e.getElemDistance=function(t){var e=0;if(t.offsetParent)do e+=t.offsetTop,t=t.offsetParent;while(t);return e>=0?e:0},e.getElementOffset=function(t,e){var i=e;return i>1&&(i=1),i>0&&(i=0),Math.max(t.offsetHeight*i)},e.getAdjacentEl=function(t,e){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(t&&e){var n=t.parentNode.parentNode,s=Array.from(n.querySelectorAll(e)),o=s.indexOf(t),r=i>0?1:-1;return s[o+r]}},e.getScrollPosition=function(t){return"bottom"===t?Math.max((window.scrollY||window.pageYOffset)+(window.innerHeight||document.documentElement.clientHeight)):window.scrollY||window.pageYOffset},e.isInView=function(t,e,i){return this.getScrollPosition(e)>this.getElemDistance(t)+this.getElementOffset(t,i)},e.isScrolledIntoView=function(t,e){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(t){var n=void 0;return n=i>0?e.scrollTop+e.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=e.scrollTop}},e.stripHTML=function(t){var e=document.createElement("DIV");return e.innerHTML=t,e.textContent||e.innerText||""},e.addAnimation=function(t,e){var i=n(),s=function o(){t.classList.remove(e),t.removeEventListener(i,o,!1)};t.classList.add(e),t.addEventListener(i,s,!1)},e.getRandomNumber=function(t,e){return Math.floor(Math.random()*(e-t)+t)},e.strToEl=function(){var t=document.createElement("div");return function(e){var i;for(t.innerHTML=e,i=t.children[0];t.firstChild;)t.removeChild(t.firstChild);return i}}());e.getWidthOfInput=function(t){var e=arguments.length<=1||void 0===arguments[1]?20:arguments[1],i=t.value||t.placeholder,n=t.offsetWidth;if(i){var o=s(''+i+"");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>e&&o.offsetWidth!=t.offsetWidth&&(n=o.offsetWidth+e/4),document.body.removeChild(o)}return n+"px"}},function(t,e,i){!function(e){"use strict";function i(){console.log.apply(console,arguments)}function n(t,e){var i,n,s,o;for(this.list=t,this.options=e=e||{},i=0,o=["sort","shouldSort","verbose","tokenize"],n=o.length;n>i;i++)s=o[i],this.options[s]=s in e?e[s]:l[s];for(i=0,o=["searchFn","sortFn","keys","getFn","include"],n=o.length;n>i;i++)s=o[i],this.options[s]=e[s]||l[s]}function s(t,e,i){var n,r,a,l,c,u;if(e){if(a=e.indexOf("."),-1!==a?(n=e.slice(0,a),r=e.slice(a+1)):n=e,l=t[n],null!==l&&void 0!==l)if(r||"string"!=typeof l&&"number"!=typeof l)if(o(l))for(c=0,u=l.length;u>c;c++)s(l[c],r,i);else r&&s(l,r,i);else i.push(l)}else i.push(t);return i}function o(t){return"[object Array]"===Object.prototype.toString.call(t)}function r(t,e){e=e||{},this.options=e,this.options.location=e.location||r.defaultOptions.location,this.options.distance="distance"in e?e.distance:r.defaultOptions.distance,this.options.threshold="threshold"in e?e.threshold:r.defaultOptions.threshold,this.options.maxPatternLength=e.maxPatternLength||r.defaultOptions.maxPatternLength,this.pattern=e.caseSensitive?t:t.toLowerCase(),this.patternLen=t.length,this.patternLen<=this.options.maxPatternLength&&(this.matchmask=1<s;s++)this.tokenSearchers.push(new i(n[s],t));this.fullSeacher=new i(e,t)},n.prototype._startSearch=function(){var t,e,i,n,s=this.options,o=s.getFn,r=this.list,a=r.length,l=this.options.keys,c=l.length,u=null;if("string"==typeof r[0])for(i=0;a>i;i++)this._analyze("",r[i],i,i);else for(this._keyMap={},i=0;a>i;i++)for(u=r[i],n=0;c>n;n++){if(t=l[n],"string"!=typeof t){if(e=1-t.weight||1,this._keyMap[t.name]={weight:e},t.weight<=0||t.weight>1)throw new Error("Key weight has to be > 0 and <= 1");t=t.name}else this._keyMap[t]={weight:1};this._analyze(t,o(u,t,[]),u,i)}},n.prototype._analyze=function(t,e,n,s){var r,l,c,u,d,h,p,f,v,m,g,y,b,w,I,E=this.options,S=!1;if(void 0!==e&&null!==e)if(l=[],"string"==typeof e){if(r=e.split(a),E.verbose&&i("---------\nKey:",t),E.verbose&&i("Record:",r),this.options.tokenize){for(c=this.tokenSearchers,u=c.length,w=0;ww;w++)h+=l[w];h/=f,E.verbose&&i("Token score average:",h)}v=this.fullSeacher.search(e),E.verbose&&i("Full text score:",v.score),p=v.score,void 0!==h&&(p=(p+h)/2),E.verbose&&i("Score average:",p),(S||v.isMatch)&&(d=this.resultMap[s],d?d.output.push({key:t,score:p,matchedIndices:v.matchedIndices}):(this.resultMap[s]={item:n,output:[{key:t,score:p,matchedIndices:v.matchedIndices}]},this.results.push(this.resultMap[s])))}else if(o(e))for(w=0;we;e++)r=s[e].score,a=u?u[s[e].key].weight:1,c=r*a,1!==a?l=Math.min(l,c):(n+=c,s[e].nScore=c);1===l?d[t].score=n/o:d[t].score=l,this.options.verbose&&i(d[t])}},n.prototype._sort=function(){var t=this.options;t.shouldSort&&(t.verbose&&i("\n\nSorting...."),this.results.sort(t.sortFn))},n.prototype._format=function(){var t,e,n,s,o,r=this.options,a=r.getFn,l=[],c=this.results,u=r.include;for(r.verbose&&i("\n\nOutput:\n\n",c),s=r.id?function(t){c[t].item=a(c[t].item,r.id,[])[0]}:function(){},o=function(t){var e,i,n,s,o,r=c[t];if(u.length>0){if(e={item:r.item},-1!==u.indexOf("matches"))for(n=r.output,e.matches=[],i=0;ie;e++)s(e),t=o(e),l.push(t);return l},r.defaultOptions={location:0,distance:100,threshold:.6,maxPatternLength:32},r.prototype._calculatePatternAlphabet=function(){var t={},e=0;for(e=0;eO.maxPatternLength){if(y=t.match(new RegExp(this.pattern.replace(a,"|"))),b=!!y)for(I=[],e=0,E=y.length;E>e;e++)S=y[e],I.push([t.indexOf(S),S.length-1]);return{isMatch:b,score:b?.5:1,matchedIndices:I}}for(s=O.location,n=t.length,o=O.threshold,r=t.indexOf(this.pattern,s),w=[],e=0;n>e;e++)w[e]=0;for(-1!=r&&(o=Math.min(this._bitapScore(0,r),o),r=t.lastIndexOf(this.pattern,s+this.patternLen),-1!=r&&(o=Math.min(this._bitapScore(0,r),o))),r=-1,m=1,g=[],u=this.patternLen+n,e=0;el;)this._bitapScore(e,s+c)<=o?l=c:u=c,c=Math.floor((u-l)/2+l);for(u=c,d=Math.max(1,s-c+1),h=Math.min(s+c,n)+this.patternLen,p=Array(h+2),p[h+1]=(1<=d;i--)if(v=this.patternAlphabet[t.charAt(i-1)],v&&(w[i-1]=1),0===e?p[i]=(p[i+1]<<1|1)&v:p[i]=(p[i+1]<<1|1)&v|((f[i+1]|f[i])<<1|1)|f[i+1],p[i]&this.matchmask&&(m=this._bitapScore(e,i-1),o>=m)){if(o=m,r=i-1,g.push(r),!(r>s))break;d=Math.max(1,2*s-r)}if(this._bitapScore(e+1,s)>o)break;f=p}return I=this._getMatchedIndices(w),{isMatch:r>=0,score:0===m?.001:m,matchedIndices:I}},r.prototype._getMatchedIndices=function(t){for(var e,i=[],n=-1,s=-1,o=0,r=r=t.length;r>o;o++)e=t[o],e&&-1===n?n=o:e||-1===n||(s=o-1,i.push([n,s]),n=-1);return t[o-1]&&i.push([n,o-1]),i},t.exports=n}(this)},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.Store=void 0;var o=function(){function t(t,e){for(var i=0;i1)for(var r=1;r=1){var t=e.store.getOptionsFiltedBySelectable(),i=e.input.value,n=new c.default(t,{keys:["label","value"],shouldSort:!0,include:"score"}),s=n.search(i);e.isSearching=!0,e.store.dispatch((0,r.filterOptions)(s))}},500);s()}else n&&(this.isSearching=!1,this.store.dispatch((0,r.activateOptions)()))}}},{key:"onClick",value:function(t){var e=this,i=this.store.getItemsFilteredByActive(),n=!!t.shiftKey;if("select-multiple"!==this.passedElement.type||this.dropdown.classList.contains(this.options.classNames.activeState)||this.toggleDropdown(),this.containerOuter.contains(t.target))this.input!==document.activeElement&&this.input.focus(),t.target.hasAttribute("data-item")?this.handleClick(i,t.target,n):t.target.hasAttribute("data-option")&&!function(){var i=e.store.getOptionsFilteredByActive(),n=t.target.getAttribute("data-id"),s=i.find(function(t){return t.id===parseInt(n)});s.selected||s.disabled||e.addItem(s.value,s.label,s.id)}();else{var s=i.some(function(t){return t.selected===!0});s&&this.deselectAll(),this.containerOuter.classList.remove(this.options.classNames.focusState),"select-multiple"===this.passedElement.type&&this.dropdown.classList.contains(this.options.classNames.activeState)&&this.toggleDropdown()}}},{key:"onPaste",value:function(t){this.options.allowPaste||t.preventDefault()}},{key:"onMouseOver",value:function(t){this.dropdown&&(t.target===this.dropdown||(0,a.findAncestor)(t.target,this.options.classNames.listDropdown))&&t.target.hasAttribute("data-option")&&this.highlightOption(t.target)}},{key:"onFocus",value:function(t){this.containerOuter.classList.contains(this.options.classNames.activeState)||this.containerOuter.classList.add(this.options.classNames.focusState)}},{key:"onBlur",value:function(t){var e=this.dropdown&&this.dropdown.classList.contains(this.options.classNames.activeState);e||this.containerOuter.classList.remove(this.options.classNames.focusState)}},{key:"clearInput",value:function(){this.input.value&&(this.input.value="")}},{key:"regexFilter",value:function(t){var e=new RegExp(this.options.regexFilter,"i"),i=e.test(t);return i}},{key:"scrollToOption",value:function(t,e){var i=this;if(t){var n=this.dropdown.offsetHeight,s=t.offsetHeight,o=t.offsetTop+s,r=this.dropdown.scrollTop+n,a=void 0,l=function c(t,e,n){var s=!1,o=void 0,r=void 0,a=4;n>0?(o=(e-i.dropdown.scrollTop)/a,r=o>1?o:1,i.dropdown.scrollTop=i.dropdown.scrollTop+r,i.dropdown.scrollTop1?o:1,i.dropdown.scrollTop=i.dropdown.scrollTop-r,i.dropdown.scrollTop>e&&(s=!0)),s&&requestAnimationFrame(function(t){c(t,e,n)})};e>0?(a=this.dropdown.scrollTop+o-r,requestAnimationFrame(function(t){l(t,a,1)})):(a=t.offsetTop,requestAnimationFrame(function(t){l(t,a,-1)}))}}},{key:"highlightOption",value:function(t){var e=this,i=Array.from(this.dropdown.querySelectorAll("[data-option-selectable]"));if(i.length){var n=Array.from(this.dropdown.querySelectorAll("."+this.options.classNames.highlightedState));if(n.forEach(function(t){t.classList.remove(e.options.classNames.highlightedState)}),t)t.classList.add(this.options.classNames.highlightedState),this.highlightPosition=i.indexOf(t);else{var s=void 0;s=i.length>this.highlightPosition?i[this.highlightPosition]:i[i.length-1],s||(s=i[0]),s.classList.add(this.options.classNames.highlightedState)}}}},{key:"selectItem",value:function(t){if(t){var e=t.id;this.store.dispatch((0,r.selectItem)(e,!0))}}},{key:"deselectItem",value:function(t){if(t){var e=t.id;this.store.dispatch((0,r.selectItem)(e,!1))}}},{key:"selectAll",value:function(){var t=this,e=this.store.getItems();e.forEach(function(e){t.selectItem(e)})}},{key:"deselectAll",value:function(){var t=this,e=this.store.getItems();e.forEach(function(e){t.deselectItem(e)})}},{key:"addItem",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?-1:arguments[2],n=arguments.length<=3||void 0===arguments[3]?this.options.callbackOnAddItem:arguments[3],s=this.store.getItems(),o=t.trim(),l=e||o,c=i||-1;this.options.prependValue&&(o=this.options.prependValue+o.toString()),this.options.appendValue&&(o+=this.options.appendValue.toString());var u=s?s.length+1:1;this.store.dispatch((0,r.addItem)(o,l,u,c)),n&&((0,a.isType)("Function",n)?n(u,t):console.error("callbackOnAddItem: Callback is not a function"))}},{key:"removeItem",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.options.callbackOnRemoveItem:arguments[1];if(!t||!(0,a.isType)("Object",t))return void console.error("removeItem: No item object was passed to be removed");var i=t.id,n=(t.value,t.optionId);return this.store.dispatch((0,r.removeItem)(i,n)),e?void((0,a.isType)("Function",e)||console.error("callbackOnRemoveItem: Callback is not a function")):void 0}},{key:"removeItemsByValue",value:function(t){return void(t&&(0,a.isType)("String",t)||console.error("removeItemsByValue: No value was passed to be removed"))}},{key:"removeAllItems",value:function(){var t=this,e=this.store.getItemsFilteredByActive();e.forEach(function(e){e.active&&t.removeItem(e)})}},{key:"removeAllSelectedItems",value:function(){var t=this,e=this.store.getItemsFilteredByActive();e.forEach(function(e){e.selected&&e.active&&t.removeItem(e)})}},{key:"showDropdown",value:function(){this.containerOuter.classList.add(this.options.classNames.openState),this.dropdown.classList.add(this.options.classNames.activeState);var t=this.dropdown.getBoundingClientRect(),e=t.top+t.height>=document.body.offsetHeight;e?this.dropdown.classList.add(this.options.classNames.flippedState):this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"hideDropdown",value:function(){var t=this.dropdown.classList.contains(this.options.classNames.flippedState);this.containerOuter.classList.remove(this.options.classNames.openState),this.dropdown.classList.remove(this.options.classNames.activeState),t&&this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"toggleDropdown",value:function(){if(this.dropdown){var t=this.dropdown.classList.contains(this.options.classNames.activeState);t?this.hideDropdown():this.showDropdown()}}},{key:"addOption",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?-1:arguments[1],i=this.store.getOptions(),n=i.length+1,s=t.value,o=t.innerHTML,a=t.disabled||t.parentNode.disabled;this.store.dispatch((0,r.addOption)(s,o,n,e,a)),t.selected&&!a&&this.addItem(s,o,n)}},{key:"addGroup",value:function(t,e,i){var n=this,s=Array.from(t.getElementsByTagName("OPTION")),o=e;s?(this.store.dispatch((0,r.addGroup)(t.label,o,!0,t.disabled)),s.forEach(function(t,e){n.addOption(t,o)})):this.store.dispatch((0,r.addGroup)(t.label,t.id,!1,t.disabled))}},{key:"getTemplate",value:function(t){if(t){for(var e=this.options.templates,i=arguments.length,n=Array(i>1?i-1:0),s=1;i>s;s++)n[s-1]=arguments[s];return e[t].apply(e,n)}}},{key:"createTemplates",value:function(){var t=this.options.classNames,e={containerOuter:function(){return(0,a.strToEl)('
    ')},containerInner:function(){return(0,a.strToEl)('
    ')},list:function(){return(0,a.strToEl)('
      ')},input:function(){return(0,a.strToEl)('')},dropdown:function(){return(0,a.strToEl)('
      ')},notice:function(e){return(0,a.strToEl)('
      '+e+"
      ")},option:function(e){return(0,a.strToEl)('\n
      \n '+e.label+"\n
      \n ")},optgroup:function(e){return(0,a.strToEl)('\n
      \n
      '+e.value+"
      \n
      \n ")},item:function(e){return(0,a.strToEl)('\n
      \n '+e.label+"\n
      \n ")}};this.options.templates=(0,a.extend)(this.options.templates,e)}},{key:"generateInput",value:function(){var t=this,e=this.getTemplate("containerOuter"),i=this.getTemplate("containerInner"),n=this.getTemplate("list"),s=this.getTemplate("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,a.wrap)(this.passedElement,i),(0,a.wrap)(i,e),this.options.placeholder&&this.options.placeholderValue&&(s.placeholder=this.options.placeholderValue,s.style.width=(0,a.getWidthOfInput)(s)),this.options.addItems||(s.disabled=!0,e.classList.add(this.options.classNames.disabledState)),e.appendChild(i),i.appendChild(n),i.appendChild(s),"select-multiple"===this.passedElement.type){this.highlightPosition=0;var o=this.getTemplate("dropdown"),r=Array.from(this.passedElement.getElementsByTagName("OPTGROUP"));if(e.appendChild(o),this.dropdown=o,this.isSearching=!1,r.length)r.forEach(function(e,i){var n=0===i;t.addGroup(e,i,n)});else{var l=Array.from(this.passedElement.options);l.forEach(function(e){t.addOption(e)})}}else"text"===this.passedElement.type&&this.presetItems.forEach(function(e){t.addItem(e)});this.containerOuter=e,this.containerInner=i,this.input=s,this.list=n}},{key:"renderGroups",value:function(t,e,i){var n=this;t.forEach(function(t,s){var o=e.filter(function(e){return e.groupId===t.id});o.length>=1&&!function(){var e=n.getTemplate("optgroup",t);o.forEach(function(t,i){var s=n.getTemplate("option",t);e.appendChild(s)}),i.appendChild(e)}()})}},{key:"renderOptions",value:function(t,e){var i=this;t.forEach(function(t,n){var s=i.getTemplate("option",t);e.appendChild(s)})}},{key:"renderItems",value:function(t,e){var i=this,n=this.store.getItemsReducedToValues();this.passedElement.value=n.join(this.options.delimiter),this.list.innerHTML="",t.forEach(function(t){var n=i.getTemplate("item",t);e.appendChild(n)}),this.list.appendChild(e)}},{key:"render",value:function(){if(this.currentState=this.store.getState(),this.currentState!==this.prevState){if((this.currentState.options!==this.prevState.options||this.currentState.groups!==this.prevState.groups)&&"select-multiple"===this.passedElement.type){var t=this.store.getGroupsFilteredByActive(),e=this.store.getOptionsFilteredByActive(),i=document.createDocumentFragment();if(this.dropdown.innerHTML="",t.length>=1&&this.isSearching!==!0?this.renderGroups(t,e,i):e.length>=1&&this.renderOptions(e,i),i.children.length)this.dropdown.appendChild(i),this.highlightOption();else{var n=this.getTemplate("notice","No options to select");this.dropdown.appendChild(n)}}if(this.currentState.items!==this.prevState.items){var s=this.store.getItemsFilteredByActive();if(s){var o=document.createDocumentFragment();this.renderItems(s,o)}}this.prevState=this.currentState}}},{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 t=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnInit:arguments[0];this.createTemplates(),this.generateInput(),this.store.subscribe(this.render),this.render(),this.addEventListeners(),t&&((0,a.isType)("Function",t)?t():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}}]),t}();window.Choices=t.exports=h},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.addItem=function(t,e,i,n){return{type:"ADD_ITEM",value:t,label:e,id:i,optionId:n}},e.removeItem=function(t,e){return{type:"REMOVE_ITEM",id:t,optionId:e}},e.selectItem=function(t,e){return{type:"SELECT_ITEM",id:t,selected:e}},e.addOption=function(t,e,i,n,s){return{type:"ADD_OPTION",value:t,label:e,id:i,groupId:n,disabled:s}},e.filterOptions=function(t){return{type:"FILTER_OPTIONS",results:t}},e.activateOptions=function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return{type:"ACTIVATE_OPTIONS",active:t}},e.addGroup=function(t,e,i,n){return{type:"ADD_GROUP",value:t,id:e,active:i,disabled:n}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=(e.hasClass=function(t,e){return new RegExp(" "+e+" ").test(" "+t.className+" ")},e.capitalise=function(t){return t.replace(/\w\S*/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})},e.isType=function(t,e){var i=Object.prototype.toString.call(e).slice(8,-1);return void 0!==e&&null!==e&&i===t}),n=(e.extend=function o(){for(var t={},e=!1,n=arguments.length,s=function(n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e&&i("Object",n[s])?t[s]=o(!0,t[s],n[s]):t[s]=n[s])},r=0;n>r;r++){var a=arguments[r];i("Object",a)?s(a):console.error("Custom options must be an object")}return t},e.whichTransitionEvent=function(){var t,e=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in i)if(void 0!==e.style[t])return i[t]},e.whichAnimationEvent=function(){var t,e=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(t in i)if(void 0!==e.style[t])return i[t]}),s=(e.getParentsUntil=function(t,e,i){for(var n=[];t&&t!==document;t=t.parentNode){if(e){var s=e.charAt(0);if("."===s&&t.classList.contains(e.substr(1)))break;if("#"===s&&t.id===e.substr(1))break;if("["===s&&t.hasAttribute(e.substr(1,e.length-1)))break;if(t.tagName.toLowerCase()===e)break}if(i){var o=i.charAt(0);"."===o&&t.classList.contains(i.substr(1))&&n.push(t),"#"===o&&t.id===i.substr(1)&&n.push(t),"["===o&&t.hasAttribute(i.substr(1,i.length-1))&&n.push(t),t.tagName.toLowerCase()===i&&n.push(t)}else n.push(t)}return 0===n.length?null:n},e.wrap=function(t,e){return e=e||document.createElement("div"),t.nextSibling?t.parentNode.insertBefore(e,t.nextSibling):t.parentNode.appendChild(e),e.appendChild(t)},e.getSiblings=function(t){for(var e=[],i=t.parentNode.firstChild;i;i=i.nextSibling)1===i.nodeType&&i!==t&&e.push(i);return e},e.findAncestor=function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t},e.debounce=function(t,e,i){var n;return function(){var s=this,o=arguments,r=function(){n=null,i||t.apply(s,o)},a=i&&!n;clearTimeout(n),n=setTimeout(r,e),a&&t.apply(s,o)}},e.getElemDistance=function(t){var e=0;if(t.offsetParent)do e+=t.offsetTop,t=t.offsetParent;while(t);return e>=0?e:0},e.getElementOffset=function(t,e){var i=e;return i>1&&(i=1),i>0&&(i=0),Math.max(t.offsetHeight*i)},e.getAdjacentEl=function(t,e){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(t&&e){var n=t.parentNode.parentNode,s=Array.from(n.querySelectorAll(e)),o=s.indexOf(t),r=i>0?1:-1;return s[o+r]}},e.getScrollPosition=function(t){return"bottom"===t?Math.max((window.scrollY||window.pageYOffset)+(window.innerHeight||document.documentElement.clientHeight)):window.scrollY||window.pageYOffset},e.isInView=function(t,e,i){return this.getScrollPosition(e)>this.getElemDistance(t)+this.getElementOffset(t,i)},e.isScrolledIntoView=function(t,e){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(t){var n=void 0;return n=i>0?e.scrollTop+e.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=e.scrollTop}},e.stripHTML=function(t){var e=document.createElement("DIV");return e.innerHTML=t,e.textContent||e.innerText||""},e.addAnimation=function(t,e){var i=n(),s=function o(){t.classList.remove(e),t.removeEventListener(i,o,!1)};t.classList.add(e),t.addEventListener(i,s,!1)},e.getRandomNumber=function(t,e){return Math.floor(Math.random()*(e-t)+t)},e.strToEl=function(){var t=document.createElement("div");return function(e){var i;for(t.innerHTML=e,i=t.children[0];t.firstChild;)t.removeChild(t.firstChild);return i}}());e.getWidthOfInput=function(t){var e=arguments.length<=1||void 0===arguments[1]?20:arguments[1],i=t.value||t.placeholder,n=t.offsetWidth;if(i){var o=s(''+i+"");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>e&&o.offsetWidth!=t.offsetWidth&&(n=o.offsetWidth+e/4),document.body.removeChild(o)}return n+"px"}},function(t,e,i){!function(e){"use strict";function i(){console.log.apply(console,arguments)}function n(t,e){var i,n,s,o;for(this.list=t,this.options=e=e||{},i=0,o=["sort","shouldSort","verbose","tokenize"],n=o.length;n>i;i++)s=o[i],this.options[s]=s in e?e[s]:l[s];for(i=0,o=["searchFn","sortFn","keys","getFn","include"],n=o.length;n>i;i++)s=o[i],this.options[s]=e[s]||l[s]}function s(t,e,i){var n,r,a,l,c,u;if(e){if(a=e.indexOf("."),-1!==a?(n=e.slice(0,a),r=e.slice(a+1)):n=e,l=t[n],null!==l&&void 0!==l)if(r||"string"!=typeof l&&"number"!=typeof l)if(o(l))for(c=0,u=l.length;u>c;c++)s(l[c],r,i);else r&&s(l,r,i);else i.push(l)}else i.push(t);return i}function o(t){return"[object Array]"===Object.prototype.toString.call(t)}function r(t,e){e=e||{},this.options=e,this.options.location=e.location||r.defaultOptions.location,this.options.distance="distance"in e?e.distance:r.defaultOptions.distance,this.options.threshold="threshold"in e?e.threshold:r.defaultOptions.threshold,this.options.maxPatternLength=e.maxPatternLength||r.defaultOptions.maxPatternLength,this.pattern=e.caseSensitive?t:t.toLowerCase(),this.patternLen=t.length,this.patternLen<=this.options.maxPatternLength&&(this.matchmask=1<s;s++)this.tokenSearchers.push(new i(n[s],t));this.fullSeacher=new i(e,t)},n.prototype._startSearch=function(){var t,e,i,n,s=this.options,o=s.getFn,r=this.list,a=r.length,l=this.options.keys,c=l.length,u=null;if("string"==typeof r[0])for(i=0;a>i;i++)this._analyze("",r[i],i,i);else for(this._keyMap={},i=0;a>i;i++)for(u=r[i],n=0;c>n;n++){if(t=l[n],"string"!=typeof t){if(e=1-t.weight||1,this._keyMap[t.name]={weight:e},t.weight<=0||t.weight>1)throw new Error("Key weight has to be > 0 and <= 1");t=t.name}else this._keyMap[t]={weight:1};this._analyze(t,o(u,t,[]),u,i)}},n.prototype._analyze=function(t,e,n,s){var r,l,c,u,d,h,p,f,v,m,g,y,b,w,I,E=this.options,S=!1;if(void 0!==e&&null!==e)if(l=[],"string"==typeof e){if(r=e.split(a),E.verbose&&i("---------\nKey:",t),E.verbose&&i("Record:",r),this.options.tokenize){for(c=this.tokenSearchers,u=c.length,w=0;ww;w++)h+=l[w];h/=f,E.verbose&&i("Token score average:",h)}v=this.fullSeacher.search(e),E.verbose&&i("Full text score:",v.score),p=v.score,void 0!==h&&(p=(p+h)/2),E.verbose&&i("Score average:",p),(S||v.isMatch)&&(d=this.resultMap[s],d?d.output.push({key:t,score:p,matchedIndices:v.matchedIndices}):(this.resultMap[s]={item:n,output:[{key:t,score:p,matchedIndices:v.matchedIndices}]},this.results.push(this.resultMap[s])))}else if(o(e))for(w=0;we;e++)r=s[e].score,a=u?u[s[e].key].weight:1,c=r*a,1!==a?l=Math.min(l,c):(n+=c,s[e].nScore=c);1===l?d[t].score=n/o:d[t].score=l,this.options.verbose&&i(d[t])}},n.prototype._sort=function(){var t=this.options;t.shouldSort&&(t.verbose&&i("\n\nSorting...."),this.results.sort(t.sortFn))},n.prototype._format=function(){var t,e,n,s,o,r=this.options,a=r.getFn,l=[],c=this.results,u=r.include;for(r.verbose&&i("\n\nOutput:\n\n",c),s=r.id?function(t){c[t].item=a(c[t].item,r.id,[])[0]}:function(){},o=function(t){var e,i,n,s,o,r=c[t];if(u.length>0){if(e={item:r.item},-1!==u.indexOf("matches"))for(n=r.output,e.matches=[],i=0;ie;e++)s(e),t=o(e),l.push(t);return l},r.defaultOptions={location:0,distance:100,threshold:.6,maxPatternLength:32},r.prototype._calculatePatternAlphabet=function(){var t={},e=0;for(e=0;eO.maxPatternLength){if(y=t.match(new RegExp(this.pattern.replace(a,"|"))),b=!!y)for(I=[],e=0,E=y.length;E>e;e++)S=y[e],I.push([t.indexOf(S),S.length-1]);return{isMatch:b,score:b?.5:1,matchedIndices:I}}for(s=O.location,n=t.length,o=O.threshold,r=t.indexOf(this.pattern,s),w=[],e=0;n>e;e++)w[e]=0;for(-1!=r&&(o=Math.min(this._bitapScore(0,r),o),r=t.lastIndexOf(this.pattern,s+this.patternLen),-1!=r&&(o=Math.min(this._bitapScore(0,r),o))),r=-1,m=1,g=[],u=this.patternLen+n,e=0;el;)this._bitapScore(e,s+c)<=o?l=c:u=c,c=Math.floor((u-l)/2+l);for(u=c,d=Math.max(1,s-c+1),h=Math.min(s+c,n)+this.patternLen,p=Array(h+2),p[h+1]=(1<=d;i--)if(v=this.patternAlphabet[t.charAt(i-1)],v&&(w[i-1]=1),0===e?p[i]=(p[i+1]<<1|1)&v:p[i]=(p[i+1]<<1|1)&v|((f[i+1]|f[i])<<1|1)|f[i+1],p[i]&this.matchmask&&(m=this._bitapScore(e,i-1),o>=m)){if(o=m,r=i-1,g.push(r),!(r>s))break;d=Math.max(1,2*s-r)}if(this._bitapScore(e+1,s)>o)break;f=p}return I=this._getMatchedIndices(w),{isMatch:r>=0,score:0===m?.001:m,matchedIndices:I}},r.prototype._getMatchedIndices=function(t){for(var e,i=[],n=-1,s=-1,o=0,r=r=t.length;r>o;o++)e=t[o],e&&-1===n?n=o:e||-1===n||(s=o-1,i.push([n,s]),n=-1);return t[o-1]&&i.push([n,o-1]),i},t.exports=n}(this)},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.Store=void 0;var o=function(){function t(t,e){for(var i=0;ii;i++)e[i]=arguments[i];return function(t){return function(i,n,s){var r=t(i,n,s),l=r.dispatch,c=[],u={getState:r.getState,dispatch:function(t){return l(t)}};return c=e.map(function(t){return t(u)}),l=a.default.apply(void 0,c)(r.dispatch),o({},r,{dispatch:l})}}}var o=Object.assign||function(t){for(var e=1;ei;i++)e[i]=arguments[i];return function(){if(0===e.length)return arguments.length<=0?void 0:arguments[0];var t=e[e.length-1],i=e.slice(0,-1);return i.reduceRight(function(t,e){return e(t)},t.apply(void 0,arguments))}}e.__esModule=!0,e.default=i},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var s=i(6),o=i(18),r=n(o),a=i(19),l=n(a),c=i(20),u=n(c),d=(0,s.combineReducers)({items:r.default,groups:l.default,options:u.default});e.default=d},function(t,e){"use strict";function i(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e-1?t.map(function(t){return t.id===parseInt(e.optionId)&&(t.selected=!0),t}):t;case"REMOVE_ITEM":return e.optionId>-1?t.map(function(t){return t.id===parseInt(e.optionId)&&(t.selected=!1),t}):t;case"FILTER_OPTIONS":var n=e.results,s=t.map(function(t,e){return t.active=n.some(function(e){return e.item.id===t.id?(t.score=e.score,!0):void 0}),t}).sort(function(t,e){return t.score-e.score});return s;case"ACTIVATE_OPTIONS":return t.map(function(t){return t.active=e.active,t});default:return t}};e.default=n}]); \ No newline at end of file diff --git a/assets/scripts/dist/choices.min.js b/assets/scripts/dist/choices.min.js new file mode 100644 index 0000000..de065dc --- /dev/null +++ b/assets/scripts/dist/choices.min.js @@ -0,0 +1,2 @@ +!function(t){function e(n){if(i[n])return i[n].exports;var s=i[n]={exports:{},id:n,loaded:!1};return t[n].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var i={};return e.m=t,e.c=i,e.p="/assets/scripts/dist/",e(0)}([function(t,e,i){t.exports=i(1)},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.Choices=void 0;var o=function(){function t(t,e){for(var i=0;i1)for(var o=1;o=1){var t=e.store.getOptionsFiltedBySelectable(),i=e.input.value,n=new l.default(t,{keys:["label","value"],shouldSort:!0,include:"score"}),s=n.search(i);e.isSearching=!0,e.store.dispatch((0,r.filterOptions)(s))}},500);s()}else n&&(this.isSearching=!1,this.store.dispatch((0,r.activateOptions)()))}}},{key:"onClick",value:function(t){var e=this,i=this.store.getItemsFilteredByActive(),n=!!t.shiftKey;if(this.dropdown&&!this.dropdown.classList.contains(this.options.classNames.activeState)&&this.toggleDropdown(),this.containerOuter.contains(t.target))this.input!==document.activeElement&&this.input.focus(),t.target.hasAttribute("data-item")?this.options.removeItems&&!function(){var s=t.target.getAttribute("data-id");i.forEach(function(t){t.id!==parseInt(s)||t.selected?n||e.deselectItem(t):e.selectItem(t)})}():t.target.hasAttribute("data-option")&&!function(){var i=e.store.getOptionsFilteredByActive(),n=t.target.getAttribute("data-id"),s=i.find(function(t){return t.id===parseInt(n)});s.selected||s.disabled||(e.addItem(s.value,s.label,s.id),"select-one"===e.passedElement.type&&e.toggleDropdown())}();else{var s=i.some(function(t){return t.selected===!0});s&&this.deselectAll(),this.containerOuter.classList.remove(this.options.classNames.focusState),this.dropdown&&this.dropdown.classList.contains(this.options.classNames.activeState)&&this.toggleDropdown()}}},{key:"onPaste",value:function(t){this.options.allowPaste||t.preventDefault()}},{key:"onMouseOver",value:function(t){this.dropdown&&(t.target===this.dropdown||(0,a.findAncestor)(t.target,this.options.classNames.listDropdown))&&t.target.hasAttribute("data-option")&&this.highlightOption(t.target)}},{key:"onFocus",value:function(t){this.containerOuter.classList.contains(this.options.classNames.activeState)||this.containerOuter.classList.add(this.options.classNames.focusState)}},{key:"onBlur",value:function(t){var e=this.dropdown&&this.dropdown.classList.contains(this.options.classNames.activeState);e||this.containerOuter.classList.remove(this.options.classNames.focusState)}},{key:"clearInput",value:function(){this.input.value&&(this.input.value="")}},{key:"regexFilter",value:function(t){var e=new RegExp(this.options.regexFilter,"i"),i=e.test(t);return i}},{key:"scrollToOption",value:function(t,e){var i=this;if(t){var n=this.dropdown.offsetHeight,s=t.offsetHeight,o=t.offsetTop+s,r=this.dropdown.scrollTop+n,a=void 0,c=function l(t,e,n){var s=!1,o=void 0,r=void 0,a=4;n>0?(o=(e-i.dropdown.scrollTop)/a,r=o>1?o:1,i.dropdown.scrollTop=i.dropdown.scrollTop+r,i.dropdown.scrollTop1?o:1,i.dropdown.scrollTop=i.dropdown.scrollTop-r,i.dropdown.scrollTop>e&&(s=!0)),s&&requestAnimationFrame(function(t){l(t,e,n)})};e>0?(a=this.dropdown.scrollTop+o-r,requestAnimationFrame(function(t){c(t,a,1)})):(a=t.offsetTop,requestAnimationFrame(function(t){c(t,a,-1)}))}}},{key:"highlightOption",value:function(t){var e=this,i=Array.from(this.dropdown.querySelectorAll("[data-option-selectable]"));if(i.length){var n=Array.from(this.dropdown.querySelectorAll("."+this.options.classNames.highlightedState));if(n.forEach(function(t){t.classList.remove(e.options.classNames.highlightedState)}),t)t.classList.add(this.options.classNames.highlightedState),this.highlightPosition=i.indexOf(t);else{var s=void 0;s=i.length>this.highlightPosition?i[this.highlightPosition]:i[i.length-1],s||(s=i[0]),s.classList.add(this.options.classNames.highlightedState)}}}},{key:"selectItem",value:function(t){if(t){var e=t.id;this.store.dispatch((0,r.selectItem)(e,!0))}}},{key:"deselectItem",value:function(t){if(t){var e=t.id;this.store.dispatch((0,r.selectItem)(e,!1))}}},{key:"selectAll",value:function(){var t=this,e=this.store.getItems();e.forEach(function(e){t.selectItem(e)})}},{key:"deselectAll",value:function(){var t=this,e=this.store.getItems();e.forEach(function(e){t.deselectItem(e)})}},{key:"addItem",value:function(t,e){var i=arguments.length<=2||void 0===arguments[2]?-1:arguments[2],n=arguments.length<=3||void 0===arguments[3]?this.options.callbackOnAddItem:arguments[3],s=this.store.getItems(),o=t.trim(),c=e||o,l=i||-1;this.options.prependValue&&(o=this.options.prependValue+o.toString()),this.options.appendValue&&(o+=this.options.appendValue.toString());var u=s?s.length+1:1;this.store.dispatch((0,r.addItem)(o,c,u,l)),"select-one"===this.passedElement.type&&this.removeActiveItems(u),n&&((0,a.isType)("Function",n)?n(u,t):console.error("callbackOnAddItem: Callback is not a function"))}},{key:"removeItem",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.options.callbackOnRemoveItem:arguments[1];if(!t||!(0,a.isType)("Object",t))return void console.error("removeItem: No item object was passed to be removed");var i=t.id,n=(t.value,t.optionId);return this.store.dispatch((0,r.removeItem)(i,n)),e?void((0,a.isType)("Function",e)||console.error("callbackOnRemoveItem: Callback is not a function")):void 0}},{key:"removeItemsByValue",value:function(t){return void(t&&(0,a.isType)("String",t)||console.error("removeItemsByValue: No value was passed to be removed"))}},{key:"removeActiveItems",value:function(t){var e=this,i=this.store.getItemsFilteredByActive();i.forEach(function(i){i.active&&t!==i.id&&e.removeItem(i)})}},{key:"removeSelectedItems",value:function(){var t=this,e=this.store.getItemsFilteredByActive();e.forEach(function(e){e.selected&&e.active&&t.removeItem(e)})}},{key:"showDropdown",value:function(){this.containerOuter.classList.add(this.options.classNames.openState),this.dropdown.classList.add(this.options.classNames.activeState);var t=this.dropdown.getBoundingClientRect(),e=t.top+t.height>=document.body.offsetHeight;e?this.dropdown.classList.add(this.options.classNames.flippedState):this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"hideDropdown",value:function(){var t=this.dropdown.classList.contains(this.options.classNames.flippedState);this.containerOuter.classList.remove(this.options.classNames.openState),this.dropdown.classList.remove(this.options.classNames.activeState),t&&this.dropdown.classList.remove(this.options.classNames.flippedState)}},{key:"toggleDropdown",value:function(){if(this.dropdown){var t=this.dropdown.classList.contains(this.options.classNames.activeState);t?this.hideDropdown():this.showDropdown()}}},{key:"addOption",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?-1:arguments[1],i=this.store.getOptions(),n=i.length+1,s=t.value,o=t.innerHTML,a=t.disabled||t.parentNode.disabled;this.store.dispatch((0,r.addOption)(s,o,n,e,a)),t.selected&&!a&&this.addItem(s,o,n)}},{key:"addGroup",value:function(t,e,i){var n=this,s=Array.from(t.getElementsByTagName("OPTION")),o=e;s?(this.store.dispatch((0,r.addGroup)(t.label,o,!0,t.disabled)),s.forEach(function(t,e){n.addOption(t,o)})):this.store.dispatch((0,r.addGroup)(t.label,t.id,!1,t.disabled))}},{key:"getTemplate",value:function(t){if(t){for(var e=this.options.templates,i=arguments.length,n=Array(i>1?i-1:0),s=1;i>s;s++)n[s-1]=arguments[s];return e[t].apply(e,n)}}},{key:"createTemplates",value:function(){var t=this,e=this.options.classNames,i={containerOuter:function(){return(0,a.strToEl)('
      ')},containerInner:function(){return(0,a.strToEl)('
      ')},list:function(){return(0,a.strToEl)('
      ')},input:function(){return(0,a.strToEl)('')},dropdown:function(){return(0,a.strToEl)('
      ')},notice:function(t){return(0,a.strToEl)('
      '+t+"
      ")},option:function(t){return(0,a.strToEl)('\n
      \n '+t.label+"\n
      \n ")},optgroup:function(t){return(0,a.strToEl)('\n
      \n
      '+t.value+"
      \n
      \n ")},item:function(t){return(0,a.strToEl)('\n
      \n '+t.label+"\n
      \n ")}};this.options.templates=(0,a.extend)(this.options.templates,i)}},{key:"generateInput",value:function(){var t=this,e=this.getTemplate("containerOuter"),i=this.getTemplate("containerInner"),n=this.getTemplate("list"),s=this.getTemplate("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,a.wrap)(this.passedElement,i),(0,a.wrap)(i,e),this.options.placeholder&&this.options.placeholderValue&&"select-one"!==this.passedElement.type&&(s.placeholder=this.options.placeholderValue,s.style.width=(0,a.getWidthOfInput)(s)),this.options.addItems||(s.disabled=!0,e.classList.add(this.options.classNames.disabledState)),e.appendChild(i),i.appendChild(n),i.appendChild(s),"select-multiple"===this.passedElement.type||"select-one"===this.passedElement.type){this.highlightPosition=0;var o=this.getTemplate("dropdown"),r=Array.from(this.passedElement.getElementsByTagName("OPTGROUP"));if(e.appendChild(o),this.dropdown=o,this.isSearching=!1,r.length)r.forEach(function(e,i){var n=0===i;t.addGroup(e,i,n)});else{var c=Array.from(this.passedElement.options);c.forEach(function(e){t.addOption(e)})}}else"select-one"===this.passedElement.type?console.log("select element"):"text"===this.passedElement.type&&this.presetItems.forEach(function(e){t.addItem(e)});this.containerOuter=e,this.containerInner=i,this.input=s,this.list=n}},{key:"renderGroups",value:function(t,e,i){var n=this;t.forEach(function(t,s){var o=e.filter(function(e){return e.groupId===t.id});o.length>=1&&!function(){var e=n.getTemplate("optgroup",t);o.forEach(function(t,i){var s=n.getTemplate("option",t);e.appendChild(s)}),i.appendChild(e)}()})}},{key:"renderOptions",value:function(t,e){var i=this;t.forEach(function(t,n){var s=i.getTemplate("option",t);"select-one"===i.passedElement.type?e.appendChild(s):t.selected||e.appendChild(s)})}},{key:"renderItems",value:function(t,e){var i=this,n=this.store.getItemsReducedToValues();this.passedElement.value=n.join(this.options.delimiter),this.list.innerHTML="",t.forEach(function(t){var n=i.getTemplate("item",t);e.appendChild(n)}),this.list.appendChild(e)}},{key:"render",value:function(){if(this.currentState=this.store.getState(),this.currentState!==this.prevState){if(!(this.currentState.options===this.prevState.options&&this.currentState.groups===this.prevState.groups||"select-multiple"!==this.passedElement.type&&"select-one"!==this.passedElement.type)){var t=this.store.getGroupsFilteredByActive(),e=this.store.getOptionsFilteredByActive(),i=document.createDocumentFragment();if(this.dropdown.innerHTML="",t.length>=1&&this.isSearching!==!0?this.renderGroups(t,e,i):e.length>=1&&this.renderOptions(e,i),i.children.length)this.dropdown.appendChild(i),this.highlightOption();else{var n=void 0;n=this.isSearching?this.getTemplate("notice","No results found"):this.getTemplate("notice","No options to select"),this.dropdown.appendChild(n)}}if(this.currentState.items!==this.prevState.items){var s=this.store.getItemsFilteredByActive();if(s){var o=document.createDocumentFragment();this.renderItems(s,o)}}this.prevState=this.currentState}}},{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 t=arguments.length<=0||void 0===arguments[0]?this.options.callbackOnInit:arguments[0];this.createTemplates(),this.generateInput(),this.store.subscribe(this.render),this.render(),this.addEventListeners(),t&&((0,a.isType)("Function",t)?t():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}}]),t}();window.Choices=t.exports=h},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.addItem=function(t,e,i,n){return{type:"ADD_ITEM",value:t,label:e,id:i,optionId:n}},e.removeItem=function(t,e){return{type:"REMOVE_ITEM",id:t,optionId:e}},e.selectItem=function(t,e){return{type:"SELECT_ITEM",id:t,selected:e}},e.addOption=function(t,e,i,n,s){return{type:"ADD_OPTION",value:t,label:e,id:i,groupId:n,disabled:s}},e.filterOptions=function(t){return{type:"FILTER_OPTIONS",results:t}},e.activateOptions=function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return{type:"ACTIVATE_OPTIONS",active:t}},e.addGroup=function(t,e,i,n){return{type:"ADD_GROUP",value:t,id:e,active:i,disabled:n}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=(e.hasClass=function(t,e){return new RegExp(" "+e+" ").test(" "+t.className+" ")},e.capitalise=function(t){return t.replace(/\w\S*/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})},e.isType=function(t,e){var i=Object.prototype.toString.call(e).slice(8,-1);return void 0!==e&&null!==e&&i===t}),n=(e.extend=function o(){for(var t={},e=!1,n=arguments.length,s=function(n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e&&i("Object",n[s])?t[s]=o(!0,t[s],n[s]):t[s]=n[s])},r=0;n>r;r++){var a=arguments[r];i("Object",a)?s(a):console.error("Custom options must be an object")}return t},e.whichTransitionEvent=function(){var t,e=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in i)if(void 0!==e.style[t])return i[t]},e.whichAnimationEvent=function(){var t,e=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(t in i)if(void 0!==e.style[t])return i[t]}),s=(e.getParentsUntil=function(t,e,i){for(var n=[];t&&t!==document;t=t.parentNode){if(e){var s=e.charAt(0);if("."===s&&t.classList.contains(e.substr(1)))break;if("#"===s&&t.id===e.substr(1))break;if("["===s&&t.hasAttribute(e.substr(1,e.length-1)))break;if(t.tagName.toLowerCase()===e)break}if(i){var o=i.charAt(0);"."===o&&t.classList.contains(i.substr(1))&&n.push(t),"#"===o&&t.id===i.substr(1)&&n.push(t),"["===o&&t.hasAttribute(i.substr(1,i.length-1))&&n.push(t),t.tagName.toLowerCase()===i&&n.push(t)}else n.push(t)}return 0===n.length?null:n},e.wrap=function(t,e){return e=e||document.createElement("div"),t.nextSibling?t.parentNode.insertBefore(e,t.nextSibling):t.parentNode.appendChild(e),e.appendChild(t)},e.getSiblings=function(t){for(var e=[],i=t.parentNode.firstChild;i;i=i.nextSibling)1===i.nodeType&&i!==t&&e.push(i);return e},e.findAncestor=function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t},e.debounce=function(t,e,i){var n;return function(){var s=this,o=arguments,r=function(){n=null,i||t.apply(s,o)},a=i&&!n;clearTimeout(n),n=setTimeout(r,e),a&&t.apply(s,o)}},e.getElemDistance=function(t){var e=0;if(t.offsetParent)do e+=t.offsetTop,t=t.offsetParent;while(t);return e>=0?e:0},e.getElementOffset=function(t,e){var i=e;return i>1&&(i=1),i>0&&(i=0),Math.max(t.offsetHeight*i)},e.getAdjacentEl=function(t,e){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(t&&e){var n=t.parentNode.parentNode,s=Array.from(n.querySelectorAll(e)),o=s.indexOf(t),r=i>0?1:-1;return s[o+r]}},e.getScrollPosition=function(t){return"bottom"===t?Math.max((window.scrollY||window.pageYOffset)+(window.innerHeight||document.documentElement.clientHeight)):window.scrollY||window.pageYOffset},e.isInView=function(t,e,i){return this.getScrollPosition(e)>this.getElemDistance(t)+this.getElementOffset(t,i)},e.isScrolledIntoView=function(t,e){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];if(t){var n=void 0;return n=i>0?e.scrollTop+e.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=e.scrollTop}},e.stripHTML=function(t){var e=document.createElement("DIV");return e.innerHTML=t,e.textContent||e.innerText||""},e.addAnimation=function(t,e){var i=n(),s=function o(){t.classList.remove(e),t.removeEventListener(i,o,!1)};t.classList.add(e),t.addEventListener(i,s,!1)},e.getRandomNumber=function(t,e){return Math.floor(Math.random()*(e-t)+t)},e.strToEl=function(){var t=document.createElement("div");return function(e){var i;for(t.innerHTML=e,i=t.children[0];t.firstChild;)t.removeChild(t.firstChild);return i}}());e.getWidthOfInput=function(t){var e=arguments.length<=1||void 0===arguments[1]?20:arguments[1],i=t.value||t.placeholder,n=t.offsetWidth;if(i){var o=s(''+i+"");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>e&&o.offsetWidth!=t.offsetWidth&&(n=o.offsetWidth+e/4),document.body.removeChild(o)}return n+"px"}},function(t,e,i){!function(e){"use strict";function i(){console.log.apply(console,arguments)}function n(t,e){var i,n,s,o;for(this.list=t,this.options=e=e||{},i=0,o=["sort","shouldSort","verbose","tokenize"],n=o.length;n>i;i++)s=o[i],this.options[s]=s in e?e[s]:c[s];for(i=0,o=["searchFn","sortFn","keys","getFn","include"],n=o.length;n>i;i++)s=o[i],this.options[s]=e[s]||c[s]}function s(t,e,i){var n,r,a,c,l,u;if(e){if(a=e.indexOf("."),-1!==a?(n=e.slice(0,a),r=e.slice(a+1)):n=e,c=t[n],null!==c&&void 0!==c)if(r||"string"!=typeof c&&"number"!=typeof c)if(o(c))for(l=0,u=c.length;u>l;l++)s(c[l],r,i);else r&&s(c,r,i);else i.push(c)}else i.push(t);return i}function o(t){return"[object Array]"===Object.prototype.toString.call(t)}function r(t,e){e=e||{},this.options=e,this.options.location=e.location||r.defaultOptions.location,this.options.distance="distance"in e?e.distance:r.defaultOptions.distance,this.options.threshold="threshold"in e?e.threshold:r.defaultOptions.threshold,this.options.maxPatternLength=e.maxPatternLength||r.defaultOptions.maxPatternLength,this.pattern=e.caseSensitive?t:t.toLowerCase(),this.patternLen=t.length,this.patternLen<=this.options.maxPatternLength&&(this.matchmask=1<s;s++)this.tokenSearchers.push(new i(n[s],t));this.fullSeacher=new i(e,t)},n.prototype._startSearch=function(){var t,e,i,n,s=this.options,o=s.getFn,r=this.list,a=r.length,c=this.options.keys,l=c.length,u=null;if("string"==typeof r[0])for(i=0;a>i;i++)this._analyze("",r[i],i,i);else for(this._keyMap={},i=0;a>i;i++)for(u=r[i],n=0;l>n;n++){if(t=c[n],"string"!=typeof t){if(e=1-t.weight||1,this._keyMap[t.name]={weight:e},t.weight<=0||t.weight>1)throw new Error("Key weight has to be > 0 and <= 1");t=t.name}else this._keyMap[t]={weight:1};this._analyze(t,o(u,t,[]),u,i)}},n.prototype._analyze=function(t,e,n,s){var r,c,l,u,d,h,p,f,v,m,g,y,b,w,I,E=this.options,S=!1;if(void 0!==e&&null!==e)if(c=[],"string"==typeof e){if(r=e.split(a),E.verbose&&i("---------\nKey:",t),E.verbose&&i("Record:",r),this.options.tokenize){for(l=this.tokenSearchers,u=l.length,w=0;ww;w++)h+=c[w];h/=f,E.verbose&&i("Token score average:",h)}v=this.fullSeacher.search(e),E.verbose&&i("Full text score:",v.score),p=v.score,void 0!==h&&(p=(p+h)/2),E.verbose&&i("Score average:",p),(S||v.isMatch)&&(d=this.resultMap[s],d?d.output.push({key:t,score:p,matchedIndices:v.matchedIndices}):(this.resultMap[s]={item:n,output:[{key:t,score:p,matchedIndices:v.matchedIndices}]},this.results.push(this.resultMap[s])))}else if(o(e))for(w=0;we;e++)r=s[e].score,a=u?u[s[e].key].weight:1,l=r*a,1!==a?c=Math.min(c,l):(n+=l,s[e].nScore=l);1===c?d[t].score=n/o:d[t].score=c,this.options.verbose&&i(d[t])}},n.prototype._sort=function(){var t=this.options;t.shouldSort&&(t.verbose&&i("\n\nSorting...."),this.results.sort(t.sortFn))},n.prototype._format=function(){var t,e,n,s,o,r=this.options,a=r.getFn,c=[],l=this.results,u=r.include;for(r.verbose&&i("\n\nOutput:\n\n",l),s=r.id?function(t){l[t].item=a(l[t].item,r.id,[])[0]}:function(){},o=function(t){var e,i,n,s,o,r=l[t];if(u.length>0){if(e={item:r.item},-1!==u.indexOf("matches"))for(n=r.output,e.matches=[],i=0;ie;e++)s(e),t=o(e),c.push(t);return c},r.defaultOptions={location:0,distance:100,threshold:.6,maxPatternLength:32},r.prototype._calculatePatternAlphabet=function(){var t={},e=0;for(e=0;eO.maxPatternLength){if(y=t.match(new RegExp(this.pattern.replace(a,"|"))),b=!!y)for(I=[],e=0,E=y.length;E>e;e++)S=y[e],I.push([t.indexOf(S),S.length-1]);return{isMatch:b,score:b?.5:1,matchedIndices:I}}for(s=O.location,n=t.length,o=O.threshold,r=t.indexOf(this.pattern,s),w=[],e=0;n>e;e++)w[e]=0;for(-1!=r&&(o=Math.min(this._bitapScore(0,r),o),r=t.lastIndexOf(this.pattern,s+this.patternLen),-1!=r&&(o=Math.min(this._bitapScore(0,r),o))),r=-1,m=1,g=[],u=this.patternLen+n,e=0;ec;)this._bitapScore(e,s+l)<=o?c=l:u=l,l=Math.floor((u-c)/2+c);for(u=l,d=Math.max(1,s-l+1),h=Math.min(s+l,n)+this.patternLen,p=Array(h+2),p[h+1]=(1<=d;i--)if(v=this.patternAlphabet[t.charAt(i-1)],v&&(w[i-1]=1),0===e?p[i]=(p[i+1]<<1|1)&v:p[i]=(p[i+1]<<1|1)&v|((f[i+1]|f[i])<<1|1)|f[i+1],p[i]&this.matchmask&&(m=this._bitapScore(e,i-1),o>=m)){if(o=m,r=i-1,g.push(r),!(r>s))break;d=Math.max(1,2*s-r)}if(this._bitapScore(e+1,s)>o)break;f=p}return I=this._getMatchedIndices(w),{isMatch:r>=0,score:0===m?.001:m,matchedIndices:I}},r.prototype._getMatchedIndices=function(t){for(var e,i=[],n=-1,s=-1,o=0,r=r=t.length;r>o;o++)e=t[o],e&&-1===n?n=o:e||-1===n||(s=o-1,i.push([n,s]),n=-1);return t[o-1]&&i.push([n,o-1]),i},t.exports=n}(this)},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.Store=void 0;var o=function(){function t(t,e){for(var i=0;ii;i++)e[i]=arguments[i];return function(t){return function(i,n,s){var r=t(i,n,s),c=r.dispatch,l=[],u={getState:r.getState,dispatch:function(t){return c(t)}};return l=e.map(function(t){return t(u)}),c=a.default.apply(void 0,l)(r.dispatch),o({},r,{dispatch:c})}}}var o=Object.assign||function(t){for(var e=1;ei;i++)e[i]=arguments[i];return function(){if(0===e.length)return arguments.length<=0?void 0:arguments[0];var t=e[e.length-1],i=e.slice(0,-1);return i.reduceRight(function(t,e){return e(t)},t.apply(void 0,arguments))}}e.__esModule=!0,e.default=i},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var s=i(6),o=i(18),r=n(o),a=i(19),c=n(a),l=i(20),u=n(l),d=(0,s.combineReducers)({items:r.default,groups:c.default,options:u.default});e.default=d},function(t,e){"use strict";function i(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e-1?t.map(function(t){return t.id===parseInt(e.optionId)&&(t.selected=!0),t}):t;case"REMOVE_ITEM":return e.optionId>-1?t.map(function(t){return t.id===parseInt(e.optionId)&&(t.selected=!1),t}):t;case"FILTER_OPTIONS":var n=e.results,s=t.map(function(t,e){return t.active=n.some(function(e){return e.item.id===t.id?(t.score=e.score,!0):void 0}),t}).sort(function(t,e){return t.score-e.score});return s;case"ACTIVATE_OPTIONS":return t.map(function(t){return t.active=e.active,t});default:return t}};e.default=n}]); \ No newline at end of file diff --git a/assets/scripts/src/choices.js b/assets/scripts/src/choices.js index c37f1f3..22af561 100644 --- a/assets/scripts/src/choices.js +++ b/assets/scripts/src/choices.js @@ -3,7 +3,7 @@ import { addItem, removeItem, selectItem, addOption, filterOptions, activateOptions, addGroup } from './actions/index'; import { isScrolledIntoView, getAdjacentEl, findAncestor, wrap, isType, strToEl, extend, getWidthOfInput, debounce } from './lib/utils.js'; import Fuse from 'fuse.js'; -import Store from './store.js'; +import Store from './store/index.js'; /** * Choices @@ -16,10 +16,6 @@ import Store from './store.js'; */ export class Choices { constructor(element = '[data-choice]', userOptions = {}) { - - // Cutting the mustard - const cuttingTheMustard = 'querySelector' in document && 'addEventListener' in document && 'classList' in document.createElement("div"); - if (!cuttingTheMustard) console.error('init: Your browser doesn\'t support Choices'); // If there are multiple elements, create a new instance // for each element besides the first one (as that already has an instance) @@ -49,13 +45,15 @@ export class Choices { prependValue: false, appendValue: false, selectAll: true, + templates: {}, classNames: { containerOuter: 'choices', containerInner: 'choices__inner', input: 'choices__input', inputCloned: 'choices__input--cloned', list: 'choices__list', - listItems: 'choices__list--items', + listItems: 'choices__list--multiple', + listSingle: 'choices__list--single', listDropdown: 'choices__list--dropdown', item: 'choices__item', itemSelectable: 'choices__item--selectable', @@ -72,7 +70,6 @@ export class Choices { flippedState: 'is-flipped', selectedState: 'is-selected' }, - templates: {}, callbackOnInit: function() {}, callbackOnRender: function() {}, callbackOnRemoveItem: function() {}, @@ -116,8 +113,21 @@ export class Choices { this.onPaste = this.onPaste.bind(this); this.onMouseOver = this.onMouseOver.bind(this); - // Let's have it large - this.init(); + // Cutting the mustard + const cuttingTheMustard = 'querySelector' in document && 'addEventListener' in document && 'classList' in document.createElement("div"); + if (!cuttingTheMustard) console.error('Choices: Your browser doesn\'t support Choices'); + + // Input type check + const inputTypes = ['select-one', 'select-multiple', 'text']; + const canInit = this.passedElement && inputTypes.includes(this.passedElement.type); + + if(canInit) { + // Let's have it large + this.init(); + } else { + console.error('Choices: Incompatible input passed'); + } + } /** @@ -169,7 +179,7 @@ export class Choices { * @param {Array} Active items * @return */ - handleBackspaceKey(activeItems) { + handleBackspace(activeItems) { if(this.options.removeItems && activeItems) { const lastItem = activeItems[activeItems.length - 1]; const hasSelectedItems = activeItems.some((item) => { @@ -183,34 +193,11 @@ export class Choices { this.removeItem(lastItem); } else { this.selectItem(lastItem); - this.removeAllSelectedItems(); + this.removeSelectedItems(); } } }; - /** - * Handle what happens on a click event - * @param {Array} activeItems Items that are active - * @param {HTMLElement} target What triggered the click - * @param {Boolean} hasShiftKey Whether shift key is active - * @return - */ - handleClick(activeItems, target, hasShiftKey) { - if(this.options.removeItems && target) { - const passedId = target.getAttribute('data-id'); - - // We only want to select one item with a click - // so we deselect any items that aren't the target - // unless shift is being pressed - activeItems.forEach((item) => { - if(item.id === parseInt(passedId) && !item.selected) { - this.selectItem(item); - } else if(!hasShiftKey) { - this.deselectItem(item); - } - }); - } - } /** * Key down event @@ -219,7 +206,7 @@ export class Choices { */ onKeyDown(e) { if(e.target !== this.input) return; - + const ctrlDownKey = e.ctrlKey || e.metaKey; const backKey = 46; const deleteKey = 8; @@ -259,7 +246,7 @@ export class Choices { this.handleEnter(activeItems, value); } - if(this.passedElement.type === 'select-multiple' && hasActiveDropdown) { + if(this.dropdown && hasActiveDropdown) { const highlighted = this.dropdown.querySelector(`.${this.options.classNames.highlightedState}`); if(highlighted) { @@ -273,7 +260,7 @@ export class Choices { break; case escapeKey: - if(this.passedElement.type === 'select-multiple' && hasActiveDropdown) { + if(this.dropdown && hasActiveDropdown) { this.toggleDropdown(); } break; @@ -281,7 +268,7 @@ export class Choices { case downKey: case upKey: // If up or down key is pressed, traverse through options - if(this.passedElement.type === 'select-multiple' && hasActiveDropdown) { + if(this.dropdown && hasActiveDropdown) { const currentEl = this.dropdown.querySelector(`.${this.options.classNames.highlightedState}`); const directionInt = e.keyCode === downKey ? 1 : -1; let nextEl; @@ -308,7 +295,7 @@ export class Choices { case deleteKey: // If backspace or delete key is pressed and the input has no value if(hasFocussedInput && !e.target.value) { - this.handleBackspaceKey(activeItems); + this.handleBackspace(activeItems); e.preventDefault(); } break; @@ -325,8 +312,8 @@ export class Choices { */ onKeyUp(e) { if(e.target !== this.input) return; - - if(this.passedElement.type === 'select-multiple' && this.options.allowSearch) { + + if(this.dropdown && this.options.allowSearch) { if(this.input === document.activeElement) { const options = this.store.getOptions(); const hasUnactiveOptions = options.some((option) => { @@ -373,7 +360,7 @@ export class Choices { const activeItems = this.store.getItemsFilteredByActive(); const hasShiftKey = e.shiftKey ? true : false; - if(this.passedElement.type === 'select-multiple' && !this.dropdown.classList.contains(this.options.classNames.activeState)) { + if(this.dropdown && !this.dropdown.classList.contains(this.options.classNames.activeState)) { this.toggleDropdown(); } @@ -386,7 +373,20 @@ export class Choices { if(e.target.hasAttribute('data-item')) { // If we are clicking on an item - this.handleClick(activeItems, e.target, hasShiftKey); + if(this.options.removeItems) { + const passedId = e.target.getAttribute('data-id'); + + // We only want to select one item with a click + // so we deselect any items that aren't the target + // unless shift is being pressed + activeItems.forEach((item) => { + if(item.id === parseInt(passedId) && !item.selected) { + this.selectItem(item); + } else if(!hasShiftKey) { + this.deselectItem(item); + } + }); + } } else if(e.target.hasAttribute('data-option')) { // If we are clicking on an option const options = this.store.getOptionsFilteredByActive(); @@ -396,7 +396,10 @@ export class Choices { }); if(!option.selected && !option.disabled) { - this.addItem(option.value, option.label, option.id); + this.addItem(option.value, option.label, option.id); + if(this.passedElement.type === 'select-one') { + this.toggleDropdown(); + } } } @@ -413,7 +416,7 @@ export class Choices { this.containerOuter.classList.remove(this.options.classNames.focusState); // Close all other dropodowns - if(this.passedElement.type === 'select-multiple' && this.dropdown.classList.contains(this.options.classNames.activeState)) { + if(this.dropdown && this.dropdown.classList.contains(this.options.classNames.activeState)) { this.toggleDropdown(); } } @@ -658,6 +661,10 @@ export class Choices { this.store.dispatch(addItem(passedValue, passedLabel, id, passedOptionId)); + if(this.passedElement.type === 'select-one') { + this.removeActiveItems(id); + } + // Run callback if it is a function if(callback){ if(isType('Function', callback)) { @@ -714,13 +721,13 @@ export class Choices { * @param {Boolean} selectedOnly Optionally remove only selected items * @return */ - removeAllItems() { + removeActiveItems(excludedId) { const items = this.store.getItemsFilteredByActive(); items.forEach((item) => { - if(item.active) { - this.removeItem(item); - } + if(item.active && excludedId !== item.id) { + this.removeItem(item); + } }); } @@ -729,7 +736,7 @@ export class Choices { * Note: removed items are soft deleted * @return */ - removeAllSelectedItems() { + removeSelectedItems() { const items = this.store.getItemsFilteredByActive(); items.forEach((item) => { @@ -848,13 +855,13 @@ export class Choices { const classNames = this.options.classNames; const templates = { containerOuter: () => { - return strToEl(`
      `); + return strToEl(`
      `); }, containerInner: () => { return strToEl(`
      `); }, list: () => { - return strToEl(`
        `); + return strToEl(`
        `); }, input: () => { return strToEl(``); @@ -881,7 +888,7 @@ export class Choices { }, item: (data) => { return strToEl(` -
        +
        ${ data.label }
        `); @@ -914,7 +921,7 @@ export class Choices { wrap(containerInner, containerOuter); // If placeholder has been enabled and we have a value - if (this.options.placeholder && this.options.placeholderValue) { + if (this.options.placeholder && this.options.placeholderValue && this.passedElement.type !== 'select-one') { input.placeholder = this.options.placeholderValue; input.style.width = getWidthOfInput(input); } @@ -928,7 +935,7 @@ export class Choices { containerInner.appendChild(list); containerInner.appendChild(input); - if(this.passedElement.type === 'select-multiple') { + if(this.passedElement.type === 'select-multiple' || this.passedElement.type === 'select-one') { this.highlightPosition = 0; const dropdown = this.getTemplate('dropdown'); const passedGroups = Array.from(this.passedElement.getElementsByTagName('OPTGROUP')); @@ -949,6 +956,9 @@ export class Choices { this.addOption(option); }); } + + } else if(this.passedElement.type === 'select-one') { + console.log('select element'); } else if(this.passedElement.type === 'text') { // Add any preset values seperated by delimiter this.presetItems.forEach((value) => { @@ -984,8 +994,12 @@ export class Choices { renderOptions(options, fragment) { options.forEach((option, i) => { - const dropdownItem = this.getTemplate('option', option); - fragment.appendChild(dropdownItem); + const dropdownItem = this.getTemplate('option', option); + if(this.passedElement.type === 'select-one') { + fragment.appendChild(dropdownItem); + } else if(!option.selected) { + fragment.appendChild(dropdownItem); + } }); } @@ -1020,32 +1034,40 @@ export class Choices { if(this.currentState !== this.prevState) { // OPTIONS - if((this.currentState.options !== this.prevState.options || this.currentState.groups !== this.prevState.groups) && this.passedElement.type === 'select-multiple') { - // Get active groups/options - const activeGroups = this.store.getGroupsFilteredByActive(); - const activeOptions = this.store.getOptionsFilteredByActive(); + if((this.currentState.options !== this.prevState.options || this.currentState.groups !== this.prevState.groups)) { + if(this.passedElement.type === 'select-multiple' || this.passedElement.type === 'select-one') { + // Get active groups/options + const activeGroups = this.store.getGroupsFilteredByActive(); + const activeOptions = this.store.getOptionsFilteredByActive(); - // Create a fragment to store our list items (so we don't have to update the DOM for each item) - const optionListFragment = document.createDocumentFragment(); + // Create a fragment to store our list items (so we don't have to update the DOM for each item) + const optionListFragment = document.createDocumentFragment(); - // Clear options - this.dropdown.innerHTML = ''; + // Clear options + this.dropdown.innerHTML = ''; - // If we have grouped options - if(activeGroups.length >= 1 && this.isSearching !== true) { - this.renderGroups(activeGroups, activeOptions, optionListFragment); - } else if(activeOptions.length >= 1) { - this.renderOptions(activeOptions, optionListFragment); - } + // If we have grouped options + if(activeGroups.length >= 1 && this.isSearching !== true) { + this.renderGroups(activeGroups, activeOptions, optionListFragment); + } else if(activeOptions.length >= 1) { + this.renderOptions(activeOptions, optionListFragment); + } - // If we actually have anything to add to our dropdown - if(optionListFragment.children.length) { - this.dropdown.appendChild(optionListFragment); - this.highlightOption(); - } else { - // If dropdown is empty, show a no content notice - const dropdownItem = this.getTemplate('notice', 'No options to select'); - this.dropdown.appendChild(dropdownItem); + // If we actually have anything to add to our dropdown + if(optionListFragment.children.length) { + this.dropdown.appendChild(optionListFragment); + this.highlightOption(); + } else { + let dropdownItem; + if(this.isSearching) { + // If dropdown is empty, show a no content notice + dropdownItem = this.getTemplate('notice', 'No results found'); + } else { + // If dropdown is empty, show a no content notice + dropdownItem = this.getTemplate('notice', 'No options to select'); + } + this.dropdown.appendChild(dropdownItem); + } } } diff --git a/assets/scripts/src/store.js b/assets/scripts/src/store/index.js similarity index 95% rename from assets/scripts/src/store.js rename to assets/scripts/src/store/index.js index a8b397d..56a3801 100644 --- a/assets/scripts/src/store.js +++ b/assets/scripts/src/store/index.js @@ -1,7 +1,7 @@ 'use strict'; import { createStore } from 'redux'; -import rootReducer from './reducers/index.js'; +import rootReducer from './../reducers/index.js'; export class Store { @@ -92,7 +92,7 @@ export class Store { getOptionsFilteredByActive() { const options = this.getOptions(); const values = options.filter((option) => { - return option.active === true && option.selected !== true; + return option.active === true; },[]); return values; diff --git a/assets/styles/css/choices.css b/assets/styles/css/choices.css index 5e2d9ab..43a855c 100644 --- a/assets/styles/css/choices.css +++ b/assets/styles/css/choices.css @@ -59,9 +59,13 @@ h1, h2, h3, h4, h5, h6 { padding-left: 0; list-style-type: none; } -.choices__list--items { +.choices__list--single { + display: inline-block; + padding: .4rem; } + +.choices__list--multiple { display: inline; } - .choices__list--items .choices__item { + .choices__list--multiple .choices__item { display: inline-block; border-radius: 2rem; padding: .4rem 1rem; @@ -72,7 +76,7 @@ h1, h2, h3, h4, h5, h6 { border: 1px solid #00b1c7; color: #FFFFFF; word-break: break-all; } - .choices__list--items .choices__item.is-selected { + .choices__list--multiple .choices__item.is-selected { background-color: #00a5bb; } .choices__list--dropdown { diff --git a/assets/styles/css/choices.min.css b/assets/styles/css/choices.min.css index 6ba1867..abed670 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-focused .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{display:none;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;max-height:300px;overflow:auto;will-change:scroll-position}.is-open .choices__list--dropdown{border-color:#b7b7b7}.choices__list--dropdown .choices__item{padding:1rem;font-size:1.4rem}.choices__list--dropdown .choices__item--selectable.is-highlighted:after,.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:after{content:"Press to select";font-size:12px;opacity:0;float:right}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.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;opacity:.5}.choices__group .choices__heading{font-weight:600;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-focused .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--single{display:inline-block;padding:.4rem}.choices__list--multiple{display:inline}.choices__list--multiple .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--multiple .choices__item.is-selected{background-color:#00a5bb}.choices__list--dropdown{display:none;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;max-height:300px;overflow:auto;will-change:scroll-position}.is-open .choices__list--dropdown{border-color:#b7b7b7}.choices__list--dropdown .choices__item{padding:1rem;font-size:1.4rem}.choices__list--dropdown .choices__item--selectable.is-highlighted:after,.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:after{content:"Press to select";font-size:12px;opacity:0;float:right}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.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;opacity:.5}.choices__group .choices__heading{font-weight:600;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 284368e..b4cc9e5 100644 --- a/assets/styles/scss/choices.scss +++ b/assets/styles/scss/choices.scss @@ -74,7 +74,12 @@ h1, h2, h3, h4, h5, h6 { .choices__list--options {} -.choices__list--items { +.choices__list--single { + display: inline-block; + padding: .4rem; +} + +.choices__list--multiple { display: inline; .choices__item { display: inline-block; diff --git a/index.html b/index.html index 2ec1926..e8894c8 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Choices - +
        @@ -29,6 +29,13 @@ + + +