@leaflink/stash 48.10.0 → 48.10.1-beta.1
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/dist/Accordion.js +1 -1
- package/dist/ActionsDropdown.js +1 -1
- package/dist/AddressSelect.js +1 -1
- package/dist/AddressSelect.js.map +1 -1
- package/dist/Alert.js +1 -1
- package/dist/Alert.js.map +1 -1
- package/dist/AppNavigationItem.js +1 -1
- package/dist/AppTopbar.js +1 -1
- package/dist/Avatar.vue.d.ts +1 -1
- package/dist/Badge.js.map +1 -1
- package/dist/Button.vue.d.ts +3 -1
- package/dist/CardMedia.js +1 -1
- package/dist/Carousel.js.map +1 -1
- package/dist/ChevronToggle.js +1 -1
- package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-1591294c.js.map +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Chip.js.map +1 -1
- package/dist/Chip.vue.d.ts +1 -1
- package/dist/ConfirmationCodeInput.js.map +1 -1
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/Copy.js +1 -1
- package/dist/CurrencyInput.js +39 -34
- package/dist/CurrencyInput.js.map +1 -1
- package/dist/DataView.js +1 -1
- package/dist/DataView.js.map +1 -1
- package/dist/DataViewFilters.js +1 -1
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewSortButton.js +1 -1
- package/dist/DataViewToolbar.js +1 -1
- package/dist/DatePicker.js +3355 -3368
- package/dist/DatePicker.js.map +1 -1
- package/dist/Dialog.js +75 -69
- package/dist/Dialog.js.map +1 -1
- package/dist/Dropdown.js +1 -1
- package/dist/Dropdown.js.map +1 -1
- package/dist/EmptyState.js +2 -2
- package/dist/Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js.map +1 -1
- package/dist/FileUpload.js +1 -1
- package/dist/FileUpload.js.map +1 -1
- package/dist/FilterChip.js +1 -1
- package/dist/FilterDrawerItem.js +1 -1
- package/dist/FilterDropdown.js +1 -1
- package/dist/FilterSelect.js +1 -1
- package/dist/FilterSelect.js.map +1 -1
- package/dist/Filters.js +1 -1
- package/dist/Filters.js.map +1 -1
- package/dist/HttpError.js +2 -2
- package/dist/Icon.js +1 -1
- package/dist/Icon.js.map +1 -1
- package/dist/IconLabel.js +1 -1
- package/dist/IconLabel.vue.d.ts +1 -1
- package/dist/Illustration.js +3 -3
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-4b8944da.js → Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js} +2 -2
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-4b8944da.js.map → Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js.map} +1 -1
- package/dist/Image.js.map +1 -1
- package/dist/InlineEdit.js +1 -1
- package/dist/Input.js +1 -1
- package/dist/Input.js.map +1 -1
- package/dist/InputOptions.js +1 -1
- package/dist/LicenseChip.js +1 -1
- package/dist/ListView.js +2 -2
- package/dist/ListView.js.map +1 -1
- package/dist/Logo.vue_vue_type_script_setup_true_lang-d7da48a0.js.map +1 -1
- package/dist/Metric.vue.d.ts +1 -1
- package/dist/Modal.js +1 -1
- package/dist/Modals.js +6 -6
- package/dist/Modals.js.map +1 -1
- package/dist/ObfuscateText.js +1 -1
- package/dist/PageNavigation.js +1 -1
- package/dist/PageNavigation.js.map +1 -1
- package/dist/Paginate.js +1 -1
- package/dist/PlaidLink.js.map +1 -1
- package/dist/QuickAction.js +1 -1
- package/dist/RadioNew.js.map +1 -1
- package/dist/RangeInput.js +1 -1
- package/dist/SearchBar.js +1 -1
- package/dist/Select.js +709 -653
- package/dist/Select.js.map +1 -1
- package/dist/SelectStatus.js +1 -1
- package/dist/SelectStatus.js.map +1 -1
- package/dist/SelectStatus.vue.d.ts +1 -1
- package/dist/Skeleton.js.map +1 -1
- package/dist/Step.js +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Tab.vue_vue_type_script_setup_true_lang-69d1b046.js.map +1 -1
- package/dist/Table.js +2 -2
- package/dist/TableCell.js +2 -2
- package/dist/TableHeaderCell.js +2 -2
- package/dist/TableHeaderRow.js +2 -2
- package/dist/TableRow.js +2 -2
- package/dist/TableRow.vue.d.ts +1 -1
- package/dist/Tabs.js +1 -1
- package/dist/TextEditor.js +991 -991
- package/dist/TextEditor.js.map +1 -1
- package/dist/Textarea.js.map +1 -1
- package/dist/Toast.js +274 -252
- package/dist/Toast.js.map +1 -1
- package/dist/Toasts.js +1 -1
- package/dist/ToastsPlugin.js +1 -1
- package/dist/components.css +2 -2
- package/dist/index-5e5945a9.js.map +1 -1
- package/dist/{index-79ce320f.js → index-9e1095ef.js} +6 -4
- package/dist/index-9e1095ef.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/isDefined-2ce6cde4.js.map +1 -1
- package/dist/observe.js.map +1 -1
- package/dist/searchFuzzy-74a7de1c.js.map +1 -1
- package/dist/sticky.js.map +1 -1
- package/dist/tailwind-base.js.map +1 -1
- package/dist/toTimeZone-e6e9ab75.js.map +1 -1
- package/dist/tooltip.js.map +1 -1
- package/dist/useGoogleMaps.js +109 -119
- package/dist/useGoogleMaps.js.map +1 -1
- package/dist/useModals.d.ts +6 -363
- package/dist/useModals.js.map +1 -1
- package/dist/useScriptTag.js.map +1 -1
- package/dist/useStepper.js.map +1 -1
- package/dist/useValidation.js.map +1 -1
- package/dist/utils/colorScheme.js.map +1 -1
- package/dist/utils/createQueryString.js.map +1 -1
- package/dist/utils/formatDateTime.js.map +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/storage.js.map +1 -1
- package/dist/viewable.js.map +1 -1
- package/package.json +30 -46
- package/dist/index-79ce320f.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationCodeInput.js","sources":["../src/components/ConfirmationCodeInput/ConfirmationCodeInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { Ref, ref, useCssModule, watch } from 'vue';\n\n const classes = useCssModule();\n\n export interface VerificationCodeInputProps {\n digitCount?: number;\n /**\n * Error text to display.\n */\n errorText?: string;\n /**\n * Success text to display.\n */\n successText?: string;\n }\n\n const props = withDefaults(defineProps<VerificationCodeInputProps>(), {\n digitCount: 6,\n errorText: undefined,\n successText: undefined,\n });\n\n const emit =\n defineEmits<{\n (e: 'update:model-value', value: number | null): void;\n }>();\n\n const data: Ref<Array<string>> = ref([]);\n const inputEl = ref();\n\n function handleOtpInput(e) {\n if (e.data && e.target.nextElementSibling) {\n e.target.nextElementSibling.focus();\n } else if (e.data == null && e.target.previousElementSibling) {\n e.target.previousElementSibling.focus();\n }\n }\n\n function handleFocus(event, elementIndex: number) {\n event.preventDefault();\n\n if (data.value[elementIndex]) {\n inputEl.value[elementIndex].focus();\n\n return;\n }\n\n let focusedIndex = 0;\n\n data.value.forEach((value, index) => {\n if (value) {\n focusedIndex = index + 1;\n }\n });\n\n inputEl.value[focusedIndex].focus();\n }\n\n function handleKeyUp(e: KeyboardEvent, index: number) {\n if (e.key !== 'Backspace' && !new RegExp('^([0-9])$').test(e.key)) {\n e.preventDefault();\n return;\n }\n\n let focusedIndex = 0;\n\n if (index !== 0) {\n focusedIndex = index - 1;\n } else {\n focusedIndex = 0;\n }\n\n if (e.key === 'Backspace') {\n if (index + 1 === data.value.length - 1 && data.value[index]) {\n inputEl.value[index + 1].focus();\n return;\n }\n\n if (data.value[index]) {\n return;\n }\n\n data.value[focusedIndex] = '';\n inputEl.value[focusedIndex].focus();\n\n return;\n }\n\n if (!new RegExp('^([0-9])$').test(e.key) && !data.value[index]) {\n data.value[focusedIndex] = '';\n inputEl.value[focusedIndex].focus();\n return;\n }\n }\n\n function handlePaste(e: ClipboardEvent) {\n const pasteData = e.clipboardData?.getData('text');\n\n if (isNaN(Number(pasteData))) {\n inputEl.value[0].focus();\n return;\n }\n\n let nextEl = inputEl.value[0].nextElementSibling;\n if (pasteData) {\n for (let i = 1; i < pasteData.length; i++) {\n if (nextEl) {\n data.value[i] = pasteData[i];\n nextEl = nextEl.nextElementSibling;\n }\n }\n }\n }\n\n watch(\n () => data,\n (newVal) => {\n if (newVal.value.join('') === '') {\n emit('update:model-value', null);\n } else {\n if (isNaN(Number(newVal.value[0]))) {\n data.value[0] = '';\n return;\n }\n emit('update:model-value', Number(newVal.value.join('')));\n }\n },\n { deep: true },\n );\n</script>\n\n<template>\n <form\n ref=\"otpCont\"\n class=\"stash-confirmation-code-input tw-inline-block\"\n data-test=\"stash-confirmation-code-input\"\n @input=\"handleOtpInput\"\n >\n <div class=\"tw-mb-3 tw-flex tw-gap-6\">\n <template v-for=\"(field, index) in props.digitCount\" :key=\"field\">\n <input\n ref=\"inputEl\"\n v-model=\"data[field - 1]\"\n data-test=\"stash-confirmation-code-input__otp\"\n type=\"text\"\n maxlength=\"1\"\n class=\"tw-border tw-p-2 tw-text-center tw-text-base tw-font-medium tw-text-ice-900 focus:tw-border-blue-500\"\n :class=\"[\n classes.otpCodeInput,\n { [classes['has-error']]: !!props.errorText },\n { [classes['has-success']]: !!props.successText },\n ]\"\n inputmode=\"numeric\"\n @paste=\"field === 1 && handlePaste($event)\"\n @keyup=\"handleKeyUp($event, index)\"\n @click=\"(evt) => handleFocus(evt, index)\"\n />\n </template>\n </div>\n <small\n v-if=\"props.errorText\"\n class=\"tw-block tw-text-center tw-text-red-500\"\n :class=\"classes.error\"\n data-test=\"field-error\"\n >\n {{ props.errorText }}\n </small>\n <small\n v-if=\"props.successText\"\n class=\"tw-block tw-text-center tw-text-green-500\"\n :class=\"classes.error\"\n data-test=\"field-error\"\n >\n {{ props.successText }}\n </small>\n </form>\n</template>\n\n<style module>\n .otpCodeInput {\n border-radius: 4px;\n caret-color: transparent;\n height: 36px;\n width: 36px;\n }\n\n .otpCodeInput.has-error:not(:focus) {\n border-color: var(--color-red-500);\n }\n\n .otpCodeInput.has-success:not(:focus) {\n border-color: var(--color-green-500);\n }\n\n .otpCodeInput:focus {\n outline: none;\n }\n\n .error {\n margin-top: 4px;\n white-space: pre-line;\n }\n</style>\n"],"names":["classes","useCssModule","data","ref","inputEl","handleOtpInput","handleFocus","event","elementIndex","focusedIndex","value","index","handleKeyUp","handlePaste","pasteData","_a","nextEl","i","watch","newVal","emit"],"mappings":";;;;;;;;;;;iBAGQA,IAAUC,KAyBVC,IAA2BC,EAAI,CAAA,CAAE,GACjCC,IAAUD;AAEhB,aAASE,EAAe,GAAG;AACzB,MAAI,EAAE,QAAQ,EAAE,OAAO,qBACnB,EAAA,OAAO,mBAAmB,UACnB,EAAE,QAAQ,QAAQ,EAAE,OAAO,0BAClC,EAAA,OAAO,uBAAuB;IAEpC;AAES,aAAAC,EAAYC,GAAOC,GAAsB;AAG5C,UAFJD,EAAM,eAAe,GAEjBL,EAAK,MAAMM,CAAY,GAAG;AACpB,QAAAJ,EAAA,MAAMI,CAAY,EAAE,MAAM;AAElC;AAAA
|
|
1
|
+
{"version":3,"file":"ConfirmationCodeInput.js","sources":["../src/components/ConfirmationCodeInput/ConfirmationCodeInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { Ref, ref, useCssModule, watch } from 'vue';\n\n const classes = useCssModule();\n\n export interface VerificationCodeInputProps {\n digitCount?: number;\n /**\n * Error text to display.\n */\n errorText?: string;\n /**\n * Success text to display.\n */\n successText?: string;\n }\n\n const props = withDefaults(defineProps<VerificationCodeInputProps>(), {\n digitCount: 6,\n errorText: undefined,\n successText: undefined,\n });\n\n const emit =\n defineEmits<{\n (e: 'update:model-value', value: number | null): void;\n }>();\n\n const data: Ref<Array<string>> = ref([]);\n const inputEl = ref();\n\n function handleOtpInput(e) {\n if (e.data && e.target.nextElementSibling) {\n e.target.nextElementSibling.focus();\n } else if (e.data == null && e.target.previousElementSibling) {\n e.target.previousElementSibling.focus();\n }\n }\n\n function handleFocus(event, elementIndex: number) {\n event.preventDefault();\n\n if (data.value[elementIndex]) {\n inputEl.value[elementIndex].focus();\n\n return;\n }\n\n let focusedIndex = 0;\n\n data.value.forEach((value, index) => {\n if (value) {\n focusedIndex = index + 1;\n }\n });\n\n inputEl.value[focusedIndex].focus();\n }\n\n function handleKeyUp(e: KeyboardEvent, index: number) {\n if (e.key !== 'Backspace' && !new RegExp('^([0-9])$').test(e.key)) {\n e.preventDefault();\n return;\n }\n\n let focusedIndex = 0;\n\n if (index !== 0) {\n focusedIndex = index - 1;\n } else {\n focusedIndex = 0;\n }\n\n if (e.key === 'Backspace') {\n if (index + 1 === data.value.length - 1 && data.value[index]) {\n inputEl.value[index + 1].focus();\n return;\n }\n\n if (data.value[index]) {\n return;\n }\n\n data.value[focusedIndex] = '';\n inputEl.value[focusedIndex].focus();\n\n return;\n }\n\n if (!new RegExp('^([0-9])$').test(e.key) && !data.value[index]) {\n data.value[focusedIndex] = '';\n inputEl.value[focusedIndex].focus();\n return;\n }\n }\n\n function handlePaste(e: ClipboardEvent) {\n const pasteData = e.clipboardData?.getData('text');\n\n if (isNaN(Number(pasteData))) {\n inputEl.value[0].focus();\n return;\n }\n\n let nextEl = inputEl.value[0].nextElementSibling;\n if (pasteData) {\n for (let i = 1; i < pasteData.length; i++) {\n if (nextEl) {\n data.value[i] = pasteData[i];\n nextEl = nextEl.nextElementSibling;\n }\n }\n }\n }\n\n watch(\n () => data,\n (newVal) => {\n if (newVal.value.join('') === '') {\n emit('update:model-value', null);\n } else {\n if (isNaN(Number(newVal.value[0]))) {\n data.value[0] = '';\n return;\n }\n emit('update:model-value', Number(newVal.value.join('')));\n }\n },\n { deep: true },\n );\n</script>\n\n<template>\n <form\n ref=\"otpCont\"\n class=\"stash-confirmation-code-input tw-inline-block\"\n data-test=\"stash-confirmation-code-input\"\n @input=\"handleOtpInput\"\n >\n <div class=\"tw-mb-3 tw-flex tw-gap-6\">\n <template v-for=\"(field, index) in props.digitCount\" :key=\"field\">\n <input\n ref=\"inputEl\"\n v-model=\"data[field - 1]\"\n data-test=\"stash-confirmation-code-input__otp\"\n type=\"text\"\n maxlength=\"1\"\n class=\"tw-border tw-p-2 tw-text-center tw-text-base tw-font-medium tw-text-ice-900 focus:tw-border-blue-500\"\n :class=\"[\n classes.otpCodeInput,\n { [classes['has-error']]: !!props.errorText },\n { [classes['has-success']]: !!props.successText },\n ]\"\n inputmode=\"numeric\"\n @paste=\"field === 1 && handlePaste($event)\"\n @keyup=\"handleKeyUp($event, index)\"\n @click=\"(evt) => handleFocus(evt, index)\"\n />\n </template>\n </div>\n <small\n v-if=\"props.errorText\"\n class=\"tw-block tw-text-center tw-text-red-500\"\n :class=\"classes.error\"\n data-test=\"field-error\"\n >\n {{ props.errorText }}\n </small>\n <small\n v-if=\"props.successText\"\n class=\"tw-block tw-text-center tw-text-green-500\"\n :class=\"classes.error\"\n data-test=\"field-error\"\n >\n {{ props.successText }}\n </small>\n </form>\n</template>\n\n<style module>\n .otpCodeInput {\n border-radius: 4px;\n caret-color: transparent;\n height: 36px;\n width: 36px;\n }\n\n .otpCodeInput.has-error:not(:focus) {\n border-color: var(--color-red-500);\n }\n\n .otpCodeInput.has-success:not(:focus) {\n border-color: var(--color-green-500);\n }\n\n .otpCodeInput:focus {\n outline: none;\n }\n\n .error {\n margin-top: 4px;\n white-space: pre-line;\n }\n</style>\n"],"names":["classes","useCssModule","data","ref","inputEl","handleOtpInput","handleFocus","event","elementIndex","focusedIndex","value","index","handleKeyUp","handlePaste","pasteData","_a","nextEl","i","watch","newVal","emit"],"mappings":";;;;;;;;;;;iBAGQA,IAAUC,KAyBVC,IAA2BC,EAAI,CAAA,CAAE,GACjCC,IAAUD;AAEhB,aAASE,EAAe,GAAG;AACzB,MAAI,EAAE,QAAQ,EAAE,OAAO,qBACnB,EAAA,OAAO,mBAAmB,UACnB,EAAE,QAAQ,QAAQ,EAAE,OAAO,0BAClC,EAAA,OAAO,uBAAuB;IAEpC;AAES,aAAAC,EAAYC,GAAOC,GAAsB;AAG5C,UAFJD,EAAM,eAAe,GAEjBL,EAAK,MAAMM,CAAY,GAAG;AACpB,QAAAJ,EAAA,MAAMI,CAAY,EAAE,MAAM;AAElC;AAAA;AAGF,UAAIC,IAAe;AAEnB,MAAAP,EAAK,MAAM,QAAQ,CAACQ,GAAOC,MAAU;AACnC,QAAID,MACFD,IAAeE,IAAQ;AAAA,MACzB,CACD,GAEOP,EAAA,MAAMK,CAAY,EAAE,MAAM;AAAA,IACpC;AAES,aAAAG,EAAY,GAAkBD,GAAe;AAChD,UAAA,EAAE,QAAQ,eAAe,CAAC,IAAI,OAAO,WAAW,EAAE,KAAK,EAAE,GAAG,GAAG;AACjE,UAAE,eAAe;AACjB;AAAA;AAGF,UAAIF,IAAe;AAQf,UANAE,MAAU,IACZF,IAAeE,IAAQ,IAERF,IAAA,GAGb,EAAE,QAAQ,aAAa;AACrB,YAAAE,IAAQ,MAAMT,EAAK,MAAM,SAAS,KAAKA,EAAK,MAAMS,CAAK,GAAG;AAC5D,UAAAP,EAAQ,MAAMO,IAAQ,CAAC,EAAE,MAAM;AAC/B;AAAA;AAGE,YAAAT,EAAK,MAAMS,CAAK;AAClB;AAGG,QAAAT,EAAA,MAAMO,CAAY,IAAI,IACnBL,EAAA,MAAMK,CAAY,EAAE,MAAM;AAElC;AAAA;AAGF,UAAI,CAAC,IAAI,OAAO,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,CAACP,EAAK,MAAMS,CAAK,GAAG;AACzD,QAAAT,EAAA,MAAMO,CAAY,IAAI,IACnBL,EAAA,MAAMK,CAAY,EAAE,MAAM;AAClC;AAAA;AAAA,IAEJ;AAEA,aAASI,EAAY,GAAmB;;AACtC,YAAMC,KAAYC,IAAA,EAAE,kBAAF,gBAAAA,EAAiB,QAAQ;AAE3C,UAAI,MAAM,OAAOD,CAAS,CAAC,GAAG;AACpB,QAAAV,EAAA,MAAM,CAAC,EAAE,MAAM;AACvB;AAAA;AAGF,UAAIY,IAASZ,EAAQ,MAAM,CAAC,EAAE;AAC9B,UAAIU;AACF,iBAASG,IAAI,GAAGA,IAAIH,EAAU,QAAQG;AACpC,UAAID,MACFd,EAAK,MAAMe,CAAC,IAAIH,EAAUG,CAAC,GAC3BD,IAASA,EAAO;AAAA,IAIxB;AAEA,WAAAE;AAAA,MACE,MAAMhB;AAAA,MACN,CAACiB,MAAW;AACV,YAAIA,EAAO,MAAM,KAAK,EAAE,MAAM;AAC5B,UAAAC,EAAK,sBAAsB,IAAI;AAAA,aAC1B;AACL,cAAI,MAAM,OAAOD,EAAO,MAAM,CAAC,CAAC,CAAC,GAAG;AAC7B,YAAAjB,EAAA,MAAM,CAAC,IAAI;AAChB;AAAA;AAEF,UAAAkB,EAAK,sBAAsB,OAAOD,EAAO,MAAM,KAAK,EAAE,CAAC,CAAC;AAAA;AAAA,MAE5D;AAAA,MACA,EAAE,MAAM,GAAK;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextSwitcher.js","sources":["../src/components/ContextSwitcher/ContextSwitcher.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n import type { LocationQuery } from 'vue-router';\n\n import { APPS } from '../../constants';\n import { getPersistentItem, removePersistentItem, setPersistentItem } from '../../utils/storage';\n\n defineOptions({\n name: 'll-context-switcher',\n });\n\n type AppValues = typeof APPS[keyof typeof APPS];\n\n export interface ContextSwitcherProps {\n /**\n * The current app that is active. Choices are 'marketplace' | 'payments'.\n */\n activeApp: AppValues;\n\n /**\n * Portal access to both marketplace and payments.\n */\n portalAccess?: {\n commercePortal: boolean;\n paymentsPortal: boolean;\n };\n\n /**\n * Url to replace the other app if current user does not have portal access.\n */\n limitedAccessUrl: string;\n\n routeQuery?: LocationQuery;\n }\n\n const props = withDefaults(defineProps<ContextSwitcherProps>(), {\n portalAccess: () => ({\n commercePortal: false,\n paymentsPortal: false,\n }),\n routeQuery: () => ({}),\n });\n\n const emit =\n defineEmits<{\n /**\n * Fires on click of the context switcher.\n * @deprecated Use `switch` instead.\n */\n (e: 'click', urlInfo: { from: string; to: string }): void;\n /**\n * Fires on click of the context switcher.\n */\n (e: 'switch', evt: MouseEvent, urlInfo: { from: string; to: string }): void;\n }>();\n\n interface ContextItem {\n app: AppValues;\n name: string;\n hasBaseRoute: boolean;\n }\n\n const CONTEXT_SWITCHER_STORAGE_KEY = '-last-session';\n\n const routes = computed<ContextItem[]>(() => {\n return [\n {\n app: APPS.MARKETPLACE,\n name: props.portalAccess.commercePortal ? 'dashboard' : props.limitedAccessUrl,\n hasBaseRoute: props.portalAccess.commercePortal,\n },\n {\n app: APPS.PAYMENTS,\n name: props.portalAccess.paymentsPortal ? 'payments' : props.limitedAccessUrl,\n hasBaseRoute: false,\n },\n ];\n });\n\n /**\n * Saves the current url in local storage before leaving the current app, if user has access to both apps\n * If a previous session url exists, redirect users there instead then remove the local storage item afterward.\n *\n * @param event - Event from user click.\n * @param app - App name of the clicked link, is a key of `APPS`.\n */\n function handleClick(event: MouseEvent, app: AppValues) {\n if (app === props.activeApp) {\n return;\n }\n\n const currentLocation = window.location.href;\n let destination = (event.target as HTMLAnchorElement).href;\n\n if (props.portalAccess.paymentsPortal && props.portalAccess.commercePortal) {\n const appRoute = app === APPS.PAYMENTS ? APPS.MARKETPLACE : APPS.PAYMENTS;\n const currentSessionName = `${appRoute}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n const prevSessionName = `${app}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n\n // save the current url in local storage\n setPersistentItem(currentSessionName, currentLocation, { global: true });\n\n // get the other app's url from local storage\n const prevSessionUrl = getPersistentItem(prevSessionName, { global: true });\n\n // if it exists, redirect users to such location and remove the item from local storage\n if (prevSessionUrl) {\n event.preventDefault();\n destination = prevSessionUrl;\n window.location.href = prevSessionUrl;\n removePersistentItem(prevSessionName, { global: true });\n }\n }\n\n emit('click', { from: currentLocation, to: destination });\n emit('switch', event, { from: currentLocation, to: destination });\n }\n</script>\n\n<template>\n <div\n class=\"\n stash-context-switcher\n tw-mx-auto tw-flex tw-w-64 tw-rounded-full tw-border tw-border-white/10 tw-bg-purple-700 tw-p-1.5 tw-text-center\n \"\n data-test=\"stash-context-switcher\"\n >\n <template v-for=\"route in routes\" :key=\"route.app\">\n <!-- render anchor tag to override base route in Payments -->\n <a\n v-if=\"route.hasBaseRoute\"\n class=\"\n tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold\n !tw-capitalize\n tw-leading-none\n !tw-no-underline\n \"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :href=\"`/${route.name}`\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </a>\n\n <router-link\n v-else\n class=\"\n tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold\n !tw-capitalize\n tw-leading-none\n !tw-no-underline\n \"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :to=\"{ name: route.name, query: routeQuery }\"\n :data-test-route=\"JSON.stringify({ name: route.name, query: routeQuery })\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </router-link>\n </template>\n </div>\n</template>\n"],"names":["CONTEXT_SWITCHER_STORAGE_KEY","routes","computed","APPS","props","handleClick","event","app","currentLocation","destination","currentSessionName","prevSessionName","setPersistentItem","prevSessionUrl","getPersistentItem","removePersistentItem","emit"],"mappings":";;;;;;;;;;;;4BA8DQA,IAA+B;;;;;;;;;;;;;;iBAE/BC,IAASC,EAAwB,MAC9B;AAAA,MACL;AAAA,QACE,KAAKC,EAAK;AAAA,QACV,MAAMC,EAAM,aAAa,iBAAiB,cAAcA,EAAM;AAAA,QAC9D,cAAcA,EAAM,aAAa;AAAA,MACnC;AAAA,MACA;AAAA,QACE,KAAKD,EAAK;AAAA,QACV,MAAMC,EAAM,aAAa,iBAAiB,aAAaA,EAAM;AAAA,QAC7D,cAAc;AAAA,MAChB;AAAA,IAAA,CAEH;AASQ,aAAAC,EAAYC,GAAmBC,GAAgB;AAClD,UAAAA,MAAQH,EAAM;AAChB;AAGI,YAAAI,IAAkB,OAAO,SAAS;AACpC,UAAAC,IAAeH,EAAM,OAA6B;AAEtD,UAAIF,EAAM,aAAa,kBAAkBA,EAAM,aAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ContextSwitcher.js","sources":["../src/components/ContextSwitcher/ContextSwitcher.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n import type { LocationQuery } from 'vue-router';\n\n import { APPS } from '../../constants';\n import { getPersistentItem, removePersistentItem, setPersistentItem } from '../../utils/storage';\n\n defineOptions({\n name: 'll-context-switcher',\n });\n\n type AppValues = typeof APPS[keyof typeof APPS];\n\n export interface ContextSwitcherProps {\n /**\n * The current app that is active. Choices are 'marketplace' | 'payments'.\n */\n activeApp: AppValues;\n\n /**\n * Portal access to both marketplace and payments.\n */\n portalAccess?: {\n commercePortal: boolean;\n paymentsPortal: boolean;\n };\n\n /**\n * Url to replace the other app if current user does not have portal access.\n */\n limitedAccessUrl: string;\n\n routeQuery?: LocationQuery;\n }\n\n const props = withDefaults(defineProps<ContextSwitcherProps>(), {\n portalAccess: () => ({\n commercePortal: false,\n paymentsPortal: false,\n }),\n routeQuery: () => ({}),\n });\n\n const emit =\n defineEmits<{\n /**\n * Fires on click of the context switcher.\n * @deprecated Use `switch` instead.\n */\n (e: 'click', urlInfo: { from: string; to: string }): void;\n /**\n * Fires on click of the context switcher.\n */\n (e: 'switch', evt: MouseEvent, urlInfo: { from: string; to: string }): void;\n }>();\n\n interface ContextItem {\n app: AppValues;\n name: string;\n hasBaseRoute: boolean;\n }\n\n const CONTEXT_SWITCHER_STORAGE_KEY = '-last-session';\n\n const routes = computed<ContextItem[]>(() => {\n return [\n {\n app: APPS.MARKETPLACE,\n name: props.portalAccess.commercePortal ? 'dashboard' : props.limitedAccessUrl,\n hasBaseRoute: props.portalAccess.commercePortal,\n },\n {\n app: APPS.PAYMENTS,\n name: props.portalAccess.paymentsPortal ? 'payments' : props.limitedAccessUrl,\n hasBaseRoute: false,\n },\n ];\n });\n\n /**\n * Saves the current url in local storage before leaving the current app, if user has access to both apps\n * If a previous session url exists, redirect users there instead then remove the local storage item afterward.\n *\n * @param event - Event from user click.\n * @param app - App name of the clicked link, is a key of `APPS`.\n */\n function handleClick(event: MouseEvent, app: AppValues) {\n if (app === props.activeApp) {\n return;\n }\n\n const currentLocation = window.location.href;\n let destination = (event.target as HTMLAnchorElement).href;\n\n if (props.portalAccess.paymentsPortal && props.portalAccess.commercePortal) {\n const appRoute = app === APPS.PAYMENTS ? APPS.MARKETPLACE : APPS.PAYMENTS;\n const currentSessionName = `${appRoute}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n const prevSessionName = `${app}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n\n // save the current url in local storage\n setPersistentItem(currentSessionName, currentLocation, { global: true });\n\n // get the other app's url from local storage\n const prevSessionUrl = getPersistentItem(prevSessionName, { global: true });\n\n // if it exists, redirect users to such location and remove the item from local storage\n if (prevSessionUrl) {\n event.preventDefault();\n destination = prevSessionUrl;\n window.location.href = prevSessionUrl;\n removePersistentItem(prevSessionName, { global: true });\n }\n }\n\n emit('click', { from: currentLocation, to: destination });\n emit('switch', event, { from: currentLocation, to: destination });\n }\n</script>\n\n<template>\n <div\n class=\"\n stash-context-switcher\n tw-mx-auto tw-flex tw-w-64 tw-rounded-full tw-border tw-border-white/10 tw-bg-purple-700 tw-p-1.5 tw-text-center\n \"\n data-test=\"stash-context-switcher\"\n >\n <template v-for=\"route in routes\" :key=\"route.app\">\n <!-- render anchor tag to override base route in Payments -->\n <a\n v-if=\"route.hasBaseRoute\"\n class=\"\n tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold\n !tw-capitalize\n tw-leading-none\n !tw-no-underline\n \"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :href=\"`/${route.name}`\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </a>\n\n <router-link\n v-else\n class=\"\n tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold\n !tw-capitalize\n tw-leading-none\n !tw-no-underline\n \"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :to=\"{ name: route.name, query: routeQuery }\"\n :data-test-route=\"JSON.stringify({ name: route.name, query: routeQuery })\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </router-link>\n </template>\n </div>\n</template>\n"],"names":["CONTEXT_SWITCHER_STORAGE_KEY","routes","computed","APPS","props","handleClick","event","app","currentLocation","destination","currentSessionName","prevSessionName","setPersistentItem","prevSessionUrl","getPersistentItem","removePersistentItem","emit"],"mappings":";;;;;;;;;;;;4BA8DQA,IAA+B;;;;;;;;;;;;;;iBAE/BC,IAASC,EAAwB,MAC9B;AAAA,MACL;AAAA,QACE,KAAKC,EAAK;AAAA,QACV,MAAMC,EAAM,aAAa,iBAAiB,cAAcA,EAAM;AAAA,QAC9D,cAAcA,EAAM,aAAa;AAAA,MACnC;AAAA,MACA;AAAA,QACE,KAAKD,EAAK;AAAA,QACV,MAAMC,EAAM,aAAa,iBAAiB,aAAaA,EAAM;AAAA,QAC7D,cAAc;AAAA,MAChB;AAAA,IAAA,CAEH;AASQ,aAAAC,EAAYC,GAAmBC,GAAgB;AAClD,UAAAA,MAAQH,EAAM;AAChB;AAGI,YAAAI,IAAkB,OAAO,SAAS;AACpC,UAAAC,IAAeH,EAAM,OAA6B;AAEtD,UAAIF,EAAM,aAAa,kBAAkBA,EAAM,aAAa,gBAAgB;AAEpE,cAAAM,IAAqB,GADVH,MAAQJ,EAAK,WAAWA,EAAK,cAAcA,EAAK,WACxBH,KACnCW,IAAkB,GAAGJ,IAAMP;AAGjC,QAAAY,EAAkBF,GAAoBF,GAAiB,EAAE,QAAQ,GAAM,CAAA;AAGvE,cAAMK,IAAiBC,EAAkBH,GAAiB,EAAE,QAAQ,IAAM;AAG1E,QAAIE,MACFP,EAAM,eAAe,GACPG,IAAAI,GACd,OAAO,SAAS,OAAOA,GACvBE,EAAqBJ,GAAiB,EAAE,QAAQ,GAAM,CAAA;AAAA;AAI1D,MAAAK,EAAK,SAAS,EAAE,MAAMR,GAAiB,IAAIC,GAAa,GACxDO,EAAK,UAAUV,GAAO,EAAE,MAAME,GAAiB,IAAIC,GAAa;AAAA,IAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Copy.js
CHANGED
|
@@ -14,7 +14,7 @@ import "lodash-es/isFinite";
|
|
|
14
14
|
import "lodash-es/isPlainObject";
|
|
15
15
|
import "./Button.vue_used_vue_type_style_index_0_lang.module-a9290468.js";
|
|
16
16
|
import "lodash-es/uniqueId";
|
|
17
|
-
import "./index-
|
|
17
|
+
import "./index-9e1095ef.js";
|
|
18
18
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
19
19
|
const M = /* @__PURE__ */ u({
|
|
20
20
|
__name: "Copy",
|
package/dist/CurrencyInput.js
CHANGED
|
@@ -3,7 +3,7 @@ import z from "lodash-es/isEmpty";
|
|
|
3
3
|
import B from "./Icon.js";
|
|
4
4
|
import j from "./Input.js";
|
|
5
5
|
import "lodash-es/uniqueId";
|
|
6
|
-
import "./index-
|
|
6
|
+
import "./index-9e1095ef.js";
|
|
7
7
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
8
8
|
import "./_plugin-vue_export-helper-dad06003.js";
|
|
9
9
|
import "lodash-es/isNil";
|
|
@@ -14,8 +14,8 @@ import "lodash-es/get";
|
|
|
14
14
|
import "./Field.vue_vue_type_script_setup_true_lang-e1e4ff03.js";
|
|
15
15
|
import "./Label.vue_vue_type_script_setup_true_lang-4b02087f.js";
|
|
16
16
|
/**
|
|
17
|
-
* Vue Currency Input 3.0
|
|
18
|
-
* (c) 2018-
|
|
17
|
+
* Vue Currency Input 3.1.0
|
|
18
|
+
* (c) 2018-2024 Matthias Stiller
|
|
19
19
|
* @license MIT
|
|
20
20
|
*/
|
|
21
21
|
var f;
|
|
@@ -26,20 +26,25 @@ var y;
|
|
|
26
26
|
(function(s) {
|
|
27
27
|
s.precision = "precision", s.thousands = "thousands", s.millions = "millions", s.billions = "billions";
|
|
28
28
|
})(y || (y = {}));
|
|
29
|
-
const D = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), M = (s) => s.replace(/^0+(0$|[^0])/, "$1"), E = (s, i) => (s.match(new RegExp(D(i), "g")) || []).length, X = (s, i) => s.substring(0, s.indexOf(i)), P = [
|
|
29
|
+
const D = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), M = (s) => s.replace(/^0+(0$|[^0])/, "$1"), E = (s, i) => (s.match(new RegExp(D(i), "g")) || []).length, X = (s, i) => s.substring(0, s.indexOf(i)), P = [
|
|
30
|
+
",",
|
|
31
|
+
".",
|
|
32
|
+
"٫",
|
|
33
|
+
"。"
|
|
34
|
+
], N = "(0|[1-9]\\d*)";
|
|
30
35
|
class U {
|
|
31
36
|
constructor(i) {
|
|
32
|
-
var t, e, n,
|
|
33
|
-
const { currency: d, currencyDisplay:
|
|
37
|
+
var t, e, n, g, o, h;
|
|
38
|
+
const { currency: d, currencyDisplay: p, locale: r, precision: u, accountingSign: a, useGrouping: l } = i;
|
|
34
39
|
this.locale = r, this.options = {
|
|
35
40
|
currency: d,
|
|
36
41
|
useGrouping: l,
|
|
37
42
|
style: "currency",
|
|
38
43
|
currencySign: a ? "accounting" : void 0,
|
|
39
|
-
currencyDisplay:
|
|
44
|
+
currencyDisplay: p !== f.hidden ? p : void 0
|
|
40
45
|
};
|
|
41
46
|
const m = new Intl.NumberFormat(r, this.options), v = m.formatToParts(123456);
|
|
42
|
-
this.currency = (t = v.find(({ type: c }) => c === "currency")) === null || t === void 0 ? void 0 : t.value, this.digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((c) => c.toLocaleString(r)), this.decimalSymbol = (e = v.find(({ type: c }) => c === "decimal")) === null || e === void 0 ? void 0 : e.value, this.groupingSymbol = (n = v.find(({ type: c }) => c === "group")) === null || n === void 0 ? void 0 : n.value, this.minusSign = (
|
|
47
|
+
this.currency = (t = v.find(({ type: c }) => c === "currency")) === null || t === void 0 ? void 0 : t.value, this.digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((c) => c.toLocaleString(r)), this.decimalSymbol = (e = v.find(({ type: c }) => c === "decimal")) === null || e === void 0 ? void 0 : e.value, this.groupingSymbol = (n = v.find(({ type: c }) => c === "group")) === null || n === void 0 ? void 0 : n.value, this.minusSign = (g = m.formatToParts(-1).find(({ type: c }) => c === "minusSign")) === null || g === void 0 ? void 0 : g.value, this.decimalSymbol === void 0 ? this.minimumFractionDigits = this.maximumFractionDigits = 0 : typeof u == "number" ? this.minimumFractionDigits = this.maximumFractionDigits = u : (this.minimumFractionDigits = (o = u == null ? void 0 : u.min) !== null && o !== void 0 ? o : m.resolvedOptions().minimumFractionDigits, this.maximumFractionDigits = (h = u == null ? void 0 : u.max) !== null && h !== void 0 ? h : m.resolvedOptions().maximumFractionDigits);
|
|
43
48
|
const b = (c) => X(c, this.digits[1]), S = (c) => c.substring(c.lastIndexOf(this.decimalSymbol ? this.digits[0] : this.digits[1]) + 1);
|
|
44
49
|
this.prefix = b(m.format(1)), this.suffix = S(m.format(1)), this.negativePrefix = b(m.format(-1)), this.negativeSuffix = S(m.format(-1));
|
|
45
50
|
}
|
|
@@ -67,7 +72,7 @@ class U {
|
|
|
67
72
|
return i != null ? i.toLocaleString(this.locale, { ...this.options, ...t }) : "";
|
|
68
73
|
}
|
|
69
74
|
toFraction(i) {
|
|
70
|
-
return `${this.digits[0]}${this.decimalSymbol}${this.onlyLocaleDigits(i.
|
|
75
|
+
return `${this.digits[0]}${this.decimalSymbol}${this.onlyLocaleDigits(i.substring(1)).substring(0, this.maximumFractionDigits)}`;
|
|
71
76
|
}
|
|
72
77
|
isFractionIncomplete(i) {
|
|
73
78
|
return !!this.normalizeDigits(this.stripGroupingSeparator(i)).match(new RegExp(`^${N}${D(this.decimalSymbol)}$`));
|
|
@@ -89,7 +94,7 @@ class U {
|
|
|
89
94
|
}
|
|
90
95
|
normalizeDecimalSeparator(i, t) {
|
|
91
96
|
return P.forEach((e) => {
|
|
92
|
-
i = i.
|
|
97
|
+
i = i.substring(0, t) + i.substring(t).replace(e, this.decimalSymbol);
|
|
93
98
|
}), i;
|
|
94
99
|
}
|
|
95
100
|
normalizeDigits(i) {
|
|
@@ -111,7 +116,7 @@ class C {
|
|
|
111
116
|
}
|
|
112
117
|
class q extends C {
|
|
113
118
|
conformToMask(i, t = "") {
|
|
114
|
-
const e = this.currencyFormat.isNegative(i), n = (m) => m === "" && e && !(this.currencyFormat.minusSign === void 0 ? t === this.currencyFormat.negativePrefix + this.currencyFormat.negativeSuffix : t === this.currencyFormat.negativePrefix),
|
|
119
|
+
const e = this.currencyFormat.isNegative(i), n = (m) => m === "" && e && !(this.currencyFormat.minusSign === void 0 ? t === this.currencyFormat.negativePrefix + this.currencyFormat.negativeSuffix : t === this.currencyFormat.negativePrefix), g = (m) => {
|
|
115
120
|
if (n(m))
|
|
116
121
|
return "";
|
|
117
122
|
if (this.currencyFormat.maximumFractionDigits > 0) {
|
|
@@ -124,10 +129,10 @@ class q extends C {
|
|
|
124
129
|
};
|
|
125
130
|
let o = i;
|
|
126
131
|
o = this.currencyFormat.stripCurrency(o, e), o = this.currencyFormat.stripSignLiterals(o);
|
|
127
|
-
const h =
|
|
132
|
+
const h = g(o);
|
|
128
133
|
if (h != null)
|
|
129
134
|
return this.currencyFormat.insertCurrency(h, e);
|
|
130
|
-
const [d, ...
|
|
135
|
+
const [d, ...p] = o.split(this.currencyFormat.decimalSymbol), r = M(this.currencyFormat.onlyDigits(d)), u = this.currencyFormat.onlyDigits(p.join("")).substring(0, this.currencyFormat.maximumFractionDigits), a = p.length > 0 && u.length === 0, l = r === "" && e && (this.currencyFormat.minusSign === void 0 ? t === i.slice(0, -2) + this.currencyFormat.negativeSuffix : t === i.slice(0, -1));
|
|
131
136
|
return a || l || n(r) ? t : r.match(/\d+/) ? {
|
|
132
137
|
numberValue: +`${e ? "-" : ""}${r}.${u}`,
|
|
133
138
|
fractionDigits: u
|
|
@@ -210,9 +215,9 @@ class H {
|
|
|
210
215
|
const e = this.numberMask.conformToMask(i, this.formattedValue);
|
|
211
216
|
let n;
|
|
212
217
|
if (typeof e == "object") {
|
|
213
|
-
const { numberValue:
|
|
218
|
+
const { numberValue: g, fractionDigits: o } = e;
|
|
214
219
|
let { maximumFractionDigits: h, minimumFractionDigits: d } = this.currencyFormat;
|
|
215
|
-
this.focus ? d = t ? o.replace(/0+$/, "").length : Math.min(h, o.length) : Number.isInteger(
|
|
220
|
+
this.focus ? d = t ? o.replace(/0+$/, "").length : Math.min(h, o.length) : Number.isInteger(g) && !this.options.autoDecimalDigits && (this.options.precision === void 0 || d === 0) && (d = h = 0), n = this.toInteger(Math.abs(g)) > Number.MAX_SAFE_INTEGER ? this.formattedValue : this.currencyFormat.format(g, {
|
|
216
221
|
useGrouping: this.options.useGrouping !== !1 && !(this.focus && this.options.hideGroupingSeparatorOnFocus),
|
|
217
222
|
minimumFractionDigits: d,
|
|
218
223
|
maximumFractionDigits: h
|
|
@@ -228,13 +233,13 @@ class H {
|
|
|
228
233
|
this.el.addEventListener("input", (i) => {
|
|
229
234
|
const { value: t, selectionStart: e } = this.el, n = i;
|
|
230
235
|
if (e && n.data && P.includes(n.data) && (this.decimalSymbolInsertedAt = e - 1), this.format(t), this.focus && e != null) {
|
|
231
|
-
const
|
|
232
|
-
const { prefix: o, suffix: h, decimalSymbol: d, maximumFractionDigits:
|
|
236
|
+
const g = () => {
|
|
237
|
+
const { prefix: o, suffix: h, decimalSymbol: d, maximumFractionDigits: p, groupingSymbol: r } = this.currencyFormat;
|
|
233
238
|
let u = t.length - e;
|
|
234
239
|
const a = this.formattedValue.length;
|
|
235
240
|
if (this.currencyFormat.minusSign === void 0 && (t.startsWith("(") || t.startsWith("-")) && !t.endsWith(")"))
|
|
236
241
|
return a - this.currencyFormat.negativeSuffix.length > 1 ? this.formattedValue.substring(e).length : 1;
|
|
237
|
-
if (this.formattedValue.
|
|
242
|
+
if (this.formattedValue.substring(e, 1) === r && E(this.formattedValue, r) === E(t, r) + 1)
|
|
238
243
|
return a - u - 1;
|
|
239
244
|
if (a < u)
|
|
240
245
|
return e;
|
|
@@ -242,11 +247,11 @@ class H {
|
|
|
242
247
|
const l = t.indexOf(d) + 1;
|
|
243
248
|
if (Math.abs(a - t.length) > 1 && e <= l)
|
|
244
249
|
return this.formattedValue.indexOf(d) + 1;
|
|
245
|
-
!this.options.autoDecimalDigits && e > l && this.currencyFormat.onlyDigits(t.
|
|
250
|
+
!this.options.autoDecimalDigits && e > l && this.currencyFormat.onlyDigits(t.substring(l)).length - 1 === p && (u -= 1);
|
|
246
251
|
}
|
|
247
252
|
return this.options.hideCurrencySymbolOnFocus || this.options.currencyDisplay === f.hidden ? a - u : Math.max(a - Math.max(u, h.length), o.length);
|
|
248
253
|
};
|
|
249
|
-
this.setCaretPosition(
|
|
254
|
+
this.setCaretPosition(g());
|
|
250
255
|
}
|
|
251
256
|
}), this.el.addEventListener("focus", () => {
|
|
252
257
|
this.focus = !0, this.numberValueOnFocus = this.numberValue, setTimeout(() => {
|
|
@@ -265,23 +270,23 @@ class H {
|
|
|
265
270
|
getCaretPositionOnFocus(i, t) {
|
|
266
271
|
if (this.numberValue == null)
|
|
267
272
|
return t;
|
|
268
|
-
const { prefix: e, negativePrefix: n, suffix:
|
|
273
|
+
const { prefix: e, negativePrefix: n, suffix: g, negativeSuffix: o, groupingSymbol: h, currency: d } = this.currencyFormat, p = this.numberValue < 0, r = p ? n : e, u = r.length;
|
|
269
274
|
if (this.options.hideCurrencySymbolOnFocus || this.options.currencyDisplay === f.hidden) {
|
|
270
|
-
if (
|
|
275
|
+
if (p) {
|
|
271
276
|
if (t <= 1)
|
|
272
277
|
return 1;
|
|
273
278
|
if (i.endsWith(")") && t > i.indexOf(")"))
|
|
274
279
|
return this.formattedValue.length - 1;
|
|
275
280
|
}
|
|
276
281
|
} else {
|
|
277
|
-
const l =
|
|
282
|
+
const l = p ? o.length : g.length;
|
|
278
283
|
if (t >= i.length - l)
|
|
279
284
|
return this.formattedValue.length - l;
|
|
280
285
|
if (t < u)
|
|
281
286
|
return u;
|
|
282
287
|
}
|
|
283
288
|
let a = t;
|
|
284
|
-
return this.options.hideCurrencySymbolOnFocus && this.options.currencyDisplay !== f.hidden && t >= u && d !== void 0 && r.includes(d) && (a -= u,
|
|
289
|
+
return this.options.hideCurrencySymbolOnFocus && this.options.currencyDisplay !== f.hidden && t >= u && d !== void 0 && r.includes(d) && (a -= u, p && (a += 1)), this.options.hideGroupingSeparatorOnFocus && h !== void 0 && (a -= E(i.substring(0, t), h)), a;
|
|
285
290
|
}
|
|
286
291
|
setCaretPosition(i, t = i) {
|
|
287
292
|
this.el.setSelectionRange(i, t);
|
|
@@ -289,9 +294,9 @@ class H {
|
|
|
289
294
|
}
|
|
290
295
|
const J = (s) => s != null && s.matches("input") ? s : s == null ? void 0 : s.querySelector("input");
|
|
291
296
|
function K(s, i) {
|
|
292
|
-
var t, e, n,
|
|
297
|
+
var t, e, n, g;
|
|
293
298
|
let o;
|
|
294
|
-
const h = O(null), d = O(null),
|
|
299
|
+
const h = O(null), d = O(null), p = O(null), r = R(), u = (r == null ? void 0 : r.emit) || ((e = (t = r == null ? void 0 : r.proxy) === null || t === void 0 ? void 0 : t.$emit) === null || e === void 0 ? void 0 : e.bind(r == null ? void 0 : r.proxy)), a = (r == null ? void 0 : r.props) || ((n = r == null ? void 0 : r.proxy) === null || n === void 0 ? void 0 : n.$props), l = $.startsWith("3"), m = l && ((g = r == null ? void 0 : r.attrs.modelModifiers) === null || g === void 0 ? void 0 : g.lazy), v = I(() => a == null ? void 0 : a[l ? "modelValue" : "value"]), b = l ? "update:modelValue" : "input", S = m ? "update:modelValue" : "change";
|
|
295
300
|
return x(h, (c) => {
|
|
296
301
|
var V;
|
|
297
302
|
if (c) {
|
|
@@ -300,7 +305,7 @@ function K(s, i) {
|
|
|
300
305
|
el: _,
|
|
301
306
|
options: s,
|
|
302
307
|
onInput: (F) => {
|
|
303
|
-
!m && i !== !1 && v.value !== F.number && (u == null || u(b, F.number)),
|
|
308
|
+
!m && i !== !1 && v.value !== F.number && (u == null || u(b, F.number)), p.value = F.number, d.value = F.formatted;
|
|
304
309
|
},
|
|
305
310
|
onChange: (F) => {
|
|
306
311
|
i !== !1 && (u == null || u(S, F.number));
|
|
@@ -310,13 +315,13 @@ function K(s, i) {
|
|
|
310
315
|
o = null;
|
|
311
316
|
}), {
|
|
312
317
|
inputRef: h,
|
|
313
|
-
numberValue:
|
|
318
|
+
numberValue: p,
|
|
314
319
|
formattedValue: d,
|
|
315
320
|
setValue: (c) => o == null ? void 0 : o.setValue(c),
|
|
316
321
|
setOptions: (c) => o == null ? void 0 : o.setOptions(c)
|
|
317
322
|
};
|
|
318
323
|
}
|
|
319
|
-
const
|
|
324
|
+
const gi = /* @__PURE__ */ A({
|
|
320
325
|
__name: "CurrencyInput",
|
|
321
326
|
props: {
|
|
322
327
|
inputOptions: { default: void 0 },
|
|
@@ -342,10 +347,10 @@ const pi = /* @__PURE__ */ A({
|
|
|
342
347
|
autoDecimalDigits: !0,
|
|
343
348
|
useGrouping: !0,
|
|
344
349
|
accountingSign: !1
|
|
345
|
-
},
|
|
350
|
+
}, g = L(), o = I(() => ({
|
|
346
351
|
...n,
|
|
347
352
|
...z(e.inputOptions) ? {} : e.inputOptions
|
|
348
|
-
})), { inputRef: h, setOptions: d, setValue:
|
|
353
|
+
})), { inputRef: h, setOptions: d, setValue: p, numberValue: r } = K(o.value, !1);
|
|
349
354
|
i({ inputEl: h }), x(
|
|
350
355
|
() => r.value,
|
|
351
356
|
(a) => {
|
|
@@ -357,7 +362,7 @@ const pi = /* @__PURE__ */ A({
|
|
|
357
362
|
() => e.modelValue,
|
|
358
363
|
(a) => {
|
|
359
364
|
let l;
|
|
360
|
-
typeof a == "string" ? l = parseFloat(a || "0") : l = a,
|
|
365
|
+
typeof a == "string" ? l = parseFloat(a || "0") : l = a, p(l);
|
|
361
366
|
}
|
|
362
367
|
), x(
|
|
363
368
|
() => e.inputOptions,
|
|
@@ -367,7 +372,7 @@ const pi = /* @__PURE__ */ A({
|
|
|
367
372
|
);
|
|
368
373
|
const u = I(() => {
|
|
369
374
|
const { inputOptions: a, ...l } = e;
|
|
370
|
-
return { ...l, ...
|
|
375
|
+
return { ...l, ...g };
|
|
371
376
|
});
|
|
372
377
|
return (a, l) => (T(), G(j, w(u.value, {
|
|
373
378
|
ref_key: "inputEl",
|
|
@@ -385,6 +390,6 @@ const pi = /* @__PURE__ */ A({
|
|
|
385
390
|
}
|
|
386
391
|
});
|
|
387
392
|
export {
|
|
388
|
-
|
|
393
|
+
gi as default
|
|
389
394
|
};
|
|
390
395
|
//# sourceMappingURL=CurrencyInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurrencyInput.js","sources":["../node_modules/vue-currency-input/dist/index.mjs","../src/components/CurrencyInput/CurrencyInput.vue"],"sourcesContent":["/**\n * Vue Currency Input 3.0.5\n * (c) 2018-2023 Matthias Stiller\n * @license MIT\n */\nimport { ref, getCurrentInstance, version, computed, watch } from 'vue';\n\nvar CurrencyDisplay;\n(function (CurrencyDisplay) {\n CurrencyDisplay[\"symbol\"] = \"symbol\";\n CurrencyDisplay[\"narrowSymbol\"] = \"narrowSymbol\";\n CurrencyDisplay[\"code\"] = \"code\";\n CurrencyDisplay[\"name\"] = \"name\";\n CurrencyDisplay[\"hidden\"] = \"hidden\";\n})(CurrencyDisplay || (CurrencyDisplay = {}));\nvar ValueScaling;\n(function (ValueScaling) {\n ValueScaling[\"precision\"] = \"precision\";\n ValueScaling[\"thousands\"] = \"thousands\";\n ValueScaling[\"millions\"] = \"millions\";\n ValueScaling[\"billions\"] = \"billions\";\n})(ValueScaling || (ValueScaling = {}));\n\nconst escapeRegExp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\nconst removeLeadingZeros = (str) => {\n return str.replace(/^0+(0$|[^0])/, '$1');\n};\nconst count = (str, search) => {\n return (str.match(new RegExp(escapeRegExp(search), 'g')) || []).length;\n};\nconst substringBefore = (str, search) => {\n return str.substring(0, str.indexOf(search));\n};\n\nconst DECIMAL_SEPARATORS = [',', '.', '٫'];\nconst INTEGER_PATTERN = '(0|[1-9]\\\\d*)';\nclass CurrencyFormat {\n constructor(options) {\n var _a, _b, _c, _d, _e, _f;\n const { currency, currencyDisplay, locale, precision, accountingSign, useGrouping } = options;\n this.locale = locale;\n this.options = {\n currency,\n useGrouping,\n style: 'currency',\n currencySign: accountingSign ? 'accounting' : undefined,\n currencyDisplay: currencyDisplay !== CurrencyDisplay.hidden ? currencyDisplay : undefined\n };\n const numberFormat = new Intl.NumberFormat(locale, this.options);\n const formatParts = numberFormat.formatToParts(123456);\n this.currency = (_a = formatParts.find(({ type }) => type === 'currency')) === null || _a === void 0 ? void 0 : _a.value;\n this.digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) => i.toLocaleString(locale));\n this.decimalSymbol = (_b = formatParts.find(({ type }) => type === 'decimal')) === null || _b === void 0 ? void 0 : _b.value;\n this.groupingSymbol = (_c = formatParts.find(({ type }) => type === 'group')) === null || _c === void 0 ? void 0 : _c.value;\n this.minusSign = (_d = numberFormat.formatToParts(-1).find(({ type }) => type === 'minusSign')) === null || _d === void 0 ? void 0 : _d.value;\n if (this.decimalSymbol === undefined) {\n this.minimumFractionDigits = this.maximumFractionDigits = 0;\n }\n else if (typeof precision === 'number') {\n this.minimumFractionDigits = this.maximumFractionDigits = precision;\n }\n else {\n this.minimumFractionDigits = (_e = precision === null || precision === void 0 ? void 0 : precision.min) !== null && _e !== void 0 ? _e : numberFormat.resolvedOptions().minimumFractionDigits;\n this.maximumFractionDigits = (_f = precision === null || precision === void 0 ? void 0 : precision.max) !== null && _f !== void 0 ? _f : numberFormat.resolvedOptions().maximumFractionDigits;\n }\n const getPrefix = (str) => {\n return substringBefore(str, this.digits[1]);\n };\n const getSuffix = (str) => {\n return str.substring(str.lastIndexOf(this.decimalSymbol ? this.digits[0] : this.digits[1]) + 1);\n };\n this.prefix = getPrefix(numberFormat.format(1));\n this.suffix = getSuffix(numberFormat.format(1));\n this.negativePrefix = getPrefix(numberFormat.format(-1));\n this.negativeSuffix = getSuffix(numberFormat.format(-1));\n }\n parse(str) {\n if (str) {\n const negative = this.isNegative(str);\n str = this.normalizeDigits(str);\n str = this.stripCurrency(str, negative);\n str = this.stripSignLiterals(str);\n const fraction = this.decimalSymbol ? `(?:${escapeRegExp(this.decimalSymbol)}(\\\\d*))?` : '';\n const match = this.stripGroupingSeparator(str).match(new RegExp(`^${INTEGER_PATTERN}${fraction}$`));\n if (match && this.isValidIntegerFormat(this.decimalSymbol ? str.split(this.decimalSymbol)[0] : str, Number(match[1]))) {\n return Number(`${negative ? '-' : ''}${this.onlyDigits(match[1])}.${this.onlyDigits(match[2] || '')}`);\n }\n }\n return null;\n }\n isValidIntegerFormat(formattedNumber, integerNumber) {\n const options = { ...this.options, minimumFractionDigits: 0 };\n return [\n this.stripCurrency(this.normalizeDigits(integerNumber.toLocaleString(this.locale, { ...options, useGrouping: true })), false),\n this.stripCurrency(this.normalizeDigits(integerNumber.toLocaleString(this.locale, { ...options, useGrouping: false })), false)\n ].includes(formattedNumber);\n }\n format(value, options = {\n minimumFractionDigits: this.minimumFractionDigits,\n maximumFractionDigits: this.maximumFractionDigits\n }) {\n return value != null ? value.toLocaleString(this.locale, { ...this.options, ...options }) : '';\n }\n toFraction(str) {\n return `${this.digits[0]}${this.decimalSymbol}${this.onlyLocaleDigits(str.substr(1)).substr(0, this.maximumFractionDigits)}`;\n }\n isFractionIncomplete(str) {\n return !!this.normalizeDigits(this.stripGroupingSeparator(str)).match(new RegExp(`^${INTEGER_PATTERN}${escapeRegExp(this.decimalSymbol)}$`));\n }\n isNegative(str) {\n return (str.startsWith(this.negativePrefix) ||\n (this.minusSign === undefined && (str.startsWith('(') || str.startsWith('-'))) ||\n (this.minusSign !== undefined && str.replace('-', this.minusSign).startsWith(this.minusSign)));\n }\n insertCurrency(str, negative) {\n return `${negative ? this.negativePrefix : this.prefix}${str}${negative ? this.negativeSuffix : this.suffix}`;\n }\n stripGroupingSeparator(str) {\n return this.groupingSymbol !== undefined ? str.replace(new RegExp(escapeRegExp(this.groupingSymbol), 'g'), '') : str;\n }\n stripSignLiterals(str) {\n if (this.minusSign !== undefined) {\n return str.replace('-', this.minusSign).replace(this.minusSign, '');\n }\n else {\n return str.replace(/[-()]/g, '');\n }\n }\n stripCurrency(str, negative) {\n return str.replace(negative ? this.negativePrefix : this.prefix, '').replace(negative ? this.negativeSuffix : this.suffix, '');\n }\n normalizeDecimalSeparator(str, from) {\n DECIMAL_SEPARATORS.forEach((s) => {\n str = str.substr(0, from) + str.substr(from).replace(s, this.decimalSymbol);\n });\n return str;\n }\n normalizeDigits(str) {\n if (this.digits[0] !== '0') {\n this.digits.forEach((digit, index) => {\n str = str.replace(new RegExp(digit, 'g'), String(index));\n });\n }\n return str;\n }\n onlyDigits(str) {\n return this.normalizeDigits(str).replace(/\\D+/g, '');\n }\n onlyLocaleDigits(str) {\n return str.replace(new RegExp(`[^${this.digits.join('')}]*`, 'g'), '');\n }\n}\n\nclass AbstractInputMask {\n constructor(currencyFormat) {\n this.currencyFormat = currencyFormat;\n }\n}\nclass DefaultInputMask extends AbstractInputMask {\n conformToMask(str, previousConformedValue = '') {\n const negative = this.currencyFormat.isNegative(str);\n const isEmptyNegativeValue = (str) => str === '' &&\n negative &&\n !(this.currencyFormat.minusSign === undefined\n ? previousConformedValue === this.currencyFormat.negativePrefix + this.currencyFormat.negativeSuffix\n : previousConformedValue === this.currencyFormat.negativePrefix);\n const checkIncompleteValue = (str) => {\n if (isEmptyNegativeValue(str)) {\n return '';\n }\n else if (this.currencyFormat.maximumFractionDigits > 0) {\n if (this.currencyFormat.isFractionIncomplete(str)) {\n return str;\n }\n else if (str.startsWith(this.currencyFormat.decimalSymbol)) {\n return this.currencyFormat.toFraction(str);\n }\n }\n return null;\n };\n let value = str;\n value = this.currencyFormat.stripCurrency(value, negative);\n value = this.currencyFormat.stripSignLiterals(value);\n const incompleteValue = checkIncompleteValue(value);\n if (incompleteValue != null) {\n return this.currencyFormat.insertCurrency(incompleteValue, negative);\n }\n const [integer, ...fraction] = value.split(this.currencyFormat.decimalSymbol);\n const integerDigits = removeLeadingZeros(this.currencyFormat.onlyDigits(integer));\n const fractionDigits = this.currencyFormat.onlyDigits(fraction.join('')).substr(0, this.currencyFormat.maximumFractionDigits);\n const invalidFraction = fraction.length > 0 && fractionDigits.length === 0;\n const invalidNegativeValue = integerDigits === '' &&\n negative &&\n (this.currencyFormat.minusSign === undefined\n ? previousConformedValue === str.slice(0, -2) + this.currencyFormat.negativeSuffix\n : previousConformedValue === str.slice(0, -1));\n if (invalidFraction || invalidNegativeValue || isEmptyNegativeValue(integerDigits)) {\n return previousConformedValue;\n }\n else if (integerDigits.match(/\\d+/)) {\n return {\n numberValue: Number(`${negative ? '-' : ''}${integerDigits}.${fractionDigits}`),\n fractionDigits\n };\n }\n else {\n return '';\n }\n }\n}\nclass AutoDecimalDigitsInputMask extends AbstractInputMask {\n conformToMask(str, previousConformedValue = '') {\n if (str === '' ||\n (this.currencyFormat.parse(previousConformedValue) === 0 &&\n this.currencyFormat.stripCurrency(previousConformedValue, true).slice(0, -1) === this.currencyFormat.stripCurrency(str, true))) {\n return '';\n }\n const negative = this.currencyFormat.isNegative(str);\n const numberValue = this.currencyFormat.stripSignLiterals(str) === ''\n ? -0\n : Number(`${negative ? '-' : ''}${removeLeadingZeros(this.currencyFormat.onlyDigits(str))}`) / Math.pow(10, this.currencyFormat.maximumFractionDigits);\n return {\n numberValue,\n fractionDigits: numberValue.toFixed(this.currencyFormat.maximumFractionDigits).slice(-this.currencyFormat.maximumFractionDigits)\n };\n }\n}\n\nconst DEFAULT_OPTIONS = {\n locale: undefined,\n currency: undefined,\n currencyDisplay: undefined,\n hideGroupingSeparatorOnFocus: true,\n hideCurrencySymbolOnFocus: true,\n hideNegligibleDecimalDigitsOnFocus: true,\n precision: undefined,\n autoDecimalDigits: false,\n valueRange: undefined,\n useGrouping: undefined,\n valueScaling: undefined\n};\nclass CurrencyInput {\n constructor(args) {\n this.el = args.el;\n this.onInput = args.onInput;\n this.onChange = args.onChange;\n this.addEventListener();\n this.init(args.options);\n }\n setOptions(options) {\n this.init(options);\n this.format(this.currencyFormat.format(this.validateValueRange(this.numberValue)));\n this.onChange(this.getValue());\n }\n getValue() {\n const numberValue = this.valueScaling && this.numberValue != null ? this.toInteger(this.numberValue, this.valueScaling) : this.numberValue;\n return { number: numberValue, formatted: this.formattedValue };\n }\n setValue(value) {\n const newValue = this.valueScaling !== undefined && value != null ? this.toFloat(value, this.valueScaling) : value;\n if (newValue !== this.numberValue) {\n this.format(this.currencyFormat.format(this.validateValueRange(newValue)));\n this.onChange(this.getValue());\n }\n }\n init(options) {\n this.options = {\n ...DEFAULT_OPTIONS,\n ...options\n };\n if (this.options.autoDecimalDigits) {\n this.options.hideNegligibleDecimalDigitsOnFocus = false;\n }\n if (!this.el.getAttribute('inputmode')) {\n this.el.setAttribute('inputmode', this.options.autoDecimalDigits ? 'numeric' : 'decimal');\n }\n this.currencyFormat = new CurrencyFormat(this.options);\n this.numberMask = this.options.autoDecimalDigits ? new AutoDecimalDigitsInputMask(this.currencyFormat) : new DefaultInputMask(this.currencyFormat);\n const valueScalingOptions = {\n [ValueScaling.precision]: this.currencyFormat.maximumFractionDigits,\n [ValueScaling.thousands]: 3,\n [ValueScaling.millions]: 6,\n [ValueScaling.billions]: 9\n };\n this.valueScaling = this.options.valueScaling ? valueScalingOptions[this.options.valueScaling] : undefined;\n this.valueScalingFractionDigits =\n this.valueScaling !== undefined && this.options.valueScaling !== ValueScaling.precision\n ? this.valueScaling + this.currencyFormat.maximumFractionDigits\n : this.currencyFormat.maximumFractionDigits;\n this.minValue = this.getMinValue();\n this.maxValue = this.getMaxValue();\n }\n getMinValue() {\n var _a, _b;\n let min = this.toFloat(-Number.MAX_SAFE_INTEGER);\n if (((_a = this.options.valueRange) === null || _a === void 0 ? void 0 : _a.min) !== undefined) {\n min = Math.max((_b = this.options.valueRange) === null || _b === void 0 ? void 0 : _b.min, this.toFloat(-Number.MAX_SAFE_INTEGER));\n }\n return min;\n }\n getMaxValue() {\n var _a, _b;\n let max = this.toFloat(Number.MAX_SAFE_INTEGER);\n if (((_a = this.options.valueRange) === null || _a === void 0 ? void 0 : _a.max) !== undefined) {\n max = Math.min((_b = this.options.valueRange) === null || _b === void 0 ? void 0 : _b.max, this.toFloat(Number.MAX_SAFE_INTEGER));\n }\n return max;\n }\n toFloat(value, maxFractionDigits) {\n return value / Math.pow(10, maxFractionDigits !== null && maxFractionDigits !== void 0 ? maxFractionDigits : this.valueScalingFractionDigits);\n }\n toInteger(value, maxFractionDigits) {\n return Number(value\n .toFixed(maxFractionDigits !== null && maxFractionDigits !== void 0 ? maxFractionDigits : this.valueScalingFractionDigits)\n .split('.')\n .join(''));\n }\n validateValueRange(value) {\n return value != null ? Math.min(Math.max(value, this.minValue), this.maxValue) : value;\n }\n format(value, hideNegligibleDecimalDigits = false) {\n if (value != null) {\n if (this.decimalSymbolInsertedAt !== undefined) {\n value = this.currencyFormat.normalizeDecimalSeparator(value, this.decimalSymbolInsertedAt);\n this.decimalSymbolInsertedAt = undefined;\n }\n const conformedValue = this.numberMask.conformToMask(value, this.formattedValue);\n let formattedValue;\n if (typeof conformedValue === 'object') {\n const { numberValue, fractionDigits } = conformedValue;\n let { maximumFractionDigits, minimumFractionDigits } = this.currencyFormat;\n if (this.focus) {\n minimumFractionDigits = hideNegligibleDecimalDigits\n ? fractionDigits.replace(/0+$/, '').length\n : Math.min(maximumFractionDigits, fractionDigits.length);\n }\n else if (Number.isInteger(numberValue) && !this.options.autoDecimalDigits && (this.options.precision === undefined || minimumFractionDigits === 0)) {\n minimumFractionDigits = maximumFractionDigits = 0;\n }\n formattedValue =\n this.toInteger(Math.abs(numberValue)) > Number.MAX_SAFE_INTEGER\n ? this.formattedValue\n : this.currencyFormat.format(numberValue, {\n useGrouping: this.options.useGrouping !== false && !(this.focus && this.options.hideGroupingSeparatorOnFocus),\n minimumFractionDigits,\n maximumFractionDigits\n });\n }\n else {\n formattedValue = conformedValue;\n }\n if (this.maxValue <= 0 && !this.currencyFormat.isNegative(formattedValue) && this.currencyFormat.parse(formattedValue) !== 0) {\n formattedValue = formattedValue.replace(this.currencyFormat.prefix, this.currencyFormat.negativePrefix);\n }\n if (this.minValue >= 0) {\n formattedValue = formattedValue.replace(this.currencyFormat.negativePrefix, this.currencyFormat.prefix);\n }\n if (this.options.currencyDisplay === CurrencyDisplay.hidden || (this.focus && this.options.hideCurrencySymbolOnFocus)) {\n formattedValue = formattedValue\n .replace(this.currencyFormat.negativePrefix, this.currencyFormat.minusSign !== undefined ? this.currencyFormat.minusSign : '(')\n .replace(this.currencyFormat.negativeSuffix, this.currencyFormat.minusSign !== undefined ? '' : ')')\n .replace(this.currencyFormat.prefix, '')\n .replace(this.currencyFormat.suffix, '');\n }\n this.el.value = formattedValue;\n this.numberValue = this.currencyFormat.parse(formattedValue);\n }\n else {\n this.el.value = '';\n this.numberValue = null;\n }\n this.formattedValue = this.el.value;\n this.onInput(this.getValue());\n }\n addEventListener() {\n this.el.addEventListener('input', (e) => {\n const { value, selectionStart } = this.el;\n const inputEvent = e;\n if (selectionStart && inputEvent.data && DECIMAL_SEPARATORS.includes(inputEvent.data)) {\n this.decimalSymbolInsertedAt = selectionStart - 1;\n }\n this.format(value);\n if (this.focus && selectionStart != null) {\n const getCaretPositionAfterFormat = () => {\n const { prefix, suffix, decimalSymbol, maximumFractionDigits, groupingSymbol } = this.currencyFormat;\n let caretPositionFromLeft = value.length - selectionStart;\n const newValueLength = this.formattedValue.length;\n if (this.currencyFormat.minusSign === undefined && (value.startsWith('(') || value.startsWith('-')) && !value.endsWith(')')) {\n return newValueLength - this.currencyFormat.negativeSuffix.length > 1 ? this.formattedValue.substring(selectionStart).length : 1;\n }\n if (this.formattedValue.substr(selectionStart, 1) === groupingSymbol &&\n count(this.formattedValue, groupingSymbol) === count(value, groupingSymbol) + 1) {\n return newValueLength - caretPositionFromLeft - 1;\n }\n if (newValueLength < caretPositionFromLeft) {\n return selectionStart;\n }\n if (decimalSymbol !== undefined && value.indexOf(decimalSymbol) !== -1) {\n const decimalSymbolPosition = value.indexOf(decimalSymbol) + 1;\n if (Math.abs(newValueLength - value.length) > 1 && selectionStart <= decimalSymbolPosition) {\n return this.formattedValue.indexOf(decimalSymbol) + 1;\n }\n else {\n if (!this.options.autoDecimalDigits && selectionStart > decimalSymbolPosition) {\n if (this.currencyFormat.onlyDigits(value.substr(decimalSymbolPosition)).length - 1 === maximumFractionDigits) {\n caretPositionFromLeft -= 1;\n }\n }\n }\n }\n return this.options.hideCurrencySymbolOnFocus || this.options.currencyDisplay === CurrencyDisplay.hidden\n ? newValueLength - caretPositionFromLeft\n : Math.max(newValueLength - Math.max(caretPositionFromLeft, suffix.length), prefix.length);\n };\n this.setCaretPosition(getCaretPositionAfterFormat());\n }\n });\n this.el.addEventListener('focus', () => {\n this.focus = true;\n this.numberValueOnFocus = this.numberValue;\n setTimeout(() => {\n const { value, selectionStart, selectionEnd } = this.el;\n this.format(value, this.options.hideNegligibleDecimalDigitsOnFocus);\n if (selectionStart != null && selectionEnd != null && Math.abs(selectionStart - selectionEnd) > 0) {\n this.setCaretPosition(0, this.el.value.length);\n }\n else if (selectionStart != null) {\n const caretPositionOnFocus = this.getCaretPositionOnFocus(value, selectionStart);\n this.setCaretPosition(caretPositionOnFocus);\n }\n });\n });\n this.el.addEventListener('blur', () => {\n this.focus = false;\n this.format(this.currencyFormat.format(this.validateValueRange(this.numberValue)));\n if (this.numberValueOnFocus !== this.numberValue) {\n this.onChange(this.getValue());\n }\n });\n }\n getCaretPositionOnFocus(value, selectionStart) {\n if (this.numberValue == null) {\n return selectionStart;\n }\n const { prefix, negativePrefix, suffix, negativeSuffix, groupingSymbol, currency } = this.currencyFormat;\n const isNegative = this.numberValue < 0;\n const currentPrefix = isNegative ? negativePrefix : prefix;\n const prefixLength = currentPrefix.length;\n if (this.options.hideCurrencySymbolOnFocus || this.options.currencyDisplay === CurrencyDisplay.hidden) {\n if (isNegative) {\n if (selectionStart <= 1) {\n return 1;\n }\n else if (value.endsWith(')') && selectionStart > value.indexOf(')')) {\n return this.formattedValue.length - 1;\n }\n }\n }\n else {\n const suffixLength = isNegative ? negativeSuffix.length : suffix.length;\n if (selectionStart >= value.length - suffixLength) {\n return this.formattedValue.length - suffixLength;\n }\n else if (selectionStart < prefixLength) {\n return prefixLength;\n }\n }\n let result = selectionStart;\n if (this.options.hideCurrencySymbolOnFocus &&\n this.options.currencyDisplay !== CurrencyDisplay.hidden &&\n selectionStart >= prefixLength &&\n currency !== undefined &&\n currentPrefix.includes(currency)) {\n result -= prefixLength;\n if (isNegative) {\n result += 1;\n }\n }\n if (this.options.hideGroupingSeparatorOnFocus && groupingSymbol !== undefined) {\n result -= count(value.substring(0, selectionStart), groupingSymbol);\n }\n return result;\n }\n setCaretPosition(start, end = start) {\n this.el.setSelectionRange(start, end);\n }\n}\n\nconst findInput = (el) => ((el === null || el === void 0 ? void 0 : el.matches('input')) ? el : el === null || el === void 0 ? void 0 : el.querySelector('input'));\nfunction useCurrencyInput(options, autoEmit) {\n var _a, _b, _c, _d;\n let currencyInput;\n const inputRef = ref(null);\n const formattedValue = ref(null);\n const numberValue = ref(null);\n const vm = getCurrentInstance();\n const emit = (vm === null || vm === void 0 ? void 0 : vm.emit) || ((_b = (_a = vm === null || vm === void 0 ? void 0 : vm.proxy) === null || _a === void 0 ? void 0 : _a.$emit) === null || _b === void 0 ? void 0 : _b.bind(vm === null || vm === void 0 ? void 0 : vm.proxy));\n const props = ((vm === null || vm === void 0 ? void 0 : vm.props) || ((_c = vm === null || vm === void 0 ? void 0 : vm.proxy) === null || _c === void 0 ? void 0 : _c.$props));\n const isVue3 = version.startsWith('3');\n const lazyModel = isVue3 && ((_d = vm === null || vm === void 0 ? void 0 : vm.attrs.modelModifiers) === null || _d === void 0 ? void 0 : _d.lazy);\n const modelValue = computed(() => props === null || props === void 0 ? void 0 : props[isVue3 ? 'modelValue' : 'value']);\n const inputEvent = isVue3 ? 'update:modelValue' : 'input';\n const changeEvent = lazyModel ? 'update:modelValue' : 'change';\n watch(inputRef, (value) => {\n var _a;\n if (value) {\n const el = findInput((_a = value === null || value === void 0 ? void 0 : value.$el) !== null && _a !== void 0 ? _a : value);\n if (el) {\n currencyInput = new CurrencyInput({\n el,\n options,\n onInput: (value) => {\n if (!lazyModel && autoEmit !== false && modelValue.value !== value.number) {\n emit === null || emit === void 0 ? void 0 : emit(inputEvent, value.number);\n }\n numberValue.value = value.number;\n formattedValue.value = value.formatted;\n },\n onChange: (value) => {\n if (autoEmit !== false) {\n emit === null || emit === void 0 ? void 0 : emit(changeEvent, value.number);\n }\n }\n });\n currencyInput.setValue(modelValue.value);\n }\n else {\n console.error('No input element found. Please make sure that the \"inputRef\" template ref is properly assigned.');\n }\n }\n else {\n currencyInput = null;\n }\n });\n return {\n inputRef,\n numberValue,\n formattedValue,\n setValue: (value) => currencyInput === null || currencyInput === void 0 ? void 0 : currencyInput.setValue(value),\n setOptions: (options) => currencyInput === null || currencyInput === void 0 ? void 0 : currencyInput.setOptions(options)\n };\n}\n\nexport { CurrencyDisplay, ValueScaling, useCurrencyInput };\n","<script lang=\"ts\" setup>\n import isEmpty from 'lodash-es/isEmpty';\n import { computed, useAttrs, watch } from 'vue';\n import { CurrencyDisplay, CurrencyInputOptions, useCurrencyInput } from 'vue-currency-input';\n\n import Icon from '../Icon/Icon.vue';\n import Input, { InputProps } from '../Input/Input.vue';\n\n const CURRENCY_INPUT_BASE_OPTIONS: CurrencyInputOptions = {\n currency: 'USD',\n currencyDisplay: CurrencyDisplay.hidden,\n precision: 2,\n hideCurrencySymbolOnFocus: true,\n hideGroupingSeparatorOnFocus: true,\n hideNegligibleDecimalDigitsOnFocus: false,\n autoDecimalDigits: true,\n useGrouping: true,\n accountingSign: false,\n };\n\n export interface CurrencyInputProps extends Omit<InputProps, 'modelValue' | 'type'> {\n inputOptions?: Partial<CurrencyInputOptions>;\n modelValue: string | null;\n }\n\n const props = withDefaults(defineProps<CurrencyInputProps>(), {\n modelValue: '',\n errorText: undefined,\n hintText: undefined,\n label: undefined,\n id: undefined,\n inputOptions: undefined,\n });\n\n const emit =\n defineEmits<{\n /**\n * Emitted when the input value changes.\n */\n (e: 'update:model-value', v: CurrencyInputProps['modelValue']): void;\n }>();\n\n const attrs = useAttrs();\n\n const currencyInputOptions = computed(() => {\n return {\n ...CURRENCY_INPUT_BASE_OPTIONS,\n ...(!isEmpty(props.inputOptions) ? props.inputOptions : {}),\n };\n });\n\n const { inputRef: inputEl, setOptions, setValue, numberValue } = useCurrencyInput(currencyInputOptions.value, false);\n\n defineExpose({ inputEl });\n\n watch(\n () => numberValue.value,\n (newValue: number | null | string) => {\n let stringValue: string | null;\n\n if (Object.is(newValue, -0)) {\n if (typeof currencyInputOptions.value.precision === 'number') {\n stringValue = '-0.' + '0'.repeat(currencyInputOptions.value.precision);\n } else {\n stringValue = '-0.' + '0'.repeat(currencyInputOptions.value.precision?.min || 0);\n }\n } else {\n stringValue = typeof newValue === 'number' ? newValue.toFixed(2) : newValue;\n }\n\n emit('update:model-value', stringValue);\n },\n );\n\n watch(\n () => props.modelValue,\n (newValue: number | null | string) => {\n let numberValue: number | null;\n\n if (typeof newValue === 'string') {\n numberValue = parseFloat(newValue || '0');\n } else {\n numberValue = newValue;\n }\n\n setValue(numberValue);\n },\n );\n\n watch(\n () => props.inputOptions,\n () => {\n setOptions(currencyInputOptions.value);\n },\n );\n\n const inputAttrs = computed(() => {\n const { inputOptions: _, ...propsWithoutCurrencyInputOptions } = props;\n\n return { ...propsWithoutCurrencyInputOptions, ...attrs } as typeof attrs & InputProps;\n });\n</script>\n\n<template>\n <Input\n v-bind=\"inputAttrs\"\n ref=\"inputEl\"\n class=\"stash-currency-input\"\n type=\"text\"\n data-test=\"stash-currency-input\"\n inputmode=\"decimal\"\n >\n <template #prepend>\n <Icon name=\"sign-dollar\" />\n </template>\n </Input>\n</template>\n"],"names":["CurrencyDisplay","ValueScaling","escapeRegExp","str","removeLeadingZeros","count","search","substringBefore","DECIMAL_SEPARATORS","INTEGER_PATTERN","CurrencyFormat","options","_a","_b","_c","_d","_e","_f","currency","currencyDisplay","locale","precision","accountingSign","useGrouping","numberFormat","formatParts","type","i","getPrefix","getSuffix","negative","fraction","match","formattedNumber","integerNumber","value","from","s","digit","index","AbstractInputMask","currencyFormat","DefaultInputMask","previousConformedValue","isEmptyNegativeValue","checkIncompleteValue","incompleteValue","integer","integerDigits","fractionDigits","invalidFraction","invalidNegativeValue","AutoDecimalDigitsInputMask","numberValue","DEFAULT_OPTIONS","CurrencyInput","args","newValue","valueScalingOptions","min","max","maxFractionDigits","hideNegligibleDecimalDigits","conformedValue","formattedValue","maximumFractionDigits","minimumFractionDigits","e","selectionStart","inputEvent","getCaretPositionAfterFormat","prefix","suffix","decimalSymbol","groupingSymbol","caretPositionFromLeft","newValueLength","decimalSymbolPosition","selectionEnd","caretPositionOnFocus","negativePrefix","negativeSuffix","isNegative","currentPrefix","prefixLength","suffixLength","result","start","end","findInput","el","useCurrencyInput","autoEmit","currencyInput","inputRef","ref","vm","getCurrentInstance","emit","props","isVue3","version","lazyModel","modelValue","computed","changeEvent","watch","CURRENCY_INPUT_BASE_OPTIONS","attrs","useAttrs","currencyInputOptions","isEmpty","inputEl","setOptions","setValue","__expose","stringValue","inputAttrs","_","propsWithoutCurrencyInputOptions"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"CurrencyInput.js","sources":["../node_modules/vue-currency-input/dist/index.mjs","../src/components/CurrencyInput/CurrencyInput.vue"],"sourcesContent":["/**\n * Vue Currency Input 3.1.0\n * (c) 2018-2024 Matthias Stiller\n * @license MIT\n */\nimport { ref, getCurrentInstance, version, computed, watch } from 'vue';\n\nvar CurrencyDisplay;\n(function (CurrencyDisplay) {\n CurrencyDisplay[\"symbol\"] = \"symbol\";\n CurrencyDisplay[\"narrowSymbol\"] = \"narrowSymbol\";\n CurrencyDisplay[\"code\"] = \"code\";\n CurrencyDisplay[\"name\"] = \"name\";\n CurrencyDisplay[\"hidden\"] = \"hidden\";\n})(CurrencyDisplay || (CurrencyDisplay = {}));\nvar ValueScaling;\n(function (ValueScaling) {\n ValueScaling[\"precision\"] = \"precision\";\n ValueScaling[\"thousands\"] = \"thousands\";\n ValueScaling[\"millions\"] = \"millions\";\n ValueScaling[\"billions\"] = \"billions\";\n})(ValueScaling || (ValueScaling = {}));\n\nconst escapeRegExp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\nconst removeLeadingZeros = (str) => {\n return str.replace(/^0+(0$|[^0])/, '$1');\n};\nconst count = (str, search) => {\n return (str.match(new RegExp(escapeRegExp(search), 'g')) || []).length;\n};\nconst substringBefore = (str, search) => {\n return str.substring(0, str.indexOf(search));\n};\n\nconst DECIMAL_SEPARATORS = [\n ',',\n '.',\n '٫',\n '。'\n];\nconst INTEGER_PATTERN = '(0|[1-9]\\\\d*)';\nclass CurrencyFormat {\n constructor(options) {\n var _a, _b, _c, _d, _e, _f;\n const { currency, currencyDisplay, locale, precision, accountingSign, useGrouping } = options;\n this.locale = locale;\n this.options = {\n currency,\n useGrouping,\n style: 'currency',\n currencySign: accountingSign ? 'accounting' : undefined,\n currencyDisplay: currencyDisplay !== CurrencyDisplay.hidden ? currencyDisplay : undefined\n };\n const numberFormat = new Intl.NumberFormat(locale, this.options);\n const formatParts = numberFormat.formatToParts(123456);\n this.currency = (_a = formatParts.find(({ type }) => type === 'currency')) === null || _a === void 0 ? void 0 : _a.value;\n this.digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) => i.toLocaleString(locale));\n this.decimalSymbol = (_b = formatParts.find(({ type }) => type === 'decimal')) === null || _b === void 0 ? void 0 : _b.value;\n this.groupingSymbol = (_c = formatParts.find(({ type }) => type === 'group')) === null || _c === void 0 ? void 0 : _c.value;\n this.minusSign = (_d = numberFormat.formatToParts(-1).find(({ type }) => type === 'minusSign')) === null || _d === void 0 ? void 0 : _d.value;\n if (this.decimalSymbol === undefined) {\n this.minimumFractionDigits = this.maximumFractionDigits = 0;\n }\n else if (typeof precision === 'number') {\n this.minimumFractionDigits = this.maximumFractionDigits = precision;\n }\n else {\n this.minimumFractionDigits = (_e = precision === null || precision === void 0 ? void 0 : precision.min) !== null && _e !== void 0 ? _e : numberFormat.resolvedOptions().minimumFractionDigits;\n this.maximumFractionDigits = (_f = precision === null || precision === void 0 ? void 0 : precision.max) !== null && _f !== void 0 ? _f : numberFormat.resolvedOptions().maximumFractionDigits;\n }\n const getPrefix = (str) => {\n return substringBefore(str, this.digits[1]);\n };\n const getSuffix = (str) => {\n return str.substring(str.lastIndexOf(this.decimalSymbol ? this.digits[0] : this.digits[1]) + 1);\n };\n this.prefix = getPrefix(numberFormat.format(1));\n this.suffix = getSuffix(numberFormat.format(1));\n this.negativePrefix = getPrefix(numberFormat.format(-1));\n this.negativeSuffix = getSuffix(numberFormat.format(-1));\n }\n parse(str) {\n if (str) {\n const negative = this.isNegative(str);\n str = this.normalizeDigits(str);\n str = this.stripCurrency(str, negative);\n str = this.stripSignLiterals(str);\n const fraction = this.decimalSymbol ? `(?:${escapeRegExp(this.decimalSymbol)}(\\\\d*))?` : '';\n const match = this.stripGroupingSeparator(str).match(new RegExp(`^${INTEGER_PATTERN}${fraction}$`));\n if (match && this.isValidIntegerFormat(this.decimalSymbol ? str.split(this.decimalSymbol)[0] : str, Number(match[1]))) {\n return Number(`${negative ? '-' : ''}${this.onlyDigits(match[1])}.${this.onlyDigits(match[2] || '')}`);\n }\n }\n return null;\n }\n isValidIntegerFormat(formattedNumber, integerNumber) {\n const options = { ...this.options, minimumFractionDigits: 0 };\n return [\n this.stripCurrency(this.normalizeDigits(integerNumber.toLocaleString(this.locale, { ...options, useGrouping: true })), false),\n this.stripCurrency(this.normalizeDigits(integerNumber.toLocaleString(this.locale, { ...options, useGrouping: false })), false)\n ].includes(formattedNumber);\n }\n format(value, options = {\n minimumFractionDigits: this.minimumFractionDigits,\n maximumFractionDigits: this.maximumFractionDigits\n }) {\n return value != null ? value.toLocaleString(this.locale, { ...this.options, ...options }) : '';\n }\n toFraction(str) {\n return `${this.digits[0]}${this.decimalSymbol}${this.onlyLocaleDigits(str.substring(1)).substring(0, this.maximumFractionDigits)}`;\n }\n isFractionIncomplete(str) {\n return !!this.normalizeDigits(this.stripGroupingSeparator(str)).match(new RegExp(`^${INTEGER_PATTERN}${escapeRegExp(this.decimalSymbol)}$`));\n }\n isNegative(str) {\n return (str.startsWith(this.negativePrefix) ||\n (this.minusSign === undefined && (str.startsWith('(') || str.startsWith('-'))) ||\n (this.minusSign !== undefined && str.replace('-', this.minusSign).startsWith(this.minusSign)));\n }\n insertCurrency(str, negative) {\n return `${negative ? this.negativePrefix : this.prefix}${str}${negative ? this.negativeSuffix : this.suffix}`;\n }\n stripGroupingSeparator(str) {\n return this.groupingSymbol !== undefined ? str.replace(new RegExp(escapeRegExp(this.groupingSymbol), 'g'), '') : str;\n }\n stripSignLiterals(str) {\n if (this.minusSign !== undefined) {\n return str.replace('-', this.minusSign).replace(this.minusSign, '');\n }\n else {\n return str.replace(/[-()]/g, '');\n }\n }\n stripCurrency(str, negative) {\n return str.replace(negative ? this.negativePrefix : this.prefix, '').replace(negative ? this.negativeSuffix : this.suffix, '');\n }\n normalizeDecimalSeparator(str, from) {\n DECIMAL_SEPARATORS.forEach((s) => {\n str = str.substring(0, from) + str.substring(from).replace(s, this.decimalSymbol);\n });\n return str;\n }\n normalizeDigits(str) {\n if (this.digits[0] !== '0') {\n this.digits.forEach((digit, index) => {\n str = str.replace(new RegExp(digit, 'g'), String(index));\n });\n }\n return str;\n }\n onlyDigits(str) {\n return this.normalizeDigits(str).replace(/\\D+/g, '');\n }\n onlyLocaleDigits(str) {\n return str.replace(new RegExp(`[^${this.digits.join('')}]*`, 'g'), '');\n }\n}\n\nclass AbstractInputMask {\n constructor(currencyFormat) {\n this.currencyFormat = currencyFormat;\n }\n}\nclass DefaultInputMask extends AbstractInputMask {\n conformToMask(str, previousConformedValue = '') {\n const negative = this.currencyFormat.isNegative(str);\n const isEmptyNegativeValue = (str) => str === '' &&\n negative &&\n !(this.currencyFormat.minusSign === undefined\n ? previousConformedValue === this.currencyFormat.negativePrefix + this.currencyFormat.negativeSuffix\n : previousConformedValue === this.currencyFormat.negativePrefix);\n const checkIncompleteValue = (str) => {\n if (isEmptyNegativeValue(str)) {\n return '';\n }\n else if (this.currencyFormat.maximumFractionDigits > 0) {\n if (this.currencyFormat.isFractionIncomplete(str)) {\n return str;\n }\n else if (str.startsWith(this.currencyFormat.decimalSymbol)) {\n return this.currencyFormat.toFraction(str);\n }\n }\n return null;\n };\n let value = str;\n value = this.currencyFormat.stripCurrency(value, negative);\n value = this.currencyFormat.stripSignLiterals(value);\n const incompleteValue = checkIncompleteValue(value);\n if (incompleteValue != null) {\n return this.currencyFormat.insertCurrency(incompleteValue, negative);\n }\n const [integer, ...fraction] = value.split(this.currencyFormat.decimalSymbol);\n const integerDigits = removeLeadingZeros(this.currencyFormat.onlyDigits(integer));\n const fractionDigits = this.currencyFormat.onlyDigits(fraction.join('')).substring(0, this.currencyFormat.maximumFractionDigits);\n const invalidFraction = fraction.length > 0 && fractionDigits.length === 0;\n const invalidNegativeValue = integerDigits === '' &&\n negative &&\n (this.currencyFormat.minusSign === undefined\n ? previousConformedValue === str.slice(0, -2) + this.currencyFormat.negativeSuffix\n : previousConformedValue === str.slice(0, -1));\n if (invalidFraction || invalidNegativeValue || isEmptyNegativeValue(integerDigits)) {\n return previousConformedValue;\n }\n else if (integerDigits.match(/\\d+/)) {\n return {\n numberValue: Number(`${negative ? '-' : ''}${integerDigits}.${fractionDigits}`),\n fractionDigits\n };\n }\n else {\n return '';\n }\n }\n}\nclass AutoDecimalDigitsInputMask extends AbstractInputMask {\n conformToMask(str, previousConformedValue = '') {\n if (str === '' ||\n (this.currencyFormat.parse(previousConformedValue) === 0 &&\n this.currencyFormat.stripCurrency(previousConformedValue, true).slice(0, -1) === this.currencyFormat.stripCurrency(str, true))) {\n return '';\n }\n const negative = this.currencyFormat.isNegative(str);\n const numberValue = this.currencyFormat.stripSignLiterals(str) === ''\n ? -0\n : Number(`${negative ? '-' : ''}${removeLeadingZeros(this.currencyFormat.onlyDigits(str))}`) / Math.pow(10, this.currencyFormat.maximumFractionDigits);\n return {\n numberValue,\n fractionDigits: numberValue.toFixed(this.currencyFormat.maximumFractionDigits).slice(-this.currencyFormat.maximumFractionDigits)\n };\n }\n}\n\nconst DEFAULT_OPTIONS = {\n locale: undefined,\n currency: undefined,\n currencyDisplay: undefined,\n hideGroupingSeparatorOnFocus: true,\n hideCurrencySymbolOnFocus: true,\n hideNegligibleDecimalDigitsOnFocus: true,\n precision: undefined,\n autoDecimalDigits: false,\n valueRange: undefined,\n useGrouping: undefined,\n valueScaling: undefined\n};\nclass CurrencyInput {\n constructor(args) {\n this.el = args.el;\n this.onInput = args.onInput;\n this.onChange = args.onChange;\n this.addEventListener();\n this.init(args.options);\n }\n setOptions(options) {\n this.init(options);\n this.format(this.currencyFormat.format(this.validateValueRange(this.numberValue)));\n this.onChange(this.getValue());\n }\n getValue() {\n const numberValue = this.valueScaling && this.numberValue != null ? this.toInteger(this.numberValue, this.valueScaling) : this.numberValue;\n return { number: numberValue, formatted: this.formattedValue };\n }\n setValue(value) {\n const newValue = this.valueScaling !== undefined && value != null ? this.toFloat(value, this.valueScaling) : value;\n if (newValue !== this.numberValue) {\n this.format(this.currencyFormat.format(this.validateValueRange(newValue)));\n this.onChange(this.getValue());\n }\n }\n init(options) {\n this.options = {\n ...DEFAULT_OPTIONS,\n ...options\n };\n if (this.options.autoDecimalDigits) {\n this.options.hideNegligibleDecimalDigitsOnFocus = false;\n }\n if (!this.el.getAttribute('inputmode')) {\n this.el.setAttribute('inputmode', this.options.autoDecimalDigits ? 'numeric' : 'decimal');\n }\n this.currencyFormat = new CurrencyFormat(this.options);\n this.numberMask = this.options.autoDecimalDigits ? new AutoDecimalDigitsInputMask(this.currencyFormat) : new DefaultInputMask(this.currencyFormat);\n const valueScalingOptions = {\n [ValueScaling.precision]: this.currencyFormat.maximumFractionDigits,\n [ValueScaling.thousands]: 3,\n [ValueScaling.millions]: 6,\n [ValueScaling.billions]: 9\n };\n this.valueScaling = this.options.valueScaling ? valueScalingOptions[this.options.valueScaling] : undefined;\n this.valueScalingFractionDigits =\n this.valueScaling !== undefined && this.options.valueScaling !== ValueScaling.precision\n ? this.valueScaling + this.currencyFormat.maximumFractionDigits\n : this.currencyFormat.maximumFractionDigits;\n this.minValue = this.getMinValue();\n this.maxValue = this.getMaxValue();\n }\n getMinValue() {\n var _a, _b;\n let min = this.toFloat(-Number.MAX_SAFE_INTEGER);\n if (((_a = this.options.valueRange) === null || _a === void 0 ? void 0 : _a.min) !== undefined) {\n min = Math.max((_b = this.options.valueRange) === null || _b === void 0 ? void 0 : _b.min, this.toFloat(-Number.MAX_SAFE_INTEGER));\n }\n return min;\n }\n getMaxValue() {\n var _a, _b;\n let max = this.toFloat(Number.MAX_SAFE_INTEGER);\n if (((_a = this.options.valueRange) === null || _a === void 0 ? void 0 : _a.max) !== undefined) {\n max = Math.min((_b = this.options.valueRange) === null || _b === void 0 ? void 0 : _b.max, this.toFloat(Number.MAX_SAFE_INTEGER));\n }\n return max;\n }\n toFloat(value, maxFractionDigits) {\n return value / Math.pow(10, maxFractionDigits !== null && maxFractionDigits !== void 0 ? maxFractionDigits : this.valueScalingFractionDigits);\n }\n toInteger(value, maxFractionDigits) {\n return Number(value\n .toFixed(maxFractionDigits !== null && maxFractionDigits !== void 0 ? maxFractionDigits : this.valueScalingFractionDigits)\n .split('.')\n .join(''));\n }\n validateValueRange(value) {\n return value != null ? Math.min(Math.max(value, this.minValue), this.maxValue) : value;\n }\n format(value, hideNegligibleDecimalDigits = false) {\n if (value != null) {\n if (this.decimalSymbolInsertedAt !== undefined) {\n value = this.currencyFormat.normalizeDecimalSeparator(value, this.decimalSymbolInsertedAt);\n this.decimalSymbolInsertedAt = undefined;\n }\n const conformedValue = this.numberMask.conformToMask(value, this.formattedValue);\n let formattedValue;\n if (typeof conformedValue === 'object') {\n const { numberValue, fractionDigits } = conformedValue;\n let { maximumFractionDigits, minimumFractionDigits } = this.currencyFormat;\n if (this.focus) {\n minimumFractionDigits = hideNegligibleDecimalDigits\n ? fractionDigits.replace(/0+$/, '').length\n : Math.min(maximumFractionDigits, fractionDigits.length);\n }\n else if (Number.isInteger(numberValue) && !this.options.autoDecimalDigits && (this.options.precision === undefined || minimumFractionDigits === 0)) {\n minimumFractionDigits = maximumFractionDigits = 0;\n }\n formattedValue =\n this.toInteger(Math.abs(numberValue)) > Number.MAX_SAFE_INTEGER\n ? this.formattedValue\n : this.currencyFormat.format(numberValue, {\n useGrouping: this.options.useGrouping !== false && !(this.focus && this.options.hideGroupingSeparatorOnFocus),\n minimumFractionDigits,\n maximumFractionDigits\n });\n }\n else {\n formattedValue = conformedValue;\n }\n if (this.maxValue <= 0 && !this.currencyFormat.isNegative(formattedValue) && this.currencyFormat.parse(formattedValue) !== 0) {\n formattedValue = formattedValue.replace(this.currencyFormat.prefix, this.currencyFormat.negativePrefix);\n }\n if (this.minValue >= 0) {\n formattedValue = formattedValue.replace(this.currencyFormat.negativePrefix, this.currencyFormat.prefix);\n }\n if (this.options.currencyDisplay === CurrencyDisplay.hidden || (this.focus && this.options.hideCurrencySymbolOnFocus)) {\n formattedValue = formattedValue\n .replace(this.currencyFormat.negativePrefix, this.currencyFormat.minusSign !== undefined ? this.currencyFormat.minusSign : '(')\n .replace(this.currencyFormat.negativeSuffix, this.currencyFormat.minusSign !== undefined ? '' : ')')\n .replace(this.currencyFormat.prefix, '')\n .replace(this.currencyFormat.suffix, '');\n }\n this.el.value = formattedValue;\n this.numberValue = this.currencyFormat.parse(formattedValue);\n }\n else {\n this.el.value = '';\n this.numberValue = null;\n }\n this.formattedValue = this.el.value;\n this.onInput(this.getValue());\n }\n addEventListener() {\n this.el.addEventListener('input', (e) => {\n const { value, selectionStart } = this.el;\n const inputEvent = e;\n if (selectionStart && inputEvent.data && DECIMAL_SEPARATORS.includes(inputEvent.data)) {\n this.decimalSymbolInsertedAt = selectionStart - 1;\n }\n this.format(value);\n if (this.focus && selectionStart != null) {\n const getCaretPositionAfterFormat = () => {\n const { prefix, suffix, decimalSymbol, maximumFractionDigits, groupingSymbol } = this.currencyFormat;\n let caretPositionFromLeft = value.length - selectionStart;\n const newValueLength = this.formattedValue.length;\n if (this.currencyFormat.minusSign === undefined && (value.startsWith('(') || value.startsWith('-')) && !value.endsWith(')')) {\n return newValueLength - this.currencyFormat.negativeSuffix.length > 1 ? this.formattedValue.substring(selectionStart).length : 1;\n }\n if (this.formattedValue.substring(selectionStart, 1) === groupingSymbol &&\n count(this.formattedValue, groupingSymbol) === count(value, groupingSymbol) + 1) {\n return newValueLength - caretPositionFromLeft - 1;\n }\n if (newValueLength < caretPositionFromLeft) {\n return selectionStart;\n }\n if (decimalSymbol !== undefined && value.indexOf(decimalSymbol) !== -1) {\n const decimalSymbolPosition = value.indexOf(decimalSymbol) + 1;\n if (Math.abs(newValueLength - value.length) > 1 && selectionStart <= decimalSymbolPosition) {\n return this.formattedValue.indexOf(decimalSymbol) + 1;\n }\n else {\n if (!this.options.autoDecimalDigits && selectionStart > decimalSymbolPosition) {\n if (this.currencyFormat.onlyDigits(value.substring(decimalSymbolPosition)).length - 1 === maximumFractionDigits) {\n caretPositionFromLeft -= 1;\n }\n }\n }\n }\n return this.options.hideCurrencySymbolOnFocus || this.options.currencyDisplay === CurrencyDisplay.hidden\n ? newValueLength - caretPositionFromLeft\n : Math.max(newValueLength - Math.max(caretPositionFromLeft, suffix.length), prefix.length);\n };\n this.setCaretPosition(getCaretPositionAfterFormat());\n }\n });\n this.el.addEventListener('focus', () => {\n this.focus = true;\n this.numberValueOnFocus = this.numberValue;\n setTimeout(() => {\n const { value, selectionStart, selectionEnd } = this.el;\n this.format(value, this.options.hideNegligibleDecimalDigitsOnFocus);\n if (selectionStart != null && selectionEnd != null && Math.abs(selectionStart - selectionEnd) > 0) {\n this.setCaretPosition(0, this.el.value.length);\n }\n else if (selectionStart != null) {\n const caretPositionOnFocus = this.getCaretPositionOnFocus(value, selectionStart);\n this.setCaretPosition(caretPositionOnFocus);\n }\n });\n });\n this.el.addEventListener('blur', () => {\n this.focus = false;\n this.format(this.currencyFormat.format(this.validateValueRange(this.numberValue)));\n if (this.numberValueOnFocus !== this.numberValue) {\n this.onChange(this.getValue());\n }\n });\n }\n getCaretPositionOnFocus(value, selectionStart) {\n if (this.numberValue == null) {\n return selectionStart;\n }\n const { prefix, negativePrefix, suffix, negativeSuffix, groupingSymbol, currency } = this.currencyFormat;\n const isNegative = this.numberValue < 0;\n const currentPrefix = isNegative ? negativePrefix : prefix;\n const prefixLength = currentPrefix.length;\n if (this.options.hideCurrencySymbolOnFocus || this.options.currencyDisplay === CurrencyDisplay.hidden) {\n if (isNegative) {\n if (selectionStart <= 1) {\n return 1;\n }\n else if (value.endsWith(')') && selectionStart > value.indexOf(')')) {\n return this.formattedValue.length - 1;\n }\n }\n }\n else {\n const suffixLength = isNegative ? negativeSuffix.length : suffix.length;\n if (selectionStart >= value.length - suffixLength) {\n return this.formattedValue.length - suffixLength;\n }\n else if (selectionStart < prefixLength) {\n return prefixLength;\n }\n }\n let result = selectionStart;\n if (this.options.hideCurrencySymbolOnFocus &&\n this.options.currencyDisplay !== CurrencyDisplay.hidden &&\n selectionStart >= prefixLength &&\n currency !== undefined &&\n currentPrefix.includes(currency)) {\n result -= prefixLength;\n if (isNegative) {\n result += 1;\n }\n }\n if (this.options.hideGroupingSeparatorOnFocus && groupingSymbol !== undefined) {\n result -= count(value.substring(0, selectionStart), groupingSymbol);\n }\n return result;\n }\n setCaretPosition(start, end = start) {\n this.el.setSelectionRange(start, end);\n }\n}\n\nconst findInput = (el) => ((el === null || el === void 0 ? void 0 : el.matches('input')) ? el : el === null || el === void 0 ? void 0 : el.querySelector('input'));\nfunction useCurrencyInput(options, autoEmit) {\n var _a, _b, _c, _d;\n let currencyInput;\n const inputRef = ref(null);\n const formattedValue = ref(null);\n const numberValue = ref(null);\n const vm = getCurrentInstance();\n const emit = (vm === null || vm === void 0 ? void 0 : vm.emit) || ((_b = (_a = vm === null || vm === void 0 ? void 0 : vm.proxy) === null || _a === void 0 ? void 0 : _a.$emit) === null || _b === void 0 ? void 0 : _b.bind(vm === null || vm === void 0 ? void 0 : vm.proxy));\n const props = ((vm === null || vm === void 0 ? void 0 : vm.props) || ((_c = vm === null || vm === void 0 ? void 0 : vm.proxy) === null || _c === void 0 ? void 0 : _c.$props));\n const isVue3 = version.startsWith('3');\n const lazyModel = isVue3 && ((_d = vm === null || vm === void 0 ? void 0 : vm.attrs.modelModifiers) === null || _d === void 0 ? void 0 : _d.lazy);\n const modelValue = computed(() => props === null || props === void 0 ? void 0 : props[isVue3 ? 'modelValue' : 'value']);\n const inputEvent = isVue3 ? 'update:modelValue' : 'input';\n const changeEvent = lazyModel ? 'update:modelValue' : 'change';\n watch(inputRef, (value) => {\n var _a;\n if (value) {\n const el = findInput((_a = value === null || value === void 0 ? void 0 : value.$el) !== null && _a !== void 0 ? _a : value);\n if (el) {\n currencyInput = new CurrencyInput({\n el,\n options,\n onInput: (value) => {\n if (!lazyModel && autoEmit !== false && modelValue.value !== value.number) {\n emit === null || emit === void 0 ? void 0 : emit(inputEvent, value.number);\n }\n numberValue.value = value.number;\n formattedValue.value = value.formatted;\n },\n onChange: (value) => {\n if (autoEmit !== false) {\n emit === null || emit === void 0 ? void 0 : emit(changeEvent, value.number);\n }\n }\n });\n currencyInput.setValue(modelValue.value);\n }\n else {\n console.error('No input element found. Please make sure that the \"inputRef\" template ref is properly assigned.');\n }\n }\n else {\n currencyInput = null;\n }\n });\n return {\n inputRef,\n numberValue,\n formattedValue,\n setValue: (value) => currencyInput === null || currencyInput === void 0 ? void 0 : currencyInput.setValue(value),\n setOptions: (options) => currencyInput === null || currencyInput === void 0 ? void 0 : currencyInput.setOptions(options)\n };\n}\n\nexport { CurrencyDisplay, ValueScaling, useCurrencyInput };\n","<script lang=\"ts\" setup>\n import isEmpty from 'lodash-es/isEmpty';\n import { computed, useAttrs, watch } from 'vue';\n import { CurrencyDisplay, CurrencyInputOptions, useCurrencyInput } from 'vue-currency-input';\n\n import Icon from '../Icon/Icon.vue';\n import Input, { InputProps } from '../Input/Input.vue';\n\n const CURRENCY_INPUT_BASE_OPTIONS: CurrencyInputOptions = {\n currency: 'USD',\n currencyDisplay: CurrencyDisplay.hidden,\n precision: 2,\n hideCurrencySymbolOnFocus: true,\n hideGroupingSeparatorOnFocus: true,\n hideNegligibleDecimalDigitsOnFocus: false,\n autoDecimalDigits: true,\n useGrouping: true,\n accountingSign: false,\n };\n\n export interface CurrencyInputProps extends Omit<InputProps, 'modelValue' | 'type'> {\n inputOptions?: Partial<CurrencyInputOptions>;\n modelValue: string | null;\n }\n\n const props = withDefaults(defineProps<CurrencyInputProps>(), {\n // Todo: this default should be removed if its a required prop...\n modelValue: '',\n errorText: undefined,\n hintText: undefined,\n label: undefined,\n id: undefined,\n inputOptions: undefined,\n });\n\n const emit =\n defineEmits<{\n /**\n * Emitted when the input value changes.\n */\n (e: 'update:model-value', v: CurrencyInputProps['modelValue']): void;\n }>();\n\n const attrs = useAttrs();\n\n const currencyInputOptions = computed(() => {\n return {\n ...CURRENCY_INPUT_BASE_OPTIONS,\n ...(!isEmpty(props.inputOptions) ? props.inputOptions : {}),\n };\n });\n\n const { inputRef: inputEl, setOptions, setValue, numberValue } = useCurrencyInput(currencyInputOptions.value, false);\n\n defineExpose({ inputEl });\n\n watch(\n () => numberValue.value,\n (newValue: number | null | string) => {\n let stringValue: string | null;\n\n if (Object.is(newValue, -0)) {\n if (typeof currencyInputOptions.value.precision === 'number') {\n stringValue = '-0.' + '0'.repeat(currencyInputOptions.value.precision);\n } else {\n stringValue = '-0.' + '0'.repeat(currencyInputOptions.value.precision?.min || 0);\n }\n } else {\n stringValue = typeof newValue === 'number' ? newValue.toFixed(2) : newValue;\n }\n\n emit('update:model-value', stringValue);\n },\n );\n\n watch(\n () => props.modelValue,\n (newValue: number | null | string) => {\n let numberValue: number | null;\n\n if (typeof newValue === 'string') {\n numberValue = parseFloat(newValue || '0');\n } else {\n numberValue = newValue;\n }\n\n setValue(numberValue);\n },\n );\n\n watch(\n () => props.inputOptions,\n () => {\n setOptions(currencyInputOptions.value);\n },\n );\n\n const inputAttrs = computed(() => {\n const { inputOptions: _, ...propsWithoutCurrencyInputOptions } = props;\n\n return { ...propsWithoutCurrencyInputOptions, ...attrs } as typeof attrs & InputProps;\n });\n</script>\n\n<template>\n <Input\n v-bind=\"inputAttrs\"\n ref=\"inputEl\"\n class=\"stash-currency-input\"\n type=\"text\"\n data-test=\"stash-currency-input\"\n inputmode=\"decimal\"\n >\n <template #prepend>\n <Icon name=\"sign-dollar\" />\n </template>\n </Input>\n</template>\n"],"names":["CurrencyDisplay","ValueScaling","escapeRegExp","str","removeLeadingZeros","count","search","substringBefore","DECIMAL_SEPARATORS","INTEGER_PATTERN","CurrencyFormat","options","_a","_b","_c","_d","_e","_f","currency","currencyDisplay","locale","precision","accountingSign","useGrouping","numberFormat","formatParts","type","i","getPrefix","getSuffix","negative","fraction","match","formattedNumber","integerNumber","value","from","s","digit","index","AbstractInputMask","currencyFormat","DefaultInputMask","previousConformedValue","isEmptyNegativeValue","checkIncompleteValue","incompleteValue","integer","integerDigits","fractionDigits","invalidFraction","invalidNegativeValue","AutoDecimalDigitsInputMask","numberValue","DEFAULT_OPTIONS","CurrencyInput","args","newValue","valueScalingOptions","min","max","maxFractionDigits","hideNegligibleDecimalDigits","conformedValue","formattedValue","maximumFractionDigits","minimumFractionDigits","e","selectionStart","inputEvent","getCaretPositionAfterFormat","prefix","suffix","decimalSymbol","groupingSymbol","caretPositionFromLeft","newValueLength","decimalSymbolPosition","selectionEnd","caretPositionOnFocus","negativePrefix","negativeSuffix","isNegative","currentPrefix","prefixLength","suffixLength","result","start","end","findInput","el","useCurrencyInput","autoEmit","currencyInput","inputRef","ref","vm","getCurrentInstance","emit","props","isVue3","version","lazyModel","modelValue","computed","changeEvent","watch","CURRENCY_INPUT_BASE_OPTIONS","attrs","useAttrs","currencyInputOptions","isEmpty","inputEl","setOptions","setValue","__expose","stringValue","inputAttrs","_","propsWithoutCurrencyInputOptions"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/DataView.js
CHANGED
|
@@ -6,7 +6,7 @@ import { a as X, D as Y, s as w } from "./DataView.vue_used_vue_type_style_index
|
|
|
6
6
|
import { _ as O } from "./_plugin-vue_export-helper-dad06003.js";
|
|
7
7
|
import "./Icon.js";
|
|
8
8
|
import "lodash-es/uniqueId";
|
|
9
|
-
import "./index-
|
|
9
|
+
import "./index-9e1095ef.js";
|
|
10
10
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
11
11
|
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
|
|
12
12
|
function b(e) {
|