v-money3 3.25.1 → 3.26.0
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.
- package/README.md +32 -0
- package/dist/component.vue.d.ts +9 -0
- package/dist/options.d.ts +1 -0
- package/dist/v-money3.mjs +59 -35
- package/dist/v-money3.umd.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -113,6 +113,7 @@ app.directive('money3', Money3Directive)
|
|
|
113
113
|
disabled: false,
|
|
114
114
|
min: null,
|
|
115
115
|
max: null,
|
|
116
|
+
setMaxIfBigger: true,
|
|
116
117
|
allowBlank: false,
|
|
117
118
|
treatZeroAsBlank: true,
|
|
118
119
|
minimumNumberOfCharacters: 0,
|
|
@@ -178,6 +179,7 @@ To ensure proper functionality, you must use `v-model.lazy` for binding.
|
|
|
178
179
|
disabled: false,
|
|
179
180
|
min: null,
|
|
180
181
|
max: null,
|
|
182
|
+
setMaxIfBigger: true,
|
|
181
183
|
allowBlank: false,
|
|
182
184
|
treatZeroAsBlank: true,
|
|
183
185
|
minimumNumberOfCharacters: 0,
|
|
@@ -205,6 +207,34 @@ If you directly bind it, you're perfectly fine as well:
|
|
|
205
207
|
<input :model-modifiers="{ number: true }" v-model.lazy="amount" v-money3="config" />
|
|
206
208
|
```
|
|
207
209
|
|
|
210
|
+
### Use with wrapper components (Vuetify, Nuxt UI, Element Plus, …)
|
|
211
|
+
|
|
212
|
+
The directive works on any component that renders a single inner `<input>`. Apply it to the wrapper and it walks the host's DOM to find the inner input and attach its listeners there.
|
|
213
|
+
|
|
214
|
+
```html
|
|
215
|
+
<template>
|
|
216
|
+
<!-- Vuetify -->
|
|
217
|
+
<v-text-field v-money3="config" v-model="amount" label="Amount" />
|
|
218
|
+
|
|
219
|
+
<!-- Nuxt UI -->
|
|
220
|
+
<UInput v-money3="config" v-model="amount" />
|
|
221
|
+
|
|
222
|
+
<!-- Element Plus -->
|
|
223
|
+
<el-input v-money3="config" v-model="amount" />
|
|
224
|
+
</template>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Wrapper components attach their own `@input` listener to the inner input during render, before the directive's `mounted()` runs. Because DOM listener-order is registration-order, the wrapper's handler would otherwise fire on the raw pre-reformat keystroke value, leaving the host's `v-model` one character behind the displayed value (reported as an "off-by-10" in [#78](https://github.com/jonathanpmartins/v-money3/issues/78)). To fix this without framework-specific detection, the directive re-dispatches an `input` event after each reformat so the wrapper re-reads the post-format value. The re-dispatch only happens when the directive sits on a wrapper (`host !== <input>`); bare `<input v-money3>` is unaffected.
|
|
228
|
+
|
|
229
|
+
The synthetic event is dispatched with `bubbles: false`, so it only reaches listeners attached directly to the inner `<input>` (the wrapper's own `@input` handler). Ancestor listeners — e.g. an `@input` on a parent `<div>` or `<form>` — do not see it. If you do attach a listener directly to the inner input and want to skip the directive's re-dispatch, filter on the marker:
|
|
230
|
+
|
|
231
|
+
```js
|
|
232
|
+
function onInput(e) {
|
|
233
|
+
if (e.__v_money3_synth__) return; // skip the directive's re-dispatch
|
|
234
|
+
// …your handler…
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
208
238
|
## Properties
|
|
209
239
|
|
|
210
240
|
| property | Required | Type | Default | Description |
|
|
@@ -219,6 +249,7 @@ If you directly bind it, you're perfectly fine as well:
|
|
|
219
249
|
| disabled | false | Boolean | false | Disable the inner input tag |
|
|
220
250
|
| min | false | Number | null | The min value allowed |
|
|
221
251
|
| max | false | Number | null | The max value allowed |
|
|
252
|
+
| set-max-if-bigger | false | Boolean | true | When `true` (default), values above `max` are clamped down to `max`. Set to `false` to reject keystrokes that would exceed `max` — the input keeps its last valid value instead of jumping to the ceiling. No effect when `max` is `null` |
|
|
222
253
|
| allow-blank | false | Boolean | false | If the field can start blank and be cleared out by user |
|
|
223
254
|
| treat-zero-as-blank | false | Boolean | true | When `allow-blank` is true, controls whether zero is rendered as blank. Set to `false` to distinguish zero from blank (e.g. show `0.00` and only blank on empty input). Has no effect when `allow-blank` is false |
|
|
224
255
|
| minimum-number-of-characters | false | Number | 0 | The minimum number of characters that the mask should show |
|
|
@@ -269,6 +300,7 @@ const config = {
|
|
|
269
300
|
disabled: false,
|
|
270
301
|
min: null,
|
|
271
302
|
max: null,
|
|
303
|
+
setMaxIfBigger: true,
|
|
272
304
|
allowBlank: false,
|
|
273
305
|
treatZeroAsBlank: true,
|
|
274
306
|
minimumNumberOfCharacters: 0,
|
package/dist/component.vue.d.ts
CHANGED
|
@@ -64,6 +64,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
64
64
|
type: (NumberConstructor | StringConstructor)[];
|
|
65
65
|
default: () => string | number | null;
|
|
66
66
|
};
|
|
67
|
+
setMaxIfBigger: {
|
|
68
|
+
type: BooleanConstructor;
|
|
69
|
+
default: () => boolean;
|
|
70
|
+
};
|
|
67
71
|
allowBlank: {
|
|
68
72
|
type: BooleanConstructor;
|
|
69
73
|
default: () => boolean;
|
|
@@ -152,6 +156,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
152
156
|
type: (NumberConstructor | StringConstructor)[];
|
|
153
157
|
default: () => string | number | null;
|
|
154
158
|
};
|
|
159
|
+
setMaxIfBigger: {
|
|
160
|
+
type: BooleanConstructor;
|
|
161
|
+
default: () => boolean;
|
|
162
|
+
};
|
|
155
163
|
allowBlank: {
|
|
156
164
|
type: BooleanConstructor;
|
|
157
165
|
default: () => boolean;
|
|
@@ -186,6 +194,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
186
194
|
disabled: boolean;
|
|
187
195
|
min: string | number;
|
|
188
196
|
max: string | number;
|
|
197
|
+
setMaxIfBigger: boolean;
|
|
189
198
|
allowBlank: boolean;
|
|
190
199
|
treatZeroAsBlank: boolean;
|
|
191
200
|
minimumNumberOfCharacters: number;
|
package/dist/options.d.ts
CHANGED
package/dist/v-money3.mjs
CHANGED
|
@@ -12,6 +12,7 @@ var m = {
|
|
|
12
12
|
disabled: !1,
|
|
13
13
|
min: null,
|
|
14
14
|
max: null,
|
|
15
|
+
setMaxIfBigger: !0,
|
|
15
16
|
allowBlank: !1,
|
|
16
17
|
treatZeroAsBlank: !0,
|
|
17
18
|
minimumNumberOfCharacters: 0,
|
|
@@ -216,7 +217,7 @@ function z(e, t = m, n = "") {
|
|
|
216
217
|
let o = y(a);
|
|
217
218
|
N(t, "utils format() - numbers", o), N(t, "utils format() - numbersToCurrency", i + v(o, r));
|
|
218
219
|
let s = new R(i + v(o, r));
|
|
219
|
-
N(t, "utils format() - bigNumber1", s.toString()), t.max !== null && t.max !== void 0 && t.max !== "" && s.biggerThan(t.max) && s.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && s.lessThan(t.min) && s.setNumber(t.min), t.disableNegative && s.lessThan(0) && s.setNumber(0);
|
|
220
|
+
N(t, "utils format() - bigNumber1", s.toString()), t.setMaxIfBigger !== !1 && t.max !== null && t.max !== void 0 && t.max !== "" && s.biggerThan(t.max) && s.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && s.lessThan(t.min) && s.setNumber(t.min), t.disableNegative && s.lessThan(0) && s.setNumber(0);
|
|
220
221
|
let c = s.toFixed(r, t.shouldRound);
|
|
221
222
|
if (N(t, "utils format() - bigNumber2", s.toFixed(r)), /^0(\.0+)?$/g.test(c) && t.allowBlank && t.treatZeroAsBlank) return "";
|
|
222
223
|
let [l, u] = c.split("."), d = u === void 0 ? 0 : u.length, f = l.charAt(0) === "-", p = (f ? l.slice(1) : l).padStart(t.minimumNumberOfCharacters - d, "0");
|
|
@@ -233,7 +234,7 @@ function B(e, t = m, n = "") {
|
|
|
233
234
|
let a = y(i);
|
|
234
235
|
N(t, "utils unformat() - numbers", a);
|
|
235
236
|
let o = new R(r + v(a, t.precision));
|
|
236
|
-
N(t, "utils unformat() - bigNumber1", a.toString()), t.max !== null && t.max !== void 0 && t.max !== "" && o.biggerThan(t.max) && o.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && o.lessThan(t.min) && o.setNumber(t.min), t.disableNegative && o.lessThan(0) && o.setNumber(0);
|
|
237
|
+
N(t, "utils unformat() - bigNumber1", a.toString()), t.setMaxIfBigger !== !1 && t.max !== null && t.max !== void 0 && t.max !== "" && o.biggerThan(t.max) && o.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && o.lessThan(t.min) && o.setNumber(t.min), t.disableNegative && o.lessThan(0) && o.setNumber(0);
|
|
237
238
|
let s = o.toFixed(_(t.precision), t.shouldRound);
|
|
238
239
|
return t.modelModifiers && t.modelModifiers.number && (s = parseFloat(s)), N(t, "utils unformat() - output", s), s;
|
|
239
240
|
}
|
|
@@ -247,54 +248,71 @@ var V = [
|
|
|
247
248
|
"suffix",
|
|
248
249
|
"min",
|
|
249
250
|
"max",
|
|
251
|
+
"setMaxIfBigger",
|
|
250
252
|
"allowBlank",
|
|
251
253
|
"treatZeroAsBlank",
|
|
252
254
|
"minimumNumberOfCharacters",
|
|
253
255
|
"shouldRound",
|
|
254
256
|
"modelModifiers"
|
|
255
|
-
], H = (e, t, n) => {
|
|
257
|
+
], H = "__v_money3_last_valid__", U = "__v_money3_is_wrapper__", W = "__v_money3_synth__", G = (e, t, n) => {
|
|
256
258
|
if (N(t, "directive setValue() - caller", n), !C(t)) {
|
|
257
259
|
N(t, "directive setValue() - validateRestrictedOptions() return false. Stopping here...", e.value);
|
|
258
260
|
return;
|
|
259
261
|
}
|
|
260
262
|
let r = e.value.length - (e.selectionEnd || 0), i = z(e.value, t, n);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
+
if (t.setMaxIfBigger === !1 && t.max !== null && t.max !== void 0 && t.max !== "") {
|
|
264
|
+
let n = B(i, t, "directive setValue overflow check");
|
|
265
|
+
if (new R(String(n)).biggerThan(t.max)) {
|
|
266
|
+
let t = e[H];
|
|
267
|
+
typeof t == "string" && t !== e.value && (e.value = t);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (i === e.value) {
|
|
272
|
+
e[H] = i;
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
if (e.value = i, e[H] = i, r = Math.max(r, t.suffix.length), r = e.value.length - r, r = Math.max(r, t.prefix.length), j(e, r), e.dispatchEvent(M("change")), e[U]) {
|
|
276
|
+
let t = new Event("input", { bubbles: !1 });
|
|
277
|
+
t[W] = !0, e.dispatchEvent(t);
|
|
278
|
+
}
|
|
279
|
+
}, K = (e, t) => {
|
|
263
280
|
let n = e.currentTarget, r = e.code === "Backspace" || e.code === "Delete", i = n.value.length - (n.selectionEnd || 0) === 0;
|
|
264
|
-
N(t, "directive onkeydown() - el.value", n.value), N(t, "directive onkeydown() - backspacePressed", r), N(t, "directive onkeydown() - isAtEndPosition", i), t.allowBlank && t.treatZeroAsBlank && r && i && parseFloat(String(B(n.value, t, "directive onkeydown allowBlank"))) === 0 && (N(t, "directive onkeydown() - set el.value = \"\"", n.value), n.value = "", n.dispatchEvent(M("change"))), N(t, "directive onkeydown() - e.key", e.key), e.key === "+" && n.value.indexOf("-") >= 0 && (N(t, "directive onkeydown() - flipping sign on el.value", n.value), n.value = n.value.replace("-", ""),
|
|
265
|
-
},
|
|
281
|
+
N(t, "directive onkeydown() - el.value", n.value), N(t, "directive onkeydown() - backspacePressed", r), N(t, "directive onkeydown() - isAtEndPosition", i), t.allowBlank && t.treatZeroAsBlank && r && i && parseFloat(String(B(n.value, t, "directive onkeydown allowBlank"))) === 0 && (N(t, "directive onkeydown() - set el.value = \"\"", n.value), n.value = "", n.dispatchEvent(M("change"))), N(t, "directive onkeydown() - e.key", e.key), e.key === "+" && n.value.indexOf("-") >= 0 && (N(t, "directive onkeydown() - flipping sign on el.value", n.value), n.value = n.value.replace("-", ""), G(n, t, "directive onkeydown +"));
|
|
282
|
+
}, q = (e, t) => {
|
|
283
|
+
if (e[W]) return;
|
|
266
284
|
let n = e.currentTarget;
|
|
267
|
-
N(t, "directive oninput()", n.value), /^[1-9]$/.test(n.value) && (n.value = v(n.value, _(t.precision)), N(t, "directive oninput() - is 1-9", n.value)),
|
|
268
|
-
},
|
|
285
|
+
N(t, "directive oninput()", n.value), /^[1-9]$/.test(n.value) && (n.value = v(n.value, _(t.precision)), N(t, "directive oninput() - is 1-9", n.value)), G(n, t, "directive oninput");
|
|
286
|
+
}, J = (e, t) => {
|
|
269
287
|
let n = e.currentTarget;
|
|
270
288
|
N(t, "directive onFocus()", n.value), t.focusOnRight && j(n, n.value.length - t.suffix.length);
|
|
271
|
-
},
|
|
289
|
+
}, Y = (e) => {
|
|
272
290
|
if (e.tagName.toLocaleUpperCase() !== "INPUT") {
|
|
273
291
|
let t = e.getElementsByTagName("input");
|
|
274
292
|
if (t.length !== 1) throw Error(`v-money3 requires 1 input, found ${t.length} elements.`);
|
|
275
293
|
return t[0];
|
|
276
294
|
}
|
|
277
295
|
return e;
|
|
278
|
-
},
|
|
296
|
+
}, ee = (e, t) => {
|
|
279
297
|
e.onkeydown = (e) => {
|
|
280
|
-
|
|
298
|
+
K(e, t);
|
|
281
299
|
}, e.oninput = (e) => {
|
|
282
|
-
|
|
300
|
+
q(e, t);
|
|
283
301
|
}, e.onfocus = (e) => {
|
|
284
|
-
|
|
302
|
+
J(e, t);
|
|
285
303
|
};
|
|
286
304
|
};
|
|
287
|
-
function
|
|
305
|
+
function te(e, t) {
|
|
288
306
|
return e ? V.some((n) => JSON.stringify(e[n]) !== JSON.stringify(t[n])) : !1;
|
|
289
307
|
}
|
|
290
|
-
var
|
|
291
|
-
function
|
|
292
|
-
let t = e[
|
|
308
|
+
var X = "__v_money3_input__";
|
|
309
|
+
function Z(e) {
|
|
310
|
+
let t = e[X];
|
|
293
311
|
if (t) return t;
|
|
294
|
-
let n =
|
|
295
|
-
return e[
|
|
312
|
+
let n = Y(e);
|
|
313
|
+
return e[X] = n, n;
|
|
296
314
|
}
|
|
297
|
-
var
|
|
315
|
+
var Q = {
|
|
298
316
|
mounted(e, t) {
|
|
299
317
|
if (!t.value) return;
|
|
300
318
|
let n = w({
|
|
@@ -302,8 +320,8 @@ var Z = {
|
|
|
302
320
|
...t.value
|
|
303
321
|
});
|
|
304
322
|
N(n, "directive mounted() - opt", n);
|
|
305
|
-
let r =
|
|
306
|
-
|
|
323
|
+
let r = Z(e);
|
|
324
|
+
r[U] = e !== r, ee(r, n), N(n, "directive mounted() - el.value", r.value), G(r, n, "directive mounted");
|
|
307
325
|
},
|
|
308
326
|
updated(e, t) {
|
|
309
327
|
if (!t.value) return;
|
|
@@ -312,30 +330,30 @@ var Z = {
|
|
|
312
330
|
...t.value
|
|
313
331
|
});
|
|
314
332
|
N(n, "directive updated() - opt", n), N(n, "directive updated() - host.value", e.value);
|
|
315
|
-
let r =
|
|
316
|
-
if (z(r.value, n, "directive updated check") !== r.value) {
|
|
317
|
-
if (
|
|
333
|
+
let r = Z(e);
|
|
334
|
+
if (r[U] = e !== r, z(r.value, n, "directive updated check") !== r.value) {
|
|
335
|
+
if (te(t.oldValue ? w({
|
|
318
336
|
...m,
|
|
319
337
|
...t.oldValue
|
|
320
338
|
}) : null, n) && r.value !== "") {
|
|
321
339
|
console.warn("v-money3: runtime change of format options on the bare directive is unsupported and was skipped to avoid corrupting the value. Re-mount the directive or use the Money3 component instead.");
|
|
322
340
|
return;
|
|
323
341
|
}
|
|
324
|
-
|
|
342
|
+
G(r, n, "directive updated");
|
|
325
343
|
}
|
|
326
344
|
},
|
|
327
345
|
beforeUnmount(e) {
|
|
328
|
-
let t = e[
|
|
329
|
-
t.onkeydown = null, t.oninput = null, t.onfocus = null, delete e[
|
|
346
|
+
let t = e[X] || e;
|
|
347
|
+
t.onkeydown = null, t.oninput = null, t.onfocus = null, delete t[U], delete e[X];
|
|
330
348
|
}
|
|
331
|
-
},
|
|
349
|
+
}, ne = [
|
|
332
350
|
"id",
|
|
333
351
|
"value",
|
|
334
352
|
"disabled"
|
|
335
353
|
], $ = /* @__PURE__ */ n({
|
|
336
354
|
inheritAttrs: !1,
|
|
337
355
|
name: "Money3",
|
|
338
|
-
directives: { money3:
|
|
356
|
+
directives: { money3: Q },
|
|
339
357
|
__name: "component",
|
|
340
358
|
props: {
|
|
341
359
|
debug: {
|
|
@@ -412,6 +430,10 @@ var Z = {
|
|
|
412
430
|
type: [Number, String],
|
|
413
431
|
default: () => m.min
|
|
414
432
|
},
|
|
433
|
+
setMaxIfBigger: {
|
|
434
|
+
type: Boolean,
|
|
435
|
+
default: () => m.setMaxIfBigger
|
|
436
|
+
},
|
|
415
437
|
allowBlank: {
|
|
416
438
|
type: Boolean,
|
|
417
439
|
default: () => m.allowBlank
|
|
@@ -467,6 +489,7 @@ var Z = {
|
|
|
467
489
|
m.suffix,
|
|
468
490
|
m.min,
|
|
469
491
|
m.max,
|
|
492
|
+
m.setMaxIfBigger,
|
|
470
493
|
m.allowBlank,
|
|
471
494
|
m.treatZeroAsBlank,
|
|
472
495
|
m.minimumNumberOfCharacters,
|
|
@@ -491,7 +514,7 @@ var Z = {
|
|
|
491
514
|
value: C.value,
|
|
492
515
|
disabled: m.disabled,
|
|
493
516
|
onChange: k
|
|
494
|
-
}), null, 16,
|
|
517
|
+
}), null, 16, ne)), [[a, {
|
|
495
518
|
precision: u(y),
|
|
496
519
|
decimal: m.decimal,
|
|
497
520
|
thousands: m.thousands,
|
|
@@ -500,6 +523,7 @@ var Z = {
|
|
|
500
523
|
disableNegative: m.disableNegative,
|
|
501
524
|
min: m.min,
|
|
502
525
|
max: m.max,
|
|
526
|
+
setMaxIfBigger: m.setMaxIfBigger,
|
|
503
527
|
allowBlank: m.allowBlank,
|
|
504
528
|
treatZeroAsBlank: m.treatZeroAsBlank,
|
|
505
529
|
minimumNumberOfCharacters: m.minimumNumberOfCharacters,
|
|
@@ -510,8 +534,8 @@ var Z = {
|
|
|
510
534
|
}]]);
|
|
511
535
|
};
|
|
512
536
|
}
|
|
513
|
-
}),
|
|
514
|
-
e.component("money3", $), e.directive("money3",
|
|
537
|
+
}), re = { install(e) {
|
|
538
|
+
e.component("money3", $), e.directive("money3", Q);
|
|
515
539
|
} };
|
|
516
540
|
//#endregion
|
|
517
|
-
export { R as BigNumber, $ as Money, $ as Money3, $ as Money3Component,
|
|
541
|
+
export { R as BigNumber, $ as Money, $ as Money3, $ as Money3Component, Q as Money3Directive, Q as VMoney, Q as VMoney3, re as default, z as format, B as unformat };
|
package/dist/v-money3.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`v-money3`]={},e.Vue))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var n={debug:!1,masked:!1,prefix:``,suffix:``,thousands:`,`,decimal:`.`,precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,treatZeroAsBlank:!0,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0,focusOnRight:!1,lazy:!0},r=[`+`,`-`],i=[`decimal`,`thousands`,`prefix`,`suffix`];function a(e){return Math.max(0,Math.min(e,100))}function o(e,t){return e=e.padStart(t+1,`0`),t===0?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function s(e){return e=e?e.toString():``,e.replace(/\D+/g,``)||`0`}function c(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}function l(e,t,n){return t?e+n+t:e}function u(e,t){return r.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):/\d/g.test(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1):!0}function d(e){for(let t of i)if(!u(e[t],t))return!1;return!0}function f(e){for(let t of i){if(typeof e[t]!=`string`){e[t]=``;continue}e[t]=e[t].replace(/\d+/g,``);for(let n of r)e[t]=e[t].replaceAll(n,``)}return e}function p(e){return e.length-(e.indexOf(`.`)+1)}function m(e){return e.replace(/^(-?)0+(?!\.)(.+)/,`$1$2`)}function h(e){return/^-?[\d]+$/g.test(e)}function g(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function _(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function v(e,t){let n=t-p(e);if(n>=0)return e;let r=e.slice(0,n),i=e.slice(n);if(r.charAt(r.length-1)===`.`&&(r=r.slice(0,-1)),parseInt(i.charAt(0),10)>=5){for(let e=r.length-1;e>=0;--e){let t=r.charAt(e);if(t!==`.`&&t!==`-`){let n=parseInt(t,10)+1;if(n<10)return _(r,e,n);r=_(r,e,`0`)}}return`1${r}`}return r}function y(e,t){let n=()=>{e===document.activeElement&&e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}function b(e){return new Event(e,{bubbles:!0,cancelable:!1})}function x({debug:e=!1},...t){e&&console.log(...t)}function S(e){"@babel/helpers - typeof";return S=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},S(e)}function C(e,t){if(S(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(S(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function w(e){var t=C(e,`string`);return S(t)==`symbol`?t:t+``}function T(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var E=class e{constructor(e){T(this,`number`,0n),T(this,`decimal`,0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,typeof e==`bigint`?this.number=e:typeof e==`number`?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString(),r=e-this.getDecimalPrecision();if(r>0)return n.includes(`.`)||(n+=`.`),n.padEnd(n.length+r,`0`);if(r<0){if(t)return v(n,e);let i=n.slice(0,r);return i.endsWith(`.`)?i.slice(0,-1):i}return n}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return e.charAt(0)===`-`&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,`0`),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=m(e),(t?`-`:``)+e}return e}lessThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){let[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(e=m(e),h(e))this.number=BigInt(e);else if(g(e))this.decimal=p(e),this.number=BigInt(e.replace(`.`,``));else throw Error(`BigNumber has received an invalid format for the constructor: ${e}`)}adjustComparisonNumbers(t){let n;n=t instanceof e?t:new e(t);let r=this.getDecimalPrecision()-n.getDecimalPrecision(),i=this.getNumber(),a=n.getNumber();return r>0?a=n.getNumber()*10n**BigInt(r):r<0&&(i=this.getNumber()*10n**BigInt(r*-1)),[i,a]}};function D(e,t=n,r=``){x(t,`utils format() - caller`,r),x(t,`utils format() - input1`,e);let i=a(t.precision);if((e==null||e===``)&&t.allowBlank)return``;if(e==null)e=``;else if(typeof e==`number`)e=t.shouldRound?e.toFixed(i):e.toFixed(Math.min(i+1,100)).slice(0,-1);else if(t.modelModifiers&&t.modelModifiers.number&&h(e))e=Number(e).toFixed(i);else if(!t.disableNegative&&e===`-`)return e;x(t,`utils format() - input2`,e);let u=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,d=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils format() - filtered`,d),!i&&t.thousands!==`.`&&g(d)&&(d=v(d,0),x(t,`utils format() - !precision && isValidFloat()`,d));let f=s(d);x(t,`utils format() - numbers`,f),x(t,`utils format() - numbersToCurrency`,u+o(f,i));let p=new E(u+o(f,i));x(t,`utils format() - bigNumber1`,p.toString()),t.max!==null&&t.max!==void 0&&t.max!==``&&p.biggerThan(t.max)&&p.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&p.lessThan(t.min)&&p.setNumber(t.min),t.disableNegative&&p.lessThan(0)&&p.setNumber(0);let m=p.toFixed(i,t.shouldRound);if(x(t,`utils format() - bigNumber2`,p.toFixed(i)),/^0(\.0+)?$/g.test(m)&&t.allowBlank&&t.treatZeroAsBlank)return``;let[_,y]=m.split(`.`),b=y===void 0?0:y.length,S=_.charAt(0)===`-`,C=(S?_.slice(1):_).padStart(t.minimumNumberOfCharacters-b,`0`);_=(S?`-`:``)+c(C,t.thousands);let w=t.prefix+l(_,y,t.decimal)+t.suffix;return x(t,`utils format() - output`,w),w}function O(e,t=n,r=``){if(x(t,`utils unformat() - caller`,r),x(t,`utils unformat() - input`,e),!t.disableNegative&&e===`-`)return x(t,`utils unformat() - return netagive symbol`,e),e;let i=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,c=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils unformat() - filtered`,c);let l=s(c);x(t,`utils unformat() - numbers`,l);let u=new E(i+o(l,t.precision));x(t,`utils unformat() - bigNumber1`,l.toString()),t.max!==null&&t.max!==void 0&&t.max!==``&&u.biggerThan(t.max)&&u.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&u.lessThan(t.min)&&u.setNumber(t.min),t.disableNegative&&u.lessThan(0)&&u.setNumber(0);let d=u.toFixed(a(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(d=parseFloat(d)),x(t,`utils unformat() - output`,d),d}var k=[`precision`,`decimal`,`thousands`,`prefix`,`suffix`,`min`,`max`,`allowBlank`,`treatZeroAsBlank`,`minimumNumberOfCharacters`,`shouldRound`,`modelModifiers`],A=(e,t,n)=>{if(x(t,`directive setValue() - caller`,n),!d(t)){x(t,`directive setValue() - validateRestrictedOptions() return false. Stopping here...`,e.value);return}let r=e.value.length-(e.selectionEnd||0),i=D(e.value,t,n);i!==e.value&&(e.value=i,r=Math.max(r,t.suffix.length),r=e.value.length-r,r=Math.max(r,t.prefix.length),y(e,r),e.dispatchEvent(b(`change`)))},j=(e,t)=>{let n=e.currentTarget,r=e.code===`Backspace`||e.code===`Delete`,i=n.value.length-(n.selectionEnd||0)===0;x(t,`directive onkeydown() - el.value`,n.value),x(t,`directive onkeydown() - backspacePressed`,r),x(t,`directive onkeydown() - isAtEndPosition`,i),t.allowBlank&&t.treatZeroAsBlank&&r&&i&&parseFloat(String(O(n.value,t,`directive onkeydown allowBlank`)))===0&&(x(t,`directive onkeydown() - set el.value = ""`,n.value),n.value=``,n.dispatchEvent(b(`change`))),x(t,`directive onkeydown() - e.key`,e.key),e.key===`+`&&n.value.indexOf(`-`)>=0&&(x(t,`directive onkeydown() - flipping sign on el.value`,n.value),n.value=n.value.replace(`-`,``),A(n,t,`directive onkeydown +`))},M=(e,t)=>{let n=e.currentTarget;x(t,`directive oninput()`,n.value),/^[1-9]$/.test(n.value)&&(n.value=o(n.value,a(t.precision)),x(t,`directive oninput() - is 1-9`,n.value)),A(n,t,`directive oninput`)},N=(e,t)=>{let n=e.currentTarget;x(t,`directive onFocus()`,n.value),t.focusOnRight&&y(n,n.value.length-t.suffix.length)},P=e=>{if(e.tagName.toLocaleUpperCase()!==`INPUT`){let t=e.getElementsByTagName(`input`);if(t.length!==1)throw Error(`v-money3 requires 1 input, found ${t.length} elements.`);return t[0]}return e},F=(e,t)=>{e.onkeydown=e=>{j(e,t)},e.oninput=e=>{M(e,t)},e.onfocus=e=>{N(e,t)}};function I(e,t){return e?k.some(n=>JSON.stringify(e[n])!==JSON.stringify(t[n])):!1}var L=`__v_money3_input__`;function R(e){let t=e[L];if(t)return t;let n=P(e);return e[L]=n,n}var z={mounted(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive mounted() - opt`,r);let i=R(e);F(i,r),x(r,`directive mounted() - el.value`,i.value),A(i,r,`directive mounted`)},updated(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive updated() - opt`,r),x(r,`directive updated() - host.value`,e.value);let i=R(e);if(D(i.value,r,`directive updated check`)!==i.value){if(I(t.oldValue?f({...n,...t.oldValue}):null,r)&&i.value!==``){console.warn(`v-money3: runtime change of format options on the bare directive is unsupported and was skipped to avoid corrupting the value. Re-mount the directive or use the Money3 component instead.`);return}A(i,r,`directive updated`)}},beforeUnmount(e){let t=e[L]||e;t.onkeydown=null,t.oninput=null,t.onfocus=null,delete e[L]}},B=[`id`,`value`,`disabled`],V=(0,t.defineComponent)({inheritAttrs:!1,name:`Money3`,directives:{money3:z},__name:`component`,props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{let e=(0,t.getCurrentInstance)();return e?e.uid:null}},modelValue:{required:!0,type:[Number,String]},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>n.precision},decimal:{type:String,default:()=>n.decimal,validator(e){return u(e,`decimal`)}},thousands:{type:String,default:()=>n.thousands,validator(e){return u(e,`thousands`)}},prefix:{type:String,default:()=>n.prefix,validator(e){return u(e,`prefix`)}},suffix:{type:String,default:()=>n.suffix,validator(e){return u(e,`suffix`)}},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[Number,String],default:()=>n.max},min:{type:[Number,String],default:()=>n.min},allowBlank:{type:Boolean,default:()=>n.allowBlank},treatZeroAsBlank:{type:Boolean,default:()=>n.treatZeroAsBlank},minimumNumberOfCharacters:{type:Number,default:()=>n.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>n.shouldRound},focusOnRight:{type:Boolean,default:()=>n.focusOnRight}},emits:[`update:model-value`],setup(e,{emit:n}){let r=e,{modelValue:i,modelModifiers:o,masked:s,precision:c,shouldRound:l,focusOnRight:u}=(0,t.toRefs)(r);x(r,`component setup()`,r);let{value:d}=i;(r.disableNegative||d!==`-`)&&o.value&&o.value.number&&(d=l.value?Number(i.value).toFixed(a(c.value)):Number(i.value).toFixed(Math.min(a(c.value)+1,100)).slice(0,-1));let p=(0,t.ref)(D(d,r,`component setup`));x(r,`component setup() - data.formattedValue`,p.value);function m(e){x(r,`component watch() -> value`,e);let t=D(e,f({...r}),`component watch`);t!==p.value&&(x(r,`component watch() changed -> formatted`,t),p.value=t)}(0,t.watch)(i,m);let h=null,g=n;function _(){let e=f({...r}),t=i.value;if(t===`-`)return;let n=D(t,e,`component opts watch`);if(n!==p.value&&(p.value=n),s.value&&!(o.value&&o.value.number)){n!==t&&n!==h&&(h=n,g(`update:model-value`,n));return}let a=O(n,e,`component opts watch reunformat`),c=Number(t),l=Number(a);!Number.isNaN(c)&&!Number.isNaN(l)&&c!==l&&l!==h&&(h=l,g(`update:model-value`,a))}(0,t.watch)(()=>[r.precision,r.decimal,r.thousands,r.prefix,r.suffix,r.min,r.max,r.allowBlank,r.treatZeroAsBlank,r.minimumNumberOfCharacters,r.shouldRound],_),(0,t.watch)(()=>r.modelModifiers,_,{deep:!0}),(0,t.onMounted)(()=>{let e=f({...r}),t=O(p.value,e,`component mounted reconcile`),n=Number(i.value),a=Number(t);Number.isNaN(n)&&!Number.isNaN(a)&&a!==h&&(h=a,g(`update:model-value`,t))});function v(e){let t=e.target.value;x(r,`component change() -> evt.target.value`,t),s.value&&!o.value.number||(t=O(t,f({...r}),`component change`)),t!==h&&(h=t,x(r,`component change() -> update:model-value`,t),g(`update:model-value`,t))}let y=(0,t.useAttrs)(),b=(0,t.computed)(()=>{let e={...y};return delete e[`onUpdate:modelValue`],e});return(n,i)=>{let a=(0,t.resolveDirective)(`money3`);return(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createElementBlock)(`input`,(0,t.mergeProps)({id:`${e.id}`},b.value,{type:`tel`,class:`v-money3`,value:p.value,disabled:r.disabled,onChange:v}),null,16,B)),[[a,{precision:(0,t.unref)(c),decimal:r.decimal,thousands:r.thousands,prefix:r.prefix,suffix:r.suffix,disableNegative:r.disableNegative,min:r.min,max:r.max,allowBlank:r.allowBlank,treatZeroAsBlank:r.treatZeroAsBlank,minimumNumberOfCharacters:r.minimumNumberOfCharacters,debug:r.debug,modelModifiers:(0,t.unref)(o),shouldRound:(0,t.unref)(l),focusOnRight:(0,t.unref)(u)}]])}}});e.BigNumber=E,e.Money=V,e.Money3=V,e.Money3Component=V,e.Money3Directive=z,e.VMoney=z,e.VMoney3=z,e.default={install(e){e.component(`money3`,V),e.directive(`money3`,z)}},e.format=D,e.unformat=O});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`v-money3`]={},e.Vue))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var n={debug:!1,masked:!1,prefix:``,suffix:``,thousands:`,`,decimal:`.`,precision:2,disableNegative:!1,disabled:!1,min:null,max:null,setMaxIfBigger:!0,allowBlank:!1,treatZeroAsBlank:!0,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0,focusOnRight:!1,lazy:!0},r=[`+`,`-`],i=[`decimal`,`thousands`,`prefix`,`suffix`];function a(e){return Math.max(0,Math.min(e,100))}function o(e,t){return e=e.padStart(t+1,`0`),t===0?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function s(e){return e=e?e.toString():``,e.replace(/\D+/g,``)||`0`}function c(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}function l(e,t,n){return t?e+n+t:e}function u(e,t){return r.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):/\d/g.test(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1):!0}function d(e){for(let t of i)if(!u(e[t],t))return!1;return!0}function f(e){for(let t of i){if(typeof e[t]!=`string`){e[t]=``;continue}e[t]=e[t].replace(/\d+/g,``);for(let n of r)e[t]=e[t].replaceAll(n,``)}return e}function p(e){return e.length-(e.indexOf(`.`)+1)}function m(e){return e.replace(/^(-?)0+(?!\.)(.+)/,`$1$2`)}function h(e){return/^-?[\d]+$/g.test(e)}function g(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function _(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function v(e,t){let n=t-p(e);if(n>=0)return e;let r=e.slice(0,n),i=e.slice(n);if(r.charAt(r.length-1)===`.`&&(r=r.slice(0,-1)),parseInt(i.charAt(0),10)>=5){for(let e=r.length-1;e>=0;--e){let t=r.charAt(e);if(t!==`.`&&t!==`-`){let n=parseInt(t,10)+1;if(n<10)return _(r,e,n);r=_(r,e,`0`)}}return`1${r}`}return r}function y(e,t){let n=()=>{e===document.activeElement&&e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}function b(e){return new Event(e,{bubbles:!0,cancelable:!1})}function x({debug:e=!1},...t){e&&console.log(...t)}function S(e){"@babel/helpers - typeof";return S=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},S(e)}function C(e,t){if(S(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(S(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function w(e){var t=C(e,`string`);return S(t)==`symbol`?t:t+``}function T(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var E=class e{constructor(e){T(this,`number`,0n),T(this,`decimal`,0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,typeof e==`bigint`?this.number=e:typeof e==`number`?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString(),r=e-this.getDecimalPrecision();if(r>0)return n.includes(`.`)||(n+=`.`),n.padEnd(n.length+r,`0`);if(r<0){if(t)return v(n,e);let i=n.slice(0,r);return i.endsWith(`.`)?i.slice(0,-1):i}return n}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return e.charAt(0)===`-`&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,`0`),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=m(e),(t?`-`:``)+e}return e}lessThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){let[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(e=m(e),h(e))this.number=BigInt(e);else if(g(e))this.decimal=p(e),this.number=BigInt(e.replace(`.`,``));else throw Error(`BigNumber has received an invalid format for the constructor: ${e}`)}adjustComparisonNumbers(t){let n;n=t instanceof e?t:new e(t);let r=this.getDecimalPrecision()-n.getDecimalPrecision(),i=this.getNumber(),a=n.getNumber();return r>0?a=n.getNumber()*10n**BigInt(r):r<0&&(i=this.getNumber()*10n**BigInt(r*-1)),[i,a]}};function D(e,t=n,r=``){x(t,`utils format() - caller`,r),x(t,`utils format() - input1`,e);let i=a(t.precision);if((e==null||e===``)&&t.allowBlank)return``;if(e==null)e=``;else if(typeof e==`number`)e=t.shouldRound?e.toFixed(i):e.toFixed(Math.min(i+1,100)).slice(0,-1);else if(t.modelModifiers&&t.modelModifiers.number&&h(e))e=Number(e).toFixed(i);else if(!t.disableNegative&&e===`-`)return e;x(t,`utils format() - input2`,e);let u=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,d=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils format() - filtered`,d),!i&&t.thousands!==`.`&&g(d)&&(d=v(d,0),x(t,`utils format() - !precision && isValidFloat()`,d));let f=s(d);x(t,`utils format() - numbers`,f),x(t,`utils format() - numbersToCurrency`,u+o(f,i));let p=new E(u+o(f,i));x(t,`utils format() - bigNumber1`,p.toString()),t.setMaxIfBigger!==!1&&t.max!==null&&t.max!==void 0&&t.max!==``&&p.biggerThan(t.max)&&p.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&p.lessThan(t.min)&&p.setNumber(t.min),t.disableNegative&&p.lessThan(0)&&p.setNumber(0);let m=p.toFixed(i,t.shouldRound);if(x(t,`utils format() - bigNumber2`,p.toFixed(i)),/^0(\.0+)?$/g.test(m)&&t.allowBlank&&t.treatZeroAsBlank)return``;let[_,y]=m.split(`.`),b=y===void 0?0:y.length,S=_.charAt(0)===`-`,C=(S?_.slice(1):_).padStart(t.minimumNumberOfCharacters-b,`0`);_=(S?`-`:``)+c(C,t.thousands);let w=t.prefix+l(_,y,t.decimal)+t.suffix;return x(t,`utils format() - output`,w),w}function O(e,t=n,r=``){if(x(t,`utils unformat() - caller`,r),x(t,`utils unformat() - input`,e),!t.disableNegative&&e===`-`)return x(t,`utils unformat() - return netagive symbol`,e),e;let i=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,c=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils unformat() - filtered`,c);let l=s(c);x(t,`utils unformat() - numbers`,l);let u=new E(i+o(l,t.precision));x(t,`utils unformat() - bigNumber1`,l.toString()),t.setMaxIfBigger!==!1&&t.max!==null&&t.max!==void 0&&t.max!==``&&u.biggerThan(t.max)&&u.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&u.lessThan(t.min)&&u.setNumber(t.min),t.disableNegative&&u.lessThan(0)&&u.setNumber(0);let d=u.toFixed(a(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(d=parseFloat(d)),x(t,`utils unformat() - output`,d),d}var k=[`precision`,`decimal`,`thousands`,`prefix`,`suffix`,`min`,`max`,`setMaxIfBigger`,`allowBlank`,`treatZeroAsBlank`,`minimumNumberOfCharacters`,`shouldRound`,`modelModifiers`],A=`__v_money3_last_valid__`,j=`__v_money3_is_wrapper__`,M=`__v_money3_synth__`,N=(e,t,n)=>{if(x(t,`directive setValue() - caller`,n),!d(t)){x(t,`directive setValue() - validateRestrictedOptions() return false. Stopping here...`,e.value);return}let r=e.value.length-(e.selectionEnd||0),i=D(e.value,t,n);if(t.setMaxIfBigger===!1&&t.max!==null&&t.max!==void 0&&t.max!==``){let n=O(i,t,`directive setValue overflow check`);if(new E(String(n)).biggerThan(t.max)){let t=e[A];typeof t==`string`&&t!==e.value&&(e.value=t);return}}if(i===e.value){e[A]=i;return}if(e.value=i,e[A]=i,r=Math.max(r,t.suffix.length),r=e.value.length-r,r=Math.max(r,t.prefix.length),y(e,r),e.dispatchEvent(b(`change`)),e[j]){let t=new Event(`input`,{bubbles:!1});t[M]=!0,e.dispatchEvent(t)}},P=(e,t)=>{let n=e.currentTarget,r=e.code===`Backspace`||e.code===`Delete`,i=n.value.length-(n.selectionEnd||0)===0;x(t,`directive onkeydown() - el.value`,n.value),x(t,`directive onkeydown() - backspacePressed`,r),x(t,`directive onkeydown() - isAtEndPosition`,i),t.allowBlank&&t.treatZeroAsBlank&&r&&i&&parseFloat(String(O(n.value,t,`directive onkeydown allowBlank`)))===0&&(x(t,`directive onkeydown() - set el.value = ""`,n.value),n.value=``,n.dispatchEvent(b(`change`))),x(t,`directive onkeydown() - e.key`,e.key),e.key===`+`&&n.value.indexOf(`-`)>=0&&(x(t,`directive onkeydown() - flipping sign on el.value`,n.value),n.value=n.value.replace(`-`,``),N(n,t,`directive onkeydown +`))},F=(e,t)=>{if(e[M])return;let n=e.currentTarget;x(t,`directive oninput()`,n.value),/^[1-9]$/.test(n.value)&&(n.value=o(n.value,a(t.precision)),x(t,`directive oninput() - is 1-9`,n.value)),N(n,t,`directive oninput`)},I=(e,t)=>{let n=e.currentTarget;x(t,`directive onFocus()`,n.value),t.focusOnRight&&y(n,n.value.length-t.suffix.length)},L=e=>{if(e.tagName.toLocaleUpperCase()!==`INPUT`){let t=e.getElementsByTagName(`input`);if(t.length!==1)throw Error(`v-money3 requires 1 input, found ${t.length} elements.`);return t[0]}return e},R=(e,t)=>{e.onkeydown=e=>{P(e,t)},e.oninput=e=>{F(e,t)},e.onfocus=e=>{I(e,t)}};function z(e,t){return e?k.some(n=>JSON.stringify(e[n])!==JSON.stringify(t[n])):!1}var B=`__v_money3_input__`;function V(e){let t=e[B];if(t)return t;let n=L(e);return e[B]=n,n}var H={mounted(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive mounted() - opt`,r);let i=V(e);i[j]=e!==i,R(i,r),x(r,`directive mounted() - el.value`,i.value),N(i,r,`directive mounted`)},updated(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive updated() - opt`,r),x(r,`directive updated() - host.value`,e.value);let i=V(e);if(i[j]=e!==i,D(i.value,r,`directive updated check`)!==i.value){if(z(t.oldValue?f({...n,...t.oldValue}):null,r)&&i.value!==``){console.warn(`v-money3: runtime change of format options on the bare directive is unsupported and was skipped to avoid corrupting the value. Re-mount the directive or use the Money3 component instead.`);return}N(i,r,`directive updated`)}},beforeUnmount(e){let t=e[B]||e;t.onkeydown=null,t.oninput=null,t.onfocus=null,delete t[j],delete e[B]}},U=[`id`,`value`,`disabled`],W=(0,t.defineComponent)({inheritAttrs:!1,name:`Money3`,directives:{money3:H},__name:`component`,props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{let e=(0,t.getCurrentInstance)();return e?e.uid:null}},modelValue:{required:!0,type:[Number,String]},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>n.precision},decimal:{type:String,default:()=>n.decimal,validator(e){return u(e,`decimal`)}},thousands:{type:String,default:()=>n.thousands,validator(e){return u(e,`thousands`)}},prefix:{type:String,default:()=>n.prefix,validator(e){return u(e,`prefix`)}},suffix:{type:String,default:()=>n.suffix,validator(e){return u(e,`suffix`)}},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[Number,String],default:()=>n.max},min:{type:[Number,String],default:()=>n.min},setMaxIfBigger:{type:Boolean,default:()=>n.setMaxIfBigger},allowBlank:{type:Boolean,default:()=>n.allowBlank},treatZeroAsBlank:{type:Boolean,default:()=>n.treatZeroAsBlank},minimumNumberOfCharacters:{type:Number,default:()=>n.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>n.shouldRound},focusOnRight:{type:Boolean,default:()=>n.focusOnRight}},emits:[`update:model-value`],setup(e,{emit:n}){let r=e,{modelValue:i,modelModifiers:o,masked:s,precision:c,shouldRound:l,focusOnRight:u}=(0,t.toRefs)(r);x(r,`component setup()`,r);let{value:d}=i;(r.disableNegative||d!==`-`)&&o.value&&o.value.number&&(d=l.value?Number(i.value).toFixed(a(c.value)):Number(i.value).toFixed(Math.min(a(c.value)+1,100)).slice(0,-1));let p=(0,t.ref)(D(d,r,`component setup`));x(r,`component setup() - data.formattedValue`,p.value);function m(e){x(r,`component watch() -> value`,e);let t=D(e,f({...r}),`component watch`);t!==p.value&&(x(r,`component watch() changed -> formatted`,t),p.value=t)}(0,t.watch)(i,m);let h=null,g=n;function _(){let e=f({...r}),t=i.value;if(t===`-`)return;let n=D(t,e,`component opts watch`);if(n!==p.value&&(p.value=n),s.value&&!(o.value&&o.value.number)){n!==t&&n!==h&&(h=n,g(`update:model-value`,n));return}let a=O(n,e,`component opts watch reunformat`),c=Number(t),l=Number(a);!Number.isNaN(c)&&!Number.isNaN(l)&&c!==l&&l!==h&&(h=l,g(`update:model-value`,a))}(0,t.watch)(()=>[r.precision,r.decimal,r.thousands,r.prefix,r.suffix,r.min,r.max,r.setMaxIfBigger,r.allowBlank,r.treatZeroAsBlank,r.minimumNumberOfCharacters,r.shouldRound],_),(0,t.watch)(()=>r.modelModifiers,_,{deep:!0}),(0,t.onMounted)(()=>{let e=f({...r}),t=O(p.value,e,`component mounted reconcile`),n=Number(i.value),a=Number(t);Number.isNaN(n)&&!Number.isNaN(a)&&a!==h&&(h=a,g(`update:model-value`,t))});function v(e){let t=e.target.value;x(r,`component change() -> evt.target.value`,t),s.value&&!o.value.number||(t=O(t,f({...r}),`component change`)),t!==h&&(h=t,x(r,`component change() -> update:model-value`,t),g(`update:model-value`,t))}let y=(0,t.useAttrs)(),b=(0,t.computed)(()=>{let e={...y};return delete e[`onUpdate:modelValue`],e});return(n,i)=>{let a=(0,t.resolveDirective)(`money3`);return(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createElementBlock)(`input`,(0,t.mergeProps)({id:`${e.id}`},b.value,{type:`tel`,class:`v-money3`,value:p.value,disabled:r.disabled,onChange:v}),null,16,U)),[[a,{precision:(0,t.unref)(c),decimal:r.decimal,thousands:r.thousands,prefix:r.prefix,suffix:r.suffix,disableNegative:r.disableNegative,min:r.min,max:r.max,setMaxIfBigger:r.setMaxIfBigger,allowBlank:r.allowBlank,treatZeroAsBlank:r.treatZeroAsBlank,minimumNumberOfCharacters:r.minimumNumberOfCharacters,debug:r.debug,modelModifiers:(0,t.unref)(o),shouldRound:(0,t.unref)(l),focusOnRight:(0,t.unref)(u)}]])}}});e.BigNumber=E,e.Money=W,e.Money3=W,e.Money3Component=W,e.Money3Directive=H,e.VMoney=H,e.VMoney3=H,e.default={install(e){e.component(`money3`,W),e.directive(`money3`,H)}},e.format=D,e.unformat=O});
|