From 9f0dc2c8dc72d40359ecf88d5601d3c118736a7d Mon Sep 17 00:00:00 2001 From: Josh Johnson Date: Sun, 14 Aug 2016 22:14:37 +0100 Subject: [PATCH] ESLint entire project --- .eslintrc | 10 + .eslintrc.js | 8 + assets/scripts/dist/choices.min.js | 4 +- assets/scripts/src/actions/index.js | 16 +- assets/scripts/src/choices.js | 1000 ++++++++++++------------ assets/scripts/src/lib/polyfills.js | 2 + assets/scripts/src/lib/utils.js | 46 +- assets/scripts/src/reducers/choices.js | 56 +- assets/scripts/src/reducers/groups.js | 8 +- assets/scripts/src/reducers/index.js | 10 +- assets/scripts/src/reducers/items.js | 24 +- assets/scripts/src/store/index.js | 35 +- package.json | 13 +- webpack.config.dev.js | 5 +- 14 files changed, 629 insertions(+), 608 deletions(-) create mode 100644 .eslintrc.js diff --git a/.eslintrc b/.eslintrc index d7f615e..1662326 100644 --- a/.eslintrc +++ b/.eslintrc @@ -10,5 +10,15 @@ "rules": { "quotes": [2, "single"], "strict": [2, "never"], + "indent": ["error", 4, {"SwitchCase": 1}], + "eol-last": "off", + "arrow-body-style": "off", + "no-underscore-dangle": "off", + "no-new": 0, + "max-len": "off", + "no-console": ["error", { allow: ["warn", "error"] }], + "consistent-return": "off", + "no-param-reassign": ["error", { "props": false }], + "no-unused-vars": ["error", { "args": "none" }] }, } diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..a7621aa --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + "extends": "airbnb", + "plugins": [ + "react", + "jsx-a11y", + "import" + ] +}; \ No newline at end of file diff --git a/assets/scripts/dist/choices.min.js b/assets/scripts/dist/choices.min.js index 008de7d..6632fa9 100644 --- a/assets/scripts/dist/choices.min.js +++ b/assets/scripts/dist/choices.min.js @@ -1,4 +1,4 @@ /*! choices.js v1.1.1 | (c) 2016 Josh Johnson | https://github.com/jshjohnson/Choices#readme */ -!function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={exports:{},id:n,loaded:!1};return e[n].call(s.exports,s,s.exports,t),s.loaded=!0,s.exports}var i={};return t.m=e,t.c=i,t.p="/assets/scripts/dist/",t(0)}([function(e,t,i){e.exports=i(1)},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function s(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t1)for(var r=1;r=i;return o?this.containerOuter.classList.add(this.config.classNames.flippedState):this.containerOuter.classList.remove(this.config.classNames.flippedState),this}},{key:"hideDropdown",value:function(){var e=this.containerOuter.classList.contains(this.config.classNames.flippedState);return this.containerOuter.classList.remove(this.config.classNames.openState),this.containerOuter.setAttribute("aria-expanded","false"),this.dropdown.classList.remove(this.config.classNames.activeState),e&&this.containerOuter.classList.remove(this.config.classNames.flippedState),this}},{key:"toggleDropdown",value:function(){var e=this.dropdown.classList.contains(this.config.classNames.activeState);return e?this.hideDropdown():this.showDropdown(),this}},{key:"getValue",value:function(){var e=this,t=!(arguments.length<=0||void 0===arguments[0])&&arguments[0],i=this.store.getItemsFilteredByActive(),n=[];return i.forEach(function(i){"text"===e.passedElement.type?n.push(t?i.value:i):i.active&&n.push(t?i.value:i)}),"select-one"==this.passedElement.type?n[0]:n}},{key:"setValue",value:function(e){var t=this;if(this.initialised===!0){var i=[].concat(s(e));i.forEach(function(e,i){if((0,c.isType)("Object",e)){if(!e.value)return;"text"!==t.passedElement.type?t._addChoice(!0,!1,e.value,e.label,-1):t._addItem(e.value,e.label,e.id)}else(0,c.isType)("String",e)&&("text"!==t.passedElement.type?t._addChoice(!0,!1,e,e,-1):t._addItem(e))})}return this}},{key:"setValueByChoice",value:function(e){var t=this;return"text"!==this.passedElement.type&&!function(){var i=t.store.getChoices();(0,c.isType)("Array",e)||(e=[e]),e.forEach(function(e,n){var s=i.find(function(t){return t.value===e});s?s.selected?console.warn("Attempting to select choice already selected"):t._addItem(s.value,s.label,s.id):console.warn("Attempting to select choice that does not exist")})}(),this}},{key:"setChoices",value:function(e,t,i){var n=this;if(this.initialised===!0&&("select-one"===this.passedElement.type||"select-multiple"===this.passedElement.type)){if(!(0,c.isType)("Array",e)||!t)return;e&&e.length&&(this.containerOuter.classList.remove(this.config.classNames.loadingState),e.forEach(function(e,s){if(e.choices){var o=0===s;n._addGroup(e,s,o)}else n._addChoice(!!e.selected&&e.selected,!!e.disabled&&e.disabled,e[t],e[i])}))}return this}},{key:"clearStore",value:function(){return this.store.dispatch((0,a.clearAll)()),this}},{key:"clearInput",value:function(){return this.input.value&&(this.input.value=""),"select-one"!==this.passedElement.type&&(this.input.style.width=(0,c.getWidthOfInput)(this.input)),this}},{key:"disable",value:function(){return this.passedElement.disabled=!0,this.initialised&&(this.containerOuter.classList.contains(this.config.classNames.disabledState)||(this._removeEventListeners(),this.passedElement.setAttribute("disabled",""),this.input.setAttribute("disabled",""),this.containerOuter.classList.add(this.config.classNames.disabledState),this.containerOuter.setAttribute("aria-disabled","true"))),this}},{key:"enable",value:function(){return this.passedElement.disabled=!1,this.initialised&&this.containerOuter.classList.contains(this.config.classNames.disabledState)&&(this._addEventListeners(),this.passedElement.removeAttribute("disabled"),this.input.removeAttribute("disabled"),this.containerOuter.classList.remove(this.config.classNames.disabledState),this.containerOuter.removeAttribute("aria-disabled")),this}},{key:"ajax",value:function(e){var t=this;if(this.initialised===!0&&("select-one"===this.passedElement.type||"select-multiple"===this.passedElement.type)){if(this.containerOuter.classList.add(this.config.classNames.loadingState),this.containerOuter.setAttribute("aria-busy","true"),"select-one"===this.passedElement.type){var i=this._getTemplate("item",{id:-1,value:"Loading",label:this.config.loadingText,active:!0});this.itemList.appendChild(i)}else this.input.placeholder=this.config.loadingText;var n=function(e,i,n){(0,c.isType)("Array",e)&&i&&(e&&e.length&&(t.containerOuter.classList.remove(t.config.classNames.loadingState),"select-multiple"===t.passedElement.type&&(t.input.placeholder=t.config.placeholderValue||t.passedElement.getAttribute("placeholder")),e.forEach(function(e,s){0===s&&"select-one"===t.passedElement.type?t._addChoice(!0,!1,e[i],e[n]):t._addChoice(!1,!1,e[i],e[n])})),t.containerOuter.removeAttribute("aria-busy"))};e(n)}return this}},{key:"_triggerChange",value:function(e){if(e){if(this.config.callbackOnChange){var t=this.config.callbackOnChange;(0,c.isType)("Function",t)?t(e,this.passedElement):console.error("callbackOnChange: Callback is not a function")}"select-one"===this.passedElement.type&&(this.focusAndHideDropdown=!0,this.containerOuter.focus())}}},{key:"_handleButtonAction",value:function(e,t){var i=this;e&&t&&this.config.removeItems&&this.config.removeItemButton&&!function(){var n=t.parentNode.getAttribute("data-id"),s=e.find(function(e){return e.id===parseInt(n)});i._removeItem(s),i._triggerChange(s.value)}()}},{key:"_handleItemAction",value:function(e,t){var i=this,n=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];e&&t&&this.config.removeItems&&"select-one"!==this.passedElement.type&&!function(){var s=t.getAttribute("data-id");e.forEach(function(e){e.id!==parseInt(s)||e.highlighted?n||e.highlighted&&i.unhighlightItem(e):i.highlightItem(e)}),document.activeElement!==i.input&&i.input.focus()}()}},{key:"_handleChoiceAction",value:function(e,t){if(e&&t){var i=t.getAttribute("data-id"),n=this.store.getChoiceById(i);if(n&&!n.selected&&!n.disabled){var s=(this.dropdown.classList.contains(this.config.classNames.activeState),!0);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&"select-multiple"===this.passedElement.type&&(s=!1),s&&(this._addItem(n.value,n.label,n.id),this._triggerChange(n.value)),"select-one"===this.passedElement.type&&(this.canSearch&&(this.input.value=""),this.isSearching=!1,this.store.dispatch((0,a.activateChoices)(!0)),this.hideDropdown())}}}},{key:"_handleBackspace",value:function(e){if(this.config.removeItems&&e){var t=e[e.length-1],i=e.some(function(e){return e.highlighted===!0});this.config.editItems&&!i&&t?(this.input.value=t.value,this._removeItem(t),this._triggerChange(t.value)):(i||this.highlightItem(t),this.removeHighlightedItems())}}},{key:"_canAddItem",value:function(e,t){var i=!0,n='Press Enter to add "'+t+'"';if("select-multiple"!==this.passedElement.type&&"text"!==this.passedElement.type||this.config.maxItemCount>0&&this.config.maxItemCount<=this.itemList.children.length&&(i=!1,n="Only "+this.config.maxItemCount+" values can be added."),"text"===this.passedElement.type&&this.config.addItems){var s=!e.some(function(e){return e.value===t});this.config.regexFilter&&(i=this._regexFilter(t)),this.config.duplicateItems!==!1||s||(i=!1,n="Only unique values can be added.")}return{response:i,notice:n}}},{key:"_searchChoices",value:function(e){var t=this;if(e&&this.input===document.activeElement){var i=this.store.getChoices(),n=i.some(function(e){return e.active!==!0});if(e&&e.length>1){var s=function(){var i=(0,c.isType)("String",e)?e.trim():e,n=(0,c.isType)("String",t.currentValue)?t.currentValue.trim():t.currentValue;if(i.length>=1&&i!==n+" "){var s=t.store.getChoicesFilteredBySelectable(),o=i,r=(0,c.isType)("Array",t.config.sortFields)?t.config.sortFields:[t.config.sortFields],l=new h.default(s,{keys:r,shouldSort:!0,include:"score"}),u=l.search(o);t.currentValue=i,t.highlightPosition=0,t.isSearching=!0,t.store.dispatch((0,a.filterChoices)(u))}};s()}else n&&(this.isSearching=!1,this.store.dispatch((0,a.activateChoices)(!0)))}}},{key:"_addEventListeners",value:function(){document.addEventListener("keyup",this._onKeyUp),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("click",this._onClick),document.addEventListener("touchmove",this._onTouchMove),document.addEventListener("touchend",this._onTouchEnd),document.addEventListener("mousedown",this._onMouseDown),document.addEventListener("mouseover",this._onMouseOver),this.passedElement.type&&"select-one"===this.passedElement.type&&(this.containerOuter.addEventListener("focus",this._onFocus),this.containerOuter.addEventListener("blur",this._onBlur)),this.input.addEventListener("input",this._onInput),this.input.addEventListener("paste",this._onPaste),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("touchmove",this._onTouchMove),document.removeEventListener("touchend",this._onTouchEnd),document.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mouseover",this._onMouseOver),this.passedElement.type&&"select-one"===this.passedElement.type&&(this.containerOuter.removeEventListener("focus",this._onFocus),this.containerOuter.removeEventListener("blur",this._onBlur)),this.input.removeEventListener("input",this._onInput),this.input.removeEventListener("paste",this._onPaste),this.input.removeEventListener("focus",this._onFocus),this.input.removeEventListener("blur",this._onBlur)}},{key:"_onKeyDown",value:function(e){if(e.target===this.input||this.containerOuter.contains(e.target)){var t=e.target,i=e.ctrlKey||e.metaKey,n=46,s=8,o=13,r=65,l=27,h=38,u=40,d=this.store.getItemsFilteredByActive(),p=(this.store.getChoicesFilteredByActive(),this.input===document.activeElement),f=this.dropdown.classList.contains(this.config.classNames.activeState),v=this.itemList&&this.itemList.children,m=String.fromCharCode(e.keyCode);switch("text"!==this.passedElement.type&&/[a-zA-Z0-9-_ ]/.test(m)&&!f&&this.showDropdown(),this.canSearch=this.config.search,e.keyCode){case r:i&&v&&(this.canSearch=!1,this.config.removeItems&&!this.input.value&&this.input===document.activeElement&&this.highlightAll(this.itemList.children));break;case o:if("text"===this.passedElement.type&&t.value){var g=this.input.value,y=this._canAddItem(d,g);y.response&&(this.toggleDropdown(),this._addItem(g),this._triggerChange(g),this.clearInput(this.passedElement))}if(t.hasAttribute("data-button")&&this._handleButtonAction(d,t),f){var b=this.dropdown.querySelector("."+this.config.classNames.highlightedState);if(b){var E=b.getAttribute("data-value"),_=b.innerHTML,w=b.getAttribute("data-id"),I=this._canAddItem(d,E);I.response&&(this._addItem(E,_,w),this._triggerChange(E),this.clearInput(this.passedElement)),"select-one"===this.passedElement.type&&(this.isSearching=!1,this.store.dispatch((0,a.activateChoices)()),this.toggleDropdown())}}else"select-one"===this.passedElement.type&&(e.preventDefault(),this.showDropdown(),this.canSearch&&this.input.focus());break;case l:f&&this.toggleDropdown();break;case u:case h:if(f||"select-one"===this.passedElement.type){f||(this.showDropdown(),this.canSearch&&this.input.focus());var S=this.dropdown.querySelector("."+this.config.classNames.highlightedState),A=e.keyCode===u?1:-1,T=void 0;this.canSearch=!1,T=S?(0,c.getAdjacentEl)(S,"[data-choice-selectable]",A):this.dropdown.querySelector("[data-choice-selectable]"),T&&((0,c.isScrolledIntoView)(T,this.choiceList,A)||this._scrollToChoice(T,A),this._highlightChoice(T)),e.preventDefault()}break;case n:case s:p&&!e.target.value&&"select-one"!==this.passedElement.type&&(this._handleBackspace(d),e.preventDefault())}}}},{key:"_onKeyUp",value:function(e){if(e.target===this.input)if("text"===this.passedElement.type){var t=this.dropdown.classList.contains(this.config.classNames.activeState),i=this.input.value;if(i){var n=this.store.getItemsFilteredByActive(),s=this._canAddItem(n,i);if(s.notice){var o=this._getTemplate("notice",s.notice);this.dropdown.innerHTML=o.outerHTML}s.response===!0?t||this.showDropdown():!s.notice&&t&&this.hideDropdown()}else t&&this.hideDropdown()}else{var r=46,c=8;e.keyCode!==r&&e.keyCode!==c||e.target.value?this.canSearch&&this._searchChoices(this.input.value):"text"!==this.passedElement.type&&this.isSearching&&(this.isSearching=!1,this.store.dispatch((0,a.activateChoices)(!0)))}}},{key:"_onInput",value:function(e){if("select-one"!==this.passedElement.type)if(this.config.placeholder&&(this.config.placeholderValue||this.passedElement.getAttribute("placeholder"))){var t=this.config.placeholderValue||this.passedElement.getAttribute("placeholder");this.input.value&&this.input.value.length>=t.length/1.25&&(this.input.style.width=(0,c.getWidthOfInput)(this.input))}else this.input.style.width=(0,c.getWidthOfInput)(this.input)}},{key:"_onTouchMove",value:function(e){this.wasTap===!0&&(this.wasTap=!1)}},{key:"_onTouchEnd",value:function(e){var t=e.target||e.touches[0].target;this.wasTap===!0&&this.containerOuter.contains(t)&&(t!==this.containerOuter&&t!==this.containerInner||"select-one"===this.passedElement.type||("text"===this.passedElement.type?document.activeElement!==this.input&&this.input.focus():(this.showDropdown(),this.canSearch&&document.activeElement!==this.input&&this.input.focus())),e.stopPropagation()),this.wasTap=!0}},{key:"_onMouseDown",value:function(e){var t=e.target;if(this.containerOuter.contains(t)&&t!==this.input){var i=this.store.getItemsFilteredByActive(),n=!!e.shiftKey;t!==this.input&&e.preventDefault(),t.hasAttribute("data-button")?this._handleButtonAction(i,t):t.hasAttribute("data-item")?this._handleItemAction(i,t,n):t.hasAttribute("data-choice")&&this._handleChoiceAction(i,t)}}},{key:"_onClick",value:function(e){var t=e.target,i=this.dropdown.classList.contains(this.config.classNames.activeState);if(this.containerOuter.contains(t)){!!e.shiftKey;i?"select-one"===this.passedElement.type&&t!==this.input&&this.hideDropdown():"text"===this.passedElement.type?document.activeElement!==this.input&&this.input.focus():(this.showDropdown(),this.canSearch&&document.activeElement!==this.input&&this.input.focus())}else{var n=this.store.getItemsFilteredByActive(),s=n.some(function(e){return e.highlighted===!0});s&&this.unhighlightAll(),this.containerOuter.classList.remove(this.config.classNames.focusState),i&&this.toggleDropdown()}}},{key:"_onMouseOver",value:function(e){(e.target===this.dropdown||(0,c.findAncestor)(e.target,this.config.classNames.listDropdown))&&e.target.hasAttribute("data-choice")&&this._highlightChoice(e.target)}},{key:"_onPaste",value:function(e){e.target===this.input&&(this.config.paste||e.preventDefault())}},{key:"_onFocus",value:function(e){var t=e.target||e.touches[0].target,i=this.dropdown.classList.contains(this.config.classNames.activeState);t!==this.input||i?"text"===this.passedElement.type||t!==this.containerOuter&&t!==this.containerInner||i||(this.containerOuter.classList.add(this.config.classNames.focusState),this.showDropdown(),"select-one"===this.passedElement.type&&t===this.containerOuter?(this.focusAndHideDropdown||this.input.focus(),this.focusAndHideDropdown=!1):this.canSearch&&this.input.focus()):(this.containerOuter.classList.add(this.config.classNames.focusState),"select-one"!==this.passedElement.type&&"select-multiple"!==this.passedElement.type||this.showDropdown())}},{key:"_onBlur",value:function(e){if(e.target===this.input||e.target===this.containerOuter&&"select-one"===this.passedElement.type){var t=this.store.getItemsFilteredByActive(),i=this.dropdown.classList.contains(this.config.classNames.activeState),n=t.some(function(e){return e.highlighted===!0});this.containerOuter.classList.remove(this.config.classNames.focusState),i&&(e.target===this.input||e.target===this.containerOuter&&!this.canSearch)&&this.hideDropdown(),n&&this.unhighlightAll()}}},{key:"_regexFilter",value:function(e){if(e){var t=this.config.regexFilter,i=new RegExp(t.source,"i");return i.test(e)}}},{key:"_scrollToChoice",value:function(e,t){var i=this;if(e){var n=this.choiceList.offsetHeight,s=e.offsetHeight,o=e.offsetTop+s,r=this.choiceList.scrollTop+n,a=t>0?this.choiceList.scrollTop+o-r:e.offsetTop,c=function l(e,t,n){var s=!1,o=void 0,r=void 0,a=4;n>0?(o=(t-i.choiceList.scrollTop)/a,r=o>1?o:1,i.choiceList.scrollTop=i.choiceList.scrollTop+r,i.choiceList.scrollTop1?o:1,i.choiceList.scrollTop=i.choiceList.scrollTop-r,i.choiceList.scrollTop>t&&(s=!0)),s&&requestAnimationFrame(function(e){l(e,t,n)})};requestAnimationFrame(function(e){c(e,a,t)})}}},{key:"_highlightChoice",value:function(e){var t=this,i=Array.from(this.dropdown.querySelectorAll("[data-choice-selectable]"));if(i&&i.length){var n=Array.from(this.dropdown.querySelectorAll("."+this.config.classNames.highlightedState));if(n.forEach(function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute("aria-selected","false")}),e)e.classList.add(this.config.classNames.highlightedState),this.highlightPosition=i.indexOf(e);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.config.classNames.highlightedState),s.setAttribute("aria-selected","true")}}}},{key:"_addItem",value:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?-1:arguments[2],n=this.store.getItems(),s=(0,c.isType)("String",e)?e.trim():e,o=t||s,r=parseInt(i)||-1;this.config.prependValue&&(s=this.config.prependValue+s.toString()),this.config.appendValue&&(s+=this.config.appendValue.toString());var l=n?n.length+1:1;if(this.store.dispatch((0,a.addItem)(s,o,l,r)),"select-one"===this.passedElement.type&&this.removeActiveItems(l),this.config.callbackOnAddItem){var h=this.config.callbackOnAddItem;(0,c.isType)("Function",h)?h(l,s,this.passedElement):console.error("callbackOnAddItem: Callback is not a function")}return this}},{key:"_removeItem",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.config.callbackOnRemoveItem:arguments[1];if(!e||!(0,c.isType)("Object",e))return void console.error("removeItem: No item object was passed to be removed");var i=e.id,n=e.value,s=e.choiceId;if(this.store.dispatch((0,a.removeItem)(i,s)),t){if(!(0,c.isType)("Function",t))return void console.error("callbackOnRemoveItem: Callback is not a function");t(i,n,this.passedElement)}return this}},{key:"_addChoice",value:function(e,t,i,n){var s=arguments.length<=4||void 0===arguments[4]?-1:arguments[4];if(i){n||(n=i);var o=this.store.getChoices(),r=o?o.length+1:1;this.store.dispatch((0,a.addChoice)(i,n,r,s,t)),e&&!t&&this._addItem(i,n,r)}}},{key:"_addGroup",value:function(e,t,i){var n=this,s=(0,c.isType)("Object",e)?e.choices:Array.from(e.getElementsByTagName("OPTION")),o=t,r=!!e.disabled&&e.disabled;s?(this.store.dispatch((0,a.addGroup)(e.label,o,!0,r)),s.forEach(function(e,t){var i=e.disabled||e.parentNode&&e.parentNode.disabled||!1,s=!!e.selected&&e.selected,r=void 0;r=(0,c.isType)("Object",e)?e.label||e.value:e.innerHTML,n._addChoice(s,i,e.value,r,o)})):this.store.dispatch((0,a.addGroup)(e.label,e.id,!1,e.disabled))}},{key:"_getTemplate",value:function(e){if(e){for(var t=this.config.templates,i=arguments.length,n=Array(i>1?i-1:0),s=1;s