This commit is contained in:
darenhsu
2022-07-17 13:16:16 +08:00
parent 84759556ff
commit befd344ab0
28070 changed files with 4008428 additions and 1 deletions
+208
View File
@@ -0,0 +1,208 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _delayable = _interopRequireDefault(require("../delayable"));
var _toggleable = _interopRequireDefault(require("../toggleable"));
var _mixins = _interopRequireDefault(require("../../util/mixins"));
var _helpers = require("../../util/helpers");
var _console = require("../../util/console");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var baseMixins = (0, _mixins.default)(_delayable.default, _toggleable.default);
/* @vue/component */
var _default = baseMixins.extend({
name: 'activatable',
props: {
activator: {
default: null,
validator: function validator(val) {
return ['string', 'object'].includes(_typeof(val));
}
},
disabled: Boolean,
internalActivator: Boolean,
openOnHover: Boolean,
openOnFocus: Boolean
},
data: function data() {
return {
// Do not use this directly, call getActivator() instead
activatorElement: null,
activatorNode: [],
events: ['click', 'mouseenter', 'mouseleave', 'focus'],
listeners: {}
};
},
watch: {
activator: 'resetActivator',
openOnFocus: 'resetActivator',
openOnHover: 'resetActivator'
},
mounted: function mounted() {
var slotType = (0, _helpers.getSlotType)(this, 'activator', true);
if (slotType && ['v-slot', 'normal'].includes(slotType)) {
(0, _console.consoleError)("The activator slot must be bound, try '<template v-slot:activator=\"{ on }\"><v-btn v-on=\"on\">'", this);
}
this.addActivatorEvents();
},
beforeDestroy: function beforeDestroy() {
this.removeActivatorEvents();
},
methods: {
addActivatorEvents: function addActivatorEvents() {
if (!this.activator || this.disabled || !this.getActivator()) return;
this.listeners = this.genActivatorListeners();
var keys = Object.keys(this.listeners);
for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
var key = _keys[_i];
this.getActivator().addEventListener(key, this.listeners[key]);
}
},
genActivator: function genActivator() {
var node = (0, _helpers.getSlot)(this, 'activator', Object.assign(this.getValueProxy(), {
on: this.genActivatorListeners(),
attrs: this.genActivatorAttributes()
})) || [];
this.activatorNode = node;
return node;
},
genActivatorAttributes: function genActivatorAttributes() {
return {
role: 'button',
'aria-haspopup': true,
'aria-expanded': String(this.isActive)
};
},
genActivatorListeners: function genActivatorListeners() {
var _this = this;
if (this.disabled) return {};
var listeners = {};
if (this.openOnHover) {
listeners.mouseenter = function (e) {
_this.getActivator(e);
_this.runDelay('open');
};
listeners.mouseleave = function (e) {
_this.getActivator(e);
_this.runDelay('close');
};
} else {
listeners.click = function (e) {
var activator = _this.getActivator(e);
if (activator) activator.focus();
e.stopPropagation();
_this.isActive = !_this.isActive;
};
}
if (this.openOnFocus) {
listeners.focus = function (e) {
_this.getActivator(e);
e.stopPropagation();
_this.isActive = !_this.isActive;
};
}
return listeners;
},
getActivator: function getActivator(e) {
// If we've already fetched the activator, re-use
if (this.activatorElement) return this.activatorElement;
var activator = null;
if (this.activator) {
var target = this.internalActivator ? this.$el : document;
if (typeof this.activator === 'string') {
// Selector
activator = target.querySelector(this.activator);
} else if (this.activator.$el) {
// Component (ref)
activator = this.activator.$el;
} else {
// HTMLElement | Element
activator = this.activator;
}
} else if (this.activatorNode.length === 1 || this.activatorNode.length && !e) {
// Use the contents of the activator slot
// There's either only one element in it or we
// don't have a click event to use as a last resort
var vm = this.activatorNode[0].componentInstance;
if (vm && vm.$options.mixins && // Activatable is indirectly used via Menuable
vm.$options.mixins.some(function (m) {
return m.options && ['activatable', 'menuable'].includes(m.options.name);
})) {
// Activator is actually another activatible component, use its activator (#8846)
activator = vm.getActivator();
} else {
activator = this.activatorNode[0].elm;
}
} else if (e) {
// Activated by a click or focus event
activator = e.currentTarget || e.target;
}
this.activatorElement = activator;
return this.activatorElement;
},
getContentSlot: function getContentSlot() {
return (0, _helpers.getSlot)(this, 'default', this.getValueProxy(), true);
},
getValueProxy: function getValueProxy() {
var self = this;
return {
get value() {
return self.isActive;
},
set value(isActive) {
self.isActive = isActive;
}
};
},
removeActivatorEvents: function removeActivatorEvents() {
if (!this.activator || !this.activatorElement) return;
var keys = Object.keys(this.listeners);
for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {
var key = _keys2[_i2];
this.activatorElement.removeEventListener(key, this.listeners[key]);
}
this.listeners = {};
},
resetActivator: function resetActivator() {
this.removeActivatorEvents();
this.activatorElement = null;
this.getActivator();
this.addActivatorEvents();
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
+74
View File
@@ -0,0 +1,74 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = applicationable;
var _positionable = require("../positionable");
var _mixins = _interopRequireDefault(require("../../util/mixins"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Util
function applicationable(value) {
var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
/* @vue/component */
return (0, _mixins.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.unregister(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.register(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.unregister(this._uid, this.applicationProperty);
},
updateApplication: function updateApplication() {
return 0;
}
}
});
}
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/applicationable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAIA;;;;AADA;AAGc,SAAU,eAAV,CAA2B,KAA3B,EAAmE;AAAA,MAArB,MAAqB,uEAAF,EAAE;;AAC/E;AACA,SAAO,qBAAO,2BAAoB,CAAC,UAAD,EAAa,OAAb,CAApB,CAAP,EAAmD,MAAnD,CAA0D;AAC/D,IAAA,IAAI,EAAE,iBADyD;AAG/D,IAAA,KAAK,EAAE;AACL,MAAA,GAAG,EAAE;AADA,KAHwD;AAO/D,IAAA,QAAQ,EAAE;AACR,MAAA,mBADQ,iCACW;AACjB,eAAO,KAAP;AACD;AAHO,KAPqD;AAa/D,IAAA,KAAK,EAAE;AACL;AACA;AACA,MAAA,GAHK,eAGA,CAHA,EAGY,IAHZ,EAGyB;AAC5B,QAAA,IAAI,GACA,KAAK,iBAAL,CAAuB,IAAvB,CADA,GAEA,KAAK,UAAL,EAFJ;AAGD,OAPI;AAQL,MAAA,mBARK,+BAQgB,MARhB,EAQwB,MARxB,EAQ8B;AACjC,aAAK,QAAL,CAAc,WAAd,CAA0B,UAA1B,CAAqC,KAAK,IAA1C,EAAgD,MAAhD;AACD;AAVI,KAbwD;AA0B/D,IAAA,SA1B+D,uBA0BtD;AACP,WAAK,UAAL;AACD,KA5B8D;AA8B/D,IAAA,OA9B+D,qBA8BxD;AACL,WAAK,IAAI,CAAC,GAAG,CAAR,EAAW,MAAM,GAAG,MAAM,CAAC,MAAhC,EAAwC,CAAC,GAAG,MAA5C,EAAoD,CAAC,EAArD,EAAyD;AACvD,aAAK,MAAL,CAAY,MAAM,CAAC,CAAD,CAAlB,EAAuB,KAAK,UAA5B;AACD;;AACD,WAAK,UAAL;AACD,KAnC8D;AAqC/D,IAAA,OArC+D,qBAqCxD;AACL,WAAK,UAAL;AACD,KAvC8D;AAyC/D,IAAA,WAzC+D,yBAyCpD;AACT,WAAK,iBAAL;AACD,KA3C8D;AA6C/D,IAAA,SA7C+D,uBA6CtD;AACP,WAAK,iBAAL;AACD,KA/C8D;AAiD/D,IAAA,OAAO,EAAE;AACP,MAAA,UADO,wBACG;AACR,YAAI,CAAC,KAAK,GAAV,EAAe;AAEf,aAAK,QAAL,CAAc,WAAd,CAA0B,QAA1B,CACE,KAAK,IADP,EAEE,KAAK,mBAFP,EAGE,KAAK,iBAAL,EAHF;AAKD,OATM;AAUP,MAAA,iBAVO,+BAUyB;AAAA,YAAb,KAAa,uEAAL,KAAK;AAC9B,YAAI,CAAC,KAAD,IAAU,CAAC,KAAK,GAApB,EAAyB;AAEzB,aAAK,QAAL,CAAc,WAAd,CAA0B,UAA1B,CACE,KAAK,IADP,EAEE,KAAK,mBAFP;AAID,OAjBM;AAkBP,MAAA,iBAAiB,EAAE;AAAA,eAAM,CAAN;AAAA;AAlBZ;AAjDsD,GAA1D,CAAP;AAsED","sourcesContent":["import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/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.unregister(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.register(\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.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}
+50
View File
@@ -0,0 +1,50 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* This mixin provides `attrs$` and `listeners$` to work around
* vue bug https://github.com/vuejs/vue/issues/10115
*/
function makeWatcher(property) {
return function (val, oldVal) {
for (var attr in oldVal) {
if (!Object.prototype.hasOwnProperty.call(val, attr)) {
this.$delete(this.$data[property], attr);
}
}
for (var _attr in val) {
this.$set(this.$data[property], _attr, val[_attr]);
}
};
}
var _default = _vue.default.extend({
data: function data() {
return {
attrs$: {},
listeners$: {}
};
},
created: function created() {
// Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115
// Make sure to use `attrs$` instead of `$attrs` (confusing right?)
this.$watch('$attrs', makeWatcher('attrs$'), {
immediate: true
});
this.$watch('$listeners', makeWatcher('listeners$'), {
immediate: true
});
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/binds-attrs/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;AAEA;;;;AAKA,SAAS,WAAT,CAAsB,QAAtB,EAAsC;AACpC,SAAO,UAAqB,GAArB,EAA0B,MAA1B,EAAgC;AACrC,SAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;AACzB,UAAI,CAAC,MAAM,CAAC,SAAP,CAAiB,cAAjB,CAAgC,IAAhC,CAAqC,GAArC,EAA0C,IAA1C,CAAL,EAAsD;AACpD,aAAK,OAAL,CAAa,KAAK,KAAL,CAAW,QAAX,CAAb,EAAmC,IAAnC;AACD;AACF;;AACD,SAAK,IAAM,KAAX,IAAmB,GAAnB,EAAwB;AACtB,WAAK,IAAL,CAAU,KAAK,KAAL,CAAW,QAAX,CAAV,EAAgC,KAAhC,EAAsC,GAAG,CAAC,KAAD,CAAzC;AACD;AACF,GATD;AAUD;;eAEc,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,MAAM,EAAE,EADG;AAEX,MAAA,UAAU,EAAE;AAFD,KAAP;AAAA,GADkB;AAMxB,EAAA,OANwB,qBAMjB;AACL;AACA;AACA,SAAK,MAAL,CAAY,QAAZ,EAAsB,WAAW,CAAC,QAAD,CAAjC,EAA6C;AAAE,MAAA,SAAS,EAAE;AAAb,KAA7C;AACA,SAAK,MAAL,CAAY,YAAZ,EAA0B,WAAW,CAAC,YAAD,CAArC,EAAqD;AAAE,MAAA,SAAS,EAAE;AAAb,KAArD;AACD;AAXuB,CAAX,C","sourcesContent":["import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType<Vue> & WatchHandler<any> {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary<string>,\n listeners$: {} as Dictionary<Function | Function[]>,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+61
View File
@@ -0,0 +1,61 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _console = require("../../util/console");
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Utilities
// Types
/**
* 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 */
var _default = _vue.default.extend().extend({
name: 'bootable',
props: {
eager: Boolean
},
data: function data() {
return {
isBooted: false
};
},
computed: {
hasContent: function hasContent() {
return this.isBooted || this.eager || this.isActive;
}
},
watch: {
isActive: function isActive() {
this.isBooted = true;
}
},
created: function created() {
/* istanbul ignore next */
if ('lazy' in this.$attrs) {
(0, _console.removed)('lazy', this);
}
},
methods: {
showLazyContent: function showLazyContent(content) {
return this.hasContent && content ? content() : [this.$createElement()];
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/bootable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;;;AAJA;AAGA;;AAMA;;;;;;;;;AAQA;eACe,aAAI,MAAJ,GAA+B,MAA/B,CAAsC;AACnD,EAAA,IAAI,EAAE,UAD6C;AAGnD,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE;AADF,GAH4C;AAOnD,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,QAAQ,EAAE;AADC,KAAP;AAAA,GAP6C;AAWnD,EAAA,QAAQ,EAAE;AACR,IAAA,UADQ,wBACE;AACR,aAAO,KAAK,QAAL,IAAiB,KAAK,KAAtB,IAA+B,KAAK,QAA3C;AACD;AAHO,GAXyC;AAiBnD,EAAA,KAAK,EAAE;AACL,IAAA,QADK,sBACG;AACN,WAAK,QAAL,GAAgB,IAAhB;AACD;AAHI,GAjB4C;AAuBnD,EAAA,OAvBmD,qBAuB5C;AACL;AACA,QAAI,UAAU,KAAK,MAAnB,EAA2B;AACzB,4BAAQ,MAAR,EAAgB,IAAhB;AACD;AACF,GA5BkD;AA8BnD,EAAA,OAAO,EAAE;AACP,IAAA,eADO,2BACU,OADV,EACiC;AACtC,aAAQ,KAAK,UAAL,IAAmB,OAApB,GAA+B,OAAO,EAAtC,GAA2C,CAAC,KAAK,cAAL,EAAD,CAAlD;AACD;AAHM;AA9B0C,CAAtC,C","sourcesContent":["// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\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 eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+32
View File
@@ -0,0 +1,32 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _VItemGroup = require("../../components/VItemGroup/VItemGroup");
// Extensions
/* @vue/component */
var _default = _VItemGroup.BaseItemGroup.extend({
name: 'button-group',
provide: function provide() {
return {
btnToggle: this
};
},
computed: {
classes: function classes() {
return _VItemGroup.BaseItemGroup.options.computed.classes.call(this);
}
},
methods: {
// Isn't being passed down through types
genData: _VItemGroup.BaseItemGroup.options.methods.genData
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/button-group/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AADA;;AAGA;eACe,0BAAc,MAAd,CAAqB;AAClC,EAAA,IAAI,EAAE,cAD4B;AAGlC,EAAA,OAHkC,qBAG3B;AACL,WAAO;AACL,MAAA,SAAS,EAAE;AADN,KAAP;AAGD,GAPiC;AASlC,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL,aAAO,0BAAc,OAAd,CAAsB,QAAtB,CAA+B,OAA/B,CAAuC,IAAvC,CAA4C,IAA5C,CAAP;AACD;AAHO,GATwB;AAelC,EAAA,OAAO,EAAE;AACP;AACA,IAAA,OAAO,EAAE,0BAAc,OAAd,CAAsB,OAAtB,CAA8B;AAFhC;AAfyB,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 computed: {\n classes (): object {\n return BaseItemGroup.options.computed.classes.call(this)\n },\n },\n\n methods: {\n // Isn't being passed down through types\n genData: BaseItemGroup.options.methods.genData,\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+105
View File
@@ -0,0 +1,105 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
var _console = require("../../util/console");
var _colorUtils = require("../../util/colorUtils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(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"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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; }
var _default = _vue.default.extend({
name: 'colorable',
props: {
color: String
},
methods: {
setBackgroundColor: function setBackgroundColor(color) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (typeof data.style === 'string') {
// istanbul ignore next
(0, _console.consoleError)('style must be an object', this); // istanbul ignore next
return data;
}
if (typeof data.class === 'string') {
// istanbul ignore next
(0, _console.consoleError)('class must be an object', this); // istanbul ignore next
return data;
}
if ((0, _colorUtils.isCssColor)(color)) {
data.style = _objectSpread({}, data.style, {
'background-color': "".concat(color),
'border-color': "".concat(color)
});
} else if (color) {
data.class = _objectSpread({}, data.class, _defineProperty({}, color, true));
}
return data;
},
setTextColor: function setTextColor(color) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (typeof data.style === 'string') {
// istanbul ignore next
(0, _console.consoleError)('style must be an object', this); // istanbul ignore next
return data;
}
if (typeof data.class === 'string') {
// istanbul ignore next
(0, _console.consoleError)('class must be an object', this); // istanbul ignore next
return data;
}
if ((0, _colorUtils.isCssColor)(color)) {
data.style = _objectSpread({}, data.style, {
color: "".concat(color),
'caret-color': "".concat(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 = _objectSpread({}, data.class, _defineProperty({}, colorName + '--text', true));
if (colorModifier) {
data.class['text--' + colorModifier] = true;
}
}
return data;
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/colorable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;;;;;;;;;;;;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,WADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE;AADF,GAHiB;AAOxB,EAAA,OAAO,EAAE;AACP,IAAA,kBADO,8BACa,KADb,EACyD;AAAA,UAApB,IAAoB,uEAAF,EAAE;;AAC9D,UAAI,OAAO,IAAI,CAAC,KAAZ,KAAsB,QAA1B,EAAoC;AAClC;AACA,mCAAa,yBAAb,EAAwC,IAAxC,EAFkC,CAGlC;;AACA,eAAO,IAAP;AACD;;AACD,UAAI,OAAO,IAAI,CAAC,KAAZ,KAAsB,QAA1B,EAAoC;AAClC;AACA,mCAAa,yBAAb,EAAwC,IAAxC,EAFkC,CAGlC;;AACA,eAAO,IAAP;AACD;;AACD,UAAI,4BAAW,KAAX,CAAJ,EAAuB;AACrB,QAAA,IAAI,CAAC,KAAL,qBACK,IAAI,CAAC,KADV;AAEE,wCAAuB,KAAvB,CAFF;AAGE,oCAAmB,KAAnB;AAHF;AAKD,OAND,MAMO,IAAI,KAAJ,EAAW;AAChB,QAAA,IAAI,CAAC,KAAL,qBACK,IAAI,CAAC,KADV,sBAEG,KAFH,EAEW,IAFX;AAID;;AAED,aAAO,IAAP;AACD,KA5BM;AA8BP,IAAA,YA9BO,wBA8BO,KA9BP,EA8BmD;AAAA,UAApB,IAAoB,uEAAF,EAAE;;AACxD,UAAI,OAAO,IAAI,CAAC,KAAZ,KAAsB,QAA1B,EAAoC;AAClC;AACA,mCAAa,yBAAb,EAAwC,IAAxC,EAFkC,CAGlC;;AACA,eAAO,IAAP;AACD;;AACD,UAAI,OAAO,IAAI,CAAC,KAAZ,KAAsB,QAA1B,EAAoC;AAClC;AACA,mCAAa,yBAAb,EAAwC,IAAxC,EAFkC,CAGlC;;AACA,eAAO,IAAP;AACD;;AACD,UAAI,4BAAW,KAAX,CAAJ,EAAuB;AACrB,QAAA,IAAI,CAAC,KAAL,qBACK,IAAI,CAAC,KADV;AAEE,UAAA,KAAK,YAAK,KAAL,CAFP;AAGE,mCAAkB,KAAlB;AAHF;AAKD,OAND,MAMO,IAAI,KAAJ,EAAW;AAAA,oCACmB,KAAK,CAAC,QAAN,GAAiB,IAAjB,GAAwB,KAAxB,CAA8B,GAA9B,EAAmC,CAAnC,CADnB;AAAA;AAAA,YACT,SADS;AAAA,YACE,aADF;;AAEhB,QAAA,IAAI,CAAC,KAAL,qBACK,IAAI,CAAC,KADV,sBAEG,SAAS,GAAG,QAFf,EAE0B,IAF1B;;AAIA,YAAI,aAAJ,EAAmB;AACjB,UAAA,IAAI,CAAC,KAAL,CAAW,WAAW,aAAtB,IAAuC,IAAvC;AACD;AACF;;AACD,aAAO,IAAP;AACD;AA5DM;AAPe,CAAX,C","sourcesContent":["import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\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 (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\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 (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\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":"","file":"index.js"}
+25
View File
@@ -0,0 +1,25 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
var _helpers = require("../../util/helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = _vue.default.extend({
name: 'comparable',
props: {
valueComparator: {
type: Function,
default: _helpers.deepEqual
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/comparable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;AACA;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAExB,EAAA,KAAK,EAAE;AACL,IAAA,eAAe,EAAE;AACf,MAAA,IAAI,EAAE,QADS;AAEf,MAAA,OAAO,EAAE;AAFM;AADZ;AAFiB,CAAX,C","sourcesContent":["import Vue, { PropType } from 'vue'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+65
View File
@@ -0,0 +1,65 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Delayable
*
* @mixin
*
* Changes the open or close delay time for elements
*/
var _default = _vue.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["".concat(type, "Delay")], 10);
this["".concat(type, "Timeout")] = setTimeout(cb || function () {
_this.isActive = {
open: true,
close: false
}[type];
}, delay);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/delayable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;AAEA;;;;;;;eAOe,aAAI,MAAJ,GAA2C,MAA3C,CAAkD;AAC/D,EAAA,IAAI,EAAE,WADyD;AAG/D,EAAA,KAAK,EAAE;AACL,IAAA,SAAS,EAAE;AACT,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADG;AAET,MAAA,OAAO,EAAE;AAFA,KADN;AAKL,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADI;AAEV,MAAA,OAAO,EAAE;AAFC;AALP,GAHwD;AAc/D,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,WAAW,EAAE,SADF;AAEX,MAAA,YAAY,EAAE;AAFH,KAAP;AAAA,GAdyD;AAmB/D,EAAA,OAAO,EAAE;AACP;;;AAGA,IAAA,UAJO,wBAIG;AACR,MAAA,YAAY,CAAC,KAAK,WAAN,CAAZ;AACA,MAAA,YAAY,CAAC,KAAK,YAAN,CAAZ;AACD,KAPM;;AAQP;;;AAGA,IAAA,QAXO,oBAWG,IAXH,EAW2B,EAX3B,EAW0C;AAAA;;AAC/C,WAAK,UAAL;AAEA,UAAM,KAAK,GAAG,QAAQ,CAAE,eAAgB,IAAhB,WAAF,EAAgC,EAAhC,CAAtB;AAEE,qBAAgB,IAAhB,gBAAiC,UAAU,CAAC,EAAE,IAAK,YAAK;AACxD,QAAA,KAAI,CAAC,QAAL,GAAgB;AAAE,UAAA,IAAI,EAAE,IAAR;AAAc,UAAA,KAAK,EAAE;AAArB,UAA6B,IAA7B,CAAhB;AACD,OAF4C,EAEzC,KAFyC,CAA3C;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":"","file":"index.js"}
+83
View File
@@ -0,0 +1,83 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _mixins = _interopRequireDefault(require("../../util/mixins"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
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 */
var _default = (0, _mixins.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.$el);
result.push.apply(result, _toConsumableArray(this.getOpenDependentElements()));
return result;
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/dependent/index.ts"],"names":[],"mappings":";;;;;;;AAEA;;;;;;;;;;;;AAgBA,SAAS,cAAT,CAAyB,QAAzB,EAAwC;AACtC,MAAM,OAAO,GAAG,EAAhB;;AACA,OAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,QAAQ,CAAC,MAArC,EAA6C,KAAK,EAAlD,EAAsD;AACpD,QAAM,KAAK,GAAG,QAAQ,CAAC,KAAD,CAAtB;;AACA,QAAI,KAAK,CAAC,QAAN,IAAkB,KAAK,CAAC,WAA5B,EAAyC;AACvC,MAAA,OAAO,CAAC,IAAR,CAAa,KAAb;AACD,KAFD,MAEO;AACL,MAAA,OAAO,CAAC,IAAR,OAAA,OAAO,qBAAS,cAAc,CAAC,KAAK,CAAC,SAAP,CAAvB,EAAP;AACD;AACF;;AAED,SAAO,OAAP;AACD;AAED;;;eACe,uBAAkB,MAAlB,CAAyB;AACtC,EAAA,IAAI,EAAE,WADgC;AAGtC,EAAA,IAHsC,kBAGlC;AACF,WAAO;AACL,MAAA,eAAe,EAAE,IADZ;AAEL,MAAA,QAAQ,EAAE,KAFL;AAGL,MAAA,WAAW,EAAE;AAHR,KAAP;AAKD,GATqC;AAWtC,EAAA,KAAK,EAAE;AACL,IAAA,QADK,oBACK,GADL,EACQ;AACX,UAAI,GAAJ,EAAS;AAET,UAAM,cAAc,GAAG,KAAK,iBAAL,EAAvB;;AACA,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;AAC1D,QAAA,cAAc,CAAC,KAAD,CAAd,CAAsB,QAAtB,GAAiC,KAAjC;AACD;AACF;AARI,GAX+B;AAsBtC,EAAA,OAAO,EAAE;AACP,IAAA,iBADO,+BACU;AACf,UAAI,KAAK,eAAT,EAA0B,OAAO,cAAc,CAAC,KAAK,SAAN,CAArB;AAE1B,aAAO,EAAP;AACD,KALM;AAMP,IAAA,wBANO,sCAMiB;AACtB,UAAM,MAAM,GAAG,EAAf;AACA,UAAM,cAAc,GAAG,KAAK,iBAAL,EAAvB;;AAEA,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;AAC1D,QAAA,MAAM,CAAC,IAAP,OAAA,MAAM,qBAAS,cAAc,CAAC,KAAD,CAAd,CAAsB,6BAAtB,EAAT,EAAN;AACD;;AAED,aAAO,MAAP;AACD,KAfM;AAgBP,IAAA,6BAhBO,2CAgBsB;AAC3B,UAAM,MAAM,GAAG,CAAC,KAAK,GAAN,CAAf;AACA,UAAI,KAAK,KAAL,CAAW,OAAf,EAAwB,MAAM,CAAC,IAAP,CAAY,KAAK,KAAL,CAAW,OAAvB;AACxB,UAAI,KAAK,OAAT,EAAkB,MAAM,CAAC,IAAP,CAAY,KAAK,OAAL,CAAa,GAAzB;AAClB,MAAA,MAAM,CAAC,IAAP,OAAA,MAAM,qBAAS,KAAK,wBAAL,EAAT,EAAN;AAEA,aAAO,MAAP;AACD;AAvBM;AAtB6B,CAAzB,C","sourcesContent":["import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\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.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+134
View File
@@ -0,0 +1,134 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _bootable = _interopRequireDefault(require("../bootable"));
var _helpers = require("../../util/helpers");
var _mixins = _interopRequireDefault(require("../../util/mixins"));
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 _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function validateAttachTarget(val) {
var type = _typeof(val);
if (type === 'boolean' || type === 'string') return true;
return val.nodeType === Node.ELEMENT_NODE;
}
/* @vue/component */
var _default = (0, _mixins.default)(_bootable.default).extend({
name: 'detachable',
props: {
attach: {
default: false,
validator: validateAttachTarget
},
contentClass: {
type: String,
default: ''
}
},
data: function data() {
return {
activatorNode: null,
hasDetached: false
};
},
watch: {
attach: function attach() {
this.hasDetached = false;
this.initDetach();
},
hasContent: function hasContent() {
this.$nextTick(this.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) {
if (!node.elm) return;
if (!_this.$el.parentNode) return;
var target = _this.$el === _this.$el.parentNode.firstChild ? _this.$el : _this.$el.nextSibling;
_this.$el.parentNode.insertBefore(node.elm, target);
});
}
});
},
mounted: function mounted() {
this.hasContent && this.initDetach();
},
deactivated: function deactivated() {
this.isActive = false;
},
beforeDestroy: function beforeDestroy() {
// IE11 Fix
try {
if (this.$refs.content && this.$refs.content.parentNode) {
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 && node.elm.parentNode.removeChild(node.elm);
});
}
} catch (e) {
console.log(e);
}
},
methods: {
getScopeIdAttrs: function getScopeIdAttrs() {
var scopeId = (0, _helpers.getObjectValueByPath)(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;
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 ".concat(this.attach || '[data-app]'), this);
return;
}
target.appendChild(this.$refs.content);
this.hasDetached = true;
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
+33
View File
@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("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; }
var _default = _vue.default.extend({
name: 'elevatable',
props: {
elevation: [Number, String]
},
computed: {
computedElevation: function computedElevation() {
return this.elevation;
},
elevationClasses: function elevationClasses() {
var elevation = this.computedElevation;
if (elevation == null) return {};
if (isNaN(parseInt(elevation))) return {};
return _defineProperty({}, "elevation-".concat(this.elevation), true);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/elevatable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,SAAS,EAAE,CAAC,MAAD,EAAS,MAAT;AADN,GAHiB;AAOxB,EAAA,QAAQ,EAAE;AACR,IAAA,iBADQ,+BACS;AACf,aAAO,KAAK,SAAZ;AACD,KAHO;AAIR,IAAA,gBAJQ,8BAIQ;AACd,UAAM,SAAS,GAAG,KAAK,iBAAvB;AAEA,UAAI,SAAS,IAAI,IAAjB,EAAuB,OAAO,EAAP;AACvB,UAAI,KAAK,CAAC,QAAQ,CAAC,SAAD,CAAT,CAAT,EAAgC,OAAO,EAAP;AAChC,qDAAuB,KAAK,SAA5B,GAA0C,IAA1C;AACD;AAVO;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 const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+24
View File
@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* @vue/component */
var _default = _vue.default.extend({
name: 'filterable',
props: {
noDataText: {
type: String,
default: '$vuetify.noDataText'
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/filterable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;AAEA;eACe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE,MADI;AAEV,MAAA,OAAO,EAAE;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":"","file":"index.js"}
+58
View File
@@ -0,0 +1,58 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.factory = factory;
exports.default = void 0;
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; }
function factory(namespace, child, parent) {
// TODO: ts 3.4 broke directly returning this
var R = (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');
}
}
});
return R;
}
/* eslint-disable-next-line no-redeclare */
var Groupable = factory('itemGroup');
var _default2 = Groupable;
exports.default = _default2;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/groupable/index.ts"],"names":[],"mappings":";;;;;;;;AACA;;;;AAgBM,SAAU,OAAV,CACJ,SADI,EAEJ,KAFI,EAGJ,MAHI,EAGW;AAEf;AACA,MAAM,CAAC,GAAG,yBAAwB,SAAxB,EAAmC,KAAnC,EAA0C,MAA1C,EAAkD,MAAlD,CAAyD;AACjE,IAAA,IAAI,EAAE,WAD2D;AAGjE,IAAA,KAAK,EAAE;AACL,MAAA,WAAW,EAAE;AACX,QAAA,IAAI,EAAE,MADK;AAEX,QAAA,OAFW,sBAEJ;AACL,cAAI,CAAC,KAAK,SAAL,CAAL,EAAsB,OAAO,SAAP;AAEtB,iBAAO,KAAK,SAAL,EAAgB,WAAvB;AACD;AANU,OADR;AASL,MAAA,QAAQ,EAAE;AATL,KAH0D;AAejE,IAAA,IAfiE,kBAe7D;AACF,aAAO;AACL,QAAA,QAAQ,EAAE;AADL,OAAP;AAGD,KAnBgE;AAqBjE,IAAA,QAAQ,EAAE;AACR,MAAA,YADQ,0BACI;AACV,YAAI,CAAC,KAAK,WAAV,EAAuB,OAAO,EAAP;AAEvB,mCACG,KAAK,WADR,EACsB,KAAK,QAD3B;AAGD;AAPO,KArBuD;AA+BjE,IAAA,OA/BiE,qBA+B1D;AACL,WAAK,SAAL,KAAoB,KAAK,SAAL,EAAwB,QAAxB,CAAiC,IAAjC,CAApB;AACD,KAjCgE;AAmCjE,IAAA,aAnCiE,2BAmCpD;AACX,WAAK,SAAL,KAAoB,KAAK,SAAL,EAAwB,UAAxB,CAAmC,IAAnC,CAApB;AACD,KArCgE;AAuCjE,IAAA,OAAO,EAAE;AACP,MAAA,MADO,oBACD;AACJ,aAAK,KAAL,CAAW,QAAX;AACD;AAHM;AAvCwD,GAAzD,CAAV;AA8CA,SAAO,CAAP;AACD;AAED;;;AACA,IAAM,SAAS,GAAG,OAAO,CAAC,WAAD,CAAzB;gBAEe,S","sourcesContent":["// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n/* eslint-disable-next-line no-use-before-define */\nexport type Groupable<T extends string, C extends VueConstructor | null = null> = VueConstructor<ExtractVue<Registrable<T, C>> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory<T extends string, C extends VueConstructor | null = null> (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable<T, C> {\n // TODO: ts 3.4 broke directly returning this\n const R = RegistrableInject<T, C>(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 return R\n}\n\n/* eslint-disable-next-line no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n"],"sourceRoot":"","file":"index.js"}
+56
View File
@@ -0,0 +1,56 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = intersectable;
var _intersect = _interopRequireDefault(require("../../directives/intersect"));
var _console = require("../../util/console");
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Directives
// Utilities
// Types
function intersectable(options) {
if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
// do nothing because intersection observer is not available
return _vue.default.extend({
name: 'intersectable'
});
}
return _vue.default.extend({
name: 'intersectable',
mounted: function mounted() {
_intersect.default.inserted(this.$el, {
name: 'intersect',
value: this.onObserve
});
},
destroyed: function destroyed() {
_intersect.default.unbind(this.$el);
},
methods: {
onObserve: function onObserve(entries, observer, isIntersecting) {
if (!isIntersecting) return;
for (var i = 0, length = options.onVisible.length; i < length; i++) {
var callback = this[options.onVisible[i]];
if (typeof callback === 'function') {
callback();
continue;
}
(0, _console.consoleWarn)(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options');
}
}
}
});
}
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/intersectable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AAGA;;;;AAPA;AAGA;AAGA;AAGc,SAAU,aAAV,CAAyB,OAAzB,EAAyD;AACrE,MAAI,OAAO,MAAP,KAAkB,WAAlB,IAAiC,EAAE,0BAA0B,MAA5B,CAArC,EAA0E;AACxE;AACA,WAAO,aAAI,MAAJ,CAAW;AAAE,MAAA,IAAI,EAAE;AAAR,KAAX,CAAP;AACD;;AAED,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,eADU;AAGhB,IAAA,OAHgB,qBAGT;AACL,yBAAU,QAAV,CAAmB,KAAK,GAAxB,EAA4C;AAC1C,QAAA,IAAI,EAAE,WADoC;AAE1C,QAAA,KAAK,EAAE,KAAK;AAF8B,OAA5C;AAID,KARe;AAUhB,IAAA,SAVgB,uBAUP;AACP,yBAAU,MAAV,CAAiB,KAAK,GAAtB;AACD,KAZe;AAchB,IAAA,OAAO,EAAE;AACP,MAAA,SADO,qBACI,OADJ,EAC0C,QAD1C,EAC0E,cAD1E,EACiG;AACtG,YAAI,CAAC,cAAL,EAAqB;;AAErB,aAAK,IAAI,CAAC,GAAG,CAAR,EAAW,MAAM,GAAG,OAAO,CAAC,SAAR,CAAkB,MAA3C,EAAmD,CAAC,GAAG,MAAvD,EAA+D,CAAC,EAAhE,EAAoE;AAClE,cAAM,QAAQ,GAAI,KAAa,OAAO,CAAC,SAAR,CAAkB,CAAlB,CAAb,CAAlB;;AAEA,cAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAClC,YAAA,QAAQ;AACR;AACD;;AAED,oCAAY,OAAO,CAAC,SAAR,CAAkB,CAAlB,IAAuB,wFAAnC;AACD;AACF;AAdM;AAdO,GAAX,CAAP;AA+BD","sourcesContent":["// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {\n // do nothing because intersection observer is not available\n return Vue.extend({ name: 'intersectable' })\n }\n\n return Vue.extend({\n name: 'intersectable',\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n })\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}
+53
View File
@@ -0,0 +1,53 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
var _VProgressLinear = _interopRequireDefault(require("../../components/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 */
var _default = _vue.default.extend().extend({
name: 'loadable',
props: {
loading: {
type: [Boolean, String],
default: false
},
loaderHeight: {
type: [Number, String],
default: 2
}
},
methods: {
genProgress: function genProgress() {
if (this.loading === false) return null;
return this.$slots.progress || this.$createElement(_VProgressLinear.default, {
props: {
absolute: true,
color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,
height: this.loaderHeight,
indeterminate: true
}
});
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/loadable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;AACA;;;;AAMA;;;;;;;;;;AASA;eACe,aAAI,MAAJ,GAAwB,MAAxB,CAA+B;AAC5C,EAAA,IAAI,EAAE,UADsC;AAG5C,EAAA,KAAK,EAAE;AACL,IAAA,OAAO,EAAE;AACP,MAAA,IAAI,EAAE,CAAC,OAAD,EAAU,MAAV,CADC;AAEP,MAAA,OAAO,EAAE;AAFF,KADJ;AAKL,IAAA,YAAY,EAAE;AACZ,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADM;AAEZ,MAAA,OAAO,EAAE;AAFG;AALT,GAHqC;AAc5C,EAAA,OAAO,EAAE;AACP,IAAA,WADO,yBACI;AACT,UAAI,KAAK,OAAL,KAAiB,KAArB,EAA4B,OAAO,IAAP;AAE5B,aAAO,KAAK,MAAL,CAAY,QAAZ,IAAwB,KAAK,cAAL,CAAoB,wBAApB,EAAqC;AAClE,QAAA,KAAK,EAAE;AACL,UAAA,QAAQ,EAAE,IADL;AAEL,UAAA,KAAK,EAAG,KAAK,OAAL,KAAiB,IAAjB,IAAyB,KAAK,OAAL,KAAiB,EAA3C,GACF,KAAK,KAAL,IAAc,SADZ,GAEH,KAAK,OAJJ;AAKL,UAAA,MAAM,EAAE,KAAK,YALR;AAML,UAAA,aAAa,EAAE;AANV;AAD2D,OAArC,CAA/B;AAUD;AAdM;AAdmC,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 loaderHeight: {\n type: [Number, String],\n default: 2,\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 absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+25
View File
@@ -0,0 +1,25 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = _vue.default.extend({
name: 'localable',
props: {
locale: String
},
computed: {
currentLocale: function currentLocale() {
return this.locale || this.$vuetify.lang.current;
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/localable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,WADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AADH,GAHiB;AAOxB,EAAA,QAAQ,EAAE;AACR,IAAA,aADQ,2BACK;AACX,aAAO,KAAK,MAAL,IAAe,KAAK,QAAL,CAAc,IAAd,CAAmB,OAAzC;AACD;AAHO;AAPc,CAAX,C","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'localable',\n\n props: {\n locale: String,\n },\n\n computed: {\n currentLocale (): string {\n return this.locale || this.$vuetify.lang.current\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+47
View File
@@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _helpers = require("../../util/helpers");
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Helpers
// Types
var _default = _vue.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;
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/measurable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;;;AAJA;AAGA;eAKe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE,CAAC,MAAD,EAAS,MAAT,CADH;AAEL,IAAA,SAAS,EAAE,CAAC,MAAD,EAAS,MAAT,CAFN;AAGL,IAAA,QAAQ,EAAE,CAAC,MAAD,EAAS,MAAT,CAHL;AAIL,IAAA,SAAS,EAAE,CAAC,MAAD,EAAS,MAAT,CAJN;AAKL,IAAA,QAAQ,EAAE,CAAC,MAAD,EAAS,MAAT,CALL;AAML,IAAA,KAAK,EAAE,CAAC,MAAD,EAAS,MAAT;AANF,GAHiB;AAYxB,EAAA,QAAQ,EAAE;AACR,IAAA,gBADQ,8BACQ;AACd,UAAM,MAAM,GAA2B,EAAvC;AAEA,UAAM,MAAM,GAAG,4BAAc,KAAK,MAAnB,CAAf;AACA,UAAM,SAAS,GAAG,4BAAc,KAAK,SAAnB,CAAlB;AACA,UAAM,QAAQ,GAAG,4BAAc,KAAK,QAAnB,CAAjB;AACA,UAAM,SAAS,GAAG,4BAAc,KAAK,SAAnB,CAAlB;AACA,UAAM,QAAQ,GAAG,4BAAc,KAAK,QAAnB,CAAjB;AACA,UAAM,KAAK,GAAG,4BAAc,KAAK,KAAnB,CAAd;AAEA,UAAI,MAAJ,EAAY,MAAM,CAAC,MAAP,GAAgB,MAAhB;AACZ,UAAI,SAAJ,EAAe,MAAM,CAAC,SAAP,GAAmB,SAAnB;AACf,UAAI,QAAJ,EAAc,MAAM,CAAC,QAAP,GAAkB,QAAlB;AACd,UAAI,SAAJ,EAAe,MAAM,CAAC,SAAP,GAAmB,SAAnB;AACf,UAAI,QAAJ,EAAc,MAAM,CAAC,QAAP,GAAkB,QAAlB;AACd,UAAI,KAAJ,EAAW,MAAM,CAAC,KAAP,GAAe,KAAf;AAEX,aAAO,MAAP;AACD;AAnBO;AAZc,CAAX,C","sourcesContent":["// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType<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":"","file":"index.js"}
+362
View File
@@ -0,0 +1,362 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _positionable = _interopRequireDefault(require("../positionable"));
var _stackable = _interopRequireDefault(require("../stackable"));
var _activatable = _interopRequireDefault(require("../activatable"));
var _mixins = _interopRequireDefault(require("../../util/mixins"));
var _helpers = require("../../util/helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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; }
// Types
var baseMixins = (0, _mixins.default)(_stackable.default, _positionable.default, _activatable.default);
/* @vue/component */
var _default = baseMixins.extend().extend({
name: 'menuable',
props: {
allowOverflow: 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,
openOnClick: 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,
activatedBy: null,
activatorFixed: false,
dimensions: {
activator: {
top: 0,
left: 0,
bottom: 0,
right: 0,
width: 0,
height: 0,
offsetTop: 0,
scrollHeight: 0,
offsetLeft: 0
},
content: {
top: 0,
left: 0,
bottom: 0,
right: 0,
width: 0,
height: 0,
offsetTop: 0,
scrollHeight: 0
}
},
hasJustFocused: false,
hasWindow: false,
inputActivator: false,
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.attach !== false ? 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(Number(this.maxWidth)) ? a.width : Math.min(a.width, Number(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.attach !== false) 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;
}
},
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.hasWindow = typeof window !== 'undefined';
},
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 (0, _helpers.convertToUnit)(this.attach !== false ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth));
},
calcTop: function calcTop() {
return (0, _helpers.convertToUnit)(this.attach !== false ? this.computedTop : this.calcYOverflow(this.computedTop));
},
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();
},
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() {},
genActivatorListeners: function genActivatorListeners() {
var _this = this;
var listeners = _activatable.default.options.methods.genActivatorListeners.call(this);
var onClick = listeners.click;
listeners.click = function (e) {
if (_this.openOnClick) {
onClick && onClick(e);
}
_this.absoluteX = e.clientX;
_this.absoluteY = e.clientY;
};
return listeners;
},
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.attach !== false) {
var style = window.getComputedStyle(el);
rect.left = parseInt(style.marginLeft);
rect.top = parseInt(style.marginTop);
}
return rect;
},
sneakPeek: function sneakPeek(cb) {
var _this2 = this;
requestAnimationFrame(function () {
var el = _this2.$refs.content;
if (!el || el.style.display !== 'none') {
cb();
return;
}
el.style.display = 'inline-block';
cb();
el.style.display = 'none';
});
},
startTransition: function startTransition() {
var _this3 = this;
return new Promise(function (resolve) {
return requestAnimationFrame(function () {
_this3.isContentActive = _this3.hasJustFocused = _this3.isActive;
resolve();
});
});
},
updateDimensions: function updateDimensions() {
var _this4 = this;
this.hasWindow = typeof window !== 'undefined';
this.checkActivatorFixed();
this.checkForPageYOffset();
this.pageWidth = document.documentElement.clientWidth;
var dimensions = {
activator: _objectSpread({}, this.dimensions.activator),
content: _objectSpread({}, this.dimensions.content)
}; // Activator should already be shown
if (!this.hasActivator || this.absolute) {
dimensions.activator = this.absolutePosition();
} else {
var activator = this.getActivator();
if (!activator) return;
dimensions.activator = this.measure(activator);
dimensions.activator.offsetLeft = activator.offsetLeft;
if (this.attach !== false) {
// 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 () {
_this4.$refs.content && (dimensions.content = _this4.measure(_this4.$refs.content));
_this4.dimensions = dimensions;
});
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
+54
View File
@@ -0,0 +1,54 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _console = require("../../util/console");
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* @vue/component */
var _default2 = _vue.default.extend({
name: 'mobile',
props: {
mobileBreakpoint: {
type: [Number, String],
default: function _default() {
// Avoid destroying unit
// tests for users
return this.$vuetify ? this.$vuetify.breakpoint.mobileBreakpoint : undefined;
},
validator: function validator(v) {
return !isNaN(Number(v)) || ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v));
}
}
},
computed: {
isMobile: function isMobile() {
var _this$$vuetify$breakp = this.$vuetify.breakpoint,
mobile = _this$$vuetify$breakp.mobile,
width = _this$$vuetify$breakp.width,
name = _this$$vuetify$breakp.name,
mobileBreakpoint = _this$$vuetify$breakp.mobileBreakpoint; // Check if local mobileBreakpoint matches
// the application's mobileBreakpoint
if (mobileBreakpoint === this.mobileBreakpoint) return mobile;
var mobileWidth = parseInt(this.mobileBreakpoint, 10);
var isNumber = !isNaN(mobileWidth);
return isNumber ? width < mobileWidth : name === this.mobileBreakpoint;
}
},
created: function created() {
/* istanbul ignore next */
if (this.$attrs.hasOwnProperty('mobile-break-point')) {
(0, _console.deprecate)('mobile-break-point', 'mobile-breakpoint', this);
}
}
});
exports.default = _default2;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/mobile/index.ts"],"names":[],"mappings":";;;;;;;AAEA;;AACA;;;;AAEA;gBACe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,QADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,gBAAgB,EAAE;AAChB,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADU;AAEhB,MAAA,OAFgB,sBAET;AACL;AACA;AACA,eAAO,KAAK,QAAL,GACH,KAAK,QAAL,CAAc,UAAd,CAAyB,gBADtB,GAEH,SAFJ;AAGD,OARe;AAShB,MAAA,SAAS,EAAE,mBAAA,CAAC;AAAA,eACV,CAAC,KAAK,CAAC,MAAM,CAAC,CAAD,CAAP,CAAN,IACA,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,QAA/B,CAAwC,MAAM,CAAC,CAAD,CAA9C,CAFU;AAAA;AATI;AADb,GAHiB;AAoBxB,EAAA,QAAQ,EAAE;AACR,IAAA,QADQ,sBACA;AAAA,kCAMF,KAAK,QAAL,CAAc,UANZ;AAAA,UAEJ,MAFI,yBAEJ,MAFI;AAAA,UAGJ,KAHI,yBAGJ,KAHI;AAAA,UAIJ,IAJI,yBAIJ,IAJI;AAAA,UAKJ,gBALI,yBAKJ,gBALI,EAQN;AACA;;AACA,UAAI,gBAAgB,KAAK,KAAK,gBAA9B,EAAgD,OAAO,MAAP;AAEhD,UAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,gBAAN,EAAwB,EAAxB,CAA5B;AACA,UAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAD,CAAvB;AAEA,aAAO,QAAQ,GACX,KAAK,GAAG,WADG,GAEX,IAAI,KAAK,KAAK,gBAFlB;AAGD;AAnBO,GApBc;AA0CxB,EAAA,OA1CwB,qBA0CjB;AACL;AACA,QAAI,KAAK,MAAL,CAAY,cAAZ,CAA2B,oBAA3B,CAAJ,EAAsD;AACpD,8BAAU,oBAAV,EAAgC,mBAAhC,EAAqD,IAArD;AACD;AACF;AA/CuB,CAAX,C","sourcesContent":["// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType<BreakpointName>,\n default (): BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+207
View File
@@ -0,0 +1,207 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _VOverlay = _interopRequireDefault(require("../../components/VOverlay"));
var _helpers = require("../../util/helpers");
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Components
// Utilities
// Types
/* @vue/component */
var _default = _vue.default.extend().extend({
name: 'overlayable',
props: {
hideOverlay: Boolean,
overlayColor: String,
overlayOpacity: [Number, String]
},
data: function data() {
return {
animationFrame: 0,
overlay: null
};
},
watch: {
hideOverlay: function hideOverlay(value) {
if (!this.isActive) return;
if (value) this.removeOverlay();else this.genOverlay();
}
},
beforeDestroy: function beforeDestroy() {
this.removeOverlay();
},
methods: {
createOverlay: function createOverlay() {
var overlay = new _VOverlay.default({
propsData: {
absolute: this.absolute,
value: false,
color: this.overlayColor,
opacity: this.overlayOpacity
}
});
overlay.$mount();
var parent = this.absolute ? this.$el.parentNode : document.querySelector('[data-app]');
parent && parent.insertBefore(overlay.$el, parent.firstChild);
this.overlay = overlay;
},
genOverlay: function genOverlay() {
var _this = this;
this.hideScroll();
if (this.hideOverlay) return;
if (!this.overlay) this.createOverlay();
this.animationFrame = requestAnimationFrame(function () {
if (!_this.overlay) return;
if (_this.activeZIndex !== undefined) {
_this.overlay.zIndex = String(_this.activeZIndex - 1);
} else if (_this.$el) {
_this.overlay.zIndex = (0, _helpers.getZIndex)(_this.$el);
}
_this.overlay.value = true;
});
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) {
(0, _helpers.addOnceEventListener)(this.overlay.$el, 'transitionend', function () {
if (!_this2.overlay || !_this2.overlay.$el || !_this2.overlay.$el.parentNode || _this2.overlay.value) return;
_this2.overlay.$el.parentNode.removeChild(_this2.overlay.$el);
_this2.overlay.$destroy();
_this2.overlay = null;
}); // Cancel animation frame in case
// overlay is removed before it
// has finished its animation
cancelAnimationFrame(this.animationFrame);
this.overlay.value = false;
}
showScroll && this.showScroll();
},
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; // getSelection returns null in firefox in some edge cases, can be ignored
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);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
+50
View File
@@ -0,0 +1,50 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _colorable = _interopRequireDefault(require("../colorable"));
var _mixins = _interopRequireDefault(require("../../util/mixins"));
var _helpers = require("../../util/helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Mixins
// Utilities
/* @vue/component */
var _default = (0, _mixins.default)(_colorable.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:".concat((0, _helpers.kebabCase)(prop)), value);
};
return this.$createElement('div', {
staticClass: "v-picker__title__btn ".concat(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]);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/picker-button/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AACA;;;;AALA;AAGA;;AAOA;eACe,qBACb,kBADa,EAEb,MAFa,CAEN;AACP,EAAA,OAAO,EAAE;AACP,IAAA,eADO,2BAEL,IAFK,EAGL,KAHK,EAIL,OAJK,EAMW;AAAA;;AAAA,UADhB,QACgB,uEADL,KACK;AAAA,UAAhB,WAAgB,uEAAF,EAAE;AAEhB,UAAM,MAAM,GAAI,KAAa,IAAb,MAAuB,KAAvC;;AACA,UAAM,KAAK,GAAG,SAAR,KAAQ,CAAC,KAAD,EAAiB;AAC7B,QAAA,KAAK,CAAC,eAAN;;AACA,QAAA,KAAI,CAAC,KAAL,kBAAqB,wBAAU,IAAV,CAArB,GAAwC,KAAxC;AACD,OAHD;;AAKA,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B;AAChC,QAAA,WAAW,EAAE,+BAAwB,WAAxB,EAAsC,IAAtC,EADmB;AAEhC,QAAA,KAAK,EAAE;AACL,0CAAgC,MAD3B;AAEL,4CAAkC;AAF7B,SAFyB;AAMhC,QAAA,EAAE,EAAG,MAAM,IAAI,QAAX,GAAuB,SAAvB,GAAmC;AAAE,UAAA,KAAK,EAAL;AAAF;AANP,OAA3B,EAOJ,KAAK,CAAC,OAAN,CAAc,OAAd,IAAyB,OAAzB,GAAmC,CAAC,OAAD,CAP/B,CAAP;AAQD;AAtBM;AADF,CAFM,C","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { kebabCase } from '../../util/helpers'\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:${kebabCase(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":"","file":"index.js"}
+83
View File
@@ -0,0 +1,83 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _VPicker = _interopRequireDefault(require("../../components/VPicker"));
var _colorable = _interopRequireDefault(require("../colorable"));
var _elevatable = _interopRequireDefault(require("../../mixins/elevatable"));
var _themeable = _interopRequireDefault(require("../themeable"));
var _mixins = _interopRequireDefault(require("../../util/mixins"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Components
// Mixins
// Utils
var _default = (0, _mixins.default)(_colorable.default, _elevatable.default, _themeable.default
/* @vue/component */
).extend({
name: 'picker',
props: {
flat: Boolean,
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(_VPicker.default, {
staticClass: staticClass,
props: {
color: this.headerColor || this.color,
dark: this.dark,
elevation: this.elevation,
flat: this.flat,
fullWidth: this.fullWidth,
landscape: this.landscape,
light: this.light,
width: this.width,
noTitle: this.noTitle
}
}, children);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/picker/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AACA;;AACA;;AAGA;;;;AATA;AAGA;AAKA;eAMe,qBACb,kBADa,EAEb,mBAFa,EAGb;AACF;AAJe,EAKb,MALa,CAKN;AACP,EAAA,IAAI,EAAE,QADC;AAGP,EAAA,KAAK,EAAE;AACL,IAAA,IAAI,EAAE,OADD;AAEL,IAAA,SAAS,EAAE,OAFN;AAGL,IAAA,WAAW,EAAE,MAHR;AAIL,IAAA,SAAS,EAAE,OAJN;AAKL,IAAA,OAAO,EAAE,OALJ;AAML,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADD;AAEL,MAAA,OAAO,EAAE;AAFJ;AANF,GAHA;AAeP,EAAA,OAAO,EAAE;AACP,IAAA,cADO,4BACO;AACZ,aAAO,IAAP;AACD,KAHM;AAIP,IAAA,aAJO,2BAIM;AACX,aAAO,IAAP;AACD,KANM;AAOP,IAAA,oBAPO,kCAOa;AAClB,aAAO,KAAK,YAAL,CAAkB,OAAlB,GAA4B,KAAK,YAAL,CAAkB,OAAlB,CAA0B;AAC3D,QAAA,IAAI,EAAG,KAAa,IADuC;AAE3D,QAAA,MAAM,EAAG,KAAa;AAFqC,OAA1B,CAA5B,GAGF,KAAK,MAAL,CAAY,OAHjB;AAID,KAZM;AAaP,IAAA,SAbO,qBAaI,WAbJ,EAauB;AAC5B,UAAM,QAAQ,GAAY,EAA1B;;AAEA,UAAI,CAAC,KAAK,OAAV,EAAmB;AACjB,YAAM,KAAK,GAAG,KAAK,cAAL,EAAd;AACA,QAAA,KAAK,IAAI,QAAQ,CAAC,IAAT,CAAc,KAAd,CAAT;AACD;;AAED,UAAM,IAAI,GAAG,KAAK,aAAL,EAAb;AACA,MAAA,IAAI,IAAI,QAAQ,CAAC,IAAT,CAAc,IAAd,CAAR;AAEA,MAAA,QAAQ,CAAC,IAAT,CAAc,KAAK,cAAL,CAAoB,UAApB,EAAgC;AAAE,QAAA,IAAI,EAAE;AAAR,OAAhC,EAAqD,CAAC,KAAK,oBAAL,EAAD,CAArD,CAAd;AAEA,aAAO,KAAK,cAAL,CAAoB,gBAApB,EAA6B;AAClC,QAAA,WAAW,EAAX,WADkC;AAElC,QAAA,KAAK,EAAE;AACL,UAAA,KAAK,EAAE,KAAK,WAAL,IAAoB,KAAK,KAD3B;AAEL,UAAA,IAAI,EAAE,KAAK,IAFN;AAGL,UAAA,SAAS,EAAE,KAAK,SAHX;AAIL,UAAA,IAAI,EAAE,KAAK,IAJN;AAKL,UAAA,SAAS,EAAE,KAAK,SALX;AAML,UAAA,SAAS,EAAE,KAAK,SANX;AAOL,UAAA,KAAK,EAAE,KAAK,KAPP;AAQL,UAAA,KAAK,EAAE,KAAK,KARP;AASL,UAAA,OAAO,EAAE,KAAK;AATT;AAF2B,OAA7B,EAaJ,QAbI,CAAP;AAcD;AAxCM;AAfF,CALM,C","sourcesContent":["// Components\nimport VPicker from '../../components/VPicker'\n\n// Mixins\nimport Colorable from '../colorable'\nimport Elevatable from '../../mixins/elevatable'\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 Elevatable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'picker',\n\n props: {\n flat: Boolean,\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 elevation: this.elevation,\n flat: this.flat,\n fullWidth: this.fullWidth,\n landscape: this.landscape,\n light: this.light,\n width: this.width,\n noTitle: this.noTitle,\n },\n }, children)\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+63
View File
@@ -0,0 +1,63 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.factory = factory;
exports.default = void 0;
var _vue = _interopRequireDefault(require("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 _vue.default.extend({
name: 'positionable',
props: selected.length ? (0, _helpers.filterObjectOnKeys)(availableProps, selected) : availableProps
});
}
var _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
}
})
/**/
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/positionable/index.ts"],"names":[],"mappings":";;;;;;;;AAAA;;AACA;;;;AAGA,IAAM,cAAc,GAAG;AACrB,EAAA,QAAQ,EAAE,OADW;AAErB,EAAA,MAAM,EAAE,OAFa;AAGrB,EAAA,KAAK,EAAE,OAHc;AAIrB,EAAA,IAAI,EAAE,OAJe;AAKrB,EAAA,KAAK,EAAE,OALc;AAMrB,EAAA,GAAG,EAAE;AANgB,CAAvB;;AAcM,SAAU,OAAV,GAAuC;AAAA,MAApB,QAAoB,uEAAF,EAAE;AAC3C,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,cADU;AAEhB,IAAA,KAAK,EAAE,QAAQ,CAAC,MAAT,GAAkB,iCAAmB,cAAnB,EAAmC,QAAnC,CAAlB,GAAiE;AAFxD,GAAX,CAAP;AAID;;eAEc,OAAO,E,EAEtB;;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":"","file":"index.js"}
+55
View File
@@ -0,0 +1,55 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.factory = factory;
exports.default = void 0;
var _vue = _interopRequireDefault(require("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 _vue.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();
var _default = Proxyable;
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/proxyable/index.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;AASM,SAAU,OAAV,GAEY;AAAA,MADhB,IACgB,uEADT,OACS;AAAA,MAAhB,KAAgB,uEAAR,QAAQ;AAEhB,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,WADU;AAGhB,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAJ,IADK;AAEL,MAAA,KAAK,EAAL;AAFK,KAHS;AAQhB,IAAA,KAAK,sBACF,IADE,EACK;AACN,MAAA,QAAQ,EAAE;AADJ,KADL,CARW;AAchB,IAAA,IAdgB,kBAcZ;AACF,aAAO;AACL,QAAA,iBAAiB,EAAE,KAAK,IAAL;AADd,OAAP;AAGD,KAlBe;AAoBhB,IAAA,QAAQ,EAAE;AACR,MAAA,aAAa,EAAE;AACb,QAAA,GADa,iBACV;AACD,iBAAO,KAAK,iBAAZ;AACD,SAHY;AAIb,QAAA,GAJa,eAIR,GAJQ,EAIA;AACX,cAAI,GAAG,KAAK,KAAK,iBAAjB,EAAoC;AAEpC,eAAK,iBAAL,GAAyB,GAAzB;AAEA,eAAK,KAAL,CAAW,KAAX,EAAkB,GAAlB;AACD;AAVY;AADP,KApBM;AAmChB,IAAA,KAAK,sBACF,IADE,YACK,GADL,EACQ;AACT,WAAK,iBAAL,GAAyB,GAAzB;AACD,KAHE;AAnCW,GAAX,CAAP;AAyCD;AAED;;;AACA,IAAM,SAAS,GAAG,OAAO,EAAzB;eAEe,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":"","file":"index.js"}
+52
View File
@@ -0,0 +1,52 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inject = inject;
exports.provide = provide;
var _vue = _interopRequireDefault(require("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 ".concat(child, " component must be used inside a ").concat(parent));
};
}
function inject(namespace, child, parent) {
var defaultImpl = child && parent ? {
register: generateWarning(child, parent),
unregister: generateWarning(child, parent)
} : null;
return _vue.default.extend({
name: 'registrable-inject',
inject: _defineProperty({}, namespace, {
default: defaultImpl
})
});
}
function provide(namespace) {
var self = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
return _vue.default.extend({
name: 'registrable-provide',
methods: self ? {} : {
register: null,
unregister: null
},
provide: function provide() {
return _defineProperty({}, namespace, self ? this : {
register: this.register,
unregister: this.unregister
});
}
});
}
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/registrable/index.ts"],"names":[],"mappings":";;;;;;;;AAAA;;AAEA;;;;;;AAEA,SAAS,eAAT,CAA0B,KAA1B,EAAyC,MAAzC,EAAuD;AACrD,SAAO;AAAA,WAAM,wCAAmB,KAAnB,8CAA4D,MAA5D,EAAN;AAAA,GAAP;AACD;;AASK,SAAU,MAAV,CAEH,SAFG,EAEW,KAFX,EAE2B,MAF3B,EAE0C;AAC9C,MAAM,WAAW,GAAG,KAAK,IAAI,MAAT,GAAkB;AACpC,IAAA,QAAQ,EAAE,eAAe,CAAC,KAAD,EAAQ,MAAR,CADW;AAEpC,IAAA,UAAU,EAAE,eAAe,CAAC,KAAD,EAAQ,MAAR;AAFS,GAAlB,GAGhB,IAHJ;AAKA,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,oBADU;AAGhB,IAAA,MAAM,sBACH,SADG,EACS;AACX,MAAA,OAAO,EAAE;AADE,KADT;AAHU,GAAX,CAAP;AASD;;AAEK,SAAU,OAAV,CAAmB,SAAnB,EAAkD;AAAA,MAAZ,IAAY,uEAAL,KAAK;AACtD,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,qBADU;AAGhB,IAAA,OAAO,EAAE,IAAI,GAAG,EAAH,GAAQ;AACnB,MAAA,QAAQ,EAAE,IADS;AAEnB,MAAA,UAAU,EAAE;AAFO,KAHL;AAOhB,IAAA,OAPgB,qBAOT;AACL,iCACG,SADH,EACe,IAAI,GAAG,IAAH,GAAU;AACzB,QAAA,QAAQ,EAAE,KAAK,QADU;AAEzB,QAAA,UAAU,EAAE,KAAK;AAFQ,OAD7B;AAMD;AAde,GAAX,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, C extends VueConstructor | null = null> = VueConstructor<Vue & {\n [K in T]: C extends VueConstructor ? InstanceType<C> : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable<T, C> {\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, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n methods: self ? {} : {\n register: null,\n unregister: null,\n },\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: this.register,\n unregister: this.unregister,\n },\n }\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}
+46
View File
@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* @vue/component */
var _default = _vue.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:return-value', this.originalValue);
}
}
},
methods: {
save: function save(value) {
var _this = this;
this.originalValue = value;
setTimeout(function () {
_this.isActive = false;
});
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/returnable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;AAEA;eACe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,WAAW,EAAE;AADR,GAHiB;AAOxB,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,QAAQ,EAAE,KADC;AAEX,MAAA,aAAa,EAAE;AAFJ,KAAP;AAAA,GAPkB;AAYxB,EAAA,KAAK,EAAE;AACL,IAAA,QADK,oBACK,GADL,EACQ;AACX,UAAI,GAAJ,EAAS;AACP,aAAK,aAAL,GAAqB,KAAK,WAA1B;AACD,OAFD,MAEO;AACL,aAAK,KAAL,CAAW,qBAAX,EAAkC,KAAK,aAAvC;AACD;AACF;AAPI,GAZiB;AAsBxB,EAAA,OAAO,EAAE;AACP,IAAA,IADO,gBACD,KADC,EACS;AAAA;;AACd,WAAK,aAAL,GAAqB,KAArB;AACA,MAAA,UAAU,CAAC,YAAK;AACd,QAAA,KAAI,CAAC,QAAL,GAAgB,KAAhB;AACD,OAFS,CAAV;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:return-value', 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":"","file":"index.js"}
+49
View File
@@ -0,0 +1,49 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ripple = _interopRequireDefault(require("../../directives/ripple"));
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Directives
// Types
var _default = _vue.default.extend({
name: 'rippleable',
directives: {
ripple: _ripple.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() {}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/rippleable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;;;AAJA;AAGA;eAGe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAGxB,EAAA,UAAU,EAAE;AAAE,IAAA,MAAM,EAAN;AAAF,GAHY;AAKxB,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,CAAC,OAAD,EAAU,MAAV,CADA;AAEN,MAAA,OAAO,EAAE;AAFH;AADH,GALiB;AAYxB,EAAA,OAAO,EAAE;AACP,IAAA,SADO,uBACwB;AAAA,UAApB,IAAoB,uEAAF,EAAE;AAC7B,UAAI,CAAC,KAAK,MAAV,EAAkB,OAAO,IAAP;AAElB,MAAA,IAAI,CAAC,WAAL,GAAmB,qCAAnB;AAEA,MAAA,IAAI,CAAC,UAAL,GAAkB,IAAI,CAAC,UAAL,IAAmB,EAArC;AACA,MAAA,IAAI,CAAC,UAAL,CAAgB,IAAhB,CAAqB;AACnB,QAAA,IAAI,EAAE,QADa;AAEnB,QAAA,KAAK,EAAE;AAAE,UAAA,MAAM,EAAE;AAAV;AAFY,OAArB;AAIA,MAAA,IAAI,CAAC,EAAL,GAAU,MAAM,CAAC,MAAP,CAAc;AACtB,QAAA,KAAK,EAAE,KAAK;AADU,OAAd,EAEP,KAAK,UAFE,CAAV;AAIA,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B,IAA3B,CAAP;AACD,KAhBM;AAiBP,IAAA,QAjBO,sBAiBC,CAAM;AAjBP;AAZe,CAAX,C","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":"","file":"index.js"}
+63
View File
@@ -0,0 +1,63 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("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; }
/* @vue/component */
var _default = _vue.default.extend({
name: 'roundable',
props: {
rounded: [Boolean, String],
tile: Boolean
},
computed: {
roundedClasses: function roundedClasses() {
var composite = [];
var rounded = typeof this.rounded === 'string' ? String(this.rounded) : this.rounded === true;
if (this.tile) {
composite.push('rounded-0');
} else if (typeof rounded === 'string') {
var values = rounded.split(' ');
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var value = _step.value;
composite.push("rounded-".concat(value));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
} else if (rounded) {
composite.push('rounded');
}
return composite.length > 0 ? _defineProperty({}, composite.join(' '), true) : {};
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/roundable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;;;AAEA;eACe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,WADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,OAAO,EAAE,CAAC,OAAD,EAAU,MAAV,CADJ;AAEL,IAAA,IAAI,EAAE;AAFD,GAHiB;AAQxB,EAAA,QAAQ,EAAE;AACR,IAAA,cADQ,4BACM;AACZ,UAAM,SAAS,GAAG,EAAlB;AACA,UAAM,OAAO,GAAG,OAAO,KAAK,OAAZ,KAAwB,QAAxB,GACZ,MAAM,CAAC,KAAK,OAAN,CADM,GAEZ,KAAK,OAAL,KAAiB,IAFrB;;AAIA,UAAI,KAAK,IAAT,EAAe;AACb,QAAA,SAAS,CAAC,IAAV,CAAe,WAAf;AACD,OAFD,MAEO,IAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AACtC,YAAM,MAAM,GAAG,OAAO,CAAC,KAAR,CAAc,GAAd,CAAf;AADsC;AAAA;AAAA;;AAAA;AAGtC,+BAAoB,MAApB,8HAA4B;AAAA,gBAAjB,KAAiB;AAC1B,YAAA,SAAS,CAAC,IAAV,mBAA0B,KAA1B;AACD;AALqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMvC,OANM,MAMA,IAAI,OAAJ,EAAa;AAClB,QAAA,SAAS,CAAC,IAAV,CAAe,SAAf;AACD;;AAED,aAAO,SAAS,CAAC,MAAV,GAAmB,CAAnB,uBACJ,SAAS,CAAC,IAAV,CAAe,GAAf,CADI,EACkB,IADlB,IAEH,EAFJ;AAGD;AAtBO;AARc,CAAX,C","sourcesContent":["import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record<string, boolean> {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+156
View File
@@ -0,0 +1,156 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
var _ripple = _interopRequireDefault(require("../../directives/ripple"));
var _helpers = require("../../util/helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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; }
var _default = _vue.default.extend({
name: 'routable',
directives: {
Ripple: _ripple.default
},
props: {
activeClass: String,
append: Boolean,
disabled: Boolean,
exact: {
type: Boolean,
default: undefined
},
exactActiveClass: String,
link: Boolean,
href: [String, Object],
to: [String, Object],
nuxt: Boolean,
replace: Boolean,
ripple: {
type: [Boolean, Object],
default: null
},
tag: String,
target: String
},
data: function data() {
return {
isActive: false,
proxyClass: ''
};
},
computed: {
classes: function classes() {
var classes = {};
if (this.to) return classes;
if (this.activeClass) classes[this.activeClass] = this.isActive;
if (this.proxyClass) classes[this.proxyClass] = this.isActive;
return classes;
},
computedRipple: function computedRipple() {
return this.ripple != null ? this.ripple : !this.disabled && this.isClickable;
},
isClickable: function isClickable() {
if (this.disabled) return false;
return Boolean(this.isLink || this.$listeners.click || this.$listeners['!click'] || this.$attrs.tabindex);
},
isLink: function isLink() {
return this.to || this.href || this.link;
},
styles: function styles() {
return {};
}
},
watch: {
$route: 'onRouteChange'
},
methods: {
click: function click(e) {
this.$emit('click', e);
},
generateRouteLink: function generateRouteLink() {
var _data;
var exact = this.exact;
var tag;
var data = (_data = {
attrs: {
tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined
},
class: this.classes,
style: this.styles,
props: {},
directives: [{
name: 'ripple',
value: this.computedRipple
}]
}, _defineProperty(_data, this.to ? 'nativeOn' : 'on', _objectSpread({}, this.$listeners, {
click: this.click
})), _defineProperty(_data, "ref", 'link'), _data);
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;
if (this.proxyClass) {
activeClass = "".concat(activeClass, " ").concat(this.proxyClass).trim();
exactActiveClass = "".concat(exactActiveClass, " ").concat(this.proxyClass).trim();
}
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 || 'div';
if (tag === 'a' && this.href) data.attrs.href = this.href;
}
if (this.target) data.attrs.target = this.target;
return {
tag: tag,
data: data
};
},
onRouteChange: function onRouteChange() {
var _this = this;
if (!this.to || !this.$refs.link || !this.$route) return;
var activeClass = "".concat(this.activeClass, " ").concat(this.proxyClass || '').trim();
var path = "_vnode.data.class.".concat(activeClass);
this.$nextTick(function () {
/* istanbul ignore else */
if ((0, _helpers.getObjectValueByPath)(_this.$refs.link, path)) {
_this.toggle();
}
});
},
toggle: function toggle() {}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
+109
View File
@@ -0,0 +1,109 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _directives = require("../../directives");
var _console = require("../../util/console");
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Directives
// Utilities
// Types
/**
* Scrollable
*
* Used for monitoring scrolling and
* invoking functions based upon
* scrolling thresholds being
* met.
*/
/* @vue/component */
var _default = _vue.default.extend({
name: 'scrollable',
directives: {
Scroll: _directives.Scroll
},
props: {
scrollTarget: String,
scrollThreshold: [String, Number]
},
data: function data() {
return {
currentScroll: 0,
currentThreshold: 0,
isActive: false,
isScrollingUp: false,
previousScroll: 0,
savedScroll: 0,
target: null
};
},
computed: {
/**
* A computed property that returns
* whether scrolling features are
* enabled or disabled
*/
canScroll: function canScroll() {
return typeof window !== 'undefined';
},
/**
* The threshold that must be met before
* thresholdMet function is invoked
*/
computedScrollThreshold: function computedScrollThreshold() {
return this.scrollThreshold ? Number(this.scrollThreshold) : 300;
}
},
watch: {
isScrollingUp: function isScrollingUp() {
this.savedScroll = this.savedScroll || this.currentScroll;
},
isActive: function isActive() {
this.savedScroll = 0;
}
},
mounted: function mounted() {
if (this.scrollTarget) {
this.target = document.querySelector(this.scrollTarget);
if (!this.target) {
(0, _console.consoleWarn)("Unable to locate element with identifier ".concat(this.scrollTarget), this);
}
}
},
methods: {
onScroll: function onScroll() {
var _this = this;
if (!this.canScroll) return;
this.previousScroll = this.currentScroll;
this.currentScroll = this.target ? this.target.scrollTop : window.pageYOffset;
this.isScrollingUp = this.currentScroll < this.previousScroll;
this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold);
this.$nextTick(function () {
if (Math.abs(_this.currentScroll - _this.savedScroll) > _this.computedScrollThreshold) _this.thresholdMet();
});
},
/**
* The method invoked when
* scrolling in any direction
* has exceeded the threshold
*/
thresholdMet: function thresholdMet() {}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/scrollable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AAGA;;;;AAPA;AAGA;AAGA;;AAGA;;;;;;;;;AAQA;eACe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,YADkB;AAGxB,EAAA,UAAU,EAAE;AAAE,IAAA,MAAM,EAAN;AAAF,GAHY;AAKxB,EAAA,KAAK,EAAE;AACL,IAAA,YAAY,EAAE,MADT;AAEL,IAAA,eAAe,EAAE,CAAC,MAAD,EAAS,MAAT;AAFZ,GALiB;AAUxB,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,aAAa,EAAE,CADJ;AAEX,MAAA,gBAAgB,EAAE,CAFP;AAGX,MAAA,QAAQ,EAAE,KAHC;AAIX,MAAA,aAAa,EAAE,KAJJ;AAKX,MAAA,cAAc,EAAE,CALL;AAMX,MAAA,WAAW,EAAE,CANF;AAOX,MAAA,MAAM,EAAE;AAPG,KAAP;AAAA,GAVkB;AAoBxB,EAAA,QAAQ,EAAE;AACR;;;;;AAKA,IAAA,SANQ,uBAMC;AACP,aAAO,OAAO,MAAP,KAAkB,WAAzB;AACD,KARO;;AASR;;;;AAIA,IAAA,uBAbQ,qCAae;AACrB,aAAO,KAAK,eAAL,GACH,MAAM,CAAC,KAAK,eAAN,CADH,GAEH,GAFJ;AAGD;AAjBO,GApBc;AAwCxB,EAAA,KAAK,EAAE;AACL,IAAA,aADK,2BACQ;AACX,WAAK,WAAL,GAAmB,KAAK,WAAL,IAAoB,KAAK,aAA5C;AACD,KAHI;AAIL,IAAA,QAJK,sBAIG;AACN,WAAK,WAAL,GAAmB,CAAnB;AACD;AANI,GAxCiB;AAiDxB,EAAA,OAjDwB,qBAiDjB;AACL,QAAI,KAAK,YAAT,EAAuB;AACrB,WAAK,MAAL,GAAc,QAAQ,CAAC,aAAT,CAAuB,KAAK,YAA5B,CAAd;;AAEA,UAAI,CAAC,KAAK,MAAV,EAAkB;AAChB,qFAAwD,KAAK,YAA7D,GAA6E,IAA7E;AACD;AACF;AACF,GAzDuB;AA2DxB,EAAA,OAAO,EAAE;AACP,IAAA,QADO,sBACC;AAAA;;AACN,UAAI,CAAC,KAAK,SAAV,EAAqB;AAErB,WAAK,cAAL,GAAsB,KAAK,aAA3B;AACA,WAAK,aAAL,GAAqB,KAAK,MAAL,GACjB,KAAK,MAAL,CAAY,SADK,GAEjB,MAAM,CAAC,WAFX;AAIA,WAAK,aAAL,GAAqB,KAAK,aAAL,GAAqB,KAAK,cAA/C;AACA,WAAK,gBAAL,GAAwB,IAAI,CAAC,GAAL,CAAS,KAAK,aAAL,GAAqB,KAAK,uBAAnC,CAAxB;AAEA,WAAK,SAAL,CAAe,YAAK;AAClB,YACE,IAAI,CAAC,GAAL,CAAS,KAAI,CAAC,aAAL,GAAqB,KAAI,CAAC,WAAnC,IACA,KAAI,CAAC,uBAFP,EAGE,KAAI,CAAC,YAAL;AACH,OALD;AAMD,KAlBM;;AAmBP;;;;;AAKA,IAAA,YAxBO,0BAwBK,CAAkB;AAxBvB;AA3De,CAAX,C","sourcesContent":["// Directives\nimport { Scroll } from '../../directives'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\n/**\n * Scrollable\n *\n * Used for monitoring scrolling and\n * invoking functions based upon\n * scrolling thresholds being\n * met.\n */\n/* @vue/component */\nexport default Vue.extend({\n name: 'scrollable',\n\n directives: { Scroll },\n\n props: {\n scrollTarget: String,\n scrollThreshold: [String, Number],\n },\n\n data: () => ({\n currentScroll: 0,\n currentThreshold: 0,\n isActive: false,\n isScrollingUp: false,\n previousScroll: 0,\n savedScroll: 0,\n target: null as Element | null,\n }),\n\n computed: {\n /**\n * A computed property that returns\n * whether scrolling features are\n * enabled or disabled\n */\n canScroll (): boolean {\n return typeof window !== 'undefined'\n },\n /**\n * The threshold that must be met before\n * thresholdMet function is invoked\n */\n computedScrollThreshold (): number {\n return this.scrollThreshold\n ? Number(this.scrollThreshold)\n : 300\n },\n },\n\n watch: {\n isScrollingUp () {\n this.savedScroll = this.savedScroll || this.currentScroll\n },\n isActive () {\n this.savedScroll = 0\n },\n },\n\n mounted () {\n if (this.scrollTarget) {\n this.target = document.querySelector(this.scrollTarget)\n\n if (!this.target) {\n consoleWarn(`Unable to locate element with identifier ${this.scrollTarget}`, this)\n }\n }\n },\n\n methods: {\n onScroll () {\n if (!this.canScroll) return\n\n this.previousScroll = this.currentScroll\n this.currentScroll = this.target\n ? this.target.scrollTop\n : window.pageYOffset\n\n this.isScrollingUp = this.currentScroll < this.previousScroll\n this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold)\n\n this.$nextTick(() => {\n if (\n Math.abs(this.currentScroll - this.savedScroll) >\n this.computedScrollThreshold\n ) this.thresholdMet()\n })\n },\n /**\n * The method invoked when\n * scrolling in any direction\n * has exceeded the threshold\n */\n thresholdMet () { /* noop */ },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+174
View File
@@ -0,0 +1,174 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _VInput = _interopRequireDefault(require("../../components/VInput"));
var _rippleable = _interopRequireDefault(require("../rippleable"));
var _comparable = _interopRequireDefault(require("../comparable"));
var _mixins = _interopRequireDefault(require("../../util/mixins"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Components
// Mixins
// Utilities
/* @vue/component */
var _default = (0, _mixins.default)(_VInput.default, _rippleable.default, _comparable.default).extend({
name: 'selectable',
model: {
prop: 'inputValue',
event: 'change'
},
props: {
id: String,
inputValue: null,
falseValue: null,
trueValue: null,
multiple: {
type: Boolean,
default: null
},
label: String
},
data: function data() {
return {
hasColor: this.inputValue,
lazyValue: this.inputValue
};
},
computed: {
computedColor: function computedColor() {
if (!this.isActive) return undefined;
if (this.color) return this.color;
if (this.isDark && !this.appIsDark) return 'white';
return 'primary';
},
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;
},
rippleState: function rippleState() {
return !this.isDisabled && !this.validationState ? undefined : this.validationState;
}
},
watch: {
inputValue: function inputValue(val) {
this.lazyValue = val;
this.hasColor = val;
}
},
methods: {
genLabel: function genLabel() {
var _this2 = this;
var label = _VInput.default.options.methods.genLabel.call(this);
if (!label) return label;
label.data.on = {
click: function click(e) {
// Prevent label from
// causing the input
// to focus
e.preventDefault();
_this2.onChange();
}
};
return label;
},
genInput: function genInput(type, attrs) {
return this.$createElement('input', {
attrs: Object.assign({
'aria-checked': this.isActive.toString(),
disabled: this.isDisabled,
id: this.computedId,
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 _this3 = this;
if (!this.isInteractive) 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 !_this3.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;
this.hasColor = input;
},
onFocus: function onFocus() {
this.isFocused = true;
},
/** @abstract */
onKeydown: function onKeydown(e) {}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
+37
View File
@@ -0,0 +1,37 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = _vue.default.extend({
name: 'sizeable',
props: {
large: Boolean,
small: Boolean,
xLarge: Boolean,
xSmall: Boolean
},
computed: {
medium: function medium() {
return Boolean(!this.xSmall && !this.small && !this.large && !this.xLarge);
},
sizeableClasses: function sizeableClasses() {
return {
'v-size--x-small': this.xSmall,
'v-size--small': this.small,
'v-size--default': this.medium,
'v-size--large': this.large,
'v-size--x-large': this.xLarge
};
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/sizeable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,UADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE,OADF;AAEL,IAAA,KAAK,EAAE,OAFF;AAGL,IAAA,MAAM,EAAE,OAHH;AAIL,IAAA,MAAM,EAAE;AAJH,GAHiB;AAUxB,EAAA,QAAQ,EAAE;AACR,IAAA,MADQ,oBACF;AACJ,aAAO,OAAO,CACZ,CAAC,KAAK,MAAN,IACA,CAAC,KAAK,KADN,IAEA,CAAC,KAAK,KAFN,IAGA,CAAC,KAAK,MAJM,CAAd;AAMD,KARO;AASR,IAAA,eATQ,6BASO;AACb,aAAO;AACL,2BAAmB,KAAK,MADnB;AAEL,yBAAiB,KAAK,KAFjB;AAGL,2BAAmB,KAAK,MAHnB;AAIL,yBAAiB,KAAK,KAJjB;AAKL,2BAAmB,KAAK;AALnB,OAAP;AAOD;AAjBO;AAVc,CAAX,C","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
+42
View File
@@ -0,0 +1,42 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("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
*/
var _default = _vue.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;
});
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/ssr-bootable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;AAEA;;;;;;;;eAQe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,cADkB;AAGxB,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,QAAQ,EAAE;AADC,KAAP;AAAA,GAHkB;AAOxB,EAAA,OAPwB,qBAOjB;AAAA;;AACL;AACA;AACA;AACA,IAAA,MAAM,CAAC,qBAAP,CAA6B,YAAK;AAChC,MAAA,KAAI,CAAC,GAAL,CAAS,YAAT,CAAsB,aAAtB,EAAqC,MAArC;;AACA,MAAA,KAAI,CAAC,QAAL,GAAgB,IAAhB;AACD,KAHD;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":"","file":"index.js"}
+69
View File
@@ -0,0 +1,69 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
var _helpers = require("../../util/helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
/* @vue/component */
var _default = _vue.default.extend().extend({
name: 'stackable',
data: function data() {
return {
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('v-menu__content--active')), _toConsumableArray(document.getElementsByClassName('v-dialog__content--active'))); // 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);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/stackable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;;;;AAQA;eACe,aAAI,MAAJ,GAAsB,MAAtB,CAA6B;AAC1C,EAAA,IAAI,EAAE,WADoC;AAG1C,EAAA,IAH0C,kBAGtC;AACF,WAAO;AACL,MAAA,YAAY,EAAE,IADT;AAEL,MAAA,YAAY,EAAE,IAFT;AAGL,MAAA,cAAc,EAAE,CAHX;AAIL,MAAA,QAAQ,EAAE;AAJL,KAAP;AAMD,GAVyC;AAW1C,EAAA,QAAQ,EAAE;AACR,IAAA,YADQ,0BACI;AACV,UAAI,OAAO,MAAP,KAAkB,WAAtB,EAAmC,OAAO,CAAP;AAEnC,UAAM,OAAO,GAAG,KAAK,YAAL,IAAqB,KAAK,KAAL,CAAW,OAAhD,CAHU,CAIV;;AAEA,UAAM,KAAK,GAAG,CAAC,KAAK,QAAN,GACV,wBAAU,OAAV,CADU,GAEV,KAAK,YAAL,CAAkB,KAAK,YAAL,IAAqB,CAAC,OAAD,CAAvC,IAAoD,CAFxD;AAIA,UAAI,KAAK,IAAI,IAAb,EAAmB,OAAO,KAAP,CAVT,CAYV;AACA;;AACA,aAAO,QAAQ,CAAC,KAAD,CAAf;AACD;AAhBO,GAXgC;AA6B1C,EAAA,OAAO,EAAE;AACP,IAAA,YADO,0BAC8B;AAAA,UAAvB,OAAuB,uEAAF,EAAE;AACnC,UAAM,IAAI,GAAG,KAAK,GAAlB,CADmC,CAEnC;AACA;;AACA,UAAM,GAAG,GAAG,CAAC,KAAK,cAAN,EAAsB,wBAAU,IAAV,CAAtB,CAAZ,CAJmC,CAKnC;AACA;AACA;;AACA,UAAM,cAAc,gCACf,QAAQ,CAAC,sBAAT,CAAgC,yBAAhC,CADe,sBAEf,QAAQ,CAAC,sBAAT,CAAgC,2BAAhC,CAFe,EAApB,CARmC,CAanC;;AACA,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;AAC1D,YAAI,CAAC,OAAO,CAAC,QAAR,CAAiB,cAAc,CAAC,KAAD,CAA/B,CAAL,EAA8C;AAC5C,UAAA,GAAG,CAAC,IAAJ,CAAS,wBAAU,cAAc,CAAC,KAAD,CAAxB,CAAT;AACD;AACF;;AAED,aAAO,IAAI,CAAC,GAAL,OAAA,IAAI,EAAQ,GAAR,CAAX;AACD;AAtBM;AA7BiC,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 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 = [\n ...document.getElementsByClassName('v-menu__content--active'),\n ...document.getElementsByClassName('v-dialog__content--active'),\n ]\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":"","file":"index.js"}
+118
View File
@@ -0,0 +1,118 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.functionalThemeClasses = functionalThemeClasses;
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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 functionalThemeClasses(context) {
var vm = _objectSpread({}, context.props, {}, context.injections);
var isDark = Themeable.options.computed.isDark.call(vm);
return Themeable.options.computed.themeClasses.call({
isDark: isDark
});
}
/* @vue/component */
var Themeable = _vue.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: {
appIsDark: function appIsDark() {
return this.$vuetify.theme.dark || false;
},
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.appIsDark;
}
},
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
}
}
});
var _default = Themeable;
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/themeable/index.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;;;;AAUM,SAAU,sBAAV,CAAkC,OAAlC,EAAwD;AAC5D,MAAM,EAAE,qBACH,OAAO,CAAC,KADL,MAEH,OAAO,CAAC,UAFL,CAAR;;AAIA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAV,CAAkB,QAAlB,CAA2B,MAA3B,CAAkC,IAAlC,CAAuC,EAAvC,CAAf;AACA,SAAO,SAAS,CAAC,OAAV,CAAkB,QAAlB,CAA2B,YAA3B,CAAwC,IAAxC,CAA6C;AAAE,IAAA,MAAM,EAAN;AAAF,GAA7C,CAAP;AACD;AAED;;;AACA,IAAM,SAAS,GAAG,aAAI,MAAJ,GAAwB,MAAxB,CAA+B;AAC/C,EAAA,IAAI,EAAE,WADyC;AAG/C,EAAA,OAH+C,qBAGxC;AACL,WAAO;AACL,MAAA,KAAK,EAAE,KAAK;AADP,KAAP;AAGD,GAP8C;AAS/C,EAAA,MAAM,EAAE;AACN,IAAA,KAAK,EAAE;AACL,MAAA,OAAO,EAAE;AACP,QAAA,MAAM,EAAE;AADD;AADJ;AADD,GATuC;AAiB/C,EAAA,KAAK,EAAE;AACL,IAAA,IAAI,EAAE;AACJ,MAAA,IAAI,EAAE,OADF;AAEJ,MAAA,OAAO,EAAE;AAFL,KADD;AAKL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,OADD;AAEL,MAAA,OAAO,EAAE;AAFJ;AALF,GAjBwC;AA4B/C,EAAA,IA5B+C,kBA4B3C;AACF,WAAO;AACL,MAAA,gBAAgB,EAAE;AAChB,QAAA,MAAM,EAAE;AADQ;AADb,KAAP;AAKD,GAlC8C;AAoC/C,EAAA,QAAQ,EAAE;AACR,IAAA,SADQ,uBACC;AACP,aAAO,KAAK,QAAL,CAAc,KAAd,CAAoB,IAApB,IAA4B,KAAnC;AACD,KAHO;AAIR,IAAA,MAJQ,oBAIF;AACJ,UAAI,KAAK,IAAL,KAAc,IAAlB,EAAwB;AACtB;AACA,eAAO,IAAP;AACD,OAHD,MAGO,IAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AAC9B;AACA,eAAO,KAAP;AACD,OAHM,MAGA;AACL;AACA,eAAO,KAAK,KAAL,CAAW,MAAlB;AACD;AACF,KAfO;AAgBR,IAAA,YAhBQ,0BAgBI;AACV,aAAO;AACL,uBAAe,KAAK,MADf;AAEL,wBAAgB,CAAC,KAAK;AAFjB,OAAP;AAID,KArBO;;AAsBR;AACA,IAAA,UAvBQ,wBAuBE;AACR,UAAI,KAAK,IAAL,KAAc,IAAlB,EAAwB;AACtB;AACA,eAAO,IAAP;AACD,OAHD,MAGO,IAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AAC9B;AACA,eAAO,KAAP;AACD,OAHM,MAGA;AACL;AACA,eAAO,KAAK,SAAZ;AACD;AACF,KAlCO;AAmCR,IAAA,gBAnCQ,8BAmCQ;AACd,aAAO;AACL,uBAAe,KAAK,UADf;AAEL,wBAAgB,CAAC,KAAK;AAFjB,OAAP;AAID;AAxCO,GApCqC;AA+E/C,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AACN,MAAA,OADM,mBACG,MADH,EACW,MADX,EACiB;AACrB,YAAI,MAAM,KAAK,MAAf,EAAuB;AACrB,eAAK,gBAAL,CAAsB,MAAtB,GAA+B,KAAK,MAApC;AACD;AACF,OALK;AAMN,MAAA,SAAS,EAAE;AANL;AADH;AA/EwC,CAA/B,CAAlB;;eA2Fe,S","sourcesContent":["import Vue from 'vue'\nimport { PropType, 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 as PropType<boolean | null>,\n default: null,\n },\n light: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false,\n },\n }\n },\n\n computed: {\n appIsDark (): boolean {\n return this.$vuetify.theme.dark || false\n },\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.appIsDark\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":"","file":"index.js"}
+47
View File
@@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.factory = factory;
exports.default = void 0;
var _vue = _interopRequireDefault(require("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 _vue.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();
var _default = Toggleable;
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/toggleable/index.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;AAMM,SAAU,OAAV,GAAkD;AAAA;;AAAA,MAA/B,IAA+B,uEAAxB,OAAwB;AAAA,MAAf,KAAe,uEAAP,OAAO;AACtD,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,YADU;AAGhB,IAAA,KAAK,EAAE;AAAE,MAAA,IAAI,EAAJ,IAAF;AAAQ,MAAA,KAAK,EAAL;AAAR,KAHS;AAKhB,IAAA,KAAK,sBACF,IADE,EACK;AAAE,MAAA,QAAQ,EAAE;AAAZ,KADL,CALW;AAShB,IAAA,IATgB,kBASZ;AACF,aAAO;AACL,QAAA,QAAQ,EAAE,CAAC,CAAC,KAAK,IAAL;AADP,OAAP;AAGD,KAbe;AAehB,IAAA,KAAK,wCACF,IADE,YACK,GADL,EACQ;AACT,WAAK,QAAL,GAAgB,CAAC,CAAC,GAAlB;AACD,KAHE,yDAIO,GAJP,EAIU;AACX,OAAC,CAAC,GAAF,KAAU,KAAK,IAAL,CAAV,IAAwB,KAAK,KAAL,CAAW,KAAX,EAAkB,GAAlB,CAAxB;AACD,KANE;AAfW,GAAX,CAAP;AAwBD;AAED;;;AACA,IAAM,UAAU,GAAG,OAAO,EAA1B;eAEe,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":"","file":"index.js"}
+22
View File
@@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = _vue.default.extend({
name: 'transitionable',
props: {
mode: String,
origin: String,
transition: String
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/transitionable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,gBADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,IAAI,EAAE,MADD;AAEL,IAAA,MAAM,EAAE,MAFH;AAGL,IAAA,UAAU,EAAE;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":"","file":"index.js"}
+64
View File
@@ -0,0 +1,64 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = _vue.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);
}
}
});
exports.default = _default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/mixins/translatable/index.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;eAEe,aAAI,MAAJ,CAAW;AACxB,EAAA,IAAI,EAAE,cADkB;AAGxB,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AADH,GAHiB;AAOxB,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,WAAW,EAAE,CADF;AAEX,MAAA,QAAQ,EAAE,CAFC;AAGX,MAAA,YAAY,EAAE,CAHH;AAIX,MAAA,eAAe,EAAE,CAJN;AAKX,MAAA,SAAS,EAAE,CALA;AAMX,MAAA,YAAY,EAAE,CANH;AAOX,MAAA,YAAY,EAAE;AAPH,KAAP;AAAA,GAPkB;AAiBxB,EAAA,QAAQ,EAAE;AACR,IAAA,SADQ,uBACC;AACP,aAAO,KAAK,SAAL,EAAP;AACD;AAHO,GAjBc;AAuBxB,EAAA,aAvBwB,2BAuBX;AACX,IAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,KAAK,SAA1C,EAAqD,KAArD;AACA,IAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,KAAK,SAA1C,EAAqD,KAArD;AACD,GA1BuB;AA4BxB,EAAA,OAAO,EAAE;AACP,IAAA,cADO,4BACO;AACZ,UAAM,MAAM,GAAG,KAAK,GAAL,CAAS,qBAAT,EAAf;AAEA,WAAK,SAAL,GAAiB,MAAM,CAAC,WAAxB;AACA,WAAK,YAAL,GAAoB,KAAK,SAAL,GAAiB,KAAK,MAA1C;AACA,WAAK,WAAL,GAAmB,MAAM,CAAC,GAAP,GAAa,KAAK,SAArC;AACA,WAAK,YAAL,GAAoB,MAAM,CAAC,WAA3B;AACA,WAAK,YAAL,GAAoB,KAAK,SAAL,GAAiB,KAAK,YAA1C;AACD,KATM;AAUP,IAAA,SAVO,uBAUE;AACP,MAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,KAAK,SAAvC,EAAkD,KAAlD;AACA,MAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,KAAK,SAAvC,EAAkD,KAAlD;AACD,KAbM;;AAcP;AACA,IAAA,SAfO,uBAeE;AACP,YAAM,IAAI,KAAJ,CAAU,mBAAV,CAAN;AACD,KAjBM;AAkBP,IAAA,SAlBO,uBAkBE;AACP,WAAK,cAAL;AAEA,WAAK,eAAL,GACE,CAAC,KAAK,YAAL,GAAoB,KAAK,WAA1B,KACC,QAAQ,CAAC,KAAK,MAAN,CAAR,GAAwB,KAAK,YAD9B,CADF;AAKA,WAAK,QAAL,GAAgB,IAAI,CAAC,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":"","file":"index.js"}
+256
View File
@@ -0,0 +1,256 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _colorable = _interopRequireDefault(require("../colorable"));
var _themeable = _interopRequireDefault(require("../themeable"));
var _registrable = require("../registrable");
var _helpers = require("../../util/helpers");
var _console = require("../../util/console");
var _mixins = _interopRequireDefault(require("../../util/mixins"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var baseMixins = (0, _mixins.default)(_colorable.default, (0, _registrable.inject)('form'), _themeable.default);
/* @vue/component */
var _default2 = baseMixins.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: {
computedColor: function computedColor() {
if (this.isDisabled) return undefined;
if (this.color) return this.color; // It's assumed that if the input is on a
// dark background, the user will want to
// have a white color. If the entire app
// is setup to be dark, then they will
// like want to use their primary color
if (this.isDark && !this.appIsDark) return 'white';else return 'primary';
},
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() {
if (this.isDisabled) return false;
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);
}
},
isDisabled: function isDisabled() {
return this.disabled || !!this.form && this.form.disabled;
},
isInteractive: function isInteractive() {
return !this.isDisabled && !this.isReadonly;
},
isReadonly: function isReadonly() {
return this.readonly || !!this.form && this.form.readonly;
},
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.isDisabled) return undefined;
if (this.hasError && this.shouldValidate) return 'error';
if (this.hasSuccess) return 'success';
if (this.hasColor) return this.computedColor;
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
if (!val && !this.isDisabled) {
this.hasFocused = true;
this.validateOnBlur && this.$nextTick(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.length > 1 ? arguments[1] : undefined;
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 (valid === false || typeof valid === 'string') {
errorBucket.push(valid || '');
} else if (typeof valid !== 'boolean') {
(0, _console.consoleError)("Rules should return a string or boolean, received '".concat(_typeof(valid), "' instead"), this);
}
}
this.errorBucket = errorBucket;
this.valid = errorBucket.length === 0;
return this.valid;
}
}
});
exports.default = _default2;
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long