@dimailn/vuetify 2.7.2-alpha22 → 2.7.2-alpha23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,39 +52,50 @@ var _default = (0, _mixins.default)(_bindsAttrs.default, (0, _registrable.provid
52
52
  handler: function handler(val) {
53
53
  var errors = Object.values(val).includes(true);
54
54
  this.$emit('input', !errors);
55
+ this.$emit('update:modelValue', !errors);
55
56
  },
56
57
  deep: true,
57
58
  immediate: true
58
59
  }
59
60
  },
60
61
  methods: {
62
+ getInputUid: function getInputUid(input) {
63
+ return input.$.uid;
64
+ },
61
65
  watchInput: function watchInput(input) {
62
66
  var _this = this;
63
67
 
64
- var watcher = function watcher(input) {
65
- return input.$watch('hasError', function (val) {
66
- _this.errorBag[input.$.uid] = val;
67
- }, {
68
- immediate: true
69
- });
68
+ var inputId = this.getInputUid(input);
69
+
70
+ var createErrorWatcher = function createErrorWatcher(inputComponent) {
71
+ if (typeof inputComponent.$watch === 'function') {
72
+ return inputComponent.$watch('hasError', function (hasError) {
73
+ _this.errorBag[inputId] = hasError;
74
+ }, {
75
+ immediate: true
76
+ });
77
+ } else {
78
+ // Fallback для Vue 3
79
+ return function () {};
80
+ }
70
81
  };
71
82
 
72
83
  var watchers = {
73
- _uid: input.$.uid,
84
+ _uid: inputId,
74
85
  valid: function valid() {},
75
86
  shouldValidate: function shouldValidate() {}
76
87
  };
77
88
 
78
89
  if (this.lazyValidation) {
79
- // Only start watching inputs if we need to
80
- watchers.shouldValidate = input.$watch('shouldValidate', function (val) {
81
- if (!val) return; // Only watch if we're not already doing it
82
-
83
- if (_this.errorBag.hasOwnProperty(input.$.uid)) return;
84
- watchers.valid = watcher(input);
85
- });
90
+ if (typeof input.$watch === 'function') {
91
+ watchers.shouldValidate = input.$watch('shouldValidate', function (shouldValidate) {
92
+ if (!shouldValidate) return;
93
+ if (_this.errorBag.hasOwnProperty(inputId)) return;
94
+ watchers.valid = createErrorWatcher(input);
95
+ });
96
+ }
86
97
  } else {
87
- watchers.valid = watcher(input);
98
+ watchers.valid = createErrorWatcher(input);
88
99
  }
89
100
 
90
101
  return watchers;
@@ -127,37 +138,40 @@ var _default = (0, _mixins.default)(_bindsAttrs.default, (0, _registrable.provid
127
138
  this.watchers.push(this.watchInput(input));
128
139
  },
129
140
  unregister: function unregister(input) {
130
- var found = this.inputs.find(function (i) {
131
- return i.$.uid === input.$.uid;
141
+ var _this3 = this;
142
+
143
+ var inputId = this.getInputUid(input);
144
+ var foundInput = this.inputs.find(function (inputComponent) {
145
+ return _this3.getInputUid(inputComponent) === inputId;
132
146
  });
133
- if (!found) return;
134
- var unwatch = this.watchers.find(function (i) {
135
- return i._uid === found.$.uid;
147
+ if (!foundInput) return;
148
+ var inputWatcher = this.watchers.find(function (watcher) {
149
+ return watcher._uid === inputId;
136
150
  });
137
151
 
138
- if (unwatch) {
139
- unwatch.valid();
140
- unwatch.shouldValidate();
152
+ if (inputWatcher) {
153
+ inputWatcher.valid();
154
+ inputWatcher.shouldValidate();
141
155
  }
142
156
 
143
- this.watchers = this.watchers.filter(function (i) {
144
- return i._uid !== found.$.uid;
157
+ this.watchers = this.watchers.filter(function (watcher) {
158
+ return watcher._uid !== inputId;
145
159
  });
146
- this.inputs = this.inputs.filter(function (i) {
147
- return i.$.uid !== found.$.uid;
160
+ this.inputs = this.inputs.filter(function (inputComponent) {
161
+ return _this3.getInputUid(inputComponent) !== inputId;
148
162
  });
149
- delete this.errorBag[found.$.uid];
163
+ delete this.errorBag[inputId];
150
164
  }
151
165
  },
152
166
  render: function render() {
153
- var _this3 = this;
167
+ var _this4 = this;
154
168
 
155
169
  return (0, _vue.h)('form', _objectSpread(_objectSpread({
156
170
  class: 'v-form',
157
171
  novalidate: true
158
172
  }, this.attrs$), {}, {
159
173
  onSubmit: function onSubmit(e) {
160
- return _this3.$emit('submit', e);
174
+ return _this4.$emit('submit', e);
161
175
  }
162
176
  }), (0, _helpers.getSlot)(this));
163
177
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VForm/VForm.ts"],"names":[],"mappings":"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","sourcesContent":["import {h} from 'vue'\n// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.errorBag[input.$.uid] = val\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input.$.uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input.$.uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i.$.uid === input.$.uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found.$.uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found.$.uid)\n this.inputs = this.inputs.filter(i => i.$.uid !== found.$.uid)\n delete this.errorBag[found.$.uid]\n },\n },\n\n render (): VNode {\n return h('form', {\n class: 'v-form',\n novalidate: true,\n ...this.attrs$,\n onSubmit: (e: Event) => this.$emit('submit', e),\n }, getSlot(this))\n },\n})\n"],"sourceRoot":"","file":"VForm.js"}
1
+ {"version":3,"sources":["../../../src/components/VForm/VForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, VNode } from 'vue'\n// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { getSlot } from '../../util/helpers'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\ninterface VFormContext {\n inputs: VInputInstance[]\n watchers: Watchers[]\n errorBag: ErrorBag\n lazyValidation: boolean\n $emit: (event: string, ...args: any[]) => void\n getInputUid: (input: VInputInstance) => number\n watchInput: (input: VInputInstance) => Watchers\n resetErrorBag: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (this: VFormContext, val: ErrorBag) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n this.$emit('update:modelValue', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n getInputUid (input: VInputInstance): number {\n return input.$.uid\n },\n\n watchInput (this: VFormContext, input: VInputInstance): Watchers {\n const inputId = this.getInputUid(input)\n\n const createErrorWatcher = (inputComponent: VInputInstance): (() => void) => {\n if (typeof inputComponent.$watch === 'function') {\n return inputComponent.$watch('hasError', (hasError: boolean) => {\n this.errorBag[inputId] = hasError\n }, { immediate: true })\n } else {\n // Fallback для Vue 3\n return () => {}\n }\n }\n\n const watchers: Watchers = {\n _uid: inputId,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n if (typeof input.$watch === 'function') {\n watchers.shouldValidate = input.$watch('shouldValidate', (shouldValidate: boolean) => {\n if (!shouldValidate) return\n\n if (this.errorBag.hasOwnProperty(inputId)) return\n\n watchers.valid = createErrorWatcher(input)\n })\n }\n } else {\n watchers.valid = createErrorWatcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (this: VFormContext): boolean {\n return this.inputs.filter((input: VInputInstance) => !input.validate(true)).length === 0\n },\n /** @public */\n reset (this: VFormContext): void {\n this.inputs.forEach((input: VInputInstance) => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag (this: VFormContext) {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation (this: VFormContext) {\n this.inputs.forEach((input: VInputInstance) => input.resetValidation())\n this.resetErrorBag()\n },\n\n register (this: VFormContext, input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n\n unregister (this: VFormContext, input: VInputInstance) {\n const inputId = this.getInputUid(input)\n const foundInput = this.inputs.find((inputComponent: VInputInstance) => this.getInputUid(inputComponent) === inputId)\n\n if (!foundInput) return\n\n const inputWatcher = this.watchers.find((watcher: Watchers) => watcher._uid === inputId)\n if (inputWatcher) {\n inputWatcher.valid()\n inputWatcher.shouldValidate()\n }\n\n this.watchers = this.watchers.filter((watcher: Watchers) => watcher._uid !== inputId)\n this.inputs = this.inputs.filter((inputComponent: VInputInstance) => this.getInputUid(inputComponent) !== inputId)\n\n delete this.errorBag[inputId]\n },\n },\n\n render (): VNode {\n return h('form', {\n class: 'v-form',\n novalidate: true,\n ...this.attrs$,\n onSubmit: (e: Event) => this.$emit('submit', e),\n }, getSlot(this))\n },\n})\n"],"sourceRoot":"","file":"VForm.js"}
package/es5/framework.js CHANGED
@@ -79,7 +79,7 @@ var Vuetify = /*#__PURE__*/function () {
79
79
  exports.default = Vuetify;
80
80
  Vuetify.install = _install.install;
81
81
  Vuetify.installed = false;
82
- Vuetify.version = "2.7.2-alpha21";
82
+ Vuetify.version = "2.7.2-alpha22";
83
83
  Vuetify.config = {
84
84
  silent: false
85
85
  };
@@ -15,17 +15,17 @@ var _helpers = require("../../util/helpers");
15
15
 
16
16
  var _console = require("../../util/console");
17
17
 
18
- var _mixins = _interopRequireDefault(require("../../util/mixins"));
18
+ var _vue = require("vue");
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
22
22
  function _typeof(obj) { "@babel/helpers - typeof"; 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); }
23
23
 
24
- var baseMixins = (0, _mixins.default)(_colorable.default, (0, _registrable.inject)('form'), _themeable.default);
25
24
  /* @vue/component */
26
-
27
- var _default2 = baseMixins.extend({
25
+ var _default2 = (0, _vue.defineComponent)({
28
26
  name: 'validatable',
27
+ extends: (0, _registrable.inject)('form'),
28
+ mixins: [_colorable.default, _themeable.default],
29
29
  props: {
30
30
  disabled: {
31
31
  type: Boolean,
@@ -71,6 +71,8 @@ var _default2 = baseMixins.extend({
71
71
  }
72
72
  },
73
73
  data: function data() {
74
+ var _a;
75
+
74
76
  return {
75
77
  errorBucket: [],
76
78
  hasColor: false,
@@ -78,7 +80,7 @@ var _default2 = baseMixins.extend({
78
80
  hasInput: false,
79
81
  isFocused: false,
80
82
  isResetting: false,
81
- lazyValue: this.value,
83
+ lazyValue: (_a = this.modelValue) !== null && _a !== void 0 ? _a : null,
82
84
  valid: false
83
85
  };
84
86
  },
@@ -127,6 +129,7 @@ var _default2 = baseMixins.extend({
127
129
  set: function set(val) {
128
130
  this.lazyValue = val;
129
131
  this.$emit('input', val);
132
+ this.$emit('update:modelValue', val);
130
133
  }
131
134
  },
132
135
  isDisabled: function isDisabled() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/validatable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;;;;;AAMA,IAAM,UAAU,GAAG,qBACjB,kBADiB,EAEjB,yBAA+B,MAA/B,CAFiB,EAGjB,kBAHiB,CAAnB;AAMA;;gBACe,UAAU,CAAC,MAAX,CAAkB;AAC/B,EAAA,IAAI,EAAE,aADyB;AAG/B,EAAA,KAAK,EAAE;AACL,IAAA,QAAQ,EAAE;AACR,MAAA,IAAI,EAAE,OADE;AAER,MAAA,OAAO,EAAE;AAFD,KADL;AAKL,IAAA,KAAK,EAAE,OALF;AAML,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADI;AAEV,MAAA,OAAO,EAAE;AAFC,KANP;AAUL,IAAA,aAAa,EAAE;AACb,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,KAAT,CADO;AAEb,MAAA,OAAO,EAAE;AAAA,eAAM,EAAN;AAAA;AAFI,KAVV;AAcL,IAAA,QAAQ,EAAE;AACR,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,KAAT,CADE;AAER,MAAA,OAAO,EAAE;AAAA,eAAM,EAAN;AAAA;AAFD,KAdL;AAkBL,IAAA,QAAQ,EAAE;AACR,MAAA,IAAI,EAAE,OADE;AAER,MAAA,OAAO,EAAE;AAFD,KAlBL;AAsBL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,KADD;AAEL,MAAA,OAAO,EAAE;AAAA,eAAM,EAAN;AAAA;AAFJ,KAtBF;AA0BL,IAAA,OAAO,EAAE,OA1BJ;AA2BL,IAAA,eAAe,EAAE;AACf,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,KAAT,CADS;AAEf,MAAA,OAAO,EAAE;AAAA,eAAM,EAAN;AAAA;AAFM,KA3BZ;AA+BL,IAAA,cAAc,EAAE,OA/BX;AAgCL,IAAA,UAAU,EAAE;AAAE,MAAA,QAAQ,EAAE;AAAZ;AAhCP,GAHwB;AAsC/B,EAAA,IAtC+B,kBAsC3B;AACF,WAAO;AACL,MAAA,WAAW,EAAE,EADR;AAEL,MAAA,QAAQ,EAAE,KAFL;AAGL,MAAA,UAAU,EAAE,KAHP;AAIL,MAAA,QAAQ,EAAE,KAJL;AAKL,MAAA,SAAS,EAAE,KALN;AAML,MAAA,WAAW,EAAE,KANR;AAOL,MAAA,SAAS,EAAE,KAAK,KAPX;AAQL,MAAA,KAAK,EAAE;AARF,KAAP;AAUD,GAjD8B;AAmD/B,EAAA,QAAQ,EAAE;AACR,IAAA,aADQ,2BACK;AACX,UAAI,KAAK,UAAT,EAAqB,OAAO,SAAP;AACrB,UAAI,KAAK,KAAT,EAAgB,OAAO,KAAK,KAAZ,CAFL,CAGX;AACA;AACA;AACA;AACA;;AACA,UAAI,KAAK,MAAL,IAAe,CAAC,KAAK,SAAzB,EAAoC,OAAO,OAAP,CAApC,KACK,OAAO,SAAP;AACN,KAXO;AAYR,IAAA,QAZQ,sBAYA;AACN,aACE,KAAK,qBAAL,CAA2B,MAA3B,GAAoC,CAApC,IACA,KAAK,WAAL,CAAiB,MAAjB,GAA0B,CAD1B,IAEA,KAAK,KAHP;AAKD,KAlBO;AAmBR;AACA;AACA,IAAA,UArBQ,wBAqBE;AACR,aACE,KAAK,uBAAL,CAA6B,MAA7B,GAAsC,CAAtC,IACA,KAAK,OAFP;AAID,KA1BO;AA2BR,IAAA,aA3BQ,2BA2BK;AACX,aAAO,KAAK,qBAAL,CAA2B,MAA3B,GAAoC,CAApC,IAAyC,KAAK,KAArD;AACD,KA7BO;AA8BR,IAAA,WA9BQ,yBA8BG;AACT,aAAO,KAAK,gBAAL,CAAsB,MAAtB,GAA+B,CAAtC;AACD,KAhCO;AAiCR,IAAA,QAjCQ,sBAiCA;AACN,UAAI,KAAK,UAAT,EAAqB,OAAO,KAAP;AAErB,aACE,KAAK,UAAL,IACC,KAAK,cAAL,IAAuB,KAAK,QAF/B;AAID,KAxCO;AAyCR,IAAA,qBAzCQ,mCAyCa;AACnB,aAAO,KAAK,mBAAL,CAAyB,KAAK,aAA9B,CAAP;AACD,KA3CO;AA4CR,IAAA,gBA5CQ,8BA4CQ;AACd,aAAO,KAAK,mBAAL,CAAyB,KAAK,QAA9B,CAAP;AACD,KA9CO;AA+CR,IAAA,uBA/CQ,qCA+Ce;AACrB,aAAO,KAAK,mBAAL,CAAyB,KAAK,eAA9B,CAAP;AACD,KAjDO;AAkDR,IAAA,aAAa,EAAE;AACb,MAAA,GADa,iBACV;AACD,eAAO,KAAK,SAAZ;AACD,OAHY;AAIb,MAAA,GAJa,eAIR,GAJQ,EAIA;AACX,aAAK,SAAL,GAAiB,GAAjB;AAEA,aAAK,KAAL,CAAW,OAAX,EAAoB,GAApB;AACD;AARY,KAlDP;AA4DR,IAAA,UA5DQ,wBA4DE;;;AACR,aAAO,CAAA,EAAA,GAAA,KAAK,QAAL,MAAa,IAAb,IAAa,EAAA,KAAA,KAAA,CAAb,GAAa,EAAb,GACL,CAAC,CAAC,KAAK,IAAP,IACA,KAAK,IAAL,CAAU,QAFZ;AAID,KAjEO;AAkER,IAAA,aAlEQ,2BAkEK;AACX,aAAO,CAAC,KAAK,UAAN,IAAoB,CAAC,KAAK,UAAjC;AACD,KApEO;AAqER,IAAA,UArEQ,wBAqEE;;;AACR,aAAO,CAAA,EAAA,GAAA,KAAK,QAAL,MAAa,IAAb,IAAa,EAAA,KAAA,KAAA,CAAb,GAAa,EAAb,GACL,CAAC,CAAC,KAAK,IAAP,IACA,KAAK,IAAL,CAAU,QAFZ;AAID,KA1EO;AA2ER,IAAA,cA3EQ,4BA2EM;AACZ,UAAI,KAAK,aAAT,EAAwB,OAAO,IAAP;AACxB,UAAI,KAAK,WAAT,EAAsB,OAAO,KAAP;AAEtB,aAAO,KAAK,cAAL,GACH,KAAK,UAAL,IAAmB,CAAC,KAAK,SADtB,GAEF,KAAK,QAAL,IAAiB,KAAK,UAF3B;AAGD,KAlFO;AAmFR,IAAA,WAnFQ,yBAmFG;AACT,aAAO,KAAK,gBAAL,CAAsB,KAAtB,CAA4B,CAA5B,EAA+B,MAAM,CAAC,KAAK,UAAN,CAArC,CAAP;AACD,KArFO;AAsFR,IAAA,eAtFQ,6BAsFO;AACb,UAAI,KAAK,UAAT,EAAqB,OAAO,SAAP;AACrB,UAAI,KAAK,QAAL,IAAiB,KAAK,cAA1B,EAA0C,OAAO,OAAP;AAC1C,UAAI,KAAK,UAAT,EAAqB,OAAO,SAAP;AACrB,UAAI,KAAK,QAAT,EAAmB,OAAO,KAAK,aAAZ;AACnB,aAAO,SAAP;AACD,KA5FO;AA6FR,IAAA,gBA7FQ,8BA6FQ;AACd,UAAI,KAAK,qBAAL,CAA2B,MAA3B,GAAoC,CAAxC,EAA2C;AACzC,eAAO,KAAK,qBAAZ;AACD,OAFD,MAEO,IAAI,KAAK,eAAL,IAAwB,KAAK,eAAL,CAAqB,MAArB,GAA8B,CAA1D,EAA6D;AAClE,eAAO,KAAK,uBAAZ;AACD,OAFM,MAEA,IAAI,KAAK,QAAL,IAAiB,KAAK,QAAL,CAAc,MAAd,GAAuB,CAA5C,EAA+C;AACpD,eAAO,KAAK,gBAAZ;AACD,OAFM,MAEA,IAAI,KAAK,cAAT,EAAyB;AAC9B,eAAO,KAAK,WAAZ;AACD,OAFM,MAEA,OAAO,EAAP;AACR;AAvGO,GAnDqB;AA6J/B,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE;AACL,MAAA,OADK,mBACI,MADJ,EACY,MADZ,EACkB;AACrB,YAAI,wBAAU,MAAV,EAAkB,MAAlB,CAAJ,EAA+B;AAC/B,aAAK,QAAL;AACD,OAJI;AAKL,MAAA,IAAI,EAAE;AALD,KADF;AAQL,IAAA,aARK,2BAQQ;AACX;AACA;AACA,WAAK,QAAL,GAAgB,IAAhB;AACA,WAAK,cAAL,IAAuB,KAAK,SAAL,CAAe,KAAK,QAApB,CAAvB;AACD,KAbI;AAcL,IAAA,SAdK,qBAcM,GAdN,EAcS;AACZ;AACA;AACA,UACE,CAAC,GAAD,IACA,CAAC,KAAK,UAFR,EAGE;AACA,aAAK,UAAL,GAAkB,IAAlB;AACA,aAAK,cAAL,IAAuB,KAAK,SAAL,CAAe,KAAK,QAApB,CAAvB;AACD;AACF,KAxBI;AAyBL,IAAA,WAzBK,yBAyBM;AAAA;;AACT,MAAA,UAAU,CAAC,YAAK;AACd,QAAA,KAAI,CAAC,QAAL,GAAgB,KAAhB;AACA,QAAA,KAAI,CAAC,UAAL,GAAkB,KAAlB;AACA,QAAA,KAAI,CAAC,WAAL,GAAmB,KAAnB;;AACA,QAAA,KAAI,CAAC,QAAL;AACD,OALS,EAKP,CALO,CAAV;AAMD,KAhCI;AAiCL,IAAA,QAjCK,oBAiCK,GAjCL,EAiCQ;AACX,UAAI,KAAK,cAAT,EAAyB;AACvB,aAAK,KAAL,CAAW,cAAX,EAA2B,GAA3B;AACD;AACF,KArCI;AAsCL,IAAA,UAtCK,sBAsCO,GAtCP,EAsCU;AACb,WAAK,SAAL,GAAiB,GAAjB;AACD;AAxCI,GA7JwB;AAwM/B,EAAA,WAxM+B,yBAwMpB;AACT,SAAK,QAAL;AACD,GA1M8B;AA4M/B,EAAA,OA5M+B,qBA4MxB;AACL,SAAK,IAAL,IAAa,KAAK,IAAL,CAAU,QAAV,CAAmB,IAAnB,CAAb;AACD,GA9M8B;AAgN/B,EAAA,aAhN+B,2BAgNlB;AACX,SAAK,IAAL,IAAa,KAAK,IAAL,CAAU,UAAV,CAAqB,IAArB,CAAb;AACD,GAlN8B;AAoN/B,EAAA,OAAO,EAAE;AACP,IAAA,mBADO,+BACc,QADd,EAC2C;AAChD,UAAI,CAAC,QAAL,EAAe,OAAO,EAAP,CAAf,KACK,IAAI,KAAK,CAAC,OAAN,CAAc,QAAd,CAAJ,EAA6B,OAAO,QAAP,CAA7B,KACA,OAAO,CAAC,QAAD,CAAP;AACN,KALM;;AAMP;AACA,IAAA,KAPO,mBAOF;AACH,WAAK,WAAL,GAAmB,IAAnB;AACA,WAAK,aAAL,GAAqB,KAAK,CAAC,OAAN,CAAc,KAAK,aAAnB,IACjB,EADiB,GAEjB,IAFJ;AAGD,KAZM;;AAaP;AACA,IAAA,eAdO,6BAcQ;AACb,WAAK,WAAL,GAAmB,IAAnB;AACD,KAhBM;;AAiBP;AACA,IAAA,QAlBO,sBAkB6B;AAAA,UAA1B,KAA0B,uEAAlB,KAAkB;AAAA,UAAX,KAAW;AAClC,UAAM,WAAW,GAAG,EAApB;AACA,MAAA,KAAK,GAAG,KAAK,IAAI,KAAK,aAAtB;AAEA,UAAI,KAAJ,EAAW,KAAK,QAAL,GAAgB,KAAK,UAAL,GAAkB,IAAlC;;AAEX,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,KAAK,KAAL,CAAW,MAAvC,EAA+C,KAAK,EAApD,EAAwD;AACtD,YAAM,IAAI,GAAG,KAAK,KAAL,CAAW,KAAX,CAAb;AACA,YAAM,KAAK,GAAG,OAAO,IAAP,KAAgB,UAAhB,GAA6B,IAAI,CAAC,KAAD,CAAjC,GAA2C,IAAzD;;AAEA,YAAI,KAAK,KAAK,KAAV,IAAmB,OAAO,KAAP,KAAiB,QAAxC,EAAkD;AAChD,UAAA,WAAW,CAAC,IAAZ,CAAiB,KAAK,IAAI,EAA1B;AACD,SAFD,MAEO,IAAI,OAAO,KAAP,KAAiB,SAArB,EAAgC;AACrC,0GAA0E,KAA1E,iBAA4F,IAA5F;AACD;AACF;;AAED,WAAK,WAAL,GAAmB,WAAnB;AACA,WAAK,KAAL,GAAa,WAAW,CAAC,MAAZ,KAAuB,CAApC;AAEA,aAAO,KAAK,KAAZ;AACD;AAvCM;AApNsB,CAAlB,C","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator<InputValidationRules>,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n validateOnBlur: Boolean,\n modelValue: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n modelValue (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeUnmount () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/validatable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { defineComponent, PropType } from 'vue'\n\n// Types\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\n/* @vue/component */\nexport default defineComponent({\n name: 'validatable',\n\n extends: RegistrableInject<'form', any>('form'),\n\n mixins: [Colorable, Themeable],\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n messages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array as PropType<InputValidationRules>,\n default: () => [],\n },\n success: Boolean,\n successMessages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n validateOnBlur: Boolean,\n modelValue: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.modelValue ?? null,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n this.$emit('update:modelValue', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n modelValue (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeUnmount () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -2,7 +2,8 @@ import { h } from 'vue'; // Mixins
2
2
 
3
3
  import mixins from '../../util/mixins';
4
4
  import BindsAttrs from '../../mixins/binds-attrs';
5
- import { provide as RegistrableProvide } from '../../mixins/registrable';
5
+ import { provide as RegistrableProvide } from '../../mixins/registrable'; // Helpers
6
+
6
7
  import { getSlot } from '../../util/helpers';
7
8
  /* @vue/component */
8
9
 
@@ -34,6 +35,7 @@ export default mixins(BindsAttrs, RegistrableProvide('form')
34
35
  handler(val) {
35
36
  const errors = Object.values(val).includes(true);
36
37
  this.$emit('input', !errors);
38
+ this.$emit('update:modelValue', !errors);
37
39
  },
38
40
 
39
41
  deep: true,
@@ -41,31 +43,42 @@ export default mixins(BindsAttrs, RegistrableProvide('form')
41
43
  }
42
44
  },
43
45
  methods: {
46
+ getInputUid(input) {
47
+ return input.$.uid;
48
+ },
49
+
44
50
  watchInput(input) {
45
- const watcher = input => {
46
- return input.$watch('hasError', val => {
47
- this.errorBag[input.$.uid] = val;
48
- }, {
49
- immediate: true
50
- });
51
+ const inputId = this.getInputUid(input);
52
+
53
+ const createErrorWatcher = inputComponent => {
54
+ if (typeof inputComponent.$watch === 'function') {
55
+ return inputComponent.$watch('hasError', hasError => {
56
+ this.errorBag[inputId] = hasError;
57
+ }, {
58
+ immediate: true
59
+ });
60
+ } else {
61
+ // Fallback для Vue 3
62
+ return () => {};
63
+ }
51
64
  };
52
65
 
53
66
  const watchers = {
54
- _uid: input.$.uid,
67
+ _uid: inputId,
55
68
  valid: () => {},
56
69
  shouldValidate: () => {}
57
70
  };
58
71
 
59
72
  if (this.lazyValidation) {
60
- // Only start watching inputs if we need to
61
- watchers.shouldValidate = input.$watch('shouldValidate', val => {
62
- if (!val) return; // Only watch if we're not already doing it
63
-
64
- if (this.errorBag.hasOwnProperty(input.$.uid)) return;
65
- watchers.valid = watcher(input);
66
- });
73
+ if (typeof input.$watch === 'function') {
74
+ watchers.shouldValidate = input.$watch('shouldValidate', shouldValidate => {
75
+ if (!shouldValidate) return;
76
+ if (this.errorBag.hasOwnProperty(inputId)) return;
77
+ watchers.valid = createErrorWatcher(input);
78
+ });
79
+ }
67
80
  } else {
68
- watchers.valid = watcher(input);
81
+ watchers.valid = createErrorWatcher(input);
69
82
  }
70
83
 
71
84
  return watchers;
@@ -103,18 +116,19 @@ export default mixins(BindsAttrs, RegistrableProvide('form')
103
116
  },
104
117
 
105
118
  unregister(input) {
106
- const found = this.inputs.find(i => i.$.uid === input.$.uid);
107
- if (!found) return;
108
- const unwatch = this.watchers.find(i => i._uid === found.$.uid);
109
-
110
- if (unwatch) {
111
- unwatch.valid();
112
- unwatch.shouldValidate();
119
+ const inputId = this.getInputUid(input);
120
+ const foundInput = this.inputs.find(inputComponent => this.getInputUid(inputComponent) === inputId);
121
+ if (!foundInput) return;
122
+ const inputWatcher = this.watchers.find(watcher => watcher._uid === inputId);
123
+
124
+ if (inputWatcher) {
125
+ inputWatcher.valid();
126
+ inputWatcher.shouldValidate();
113
127
  }
114
128
 
115
- this.watchers = this.watchers.filter(i => i._uid !== found.$.uid);
116
- this.inputs = this.inputs.filter(i => i.$.uid !== found.$.uid);
117
- delete this.errorBag[found.$.uid];
129
+ this.watchers = this.watchers.filter(watcher => watcher._uid !== inputId);
130
+ this.inputs = this.inputs.filter(inputComponent => this.getInputUid(inputComponent) !== inputId);
131
+ delete this.errorBag[inputId];
118
132
  }
119
133
 
120
134
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VForm/VForm.ts"],"names":[],"mappings":"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","sourcesContent":["import {h} from 'vue'\n// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.errorBag[input.$.uid] = val\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input.$.uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input.$.uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i.$.uid === input.$.uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found.$.uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found.$.uid)\n this.inputs = this.inputs.filter(i => i.$.uid !== found.$.uid)\n delete this.errorBag[found.$.uid]\n },\n },\n\n render (): VNode {\n return h('form', {\n class: 'v-form',\n novalidate: true,\n ...this.attrs$,\n onSubmit: (e: Event) => this.$emit('submit', e),\n }, getSlot(this))\n },\n})\n"],"sourceRoot":"","file":"VForm.js"}
1
+ {"version":3,"sources":["../../../src/components/VForm/VForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, VNode } from 'vue'\n// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { getSlot } from '../../util/helpers'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\ninterface VFormContext {\n inputs: VInputInstance[]\n watchers: Watchers[]\n errorBag: ErrorBag\n lazyValidation: boolean\n $emit: (event: string, ...args: any[]) => void\n getInputUid: (input: VInputInstance) => number\n watchInput: (input: VInputInstance) => Watchers\n resetErrorBag: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (this: VFormContext, val: ErrorBag) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n this.$emit('update:modelValue', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n getInputUid (input: VInputInstance): number {\n return input.$.uid\n },\n\n watchInput (this: VFormContext, input: VInputInstance): Watchers {\n const inputId = this.getInputUid(input)\n\n const createErrorWatcher = (inputComponent: VInputInstance): (() => void) => {\n if (typeof inputComponent.$watch === 'function') {\n return inputComponent.$watch('hasError', (hasError: boolean) => {\n this.errorBag[inputId] = hasError\n }, { immediate: true })\n } else {\n // Fallback для Vue 3\n return () => {}\n }\n }\n\n const watchers: Watchers = {\n _uid: inputId,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n if (typeof input.$watch === 'function') {\n watchers.shouldValidate = input.$watch('shouldValidate', (shouldValidate: boolean) => {\n if (!shouldValidate) return\n\n if (this.errorBag.hasOwnProperty(inputId)) return\n\n watchers.valid = createErrorWatcher(input)\n })\n }\n } else {\n watchers.valid = createErrorWatcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (this: VFormContext): boolean {\n return this.inputs.filter((input: VInputInstance) => !input.validate(true)).length === 0\n },\n /** @public */\n reset (this: VFormContext): void {\n this.inputs.forEach((input: VInputInstance) => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag (this: VFormContext) {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation (this: VFormContext) {\n this.inputs.forEach((input: VInputInstance) => input.resetValidation())\n this.resetErrorBag()\n },\n\n register (this: VFormContext, input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n\n unregister (this: VFormContext, input: VInputInstance) {\n const inputId = this.getInputUid(input)\n const foundInput = this.inputs.find((inputComponent: VInputInstance) => this.getInputUid(inputComponent) === inputId)\n\n if (!foundInput) return\n\n const inputWatcher = this.watchers.find((watcher: Watchers) => watcher._uid === inputId)\n if (inputWatcher) {\n inputWatcher.valid()\n inputWatcher.shouldValidate()\n }\n\n this.watchers = this.watchers.filter((watcher: Watchers) => watcher._uid !== inputId)\n this.inputs = this.inputs.filter((inputComponent: VInputInstance) => this.getInputUid(inputComponent) !== inputId)\n\n delete this.errorBag[inputId]\n },\n },\n\n render (): VNode {\n return h('form', {\n class: 'v-form',\n novalidate: true,\n ...this.attrs$,\n onSubmit: (e: Event) => this.$emit('submit', e),\n }, getSlot(this))\n },\n})\n"],"sourceRoot":"","file":"VForm.js"}
package/lib/framework.js CHANGED
@@ -46,7 +46,7 @@ export default class Vuetify {
46
46
  }
47
47
  Vuetify.install = install;
48
48
  Vuetify.installed = false;
49
- Vuetify.version = "2.7.2-alpha21";
49
+ Vuetify.version = "2.7.2-alpha22";
50
50
  Vuetify.config = {
51
51
  silent: false
52
52
  };
@@ -5,12 +5,13 @@ import { inject as RegistrableInject } from '../registrable'; // Utilities
5
5
 
6
6
  import { deepEqual } from '../../util/helpers';
7
7
  import { consoleError } from '../../util/console';
8
- import mixins from '../../util/mixins';
9
- const baseMixins = mixins(Colorable, RegistrableInject('form'), Themeable);
8
+ import { defineComponent } from 'vue';
10
9
  /* @vue/component */
11
10
 
12
- export default baseMixins.extend({
11
+ export default defineComponent({
13
12
  name: 'validatable',
13
+ extends: RegistrableInject('form'),
14
+ mixins: [Colorable, Themeable],
14
15
  props: {
15
16
  disabled: {
16
17
  type: Boolean,
@@ -49,6 +50,8 @@ export default baseMixins.extend({
49
50
  },
50
51
 
51
52
  data() {
53
+ var _a;
54
+
52
55
  return {
53
56
  errorBucket: [],
54
57
  hasColor: false,
@@ -56,7 +59,7 @@ export default baseMixins.extend({
56
59
  hasInput: false,
57
60
  isFocused: false,
58
61
  isResetting: false,
59
- lazyValue: this.value,
62
+ lazyValue: (_a = this.modelValue) !== null && _a !== void 0 ? _a : null,
60
63
  valid: false
61
64
  };
62
65
  },
@@ -116,6 +119,7 @@ export default baseMixins.extend({
116
119
  set(val) {
117
120
  this.lazyValue = val;
118
121
  this.$emit('input', val);
122
+ this.$emit('update:modelValue', val);
119
123
  }
120
124
 
121
125
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/validatable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator<InputValidationRules>,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n validateOnBlur: Boolean,\n modelValue: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n modelValue (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeUnmount () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/validatable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { defineComponent, PropType } from 'vue'\n\n// Types\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\n/* @vue/component */\nexport default defineComponent({\n name: 'validatable',\n\n extends: RegistrableInject<'form', any>('form'),\n\n mixins: [Colorable, Themeable],\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n messages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array as PropType<InputValidationRules>,\n default: () => [],\n },\n success: Boolean,\n successMessages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n validateOnBlur: Boolean,\n modelValue: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.modelValue ?? null,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n this.$emit('update:modelValue', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n modelValue (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeUnmount () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dimailn/vuetify",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "2.7.2-alpha22",
4
+ "version": "2.7.2-alpha23",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"