vuetify eingebunden + erster Versuch Combobox
This commit is contained in:
+38
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
/**
|
||||
* Tabs computed
|
||||
*
|
||||
* @mixin
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
computed: {
|
||||
activeTab: function activeTab() {
|
||||
if (!this.selectedItems.length) return undefined;
|
||||
return this.selectedItems[0];
|
||||
},
|
||||
containerStyles: function containerStyles() {
|
||||
return this.height ? {
|
||||
height: parseInt(this.height, 10) + 'px'
|
||||
} : null;
|
||||
},
|
||||
hasArrows: function hasArrows() {
|
||||
return (this.showArrows || !this.isMobile) && this.isOverflowing;
|
||||
},
|
||||
isMobile: function isMobile() {
|
||||
return this.$vuetify.breakpoint.width < this.mobileBreakPoint;
|
||||
},
|
||||
sliderStyles: function sliderStyles() {
|
||||
return {
|
||||
left: this.sliderLeft + 'px',
|
||||
transition: this.sliderLeft != null ? null : 'none',
|
||||
width: this.sliderWidth + 'px'
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=tabs-computed.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/components/VTabs/mixins/tabs-computed.js"],"names":[],"mappings":";;;;;;;;;;AAKA;kBACe;AACb,cAAU;AACR,iBADQ,uBACC;AACP,gBAAI,CAAC,KAAK,aAAL,CAAmB,MAAxB,EAAgC,OAAO,SAAP;AAEhC,mBAAO,KAAK,aAAL,CAAmB,CAAnB,CAAP;AACD,SALO;AAMR,uBANQ,6BAMO;AACb,mBAAO,KAAK,MAAL,GAAc;AACnB,wBAAW,SAAS,KAAK,MAAd,EAAsB,EAAtB,CAAX;AADmB,aAAd,GAEH,IAFJ;AAGD,SAVO;AAWR,iBAXQ,uBAWC;AACP,mBAAO,CAAC,KAAK,UAAL,IAAmB,CAAC,KAAK,QAA1B,KAAuC,KAAK,aAAnD;AACD,SAbO;AAcR,gBAdQ,sBAcA;AACN,mBAAO,KAAK,QAAL,CAAc,UAAd,CAAyB,KAAzB,GAAiC,KAAK,gBAA7C;AACD,SAhBO;AAiBR,oBAjBQ,0BAiBI;AACV,mBAAO;AACL,sBAAS,KAAK,UAAd,OADK;AAEL,4BAAY,KAAK,UAAL,IAAmB,IAAnB,GAA0B,IAA1B,GAAiC,MAFxC;AAGL,uBAAU,KAAK,WAAf;AAHK,aAAP;AAKD;AAvBO;AADG,C","sourcesContent":["/**\n * Tabs computed\n *\n * @mixin\n */\n/* @vue/component */\nexport default {\n computed: {\n activeTab () {\n if (!this.selectedItems.length) return undefined\n\n return this.selectedItems[0]\n },\n containerStyles () {\n return this.height ? {\n height: `${parseInt(this.height, 10)}px`\n } : null\n },\n hasArrows () {\n return (this.showArrows || !this.isMobile) && this.isOverflowing\n },\n isMobile () {\n return this.$vuetify.breakpoint.width < this.mobileBreakPoint\n },\n sliderStyles () {\n return {\n left: `${this.sliderLeft}px`,\n transition: this.sliderLeft != null ? null : 'none',\n width: `${this.sliderWidth}px`\n }\n }\n }\n}\n"],"sourceRoot":""}
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _VTabsItems = require('../VTabsItems');
|
||||
|
||||
var _VTabsItems2 = _interopRequireDefault(_VTabsItems);
|
||||
|
||||
var _VTabsSlider = require('../VTabsSlider');
|
||||
|
||||
var _VTabsSlider2 = _interopRequireDefault(_VTabsSlider);
|
||||
|
||||
var _VIcon = require('../../VIcon');
|
||||
|
||||
var _VIcon2 = _interopRequireDefault(_VIcon);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Tabs generators
|
||||
*
|
||||
* @mixin
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
methods: {
|
||||
genBar: function genBar(items) {
|
||||
return this.$createElement('div', this.setBackgroundColor(this.color, {
|
||||
staticClass: 'v-tabs__bar',
|
||||
'class': this.themeClasses,
|
||||
ref: 'bar'
|
||||
}), [this.genTransition('prev'), this.genWrapper(this.genContainer(items)), this.genTransition('next')]);
|
||||
},
|
||||
genContainer: function genContainer(items) {
|
||||
return this.$createElement('div', {
|
||||
staticClass: 'v-tabs__container',
|
||||
class: {
|
||||
'v-tabs__container--align-with-title': this.alignWithTitle,
|
||||
'v-tabs__container--centered': this.centered,
|
||||
'v-tabs__container--fixed-tabs': this.fixedTabs,
|
||||
'v-tabs__container--grow': this.grow,
|
||||
'v-tabs__container--icons-and-text': this.iconsAndText,
|
||||
'v-tabs__container--overflow': this.isOverflowing,
|
||||
'v-tabs__container--right': this.right
|
||||
},
|
||||
style: this.containerStyles,
|
||||
ref: 'container'
|
||||
}, items);
|
||||
},
|
||||
genIcon: function genIcon(direction) {
|
||||
var _this = this;
|
||||
|
||||
if (!this.hasArrows || !this[direction + 'IconVisible']) return null;
|
||||
return this.$createElement(_VIcon2.default, {
|
||||
staticClass: 'v-tabs__icon v-tabs__icon--' + direction,
|
||||
props: {
|
||||
disabled: !this[direction + 'IconVisible']
|
||||
},
|
||||
on: {
|
||||
click: function click() {
|
||||
return _this.scrollTo(direction);
|
||||
}
|
||||
}
|
||||
}, this[direction + 'Icon']);
|
||||
},
|
||||
genItems: function genItems(items, item) {
|
||||
if (items.length > 0) return items;
|
||||
if (!item.length) return null;
|
||||
return this.$createElement(_VTabsItems2.default, item);
|
||||
},
|
||||
genTransition: function genTransition(direction) {
|
||||
return this.$createElement('transition', {
|
||||
props: { name: 'fade-transition' }
|
||||
}, [this.genIcon(direction)]);
|
||||
},
|
||||
genWrapper: function genWrapper(items) {
|
||||
var _this2 = this;
|
||||
|
||||
return this.$createElement('div', {
|
||||
staticClass: 'v-tabs__wrapper',
|
||||
class: {
|
||||
'v-tabs__wrapper--show-arrows': this.hasArrows
|
||||
},
|
||||
ref: 'wrapper',
|
||||
directives: [{
|
||||
name: 'touch',
|
||||
value: {
|
||||
start: function start(e) {
|
||||
return _this2.overflowCheck(e, _this2.onTouchStart);
|
||||
},
|
||||
move: function move(e) {
|
||||
return _this2.overflowCheck(e, _this2.onTouchMove);
|
||||
},
|
||||
end: function end(e) {
|
||||
return _this2.overflowCheck(e, _this2.onTouchEnd);
|
||||
}
|
||||
}
|
||||
}]
|
||||
}, [items]);
|
||||
},
|
||||
genSlider: function genSlider(items) {
|
||||
if (!items.length) {
|
||||
items = [this.$createElement(_VTabsSlider2.default, {
|
||||
props: { color: this.sliderColor }
|
||||
})];
|
||||
}
|
||||
return this.$createElement('div', {
|
||||
staticClass: 'v-tabs__slider-wrapper',
|
||||
style: this.sliderStyles
|
||||
}, items);
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=tabs-generators.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+59
@@ -0,0 +1,59 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
/**
|
||||
* Tabs props
|
||||
*
|
||||
* @mixin
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
props: {
|
||||
activeClass: {
|
||||
type: String,
|
||||
default: 'v-tabs__item--active'
|
||||
},
|
||||
alignWithTitle: Boolean,
|
||||
centered: Boolean,
|
||||
fixedTabs: Boolean,
|
||||
grow: Boolean,
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: undefined,
|
||||
validator: function validator(v) {
|
||||
return !isNaN(parseInt(v));
|
||||
}
|
||||
},
|
||||
hideSlider: Boolean,
|
||||
iconsAndText: Boolean,
|
||||
mandatory: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
mobileBreakPoint: {
|
||||
type: [Number, String],
|
||||
default: 1264,
|
||||
validator: function validator(v) {
|
||||
return !isNaN(parseInt(v));
|
||||
}
|
||||
},
|
||||
nextIcon: {
|
||||
type: String,
|
||||
default: '$vuetify.icons.next'
|
||||
},
|
||||
prevIcon: {
|
||||
type: String,
|
||||
default: '$vuetify.icons.prev'
|
||||
},
|
||||
right: Boolean,
|
||||
showArrows: Boolean,
|
||||
sliderColor: {
|
||||
type: String,
|
||||
default: 'accent'
|
||||
},
|
||||
value: [Number, String]
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=tabs-props.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/components/VTabs/mixins/tabs-props.js"],"names":[],"mappings":";;;;;;;;;;AAKA;kBACe;AACb,WAAO;AACL,qBAAa;AACX,kBAAM,MADK;AAEX,qBAAS;AAFE,SADR;AAKL,wBAAgB,OALX;AAML,kBAAU,OANL;AAOL,mBAAW,OAPN;AAQL,cAAM,OARD;AASL,gBAAQ;AACN,kBAAM,CAAC,MAAD,EAAS,MAAT,CADA;AAEN,qBAAS,SAFH;AAGN,uBAAW;AAAA,uBAAK,CAAC,MAAM,SAAS,CAAT,CAAN,CAAN;AAAA;AAHL,SATH;AAcL,oBAAY,OAdP;AAeL,sBAAc,OAfT;AAgBL,mBAAW;AACT,kBAAM,OADG;AAET,qBAAS;AAFA,SAhBN;AAoBL,0BAAkB;AAChB,kBAAM,CAAC,MAAD,EAAS,MAAT,CADU;AAEhB,qBAAS,IAFO;AAGhB,uBAAW;AAAA,uBAAK,CAAC,MAAM,SAAS,CAAT,CAAN,CAAN;AAAA;AAHK,SApBb;AAyBL,kBAAU;AACR,kBAAM,MADE;AAER,qBAAS;AAFD,SAzBL;AA6BL,kBAAU;AACR,kBAAM,MADE;AAER,qBAAS;AAFD,SA7BL;AAiCL,eAAO,OAjCF;AAkCL,oBAAY,OAlCP;AAmCL,qBAAa;AACX,kBAAM,MADK;AAEX,qBAAS;AAFE,SAnCR;AAuCL,eAAO,CAAC,MAAD,EAAS,MAAT;AAvCF;AADM,C","sourcesContent":["/**\n * Tabs props\n *\n * @mixin\n */\n/* @vue/component */\nexport default {\n props: {\n activeClass: {\n type: String,\n default: 'v-tabs__item--active'\n },\n alignWithTitle: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n validator: v => !isNaN(parseInt(v))\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mandatory: {\n type: Boolean,\n default: true\n },\n mobileBreakPoint: {\n type: [Number, String],\n default: 1264,\n validator: v => !isNaN(parseInt(v))\n },\n nextIcon: {\n type: String,\n default: '$vuetify.icons.next'\n },\n prevIcon: {\n type: String,\n default: '$vuetify.icons.prev'\n },\n right: Boolean,\n showArrows: Boolean,\n sliderColor: {\n type: String,\n default: 'accent'\n },\n value: [Number, String]\n }\n}\n"],"sourceRoot":""}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
/**
|
||||
* Tabs touch
|
||||
*
|
||||
* @mixin
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
methods: {
|
||||
newOffset: function newOffset(direction) {
|
||||
var clientWidth = this.$refs.wrapper.clientWidth;
|
||||
if (direction === 'prev') {
|
||||
return Math.max(this.scrollOffset - clientWidth, 0);
|
||||
} else {
|
||||
return Math.min(this.scrollOffset + clientWidth, this.$refs.container.clientWidth - clientWidth);
|
||||
}
|
||||
},
|
||||
onTouchStart: function onTouchStart(e) {
|
||||
this.startX = this.scrollOffset + e.touchstartX;
|
||||
this.$refs.container.style.transition = 'none';
|
||||
this.$refs.container.style.willChange = 'transform';
|
||||
},
|
||||
onTouchMove: function onTouchMove(e) {
|
||||
this.scrollOffset = this.startX - e.touchmoveX;
|
||||
},
|
||||
onTouchEnd: function onTouchEnd() {
|
||||
var container = this.$refs.container;
|
||||
var wrapper = this.$refs.wrapper;
|
||||
var maxScrollOffset = container.clientWidth - wrapper.clientWidth;
|
||||
container.style.transition = null;
|
||||
container.style.willChange = null;
|
||||
/* istanbul ignore else */
|
||||
if (this.scrollOffset < 0 || !this.isOverflowing) {
|
||||
this.scrollOffset = 0;
|
||||
} else if (this.scrollOffset >= maxScrollOffset) {
|
||||
this.scrollOffset = maxScrollOffset;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=tabs-touch.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/components/VTabs/mixins/tabs-touch.js"],"names":[],"mappings":";;;;;;;;;;AAKA;kBACe;AACb,aAAS;AACP,iBADO,qBACI,SADJ,EACa;AAClB,gBAAM,cAAc,KAAK,KAAL,CAAW,OAAX,CAAmB,WAAvC;AAEA,gBAAI,cAAc,MAAlB,EAA0B;AACxB,uBAAO,KAAK,GAAL,CAAS,KAAK,YAAL,GAAoB,WAA7B,EAA0C,CAA1C,CAAP;AACD,aAFD,MAEO;AACL,uBAAO,KAAK,GAAL,CAAS,KAAK,YAAL,GAAoB,WAA7B,EAA0C,KAAK,KAAL,CAAW,SAAX,CAAqB,WAArB,GAAmC,WAA7E,CAAP;AACD;AACF,SATM;AAUP,oBAVO,wBAUO,CAVP,EAUQ;AACb,iBAAK,MAAL,GAAc,KAAK,YAAL,GAAoB,EAAE,WAApC;AACA,iBAAK,KAAL,CAAW,SAAX,CAAqB,KAArB,CAA2B,UAA3B,GAAwC,MAAxC;AACA,iBAAK,KAAL,CAAW,SAAX,CAAqB,KAArB,CAA2B,UAA3B,GAAwC,WAAxC;AACD,SAdM;AAeP,mBAfO,uBAeM,CAfN,EAeO;AACZ,iBAAK,YAAL,GAAoB,KAAK,MAAL,GAAc,EAAE,UAApC;AACD,SAjBM;AAkBP,kBAlBO,wBAkBG;AACR,gBAAM,YAAY,KAAK,KAAL,CAAW,SAA7B;AACA,gBAAM,UAAU,KAAK,KAAL,CAAW,OAA3B;AACA,gBAAM,kBAAkB,UAAU,WAAV,GAAwB,QAAQ,WAAxD;AACA,sBAAU,KAAV,CAAgB,UAAhB,GAA6B,IAA7B;AACA,sBAAU,KAAV,CAAgB,UAAhB,GAA6B,IAA7B;AAEA;AACA,gBAAI,KAAK,YAAL,GAAoB,CAApB,IAAyB,CAAC,KAAK,aAAnC,EAAkD;AAChD,qBAAK,YAAL,GAAoB,CAApB;AACD,aAFD,MAEO,IAAI,KAAK,YAAL,IAAqB,eAAzB,EAA0C;AAC/C,qBAAK,YAAL,GAAoB,eAApB;AACD;AACF;AA/BM;AADI,C","sourcesContent":["/**\n * Tabs touch\n *\n * @mixin\n */\n/* @vue/component */\nexport default {\n methods: {\n newOffset (direction) {\n const clientWidth = this.$refs.wrapper.clientWidth\n\n if (direction === 'prev') {\n return Math.max(this.scrollOffset - clientWidth, 0)\n } else {\n return Math.min(this.scrollOffset + clientWidth, this.$refs.container.clientWidth - clientWidth)\n }\n },\n onTouchStart (e) {\n this.startX = this.scrollOffset + e.touchstartX\n this.$refs.container.style.transition = 'none'\n this.$refs.container.style.willChange = 'transform'\n },\n onTouchMove (e) {\n this.scrollOffset = this.startX - e.touchmoveX\n },\n onTouchEnd () {\n const container = this.$refs.container\n const wrapper = this.$refs.wrapper\n const maxScrollOffset = container.clientWidth - wrapper.clientWidth\n container.style.transition = null\n container.style.willChange = null\n\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n }\n}\n"],"sourceRoot":""}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
/**
|
||||
* Tabs watchers
|
||||
*
|
||||
* @mixin
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
watch: {
|
||||
activeTab: function activeTab(val, oldVal) {
|
||||
this.setOverflow();
|
||||
if (!val) return;
|
||||
this.tabItems && this.tabItems(this.getValue(val, this.items.indexOf(val)));
|
||||
// Do nothing for first tab
|
||||
// is handled from isBooted
|
||||
// watcher
|
||||
if (oldVal == null) return;
|
||||
this.updateTabsView();
|
||||
},
|
||||
|
||||
alignWithTitle: 'callSlider',
|
||||
centered: 'callSlider',
|
||||
fixedTabs: 'callSlider',
|
||||
hasArrows: function hasArrows(val) {
|
||||
if (!val) this.scrollOffset = 0;
|
||||
},
|
||||
|
||||
/* @deprecate */
|
||||
internalValue: function internalValue(val) {
|
||||
/* istanbul ignore else */
|
||||
if (!this.$listeners['input']) return;
|
||||
this.$emit('input', val);
|
||||
},
|
||||
|
||||
lazyValue: 'updateTabs',
|
||||
right: 'callSlider',
|
||||
'$vuetify.application.left': 'onResize',
|
||||
'$vuetify.application.right': 'onResize',
|
||||
scrollOffset: function scrollOffset(val) {
|
||||
this.$refs.container.style.transform = 'translateX(' + -val + 'px)';
|
||||
if (this.hasArrows) {
|
||||
this.prevIconVisible = this.checkPrevIcon();
|
||||
this.nextIconVisible = this.checkNextIcon();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=tabs-watchers.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/components/VTabs/mixins/tabs-watchers.js"],"names":[],"mappings":";;;;;;;;;;AAKA;kBACe;AACb,WAAO;AACL,iBADK,qBACM,GADN,EACW,MADX,EACiB;AACpB,iBAAK,WAAL;AAEA,gBAAI,CAAC,GAAL,EAAU;AAEV,iBAAK,QAAL,IAAiB,KAAK,QAAL,CACf,KAAK,QAAL,CAAc,GAAd,EAAmB,KAAK,KAAL,CAAW,OAAX,CAAmB,GAAnB,CAAnB,CADe,CAAjB;AAIA;AACA;AACA;AACA,gBAAI,UAAU,IAAd,EAAoB;AAEpB,iBAAK,cAAL;AACD,SAhBI;;AAiBL,wBAAgB,YAjBX;AAkBL,kBAAU,YAlBL;AAmBL,mBAAW,YAnBN;AAoBL,iBApBK,qBAoBM,GApBN,EAoBS;AACZ,gBAAI,CAAC,GAAL,EAAU,KAAK,YAAL,GAAoB,CAApB;AACX,SAtBI;;AAuBL;AACA,qBAxBK,yBAwBU,GAxBV,EAwBa;AAChB;AACA,gBAAI,CAAC,KAAK,UAAL,CAAgB,OAAhB,CAAL,EAA+B;AAE/B,iBAAK,KAAL,CAAW,OAAX,EAAoB,GAApB;AACD,SA7BI;;AA8BL,mBAAW,YA9BN;AA+BL,eAAO,YA/BF;AAgCL,qCAA6B,UAhCxB;AAiCL,sCAA8B,UAjCzB;AAkCL,oBAlCK,wBAkCS,GAlCT,EAkCY;AACf,iBAAK,KAAL,CAAW,SAAX,CAAqB,KAArB,CAA2B,SAA3B,mBAAqD,CAAC,GAAtD;AACA,gBAAI,KAAK,SAAT,EAAoB;AAClB,qBAAK,eAAL,GAAuB,KAAK,aAAL,EAAvB;AACA,qBAAK,eAAL,GAAuB,KAAK,aAAL,EAAvB;AACD;AACF;AAxCI;AADM,C","sourcesContent":["/**\n * Tabs watchers\n *\n * @mixin\n */\n/* @vue/component */\nexport default {\n watch: {\n activeTab (val, oldVal) {\n this.setOverflow()\n\n if (!val) return\n\n this.tabItems && this.tabItems(\n this.getValue(val, this.items.indexOf(val))\n )\n\n // Do nothing for first tab\n // is handled from isBooted\n // watcher\n if (oldVal == null) return\n\n this.updateTabsView()\n },\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n fixedTabs: 'callSlider',\n hasArrows (val) {\n if (!val) this.scrollOffset = 0\n },\n /* @deprecate */\n internalValue (val) {\n /* istanbul ignore else */\n if (!this.$listeners['input']) return\n\n this.$emit('input', val)\n },\n lazyValue: 'updateTabs',\n right: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n scrollOffset (val) {\n this.$refs.container.style.transform = `translateX(${-val}px)`\n if (this.hasArrows) {\n this.prevIconVisible = this.checkPrevIcon()\n this.nextIconVisible = this.checkNextIcon()\n }\n }\n }\n}\n"],"sourceRoot":""}
|
||||
Reference in New Issue
Block a user