vuetify eingebunden + erster Versuch Combobox
This commit is contained in:
+78
@@ -0,0 +1,78 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = applicationable;
|
||||
|
||||
var _positionable = require('./positionable');
|
||||
|
||||
var _mixins = require('../util/mixins');
|
||||
|
||||
var _mixins2 = _interopRequireDefault(_mixins);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function applicationable(value) {
|
||||
var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
||||
|
||||
/* @vue/component */
|
||||
return (0, _mixins2.default)((0, _positionable.factory)(['absolute', 'fixed'])).extend({
|
||||
name: 'applicationable',
|
||||
props: {
|
||||
app: Boolean
|
||||
},
|
||||
computed: {
|
||||
applicationProperty: function applicationProperty() {
|
||||
return value;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// If previous value was app
|
||||
// reset the provided prop
|
||||
app: function app(x, prev) {
|
||||
prev ? this.removeApplication(true) : this.callUpdate();
|
||||
},
|
||||
applicationProperty: function applicationProperty(newVal, oldVal) {
|
||||
this.$vuetify.application.unbind(this._uid, oldVal);
|
||||
}
|
||||
},
|
||||
activated: function activated() {
|
||||
this.callUpdate();
|
||||
},
|
||||
created: function created() {
|
||||
for (var i = 0, length = events.length; i < length; i++) {
|
||||
this.$watch(events[i], this.callUpdate);
|
||||
}
|
||||
this.callUpdate();
|
||||
},
|
||||
mounted: function mounted() {
|
||||
this.callUpdate();
|
||||
},
|
||||
deactivated: function deactivated() {
|
||||
this.removeApplication();
|
||||
},
|
||||
destroyed: function destroyed() {
|
||||
this.removeApplication();
|
||||
},
|
||||
|
||||
methods: {
|
||||
callUpdate: function callUpdate() {
|
||||
if (!this.app) return;
|
||||
this.$vuetify.application.bind(this._uid, this.applicationProperty, this.updateApplication());
|
||||
},
|
||||
removeApplication: function removeApplication() {
|
||||
var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||
|
||||
if (!force && !this.app) return;
|
||||
this.$vuetify.application.unbind(this._uid, this.applicationProperty);
|
||||
},
|
||||
|
||||
updateApplication: function updateApplication() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
// Util
|
||||
//# sourceMappingURL=applicationable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/applicationable.ts"],"names":[],"mappings":";;;;;kBAMwB,e;;;;AAFxB;;;;;;AAEc,SAAU,eAAV,CAA2B,KAA3B,EAAmE;AAAA,QAArB,MAAqB,uEAAF,EAAE;;AAC/E;AACA,WAAO,sBAAO,2BAAoB,CAAC,UAAD,EAAa,OAAb,CAApB,CAAP,EAAmD,MAAnD,CAA0D;AAC/D,cAAM,iBADyD;AAG/D,eAAO;AACL,iBAAK;AADA,SAHwD;AAO/D,kBAAU;AACR,+BADQ,iCACW;AACjB,uBAAO,KAAP;AACD;AAHO,SAPqD;AAa/D,eAAO;AACL;AACA;AACA,eAHK,eAGA,CAHA,EAGY,IAHZ,EAGyB;AAC5B,uBACI,KAAK,iBAAL,CAAuB,IAAvB,CADJ,GAEI,KAAK,UAAL,EAFJ;AAGD,aAPI;AAQL,+BARK,+BAQgB,MARhB,EAQwB,MARxB,EAQ8B;AACjC,qBAAK,QAAL,CAAc,WAAd,CAA0B,MAA1B,CAAiC,KAAK,IAAtC,EAA4C,MAA5C;AACD;AAVI,SAbwD;AA0B/D,iBA1B+D,uBA0BtD;AACP,iBAAK,UAAL;AACD,SA5B8D;AA8B/D,eA9B+D,qBA8BxD;AACL,iBAAK,IAAI,IAAI,CAAR,EAAW,SAAS,OAAO,MAAhC,EAAwC,IAAI,MAA5C,EAAoD,GAApD,EAAyD;AACvD,qBAAK,MAAL,CAAY,OAAO,CAAP,CAAZ,EAAuB,KAAK,UAA5B;AACD;AACD,iBAAK,UAAL;AACD,SAnC8D;AAqC/D,eArC+D,qBAqCxD;AACL,iBAAK,UAAL;AACD,SAvC8D;AAyC/D,mBAzC+D,yBAyCpD;AACT,iBAAK,iBAAL;AACD,SA3C8D;AA6C/D,iBA7C+D,uBA6CtD;AACP,iBAAK,iBAAL;AACD,SA/C8D;;AAiD/D,iBAAS;AACP,sBADO,wBACG;AACR,oBAAI,CAAC,KAAK,GAAV,EAAe;AAEf,qBAAK,QAAL,CAAc,WAAd,CAA0B,IAA1B,CACE,KAAK,IADP,EAEE,KAAK,mBAFP,EAGE,KAAK,iBAAL,EAHF;AAKD,aATM;AAUP,6BAVO,+BAUyB;AAAA,oBAAb,KAAa,uEAAL,KAAK;;AAC9B,oBAAI,CAAC,KAAD,IAAU,CAAC,KAAK,GAApB,EAAyB;AAEzB,qBAAK,QAAL,CAAc,WAAd,CAA0B,MAA1B,CACE,KAAK,IADP,EAEE,KAAK,mBAFP;AAID,aAjBM;;AAkBP,+BAAmB;AAAA,uBAAM,CAAN;AAAA;AAlBZ;AAjDsD,KAA1D,CAAP;AAsED;AA3ED","sourcesContent":["import { factory as PositionableFactory } from './positionable'\nimport { TargetProp } from '../components/Vuetify/mixins/application'\n\n// Util\nimport mixins from '../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n }\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unbind(this._uid, oldVal)\n }\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.bind(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unbind(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0\n }\n })\n}\n"],"sourceRoot":""}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Bootable
|
||||
* @mixin
|
||||
*
|
||||
* Used to add lazy content functionality to components
|
||||
* Looks for change in "isActive" to automatically boot
|
||||
* Otherwise can be set manually
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = _vue2.default.extend().extend({
|
||||
name: 'bootable',
|
||||
props: {
|
||||
lazy: Boolean
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
isBooted: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
hasContent: function hasContent() {
|
||||
return this.isBooted || !this.lazy || this.isActive;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
isActive: function isActive() {
|
||||
this.isBooted = true;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
showLazyContent: function showLazyContent(content) {
|
||||
return this.hasContent ? content : undefined;
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=bootable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/bootable.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA;;;;;;;;AAQA;kBACe,cAAI,MAAJ,GAA+B,MAA/B,CAAsC;AACnD,UAAM,UAD6C;AAGnD,WAAO;AACL,cAAM;AADD,KAH4C;AAOnD,UAAM;AAAA,eAAO;AACX,sBAAU;AADC,SAAP;AAAA,KAP6C;AAWnD,cAAU;AACR,kBADQ,wBACE;AACR,mBAAO,KAAK,QAAL,IAAiB,CAAC,KAAK,IAAvB,IAA+B,KAAK,QAA3C;AACD;AAHO,KAXyC;AAiBnD,WAAO;AACL,gBADK,sBACG;AACN,iBAAK,QAAL,GAAgB,IAAhB;AACD;AAHI,KAjB4C;AAuBnD,aAAS;AACP,uBADO,2BACU,OADV,EAC2B;AAChC,mBAAO,KAAK,UAAL,GAAkB,OAAlB,GAA4B,SAAnC;AACD;AAHM;AAvB0C,CAAtC,C","sourcesContent":["import Vue, { VNode } from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable>().extend({\n name: 'bootable',\n\n props: {\n lazy: Boolean\n },\n\n data: () => ({\n isBooted: false\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || !this.lazy || this.isActive\n }\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n }\n },\n\n methods: {\n showLazyContent (content?: VNode[]): VNode[] | undefined {\n return this.hasContent ? content : undefined\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _VItemGroup = require('../components/VItemGroup/VItemGroup');
|
||||
|
||||
/* @vue/component */
|
||||
exports.default = _VItemGroup.BaseItemGroup.extend({
|
||||
name: 'button-group',
|
||||
provide: function provide() {
|
||||
return {
|
||||
btnToggle: this
|
||||
};
|
||||
},
|
||||
|
||||
props: {
|
||||
activeClass: {
|
||||
type: String,
|
||||
default: 'v-btn--active'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classes: function classes() {
|
||||
return _VItemGroup.BaseItemGroup.options.computed.classes.call(this);
|
||||
}
|
||||
}
|
||||
}); // Extensions
|
||||
//# sourceMappingURL=button-group.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/button-group.ts"],"names":[],"mappings":";;;;;;AACA;;AAEA;kBACe,0BAAc,MAAd,CAAqB;AAClC,UAAM,cAD4B;AAGlC,WAHkC,qBAG3B;AACL,eAAO;AACL,uBAAW;AADN,SAAP;AAGD,KAPiC;;AASlC,WAAO;AACL,qBAAa;AACX,kBAAM,MADK;AAEX,qBAAS;AAFE;AADR,KAT2B;AAgBlC,cAAU;AACR,eADQ,qBACD;AACL,mBAAO,0BAAc,OAAd,CAAsB,QAAtB,CAA+B,OAA/B,CAAuC,IAAvC,CAA4C,IAA5C,CAAP;AACD;AAHO;AAhBwB,CAArB,C","sourcesContent":["// Extensions\nimport { BaseItemGroup } from '../components/VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'button-group',\n\n provide (): object {\n return {\n btnToggle: this\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-btn--active'\n }\n },\n\n computed: {\n classes (): object {\n return BaseItemGroup.options.computed.classes.call(this)\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function isCssColor(color) {
|
||||
return !!color && !!color.match(/^(#|(rgb|hsl)a?\()/);
|
||||
}
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'colorable',
|
||||
props: {
|
||||
color: String
|
||||
},
|
||||
methods: {
|
||||
setBackgroundColor: function setBackgroundColor(color) {
|
||||
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
if (isCssColor(color)) {
|
||||
data.style = _extends({}, data.style, {
|
||||
'background-color': '' + color,
|
||||
'border-color': '' + color
|
||||
});
|
||||
} else if (color) {
|
||||
data.class = _extends({}, data.class, _defineProperty({}, color, true));
|
||||
}
|
||||
return data;
|
||||
},
|
||||
setTextColor: function setTextColor(color) {
|
||||
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
if (isCssColor(color)) {
|
||||
data.style = _extends({}, data.style, {
|
||||
'color': '' + color,
|
||||
'caret-color': '' + color
|
||||
});
|
||||
} else if (color) {
|
||||
var _color$toString$trim$ = color.toString().trim().split(' ', 2),
|
||||
_color$toString$trim$2 = _slicedToArray(_color$toString$trim$, 2),
|
||||
colorName = _color$toString$trim$2[0],
|
||||
colorModifier = _color$toString$trim$2[1];
|
||||
|
||||
data.class = _extends({}, data.class, _defineProperty({}, colorName + '--text', true));
|
||||
if (colorModifier) {
|
||||
data.class['text--' + colorModifier] = true;
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=colorable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/colorable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAGA,SAAS,UAAT,CAAqB,KAArB,EAA2C;AACzC,WAAO,CAAC,CAAC,KAAF,IAAW,CAAC,CAAC,MAAM,KAAN,CAAY,oBAAZ,CAApB;AACD;kBAEc,cAAI,MAAJ,CAAW;AACxB,UAAM,WADkB;AAGxB,WAAO;AACL,eAAO;AADF,KAHiB;AAOxB,aAAS;AACP,0BADO,8BACa,KADb,EACyD;AAAA,gBAApB,IAAoB,uEAAF,EAAE;;AAC9D,gBAAI,WAAW,KAAX,CAAJ,EAAuB;AACrB,qBAAK,KAAL,gBACK,KAAK,KADV;AAEE,6CAAuB,KAFzB;AAGE,yCAAmB;AAHrB;AAKD,aAND,MAMO,IAAI,KAAJ,EAAW;AAChB,qBAAK,KAAL,gBACK,KAAK,KADV,sBAEG,KAFH,EAEW,IAFX;AAID;AAED,mBAAO,IAAP;AACD,SAhBM;AAkBP,oBAlBO,wBAkBO,KAlBP,EAkBmD;AAAA,gBAApB,IAAoB,uEAAF,EAAE;;AACxD,gBAAI,WAAW,KAAX,CAAJ,EAAuB;AACrB,qBAAK,KAAL,gBACK,KAAK,KADV;AAEE,kCAAY,KAFd;AAGE,wCAAkB;AAHpB;AAKD,aAND,MAMO,IAAI,KAAJ,EAAW;AAAA,4CACmB,MAAM,QAAN,GAAiB,IAAjB,GAAwB,KAAxB,CAA8B,GAA9B,EAAmC,CAAnC,CADnB;AAAA;AAAA,oBACT,SADS;AAAA,oBACE,aADF;;AAEhB,qBAAK,KAAL,gBACK,KAAK,KADV,sBAEG,YAAY,QAFf,EAE0B,IAF1B;AAIA,oBAAI,aAAJ,EAAmB;AACjB,yBAAK,KAAL,CAAW,WAAW,aAAtB,IAAuC,IAAvC;AACD;AACF;AACD,mBAAO,IAAP;AACD;AApCM;AAPe,CAAX,C","sourcesContent":["import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\n\nfunction isCssColor (color?: string | false): boolean {\n return !!color && !!color.match(/^(#|(rgb|hsl)a?\\()/)\n}\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'color': `${color}`,\n 'caret-color': `${color}`\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'comparable',
|
||||
props: {
|
||||
valueComparator: {
|
||||
type: Function,
|
||||
default: _helpers.deepEqual
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=comparable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/comparable.ts"],"names":[],"mappings":";;;;;;;;;;AAEA;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,YADkB;AAExB,WAAO;AACL,yBAAiB;AACf,kBAAM,QADS;AAEf,qBAAS;AAFM;AADZ;AAFiB,CAAX,C","sourcesContent":["import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual\n } as any as PropValidator<typeof deepEqual>\n }\n})\n"],"sourceRoot":""}
|
||||
+503
@@ -0,0 +1,503 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
|
||||
|
||||
var _VBtn = require('../components/VBtn');
|
||||
|
||||
var _VBtn2 = _interopRequireDefault(_VBtn);
|
||||
|
||||
var _VIcon = require('../components/VIcon');
|
||||
|
||||
var _VIcon2 = _interopRequireDefault(_VIcon);
|
||||
|
||||
var _VSelect = require('../components/VSelect');
|
||||
|
||||
var _VSelect2 = _interopRequireDefault(_VSelect);
|
||||
|
||||
var _filterable = require('./filterable');
|
||||
|
||||
var _filterable2 = _interopRequireDefault(_filterable);
|
||||
|
||||
var _themeable = require('./themeable');
|
||||
|
||||
var _themeable2 = _interopRequireDefault(_themeable);
|
||||
|
||||
var _loadable = require('./loadable');
|
||||
|
||||
var _loadable2 = _interopRequireDefault(_loadable);
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
var _console = require('../util/console');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
||||
|
||||
/**
|
||||
* DataIterable
|
||||
*
|
||||
* @mixin
|
||||
*
|
||||
* Base behavior for data table and data iterator
|
||||
* providing selection, pagination, sorting and filtering.
|
||||
*
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
name: 'data-iterable',
|
||||
mixins: [_filterable2.default, _loadable2.default, _themeable2.default],
|
||||
props: {
|
||||
expand: Boolean,
|
||||
hideActions: Boolean,
|
||||
disableInitialSort: Boolean,
|
||||
mustSort: Boolean,
|
||||
noResultsText: {
|
||||
type: String,
|
||||
default: '$vuetify.dataIterator.noResultsText'
|
||||
},
|
||||
nextIcon: {
|
||||
type: String,
|
||||
default: '$vuetify.icons.next'
|
||||
},
|
||||
prevIcon: {
|
||||
type: String,
|
||||
default: '$vuetify.icons.prev'
|
||||
},
|
||||
rowsPerPageItems: {
|
||||
type: Array,
|
||||
default: function _default() {
|
||||
return [5, 10, 25, {
|
||||
text: '$vuetify.dataIterator.rowsPerPageAll',
|
||||
value: -1
|
||||
}];
|
||||
}
|
||||
},
|
||||
rowsPerPageText: {
|
||||
type: String,
|
||||
default: '$vuetify.dataIterator.rowsPerPageText'
|
||||
},
|
||||
selectAll: [Boolean, String],
|
||||
search: {
|
||||
required: false
|
||||
},
|
||||
filter: {
|
||||
type: Function,
|
||||
default: function _default(val, search) {
|
||||
return val != null && typeof val !== 'boolean' && val.toString().toLowerCase().indexOf(search) !== -1;
|
||||
}
|
||||
},
|
||||
customFilter: {
|
||||
type: Function,
|
||||
default: function _default(items, search, filter) {
|
||||
search = search.toString().toLowerCase();
|
||||
if (search.trim() === '') return items;
|
||||
return items.filter(function (i) {
|
||||
return Object.keys(i).some(function (j) {
|
||||
return filter(i[j], search);
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
customSort: {
|
||||
type: Function,
|
||||
default: function _default(items, index, isDescending) {
|
||||
if (index === null) return items;
|
||||
return items.sort(function (a, b) {
|
||||
var sortA = (0, _helpers.getObjectValueByPath)(a, index);
|
||||
var sortB = (0, _helpers.getObjectValueByPath)(b, index);
|
||||
if (isDescending) {
|
||||
var _ref = [sortB, sortA];
|
||||
sortA = _ref[0];
|
||||
sortB = _ref[1];
|
||||
}
|
||||
// Check if both are numbers
|
||||
if (!isNaN(sortA) && !isNaN(sortB)) {
|
||||
return sortA - sortB;
|
||||
}
|
||||
// Check if both cannot be evaluated
|
||||
if (sortA === null && sortB === null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var _map = [sortA, sortB].map(function (s) {
|
||||
return (s || '').toString().toLocaleLowerCase();
|
||||
});
|
||||
|
||||
var _map2 = _slicedToArray(_map, 2);
|
||||
|
||||
sortA = _map2[0];
|
||||
sortB = _map2[1];
|
||||
|
||||
if (sortA > sortB) return 1;
|
||||
if (sortA < sortB) return -1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
},
|
||||
value: {
|
||||
type: Array,
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
items: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
totalItems: {
|
||||
type: Number,
|
||||
default: null
|
||||
},
|
||||
itemKey: {
|
||||
type: String,
|
||||
default: 'id'
|
||||
},
|
||||
pagination: {
|
||||
type: Object,
|
||||
default: function _default() {}
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
searchLength: 0,
|
||||
defaultPagination: {
|
||||
descending: false,
|
||||
page: 1,
|
||||
rowsPerPage: 5,
|
||||
sortBy: null,
|
||||
totalItems: 0
|
||||
},
|
||||
expanded: {},
|
||||
actionsClasses: 'v-data-iterator__actions',
|
||||
actionsRangeControlsClasses: 'v-data-iterator__actions__range-controls',
|
||||
actionsSelectClasses: 'v-data-iterator__actions__select',
|
||||
actionsPaginationClasses: 'v-data-iterator__actions__pagination'
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
computedPagination: function computedPagination() {
|
||||
return this.hasPagination ? this.pagination : this.defaultPagination;
|
||||
},
|
||||
computedRowsPerPageItems: function computedRowsPerPageItems() {
|
||||
var _this = this;
|
||||
|
||||
return this.rowsPerPageItems.map(function (item) {
|
||||
return (0, _helpers.isObject)(item) ? Object.assign({}, item, {
|
||||
text: _this.$vuetify.t(item.text)
|
||||
}) : { value: item, text: Number(item).toLocaleString(_this.$vuetify.lang.current) };
|
||||
});
|
||||
},
|
||||
hasPagination: function hasPagination() {
|
||||
var pagination = this.pagination || {};
|
||||
return Object.keys(pagination).length > 0;
|
||||
},
|
||||
hasSelectAll: function hasSelectAll() {
|
||||
return this.selectAll !== undefined && this.selectAll !== false;
|
||||
},
|
||||
itemsLength: function itemsLength() {
|
||||
if (this.hasSearch) return this.searchLength;
|
||||
return this.totalItems || this.items.length;
|
||||
},
|
||||
indeterminate: function indeterminate() {
|
||||
return this.hasSelectAll && this.someItems && !this.everyItem;
|
||||
},
|
||||
everyItem: function everyItem() {
|
||||
var _this2 = this;
|
||||
|
||||
return this.filteredItems.length && this.filteredItems.every(function (i) {
|
||||
return _this2.isSelected(i);
|
||||
});
|
||||
},
|
||||
someItems: function someItems() {
|
||||
var _this3 = this;
|
||||
|
||||
return this.filteredItems.some(function (i) {
|
||||
return _this3.isSelected(i);
|
||||
});
|
||||
},
|
||||
getPage: function getPage() {
|
||||
var rowsPerPage = this.computedPagination.rowsPerPage;
|
||||
|
||||
return rowsPerPage === Object(rowsPerPage) ? rowsPerPage.value : rowsPerPage;
|
||||
},
|
||||
pageStart: function pageStart() {
|
||||
return this.getPage === -1 ? 0 : (this.computedPagination.page - 1) * this.getPage;
|
||||
},
|
||||
pageStop: function pageStop() {
|
||||
return this.getPage === -1 ? this.itemsLength : this.computedPagination.page * this.getPage;
|
||||
},
|
||||
filteredItems: function filteredItems() {
|
||||
return this.filteredItemsImpl();
|
||||
},
|
||||
selected: function selected() {
|
||||
var selected = {};
|
||||
for (var index = 0; index < this.value.length; index++) {
|
||||
var key = (0, _helpers.getObjectValueByPath)(this.value[index], this.itemKey);
|
||||
selected[key] = true;
|
||||
}
|
||||
return selected;
|
||||
},
|
||||
hasSearch: function hasSearch() {
|
||||
return this.search != null;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
items: function items() {
|
||||
var _this4 = this;
|
||||
|
||||
if (this.pageStart >= this.itemsLength) {
|
||||
this.resetPagination();
|
||||
}
|
||||
var newItemKeys = new Set(this.items.map(function (item) {
|
||||
return (0, _helpers.getObjectValueByPath)(item, _this4.itemKey);
|
||||
}));
|
||||
var selection = this.value.filter(function (item) {
|
||||
return newItemKeys.has((0, _helpers.getObjectValueByPath)(item, _this4.itemKey));
|
||||
});
|
||||
if (selection.length !== this.value.length) {
|
||||
this.$emit('input', selection);
|
||||
}
|
||||
},
|
||||
search: function search() {
|
||||
var _this5 = this;
|
||||
|
||||
this.$nextTick(function () {
|
||||
_this5.updatePagination({ page: 1, totalItems: _this5.itemsLength });
|
||||
});
|
||||
},
|
||||
|
||||
'computedPagination.sortBy': 'resetPagination',
|
||||
'computedPagination.descending': 'resetPagination'
|
||||
},
|
||||
methods: {
|
||||
initPagination: function initPagination() {
|
||||
if (!this.rowsPerPageItems.length) {
|
||||
(0, _console.consoleWarn)('The prop \'rows-per-page-items\' can not be empty', this);
|
||||
} else {
|
||||
this.defaultPagination.rowsPerPage = this.rowsPerPageItems[0];
|
||||
}
|
||||
this.defaultPagination.totalItems = this.items.length;
|
||||
this.updatePagination(Object.assign({}, this.defaultPagination, this.pagination));
|
||||
},
|
||||
updatePagination: function updatePagination(val) {
|
||||
var pagination = this.hasPagination ? this.pagination : this.defaultPagination;
|
||||
var updatedPagination = Object.assign({}, pagination, val);
|
||||
this.$emit('update:pagination', updatedPagination);
|
||||
if (!this.hasPagination) {
|
||||
this.defaultPagination = updatedPagination;
|
||||
}
|
||||
},
|
||||
isSelected: function isSelected(item) {
|
||||
return this.selected[(0, _helpers.getObjectValueByPath)(item, this.itemKey)];
|
||||
},
|
||||
isExpanded: function isExpanded(item) {
|
||||
return this.expanded[(0, _helpers.getObjectValueByPath)(item, this.itemKey)];
|
||||
},
|
||||
filteredItemsImpl: function filteredItemsImpl() {
|
||||
if (this.totalItems) return this.items;
|
||||
var items = this.items.slice();
|
||||
if (this.hasSearch) {
|
||||
for (var _len = arguments.length, additionalFilterArgs = Array(_len), _key = 0; _key < _len; _key++) {
|
||||
additionalFilterArgs[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
items = this.customFilter.apply(this, [items, this.search, this.filter].concat(_toConsumableArray(additionalFilterArgs)));
|
||||
this.searchLength = items.length;
|
||||
}
|
||||
items = this.customSort(items, this.computedPagination.sortBy, this.computedPagination.descending);
|
||||
return this.hideActions && !this.hasPagination ? items : items.slice(this.pageStart, this.pageStop);
|
||||
},
|
||||
resetPagination: function resetPagination() {
|
||||
this.computedPagination.page !== 1 && this.updatePagination({ page: 1 });
|
||||
},
|
||||
sort: function sort(index) {
|
||||
var _computedPagination = this.computedPagination,
|
||||
sortBy = _computedPagination.sortBy,
|
||||
descending = _computedPagination.descending;
|
||||
|
||||
if (sortBy === null) {
|
||||
this.updatePagination({ sortBy: index, descending: false });
|
||||
} else if (sortBy === index && !descending) {
|
||||
this.updatePagination({ descending: true });
|
||||
} else if (sortBy !== index) {
|
||||
this.updatePagination({ sortBy: index, descending: false });
|
||||
} else if (!this.mustSort) {
|
||||
this.updatePagination({ sortBy: null, descending: null });
|
||||
} else {
|
||||
this.updatePagination({ sortBy: index, descending: false });
|
||||
}
|
||||
},
|
||||
toggle: function toggle(value) {
|
||||
var _this6 = this;
|
||||
|
||||
var selected = Object.assign({}, this.selected);
|
||||
for (var index = 0; index < this.filteredItems.length; index++) {
|
||||
var key = (0, _helpers.getObjectValueByPath)(this.filteredItems[index], this.itemKey);
|
||||
selected[key] = value;
|
||||
}
|
||||
this.$emit('input', this.items.filter(function (i) {
|
||||
var key = (0, _helpers.getObjectValueByPath)(i, _this6.itemKey);
|
||||
return selected[key];
|
||||
}));
|
||||
},
|
||||
createProps: function createProps(item, index) {
|
||||
var _this7 = this;
|
||||
|
||||
var props = { item: item, index: index };
|
||||
var keyProp = this.itemKey;
|
||||
var itemKey = (0, _helpers.getObjectValueByPath)(item, keyProp);
|
||||
Object.defineProperty(props, 'selected', {
|
||||
get: function get() {
|
||||
return _this7.selected[itemKey];
|
||||
},
|
||||
set: function set(value) {
|
||||
if (itemKey == null) {
|
||||
(0, _console.consoleWarn)('"' + keyProp + '" attribute must be defined for item', _this7);
|
||||
}
|
||||
var selected = _this7.value.slice();
|
||||
if (value) selected.push(item);else selected = selected.filter(function (i) {
|
||||
return (0, _helpers.getObjectValueByPath)(i, keyProp) !== itemKey;
|
||||
});
|
||||
_this7.$emit('input', selected);
|
||||
}
|
||||
});
|
||||
Object.defineProperty(props, 'expanded', {
|
||||
get: function get() {
|
||||
return _this7.expanded[itemKey];
|
||||
},
|
||||
set: function set(value) {
|
||||
if (itemKey == null) {
|
||||
(0, _console.consoleWarn)('"' + keyProp + '" attribute must be defined for item', _this7);
|
||||
}
|
||||
if (!_this7.expand) {
|
||||
for (var key in _this7.expanded) {
|
||||
_this7.expanded.hasOwnProperty(key) && _this7.$set(_this7.expanded, key, false);
|
||||
}
|
||||
}
|
||||
_this7.$set(_this7.expanded, itemKey, value);
|
||||
}
|
||||
});
|
||||
return props;
|
||||
},
|
||||
genItems: function genItems() {
|
||||
if (!this.itemsLength && !this.items.length) {
|
||||
var noData = this.$slots['no-data'] || this.$vuetify.t(this.noDataText);
|
||||
return [this.genEmptyItems(noData)];
|
||||
}
|
||||
if (!this.filteredItems.length) {
|
||||
var noResults = this.$slots['no-results'] || this.$vuetify.t(this.noResultsText);
|
||||
return [this.genEmptyItems(noResults)];
|
||||
}
|
||||
return this.genFilteredItems();
|
||||
},
|
||||
genPrevIcon: function genPrevIcon() {
|
||||
var _this8 = this;
|
||||
|
||||
return this.$createElement(_VBtn2.default, {
|
||||
props: {
|
||||
disabled: this.computedPagination.page === 1,
|
||||
icon: true,
|
||||
flat: true
|
||||
},
|
||||
on: {
|
||||
click: function click() {
|
||||
var page = _this8.computedPagination.page;
|
||||
_this8.updatePagination({ page: page - 1 });
|
||||
}
|
||||
},
|
||||
attrs: {
|
||||
'aria-label': this.$vuetify.t('$vuetify.dataIterator.prevPage')
|
||||
}
|
||||
}, [this.$createElement(_VIcon2.default, this.$vuetify.rtl ? this.nextIcon : this.prevIcon)]);
|
||||
},
|
||||
genNextIcon: function genNextIcon() {
|
||||
var _this9 = this;
|
||||
|
||||
var pagination = this.computedPagination;
|
||||
var disabled = pagination.rowsPerPage < 0 || pagination.page * pagination.rowsPerPage >= this.itemsLength || this.pageStop < 0;
|
||||
return this.$createElement(_VBtn2.default, {
|
||||
props: {
|
||||
disabled: disabled,
|
||||
icon: true,
|
||||
flat: true
|
||||
},
|
||||
on: {
|
||||
click: function click() {
|
||||
var page = _this9.computedPagination.page;
|
||||
_this9.updatePagination({ page: page + 1 });
|
||||
}
|
||||
},
|
||||
attrs: {
|
||||
'aria-label': this.$vuetify.t('$vuetify.dataIterator.nextPage')
|
||||
}
|
||||
}, [this.$createElement(_VIcon2.default, this.$vuetify.rtl ? this.prevIcon : this.nextIcon)]);
|
||||
},
|
||||
genSelect: function genSelect() {
|
||||
var _this10 = this;
|
||||
|
||||
return this.$createElement('div', {
|
||||
'class': this.actionsSelectClasses
|
||||
}, [this.$vuetify.t(this.rowsPerPageText), this.$createElement(_VSelect2.default, {
|
||||
attrs: {
|
||||
'aria-label': this.$vuetify.t(this.rowsPerPageText)
|
||||
},
|
||||
props: {
|
||||
items: this.computedRowsPerPageItems,
|
||||
value: this.computedPagination.rowsPerPage,
|
||||
hideDetails: true,
|
||||
menuProps: {
|
||||
auto: true,
|
||||
dark: this.dark,
|
||||
light: this.light,
|
||||
minWidth: '75px'
|
||||
}
|
||||
},
|
||||
on: {
|
||||
input: function input(val) {
|
||||
_this10.updatePagination({
|
||||
page: 1,
|
||||
rowsPerPage: val
|
||||
});
|
||||
}
|
||||
}
|
||||
})]);
|
||||
},
|
||||
genPagination: function genPagination() {
|
||||
var _this11 = this;
|
||||
|
||||
var pagination = '–';
|
||||
if (this.itemsLength) {
|
||||
var _$vuetify;
|
||||
|
||||
var stop = this.itemsLength < this.pageStop || this.pageStop < 0 ? this.itemsLength : this.pageStop;
|
||||
pagination = this.$scopedSlots.pageText ? this.$scopedSlots.pageText({
|
||||
pageStart: this.pageStart + 1,
|
||||
pageStop: stop,
|
||||
itemsLength: this.itemsLength
|
||||
}) : (_$vuetify = this.$vuetify).t.apply(_$vuetify, ['$vuetify.dataIterator.pageText'].concat(_toConsumableArray([this.pageStart + 1, stop, this.itemsLength].map(function (n) {
|
||||
return Number(n).toLocaleString(_this11.$vuetify.lang.current);
|
||||
}))));
|
||||
}
|
||||
return this.$createElement('div', {
|
||||
'class': this.actionsPaginationClasses
|
||||
}, [pagination]);
|
||||
},
|
||||
genActions: function genActions() {
|
||||
var rangeControls = this.$createElement('div', {
|
||||
'class': this.actionsRangeControlsClasses
|
||||
}, [this.genPagination(), this.genPrevIcon(), this.genNextIcon()]);
|
||||
return [this.$createElement('div', {
|
||||
'class': this.actionsClasses
|
||||
}, [this.$slots['actions-prepend'] ? this.$createElement('div', {}, this.$slots['actions-prepend']) : null, this.rowsPerPageItems.length > 1 ? this.genSelect() : null, rangeControls, this.$slots['actions-append'] ? this.$createElement('div', {}, this.$slots['actions-append']) : null])];
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=data-iterable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+61
@@ -0,0 +1,61 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Delayable
|
||||
*
|
||||
* @mixin
|
||||
*
|
||||
* Changes the open or close delay time for elements
|
||||
*/
|
||||
exports.default = _vue2.default.extend().extend({
|
||||
name: 'delayable',
|
||||
props: {
|
||||
openDelay: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
closeDelay: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
openTimeout: undefined,
|
||||
closeTimeout: undefined
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* Clear any pending delay timers from executing
|
||||
*/
|
||||
clearDelay: function clearDelay() {
|
||||
clearTimeout(this.openTimeout);
|
||||
clearTimeout(this.closeTimeout);
|
||||
},
|
||||
|
||||
/**
|
||||
* Runs callback after a specified delay
|
||||
*/
|
||||
runDelay: function runDelay(type, cb) {
|
||||
var _this = this;
|
||||
|
||||
this.clearDelay();
|
||||
var delay = parseInt(this[type + 'Delay'], 10);
|
||||
this[type + 'Timeout'] = setTimeout(cb || function () {
|
||||
_this.isActive = { open: true, close: false }[type];
|
||||
}, delay);
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=delayable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/delayable.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA;;;;;;;kBAOe,cAAI,MAAJ,GAA2C,MAA3C,CAAkD;AAC/D,UAAM,WADyD;AAG/D,WAAO;AACL,mBAAW;AACT,kBAAM,CAAC,MAAD,EAAS,MAAT,CADG;AAET,qBAAS;AAFA,SADN;AAKL,oBAAY;AACV,kBAAM,CAAC,MAAD,EAAS,MAAT,CADI;AAEV,qBAAS;AAFC;AALP,KAHwD;AAc/D,UAAM;AAAA,eAAO;AACX,yBAAa,SADF;AAEX,0BAAc;AAFH,SAAP;AAAA,KAdyD;AAmB/D,aAAS;AACP;;;AAGA,kBAJO,wBAIG;AACR,yBAAa,KAAK,WAAlB;AACA,yBAAa,KAAK,YAAlB;AACD,SAPM;;AAQP;;;AAGA,gBAXO,oBAWG,IAXH,EAW2B,EAX3B,EAW0C;AAAA;;AAC/C,iBAAK,UAAL;AAEA,gBAAM,QAAQ,SAAU,KAAgB,IAAhB,WAAV,EAAwC,EAAxC,CAAd;AAEE,iBAAgB,IAAhB,gBAAiC,WAAW,MAAO,YAAK;AACxD,sBAAK,QAAL,GAAgB,EAAE,MAAM,IAAR,EAAc,OAAO,KAArB,GAA6B,IAA7B,CAAhB;AACD,aAFkC,EAE/B,KAF+B,CAAjC;AAGH;AAnBM;AAnBsD,CAAlD,C","sourcesContent":["import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend<Vue & { isActive?: boolean }>().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0\n },\n closeDelay: {\n type: [Number, String],\n default: 0\n }\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _mixins = require('../util/mixins');
|
||||
|
||||
var _mixins2 = _interopRequireDefault(_mixins);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
||||
|
||||
function searchChildren(children) {
|
||||
var results = [];
|
||||
for (var index = 0; index < children.length; index++) {
|
||||
var child = children[index];
|
||||
if (child.isActive && child.isDependent) {
|
||||
results.push(child);
|
||||
} else {
|
||||
results.push.apply(results, _toConsumableArray(searchChildren(child.$children)));
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
/* @vue/component */
|
||||
exports.default = (0, _mixins2.default)().extend({
|
||||
name: 'dependent',
|
||||
data: function data() {
|
||||
return {
|
||||
closeDependents: true,
|
||||
isActive: false,
|
||||
isDependent: true
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
isActive: function isActive(val) {
|
||||
if (val) return;
|
||||
var openDependents = this.getOpenDependents();
|
||||
for (var index = 0; index < openDependents.length; index++) {
|
||||
openDependents[index].isActive = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getOpenDependents: function getOpenDependents() {
|
||||
if (this.closeDependents) return searchChildren(this.$children);
|
||||
return [];
|
||||
},
|
||||
getOpenDependentElements: function getOpenDependentElements() {
|
||||
var result = [];
|
||||
var openDependents = this.getOpenDependents();
|
||||
for (var index = 0; index < openDependents.length; index++) {
|
||||
result.push.apply(result, _toConsumableArray(openDependents[index].getClickableDependentElements()));
|
||||
}
|
||||
return result;
|
||||
},
|
||||
getClickableDependentElements: function getClickableDependentElements() {
|
||||
var result = [this.$el];
|
||||
if (this.$refs.content) result.push(this.$refs.content);
|
||||
if (this.overlay) result.push(this.overlay);
|
||||
result.push.apply(result, _toConsumableArray(this.getOpenDependentElements()));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=dependent.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/dependent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAiBA,SAAS,cAAT,CAAyB,QAAzB,EAAwC;AACtC,QAAM,UAAU,EAAhB;AACA,SAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,SAAS,MAArC,EAA6C,OAA7C,EAAsD;AACpD,YAAM,QAAQ,SAAS,KAAT,CAAd;AACA,YAAI,MAAM,QAAN,IAAkB,MAAM,WAA5B,EAAyC;AACvC,oBAAQ,IAAR,CAAa,KAAb;AACD,SAFD,MAEO;AACL,oBAAQ,IAAR,mCAAgB,eAAe,MAAM,SAArB,CAAhB;AACD;AACF;AAED,WAAO,OAAP;AACD;AAED;kBACe,wBAAkB,MAAlB,CAAyB;AACtC,UAAM,WADgC;AAGtC,QAHsC,kBAGlC;AACF,eAAO;AACL,6BAAiB,IADZ;AAEL,sBAAU,KAFL;AAGL,yBAAa;AAHR,SAAP;AAKD,KATqC;;AAWtC,WAAO;AACL,gBADK,oBACK,GADL,EACQ;AACX,gBAAI,GAAJ,EAAS;AAET,gBAAM,iBAAiB,KAAK,iBAAL,EAAvB;AACA,iBAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,eAAe,MAA3C,EAAmD,OAAnD,EAA4D;AAC1D,+BAAe,KAAf,EAAsB,QAAtB,GAAiC,KAAjC;AACD;AACF;AARI,KAX+B;AAsBtC,aAAS;AACP,yBADO,+BACU;AACf,gBAAI,KAAK,eAAT,EAA0B,OAAO,eAAe,KAAK,SAApB,CAAP;AAE1B,mBAAO,EAAP;AACD,SALM;AAMP,gCANO,sCAMiB;AACtB,gBAAM,SAAS,EAAf;AACA,gBAAM,iBAAiB,KAAK,iBAAL,EAAvB;AAEA,iBAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,eAAe,MAA3C,EAAmD,OAAnD,EAA4D;AAC1D,uBAAO,IAAP,kCAAe,eAAe,KAAf,EAAsB,6BAAtB,EAAf;AACD;AAED,mBAAO,MAAP;AACD,SAfM;AAgBP,qCAhBO,2CAgBsB;AAC3B,gBAAM,SAAS,CAAC,KAAK,GAAN,CAAf;AACA,gBAAI,KAAK,KAAL,CAAW,OAAf,EAAwB,OAAO,IAAP,CAAY,KAAK,KAAL,CAAW,OAAvB;AACxB,gBAAI,KAAK,OAAT,EAAkB,OAAO,IAAP,CAAY,KAAK,OAAjB;AAClB,mBAAO,IAAP,kCAAe,KAAK,wBAAL,EAAf;AAEA,mBAAO,MAAP;AACD;AAvBM;AAtB6B,CAAzB,C","sourcesContent":["import Vue from 'vue'\n\nimport mixins from '../util/mixins'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: HTMLElement\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins<options>().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n }\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay)\n result.push(...this.getOpenDependentElements())\n\n return result\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
||||
|
||||
var _bootable = require('./bootable');
|
||||
|
||||
var _bootable2 = _interopRequireDefault(_bootable);
|
||||
|
||||
var _console = require('../util/console');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function validateAttachTarget(val) {
|
||||
var type = typeof val === 'undefined' ? 'undefined' : _typeof(val);
|
||||
if (type === 'boolean' || type === 'string') return true;
|
||||
return val.nodeType === Node.ELEMENT_NODE;
|
||||
}
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
name: 'detachable',
|
||||
mixins: [_bootable2.default],
|
||||
props: {
|
||||
attach: {
|
||||
type: null,
|
||||
default: false,
|
||||
validator: validateAttachTarget
|
||||
},
|
||||
contentClass: {
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
hasDetached: false
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
attach: function attach() {
|
||||
this.hasDetached = false;
|
||||
this.initDetach();
|
||||
},
|
||||
|
||||
hasContent: 'initDetach'
|
||||
},
|
||||
beforeMount: function beforeMount() {
|
||||
var _this = this;
|
||||
|
||||
this.$nextTick(function () {
|
||||
if (_this.activatorNode) {
|
||||
var activator = Array.isArray(_this.activatorNode) ? _this.activatorNode : [_this.activatorNode];
|
||||
activator.forEach(function (node) {
|
||||
node.elm && _this.$el.parentNode.insertBefore(node.elm, _this.$el);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
mounted: function mounted() {
|
||||
!this.lazy && this.initDetach();
|
||||
},
|
||||
deactivated: function deactivated() {
|
||||
this.isActive = false;
|
||||
},
|
||||
beforeDestroy: function beforeDestroy() {
|
||||
// IE11 Fix
|
||||
try {
|
||||
if (this.$refs.content) {
|
||||
this.$refs.content.parentNode.removeChild(this.$refs.content);
|
||||
}
|
||||
if (this.activatorNode) {
|
||||
var activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];
|
||||
activator.forEach(function (node) {
|
||||
node.elm && node.elm.parentNode.removeChild(node.elm);
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
getScopeIdAttrs: function getScopeIdAttrs() {
|
||||
var scopeId = this.$vnode && this.$vnode.context.$options._scopeId;
|
||||
return scopeId && _defineProperty({}, scopeId, '');
|
||||
},
|
||||
initDetach: function initDetach() {
|
||||
if (this._isDestroyed || !this.$refs.content || this.hasDetached ||
|
||||
// Leave menu in place if attached
|
||||
// and dev has not changed target
|
||||
this.attach === '' || // If used as a boolean prop (<v-menu attach>)
|
||||
this.attach === true || // If bound to a boolean (<v-menu :attach="true">)
|
||||
this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))
|
||||
) return;
|
||||
var target = void 0;
|
||||
if (this.attach === false) {
|
||||
// Default, detach to app
|
||||
target = document.querySelector('[data-app]');
|
||||
} else if (typeof this.attach === 'string') {
|
||||
// CSS selector
|
||||
target = document.querySelector(this.attach);
|
||||
} else {
|
||||
// DOM Element
|
||||
target = this.attach;
|
||||
}
|
||||
if (!target) {
|
||||
(0, _console.consoleWarn)('Unable to locate target ' + (this.attach || '[data-app]'), this);
|
||||
return;
|
||||
}
|
||||
target.insertBefore(this.$refs.content, target.firstChild);
|
||||
this.hasDetached = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=detachable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+30
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'elevatable',
|
||||
props: {
|
||||
elevation: [Number, String]
|
||||
},
|
||||
computed: {
|
||||
computedElevation: function computedElevation() {
|
||||
return this.elevation;
|
||||
},
|
||||
elevationClasses: function elevationClasses() {
|
||||
if (!this.computedElevation) return {};
|
||||
return _defineProperty({}, 'elevation-' + this.computedElevation, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=elevatable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/elevatable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,YADkB;AAGxB,WAAO;AACL,mBAAW,CAAC,MAAD,EAAS,MAAT;AADN,KAHiB;AAOxB,cAAU;AACR,yBADQ,+BACS;AACf,mBAAO,KAAK,SAAZ;AACD,SAHO;AAIR,wBAJQ,8BAIQ;AACd,gBAAI,CAAC,KAAK,iBAAV,EAA6B,OAAO,EAAP;AAE7B,sDAAuB,KAAK,iBAA5B,EAAkD,IAAlD;AACD;AARO;AAPc,CAAX,C","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String]\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record<string, boolean> {\n if (!this.computedElevation) return {}\n\n return { [`elevation-${this.computedElevation}`]: true }\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* @vue/component */
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'filterable',
|
||||
props: {
|
||||
noDataText: {
|
||||
type: String,
|
||||
default: '$vuetify.noDataText'
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=filterable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/filterable.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA;kBACe,cAAI,MAAJ,CAAW;AACxB,UAAM,YADkB;AAGxB,WAAO;AACL,oBAAY;AACV,kBAAM,MADI;AAEV,qBAAS;AAFC;AADP;AAHiB,CAAX,C","sourcesContent":["import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.factory = factory;
|
||||
|
||||
var _registrable = require('./registrable');
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // Mixins
|
||||
|
||||
|
||||
function factory(namespace, child, parent) {
|
||||
return (0, _registrable.inject)(namespace, child, parent).extend({
|
||||
name: 'groupable',
|
||||
props: {
|
||||
activeClass: {
|
||||
type: String,
|
||||
default: function _default() {
|
||||
if (!this[namespace]) return undefined;
|
||||
return this[namespace].activeClass;
|
||||
}
|
||||
},
|
||||
disabled: Boolean
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
isActive: false
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
groupClasses: function groupClasses() {
|
||||
if (!this.activeClass) return {};
|
||||
return _defineProperty({}, this.activeClass, this.isActive);
|
||||
}
|
||||
},
|
||||
created: function created() {
|
||||
this[namespace] && this[namespace].register(this);
|
||||
},
|
||||
beforeDestroy: function beforeDestroy() {
|
||||
this[namespace] && this[namespace].unregister(this);
|
||||
},
|
||||
|
||||
methods: {
|
||||
toggle: function toggle() {
|
||||
this.$emit('change');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/* eslint-disable-next-line no-redeclare */
|
||||
var Groupable = factory('itemGroup');
|
||||
exports.default = Groupable;
|
||||
//# sourceMappingURL=groupable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/groupable.ts"],"names":[],"mappings":";;;;;QAgBgB,O,GAAA,O;;AAfhB;;;;;AAeM,SAAU,OAAV,CACJ,SADI,EAEJ,KAFI,EAGJ,MAHI,EAGW;AAEf,WAAO,yBAAkB,SAAlB,EAA6B,KAA7B,EAAoC,MAApC,EAA4C,MAA5C,CAAmD;AACxD,cAAM,WADkD;AAGxD,eAAO;AACL,yBAAa;AACX,sBAAM,MADK;AAEX,uBAFW,sBAEJ;AACL,wBAAI,CAAC,KAAK,SAAL,CAAL,EAAsB,OAAO,SAAP;AAEtB,2BAAO,KAAK,SAAL,EAAgB,WAAvB;AACD;AANU,aADR;AASL,sBAAU;AATL,SAHiD;AAexD,YAfwD,kBAepD;AACF,mBAAO;AACL,0BAAU;AADL,aAAP;AAGD,SAnBuD;;AAqBxD,kBAAU;AACR,wBADQ,0BACI;AACV,oBAAI,CAAC,KAAK,WAAV,EAAuB,OAAO,EAAP;AAEvB,2CACG,KAAK,WADR,EACsB,KAAK,QAD3B;AAGD;AAPO,SArB8C;AA+BxD,eA/BwD,qBA+BjD;AACL,iBAAK,SAAL,KAAoB,KAAK,SAAL,EAAwB,QAAxB,CAAiC,IAAjC,CAApB;AACD,SAjCuD;AAmCxD,qBAnCwD,2BAmC3C;AACX,iBAAK,SAAL,KAAoB,KAAK,SAAL,EAAwB,UAAxB,CAAmC,IAAnC,CAApB;AACD,SArCuD;;AAuCxD,iBAAS;AACP,kBADO,oBACD;AACJ,qBAAK,KAAL,CAAW,QAAX;AACD;AAHM;AAvC+C,KAAnD,CAAP;AA6CD;AAED;AACA,IAAM,YAAY,QAAQ,WAAR,CAAlB;kBAEe,S","sourcesContent":["// Mixins\nimport { Registrable, inject as RegistrableInject } from './registrable'\n\n// Utilities\nimport { ExtractVue } from '../util/mixins'\nimport { PropValidator } from 'vue/types/options'\nimport { VueConstructor } from 'vue'\n\n/* eslint-disable-next-line no-use-before-define */\nexport type Groupable<T extends string> = VueConstructor<ExtractVue<Registrable<T>> & {\n activeClass: string\n isActive: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory<T extends string> (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable<T> {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n }\n } as any as PropValidator<string>,\n disabled: Boolean\n },\n\n data () {\n return {\n isActive: false\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive\n }\n }\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n }\n }\n })\n}\n\n/* eslint-disable-next-line no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n"],"sourceRoot":""}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _VProgressLinear = require('../components/VProgressLinear');
|
||||
|
||||
var _VProgressLinear2 = _interopRequireDefault(_VProgressLinear);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Loadable
|
||||
*
|
||||
* @mixin
|
||||
*
|
||||
* Used to add linear progress bar to components
|
||||
* Can use a default bar with a specific color
|
||||
* or designate a custom progress linear bar
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = _vue2.default.extend().extend({
|
||||
name: 'loadable',
|
||||
props: {
|
||||
loading: {
|
||||
type: [Boolean, String],
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
genProgress: function genProgress() {
|
||||
if (this.loading === false) return null;
|
||||
return this.$slots.progress || this.$createElement(_VProgressLinear2.default, {
|
||||
props: {
|
||||
color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,
|
||||
height: 2,
|
||||
indeterminate: true
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=loadable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/loadable.ts"],"names":[],"mappings":";;;;;;;;;;AACA;;;;;;AAMA;;;;;;;;;AASA;kBACe,cAAI,MAAJ,GAAwB,MAAxB,CAA+B;AAC5C,UAAM,UADsC;AAG5C,WAAO;AACL,iBAAS;AACP,kBAAM,CAAC,OAAD,EAAU,MAAV,CADC;AAEP,qBAAS;AAFF;AADJ,KAHqC;AAU5C,aAAS;AACP,mBADO,yBACI;AACT,gBAAI,KAAK,OAAL,KAAiB,KAArB,EAA4B,OAAO,IAAP;AAE5B,mBAAO,KAAK,MAAL,CAAY,QAAZ,IAAwB,KAAK,cAAL,CAAoB,yBAApB,EAAqC;AAClE,uBAAO;AACL,2BAAQ,KAAK,OAAL,KAAiB,IAAjB,IAAyB,KAAK,OAAL,KAAiB,EAA3C,GACF,KAAK,KAAL,IAAc,SADZ,GAEH,KAAK,OAHJ;AAIL,4BAAQ,CAJH;AAKL,mCAAe;AALV;AAD2D,aAArC,CAA/B;AASD;AAbM;AAVmC,CAA/B,C","sourcesContent":["import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend<colorable>().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false\n }\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: 2,\n indeterminate: true\n }\n })\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _mask = require('../util/mask');
|
||||
|
||||
/* @vue/component */
|
||||
exports.default = {
|
||||
name: 'maskable',
|
||||
props: {
|
||||
dontFillMaskBlanks: Boolean,
|
||||
mask: {
|
||||
type: [Object, String],
|
||||
default: null
|
||||
},
|
||||
returnMaskedValue: Boolean,
|
||||
value: { required: false }
|
||||
},
|
||||
data: function data(vm) {
|
||||
return {
|
||||
selection: 0,
|
||||
lazySelection: 0,
|
||||
lazyValue: vm.value,
|
||||
preDefined: {
|
||||
'credit-card': '#### - #### - #### - ####',
|
||||
'date': '##/##/####',
|
||||
'date-with-time': '##/##/#### ##:##',
|
||||
'phone': '(###) ### - ####',
|
||||
'social': '###-##-####',
|
||||
'time': '##:##',
|
||||
'time-with-seconds': '##:##:##'
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
masked: function masked() {
|
||||
var preDefined = this.preDefined[this.mask];
|
||||
var mask = preDefined || this.mask || '';
|
||||
return mask.split('');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
/**
|
||||
* Make sure the cursor is in the correct
|
||||
* location when the mask changes
|
||||
*/
|
||||
mask: function mask() {
|
||||
var _this = this;
|
||||
|
||||
if (!this.$refs.input) return;
|
||||
var oldValue = this.$refs.input.value;
|
||||
var newValue = this.maskText((0, _mask.unmaskText)(this.lazyValue));
|
||||
var position = 0;
|
||||
var selection = this.selection;
|
||||
for (var index = 0; index < selection; index++) {
|
||||
(0, _mask.isMaskDelimiter)(oldValue[index]) || position++;
|
||||
}
|
||||
selection = 0;
|
||||
if (newValue) {
|
||||
for (var _index = 0; _index < newValue.length; _index++) {
|
||||
(0, _mask.isMaskDelimiter)(newValue[_index]) || position--;
|
||||
selection++;
|
||||
if (position <= 0) break;
|
||||
}
|
||||
}
|
||||
this.$nextTick(function () {
|
||||
_this.$refs.input.value = newValue;
|
||||
_this.setCaretPosition(selection);
|
||||
});
|
||||
}
|
||||
},
|
||||
beforeMount: function beforeMount() {
|
||||
if (!this.mask || this.value == null || !this.returnMaskedValue) return;
|
||||
var value = this.maskText(this.value);
|
||||
// See if masked value does not
|
||||
// match the user given value
|
||||
if (value === this.value) return;
|
||||
this.$emit('input', value);
|
||||
},
|
||||
|
||||
methods: {
|
||||
setCaretPosition: function setCaretPosition(selection) {
|
||||
var _this2 = this;
|
||||
|
||||
this.selection = selection;
|
||||
window.setTimeout(function () {
|
||||
_this2.$refs.input && _this2.$refs.input.setSelectionRange(_this2.selection, _this2.selection);
|
||||
}, 0);
|
||||
},
|
||||
updateRange: function updateRange() {
|
||||
/* istanbul ignore next */
|
||||
if (!this.$refs.input) return;
|
||||
var newValue = this.maskText(this.lazyValue);
|
||||
var selection = 0;
|
||||
this.$refs.input.value = newValue;
|
||||
if (newValue) {
|
||||
for (var index = 0; index < newValue.length; index++) {
|
||||
if (this.lazySelection <= 0) break;
|
||||
(0, _mask.isMaskDelimiter)(newValue[index]) || this.lazySelection--;
|
||||
selection++;
|
||||
}
|
||||
}
|
||||
this.setCaretPosition(selection);
|
||||
// this.$emit() must occur only when all internal values are correct
|
||||
this.$emit('input', this.returnMaskedValue ? this.$refs.input.value : this.lazyValue);
|
||||
},
|
||||
maskText: function maskText(text) {
|
||||
return this.mask ? (0, _mask.maskText)(text, this.masked, this.dontFillMaskBlanks) : text;
|
||||
},
|
||||
unmaskText: function unmaskText(text) {
|
||||
return this.mask && !this.returnMaskedValue ? (0, _mask.unmaskText)(text) : text;
|
||||
},
|
||||
|
||||
// When the input changes and is
|
||||
// re-created, ensure that the
|
||||
// caret location is correct
|
||||
setSelectionRange: function setSelectionRange() {
|
||||
this.$nextTick(this.updateRange);
|
||||
},
|
||||
resetSelections: function resetSelections(input) {
|
||||
if (!input.selectionEnd) return;
|
||||
this.selection = input.selectionEnd;
|
||||
this.lazySelection = 0;
|
||||
for (var index = 0; index < this.selection; index++) {
|
||||
(0, _mask.isMaskDelimiter)(input.value[index]) || this.lazySelection++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}; /**
|
||||
* Maskable
|
||||
*
|
||||
* @mixin
|
||||
*
|
||||
* Creates an input mask that is
|
||||
* generated from a masked str
|
||||
*
|
||||
* Example: mask="#### #### #### ####"
|
||||
*/
|
||||
//# sourceMappingURL=maskable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+46
@@ -0,0 +1,46 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
// Helpers
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'measurable',
|
||||
props: {
|
||||
height: [Number, String],
|
||||
maxHeight: [Number, String],
|
||||
maxWidth: [Number, String],
|
||||
minHeight: [Number, String],
|
||||
minWidth: [Number, String],
|
||||
width: [Number, String]
|
||||
},
|
||||
computed: {
|
||||
measurableStyles: function measurableStyles() {
|
||||
var styles = {};
|
||||
var height = (0, _helpers.convertToUnit)(this.height);
|
||||
var minHeight = (0, _helpers.convertToUnit)(this.minHeight);
|
||||
var minWidth = (0, _helpers.convertToUnit)(this.minWidth);
|
||||
var maxHeight = (0, _helpers.convertToUnit)(this.maxHeight);
|
||||
var maxWidth = (0, _helpers.convertToUnit)(this.maxWidth);
|
||||
var width = (0, _helpers.convertToUnit)(this.width);
|
||||
if (height) styles.height = height;
|
||||
if (minHeight) styles.minHeight = minHeight;
|
||||
if (minWidth) styles.minWidth = minWidth;
|
||||
if (maxHeight) styles.maxHeight = maxHeight;
|
||||
if (maxWidth) styles.maxWidth = maxWidth;
|
||||
if (width) styles.width = width;
|
||||
return styles;
|
||||
}
|
||||
}
|
||||
});
|
||||
// Types
|
||||
//# sourceMappingURL=measurable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/measurable.ts"],"names":[],"mappings":";;;;;;AACA;;AAGA;;;;;;;kBAKe,cAAI,MAAJ,CAAW;AACxB,UAAM,YADkB;AAGxB,WAAO;AACL,gBAAQ,CAAC,MAAD,EAAS,MAAT,CADH;AAEL,mBAAW,CAAC,MAAD,EAAS,MAAT,CAFN;AAGL,kBAAU,CAAC,MAAD,EAAS,MAAT,CAHL;AAIL,mBAAW,CAAC,MAAD,EAAS,MAAT,CAJN;AAKL,kBAAU,CAAC,MAAD,EAAS,MAAT,CALL;AAML,eAAO,CAAC,MAAD,EAAS,MAAT;AANF,KAHiB;AAYxB,cAAU;AACR,wBADQ,8BACQ;AACd,gBAAM,SAAiC,EAAvC;AAEA,gBAAM,SAAS,4BAAc,KAAK,MAAnB,CAAf;AACA,gBAAM,YAAY,4BAAc,KAAK,SAAnB,CAAlB;AACA,gBAAM,WAAW,4BAAc,KAAK,QAAnB,CAAjB;AACA,gBAAM,YAAY,4BAAc,KAAK,SAAnB,CAAlB;AACA,gBAAM,WAAW,4BAAc,KAAK,QAAnB,CAAjB;AACA,gBAAM,QAAQ,4BAAc,KAAK,KAAnB,CAAd;AAEA,gBAAI,MAAJ,EAAY,OAAO,MAAP,GAAgB,MAAhB;AACZ,gBAAI,SAAJ,EAAe,OAAO,SAAP,GAAmB,SAAnB;AACf,gBAAI,QAAJ,EAAc,OAAO,QAAP,GAAkB,QAAlB;AACd,gBAAI,SAAJ,EAAe,OAAO,SAAP,GAAmB,SAAnB;AACf,gBAAI,QAAJ,EAAc,OAAO,QAAP,GAAkB,QAAlB;AACd,gBAAI,KAAJ,EAAW,OAAO,KAAP,GAAe,KAAf;AAEX,mBAAO,MAAP;AACD;AAnBO;AAZc,CAAX,C;AANf","sourcesContent":["// Helpers\nimport { convertToUnit } from '../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type NumberOrNumberString = PropValidator<string | number | undefined>\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record<string, string> = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+361
@@ -0,0 +1,361 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _positionable = require('./positionable');
|
||||
|
||||
var _positionable2 = _interopRequireDefault(_positionable);
|
||||
|
||||
var _stackable = require('./stackable');
|
||||
|
||||
var _stackable2 = _interopRequireDefault(_stackable);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* eslint-disable object-property-newline */
|
||||
var dimensions = {
|
||||
activator: {
|
||||
top: 0, left: 0,
|
||||
bottom: 0, right: 0,
|
||||
width: 0, height: 0,
|
||||
offsetTop: 0, scrollHeight: 0
|
||||
},
|
||||
content: {
|
||||
top: 0, left: 0,
|
||||
bottom: 0, right: 0,
|
||||
width: 0, height: 0,
|
||||
offsetTop: 0, scrollHeight: 0
|
||||
},
|
||||
hasWindow: false
|
||||
};
|
||||
/* eslint-enable object-property-newline */
|
||||
/**
|
||||
* Menuable
|
||||
*
|
||||
* @mixin
|
||||
*
|
||||
* Used for fixed or absolutely positioning
|
||||
* elements within the DOM
|
||||
* Can calculate X and Y axis overflows
|
||||
* As well as be manually positioned
|
||||
*/
|
||||
/* @vue/component */
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'menuable',
|
||||
mixins: [_positionable2.default, _stackable2.default],
|
||||
props: {
|
||||
activator: {
|
||||
default: null,
|
||||
validator: function validator(val) {
|
||||
return ['string', 'object'].includes(typeof val === 'undefined' ? 'undefined' : _typeof(val));
|
||||
}
|
||||
},
|
||||
allowOverflow: Boolean,
|
||||
inputActivator: Boolean,
|
||||
light: Boolean,
|
||||
dark: Boolean,
|
||||
maxWidth: {
|
||||
type: [Number, String],
|
||||
default: 'auto'
|
||||
},
|
||||
minWidth: [Number, String],
|
||||
nudgeBottom: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
nudgeLeft: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
nudgeRight: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
nudgeTop: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
nudgeWidth: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
offsetOverflow: Boolean,
|
||||
positionX: {
|
||||
type: Number,
|
||||
default: null
|
||||
},
|
||||
positionY: {
|
||||
type: Number,
|
||||
default: null
|
||||
},
|
||||
zIndex: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
absoluteX: 0,
|
||||
absoluteY: 0,
|
||||
activatorFixed: false,
|
||||
dimensions: Object.assign({}, dimensions),
|
||||
isContentActive: false,
|
||||
pageWidth: 0,
|
||||
pageYOffset: 0,
|
||||
stackClass: 'v-menu__content--active',
|
||||
stackMinZIndex: 6
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
computedLeft: function computedLeft() {
|
||||
var a = this.dimensions.activator;
|
||||
var c = this.dimensions.content;
|
||||
var activatorLeft = (this.isAttached ? a.offsetLeft : a.left) || 0;
|
||||
var minWidth = Math.max(a.width, c.width);
|
||||
var left = 0;
|
||||
left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft;
|
||||
if (this.offsetX) {
|
||||
var maxWidth = isNaN(this.maxWidth) ? a.width : Math.min(a.width, this.maxWidth);
|
||||
left += this.left ? -maxWidth : a.width;
|
||||
}
|
||||
if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);
|
||||
if (this.nudgeRight) left += parseInt(this.nudgeRight);
|
||||
return left;
|
||||
},
|
||||
computedTop: function computedTop() {
|
||||
var a = this.dimensions.activator;
|
||||
var c = this.dimensions.content;
|
||||
var top = 0;
|
||||
if (this.top) top += a.height - c.height;
|
||||
if (this.isAttached) top += a.offsetTop;else top += a.top + this.pageYOffset;
|
||||
if (this.offsetY) top += this.top ? -a.height : a.height;
|
||||
if (this.nudgeTop) top -= parseInt(this.nudgeTop);
|
||||
if (this.nudgeBottom) top += parseInt(this.nudgeBottom);
|
||||
return top;
|
||||
},
|
||||
hasActivator: function hasActivator() {
|
||||
return !!this.$slots.activator || !!this.$scopedSlots.activator || this.activator || this.inputActivator;
|
||||
},
|
||||
isAttached: function isAttached() {
|
||||
return this.attach !== false;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
disabled: function disabled(val) {
|
||||
val && this.callDeactivate();
|
||||
},
|
||||
isActive: function isActive(val) {
|
||||
if (this.disabled) return;
|
||||
val ? this.callActivate() : this.callDeactivate();
|
||||
},
|
||||
|
||||
positionX: 'updateDimensions',
|
||||
positionY: 'updateDimensions'
|
||||
},
|
||||
beforeMount: function beforeMount() {
|
||||
this.checkForWindow();
|
||||
},
|
||||
|
||||
methods: {
|
||||
absolutePosition: function absolutePosition() {
|
||||
return {
|
||||
offsetTop: 0,
|
||||
offsetLeft: 0,
|
||||
scrollHeight: 0,
|
||||
top: this.positionY || this.absoluteY,
|
||||
bottom: this.positionY || this.absoluteY,
|
||||
left: this.positionX || this.absoluteX,
|
||||
right: this.positionX || this.absoluteX,
|
||||
height: 0,
|
||||
width: 0
|
||||
};
|
||||
},
|
||||
activate: function activate() {},
|
||||
calcLeft: function calcLeft(menuWidth) {
|
||||
return (this.isAttached ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth)) + 'px';
|
||||
},
|
||||
calcTop: function calcTop() {
|
||||
return (this.isAttached ? this.computedTop : this.calcYOverflow(this.computedTop)) + 'px';
|
||||
},
|
||||
calcXOverflow: function calcXOverflow(left, menuWidth) {
|
||||
var xOverflow = left + menuWidth - this.pageWidth + 12;
|
||||
if ((!this.left || this.right) && xOverflow > 0) {
|
||||
left = Math.max(left - xOverflow, 0);
|
||||
} else {
|
||||
left = Math.max(left, 12);
|
||||
}
|
||||
return left + this.getOffsetLeft();
|
||||
},
|
||||
calcYOverflow: function calcYOverflow(top) {
|
||||
var documentHeight = this.getInnerHeight();
|
||||
var toTop = this.pageYOffset + documentHeight;
|
||||
var activator = this.dimensions.activator;
|
||||
var contentHeight = this.dimensions.content.height;
|
||||
var totalHeight = top + contentHeight;
|
||||
var isOverflowing = toTop < totalHeight;
|
||||
// If overflowing bottom and offset
|
||||
// TODO: set 'bottom' position instead of 'top'
|
||||
if (isOverflowing && this.offsetOverflow &&
|
||||
// If we don't have enough room to offset
|
||||
// the overflow, don't offset
|
||||
activator.top > contentHeight) {
|
||||
top = this.pageYOffset + (activator.top - contentHeight);
|
||||
// If overflowing bottom
|
||||
} else if (isOverflowing && !this.allowOverflow) {
|
||||
top = toTop - contentHeight - 12;
|
||||
// If overflowing top
|
||||
} else if (top < this.pageYOffset && !this.allowOverflow) {
|
||||
top = this.pageYOffset + 12;
|
||||
}
|
||||
return top < 12 ? 12 : top;
|
||||
},
|
||||
callActivate: function callActivate() {
|
||||
if (!this.hasWindow) return;
|
||||
this.activate();
|
||||
},
|
||||
callDeactivate: function callDeactivate() {
|
||||
this.isContentActive = false;
|
||||
this.deactivate();
|
||||
},
|
||||
checkForWindow: function checkForWindow() {
|
||||
if (!this.hasWindow) {
|
||||
this.hasWindow = typeof window !== 'undefined';
|
||||
}
|
||||
},
|
||||
checkForPageYOffset: function checkForPageYOffset() {
|
||||
if (this.hasWindow) {
|
||||
this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop();
|
||||
}
|
||||
},
|
||||
checkActivatorFixed: function checkActivatorFixed() {
|
||||
if (this.attach !== false) return;
|
||||
var el = this.getActivator();
|
||||
while (el) {
|
||||
if (window.getComputedStyle(el).position === 'fixed') {
|
||||
this.activatorFixed = true;
|
||||
return;
|
||||
}
|
||||
el = el.offsetParent;
|
||||
}
|
||||
this.activatorFixed = false;
|
||||
},
|
||||
deactivate: function deactivate() {},
|
||||
getActivator: function getActivator(e) {
|
||||
if (this.inputActivator) {
|
||||
return this.$el.querySelector('.v-input__slot');
|
||||
}
|
||||
if (this.activator) {
|
||||
return typeof this.activator === 'string' ? document.querySelector(this.activator) : this.activator;
|
||||
}
|
||||
if (this.$refs.activator) {
|
||||
return this.$refs.activator.children.length > 0 ? this.$refs.activator.children[0] : this.$refs.activator;
|
||||
}
|
||||
if (e) {
|
||||
this.activatedBy = e.currentTarget || e.target;
|
||||
return this.activatedBy;
|
||||
}
|
||||
if (this.activatedBy) return this.activatedBy;
|
||||
if (this.activatorNode) {
|
||||
var activator = Array.isArray(this.activatorNode) ? this.activatorNode[0] : this.activatorNode;
|
||||
var el = activator && activator.elm;
|
||||
if (el) return el;
|
||||
}
|
||||
},
|
||||
getInnerHeight: function getInnerHeight() {
|
||||
if (!this.hasWindow) return 0;
|
||||
return window.innerHeight || document.documentElement.clientHeight;
|
||||
},
|
||||
getOffsetLeft: function getOffsetLeft() {
|
||||
if (!this.hasWindow) return 0;
|
||||
return window.pageXOffset || document.documentElement.scrollLeft;
|
||||
},
|
||||
getOffsetTop: function getOffsetTop() {
|
||||
if (!this.hasWindow) return 0;
|
||||
return window.pageYOffset || document.documentElement.scrollTop;
|
||||
},
|
||||
getRoundedBoundedClientRect: function getRoundedBoundedClientRect(el) {
|
||||
var rect = el.getBoundingClientRect();
|
||||
return {
|
||||
top: Math.round(rect.top),
|
||||
left: Math.round(rect.left),
|
||||
bottom: Math.round(rect.bottom),
|
||||
right: Math.round(rect.right),
|
||||
width: Math.round(rect.width),
|
||||
height: Math.round(rect.height)
|
||||
};
|
||||
},
|
||||
measure: function measure(el) {
|
||||
if (!el || !this.hasWindow) return null;
|
||||
var rect = this.getRoundedBoundedClientRect(el);
|
||||
// Account for activator margin
|
||||
if (this.isAttached) {
|
||||
var style = window.getComputedStyle(el);
|
||||
rect.left = parseInt(style.marginLeft);
|
||||
rect.top = parseInt(style.marginTop);
|
||||
}
|
||||
return rect;
|
||||
},
|
||||
sneakPeek: function sneakPeek(cb) {
|
||||
var _this = this;
|
||||
|
||||
requestAnimationFrame(function () {
|
||||
var el = _this.$refs.content;
|
||||
if (!el || _this.isShown(el)) return cb();
|
||||
el.style.display = 'inline-block';
|
||||
cb();
|
||||
el.style.display = 'none';
|
||||
});
|
||||
},
|
||||
startTransition: function startTransition() {
|
||||
var _this2 = this;
|
||||
|
||||
return new Promise(function (resolve) {
|
||||
return requestAnimationFrame(function () {
|
||||
_this2.isContentActive = _this2.hasJustFocused = _this2.isActive;
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
},
|
||||
isShown: function isShown(el) {
|
||||
return el.style.display !== 'none';
|
||||
},
|
||||
updateDimensions: function updateDimensions() {
|
||||
var _this3 = this;
|
||||
|
||||
this.checkForWindow();
|
||||
this.checkActivatorFixed();
|
||||
this.checkForPageYOffset();
|
||||
this.pageWidth = document.documentElement.clientWidth;
|
||||
var dimensions = {};
|
||||
// Activator should already be shown
|
||||
if (!this.hasActivator || this.absolute) {
|
||||
dimensions.activator = this.absolutePosition();
|
||||
} else {
|
||||
var activator = this.getActivator();
|
||||
dimensions.activator = this.measure(activator);
|
||||
dimensions.activator.offsetLeft = activator.offsetLeft;
|
||||
if (this.isAttached) {
|
||||
// account for css padding causing things to not line up
|
||||
// this is mostly for v-autocomplete, hopefully it won't break anything
|
||||
dimensions.activator.offsetTop = activator.offsetTop;
|
||||
} else {
|
||||
dimensions.activator.offsetTop = 0;
|
||||
}
|
||||
}
|
||||
// Display and hide to get dimensions
|
||||
this.sneakPeek(function () {
|
||||
dimensions.content = _this3.measure(_this3.$refs.content);
|
||||
_this3.dimensions = dimensions;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=menuable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+189
@@ -0,0 +1,189 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
require('../../src/stylus/components/_overlay.styl');
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* @vue/component */
|
||||
|
||||
// Utilities
|
||||
exports.default = _vue2.default.extend().extend({
|
||||
name: 'overlayable',
|
||||
props: {
|
||||
hideOverlay: Boolean
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
overlay: null,
|
||||
overlayOffset: 0,
|
||||
overlayTimeout: undefined,
|
||||
overlayTransitionDuration: 500 + 150 // transition + delay
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
hideOverlay: function hideOverlay(value) {
|
||||
if (value) this.removeOverlay();else this.genOverlay();
|
||||
}
|
||||
},
|
||||
beforeDestroy: function beforeDestroy() {
|
||||
this.removeOverlay();
|
||||
},
|
||||
|
||||
methods: {
|
||||
genOverlay: function genOverlay() {
|
||||
var _this = this;
|
||||
|
||||
// If fn is called and timeout is active
|
||||
// or overlay already exists
|
||||
// cancel removal of overlay and re-add active
|
||||
if (!this.isActive || this.hideOverlay || this.isActive && this.overlayTimeout || this.overlay) {
|
||||
clearTimeout(this.overlayTimeout);
|
||||
return this.overlay && this.overlay.classList.add('v-overlay--active');
|
||||
}
|
||||
this.overlay = document.createElement('div');
|
||||
this.overlay.className = 'v-overlay';
|
||||
if (this.absolute) this.overlay.className += ' v-overlay--absolute';
|
||||
this.hideScroll();
|
||||
var parent = this.absolute ? this.$el.parentNode : document.querySelector('[data-app]');
|
||||
parent && parent.insertBefore(this.overlay, parent.firstChild);
|
||||
// eslint-disable-next-line no-unused-expressions
|
||||
this.overlay.clientHeight; // Force repaint
|
||||
requestAnimationFrame(function () {
|
||||
// https://github.com/vuetifyjs/vuetify/issues/4678
|
||||
if (!_this.overlay) return;
|
||||
_this.overlay.className += ' v-overlay--active';
|
||||
if (_this.activeZIndex !== undefined) {
|
||||
_this.overlay.style.zIndex = String(_this.activeZIndex - 1);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
},
|
||||
|
||||
/** removeOverlay(false) will not restore the scollbar afterwards */
|
||||
removeOverlay: function removeOverlay() {
|
||||
var _this2 = this;
|
||||
|
||||
var showScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
||||
|
||||
if (!this.overlay) {
|
||||
return showScroll && this.showScroll();
|
||||
}
|
||||
this.overlay.classList.remove('v-overlay--active');
|
||||
this.overlayTimeout = window.setTimeout(function () {
|
||||
// IE11 Fix
|
||||
try {
|
||||
if (_this2.overlay && _this2.overlay.parentNode) {
|
||||
_this2.overlay.parentNode.removeChild(_this2.overlay);
|
||||
}
|
||||
_this2.overlay = null;
|
||||
showScroll && _this2.showScroll();
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
clearTimeout(_this2.overlayTimeout);
|
||||
_this2.overlayTimeout = undefined;
|
||||
}, this.overlayTransitionDuration);
|
||||
},
|
||||
scrollListener: function scrollListener(e) {
|
||||
if (e.type === 'keydown') {
|
||||
if (['INPUT', 'TEXTAREA', 'SELECT'].includes(e.target.tagName) ||
|
||||
// https://github.com/vuetifyjs/vuetify/issues/4715
|
||||
e.target.isContentEditable) return;
|
||||
var up = [_helpers.keyCodes.up, _helpers.keyCodes.pageup];
|
||||
var down = [_helpers.keyCodes.down, _helpers.keyCodes.pagedown];
|
||||
if (up.includes(e.keyCode)) {
|
||||
e.deltaY = -1;
|
||||
} else if (down.includes(e.keyCode)) {
|
||||
e.deltaY = 1;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (e.target === this.overlay || e.type !== 'keydown' && e.target === document.body || this.checkPath(e)) e.preventDefault();
|
||||
},
|
||||
hasScrollbar: function hasScrollbar(el) {
|
||||
if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
|
||||
var style = window.getComputedStyle(el);
|
||||
return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight;
|
||||
},
|
||||
shouldScroll: function shouldScroll(el, delta) {
|
||||
if (el.scrollTop === 0 && delta < 0) return true;
|
||||
return el.scrollTop + el.clientHeight === el.scrollHeight && delta > 0;
|
||||
},
|
||||
isInside: function isInside(el, parent) {
|
||||
if (el === parent) {
|
||||
return true;
|
||||
} else if (el === null || el === document.body) {
|
||||
return false;
|
||||
} else {
|
||||
return this.isInside(el.parentNode, parent);
|
||||
}
|
||||
},
|
||||
checkPath: function checkPath(e) {
|
||||
var path = e.path || this.composedPath(e);
|
||||
var delta = e.deltaY;
|
||||
if (e.type === 'keydown' && path[0] === document.body) {
|
||||
var dialog = this.$refs.dialog;
|
||||
var selected = window.getSelection().anchorNode;
|
||||
if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {
|
||||
return this.shouldScroll(dialog, delta);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
for (var index = 0; index < path.length; index++) {
|
||||
var el = path[index];
|
||||
if (el === document) return true;
|
||||
if (el === document.documentElement) return true;
|
||||
if (el === this.$refs.content) return true;
|
||||
if (this.hasScrollbar(el)) return this.shouldScroll(el, delta);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Polyfill for Event.prototype.composedPath
|
||||
*/
|
||||
composedPath: function composedPath(e) {
|
||||
if (e.composedPath) return e.composedPath();
|
||||
var path = [];
|
||||
var el = e.target;
|
||||
while (el) {
|
||||
path.push(el);
|
||||
if (el.tagName === 'HTML') {
|
||||
path.push(document);
|
||||
path.push(window);
|
||||
return path;
|
||||
}
|
||||
el = el.parentElement;
|
||||
}
|
||||
return path;
|
||||
},
|
||||
hideScroll: function hideScroll() {
|
||||
if (this.$vuetify.breakpoint.smAndDown) {
|
||||
document.documentElement.classList.add('overflow-y-hidden');
|
||||
} else {
|
||||
(0, _helpers.addPassiveEventListener)(window, 'wheel', this.scrollListener, { passive: false });
|
||||
window.addEventListener('keydown', this.scrollListener);
|
||||
}
|
||||
},
|
||||
showScroll: function showScroll() {
|
||||
document.documentElement.classList.remove('overflow-y-hidden');
|
||||
window.removeEventListener('wheel', this.scrollListener);
|
||||
window.removeEventListener('keydown', this.scrollListener);
|
||||
}
|
||||
}
|
||||
});
|
||||
// Types
|
||||
// Styles
|
||||
//# sourceMappingURL=overlayable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+44
@@ -0,0 +1,44 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _colorable = require('./colorable');
|
||||
|
||||
var _colorable2 = _interopRequireDefault(_colorable);
|
||||
|
||||
var _mixins = require('../util/mixins');
|
||||
|
||||
var _mixins2 = _interopRequireDefault(_mixins);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* @vue/component */
|
||||
// Mixins
|
||||
exports.default = (0, _mixins2.default)(_colorable2.default).extend({
|
||||
methods: {
|
||||
genPickerButton: function genPickerButton(prop, value, content) {
|
||||
var _this = this;
|
||||
|
||||
var readonly = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
||||
var staticClass = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';
|
||||
|
||||
var active = this[prop] === value;
|
||||
var click = function click(event) {
|
||||
event.stopPropagation();
|
||||
_this.$emit('update:' + prop, value);
|
||||
};
|
||||
return this.$createElement('div', {
|
||||
staticClass: ('v-picker__title__btn ' + staticClass).trim(),
|
||||
'class': {
|
||||
'v-picker__title__btn--active': active,
|
||||
'v-picker__title__btn--readonly': readonly
|
||||
},
|
||||
on: active || readonly ? undefined : { click: click }
|
||||
}, Array.isArray(content) ? content : [content]);
|
||||
}
|
||||
}
|
||||
});
|
||||
// Utilities
|
||||
//# sourceMappingURL=picker-button.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/picker-button.ts"],"names":[],"mappings":";;;;;;AACA;;;;AAGA;;;;;;AAKA;;kBACe,sBACb,mBADa,EAEb,MAFa,CAEN;AACP,aAAS;AACP,uBADO,2BAEL,IAFK,EAGL,KAHK,EAIL,OAJK,EAMW;AAAA;;AAAA,gBADhB,QACgB,uEADL,KACK;AAAA,gBAAhB,WAAgB,uEAAF,EAAE;;AAEhB,gBAAM,SAAU,KAAa,IAAb,MAAuB,KAAvC;AACA,gBAAM,QAAQ,SAAR,KAAQ,CAAC,KAAD,EAAiB;AAC7B,sBAAM,eAAN;AACA,sBAAK,KAAL,aAAqB,IAArB,EAA6B,KAA7B;AACD,aAHD;AAKA,mBAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B;AAChC,6BAAa,2BAAwB,WAAxB,EAAsC,IAAtC,EADmB;AAEhC,yBAAS;AACP,oDAAgC,MADzB;AAEP,sDAAkC;AAF3B,iBAFuB;AAMhC,oBAAK,UAAU,QAAX,GAAuB,SAAvB,GAAmC,EAAE,YAAF;AANP,aAA3B,EAOJ,MAAM,OAAN,CAAc,OAAd,IAAyB,OAAzB,GAAmC,CAAC,OAAD,CAP/B,CAAP;AAQD;AAtBM;AADF,CAFM,C;AAPf","sourcesContent":["// Mixins\nimport Colorable from './colorable'\n\n// Utilities\nimport mixins from '../util/mixins'\n\n// Types\nimport { VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable\n).extend({\n methods: {\n genPickerButton (\n prop: string,\n value: any,\n content: VNodeChildren,\n readonly = false,\n staticClass = ''\n ) {\n const active = (this as any)[prop] === value\n const click = (event: Event) => {\n event.stopPropagation()\n this.$emit(`update:${prop}`, value)\n }\n\n return this.$createElement('div', {\n staticClass: `v-picker__title__btn ${staticClass}`.trim(),\n 'class': {\n 'v-picker__title__btn--active': active,\n 'v-picker__title__btn--readonly': readonly\n },\n on: (active || readonly) ? undefined : { click }\n }, Array.isArray(content) ? content : [content])\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _VPicker = require('../components/VPicker');
|
||||
|
||||
var _VPicker2 = _interopRequireDefault(_VPicker);
|
||||
|
||||
var _colorable = require('./colorable');
|
||||
|
||||
var _colorable2 = _interopRequireDefault(_colorable);
|
||||
|
||||
var _themeable = require('./themeable');
|
||||
|
||||
var _themeable2 = _interopRequireDefault(_themeable);
|
||||
|
||||
var _mixins = require('../util/mixins');
|
||||
|
||||
var _mixins2 = _interopRequireDefault(_mixins);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
// Components
|
||||
exports.default = (0, _mixins2.default)(_colorable2.default, _themeable2.default
|
||||
/* @vue/component */
|
||||
).extend({
|
||||
name: 'picker',
|
||||
props: {
|
||||
fullWidth: Boolean,
|
||||
headerColor: String,
|
||||
landscape: Boolean,
|
||||
noTitle: Boolean,
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: 290
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
genPickerTitle: function genPickerTitle() {
|
||||
return null;
|
||||
},
|
||||
genPickerBody: function genPickerBody() {
|
||||
return null;
|
||||
},
|
||||
genPickerActionsSlot: function genPickerActionsSlot() {
|
||||
return this.$scopedSlots.default ? this.$scopedSlots.default({
|
||||
save: this.save,
|
||||
cancel: this.cancel
|
||||
}) : this.$slots.default;
|
||||
},
|
||||
genPicker: function genPicker(staticClass) {
|
||||
var children = [];
|
||||
if (!this.noTitle) {
|
||||
var title = this.genPickerTitle();
|
||||
title && children.push(title);
|
||||
}
|
||||
var body = this.genPickerBody();
|
||||
body && children.push(body);
|
||||
children.push(this.$createElement('template', { slot: 'actions' }, [this.genPickerActionsSlot()]));
|
||||
return this.$createElement(_VPicker2.default, {
|
||||
staticClass: staticClass,
|
||||
props: {
|
||||
color: this.headerColor || this.color,
|
||||
dark: this.dark,
|
||||
fullWidth: this.fullWidth,
|
||||
landscape: this.landscape,
|
||||
light: this.light,
|
||||
width: this.width
|
||||
}
|
||||
}, children);
|
||||
}
|
||||
}
|
||||
});
|
||||
// Utils
|
||||
|
||||
// Mixins
|
||||
//# sourceMappingURL=picker.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/picker.ts"],"names":[],"mappings":";;;;;;AACA;;;;AAGA;;;;AACA;;;;AAGA;;;;;;;kBAKe,sBACb,mBADa,EAEb;AACF;AAHe,EAIb,MAJa,CAIN;AACP,UAAM,QADC;AAGP,WAAO;AACL,mBAAW,OADN;AAEL,qBAAa,MAFR;AAGL,mBAAW,OAHN;AAIL,iBAAS,OAJJ;AAKL,eAAO;AACL,kBAAM,CAAC,MAAD,EAAS,MAAT,CADD;AAEL,qBAAS;AAFJ;AALF,KAHA;AAcP,aAAS;AACP,sBADO,4BACO;AACZ,mBAAO,IAAP;AACD,SAHM;AAIP,qBAJO,2BAIM;AACX,mBAAO,IAAP;AACD,SANM;AAOP,4BAPO,kCAOa;AAClB,mBAAO,KAAK,YAAL,CAAkB,OAAlB,GAA4B,KAAK,YAAL,CAAkB,OAAlB,CAA0B;AAC3D,sBAAO,KAAa,IADuC;AAE3D,wBAAS,KAAa;AAFqC,aAA1B,CAA5B,GAGF,KAAK,MAAL,CAAY,OAHjB;AAID,SAZM;AAaP,iBAbO,qBAaI,WAbJ,EAauB;AAC5B,gBAAM,WAAoB,EAA1B;AAEA,gBAAI,CAAC,KAAK,OAAV,EAAmB;AACjB,oBAAM,QAAQ,KAAK,cAAL,EAAd;AACA,yBAAS,SAAS,IAAT,CAAc,KAAd,CAAT;AACD;AAED,gBAAM,OAAO,KAAK,aAAL,EAAb;AACA,oBAAQ,SAAS,IAAT,CAAc,IAAd,CAAR;AAEA,qBAAS,IAAT,CAAc,KAAK,cAAL,CAAoB,UAApB,EAAgC,EAAE,MAAM,SAAR,EAAhC,EAAqD,CAAC,KAAK,oBAAL,EAAD,CAArD,CAAd;AAEA,mBAAO,KAAK,cAAL,CAAoB,iBAApB,EAA6B;AAClC,wCADkC;AAElC,uBAAO;AACL,2BAAO,KAAK,WAAL,IAAoB,KAAK,KAD3B;AAEL,0BAAM,KAAK,IAFN;AAGL,+BAAW,KAAK,SAHX;AAIL,+BAAW,KAAK,SAJX;AAKL,2BAAO,KAAK,KALP;AAML,2BAAO,KAAK;AANP;AAF2B,aAA7B,EAUJ,QAVI,CAAP;AAWD;AArCM;AAdF,CAJM,C;AANf;;AAJA","sourcesContent":["// Components\nimport VPicker from '../components/VPicker'\n\n// Mixins\nimport Colorable from './colorable'\nimport Themeable from './themeable'\n\n// Utils\nimport mixins from '../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Colorable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'picker',\n\n props: {\n fullWidth: Boolean,\n headerColor: String,\n landscape: Boolean,\n noTitle: Boolean,\n width: {\n type: [Number, String],\n default: 290\n }\n },\n\n methods: {\n genPickerTitle (): VNode | null {\n return null\n },\n genPickerBody (): VNode | null {\n return null\n },\n genPickerActionsSlot () {\n return this.$scopedSlots.default ? this.$scopedSlots.default({\n save: (this as any).save,\n cancel: (this as any).cancel\n }) : this.$slots.default\n },\n genPicker (staticClass: string) {\n const children: VNode[] = []\n\n if (!this.noTitle) {\n const title = this.genPickerTitle()\n title && children.push(title)\n }\n\n const body = this.genPickerBody()\n body && children.push(body)\n\n children.push(this.$createElement('template', { slot: 'actions' }, [this.genPickerActionsSlot()]))\n\n return this.$createElement(VPicker, {\n staticClass,\n props: {\n color: this.headerColor || this.color,\n dark: this.dark,\n fullWidth: this.fullWidth,\n landscape: this.landscape,\n light: this.light,\n width: this.width\n }\n }, children)\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.factory = factory;
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var availableProps = {
|
||||
absolute: Boolean,
|
||||
bottom: Boolean,
|
||||
fixed: Boolean,
|
||||
left: Boolean,
|
||||
right: Boolean,
|
||||
top: Boolean
|
||||
};
|
||||
function factory() {
|
||||
var selected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
||||
|
||||
return _vue2.default.extend({
|
||||
name: 'positionable',
|
||||
props: selected.length ? (0, _helpers.filterObjectOnKeys)(availableProps, selected) : availableProps
|
||||
});
|
||||
}
|
||||
exports.default = factory();
|
||||
// Add a `*` before the second `/`
|
||||
/* Tests /
|
||||
let single = factory(['top']).extend({
|
||||
created () {
|
||||
this.top
|
||||
this.bottom
|
||||
this.absolute
|
||||
}
|
||||
})
|
||||
|
||||
let some = factory(['top', 'bottom']).extend({
|
||||
created () {
|
||||
this.top
|
||||
this.bottom
|
||||
this.absolute
|
||||
}
|
||||
})
|
||||
|
||||
let all = factory().extend({
|
||||
created () {
|
||||
this.top
|
||||
this.bottom
|
||||
this.absolute
|
||||
this.foobar
|
||||
}
|
||||
})
|
||||
/**/
|
||||
//# sourceMappingURL=positionable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/positionable.ts"],"names":[],"mappings":";;;;;QAkBgB,O,GAAA,O;;;;;;AAjBhB;;;;AAGA,IAAM,iBAAiB;AACrB,YAAU,OADW;AAErB,UAAQ,OAFa;AAGrB,SAAO,OAHc;AAIrB,QAAM,OAJe;AAKrB,SAAO,OALc;AAMrB,OAAK;AANgB,CAAvB;AAcM,SAAU,OAAV,GAAuC;AAAA,MAApB,QAAoB,uEAAF,EAAE;;AAC3C,SAAO,cAAI,MAAJ,CAAW;AAChB,UAAM,cADU;AAEhB,WAAO,SAAS,MAAT,GAAkB,iCAAmB,cAAnB,EAAmC,QAAnC,CAAlB,GAAiE;AAFxD,GAAX,CAAP;AAID;kBAEc,S;AAEf;AACA","sourcesContent":["import Vue from 'vue'\nimport { filterObjectOnKeys } from '../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean\n}\ntype props = Record<keyof typeof availableProps, boolean>\n\nexport type Positionable<S extends keyof props> = VueConstructor<Vue & { [P in S]: boolean }, { [P in S]: BooleanConstructor }>\n\nexport function factory <S extends keyof props> (selected?: S[]): Positionable<S>\nexport function factory (selected: undefined): OptionsVue<Vue, {}, {}, {}, props, typeof availableProps>\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n"],"sourceRoot":""}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.factory = factory;
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function factory() {
|
||||
var prop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'value';
|
||||
var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'change';
|
||||
|
||||
return _vue2.default.extend({
|
||||
name: 'proxyable',
|
||||
model: {
|
||||
prop: prop,
|
||||
event: event
|
||||
},
|
||||
props: _defineProperty({}, prop, {
|
||||
required: false
|
||||
}),
|
||||
data: function data() {
|
||||
return {
|
||||
internalLazyValue: this[prop]
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
internalValue: {
|
||||
get: function get() {
|
||||
return this.internalLazyValue;
|
||||
},
|
||||
set: function set(val) {
|
||||
if (val === this.internalLazyValue) return;
|
||||
this.internalLazyValue = val;
|
||||
this.$emit(event, val);
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: _defineProperty({}, prop, function (val) {
|
||||
this.internalLazyValue = val;
|
||||
})
|
||||
});
|
||||
}
|
||||
/* eslint-disable-next-line no-redeclare */
|
||||
var Proxyable = factory();
|
||||
exports.default = Proxyable;
|
||||
//# sourceMappingURL=proxyable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/proxyable.ts"],"names":[],"mappings":";;;;;QASgB,O,GAAA,O;;;;;;;;;;AAAV,SAAU,OAAV,GAEY;AAAA,QADhB,IACgB,uEADT,OACS;AAAA,QAAhB,KAAgB,uEAAR,QAAQ;;AAEhB,WAAO,cAAI,MAAJ,CAAW;AAChB,cAAM,WADU;AAGhB,eAAO;AACL,sBADK;AAEL;AAFK,SAHS;AAQhB,mCACG,IADH,EACU;AACN,sBAAU;AADJ,SADV,CARgB;AAchB,YAdgB,kBAcZ;AACF,mBAAO;AACL,mCAAmB,KAAK,IAAL;AADd,aAAP;AAGD,SAlBe;;AAoBhB,kBAAU;AACR,2BAAe;AACb,mBADa,iBACV;AACD,2BAAO,KAAK,iBAAZ;AACD,iBAHY;AAIb,mBAJa,eAIR,GAJQ,EAIA;AACX,wBAAI,QAAQ,KAAK,iBAAjB,EAAoC;AAEpC,yBAAK,iBAAL,GAAyB,GAAzB;AAEA,yBAAK,KAAL,CAAW,KAAX,EAAkB,GAAlB;AACD;AAVY;AADP,SApBM;AAmChB,mCACG,IADH,YACU,GADV,EACa;AACT,iBAAK,iBAAL,GAAyB,GAAzB;AACD,SAHH;AAnCgB,KAAX,CAAP;AAyCD;AAED;AACA,IAAM,YAAY,SAAlB;kBAEe,S","sourcesContent":["import Vue, { VueConstructor } from 'vue'\n\n/* eslint-disable-next-line no-use-before-define */\nexport type Proxyable<T extends string = 'value'> = VueConstructor<Vue & {\n internalLazyValue: unknown\n internalValue: unknown\n} & Record<T, any>>\n\nexport function factory<T extends string = 'value'> (prop?: T, event?: string): Proxyable<T>\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event\n },\n\n props: {\n [prop]: {\n required: false\n }\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n }\n }\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n }\n }\n })\n}\n\n/* eslint-disable-next-line no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n"],"sourceRoot":""}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.inject = inject;
|
||||
exports.provide = provide;
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _console = require('../util/console');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function generateWarning(child, parent) {
|
||||
return function () {
|
||||
return (0, _console.consoleWarn)('The ' + child + ' component must be used inside a ' + parent);
|
||||
};
|
||||
}
|
||||
function inject(namespace, child, parent) {
|
||||
var defaultImpl = child && parent ? {
|
||||
register: generateWarning(child, parent),
|
||||
unregister: generateWarning(child, parent)
|
||||
} : null;
|
||||
return _vue2.default.extend({
|
||||
name: 'registrable-inject',
|
||||
inject: _defineProperty({}, namespace, {
|
||||
default: defaultImpl
|
||||
})
|
||||
});
|
||||
}
|
||||
function provide(namespace) {
|
||||
return _vue2.default.extend({
|
||||
name: 'registrable-provide',
|
||||
methods: {
|
||||
register: null,
|
||||
unregister: null
|
||||
},
|
||||
provide: function provide() {
|
||||
return _defineProperty({}, namespace, {
|
||||
register: this.register,
|
||||
unregister: this.unregister
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=registrable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/registrable.ts"],"names":[],"mappings":";;;;;QAegB,M,GAAA,M;QAiBA,O,GAAA,O;;;;;;AA9BhB;;;;;;AAEA,SAAS,eAAT,CAA0B,KAA1B,EAAyC,MAAzC,EAAuD;AACrD,WAAO;AAAA,eAAM,mCAAmB,KAAnB,yCAA4D,MAA5D,CAAN;AAAA,KAAP;AACD;AASK,SAAU,MAAV,CAAoC,SAApC,EAAkD,KAAlD,EAAkE,MAAlE,EAAiF;AACrF,QAAM,cAAc,SAAS,MAAT,GAAkB;AACpC,kBAAU,gBAAgB,KAAhB,EAAuB,MAAvB,CAD0B;AAEpC,oBAAY,gBAAgB,KAAhB,EAAuB,MAAvB;AAFwB,KAAlB,GAGhB,IAHJ;AAKA,WAAO,cAAI,MAAJ,CAAW;AAChB,cAAM,oBADU;AAGhB,oCACG,SADH,EACe;AACX,qBAAS;AADE,SADf;AAHgB,KAAX,CAAP;AASD;AAEK,SAAU,OAAV,CAAmB,SAAnB,EAAoC;AACxC,WAAO,cAAI,MAAJ,CAAW;AAChB,cAAM,qBADU;AAGhB,iBAAS;AACP,sBAAU,IADH;AAEP,wBAAY;AAFL,SAHO;AAOhB,eAPgB,qBAOT;AACL,uCACG,SADH,EACe;AACX,0BAAU,KAAK,QADJ;AAEX,4BAAY,KAAK;AAFN,aADf;AAMD;AAde,KAAX,CAAP;AAgBD","sourcesContent":["import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable<T extends string> = VueConstructor<Vue & {\n [K in T]: {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<T extends string> (namespace: T, child?: string, parent?: string): Registrable<T> {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent)\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl\n }\n }\n })\n}\n\nexport function provide (namespace: string) {\n return Vue.extend({\n name: 'registrable-provide',\n\n methods: {\n register: null,\n unregister: null\n },\n provide () {\n return {\n [namespace]: {\n register: this.register,\n unregister: this.unregister\n }\n }\n }\n })\n}\n"],"sourceRoot":""}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* @vue/component */
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'returnable',
|
||||
props: {
|
||||
returnValue: null
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
isActive: false,
|
||||
originalValue: null
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
isActive: function isActive(val) {
|
||||
if (val) {
|
||||
this.originalValue = this.returnValue;
|
||||
} else {
|
||||
this.$emit('update:returnValue', this.originalValue);
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
save: function save(value) {
|
||||
var _this = this;
|
||||
|
||||
this.originalValue = value;
|
||||
setTimeout(function () {
|
||||
_this.isActive = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=returnable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/returnable.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA;kBACe,cAAI,MAAJ,CAAW;AACxB,UAAM,YADkB;AAGxB,WAAO;AACL,qBAAa;AADR,KAHiB;AAOxB,UAAM;AAAA,eAAO;AACX,sBAAU,KADC;AAEX,2BAAe;AAFJ,SAAP;AAAA,KAPkB;AAYxB,WAAO;AACL,gBADK,oBACK,GADL,EACQ;AACX,gBAAI,GAAJ,EAAS;AACP,qBAAK,aAAL,GAAqB,KAAK,WAA1B;AACD,aAFD,MAEO;AACL,qBAAK,KAAL,CAAW,oBAAX,EAAiC,KAAK,aAAtC;AACD;AACF;AAPI,KAZiB;AAsBxB,aAAS;AACP,YADO,gBACD,KADC,EACS;AAAA;;AACd,iBAAK,aAAL,GAAqB,KAArB;AACA,uBAAW,YAAK;AACd,sBAAK,QAAL,GAAgB,KAAhB;AACD,aAFD;AAGD;AANM;AAtBe,CAAX,C","sourcesContent":["import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'returnable',\n\n props: {\n returnValue: null as any\n },\n\n data: () => ({\n isActive: false,\n originalValue: null as any\n }),\n\n watch: {\n isActive (val) {\n if (val) {\n this.originalValue = this.returnValue\n } else {\n this.$emit('update:returnValue', this.originalValue)\n }\n }\n },\n\n methods: {\n save (value: any) {\n this.originalValue = value\n setTimeout(() => {\n this.isActive = false\n })\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _ripple = require('../directives/ripple');
|
||||
|
||||
var _ripple2 = _interopRequireDefault(_ripple);
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
// Directives
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'rippleable',
|
||||
directives: { Ripple: _ripple2.default },
|
||||
props: {
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
genRipple: function genRipple() {
|
||||
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
||||
|
||||
if (!this.ripple) return null;
|
||||
data.staticClass = 'v-input--selection-controls__ripple';
|
||||
data.directives = data.directives || [];
|
||||
data.directives.push({
|
||||
name: 'ripple',
|
||||
value: { center: true }
|
||||
});
|
||||
data.on = Object.assign({
|
||||
click: this.onChange
|
||||
}, this.$listeners);
|
||||
return this.$createElement('div', data);
|
||||
},
|
||||
onChange: function onChange() {}
|
||||
}
|
||||
});
|
||||
// Types
|
||||
//# sourceMappingURL=rippleable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/rippleable.ts"],"names":[],"mappings":";;;;;;AACA;;;;AAGA;;;;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,YADkB;AAGxB,gBAAY,EAAE,wBAAF,EAHY;AAKxB,WAAO;AACL,gBAAQ;AACN,kBAAM,CAAC,OAAD,EAAU,MAAV,CADA;AAEN,qBAAS;AAFH;AADH,KALiB;AAYxB,aAAS;AACP,iBADO,uBACwB;AAAA,gBAApB,IAAoB,uEAAF,EAAE;;AAC7B,gBAAI,CAAC,KAAK,MAAV,EAAkB,OAAO,IAAP;AAElB,iBAAK,WAAL,GAAmB,qCAAnB;AAEA,iBAAK,UAAL,GAAkB,KAAK,UAAL,IAAmB,EAArC;AACA,iBAAK,UAAL,CAAgB,IAAhB,CAAqB;AACnB,sBAAM,QADa;AAEnB,uBAAO,EAAE,QAAQ,IAAV;AAFY,aAArB;AAIA,iBAAK,EAAL,GAAU,OAAO,MAAP,CAAc;AACtB,uBAAO,KAAK;AADU,aAAd,EAEP,KAAK,UAFE,CAAV;AAIA,mBAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B,IAA3B,CAAP;AACD,SAhBM;AAiBP,gBAjBO,sBAiBC,CAAM;AAjBP;AAZe,CAAX,C;AAHf","sourcesContent":["// Directives\nimport Ripple from '../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { Ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true\n }\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true }\n } as VNodeDirective)\n data.on = Object.assign({\n click: this.onChange\n }, this.$listeners)\n\n return this.$createElement('div', data)\n },\n onChange () {}\n }\n})\n"],"sourceRoot":""}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _ripple = require('../directives/ripple');
|
||||
|
||||
var _ripple2 = _interopRequireDefault(_ripple);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'routable',
|
||||
directives: {
|
||||
Ripple: _ripple2.default
|
||||
},
|
||||
props: {
|
||||
activeClass: String,
|
||||
append: Boolean,
|
||||
disabled: Boolean,
|
||||
exact: {
|
||||
type: Boolean,
|
||||
default: undefined
|
||||
},
|
||||
exactActiveClass: String,
|
||||
href: [String, Object],
|
||||
to: [String, Object],
|
||||
nuxt: Boolean,
|
||||
replace: Boolean,
|
||||
ripple: [Boolean, Object],
|
||||
tag: String,
|
||||
target: String
|
||||
},
|
||||
computed: {
|
||||
computedRipple: function computedRipple() {
|
||||
return this.ripple && !this.disabled ? this.ripple : false;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
click: function click(e) {
|
||||
this.$emit('click', e);
|
||||
},
|
||||
generateRouteLink: function generateRouteLink(classes) {
|
||||
var exact = this.exact;
|
||||
var tag = void 0;
|
||||
var data = _defineProperty({
|
||||
attrs: { disabled: this.disabled },
|
||||
class: classes,
|
||||
props: {},
|
||||
directives: [{
|
||||
name: 'ripple',
|
||||
value: this.computedRipple
|
||||
}]
|
||||
}, this.to ? 'nativeOn' : 'on', _extends({}, this.$listeners, {
|
||||
click: this.click
|
||||
}));
|
||||
if (typeof this.exact === 'undefined') {
|
||||
exact = this.to === '/' || this.to === Object(this.to) && this.to.path === '/';
|
||||
}
|
||||
if (this.to) {
|
||||
// Add a special activeClass hook
|
||||
// for component level styles
|
||||
var activeClass = this.activeClass;
|
||||
var exactActiveClass = this.exactActiveClass || activeClass;
|
||||
// TODO: apply only in VListTile
|
||||
if (this.proxyClass) {
|
||||
activeClass += ' ' + this.proxyClass;
|
||||
exactActiveClass += ' ' + this.proxyClass;
|
||||
}
|
||||
tag = this.nuxt ? 'nuxt-link' : 'router-link';
|
||||
Object.assign(data.props, {
|
||||
to: this.to,
|
||||
exact: exact,
|
||||
activeClass: activeClass,
|
||||
exactActiveClass: exactActiveClass,
|
||||
append: this.append,
|
||||
replace: this.replace
|
||||
});
|
||||
} else {
|
||||
tag = this.href && 'a' || this.tag || 'a';
|
||||
if (tag === 'a' && this.href) data.attrs.href = this.href;
|
||||
}
|
||||
if (this.target) data.attrs.target = this.target;
|
||||
return { tag: tag, data: data };
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=routable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/routable.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA;;;;;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,UADkB;AAGxB,gBAAY;AACV;AADU,KAHY;AAOxB,WAAO;AACL,qBAAa,MADR;AAEL,gBAAQ,OAFH;AAGL,kBAAU,OAHL;AAIL,eAAO;AACL,kBAAM,OADD;AAEL,qBAAS;AAFJ,SAJF;AAQL,0BAAkB,MARb;AASL,cAAM,CAAC,MAAD,EAAS,MAAT,CATD;AAUL,YAAI,CAAC,MAAD,EAAS,MAAT,CAVC;AAWL,cAAM,OAXD;AAYL,iBAAS,OAZJ;AAaL,gBAAQ,CAAC,OAAD,EAAU,MAAV,CAbH;AAcL,aAAK,MAdA;AAeL,gBAAQ;AAfH,KAPiB;AAyBxB,cAAU;AACR,sBADQ,4BACM;AACZ,mBAAQ,KAAK,MAAL,IAAe,CAAC,KAAK,QAAtB,GAAkC,KAAK,MAAvC,GAAgD,KAAvD;AACD;AAHO,KAzBc;AA+BxB,aAAS;AACP,aADO,iBACA,CADA,EACa;AAClB,iBAAK,KAAL,CAAW,OAAX,EAAoB,CAApB;AACD,SAHM;AAIP,yBAJO,6BAIY,OAJZ,EAIwB;AAC7B,gBAAI,QAAQ,KAAK,KAAjB;AACA,gBAAI,YAAJ;AAEA,gBAAM;AACJ,uBAAO,EAAE,UAAU,KAAK,QAAjB,EADH;AAEJ,uBAAO,OAFH;AAGJ,uBAAO,EAHH;AAIJ,4BAAY,CAAC;AACX,0BAAM,QADK;AAEX,2BAAO,KAAK;AAFD,iBAAD;AAJR,eAQH,KAAK,EAAL,GAAU,UAAV,GAAuB,IARpB,eASC,KAAK,UATN;AAUF,uBAAO,KAAK;AAVV,eAAN;AAcA,gBAAI,OAAO,KAAK,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,wBAAQ,KAAK,EAAL,KAAY,GAAZ,IACL,KAAK,EAAL,KAAY,OAAO,KAAK,EAAZ,CAAZ,IAA+B,KAAK,EAAL,CAAQ,IAAR,KAAiB,GADnD;AAED;AAED,gBAAI,KAAK,EAAT,EAAa;AACX;AACA;AACA,oBAAI,cAAc,KAAK,WAAvB;AACA,oBAAI,mBAAmB,KAAK,gBAAL,IAAyB,WAAhD;AAEA;AACA,oBAAK,KAAa,UAAlB,EAA8B;AAC5B,mCAAe,MAAO,KAAa,UAAnC;AACA,wCAAoB,MAAO,KAAa,UAAxC;AACD;AAED,sBAAM,KAAK,IAAL,GAAY,WAAZ,GAA0B,aAAhC;AACA,uBAAO,MAAP,CAAc,KAAK,KAAnB,EAA0B;AACxB,wBAAI,KAAK,EADe;AAExB,gCAFwB;AAGxB,4CAHwB;AAIxB,sDAJwB;AAKxB,4BAAQ,KAAK,MALW;AAMxB,6BAAS,KAAK;AANU,iBAA1B;AAQD,aArBD,MAqBO;AACL,sBAAO,KAAK,IAAL,IAAa,GAAd,IAAsB,KAAK,GAA3B,IAAkC,GAAxC;AAEA,oBAAI,QAAQ,GAAR,IAAe,KAAK,IAAxB,EAA8B,KAAK,KAAL,CAAY,IAAZ,GAAmB,KAAK,IAAxB;AAC/B;AAED,gBAAI,KAAK,MAAT,EAAiB,KAAK,KAAL,CAAY,MAAZ,GAAqB,KAAK,MAA1B;AAEjB,mBAAO,EAAE,QAAF,EAAO,UAAP,EAAP;AACD;AAzDM;AA/Be,CAAX,C","sourcesContent":["import Vue, { VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nimport Ripple, { RippleOptions } from '../directives/ripple'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean,\n default: undefined\n } as PropValidator<boolean | undefined>,\n exactActiveClass: String,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: [Boolean, Object],\n tag: String,\n target: String\n },\n\n computed: {\n computedRipple (): RippleOptions | boolean {\n return (this.ripple && !this.disabled) ? this.ripple : false\n }\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink (classes: any) {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: { disabled: this.disabled },\n class: classes,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click\n }\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n // TODO: apply only in VListTile\n if ((this as any).proxyClass) {\n activeClass += ' ' + (this as any).proxyClass\n exactActiveClass += ' ' + (this as any).proxyClass\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'a'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _VInput = require('../components/VInput');
|
||||
|
||||
var _VInput2 = _interopRequireDefault(_VInput);
|
||||
|
||||
var _rippleable = require('./rippleable');
|
||||
|
||||
var _rippleable2 = _interopRequireDefault(_rippleable);
|
||||
|
||||
var _comparable = require('./comparable');
|
||||
|
||||
var _comparable2 = _interopRequireDefault(_comparable);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* @vue/component */
|
||||
|
||||
// Mixins
|
||||
exports.default = _VInput2.default.extend({
|
||||
name: 'selectable',
|
||||
mixins: [_rippleable2.default, _comparable2.default],
|
||||
model: {
|
||||
prop: 'inputValue',
|
||||
event: 'change'
|
||||
},
|
||||
props: {
|
||||
color: {
|
||||
type: String,
|
||||
default: 'accent'
|
||||
},
|
||||
id: String,
|
||||
inputValue: null,
|
||||
falseValue: null,
|
||||
trueValue: null,
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
label: String
|
||||
},
|
||||
data: function data(vm) {
|
||||
return {
|
||||
lazyValue: vm.inputValue
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
computedColor: function computedColor() {
|
||||
return this.isActive ? this.color : this.validationState;
|
||||
},
|
||||
isMultiple: function isMultiple() {
|
||||
return this.multiple === true || this.multiple === null && Array.isArray(this.internalValue);
|
||||
},
|
||||
isActive: function isActive() {
|
||||
var _this = this;
|
||||
|
||||
var value = this.value;
|
||||
var input = this.internalValue;
|
||||
if (this.isMultiple) {
|
||||
if (!Array.isArray(input)) return false;
|
||||
return input.some(function (item) {
|
||||
return _this.valueComparator(item, value);
|
||||
});
|
||||
}
|
||||
if (this.trueValue === undefined || this.falseValue === undefined) {
|
||||
return value ? this.valueComparator(value, input) : Boolean(input);
|
||||
}
|
||||
return this.valueComparator(input, this.trueValue);
|
||||
},
|
||||
isDirty: function isDirty() {
|
||||
return this.isActive;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
inputValue: function inputValue(val) {
|
||||
this.lazyValue = val;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
genLabel: function genLabel() {
|
||||
if (!this.hasLabel) return null;
|
||||
var label = _VInput2.default.options.methods.genLabel.call(this);
|
||||
label.data.on = { click: this.onChange };
|
||||
return label;
|
||||
},
|
||||
genInput: function genInput(type, attrs) {
|
||||
return this.$createElement('input', {
|
||||
attrs: Object.assign({
|
||||
'aria-label': this.label,
|
||||
'aria-checked': this.isActive.toString(),
|
||||
disabled: this.isDisabled,
|
||||
id: this.id,
|
||||
role: type,
|
||||
type: type
|
||||
}, attrs),
|
||||
domProps: {
|
||||
value: this.value,
|
||||
checked: this.isActive
|
||||
},
|
||||
on: {
|
||||
blur: this.onBlur,
|
||||
change: this.onChange,
|
||||
focus: this.onFocus,
|
||||
keydown: this.onKeydown
|
||||
},
|
||||
ref: 'input'
|
||||
});
|
||||
},
|
||||
onBlur: function onBlur() {
|
||||
this.isFocused = false;
|
||||
},
|
||||
onChange: function onChange() {
|
||||
var _this2 = this;
|
||||
|
||||
if (this.isDisabled) return;
|
||||
var value = this.value;
|
||||
var input = this.internalValue;
|
||||
if (this.isMultiple) {
|
||||
if (!Array.isArray(input)) {
|
||||
input = [];
|
||||
}
|
||||
var length = input.length;
|
||||
input = input.filter(function (item) {
|
||||
return !_this2.valueComparator(item, value);
|
||||
});
|
||||
if (input.length === length) {
|
||||
input.push(value);
|
||||
}
|
||||
} else if (this.trueValue !== undefined && this.falseValue !== undefined) {
|
||||
input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue;
|
||||
} else if (value) {
|
||||
input = this.valueComparator(input, value) ? null : value;
|
||||
} else {
|
||||
input = !input;
|
||||
}
|
||||
this.validate(true, input);
|
||||
this.internalValue = input;
|
||||
},
|
||||
onFocus: function onFocus() {
|
||||
this.isFocused = true;
|
||||
},
|
||||
|
||||
/** @abstract */
|
||||
onKeydown: function onKeydown(e) {}
|
||||
}
|
||||
}); // Components
|
||||
//# sourceMappingURL=selectable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+25
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'sizeable',
|
||||
props: {
|
||||
large: Boolean,
|
||||
medium: Boolean,
|
||||
size: {
|
||||
type: [Number, String]
|
||||
},
|
||||
small: Boolean,
|
||||
xLarge: Boolean
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=sizeable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/sizeable.ts"],"names":[],"mappings":";;;;;;;;;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,UADkB;AAGxB,WAAO;AACL,eAAO,OADF;AAEL,gBAAQ,OAFH;AAGL,cAAM;AACJ,kBAAM,CAAC,MAAD,EAAS,MAAT;AADF,SAHD;AAML,eAAO,OANF;AAOL,gBAAQ;AAPH;AAHiB,CAAX,C","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n medium: Boolean,\n size: {\n type: [Number, String]\n },\n small: Boolean,\n xLarge: Boolean\n }\n})\n"],"sourceRoot":""}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* SSRBootable
|
||||
*
|
||||
* @mixin
|
||||
*
|
||||
* Used in layout components (drawer, toolbar, content)
|
||||
* to avoid an entry animation when using SSR
|
||||
*/
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'ssr-bootable',
|
||||
data: function data() {
|
||||
return {
|
||||
isBooted: false
|
||||
};
|
||||
},
|
||||
mounted: function mounted() {
|
||||
var _this = this;
|
||||
|
||||
// Use setAttribute instead of dataset
|
||||
// because dataset does not work well
|
||||
// with unit tests
|
||||
window.requestAnimationFrame(function () {
|
||||
_this.$el.setAttribute('data-booted', 'true');
|
||||
_this.isBooted = true;
|
||||
});
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=ssr-bootable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/ssr-bootable.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA;;;;;;;;kBAQe,cAAI,MAAJ,CAAW;AACxB,UAAM,cADkB;AAGxB,UAAM;AAAA,eAAO;AACX,sBAAU;AADC,SAAP;AAAA,KAHkB;AAOxB,WAPwB,qBAOjB;AAAA;;AACL;AACA;AACA;AACA,eAAO,qBAAP,CAA6B,YAAK;AAChC,kBAAK,GAAL,CAAS,YAAT,CAAsB,aAAtB,EAAqC,MAArC;AACA,kBAAK,QAAL,GAAgB,IAAhB;AACD,SAHD;AAID;AAfuB,CAAX,C","sourcesContent":["import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n }\n})\n"],"sourceRoot":""}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
||||
|
||||
/* @vue/component */
|
||||
exports.default = _vue2.default.extend().extend({
|
||||
name: 'stackable',
|
||||
data: function data() {
|
||||
return {
|
||||
stackClass: 'unpecified',
|
||||
stackElement: null,
|
||||
stackExclude: null,
|
||||
stackMinZIndex: 0,
|
||||
isActive: false
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
activeZIndex: function activeZIndex() {
|
||||
if (typeof window === 'undefined') return 0;
|
||||
var content = this.stackElement || this.$refs.content;
|
||||
// Return current zindex if not active
|
||||
var index = !this.isActive ? (0, _helpers.getZIndex)(content) : this.getMaxZIndex(this.stackExclude || [content]) + 2;
|
||||
if (index == null) return index;
|
||||
// Return max current z-index (excluding self) + 2
|
||||
// (2 to leave room for an overlay below, if needed)
|
||||
return parseInt(index);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getMaxZIndex: function getMaxZIndex() {
|
||||
var exclude = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
||||
|
||||
var base = this.$el;
|
||||
// Start with lowest allowed z-index or z-index of
|
||||
// base component's element, whichever is greater
|
||||
var zis = [this.stackMinZIndex, (0, _helpers.getZIndex)(base)];
|
||||
// Convert the NodeList to an array to
|
||||
// prevent an Edge bug with Symbol.iterator
|
||||
// https://github.com/vuetifyjs/vuetify/issues/2146
|
||||
var activeElements = [].concat(_toConsumableArray(document.getElementsByClassName(this.stackClass)));
|
||||
// Get z-index for all active dialogs
|
||||
for (var index = 0; index < activeElements.length; index++) {
|
||||
if (!exclude.includes(activeElements[index])) {
|
||||
zis.push((0, _helpers.getZIndex)(activeElements[index]));
|
||||
}
|
||||
}
|
||||
return Math.max.apply(Math, zis);
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=stackable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/stackable.ts"],"names":[],"mappings":";;;;;;;;;;AAEA;;;;;;AAQA;kBACe,cAAI,MAAJ,GAAsB,MAAtB,CAA6B;AAC1C,UAAM,WADoC;AAG1C,QAH0C,kBAGtC;AACF,eAAO;AACL,wBAAY,YADP;AAEL,0BAAc,IAFT;AAGL,0BAAc,IAHT;AAIL,4BAAgB,CAJX;AAKL,sBAAU;AALL,SAAP;AAOD,KAXyC;;AAY1C,cAAU;AACR,oBADQ,0BACI;AACV,gBAAI,OAAO,MAAP,KAAkB,WAAtB,EAAmC,OAAO,CAAP;AAEnC,gBAAM,UAAU,KAAK,YAAL,IAAqB,KAAK,KAAL,CAAW,OAAhD;AACA;AAEA,gBAAM,QAAQ,CAAC,KAAK,QAAN,GACV,wBAAU,OAAV,CADU,GAEV,KAAK,YAAL,CAAkB,KAAK,YAAL,IAAqB,CAAC,OAAD,CAAvC,IAAoD,CAFxD;AAIA,gBAAI,SAAS,IAAb,EAAmB,OAAO,KAAP;AAEnB;AACA;AACA,mBAAO,SAAS,KAAT,CAAP;AACD;AAhBO,KAZgC;AA8B1C,aAAS;AACP,oBADO,0BAC8B;AAAA,gBAAvB,OAAuB,uEAAF,EAAE;;AACnC,gBAAM,OAAO,KAAK,GAAlB;AACA;AACA;AACA,gBAAM,MAAM,CAAC,KAAK,cAAN,EAAsB,wBAAU,IAAV,CAAtB,CAAZ;AACA;AACA;AACA;AACA,gBAAM,8CAAqB,SAAS,sBAAT,CAAgC,KAAK,UAArC,CAArB,EAAN;AAEA;AACA,iBAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,eAAe,MAA3C,EAAmD,OAAnD,EAA4D;AAC1D,oBAAI,CAAC,QAAQ,QAAR,CAAiB,eAAe,KAAf,CAAjB,CAAL,EAA8C;AAC5C,wBAAI,IAAJ,CAAS,wBAAU,eAAe,KAAf,CAAV,CAAT;AACD;AACF;AAED,mBAAO,KAAK,GAAL,aAAY,GAAZ,CAAP;AACD;AAnBM;AA9BiC,CAA7B,C","sourcesContent":["import Vue from 'vue'\n\nimport { getZIndex } from '../util/helpers'\n\ninterface options extends Vue {\n $refs: {\n content: Element\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<options>().extend({\n name: 'stackable',\n\n data () {\n return {\n stackClass: 'unpecified',\n stackElement: null as Element | null,\n stackExclude: null as Element[] | null,\n stackMinZIndex: 0,\n isActive: false\n }\n },\n computed: {\n activeZIndex (): number {\n if (typeof window === 'undefined') return 0\n\n const content = this.stackElement || this.$refs.content\n // Return current zindex if not active\n\n const index = !this.isActive\n ? getZIndex(content)\n : this.getMaxZIndex(this.stackExclude || [content]) + 2\n\n if (index == null) return index\n\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index)\n }\n },\n methods: {\n getMaxZIndex (exclude: Element[] = []) {\n const base = this.$el\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n const zis = [this.stackMinZIndex, getZIndex(base)]\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n const activeElements = [...document.getElementsByClassName(this.stackClass)]\n\n // Get z-index for all active dialogs\n for (let index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(getZIndex(activeElements[index]))\n }\n }\n\n return Math.max(...zis)\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
exports.functionalThemeClasses = functionalThemeClasses;
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function functionalThemeClasses(context) {
|
||||
var vm = _extends({}, context.props, context.injections);
|
||||
var isDark = Themeable.options.computed.isDark.call(vm);
|
||||
return Themeable.options.computed.themeClasses.call({ isDark: isDark });
|
||||
}
|
||||
/* @vue/component */
|
||||
var Themeable = _vue2.default.extend().extend({
|
||||
name: 'themeable',
|
||||
provide: function provide() {
|
||||
return {
|
||||
theme: this.themeableProvide
|
||||
};
|
||||
},
|
||||
|
||||
inject: {
|
||||
theme: {
|
||||
default: {
|
||||
isDark: false
|
||||
}
|
||||
}
|
||||
},
|
||||
props: {
|
||||
dark: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
light: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
themeableProvide: {
|
||||
isDark: false
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
isDark: function isDark() {
|
||||
if (this.dark === true) {
|
||||
// explicitly dark
|
||||
return true;
|
||||
} else if (this.light === true) {
|
||||
// explicitly light
|
||||
return false;
|
||||
} else {
|
||||
// inherit from parent, or default false if there is none
|
||||
return this.theme.isDark;
|
||||
}
|
||||
},
|
||||
themeClasses: function themeClasses() {
|
||||
return {
|
||||
'theme--dark': this.isDark,
|
||||
'theme--light': !this.isDark
|
||||
};
|
||||
},
|
||||
|
||||
/** Used by menus and dialogs, inherits from v-app instead of the parent */
|
||||
rootIsDark: function rootIsDark() {
|
||||
if (this.dark === true) {
|
||||
// explicitly dark
|
||||
return true;
|
||||
} else if (this.light === true) {
|
||||
// explicitly light
|
||||
return false;
|
||||
} else {
|
||||
// inherit from v-app
|
||||
return this.$vuetify.dark;
|
||||
}
|
||||
},
|
||||
rootThemeClasses: function rootThemeClasses() {
|
||||
return {
|
||||
'theme--dark': this.rootIsDark,
|
||||
'theme--light': !this.rootIsDark
|
||||
};
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
isDark: {
|
||||
handler: function handler(newVal, oldVal) {
|
||||
if (newVal !== oldVal) {
|
||||
this.themeableProvide.isDark = this.isDark;
|
||||
}
|
||||
},
|
||||
|
||||
immediate: true
|
||||
}
|
||||
}
|
||||
});
|
||||
exports.default = Themeable;
|
||||
//# sourceMappingURL=themeable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/themeable.ts"],"names":[],"mappings":";;;;;;;;QAUgB,sB,GAAA,sB;;;;;;;;AAAV,SAAU,sBAAV,CAAkC,OAAlC,EAAwD;AAC5D,QAAM,kBACD,QAAQ,KADP,EAED,QAAQ,UAFP,CAAN;AAIA,QAAM,SAAS,UAAU,OAAV,CAAkB,QAAlB,CAA2B,MAA3B,CAAkC,IAAlC,CAAuC,EAAvC,CAAf;AACA,WAAO,UAAU,OAAV,CAAkB,QAAlB,CAA2B,YAA3B,CAAwC,IAAxC,CAA6C,EAAE,cAAF,EAA7C,CAAP;AACD;AAED;AACA,IAAM,YAAY,cAAI,MAAJ,GAAwB,MAAxB,CAA+B;AAC/C,UAAM,WADyC;AAG/C,WAH+C,qBAGxC;AACL,eAAO;AACL,mBAAO,KAAK;AADP,SAAP;AAGD,KAP8C;;AAS/C,YAAQ;AACN,eAAO;AACL,qBAAS;AACP,wBAAQ;AADD;AADJ;AADD,KATuC;AAiB/C,WAAO;AACL,cAAM;AACJ,kBAAM,OADF;AAEJ,qBAAS;AAFL,SADD;AAKL,eAAO;AACL,kBAAM,OADD;AAEL,qBAAS;AAFJ;AALF,KAjBwC;AA4B/C,QA5B+C,kBA4B3C;AACF,eAAO;AACL,8BAAkB;AAChB,wBAAQ;AADQ;AADb,SAAP;AAKD,KAlC8C;;AAoC/C,cAAU;AACR,cADQ,oBACF;AACJ,gBAAI,KAAK,IAAL,KAAc,IAAlB,EAAwB;AACtB;AACA,uBAAO,IAAP;AACD,aAHD,MAGO,IAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AAC9B;AACA,uBAAO,KAAP;AACD,aAHM,MAGA;AACL;AACA,uBAAO,KAAK,KAAL,CAAW,MAAlB;AACD;AACF,SAZO;AAaR,oBAbQ,0BAaI;AACV,mBAAO;AACL,+BAAe,KAAK,MADf;AAEL,gCAAgB,CAAC,KAAK;AAFjB,aAAP;AAID,SAlBO;;AAmBR;AACA,kBApBQ,wBAoBE;AACR,gBAAI,KAAK,IAAL,KAAc,IAAlB,EAAwB;AACtB;AACA,uBAAO,IAAP;AACD,aAHD,MAGO,IAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AAC9B;AACA,uBAAO,KAAP;AACD,aAHM,MAGA;AACL;AACA,uBAAO,KAAK,QAAL,CAAc,IAArB;AACD;AACF,SA/BO;AAgCR,wBAhCQ,8BAgCQ;AACd,mBAAO;AACL,+BAAe,KAAK,UADf;AAEL,gCAAgB,CAAC,KAAK;AAFjB,aAAP;AAID;AArCO,KApCqC;AA4E/C,WAAO;AACL,gBAAQ;AACN,mBADM,mBACG,MADH,EACW,MADX,EACiB;AACrB,oBAAI,WAAW,MAAf,EAAuB;AACrB,yBAAK,gBAAL,CAAsB,MAAtB,GAA+B,KAAK,MAApC;AACD;AACF,aALK;;AAMN,uBAAW;AANL;AADH;AA5EwC,CAA/B,CAAlB;kBAwFe,S","sourcesContent":["import Vue from 'vue'\nimport { PropValidator, RenderContext } from 'vue/types/options'\n\n/* eslint-disable-next-line no-use-before-define */\ninterface Themeable extends Vue {\n theme: {\n isDark: boolean\n }\n}\n\nexport function functionalThemeClasses (context: RenderContext): object {\n const vm = {\n ...context.props,\n ...context.injections\n }\n const isDark = Themeable.options.computed.isDark.call(vm)\n return Themeable.options.computed.themeClasses.call({ isDark })\n}\n\n/* @vue/component */\nconst Themeable = Vue.extend<Themeable>().extend({\n name: 'themeable',\n\n provide (): object {\n return {\n theme: this.themeableProvide\n }\n },\n\n inject: {\n theme: {\n default: {\n isDark: false\n }\n }\n },\n\n props: {\n dark: {\n type: Boolean,\n default: null\n } as PropValidator<boolean | null>,\n light: {\n type: Boolean,\n default: null\n } as PropValidator<boolean | null>\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false\n }\n }\n },\n\n computed: {\n isDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark\n }\n },\n themeClasses (): object {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark\n }\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from v-app\n return this.$vuetify.dark\n }\n },\n rootThemeClasses (): Dictionary<boolean> {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark\n }\n }\n },\n\n watch: {\n isDark: {\n handler (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark\n }\n },\n immediate: true\n }\n }\n})\n\nexport default Themeable\n"],"sourceRoot":""}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.factory = factory;
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function factory() {
|
||||
var _watch;
|
||||
|
||||
var prop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'value';
|
||||
var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'input';
|
||||
|
||||
return _vue2.default.extend({
|
||||
name: 'toggleable',
|
||||
model: { prop: prop, event: event },
|
||||
props: _defineProperty({}, prop, { required: false }),
|
||||
data: function data() {
|
||||
return {
|
||||
isActive: !!this[prop]
|
||||
};
|
||||
},
|
||||
|
||||
watch: (_watch = {}, _defineProperty(_watch, prop, function (val) {
|
||||
this.isActive = !!val;
|
||||
}), _defineProperty(_watch, 'isActive', function isActive(val) {
|
||||
!!val !== this[prop] && this.$emit(event, val);
|
||||
}), _watch)
|
||||
});
|
||||
}
|
||||
/* eslint-disable-next-line no-redeclare */
|
||||
var Toggleable = factory();
|
||||
exports.default = Toggleable;
|
||||
//# sourceMappingURL=toggleable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/toggleable.ts"],"names":[],"mappings":";;;;;QAMgB,O,GAAA,O;;;;;;;;;;AAAV,SAAU,OAAV,GAAkD;AAAA;;AAAA,QAA/B,IAA+B,uEAAxB,OAAwB;AAAA,QAAf,KAAe,uEAAP,OAAO;;AACtD,WAAO,cAAI,MAAJ,CAAW;AAChB,cAAM,YADU;AAGhB,eAAO,EAAE,UAAF,EAAQ,YAAR,EAHS;AAKhB,mCACG,IADH,EACU,EAAE,UAAU,KAAZ,EADV,CALgB;AAShB,YATgB,kBASZ;AACF,mBAAO;AACL,0BAAU,CAAC,CAAC,KAAK,IAAL;AADP,aAAP;AAGD,SAbe;;AAehB,qDACG,IADH,YACU,GADV,EACa;AACT,iBAAK,QAAL,GAAgB,CAAC,CAAC,GAAlB;AACD,SAHH,yDAIY,GAJZ,EAIe;AACX,aAAC,CAAC,GAAF,KAAU,KAAK,IAAL,CAAV,IAAwB,KAAK,KAAL,CAAW,KAAX,EAAkB,GAAlB,CAAxB;AACD,SANH;AAfgB,KAAX,CAAP;AAwBD;AAED;AACA,IAAM,aAAa,SAAnB;kBAEe,U","sourcesContent":["import Vue, { VueConstructor } from 'vue'\n\n/* eslint-disable-next-line no-use-before-define */\nexport type Toggleable<T extends string = 'value'> = VueConstructor<Vue & { isActive: boolean } & Record<T, any>>\n\nexport function factory<T extends string = 'value'> (prop?: T, event?: string): Toggleable<T>\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false }\n },\n\n data () {\n return {\n isActive: !!this[prop]\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n }\n }\n })\n}\n\n/* eslint-disable-next-line no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n"],"sourceRoot":""}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'transitionable',
|
||||
props: {
|
||||
mode: String,
|
||||
origin: String,
|
||||
transition: String
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=transitionable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/transitionable.ts"],"names":[],"mappings":";;;;;;;;;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,gBADkB;AAGxB,WAAO;AACL,cAAM,MADD;AAEL,gBAAQ,MAFH;AAGL,oBAAY;AAHP;AAHiB,CAAX,C","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String\n }\n})\n"],"sourceRoot":""}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _vue = require('vue');
|
||||
|
||||
var _vue2 = _interopRequireDefault(_vue);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
exports.default = _vue2.default.extend({
|
||||
name: 'translatable',
|
||||
props: {
|
||||
height: Number
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
elOffsetTop: 0,
|
||||
parallax: 0,
|
||||
parallaxDist: 0,
|
||||
percentScrolled: 0,
|
||||
scrollTop: 0,
|
||||
windowHeight: 0,
|
||||
windowBottom: 0
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
imgHeight: function imgHeight() {
|
||||
return this.objHeight();
|
||||
}
|
||||
},
|
||||
beforeDestroy: function beforeDestroy() {
|
||||
window.removeEventListener('scroll', this.translate, false);
|
||||
window.removeEventListener('resize', this.translate, false);
|
||||
},
|
||||
|
||||
methods: {
|
||||
calcDimensions: function calcDimensions() {
|
||||
var offset = this.$el.getBoundingClientRect();
|
||||
this.scrollTop = window.pageYOffset;
|
||||
this.parallaxDist = this.imgHeight - this.height;
|
||||
this.elOffsetTop = offset.top + this.scrollTop;
|
||||
this.windowHeight = window.innerHeight;
|
||||
this.windowBottom = this.scrollTop + this.windowHeight;
|
||||
},
|
||||
listeners: function listeners() {
|
||||
window.addEventListener('scroll', this.translate, false);
|
||||
window.addEventListener('resize', this.translate, false);
|
||||
},
|
||||
|
||||
/** @abstract **/
|
||||
objHeight: function objHeight() {
|
||||
throw new Error('Not implemented !');
|
||||
},
|
||||
translate: function translate() {
|
||||
this.calcDimensions();
|
||||
this.percentScrolled = (this.windowBottom - this.elOffsetTop) / (parseInt(this.height) + this.windowHeight);
|
||||
this.parallax = Math.round(this.parallaxDist * this.percentScrolled);
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=translatable.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../src/mixins/translatable.ts"],"names":[],"mappings":";;;;;;;;;;;;kBAEe,cAAI,MAAJ,CAAW;AACxB,UAAM,cADkB;AAGxB,WAAO;AACL,gBAAQ;AADH,KAHiB;AAOxB,UAAM;AAAA,eAAO;AACX,yBAAa,CADF;AAEX,sBAAU,CAFC;AAGX,0BAAc,CAHH;AAIX,6BAAiB,CAJN;AAKX,uBAAW,CALA;AAMX,0BAAc,CANH;AAOX,0BAAc;AAPH,SAAP;AAAA,KAPkB;AAiBxB,cAAU;AACR,iBADQ,uBACC;AACP,mBAAO,KAAK,SAAL,EAAP;AACD;AAHO,KAjBc;AAuBxB,iBAvBwB,2BAuBX;AACX,eAAO,mBAAP,CAA2B,QAA3B,EAAqC,KAAK,SAA1C,EAAqD,KAArD;AACA,eAAO,mBAAP,CAA2B,QAA3B,EAAqC,KAAK,SAA1C,EAAqD,KAArD;AACD,KA1BuB;;AA4BxB,aAAS;AACP,sBADO,4BACO;AACZ,gBAAM,SAAS,KAAK,GAAL,CAAS,qBAAT,EAAf;AAEA,iBAAK,SAAL,GAAiB,OAAO,WAAxB;AACA,iBAAK,YAAL,GAAoB,KAAK,SAAL,GAAiB,KAAK,MAA1C;AACA,iBAAK,WAAL,GAAmB,OAAO,GAAP,GAAa,KAAK,SAArC;AACA,iBAAK,YAAL,GAAoB,OAAO,WAA3B;AACA,iBAAK,YAAL,GAAoB,KAAK,SAAL,GAAiB,KAAK,YAA1C;AACD,SATM;AAUP,iBAVO,uBAUE;AACP,mBAAO,gBAAP,CAAwB,QAAxB,EAAkC,KAAK,SAAvC,EAAkD,KAAlD;AACA,mBAAO,gBAAP,CAAwB,QAAxB,EAAkC,KAAK,SAAvC,EAAkD,KAAlD;AACD,SAbM;;AAcP;AACA,iBAfO,uBAeE;AACP,kBAAM,IAAI,KAAJ,CAAU,mBAAV,CAAN;AACD,SAjBM;AAkBP,iBAlBO,uBAkBE;AACP,iBAAK,cAAL;AAEA,iBAAK,eAAL,GACE,CAAC,KAAK,YAAL,GAAoB,KAAK,WAA1B,KACC,SAAS,KAAK,MAAd,IAAwB,KAAK,YAD9B,CADF;AAKA,iBAAK,QAAL,GAAgB,KAAK,KAAL,CAAW,KAAK,YAAL,GAAoB,KAAK,eAApC,CAAhB;AACD;AA3BM;AA5Be,CAAX,C","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'translatable',\n\n props: {\n height: Number\n },\n\n data: () => ({\n elOffsetTop: 0,\n parallax: 0,\n parallaxDist: 0,\n percentScrolled: 0,\n scrollTop: 0,\n windowHeight: 0,\n windowBottom: 0\n }),\n\n computed: {\n imgHeight (): number {\n return this.objHeight()\n }\n },\n\n beforeDestroy () {\n window.removeEventListener('scroll', this.translate, false)\n window.removeEventListener('resize', this.translate, false)\n },\n\n methods: {\n calcDimensions () {\n const offset = this.$el.getBoundingClientRect()\n\n this.scrollTop = window.pageYOffset\n this.parallaxDist = this.imgHeight - this.height\n this.elOffsetTop = offset.top + this.scrollTop\n this.windowHeight = window.innerHeight\n this.windowBottom = this.scrollTop + this.windowHeight\n },\n listeners () {\n window.addEventListener('scroll', this.translate, false)\n window.addEventListener('resize', this.translate, false)\n },\n /** @abstract **/\n objHeight (): number {\n throw new Error('Not implemented !')\n },\n translate () {\n this.calcDimensions()\n\n this.percentScrolled = (\n (this.windowBottom - this.elOffsetTop) /\n (parseInt(this.height) + this.windowHeight)\n )\n\n this.parallax = Math.round(this.parallaxDist * this.percentScrolled)\n }\n }\n})\n"],"sourceRoot":""}
|
||||
+235
@@ -0,0 +1,235 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; // Mixins
|
||||
|
||||
// Utilities
|
||||
|
||||
|
||||
var _colorable = require('./colorable');
|
||||
|
||||
var _colorable2 = _interopRequireDefault(_colorable);
|
||||
|
||||
var _registrable = require('./registrable');
|
||||
|
||||
var _helpers = require('../util/helpers');
|
||||
|
||||
var _console = require('../util/console');
|
||||
|
||||
var _mixins = require('../util/mixins');
|
||||
|
||||
var _mixins2 = _interopRequireDefault(_mixins);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/* @vue/component */
|
||||
exports.default = (0, _mixins2.default)(_colorable2.default, (0, _registrable.inject)('form')).extend({
|
||||
name: 'validatable',
|
||||
props: {
|
||||
disabled: Boolean,
|
||||
error: Boolean,
|
||||
errorCount: {
|
||||
type: [Number, String],
|
||||
default: 1
|
||||
},
|
||||
errorMessages: {
|
||||
type: [String, Array],
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
type: [String, Array],
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
readonly: Boolean,
|
||||
rules: {
|
||||
type: Array,
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
success: Boolean,
|
||||
successMessages: {
|
||||
type: [String, Array],
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
validateOnBlur: Boolean,
|
||||
value: { required: false }
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
errorBucket: [],
|
||||
hasColor: false,
|
||||
hasFocused: false,
|
||||
hasInput: false,
|
||||
isFocused: false,
|
||||
isResetting: false,
|
||||
lazyValue: this.value,
|
||||
valid: false
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
hasError: function hasError() {
|
||||
return this.internalErrorMessages.length > 0 || this.errorBucket.length > 0 || this.error;
|
||||
},
|
||||
|
||||
// TODO: Add logic that allows the user to enable based
|
||||
// upon a good validation
|
||||
hasSuccess: function hasSuccess() {
|
||||
return this.internalSuccessMessages.length > 0 || this.success;
|
||||
},
|
||||
externalError: function externalError() {
|
||||
return this.internalErrorMessages.length > 0 || this.error;
|
||||
},
|
||||
hasMessages: function hasMessages() {
|
||||
return this.validationTarget.length > 0;
|
||||
},
|
||||
hasState: function hasState() {
|
||||
return this.hasSuccess || this.shouldValidate && this.hasError;
|
||||
},
|
||||
internalErrorMessages: function internalErrorMessages() {
|
||||
return this.genInternalMessages(this.errorMessages);
|
||||
},
|
||||
internalMessages: function internalMessages() {
|
||||
return this.genInternalMessages(this.messages);
|
||||
},
|
||||
internalSuccessMessages: function internalSuccessMessages() {
|
||||
return this.genInternalMessages(this.successMessages);
|
||||
},
|
||||
|
||||
internalValue: {
|
||||
get: function get() {
|
||||
return this.lazyValue;
|
||||
},
|
||||
set: function set(val) {
|
||||
this.lazyValue = val;
|
||||
this.$emit('input', val);
|
||||
}
|
||||
},
|
||||
shouldValidate: function shouldValidate() {
|
||||
if (this.externalError) return true;
|
||||
if (this.isResetting) return false;
|
||||
return this.validateOnBlur ? this.hasFocused && !this.isFocused : this.hasInput || this.hasFocused;
|
||||
},
|
||||
validations: function validations() {
|
||||
return this.validationTarget.slice(0, Number(this.errorCount));
|
||||
},
|
||||
validationState: function validationState() {
|
||||
if (this.hasError && this.shouldValidate) return 'error';
|
||||
if (this.hasSuccess) return 'success';
|
||||
if (this.hasColor) return this.color;
|
||||
return undefined;
|
||||
},
|
||||
validationTarget: function validationTarget() {
|
||||
if (this.internalErrorMessages.length > 0) {
|
||||
return this.internalErrorMessages;
|
||||
} else if (this.successMessages.length > 0) {
|
||||
return this.internalSuccessMessages;
|
||||
} else if (this.messages.length > 0) {
|
||||
return this.internalMessages;
|
||||
} else if (this.shouldValidate) {
|
||||
return this.errorBucket;
|
||||
} else return [];
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
rules: {
|
||||
handler: function handler(newVal, oldVal) {
|
||||
if ((0, _helpers.deepEqual)(newVal, oldVal)) return;
|
||||
this.validate();
|
||||
},
|
||||
|
||||
deep: true
|
||||
},
|
||||
internalValue: function internalValue() {
|
||||
// If it's the first time we're setting input,
|
||||
// mark it with hasInput
|
||||
this.hasInput = true;
|
||||
this.validateOnBlur || this.$nextTick(this.validate);
|
||||
},
|
||||
isFocused: function isFocused(val) {
|
||||
// Should not check validation
|
||||
// if disabled or readonly
|
||||
if (!val && !this.disabled && !this.readonly) {
|
||||
this.hasFocused = true;
|
||||
this.validateOnBlur && this.validate();
|
||||
}
|
||||
},
|
||||
isResetting: function isResetting() {
|
||||
var _this = this;
|
||||
|
||||
setTimeout(function () {
|
||||
_this.hasInput = false;
|
||||
_this.hasFocused = false;
|
||||
_this.isResetting = false;
|
||||
_this.validate();
|
||||
}, 0);
|
||||
},
|
||||
hasError: function hasError(val) {
|
||||
if (this.shouldValidate) {
|
||||
this.$emit('update:error', val);
|
||||
}
|
||||
},
|
||||
value: function value(val) {
|
||||
this.lazyValue = val;
|
||||
}
|
||||
},
|
||||
beforeMount: function beforeMount() {
|
||||
this.validate();
|
||||
},
|
||||
created: function created() {
|
||||
this.form && this.form.register(this);
|
||||
},
|
||||
beforeDestroy: function beforeDestroy() {
|
||||
this.form && this.form.unregister(this);
|
||||
},
|
||||
|
||||
methods: {
|
||||
genInternalMessages: function genInternalMessages(messages) {
|
||||
if (!messages) return [];else if (Array.isArray(messages)) return messages;else return [messages];
|
||||
},
|
||||
|
||||
/** @public */
|
||||
reset: function reset() {
|
||||
this.isResetting = true;
|
||||
this.internalValue = Array.isArray(this.internalValue) ? [] : undefined;
|
||||
},
|
||||
|
||||
/** @public */
|
||||
resetValidation: function resetValidation() {
|
||||
this.isResetting = true;
|
||||
},
|
||||
|
||||
/** @public */
|
||||
validate: function validate() {
|
||||
var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||
var value = arguments[1];
|
||||
|
||||
var errorBucket = [];
|
||||
value = value || this.internalValue;
|
||||
if (force) this.hasInput = this.hasFocused = true;
|
||||
for (var index = 0; index < this.rules.length; index++) {
|
||||
var rule = this.rules[index];
|
||||
var valid = typeof rule === 'function' ? rule(value) : rule;
|
||||
if (typeof valid === 'string') {
|
||||
errorBucket.push(valid);
|
||||
} else if (typeof valid !== 'boolean') {
|
||||
(0, _console.consoleError)('Rules should return a string or boolean, received \'' + (typeof valid === 'undefined' ? 'undefined' : _typeof(valid)) + '\' instead', this);
|
||||
}
|
||||
}
|
||||
this.errorBucket = errorBucket;
|
||||
this.valid = errorBucket.length === 0;
|
||||
return this.valid;
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=validatable.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user