vuetify eingebunden + erster Versuch Combobox

This commit is contained in:
2019-04-17 15:58:15 +02:00
parent 24642ca1a8
commit 56f4a3f940
1846 changed files with 219701 additions and 53848 deletions
+38
View File
@@ -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
@@ -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
View File
@@ -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
File diff suppressed because one or more lines are too long
+59
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
@@ -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":""}