uikit
Version:
UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.
3 lines (2 loc) • 7.54 kB
JavaScript
/*! UIkit 3.6.19 | https://www.getuikit.com | (c) 2014 - 2021 YOOtheme | MIT License */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("uikit-util")):"function"==typeof define&&define.amd?define("uikitfilter",["uikit-util"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).UIkitFilter=e(t.UIkit.util)}(this,function(p){"use strict";function e(t){return function(t,e,n){for(var i=[[]],r=0;r<t.length;r++){var o=t[r];if(p.isVisible(o))for(var a=f(o),s=i.length-1;0<=s;s--){var u=i[s];if(!u[0]){u.push(o);break}var c=void 0;if(c=u[0].offsetParent===o.offsetParent?f(u[0]):(a=f(o,!0),f(u[0],!0)),a[e]>=c[n]-1&&a[e]!==c[e]){i.push([o]);break}if(a[n]-1>c[e]||a[e]===c[e]){u.push(o);break}if(0===s){i.unshift([o]);break}}}return i}(t,"top","bottom")}function f(t,e){void 0===e&&(e=!1);var n=t.offsetTop,i=t.offsetLeft,r=t.offsetHeight,o=t.offsetWidth;return e&&(n=(t=p.offsetPosition(t))[0],i=t[1]),{top:n,left:i,bottom:n+r,right:i+o}}var i="uk-transition-leave",d="uk-transition-enter";function r(t,a,s,u){void 0===u&&(u=0);var c=h(a,!0),f={opacity:1},l={opacity:0},e=function(t){return function(){return c===h(a)?t():p.Promise.reject()}},n=e(function(){return p.addClass(a,i),p.Promise.all(m(a).map(function(e,n){return new p.Promise(function(t){return setTimeout(function(){return p.Transition.start(e,l,s/2,"ease").then(t)},n*u)})})).then(function(){return p.removeClass(a,i)})}),e=e(function(){var o=p.height(a);return p.addClass(a,d),t(),p.css(p.children(a),{opacity:0}),new p.Promise(function(r){return requestAnimationFrame(function(){var t=p.children(a),e=p.height(a);p.css(a,"alignContent","flex-start"),p.height(a,o);var n=m(a);p.css(t,l);var i=n.map(function(e,n){return new p.Promise(function(t){return setTimeout(function(){return p.Transition.start(e,f,s/2,"ease").then(t)},n*u)})});o!==e&&i.push(p.Transition.start(a,{height:e},s/2+n.length*u,"ease")),p.Promise.all(i).then(function(){p.removeClass(a,d),c===h(a)&&(p.css(a,{height:"",alignContent:""}),p.css(t,{opacity:""}),delete a.dataset.transition),r()})})})});return(p.hasClass(a,i)?o(a):p.hasClass(a,d)?o(a).then(n):n()).then(e)}function h(t,e){return e&&(t.dataset.transition=1+h(t)),p.toNumber(t.dataset.transition)||0}function o(t){return p.Promise.all(p.children(t).filter(p.Transition.inProgress).map(function(e){return new p.Promise(function(t){return p.once(e,"transitionend transitioncanceled",t)})}))}function m(t){return e(p.children(t)).reduce(function(t,e){return t.concat(p.sortBy(e.filter(function(t){return p.isInView(t)}),"offsetLeft"))},[])}function a(t,d,h){return new p.Promise(function(l){return requestAnimationFrame(function(){var u=p.children(d),c=u.map(function(t){return g(t,!0)}),f=p.css(d,["height","padding"]);p.Transition.cancel(d),u.forEach(p.Transition.cancel),v(d),t(),u=u.concat(p.children(d).filter(function(t){return!p.includes(u,t)})),p.Promise.resolve().then(function(){p.fastdom.flush();var n,i,r,t,e,o=p.css(d,["height","padding"]),e=(n=d,r=c,t=(i=u).map(function(t,e){return!!(p.parent(t)&&e in r)&&(r[e]?p.isVisible(t)?y(t):{opacity:0}:{opacity:p.isVisible(t)?1:0})}),e=t.map(function(t,e){e=p.parent(i[e])===n&&(r[e]||g(i[e]));return!!e&&(t?"opacity"in t||(e.opacity%1?t.opacity=1:delete e.opacity):delete e.opacity,e)}),[t,e]),a=e[0],s=e[1];u.forEach(function(t,e){return s[e]&&p.css(t,s[e])}),p.css(d,p.assign({display:"block"},f)),requestAnimationFrame(function(){var t=u.map(function(t,e){return p.parent(t)===d&&p.Transition.start(t,a[e],h,"ease")}).concat(p.Transition.start(d,o,h,"ease"));p.Promise.all(t).then(function(){u.forEach(function(t,e){return p.parent(t)===d&&p.css(t,"display",0===a[e].opacity?"none":"")}),v(d)},p.noop).then(l)})})})})}function g(t,e){var n=p.css(t,"zIndex");return!!p.isVisible(t)&&p.assign({display:"",opacity:e?p.css(t,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===n?p.index(t):n},y(t))}function v(t){p.css(t.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",marginTop:"",marginLeft:"",transform:"",width:"",zIndex:""}),p.css(t,{height:"",display:"",padding:""})}function y(t){var e=p.offset(t),n=e.height,i=e.width,r=p.position(t),e=r.top,r=r.left,t=p.css(t,["marginTop","marginLeft"]);return{top:e,left:r,height:n,width:i,marginLeft:t.marginLeft,marginTop:t.marginTop,transform:""}}var t={mixins:[{props:{duration:Number,animation:Boolean},data:{duration:150,animation:"slide"},methods:{animate:function(t,e){var n=this;void 0===e&&(e=this.$el);var i=this.animation;return("fade"===i?r:"delayed-fade"===i?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return r.apply(void 0,t.concat([40]))}:a)(t,e,this.duration).then(function(){return n.$update(e,"resize")},p.noop)}}}],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",duration:250},computed:{toggles:{get:function(t,e){t=t.attrItem;return p.$$("["+t+"],[data-"+t+"]",e)},watch:function(){var e,n=this;this.updateState(),!1!==this.selActive&&(e=p.$$(this.selActive,this.$el),this.toggles.forEach(function(t){return p.toggleClass(t,n.cls,p.includes(e,t))}))},immediate:!0},children:{get:function(t,e){t=t.target;return p.$$(t+" > *",e)},watch:function(t,e){var n;e&&(n=e,(t=t).length!==n.length||!t.every(function(t){return~n.indexOf(t)}))&&this.updateState()},immediate:!0}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(t){t.preventDefault(),this.apply(t.current)}}],methods:{apply:function(t){var e,n,i=this.getState(),t=u(t,this.attrItem,this.getState());e=i,n=t,["filter","sort"].every(function(t){return p.isEqual(e[t],n[t])})||this.setState(t)},getState:function(){var n=this;return this.toggles.filter(function(t){return p.hasClass(t,n.cls)}).reduce(function(t,e){return u(e,n.attrItem,t)},{filter:{"":""},sort:[]})},setState:function(n,i){var r=this;void 0===i&&(i=!0),n=p.assign({filter:{"":""},sort:[]},n),p.trigger(this.$el,"beforeFilter",[this,n]),this.toggles.forEach(function(t){return p.toggleClass(t,r.cls,!!function(t,e,n){var i=n.filter;void 0===i&&(i={"":""});var r=n.sort,o=r[0],a=r[1],n=s(t,e),r=n.filter;void 0===r&&(r="");t=n.group;void 0===t&&(t="");e=n.sort,n=n.order;void 0===n&&(n="asc");return p.isUndefined(e)?t in i&&r===i[t]||!r&&t&&!(t in i)&&!i[""]:o===e&&a===n}(t,r.attrItem,n))}),p.Promise.all(p.$$(this.target,this.$el).map(function(t){function e(){!function(t,e,n){var i=function(t){var t=t.filter,e="";return p.each(t,function(t){return e+=t||""}),e}(t);n.forEach(function(t){return p.css(t,"display",i&&!p.matches(t,i)?"none":"")});var t=(r=t.sort)[0],r=r[1];t&&(r=function(t,n,i){return p.assign([],t).sort(function(t,e){return p.data(t,n).localeCompare(p.data(e,n),void 0,{numeric:!0})*("asc"===i||-1)})}(n,t,r),p.isEqual(r,n)||p.append(e,r))}(n,t,p.children(t)),r.$update(r.$el)}return i?r.animate(e,t):e()})).then(function(){return p.trigger(r.$el,"afterFilter",[r])})},updateState:function(){var t=this;p.fastdom.write(function(){return t.setState(t.getState(),!1)})}}};function s(t,e){return p.parseOptions(p.data(t,e),["filter"])}function u(t,e,n){var i=s(t,e),r=i.filter,t=i.group,e=i.sort,i=i.order;return void 0===i&&(i="asc"),(r||p.isUndefined(e))&&(t?r?(delete n.filter[""],n.filter[t]=r):(delete n.filter[t],(p.isEmpty(n.filter)||""in n.filter)&&(n.filter={"":r||""})):n.filter={"":r||""}),p.isUndefined(e)||(n.sort=[e,i]),n}return"undefined"!=typeof window&&window.UIkit&&window.UIkit.component("filter",t),t});