@esri/calcite-ui-icons
Version:
A collection of UI SVG icons created by Esri for applications.
8 lines (7 loc) • 18.3 kB
JavaScript
/*!
* Calcite Web - Calcite Design Components in CSS, JS and HTML
* @version v1.1.0
* @license Apache-2.0
* @copyright 2018 Esri
* @link https://github.com/Esri/calcite-web
*/(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?module.exports=b():'function'==typeof define&&define.amd?define(b):a.calcite=b()})(this,function(){'use strict';function a(a,b){var c;for(c=b;c;c=c.parentNode){var d=new RegExp('(\\s|^)'+a+'(\\s|$)').test(c.getAttribute('class'));if(1===c.nodeType&&d)break}return c}function b(a){return Array.isArray(a)?a:Array.prototype.slice.call(a)}function c(a,c){var d=c||document,e=d.querySelectorAll(a);return b(e)}function d(a,b){var c=b.filter(function(b){var c=a.toLowerCase(),d=b.innerHTML.toLowerCase();return-1!==d.indexOf(c)});return c}function f(a,b){return new RegExp('(\\s|^)'+b+'(\\s|$)').test(a.getAttribute('class'))}function e(a,b){b.split(' ').forEach(function(b){if(!f(a,b)){var c=a.getAttribute('class')||'';a.setAttribute('class',c+' '+b)}})}function g(a,b){b.split(' ').forEach(function(b){var c=(a.getAttribute('class')||'').replace(new RegExp('(\\s|^)'+b+'(\\s|$)','g'),'$2');f(a,b)&&a.setAttribute('class',c)})}function h(a,b){f(a,b)?g(a,b):e(a,b)}function i(a){a=b(a),a.forEach(function(a){g(a,'is-active')})}function j(a,b){i(a),e(b,'is-active')}function k(a){a.forEach(function(a){a&&a.setAttribute('aria-hidden',!0)})}function l(a){a.forEach(function(a){a&&a.removeAttribute('aria-hidden')})}function m(a){if(a){var b=a.getAttribute('aria-expanded');b?a.removeAttribute('aria-expanded'):a.setAttribute('aria-expanded','true')}}function n(){return'click'}function o(a,b,c){if(a.addEventListener)return a.addEventListener(b,c,!1);return a.attachEvent?a.attachEvent('on'+b,c):void 0}function p(a,b,c){if(a.removeEventListener)return a.removeEventListener(b,c,!1);return a.detachEvent?a.detachEvent('on'+b,c):void 0}function q(a){return a.target||a.srcElement}function r(a){return a.preventDefault?a.preventDefault():void(a.returnValue&&(a.returnValue=!1))}function s(a){return a=a||window.event,a.stopPropagation?a.stopPropagation():void(a.cancelBubble&&(a.cancelBubble=!0))}function t(a,b,c){var d,e,f,g;return g=function(){d=!1,e&&(f.apply(c,e),e=!1)},f=function(){d?e=arguments:(a.apply(c,arguments),setTimeout(g,b),d=!0)},f}function u(){}function v(a){for(var b='',c=0;c<a;c++)b+=(0|65536*(1+Math.random())).toString(16).substring(1);return b}function w(a){if(!a)throw new TypeError('Invalid argument `value` has no value.');this.value=w.EMPTY,a&&a instanceof w?this.value=a.toString():a&&'[object String]'===Object.prototype.toString.call(a)&&w.isGuid(a)&&(this.value=a),this.equals=function(a){return w.isGuid(a)&&this.value===a},this.isEmpty=function(){return this.value===w.EMPTY},this.toString=function(){return this.value},this.toJSON=function(){return this.value}}function x(b){s(b);var c=a('accordion-section',q(b));Y.emit('accordion:toggle',{node:c})}function y(a){h(a.node,'is-active');var b=a.node.querySelector('.accordion-title');m(b)}function z(a){13===a.keyCode&&f(q(a),'accordion-title')&&x(a)}function A(a){var b=c('.js-accordion');a?B(a.node):b.forEach(function(a){B(a)})}function B(a){a.setAttribute('aria-live','polite'),a.setAttribute('role','tablist'),b(a.children).forEach(function(a){var b=a.querySelector('.accordion-title'),c=a.querySelector('.accordion-content'),d=c.id||w.raw();c.id=d,b.setAttribute('role','tab'),b.setAttribute('tabindex','0'),b.setAttribute('aria-controls',d),f(a,'is-active')&&b.setAttribute('aria-expanded','true');var g=!1;X.accordions.forEach(function(a){a.target===b&&a.event===n()&&a.fn===x&&(g=!0)}),g||(X.accordions.push({target:b,event:n(),fn:x}),X.accordions.push({target:a,event:'keyup',fn:z}),o(b,n(),x),o(a,'keyup',z))})}function C(){Y.on('accordion:bind',A),Y.on('accordion:toggle',y),$=!0}function D(){$||C(),Y.emit('accordion:bind')}function E(){p(document.body,n(),E),c('.js-dropdown').forEach(function(a){g(a,'is-active')}),c('.js-dropdown-toggle').forEach(function(a){a.setAttribute('aria-expanded','false')}),p(document,'keydown',G)}function F(a){if(a){var b=f(a.node,'is-active');Y.emit('dropdown:close'),b||(e(a.node,'is-active'),a.target&&a.target.setAttribute('aria-expanded','true'),o(document,'keydown',G)),f(a.node,'is-active')&&o(document.body,n(),E)}}function G(a){40===a.keyCode|38===a.keyCode&&a.preventDefault()}function H(){var a=c('.js-dropdown-toggle');a.forEach(function(a){var b=!1;X.dropdowns.forEach(function(c){c.target===a&&c.event===n()&&c.fn===M&&(b=!0)}),b||(X.dropdowns.push({target:a,event:n(),fn:M}),o(a,n(),M))})}function I(){var a=document.querySelector('.js-dropdown.is-active');return!!a&&a}function J(a){var b=document.activeElement,c=a.links.indexOf(b);-1===c?a.forward?c=0:c=a.links.length-1:a.forward?(c+=1,c===a.links.length&&(c=0)):(c-=1,-1==c&&(c=a.links.length-1)),a.links[c].focus()}function K(){var a=I();if(a){var b=c('.dropdown-link',a);Y.emit('dropdown:focus',{links:b,forward:!0})}}function L(){var a=I();if(a){var b=c('.dropdown-link',a);Y.emit('dropdown:focus',{links:b,forward:!1})}}function M(b){r(b),s(b);var c=a('js-dropdown',b.target);Y.emit('dropdown:toggle',{node:c,target:b.target})}function N(){Y.on('dropdown:toggle',F),Y.on('dropdown:close',E),Y.on('keyboard:escape',E),Y.on('keyboard:arrow:down',K),Y.on('keyboard:arrow:up',L),Y.on('dropdown:focus',J),_=!0}function O(){_||N(),H()}function P(){function b(a){if(!a||a.all)u.forEach(function(a){a.removeAttribute('tabindex'),g(a,'is-active')});else{var b=document.querySelector('.js-drawer[data-drawer="'+a.id+'"]');b&&(b.removeAttribute('tabindex'),g(b,'is-active'))}l([q,s]),p(document,'focusin',d),g(document.documentElement,'drawer-no-overflow'),a&&!a.fromOpen&&setTimeout(function(){g(j,'overflow-hidden'),g(m,'overflow-scroll')},300)}function d(b){a('js-drawer',b.target)||u.forEach(function(a){f(a,'is-active')&&a.focus()})}function h(a){f(a.target,'js-drawer')&&Y.emit('drawer:close',{fromOpen:!1,all:!0})}function i(a){r(a);var b=a.target.getAttribute('data-drawer');Y.emit('drawer:open',{id:b})}var j=document.documentElement,m=document.body,q=document.querySelector('.wrapper'),s=document.querySelector('.footer'),t=c('.js-drawer-toggle'),u=c('.js-drawer');Y.on('drawer:open',function(a){Y.emit('drawer:close',{fromOpen:!0});var b=document.querySelector('.js-drawer[data-drawer="'+a.id+'"]');b.setAttribute('tabindex',0),e(b,'is-active'),e(j,'overflow-hidden'),j.offsetHeight>j.clientHeight&&e(m,'overflow-scroll'),k([q,s]),o(b,n(),h),o(document,'focusin',d)}),Y.on('keyboard:escape',b),Y.on('drawer:close',b),Y.on('drawer:bind',function(a){a?o(a.node,n(),i):t.forEach(function(a){o(a,n(),i)})}),Y.emit('drawer:bind')}function Q(){function j(b){var c=a('js-filter-dropdown',b.target);return{parent:c,id:c.getAttribute('data-filter-dropdown'),item:b.target}}function k(a){s(a);var b=j(a);Y.emit('filterDropdown:input:focus',b)}function l(a){r(a),s(a);var b=j(a);Y.emit('filterDropdown:select',b)}function m(a){a.preventDefault();var b=j(a);h(a.target,'is-active'),Y.emit('filterDropdown:toggle',b)}function p(){var a=document.querySelectorAll('.filter-dropdown-list');i(a);var b=c('.js-filter-dropdown-open'),d=c('.js-filter-dropdown-close');b.forEach(function(a){return e(a,'is-active')}),d.forEach(function(a){return g(a,'is-active')})}function q(a){a.preventDefault();var b=j(a);b.i=a.target.getAttribute('data-item-id'),Y.emit('filterDropdown:select:remove',b)}Y.on('filterDropdown:bind',function(){var a=c('.js-filter-dropdown');a.forEach(function(a){var c=a.getAttribute('data-filter-dropdown'),f=a.querySelector('.filter-dropdown-input');o(f,'focus',k);for(var h,j=a.querySelectorAll('.js-filter-dropdown-open'),p=0;p<j.length;p++)h=j[p],h.setAttribute('data-id',c),o(h,n(),m);for(var i,q=a.querySelectorAll('.js-filter-dropdown-close'),r=0;r<q.length;r++)i=q[r],i.setAttribute('data-id',c),o(i,n(),m);for(var s,t=a.querySelectorAll('.filter-dropdown-link'),u=0;u<t.length;u++)s=t[u],s.setAttribute('data-item-id',u),o(s,n(),l);o(f,'keyup',function(){var a=b(t);a.forEach(function(a){e(a,'hide')}),d(f.value,a).forEach(function(a){g(a,'hide')})})})}),Y.on('filterDropdown:select',function(a){h(a.item,'is-active')}),Y.on('filterDropdown:select',function(a){var b=a.parent.querySelectorAll('.filter-dropdown-link.is-active'),c={parent:a.parent,id:a.id,active:b};Y.emit('filterDropdown:active',c)}),Y.on('filterDropdown:select:remove',function(a){var b=a.parent.querySelectorAll('.filter-dropdown-link.is-active'),c=b[a.i];g(c,'is-active');var d=a.parent.querySelectorAll('.filter-dropdown-link.is-active'),e={parent:a.parent,id:a.id,active:d};Y.emit('filterDropdown:active',e)}),Y.on('filterDropdown:active',function(a){Y.emit('filterDropdown:active:clear',a);var b=a.parent.querySelector('.js-filter-dropdown-no-filters');0<a.active.length?e(b,'hide'):g(b,'hide');for(var c=0;c<a.active.length;c++){var d=a.active[c],f='<span class="filter-dropdown-active">\n '+d.innerHTML+'\n <a class="filter-dropdown-remove" href="#" data-item-id=\''+c+'\'>\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 32 32" class="svg-icon"><path d="M18.404 16l9.9 9.9-2.404 2.404-9.9-9.9-9.9 9.9L3.696 25.9l9.9-9.9-9.9-9.898L6.1 3.698l9.9 9.899 9.9-9.9 2.404 2.406-9.9 9.898z"/></svg>\n </a>\n </span>';a.parent.insertAdjacentHTML('beforeend',f);var h=a.parent.querySelector('.filter-dropdown-remove[data-item-id="'+c+'"]');o(h,n(),q)}}),Y.on('filterDropdown:active:clear',function(a){for(var b=a.parent.querySelectorAll('.filter-dropdown-active'),c=0;c<b.length;c++)a.parent.removeChild(b[c])}),Y.on('filterDropdown:toggle',function(a){var b=a.parent.querySelector('.filter-dropdown-list');f(b,'is-active')?Y.emit('filterDropdown:close',a):Y.emit('filterDropdown:open',a)}),Y.on('filterDropdown:open',function(a){p();var b=a.parent.querySelector('.filter-dropdown-list');e(b,'is-active');var d=c('.js-filter-dropdown-close',a.parent),f=c('.js-filter-dropdown-open',a.parent);f.forEach(function(a){return g(a,'is-active')}),d.forEach(function(a){return e(a,'is-active')})}),Y.on('filterDropdown:close',p),Y.on('keyboard:escape',p),Y.emit('filterDropdown:bind')}function R(){function a(){var a=[];return r&&a.push(r),s&&a.push(s),a}function b(b){if(Y.emit('modal:close',{fromOpen:!0}),b&&b.id){var d=document.querySelector('.js-modal[data-modal="'+b.id+'"]');d.removeAttribute('tabindex'),o(document,'keydown',f),e(d,'is-active'),e(m,'overflow-hidden'),m.offsetHeight>m.clientHeight&&e(q,'overflow-scroll'),k(a());var g=c('button, [href], input, select, textarea, [tabindex]',d).filter(function(a){return!a.disabled&&-1!==a.tabIndex&&0<a.offsetHeight});h=g.shift(),j=g.pop(),h&&h.focus()}}function d(b){if(!b||!b.id)i(u);else{var c=document.querySelector('.js-modal[data-modal="'+b.id+'"]');g(c,'is-active'),c.setAttribute('tabindex',0),p(document,'keydown',f),l(a())}b&&b.fromOpen||setTimeout(function(){g(m,'overflow-hidden'),g(q,'overflow-scroll')},300)}function f(a){var b='Tab'===a.key||9===a.keyCode;b&&(a.shiftKey?document.activeElement===h&&(j&&j.focus(),a.preventDefault()):document.activeElement===j&&(h&&h.focus(),a.preventDefault()))}var h,j,m=document.documentElement,q=document.body,r=document.querySelector('.wrapper'),s=document.querySelector('.footer'),t=c('.js-modal-toggle'),u=c('.js-modal');Y.on('modal:open',b),Y.on('keyboard:escape',d),Y.on('modal:close',d),Y.on('modal:bind',function(a){a?o(a,n(),S):t.forEach(function(a){var b=!1;X.modals.forEach(function(c){c.target===a&&c.event===n()&&c.fn===S&&(b=!0)}),b||(X.modals.push({target:a,event:n(),fn:S}),o(a,n(),S))})}),Y.emit('modal:bind')}function S(b){r(b);var c=a('js-modal-toggle',b.target),d=c.getAttribute('data-modal'),e=document.querySelector('.js-modal[data-modal="'+d+'"]');e&&!f(e,'is-active')?Y.emit('modal:open',{id:d}):Y.emit('modal:close')}function T(){function a(a){var b=a.querySelector('.js-search-icon'),c=a.querySelector('.js-close-icon');h(b,'hide'),h(c,'hide'),h(i,'is-active'),h(document.body,'overflow-hidden'),Y.emit('search:focus')}function d(a){r(a),Y.emit('search:toggle',a.target)}var e=c('.js-search-toggle'),i=c('.js-search')[0];Y.on('search:bind',function(a){a?o(a,n(),d):e.forEach(function(a){o(a,n(),d)})}),Y.on('search:toggle',a),Y.on('keyboard:escape',function(){if(f(i,'is-active')){g(i,'is-active'),g(document.body,'overflow-hidden');var c=b(e);c.forEach(a);var d=document.querySelector('.js-search-input');d&&d.blur()}}),Y.on('search:focus',function(){var a=document.querySelector('.js-search-input');a.focus()}),Y.emit('search:bind')}function U(){function a(a){window.location.assign(a.currentTarget.value)}Y.on('selectnav:bind',function(){b.forEach(function(b){o(b,'change',a)})});var b=c('.js-select-nav');Y.emit('selectnav:bind')}function V(){function a(a){var b=w.raw();a.setAttribute('data-sticky-id',b);var c=a.parentNode,d=a.cloneNode('deep');e(d,'js-shim'),g(d,'js-sticky'),d.setAttribute('data-sticky-id',b),d.style.visibility='hidden',d.style.display='none',c.insertBefore(d,a)}Y.on('scrolling:at',function(a){d.forEach(function(b){var c=b.element;if(f(b.element,'is-sticky')){var d=b.element.getAttribute('data-sticky-id');c=document.querySelector('.js-shim[data-sticky-id="'+d+'"]')}if(c){var e=c.getAttribute('data-top')||0;b.top=c.offsetTop-parseInt(e,0)}b.top<a?Y.emit('sticky:stick',b):Y.emit('sticky:unstick',b)})}),Y.on('sticky:stick',function(a){var b=a.element.getAttribute('data-sticky-id'),c=document.querySelector('.js-shim[data-sticky-id="'+b+'"]');b&&c&&(e(a.element,'is-sticky'),c.style.display='')}),Y.on('sticky:unstick',function(a){var b=a.element.getAttribute('data-sticky-id'),c=document.querySelector('.js-shim[data-sticky-id="'+b+'"]');b&&c&&(g(a.element,'is-sticky'),c.style.display='none')});var b=c('.js-sticky'),d=b.map(function(b){var c=b.offsetTop,d=b.getAttribute('data-top')||0;b.style.top=d+'px';var e=b.getAttribute('data-sticky-id');return e||a(b),{top:c-parseInt(d,0),element:b}})}function W(){function d(a){var b=a.getAttribute('data-tab');if(b)return b;var c=w.raw();return a.setAttribute('data-tab',c),c}function g(b){var c=b.target;f(c,'js-tab')||(c=b.currentTarget);var e=a('js-tab-group',c),g=d(e);return{parent:e,id:g,active:c}}function e(a){a.preventDefault();var b=g(a);Y.emit('tabs:active',b)}function h(a){var c=g(a);if((13===a.keyCode||32===a.keyCode)&&(a.preventDefault(),Y.emit('tabs:active',c)),39===a.keyCode||37===a.keyCode){var d=b(c.parent.querySelectorAll('.js-tab')),e=d.indexOf(document.activeElement);if(-1<e&&f(document.activeElement,'js-tab')){var h=d[e+1]||d[0],i=d[e-1]||d[d.length-1],j=39===a.keyCode?h:i;j.focus()}}}Y.on('tabs:bind',function(){var a=c('.js-tab'),b=c('.js-tab-group'),g=c('.js-tab-section');b.forEach(function(a){a.setAttribute('aria-live','polite'),d(a),a.children[0].setAttribute('role','tablist');for(var b=a.querySelectorAll('.js-tab'),c=100/b.length,e=0;e<b.length;e++)b[e].style.maxWidth=c+'%'}),a.forEach(function(a){a.setAttribute('aria-expanded','false'),a.setAttribute('role','tab'),a.setAttribute('tabindex','0'),o(a,n(),e),o(a,'keydown',h)}),g.forEach(function(a){a.setAttribute('role','tabpanel');var b=f(a,'is-active');b?a.setAttribute('aria-expanded',!0):a.setAttribute('aria-expanded',!1)})}),Y.on('tabs:active',function(a){var c=a.parent,d=b(c.querySelectorAll('.js-tab')),e=a.active,f=b(c.querySelectorAll('.js-tab-section')),g=d.indexOf(e),h=f[g];d.forEach(function(a){a.setAttribute('aria-expanded',!1)}),e.setAttribute('aria-expanded',!0),j(d,e),f.forEach(function(a){a.setAttribute('aria-expanded',!1)}),h.setAttribute('aria-expanded',!0),j(f,h),e.focus()}),Y.emit('tabs:bind')}var X={dropdowns:[],accordions:[],modals:[]};u.prototype={on:function(a,b,c){var d=this.e||(this.e={});return(d[a]||(d[a]=[])).push({fn:b,ctx:c}),this},once:function(a,b,c){function d(){e.off(a,d),b.apply(c,arguments)}var e=this;return d._=b,this.on(a,d,c)},emit:function(a){var b=[].slice.call(arguments,1),c=((this.e||(this.e={}))[a]||[]).slice(),d=0,e=c.length;for(d;d<e;d++)c[d].fn.apply(c[d].ctx,b);return this},off:function(a,b){var c=this.e||(this.e={}),d=c[a],e=[];if(d&&b)for(var f=0,g=d.length;f<g;f++)d[f].fn!==b&&d[f].fn._!==b&&e.push(d[f]);return e.length?c[a]=e:delete c[a],this}};var Y=new u,Z=/^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$/i;w.EMPTY='00000000-0000-0000-0000-000000000000',w.isGuid=function(a){return a&&(a instanceof w||Z.test(a.toString()))},w.create=function(){return new w([v(2),v(1),v(1),v(1),v(3)].join('-'))},w.raw=function(){return[v(2),v(1),v(1),v(1),v(3)].join('-')};var $=!1,_=!1;o(document,'keyup',function(a){27===a.keyCode?Y.emit('keyboard:escape'):13===a.keyCode?Y.emit('keyboard:return'):32===a.keyCode?Y.emit('keyboard:space'):38===a.keyCode?Y.emit('keyboard:arrow:up'):40===a.keyCode?Y.emit('keyboard:arrow:down'):37===a.keyCode?Y.emit('keyboard:arrow:left'):39===a.keyCode&&Y.emit('keyboard:arrow:right')}),o(window,'scroll',t(function(){Y.emit('scrolling:at',window.pageYOffset)},100));var aa=[D,function(){function a(a){a.preventDefault();var b=a.target.getAttribute('data-clipboard-target');document.querySelector(b).select(),document.execCommand('copy')}var b=c('.js-copy-to-clipboard');Y.on('clipboard:bind',function(c){c?o(c.node,'click',a):b.forEach(function(b){o(b,'click',a)})}),Y.emit('clipboard:bind')},O,P,Q,R,T,U,V,W];return{version:'1.1.0',click:n,addEvent:o,removeEvent:p,eventTarget:q,preventDefault:r,stopPropagation:s,throttle:t,hasClass:f,addClass:e,removeClass:g,toggleClass:h,removeActive:i,addActive:function(a){a=b(a),a.forEach(function(a){e(a,'is-active')})},toggleActive:j,toggleAriaHidden:function(a){a.forEach(function(a){if(a){var b=a.getAttribute('aria-hidden');'true'===b?a.removeAttribute('aria-hidden'):a.setAttribute('aria-hidden',!0)}})},toggleAriaExpanded:m,closest:a,nodeListToArray:b,findElements:c,bus:Y,accordion:D,dropdown:O,drawer:P,filterDropdown:Q,modal:R,search:T,selectNav:U,sticky:V,tabs:W,extend:function(a){for(var b in'function'!=typeof Object.assign&&(Object.assign=function(a){var b=arguments;if(null==a)throw new TypeError('Cannot convert undefined or null to object');a=Object(a);for(var c,d=1;d<arguments.length;d++)if(c=b[d],null!=c)for(var e in c)Object.prototype.hasOwnProperty.call(c,e)&&(a[e]=c[e]);return a}),a)aa.push(a[b]);Object.assign(this,a)},init:function(){aa.forEach(function(a){a()})}}});