diff --git a/packages/ui/package.json b/packages/ui/package.json
index d5bdb3d987..ff36069fd9 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -45,7 +45,7 @@
"dependencies": {
"@floating-ui/vue": "^1.0.1",
"@types/lodash": "^4.14.161",
- "cleave.js": "^1.6.0",
+ "cleave-zen": "^0.0.17",
"colortranslator": "^1.9.2",
"lodash": "^4.17.21"
},
@@ -167,4 +167,4 @@
]
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/ui/src/components/va-input/VaInput.demo.vue b/packages/ui/src/components/va-input/VaInput.demo.vue
index 556a0e0d3a..1d9aae0420 100644
--- a/packages/ui/src/components/va-input/VaInput.demo.vue
+++ b/packages/ui/src/components/va-input/VaInput.demo.vue
@@ -645,7 +645,6 @@ import { VaButton } from './../va-button'
import { VaIcon } from './../va-icon'
import VaInputValidation from './VaInput-validation.vue'
import { VaCheckbox } from '../va-checkbox'
-import 'cleave.js/dist/addons/cleave-phone.us'
export default defineComponent({
components: {
diff --git a/packages/ui/src/components/va-input/VaInput.stories.ts b/packages/ui/src/components/va-input/VaInput.stories.ts
index a2009a3b07..c2c2f4e1dd 100644
--- a/packages/ui/src/components/va-input/VaInput.stories.ts
+++ b/packages/ui/src/components/va-input/VaInput.stories.ts
@@ -144,39 +144,108 @@ export const Mask = () => ({
components: { VaInput },
data () {
return {
- dateValue: '',
creditCardValue: '',
+ dateValue: '',
+ timeValue: '',
+ numeralValue: '',
+ generalValue: '',
}
},
template: `
- [dateValue]: {{ dateValue }}
-
-
[creditCardValue]: {{ creditCardValue }}
+
+
+
+
+ [dateValue]: {{ dateValue }}
+
+
+
+
+
+ [timeValue]: {{ timeValue }}
+
+
+
+
+
+ [numeralValue]: {{ numeralValue }}
+
+
+
+
+
+ [generalValue]: {{ generalValue }}
+
+
`,
})
-export const MaskFormattedValue = () => ({
+export const MaskRawValue = () => ({
components: { VaInput },
data () {
return {
- dateValue: '',
creditCardValue: '',
+ creditCardValueRaw: '',
+ dateValue: '',
+ dateValueRaw: '',
+ timeValue: '',
+ timeValueRaw: '',
+ numeralValue: '',
+ numeralValueRaw: '',
+ generalValue: '',
+ generalValueRaw: '',
+ phoneValue: '',
+ phoneValueRaw: '',
}
},
template: `
+ [creditCardValue]: {{ creditCardValue }}
+
+ [creditCardValueRaw]: {{ creditCardValueRaw }}
+
+ creditCardValueRaw = v" />
+
+
+
[dateValue]: {{ dateValue }}
-
+
+ [dateValueRaw]: {{ dateValueRaw }}
+
+ dateValueRaw = v" />
+
+
- [creditCardValue]: {{ creditCardValue }}
-
+ [timeValue]: {{ timeValue }}
+
+ [timeValueRaw]: {{ timeValueRaw }}
+
+ timeValueRaw = v" />
+
+
+
+ [numeralValue]: {{ numeralValue }}
+
+ [numeralValueRaw]: {{ numeralValueRaw }}
+
+ numeralValueRaw = v" />
+
+
+
+ [generalValue]: {{ generalValue }}
+
+ [generalValueRaw]: {{ generalValueRaw }}
+
+ generalValueRaw = v" />
+
+
+
+ [phoneValue]: {{ phoneValue }}
+
+ [phoneValueRaw]: {{ phoneValueRaw }}
+
+ phoneValueRaw = v" />
`,
})
diff --git a/packages/ui/src/components/va-input/VaInput.vue b/packages/ui/src/components/va-input/VaInput.vue
index af84ae56c5..afa0ecba2f 100644
--- a/packages/ui/src/components/va-input/VaInput.vue
+++ b/packages/ui/src/components/va-input/VaInput.vue
@@ -64,7 +64,7 @@ import {
useFocusable, useFocusableProps, useEvent,
} from '../../composables'
import type { ValidationProps } from '../../composables/useValidation'
-import { useCleave, useCleaveProps } from './hooks/useCleave'
+import { useCleaveProps, useCleave } from './hooks/useCleave'
import type { AnyStringPropType } from '../../utils/types/prop-type'
@@ -123,6 +123,7 @@ const props = defineProps({
const emit = defineEmits([
'update:modelValue',
+ 'update:rawValue',
...useValidationEmits,
...useClearableEmits,
...createInputEmits(),
@@ -174,7 +175,7 @@ const {
clearIconProps,
} = useClearable(props, modelValue, input, computedError)
-const { computedValue, onInput } = useCleave(input, props, valueComputed)
+const { computedValue, onInput } = useCleave(input, props, valueComputed, emit)
const inputListeners = createInputListeners(emit)
diff --git a/packages/ui/src/components/va-input/hooks/useCleave.ts b/packages/ui/src/components/va-input/hooks/useCleave.ts
index f861cdfa52..1fc12d13ca 100644
--- a/packages/ui/src/components/va-input/hooks/useCleave.ts
+++ b/packages/ui/src/components/va-input/hooks/useCleave.ts
@@ -1,97 +1,150 @@
-import { computed, onBeforeUnmount, PropType, ref, Ref, watchEffect, type ExtractPropTypes, type WritableComputedRef } from 'vue'
-import Cleave from 'cleave.js'
-import { type CleaveOptions } from 'cleave.js/options'
+import {
+ computed,
+ PropType,
+ Ref,
+ type ExtractPropTypes,
+ type WritableComputedRef,
+} from 'vue'
+import {
+ formatDate,
+ formatTime,
+ formatGeneral,
+ formatNumeral,
+ formatCreditCard,
+ unformatGeneral,
+ unformatNumeral,
+ unformatCreditCard,
+ type FormatGeneralOptions,
+ type FormatTimeOptions,
+ type FormatNumeralOptions,
+ type FormatCreditCardOptions,
+ type FormatDateOptions,
+} from 'cleave-zen'
+
+interface MaskOptions extends FormatGeneralOptions, FormatDateOptions, FormatNumeralOptions, FormatCreditCardOptions, FormatTimeOptions {}
+interface MaskProp {
+ type: 'date' | 'time' | 'creditCard' | 'numeral' | 'general' | 'phone'
+ options: MaskOptions
+}
-const DEFAULT_MASK_TOKENS: Record> = {
+const DEFAULT_MASK_TOKENS: Record> = {
creditCard: {
- creditCard: true,
+ formatter: formatCreditCard,
+ transcriber: unformatCreditCard,
+ options: {} as FormatCreditCardOptions,
},
date: {
- date: true,
- datePattern: ['d', 'm', 'Y'],
+ formatter: formatDate,
+ transcriber: (value: string, options?: FormatDateOptions): string => {
+ if (options!.delimiter) {
+ return value.replaceAll(options!.delimiter, '')
+ }
+ return value
+ },
+ options: {
+ delimiter: '/',
+ } as FormatDateOptions,
},
time: {
- time: true,
- timePattern: ['h', 'm'],
- timeFormat: '24',
+ formatter: formatTime,
+ transcriber: (value: string, options?: FormatTimeOptions): string => {
+ if (options!.delimiter) {
+ return value.replaceAll(options!.delimiter, '')
+ }
+ return value
+ },
+ options: {
+ timePattern: ['h', 'm'],
+ timeFormat: '24',
+ delimiter: ':',
+ } as FormatTimeOptions,
},
numeral: {
- numeral: true,
- numeralThousandsGroupStyle: 'thousand',
+ formatter: formatNumeral,
+ transcriber: unformatNumeral,
+ options: {} as FormatNumeralOptions,
+ },
+ general: {
+ formatter: formatGeneral,
+ transcriber: unformatGeneral,
+ options: {} as FormatGeneralOptions,
+ },
+ phone: {
+ formatter: (value: string, options: any) => {
+ // TODO: dynamic delimiter & prefix from options
+ const maxLength = options.blocks.reduce((acc: number, cv: number) => acc + cv, 0)
+ let newValue = value.replaceAll('+', '').replaceAll(' ', '').replaceAll(/[^0-9]/g, '').slice(0, maxLength)
+ if (!newValue) {
+ return newValue
+ }
+
+ const blockIndexes = options.blocks.reduce((acc: number[], cv: number) => [...acc, +acc.slice(-1) + cv], [])
+ const valuesArray: string[] = []
+ blockIndexes.forEach((blockIndex: number, idx: number) => {
+ const startIndex = idx ? blockIndexes[idx - 1] : 0
+ const endIndex = idx === (blockIndexes.length - 1) ? newValue.length : blockIndex
+ valuesArray.push(newValue.slice(startIndex, endIndex))
+ })
+
+ newValue = valuesArray.filter(v => !!v).join(' ')
+
+ if (newValue.charAt(0) !== '+') {
+ newValue = `+${newValue}`
+ }
+ return newValue
+ },
+ transcriber: (value: string) => {
+ return value.replaceAll('+', '').replaceAll(' ', '')
+ },
+ options: {
+ prefix: '+',
+ blocks: [3, 2, 4],
+ delimiter: '-',
+ },
},
}
export const useCleaveProps = {
- mask: { type: [String, Object] as PropType | CleaveOptions>, default: '' },
+ mask: { type: [String, Object] as PropType, default: '' },
returnRaw: { type: Boolean, default: true },
}
+const useMask = (mask: string | MaskProp) => {
+ const maskType = typeof mask === 'string' ? mask : mask.type
+ const maskOptions = typeof mask === 'string' ? null : mask.options
+ const { formatter = (v: string) => v, transcriber = (v: string) => v, options = {} } = DEFAULT_MASK_TOKENS[maskType] || {}
+ return {
+ formatter: (value: string) => formatter(value, { ...options, ...maskOptions }),
+ transcriber: (value: string) => transcriber(value, { ...options, ...maskOptions }),
+ }
+}
+
export const useCleave = (
element: Ref,
props: ExtractPropTypes,
syncValue: WritableComputedRef,
+ emit: (event: any, ...args: any[]) => void,
) => {
- const cleave = ref()
-
- const getMask = (mask: CleaveOptions | string) => {
- if (typeof mask === 'string') {
- return DEFAULT_MASK_TOKENS[mask] ? { ...DEFAULT_MASK_TOKENS[mask] } : null
- }
- return { ...mask }
- }
-
- const destroyCleave = () => {
- if (cleave.value) { cleave.value.destroy() }
- }
-
- const mask = computed(() => getMask(props.mask))
-
- const cleaveEnabled = computed(() => {
- return mask.value && Object.keys(mask.value).length
- })
-
- watchEffect(() => {
- destroyCleave()
-
- if (!element.value) { return }
-
- // Do not create cleave instance if mask is not defined
- if (!cleaveEnabled.value || !mask.value) { return }
-
- cleave.value = new Cleave(element.value, mask.value)
-
- cleave.value!.properties.onValueChanged = ({ target: { rawValue, value } }) => {
- if (props.returnRaw) {
- syncValue.value = rawValue
- } else {
- syncValue.value = value
- }
- }
- })
-
- onBeforeUnmount(() => { destroyCleave() })
+ const { formatter, transcriber } = useMask(props.mask)
const computedValue = computed(() => {
- if (cleave.value) {
- if (props.returnRaw && syncValue.value === cleave.value.getRawValue()) {
- return cleave.value.getFormattedValue()
- }
- }
-
return syncValue.value
})
const onInput = (event: Event) => {
const value = (event.target as HTMLInputElement).value
-
- if (!cleaveEnabled.value) {
+ if (!props.mask) {
syncValue.value = value
+ emit('update:rawValue', value)
+ } else {
+ const formattedValue = formatter(value)
+ syncValue.value = formattedValue
+ element.value!.value = formattedValue
+ emit('update:rawValue', transcriber(formattedValue))
}
}
return {
- cleave,
- cleaveEnabled,
computedValue,
onInput,
}
diff --git a/yarn.lock b/yarn.lock
index ff79913d95..9091318867 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5630,16 +5630,6 @@
"@babel/parser" "^7.23.9"
"@vue/compiler-sfc" "^3.4.15"
-"@vue/compiler-core@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.11.tgz#9fa26f8c81b9b34365f94ce1ed4d0e6e6f94a2ac"
- integrity sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w==
- dependencies:
- "@babel/parser" "^7.23.5"
- "@vue/shared" "3.3.11"
- estree-walker "^2.0.2"
- source-map-js "^1.0.2"
-
"@vue/compiler-core@3.4.21", "@vue/compiler-core@^3.0.0":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a"
@@ -5651,26 +5641,7 @@
estree-walker "^2.0.2"
source-map-js "^1.0.2"
-"@vue/compiler-core@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.8.tgz#c6d96030692724f257751068e2997c9665244f0f"
- integrity sha512-GjAwOydZV6UyVBi1lYW5v4jjfU6wOeyi3vBATKJOwV7muYF0/nZi4kfdJc0pwdT5lXwbbx57lyA2Y356rFpw1A==
- dependencies:
- "@babel/parser" "^7.23.6"
- "@vue/shared" "3.4.8"
- entities "^4.5.0"
- estree-walker "^2.0.2"
- source-map-js "^1.0.2"
-
-"@vue/compiler-dom@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz#36a76ea3a296d41bad133a6912cb0a847d969e4f"
- integrity sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==
- dependencies:
- "@vue/compiler-core" "3.3.11"
- "@vue/shared" "3.3.11"
-
-"@vue/compiler-dom@3.4.21", "@vue/compiler-dom@^3.2.0", "@vue/compiler-dom@^3.3.4", "@vue/compiler-dom@^3.4.0":
+"@vue/compiler-dom@3.4.21", "@vue/compiler-dom@^3.2.0", "@vue/compiler-dom@^3.3.4", "@vue/compiler-dom@^3.4.0", "@vue/compiler-dom@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803"
integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==
@@ -5678,31 +5649,7 @@
"@vue/compiler-core" "3.4.21"
"@vue/shared" "3.4.21"
-"@vue/compiler-dom@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.8.tgz#5acd8de409d3f623c80e81fbf22f2ce53eee6562"
- integrity sha512-GsPyji42zmkSJlaDFKXvwB97ukTlHzlFH/iVzPFYz/APnSzuhu/CMFQbsYmrtsnc2yscF39eC4rKzvKR27aBug==
- dependencies:
- "@vue/compiler-core" "3.4.8"
- "@vue/shared" "3.4.8"
-
-"@vue/compiler-sfc@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.11.tgz#acfae240c875d067e0e2c9a4e2d910074408c73b"
- integrity sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA==
- dependencies:
- "@babel/parser" "^7.23.5"
- "@vue/compiler-core" "3.3.11"
- "@vue/compiler-dom" "3.3.11"
- "@vue/compiler-ssr" "3.3.11"
- "@vue/reactivity-transform" "3.3.11"
- "@vue/shared" "3.3.11"
- estree-walker "^2.0.2"
- magic-string "^0.30.5"
- postcss "^8.4.32"
- source-map-js "^1.0.2"
-
-"@vue/compiler-sfc@3.4.21", "@vue/compiler-sfc@^3.2.0", "@vue/compiler-sfc@^3.3.11", "@vue/compiler-sfc@^3.4.13", "@vue/compiler-sfc@^3.4.15":
+"@vue/compiler-sfc@3.4.21", "@vue/compiler-sfc@^3.2.0", "@vue/compiler-sfc@^3.3.11", "@vue/compiler-sfc@^3.4.13", "@vue/compiler-sfc@^3.4.15", "@vue/compiler-sfc@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2"
integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==
@@ -5717,29 +5664,6 @@
postcss "^8.4.35"
source-map-js "^1.0.2"
-"@vue/compiler-sfc@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.8.tgz#1e4b1d8786abcbb3da205e1c996b01f281a64d1b"
- integrity sha512-3ZcurOa6bQdZ6VZLtMqYSUZqpsMqfX0MC3oCxQG0VIJFCqouZAgRYJN1c8QvGs7HW5wW8aXVvUOQU0ILVlYHKA==
- dependencies:
- "@babel/parser" "^7.23.6"
- "@vue/compiler-core" "3.4.8"
- "@vue/compiler-dom" "3.4.8"
- "@vue/compiler-ssr" "3.4.8"
- "@vue/shared" "3.4.8"
- estree-walker "^2.0.2"
- magic-string "^0.30.5"
- postcss "^8.4.32"
- source-map-js "^1.0.2"
-
-"@vue/compiler-ssr@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.11.tgz#598942a73b64f2bd3f95908b104a7fbb55fc41a2"
- integrity sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg==
- dependencies:
- "@vue/compiler-dom" "3.3.11"
- "@vue/shared" "3.3.11"
-
"@vue/compiler-ssr@3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef"
@@ -5748,14 +5672,6 @@
"@vue/compiler-dom" "3.4.21"
"@vue/shared" "3.4.21"
-"@vue/compiler-ssr@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.8.tgz#36a5611883672d451d4f2050db7c26ed1bb36071"
- integrity sha512-nxN79LHeAemhBpIa2PQ6rz57cW7W4C/XIJCOMSn2g49u6q2ekirmJI0osAOTErQPApOR0KwP2QyeTexX4zQCrw==
- dependencies:
- "@vue/compiler-dom" "3.4.8"
- "@vue/shared" "3.4.8"
-
"@vue/devtools-api@^6.5.1":
version "6.6.1"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz#7c14346383751d9f6ad4bea0963245b30220ef83"
@@ -5846,52 +5762,19 @@
path-browserify "^1.0.1"
vue-template-compiler "^2.7.14"
-"@vue/reactivity-transform@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.11.tgz#2bd486f4eff60c8724309925618891e722fcfadc"
- integrity sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg==
- dependencies:
- "@babel/parser" "^7.23.5"
- "@vue/compiler-core" "3.3.11"
- "@vue/shared" "3.3.11"
- estree-walker "^2.0.2"
- magic-string "^0.30.5"
-
-"@vue/reactivity@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.11.tgz#91f8e6c9ac60a595a5278c836b197628fd947a0d"
- integrity sha512-D5tcw091f0nuu+hXq5XANofD0OXnBmaRqMYl5B3fCR+mX+cXJIGNw/VNawBqkjLNWETrFW0i+xH9NvDbTPVh7g==
- dependencies:
- "@vue/shared" "3.3.11"
-
-"@vue/reactivity@3.4.21":
+"@vue/reactivity@3.4.21", "@vue/reactivity@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.21.tgz#affd3415115b8ebf4927c8d2a0d6a24bccfa9f02"
integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==
dependencies:
"@vue/shared" "3.4.21"
-"@vue/reactivity@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.8.tgz#a4b9cd9e258d1d00bdd3ac381ca67a8120ae4cfb"
- integrity sha512-UJYMQ3S2rqIGw9IvKomD4Xw2uS5VlcKEEmwcfboGOdrI79oqebxnCgTvXWLMClvg3M5SF0Cyn+9eDQoyGMLu9Q==
- dependencies:
- "@vue/shared" "3.4.8"
-
"@vue/repl@^2.8.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@vue/repl/-/repl-2.9.0.tgz#bc87593357784669e1201bf4bff813e74730f90b"
integrity sha512-6gfklmJoQel9hNG2zdoyz/6WxgSJqhIx76vUUkXxegriTgkdKjBkRcm3khsW8FTkwMLkY6+NHaQPQRY6l7ovaA==
-"@vue/runtime-core@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.11.tgz#63defba57bc54c1dac68a95b56c2633b1419193d"
- integrity sha512-g9ztHGwEbS5RyWaOpXuyIVFTschclnwhqEbdy5AwGhYOgc7m/q3NFwr50MirZwTTzX55JY8pSkeib9BX04NIpw==
- dependencies:
- "@vue/reactivity" "3.3.11"
- "@vue/shared" "3.3.11"
-
-"@vue/runtime-core@3.4.21":
+"@vue/runtime-core@3.4.21", "@vue/runtime-core@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz#3749c3f024a64c4c27ecd75aea4ca35634db0062"
integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==
@@ -5899,24 +5782,7 @@
"@vue/reactivity" "3.4.21"
"@vue/shared" "3.4.21"
-"@vue/runtime-core@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.8.tgz#1df5001ee821b955be939c569e3f5528637b0dc9"
- integrity sha512-sMRXOy89KnwY6fWG5epgPOsCWzpo/64FrA0QkjIeNeGnoA2YyZ6bBUxpFUyqhJ8VbrDhXEFH+6LHMOYrpzX/ZQ==
- dependencies:
- "@vue/reactivity" "3.4.8"
- "@vue/shared" "3.4.8"
-
-"@vue/runtime-dom@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.11.tgz#1146d8d280b0fec4d2e18c4a4c8f8121d0cecc09"
- integrity sha512-OlhtV1PVpbgk+I2zl+Y5rQtDNcCDs12rsRg71XwaA2/Rbllw6mBLMi57VOn8G0AjOJ4Mdb4k56V37+g8ukShpQ==
- dependencies:
- "@vue/runtime-core" "3.3.11"
- "@vue/shared" "3.3.11"
- csstype "^3.1.2"
-
-"@vue/runtime-dom@3.4.21":
+"@vue/runtime-dom@3.4.21", "@vue/runtime-dom@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz#91f867ef64eff232cac45095ab28ebc93ac74588"
integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==
@@ -5925,24 +5791,7 @@
"@vue/shared" "3.4.21"
csstype "^3.1.3"
-"@vue/runtime-dom@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.8.tgz#4bc0a226df9311ea3b38f029941c6ef90ad0e71f"
- integrity sha512-L4gZcYo8f3d7rQqQIHkPvyczkjjQ55cJqz2G0v6Ptmqa1mO2zkqN9F8lBT6aGPYy3hd0RDiINbs4jxhSvvy10Q==
- dependencies:
- "@vue/runtime-core" "3.4.8"
- "@vue/shared" "3.4.8"
- csstype "^3.1.3"
-
-"@vue/server-renderer@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.11.tgz#409aed8031a125791e2143552975ecd1958ad601"
- integrity sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A==
- dependencies:
- "@vue/compiler-ssr" "3.3.11"
- "@vue/shared" "3.3.11"
-
-"@vue/server-renderer@3.4.21":
+"@vue/server-renderer@3.4.21", "@vue/server-renderer@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz#150751579d26661ee3ed26a28604667fa4222a97"
integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==
@@ -5950,29 +5799,11 @@
"@vue/compiler-ssr" "3.4.21"
"@vue/shared" "3.4.21"
-"@vue/server-renderer@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.8.tgz#5e6eb84a045dc4bfba74db3110e633083612fc4a"
- integrity sha512-pBeHM59Owevr3P0Fl1XOjBmq4DTy5JDcjMG4NuzJEVDlZYzY8fHybx0wdjkY5lK5mCtUyBtw6Mz4d87aosc1Sw==
- dependencies:
- "@vue/compiler-ssr" "3.4.8"
- "@vue/shared" "3.4.8"
-
-"@vue/shared@3.3.11":
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.11.tgz#f6a038e15237edefcc90dbfe7edb806dd355c7bd"
- integrity sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==
-
"@vue/shared@3.4.21", "@vue/shared@^3.4.0", "@vue/shared@^3.4.21":
version "3.4.21"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1"
integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==
-"@vue/shared@3.4.8":
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.8.tgz#160687109233a1e4ad1b8fe1c4762f9019599fa8"
- integrity sha512-ChLCWzXiJboQ009oVkemhEoUdrxHme7v3ip+Kh+/kDDeF1WtHWGt0knRLGm1Y4YqCRTSs9QxsZIY8paJj5Szrw==
-
"@vue/test-utils@^2.4.1":
version "2.4.5"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.5.tgz#010aa4debe6602d83dc75f233b397092742105a2"
@@ -7799,10 +7630,10 @@ clear@^0.1.0:
resolved "https://registry.yarnpkg.com/clear/-/clear-0.1.0.tgz#b81b1e03437a716984fd7ac97c87d73bdfe7048a"
integrity sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==
-cleave.js@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/cleave.js/-/cleave.js-1.6.0.tgz#0e4e011943bdd70c67c9dcf4ff800ce710529171"
- integrity sha512-ivqesy3j5hQVG3gywPfwKPbi/7ZSftY/UNp5uphnqjr25yI2CP8FS2ODQPzuLXXnNLi29e2+PgPkkiKUXLs/Nw==
+cleave-zen@^0.0.17:
+ version "0.0.17"
+ resolved "https://registry.yarnpkg.com/cleave-zen/-/cleave-zen-0.0.17.tgz#c9ba1739531e24cb7cb522328a90c8e9f7b785d0"
+ integrity sha512-SLuad6RaACsONu3Fr4F3sE9YXxMlMv6AiaZ8qkwfdV9Ex+TJ+ip3rLFsdrqvnp0YGlslfzAfw8q8MwQJW3yHdg==
cli-boxes@^1.0.0:
version "1.0.0"
@@ -8713,7 +8544,7 @@ cssstyle@^2.3.0:
dependencies:
cssom "~0.3.6"
-csstype@^3.0.2, csstype@^3.1.2, csstype@^3.1.3:
+csstype@^3.0.2, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@@ -16690,7 +16521,7 @@ postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.2.1, postcss@^8.4.18, postcss@^8.4.23, postcss@^8.4.26, postcss@^8.4.27, postcss@^8.4.32, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.36:
+postcss@^8.2.1, postcss@^8.4.18, postcss@^8.4.23, postcss@^8.4.26, postcss@^8.4.27, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.36:
version "8.4.38"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@@ -18828,7 +18659,7 @@ string-hash@^1.1.1:
resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==
-"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -18846,6 +18677,15 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
@@ -18923,7 +18763,7 @@ stringify-object@3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -18951,6 +18791,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
strip-ansi@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -20918,7 +20765,7 @@ vue-virtual-scroller@2.0.0-beta.8:
vue-observe-visibility "^2.0.0-alpha.1"
vue-resize "^2.0.0-alpha.1"
-vue@*, vue@^3.0.0, vue@^3.4.21:
+vue@*, vue@3.3.11, vue@3.4.8, vue@^3.0.0, vue@^3.4.21:
version "3.4.21"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731"
integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
@@ -20929,28 +20776,6 @@ vue@*, vue@^3.0.0, vue@^3.4.21:
"@vue/server-renderer" "3.4.21"
"@vue/shared" "3.4.21"
-vue@3.3.11:
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.11.tgz#898d97025f73cdb5fc4e3ae3fd07a54615232140"
- integrity sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w==
- dependencies:
- "@vue/compiler-dom" "3.3.11"
- "@vue/compiler-sfc" "3.3.11"
- "@vue/runtime-dom" "3.3.11"
- "@vue/server-renderer" "3.3.11"
- "@vue/shared" "3.3.11"
-
-vue@3.4.8:
- version "3.4.8"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.8.tgz#a7a5b4692fe19deb211fdfe30509d9b68c8d909b"
- integrity sha512-vJffFOe6DqWsAI10v3tDhb1nJrj7CF3CbdQwOznywAsFNoyvrQ1AWQdcIWJpmRpRnw7NFzstzh6fh4w7n1PNdg==
- dependencies:
- "@vue/compiler-dom" "3.4.8"
- "@vue/compiler-sfc" "3.4.8"
- "@vue/runtime-dom" "3.4.8"
- "@vue/server-renderer" "3.4.8"
- "@vue/shared" "3.4.8"
-
w3c-hr-time@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
@@ -21241,7 +21066,7 @@ wordwrap@^1.0.0:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -21268,6 +21093,15 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^8.0.1, wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"