-
Notifications
You must be signed in to change notification settings - Fork 69
/
Copy pathvue-tabs.min.js
7 lines (7 loc) · 6.06 KB
/
vue-tabs.min.js
1
2
3
4
5
6
7
/*!
* vue-nav-tabs v0.5.7
* (c) 2018-present cristij <joracristi@gmail.com>
* Released under the MIT License.
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.vueTabs={})}(this,function(t){"use strict";var e=/^(attrs|props|on|nativeOn|class|style|hook)$/,i=function(t){return t.reduce(function(t,i){var a,n,s,o,r;for(s in i)if(a=t[s],n=i[s],a&&e.test(s))if("class"===s&&("string"==typeof a&&(r=a,t[s]=a={},a[r]=!0),"string"==typeof n&&(r=n,i[s]=n={},n[r]=!0)),"on"===s||"nativeOn"===s||"hook"===s)for(o in n)a[o]=function(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}(a[o],n[o]);else if(Array.isArray(a))t[s]=a.concat(n);else if(Array.isArray(n))t[s]=[a].concat(n);else for(o in n)a[o]=n[o];else t[s]=i[s];return t},{})},a={name:"vue-tabs",props:{activeTabColor:String,activeTextColor:String,disabledColor:String,disabledTextColor:String,textPosition:{type:String,default:"center"},type:{type:String,default:"tabs"},direction:{type:String,default:"horizontal"},centered:Boolean,value:[String,Number,Object]},data:function(){return{activeTabIndex:0,tabs:[]}},computed:{isTabShape:function(){return"tabs"===this.type},isStacked:function(){return"vertical"===this.direction},classList:function(){return"nav "+(this.isTabShape?"nav-tabs":"nav-pills")+" "+(this.centered?"nav-justified":"")+" "+(this.isStacked?"nav-stacked":"")},stackedClass:function(){return this.isStacked?"stacked":""},activeTabStyle:function(){return{backgroundColor:this.activeTabColor,color:this.activeTextColor}}},methods:{navigateToTab:function(t,e){this.changeTab(this.activeTabIndex,t,e)},activateTab:function(t){this.activeTabIndex=t;var e=this.tabs[t];e.active=!0,this.$emit("input",e.title)},changeTab:function(t,e,i){var a=this.tabs[t]||{},n=this.tabs[e];n.disabled||(this.activeTabIndex=e,a.active=!1,n.active=!0,this.$emit("input",this.tabs[e].title),this.$emit("tab-change",e,n,a),this.tryChangeRoute(i))},tryChangeRoute:function(t){this.$router&&t&&this.$router.push(t)},addTab:function(t){var e=this.$slots.default.indexOf(t.$vnode);this.tabs.splice(e,0,t)},removeTab:function(t){var e=this.tabs,i=e.indexOf(t);i>-1&&e.splice(i,1)},getTabs:function(){return this.$slots.default?this.$slots.default.filter(function(t){return t.componentOptions}):[]},findTabAndActivate:function(t){var e=this.tabs.findIndex(function(e,i){return e.title===t||i===t});e!==this.activeTabIndex&&(-1!==e?this.changeTab(this.activeTabIndex,e):this.changeTab(this.activeTabIndex,0))},renderTabTitle:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",i=this.$createElement;if(0!==this.tabs.length){var a=this.tabs[t],n=a.active,s=a.title,o={color:this.activeTabColor};"center"===e&&(o.color=this.activeTextColor);var r=i("span",{class:"title title_"+e,style:n?o:{}},["center"===e&&this.renderIcon(t),s]);return a.$slots.title?a.$slots.title:a.$scopedSlots.title?a.$scopedSlots.title({active:n,title:s,position:e,icon:a.icon,data:a.tabData}):r}},renderIcon:function(t){var e=this.$createElement;if(0!==this.tabs.length){var i=this.tabs[t],a=i.icon,n=e("i",{class:a},[" "]);return!i.$slots.title&&a?n:void 0}},tabStyles:function(t){return t.disabled?{backgroundColor:this.disabledColor,color:this.disabledTextColor}:{}},renderTabs:function(){var t=this,e=this.$createElement;return this.tabs.map(function(a,n){if(a){var s=a.route,o=(a.id,a.title),r=(a.icon,a.tabId),c=t.activeTabIndex===n;return e("li",i([{attrs:{name:"tab",id:"t-"+r,"aria-selected":c,"aria-controls":"p-"+r,role:"tab"},class:["tab",{active:c},{disabled:a.disabled}],key:o},{on:{click:function(e){for(var i=arguments.length,o=Array(i>1?i-1:0),r=1;r<i;r++)o[r-1]=arguments[r];(function(){return!a.disabled&&t.navigateToTab(n,s)}).apply(void 0,[e].concat(o))}}}]),["top"===t.textPosition&&t.renderTabTitle(n,t.textPosition),e("a",i([{attrs:{href:"#",role:"tab"},style:c?t.activeTabStyle:t.tabStyles(a),class:[{active_tab:c},"tabs__link"]},{on:{click:function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),a=1;a<e;a++)i[a-1]=arguments[a];(function(t){return t.preventDefault(),!1}).apply(void 0,[t].concat(i))}}}]),["center"!==t.textPosition&&!a.$slots.title&&t.renderIcon(n),"center"===t.textPosition&&t.renderTabTitle(n,t.textPosition)]),"bottom"===t.textPosition&&t.renderTabTitle(n,t.textPosition)])}})}},render:function(){var t=arguments[0],e=this.renderTabs();return t("div",{class:["vue-tabs",this.stackedClass]},[t("div",{class:[{"nav-tabs-navigation":!this.isStacked},{"left-vertical-tabs":this.isStacked}]},[t("div",{class:["nav-tabs-wrapper",this.stackedClass]},[t("ul",{class:this.classList,attrs:{role:"tablist"}},[e])])]),t("div",{class:["tab-content",{"right-text-tabs":this.isStacked}]},[this.$slots.default])])},watch:{tabs:function(t){t.length>0&&!this.value&&(t.length<=this.activeTabIndex?this.activateTab(this.activeTabIndex-1):this.activateTab(this.activeTabIndex)),t.length>0&&this.value&&this.findTabAndActivate(this.value)},value:function(t){this.findTabAndActivate(t)}}},n={name:"v-tab",props:{title:{type:String,default:""},icon:{type:String,default:""},tabData:{default:null},beforeChange:{type:Function},id:String,route:{type:[String,Object]},disabled:Boolean,transitionName:String,transitionMode:String},computed:{isValidParent:function(){return"vue-tabs"===this.$parent.$options.name},hash:function(){return"#"+this.id},tabId:function(){return this.id?this.id:this.title}},data:function(){return{active:!1,validationError:null}},mounted:function(){this.$parent.addTab(this)},destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el),this.$parent.removeTab(this)},render:function(){return(0,arguments[0])("section",{class:"tab-container",attrs:{id:"p-"+this.tabId,"aria-labelledby":"t-"+this.tabId,role:"tabpanel"},directives:[{name:"show",value:this.active}]},[this.$slots.default])}},s={install:function(t){t.component("vue-tabs",a),t.component("v-tab",n)}};"undefined"!=typeof window&&window.Vue&&(window.Vue.use(s),window.VueTabs=s),t.default=s,t.VueTabs=a,t.VTab=n,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=vue-tabs.min.js.map