@ozdao/prometheus-framework 0.2.304 → 0.2.305

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. package/dist/main.css +1 -1
  2. package/dist/prometheus-framework/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  3. package/dist/prometheus-framework/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  4. package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.cjs +2 -2
  5. package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
  6. package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.js +2 -2
  7. package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  8. package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  9. package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  10. package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  11. package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  12. package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  13. package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  14. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  15. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  16. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  17. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  18. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  19. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  20. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  21. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  22. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  23. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  24. package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.cjs +2 -2
  25. package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.js +2 -2
  26. package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.cjs +2 -2
  27. package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.js +2 -2
  28. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +1 -1
  29. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js +1 -1
  30. package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs +1 -1
  31. package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js +1 -1
  32. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  33. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  34. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  35. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  36. package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  37. package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  38. package/dist/prometheus-framework/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  39. package/dist/prometheus-framework/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  40. package/dist/prometheus-framework/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  41. package/dist/prometheus-framework/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  42. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
  43. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  44. package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  45. package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  46. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  47. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  48. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.cjs +1 -1
  49. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js +1 -1
  50. package/dist/prometheus-framework/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  51. package/dist/prometheus-framework/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  52. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
  53. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  54. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +4 -4
  55. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +4 -4
  56. package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  57. package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.js +1 -1
  58. package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  59. package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  60. package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +1 -1
  61. package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.js +1 -1
  62. package/dist/prometheus-framework/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  63. package/dist/prometheus-framework/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  64. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +3 -3
  65. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +3 -3
  66. package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.cjs +3 -3
  67. package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.js +3 -3
  68. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +2 -2
  69. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  70. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +2 -2
  71. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  72. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +4 -4
  73. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
  74. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  75. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  76. package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  77. package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  78. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  79. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  80. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  81. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  82. package/dist/prometheus-framework/src/modules/pages/pages.client.cjs +937 -937
  83. package/dist/prometheus-framework/src/modules/pages/pages.client.js +937 -937
  84. package/dist/prometheus-framework/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  85. package/dist/prometheus-framework/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  86. package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.cjs +2 -2
  87. package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.js +2 -2
  88. package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.cjs +13 -17
  89. package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  90. package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.js +14 -18
  91. package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  92. package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs +1 -1
  93. package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.js +1 -1
  94. package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  95. package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  96. package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.cjs +3 -3
  97. package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.js +3 -3
  98. package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  99. package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  100. package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  101. package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  102. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.cjs +1 -1
  103. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.js +1 -1
  104. package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
  105. package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.js +1 -1
  106. package/dist/prometheus-framework/src/modules/products/components/sections/Filters.vue.cjs +1 -1
  107. package/dist/prometheus-framework/src/modules/products/components/sections/Filters.vue.js +1 -1
  108. package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
  109. package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  110. package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  111. package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  112. package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.cjs +3 -3
  113. package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  114. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  115. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  116. package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  117. package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  118. package/package.json +1 -1
  119. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  120. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  121. package/src/modules/products/components/blocks/CardProduct.vue +0 -6
  122. package/src/styles/responsive.scss +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPhone.vue.cjs","sources":["../../../../../src/components/FieldPhone/FieldPhone.vue"],"sourcesContent":["<template>\n <div \n :class=\"[\n rootClass, \n classes,\n $attrs.class, \n { 'bg-fourth-nano': validation }, \n { disabled: disabled }\n ]\" \n :style=\"[\n rootStyle, \n styles\n ]\" \n ref=\"rootElement\"\n class=\"vue3-reactive-tel-input\"\n >\n <div\n v-click-outside=\"clickedOutside\"\n :class=\"['vti__dropdown', { open: open }]\"\n :style=\"[dropdownStyle]\"\n :tabindex=\"dropdownOptions.tabindex\"\n @keydown=\"keyboardNav\"\n @click=\"toggleDropdown\"\n @keydown.esc=\"reset\"\n class=\"br-solid br-black-transp br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-medium vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n <span v-if=\"dropdownOptions.showDialCodeInSelection\" class=\"vti__country-code\">\n +{{ activeCountry && activeCountry.dialCode }}\n </span>\n <!-- <slot name=\"arrow-icon\" :open=\"open\"> -->\n <!-- <span class=\"vti__dropdown-arrow\">{{ open ? \"▲\" : \"▼\" }}</span> -->\n <!-- </slot> -->\n </span>\n <ul \n ref=\"list\" \n class=\"bs-black radius-small vti__dropdown-list\"\n v-show=\"open\" \n :class=\"dropdownOpenDirection\"\n :style=\"[listStyle]\"\n \n >\n <li\n v-for=\"(pb, index) in sortedCountries\"\n class=\"flex-nowrap flex w-max\"\n :class=\"['vti__dropdown-item', getItemClass(index, pb.iso2)]\"\n :key=\"pb.iso2 + (pb.preferred ? '-preferred' : '')\"\n @click=\"choose(pb)\"\n @mousemove=\"selectedIndex = index\"\n >\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"pb.flag\" class=\"mn-r-thin\"/>\n <strong>{{ pb.name }}</strong>\n <span v-if=\"dropdownOptions.showDialCodeInList\"> +{{ pb.dialCode }} </span>\n </li>\n </ul>\n </div>\n <!-- <div :class=\"[divInputClass]\" > -->\n <input\n v-model=\"phone\"\n inputmode=\"numeric\" \n pattern=\"\\d*\"\n ref=\"input\"\n :type=\"inputOptions.type\"\n :autocomplete=\"inputOptions.autocomplete\"\n :autofocus=\"inputOptions.autofocus\"\n :class=\"['vti__input', inputOptions.styleClasses, inputClass, Iclasses]\"\n :style=\"[inputStyle, Istyles]\"\n :disabled=\"disabled\"\n :id=\"inputId !== ''? inputId : inputOptions.id\"\n :maxlength=\"inputOptions.maxlength\"\n :name=\"inputId !== ''? inputId : inputOptions.name\"\n :placeholder=\"parsedPlaceholder\"\n :readonly=\"inputOptions.readonly\"\n :required=\"inputOptions.required\"\n :tabindex=\"inputOptions.tabindex\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keyup.enter=\"onEnter\"\n @keyup.space=\"onSpace\"\n />\n <slot></slot> <!-- slot outlet -->\n <!-- </div> -->\n\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n\n\n<script setup>\n import { ref, reactive, watch, computed, onMounted, nextTick } from 'vue';\n import { parsePhoneNumberFromString } from 'libphonenumber-js';\n\n import clickOutside from './click-outside';\n import allCountries from './all-countries';\n\n let vClickOutside = clickOutside\n\n const props = defineProps({\n modelValue: { type: String, default: '',},\n badClass: { type: [String, Array, Object], default: '', },\n goodClass: { type: [String, Array, Object], default: '', },\n badStyle: { type: [String, Array, Object], default: '', },\n goodStyle: { type: [String, Array, Object], default: '', },\n badInputClass: { type: [String, Array, Object], default: '', },\n goodInputClass: { type: [String, Array, Object], default: '', },\n badInputStyle: { type: [String, Array, Object], default: '', },\n goodInputStyle: { type: [String, Array, Object], default: '', },\n allCountries: { type: Array, default: () => allCountries, },\n autoFormat: { type: Boolean, default: () => true, },\n validation: { type: [Boolean, Object], default: false, },\n customValidate: { type: [Boolean, RegExp], default: () => false, },\n defaultCountry: { type: String, default: () => '', },\n disabled: { type: Boolean, default: () => false, },\n autoDefaultCountry: { type: Boolean, default: () => true },\n ignoredCountries: { type: Array, default: () => [], },\n invalidMsg: { type: String, default: () => '', },\n mode: { type: String, default: () => 'auto', },\n onlyCountries: { type: Array, default: () => [], },\n preferredCountries: { type: Array, default: () => [], },\n validCharactersOnly: { type: Boolean, default: () => false, },\n rootClass: { type: [String, Array, Object], default: () => '', },\n inputClass: { type: [String, Array, Object], default: () => {return ''}, },\n divInputClass: { type: [String, Array, Object], default: () => {return ''}, },\n rootStyle: { type: [String, Array, Object], default: () => {return ''}, },\n dropdownStyle: { type: [String, Array, Object], default: () => {return ''}, },\n listStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputId: { type: [String, Array, Object], default: () => {return ''}, },\n Placeholder: { type: [String, Object, Function], default: () => {return ''}, },\n dropdownOptions: { \n type: Object, \n default: () => {\n return {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n tabindex: 0\n }\n } \n },\n inputOptions: { \n type: Object, \n default: () => { \n return {\n autocomplete: 'on',\n autofocus: false,\n id: '',\n maxlength: 25,\n name: 'telephone',\n placeholder: 'Enter a phone number',\n readonly: false,\n required: false,\n tabindex: 0,\n type: 'tel',\n styleClasses: ''\n }\n }\n },\n });\n\n const emits = defineEmits([\n 'update:modelValue', \n 'change',\n 'validate', \n 'country-changed', \n 'open', \n 'close', \n 'blur', \n 'focus', \n 'enter', \n 'space'\n ]);\n\n const counter = ref(5);\n const initCounter = ref(5);\n const message = reactive({\n action: null,\n amount: null,\n });\n const phone = ref(props.modelValue ? props.modelValue : '');\n const activeCountryCode = ref('');\n const open = ref(false);\n const finishMounted = ref(false);\n const selectedIndex = ref(null);\n const typeToFindInput = ref('');\n const typeToFindTimer = ref(null);\n const dropdownOpenDirection = ref('below');\n const parsedPlaceholder = ref(props.Placeholder !== '' ? props.Placeholder : props.inputOptions.placeholder);\n\n const rootElement = ref(null)\n const list = ref(null)\n const input = ref(null)\n\n // Lifecycle hooks\n onMounted(async () => {\n if (props.modelValue) {\n phone.value = props.modelValue;\n }\n\n cleanInvalidCharacters();\n\n initializeCountry()\n .then(() => {\n if (!phone.value\n && props.inputOptions?.showDialCode\n && activeCountryCode.value) {\n phone.value = `+${activeCountryCode.value}`;\n }\n emits('validate', phoneObject.value);\n })\n .catch(console.error)\n .then(() => {\n finishMounted.value = true;\n });\n });\n\n // Computed properties\n const activeCountry = computed(() => {\n return findCountry(activeCountryCode.value);\n });\n\n const activeCountryFlag = computed(() => {\n return activeCountry.value ? activeCountry.value.flag : null;\n });\n\n const parsedMode = computed(() => {\n if (props.mode === 'auto') {\n if (!phone.value || phone.value[0] !== '+') {\n return 'national';\n }\n return 'international';\n }\n if (!['international', 'national'].includes(props.mode)) {\n console.error('Invalid value of prop \"mode\"');\n return 'international';\n }\n return props.mode;\n });\n\n const filteredCountries = computed(() => {\n if (props.onlyCountries && props.onlyCountries.length) {\n return props.allCountries.filter(({ iso2 }) => props.onlyCountries.includes(iso2.toUpperCase()));\n }\n\n if (props.ignoredCountries && props.ignoredCountries.length) {\n return props.allCountries.filter(({ iso2 }) =>\n !props.ignoredCountries.includes(iso2.toUpperCase()) && !props.ignoredCountries.includes(iso2.toLowerCase()),\n );\n }\n\n return props.allCountries;\n });\n const sortedCountries = computed(() => {\n const preferredCountries = getCountries(props.preferredCountries)\n .map(country => ({ ...country, preferred: true }));\n\n return [...preferredCountries, ...filteredCountries.value];\n });\n\n const phoneObject = computed(() => {\n let result = {};\n\n if (phone.value?.[0] === '+') {\n result = parsePhoneNumberFromString(phone.value) || {};\n } else {\n result = parsePhoneNumberFromString(phone.value, activeCountryCode.value) || {};\n }\n\n const { metadata, ...phoneDetails } = result;\n\n let valid = result.isValid?.();\n let formatted = phone.value;\n\n if (valid) {\n formatted = result.format?.(parsedMode.value.toUpperCase(), { nationalPrefix: false });\n }\n\n if (result.country && (props.ignoredCountries.length || props.onlyCountries.length)) {\n if (!findCountry(result.country)) {\n valid = false;\n result = { ...result, country: null };\n }\n }\n\n return {\n ...phoneDetails,\n countryCode: result.country,\n valid,\n country: activeCountry.value,\n formatted,\n };\n });\n\n const classes = computed(() => {\n return phoneObject.value.valid === true ? props.goodClass : \n phoneObject.value.valid === false ? props.badClass : undefined;\n });\n\n const styles = computed(() => {\n return phoneObject.value.valid === true ? props.goodStyle : \n phoneObject.value.valid === false ? props.badStyle : undefined;\n });\n\n const Iclasses = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputClass : \n phoneObject.value.valid === false ? props.badInputClass : undefined;\n });\n\n const Istyles = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputStyle : \n phoneObject.value.valid === false ? props.badInputStyle : undefined;\n });\n // ///////////\n // Watchers\n // ///////////\n watch(activeCountry, (newValue, oldValue) => {\n if (!newValue && oldValue?.iso2) {\n activeCountryCode.value = oldValue.iso2;\n return;\n }\n if (newValue?.iso2) {\n emits('country-changed', newValue);\n resetPlaceholder();\n }\n });\n\n // Следим за изменениями countryCode в phoneObject\n watch(() => phoneObject.value.countryCode, (newValue) => {\n activeCountryCode.value = newValue;\n });\n\n // Следим за изменениями валидности phoneObject\n watch(() => phoneObject.value.valid, () => {\n emits('validate', phoneObject.value);\n });\n\n // Следим за изменениями отформатированного номера в phoneObject\n watch(() => phoneObject.value.formatted, (newValue) => {\n if (!props.autoFormat || props.customValidate) {\n return;\n }\n emitInput(newValue);\n\n nextTick(() => {\n if (newValue && !props.modelValue) {\n phone.value = newValue;\n }\n });\n });\n\n // Следим за изменениями placeholder в inputOptions\n watch(() => props.inputOptions.placeholder, () => {\n resetPlaceholder();\n });\n\n // Следим за внешними изменениями значения (например, через v-model)\n watch(() => props.modelValue, (newValue, oldValue) => {\n if (!testCharacters()) {\n nextTick(() => {\n phone.value = oldValue;\n onInput();\n });\n } else {\n phone.value = newValue;\n }\n });\n\n // Следим за состоянием открытия/закрытия dropdown\n watch(open, (isDropdownOpened) => {\n if (isDropdownOpened) {\n setDropdownPosition();\n emits('open');\n } else {\n emits('close');\n }\n });\n\n // Methods\n function getCountry() {\n return fetch('https://ip2c.org/s')\n .then((response) => response.text())\n .then((response) => {\n const result = (response || '').toString();\n\n if (!result || result[0] !== '1') {\n throw new Error('unable to fetch the country');\n }\n\n return result.substr(2, 2);\n });\n }\n \n function setCaretPosition(ctrl, pos) {\n // Modern browsers\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\n\n // IE8 and below\n } else if (ctrl.createTextRange) {\n const range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n\n function resetPlaceholder() {\n parsedPlaceholder.value = props.inputOptions.placeholder;\n }\n function initializeCountry() {\n return new Promise((resolve) => {\n if (phone.value?.[0] === '+') { resolve(); return; }\n if (props.defaultCountry) { choose(props.defaultCountry); resolve(); return; }\n const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];\n if (props.autoDefaultCountry) {\n getCountry()\n .then((res) => { choose(res || activeCountryCode.value); })\n .catch((error) => { console.warn(error); choose(fallbackCountry); })\n .finally(() => { resolve(); });\n } else {\n choose(fallbackCountry);\n resolve();\n }\n });\n }\n\n function getCountries(list = []) {\n return list.map((countryCode) => findCountry(countryCode)).filter(Boolean);\n }\n\n function findCountry(iso = '') {\n return filteredCountries.value.find((country) => country.iso2 === iso.toUpperCase());\n }\n\n function getItemClass(index, iso2) {\n const highlighted = selectedIndex.value === index;\n const lastPreferred = index === props.preferredCountries.length - 1;\n const preferred = props.preferredCountries.some((c) => c.toUpperCase() === iso2);\n return { highlighted, 'last-preferred': lastPreferred, preferred };\n }\n\n function choose(country) {\n let parsedCountry = typeof country === 'string' ? findCountry(country) : country;\n if (!parsedCountry) return;\n \n if (phone.value?.[0] === '+' && parsedCountry.iso2 && phoneObject.value.nationalNumber) {\n activeCountryCode.value = parsedCountry.iso2;\n phone.value = parsePhoneNumberFromString(phoneObject.value.nationalNumber, parsedCountry.iso2).formatInternational();\n return;\n }\n\n if (props.inputOptions?.showDialCode && parsedCountry) {\n phone.value = `+${parsedCountry.dialCode}`;\n return;\n }\n\n activeCountryCode.value = parsedCountry.iso2;\n emitInput(phone.value);\n }\n\n function cleanInvalidCharacters() {\n const currentPhone = phone.value;\n\n if (props.validCharactersOnly) {\n const results = phone.value.match(/[()\\-+0-9\\s]*/g);\n phone.value = results.join('');\n }\n\n if (props.customValidate && props.customValidate instanceof RegExp) {\n const results = phone.value.match(props.customValidate);\n phone.value = results ? results.join('') : '';\n }\n\n if (currentPhone !== phone.value) {\n emitInput(phone.value);\n }\n }\n\n function testCharacters() {\n if (props.validCharactersOnly) {\n const result = /^[()\\-+0-9\\s]*$/.test(phone.value);\n if (!result) return false;\n }\n if (props.customValidate) {\n return testCustomValidate();\n }\n return true;\n }\n\n function testCustomValidate() {\n return props.customValidate instanceof RegExp ? props.customValidate.test(phone.value) : false;\n }\n\n function onInput() {\n input.value.setCustomValidity(phoneObject.valid ? '' : props.invalidMsg);\n\n emitInput(phone.value);\n }\n\n function emitInput(value) {\n emits('update:modelValue', value);\n\n\n\n if (phoneObject.value.valid) { \n emits('change', phoneObject.value.number);\n emits('country', phoneObject.value.number);\n } else {\n emits('country', null);\n }\n }\n\n function onBlur() {\n emits('blur');\n }\n\n function onFocus() {\n setCaretPosition(input.value, phone.value.length);\n emits('focus');\n }\n\n function onEnter() {\n emits('enter');\n }\n\n function onSpace() {\n emits('space');\n }\n\n function focus() {\n input.value.focus();\n }\n\n function toggleDropdown() {\n if (props.disabled) return;\n open.value = !open.value;\n }\n\n function clickedOutside() {\n open.value = false;\n }\n\n function keyboardNav(e) {\n if (e.keyCode === 40) { // down arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? 0 : Math.min(sortedCountries.value.length - 1, selectedIndex.value + 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight + selEle.clientHeight;\n }\n });\n } else if (e.keyCode === 38) { // up arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? sortedCountries.value.length - 1 : Math.max(0, selectedIndex.value - 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop < list.value.scrollTop) {\n list.value.scrollTop = selEle.offsetTop;\n }\n });\n } else if (e.keyCode === 13) { // enter key\n e.preventDefault();\n if (selectedIndex.value !== null) {\n choose(sortedCountries.value[selectedIndex.value]);\n }\n open.value = !open.value;\n } else { // typing a country's name\n typeToFindInput.value += e.key;\n clearTimeout(typeToFindTimer);\n typeToFindTimer = setTimeout(() => {\n typeToFindInput.value = '';\n }, 700);\n nextTick(() => {\n const typedCountryI = sortedCountries.value.slice(props.preferredCountries.length).findIndex((c) => c.name.toLowerCase().startsWith(typeToFindInput.value));\n if (typedCountryI >= 0) {\n selectedIndex.value = props.preferredCountries.length + typedCountryI;\n const selEle = list.value.children[selectedIndex.value];\n const needToScroll = selEle.offsetTop < list.value.scrollTop || selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight;\n if (needToScroll) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight / 2;\n }\n }\n });\n }\n }\n\n function reset() {\n selectedIndex.value = sortedCountries.value.map(c => c.iso2).indexOf(activeCountryCode.value);\n open.value = false;\n }\n\n function setDropdownPosition() {\n const spaceBelow = window.innerHeight - rootElement.value.getBoundingClientRect().bottom;\n const hasEnoughSpaceBelow = spaceBelow > 200;\n dropdownOpenDirection.value = hasEnoughSpaceBelow ? 'below' : 'above';\n }\n</script>\n\n<style lang=\"scss\">\n .vue3-reactive-tel-input{\n display:flex\n }\n .vue3-reactive-tel-input.disabled .dropdown,.vue3-reactive-tel-input.disabled .selection,.vue3-reactive-tel-input.disabled input{\n cursor:no-drop\n }\n .vti__dropdown{\n display:flex;\n flex-direction:column;\n align-content:center;\n justify-content:center;\n position:relative;\n padding:2px;\n cursor:pointer\n }\n .vti__dropdown.show{\n max-height:300px;\n overflow:scroll\n }\n .vti__dropdown-list{\n z-index:1;\n padding:0;\n margin:0;\n text-align:left;\n list-style:none;\n max-height:200px;\n overflow-y:scroll;\n position:absolute;\n left:-1px;\n background-color:#fff;\n width:fit-content\n }\n .vti__dropdown-list.below{\n top:33px\n }\n .vti__dropdown-list.above{\n top:auto;\n bottom:100%\n }\n .vti__dropdown-arrow{\n transform:scaleY(.5);\n display:inline-block;\n color:#666\n }\n .vti__dropdown-item{\n cursor:pointer;\n padding:4px 15px\n }\n .vti__dropdown-item.last-preferred{\n border-bottom:1px solid #cacaca\n }\n .vti__dropdown-item .vti__flag{\n display:inline-block;\n margin-right:5px\n }\n .vti__input{\n color: inherit;\n border:none;\n border-radius:0 2px 2px 0;\n width:100%;\n outline:0;\n padding-left:7px\n }\n</style>"],"names":["clickOutside","ref","reactive","onMounted","computed","parsePhoneNumberFromString","watch","nextTick","list"],"mappings":"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"}
1
+ {"version":3,"file":"FieldPhone.vue.cjs","sources":["../../../../../src/components/FieldPhone/FieldPhone.vue"],"sourcesContent":["<template>\n <div \n :class=\"[\n rootClass, \n classes,\n $attrs.class, \n { 'bg-fourth-nano': validation }, \n { disabled: disabled }\n ]\" \n :style=\"[\n rootStyle, \n styles\n ]\" \n ref=\"rootElement\"\n class=\"vue3-reactive-tel-input\"\n >\n <div\n v-click-outside=\"clickedOutside\"\n :class=\"['vti__dropdown', { open: open }]\"\n :style=\"[dropdownStyle]\"\n :tabindex=\"dropdownOptions.tabindex\"\n @keydown=\"keyboardNav\"\n @click=\"toggleDropdown\"\n @keydown.esc=\"reset\"\n class=\"br-solid br-black-transp br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-medium vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n <span v-if=\"dropdownOptions.showDialCodeInSelection\" class=\"vti__country-code\">\n +{{ activeCountry && activeCountry.dialCode }}\n </span>\n <!-- <slot name=\"arrow-icon\" :open=\"open\"> -->\n <!-- <span class=\"vti__dropdown-arrow\">{{ open ? \"▲\" : \"▼\" }}</span> -->\n <!-- </slot> -->\n </span>\n <ul \n ref=\"list\" \n class=\"bs-black radius-small vti__dropdown-list\"\n v-show=\"open\" \n :class=\"dropdownOpenDirection\"\n :style=\"[listStyle]\"\n \n >\n <li\n v-for=\"(pb, index) in sortedCountries\"\n class=\"flex-nowrap flex w-max\"\n :class=\"['vti__dropdown-item', getItemClass(index, pb.iso2)]\"\n :key=\"pb.iso2 + (pb.preferred ? '-preferred' : '')\"\n @click=\"choose(pb)\"\n @mousemove=\"selectedIndex = index\"\n >\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"pb.flag\" class=\"mn-r-thin\"/>\n <strong>{{ pb.name }}</strong>\n <span v-if=\"dropdownOptions.showDialCodeInList\"> +{{ pb.dialCode }} </span>\n </li>\n </ul>\n </div>\n <!-- <div :class=\"[divInputClass]\" > -->\n <input\n v-model=\"phone\"\n inputmode=\"numeric\" \n pattern=\"\\d*\"\n ref=\"input\"\n :type=\"inputOptions.type\"\n :autocomplete=\"inputOptions.autocomplete\"\n :autofocus=\"inputOptions.autofocus\"\n :class=\"['vti__input', inputOptions.styleClasses, inputClass, Iclasses]\"\n :style=\"[inputStyle, Istyles]\"\n :disabled=\"disabled\"\n :id=\"inputId !== ''? inputId : inputOptions.id\"\n :maxlength=\"inputOptions.maxlength\"\n :name=\"inputId !== ''? inputId : inputOptions.name\"\n :placeholder=\"parsedPlaceholder\"\n :readonly=\"inputOptions.readonly\"\n :required=\"inputOptions.required\"\n :tabindex=\"inputOptions.tabindex\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keyup.enter=\"onEnter\"\n @keyup.space=\"onSpace\"\n />\n <slot></slot> <!-- slot outlet -->\n <!-- </div> -->\n\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n\n\n<script setup>\n import { ref, reactive, watch, computed, onMounted, nextTick } from 'vue';\n import { parsePhoneNumberFromString } from 'libphonenumber-js';\n\n import clickOutside from './click-outside';\n import allCountries from './all-countries';\n\n let vClickOutside = clickOutside\n\n const props = defineProps({\n modelValue: { type: String, default: '',},\n badClass: { type: [String, Array, Object], default: '', },\n goodClass: { type: [String, Array, Object], default: '', },\n badStyle: { type: [String, Array, Object], default: '', },\n goodStyle: { type: [String, Array, Object], default: '', },\n badInputClass: { type: [String, Array, Object], default: '', },\n goodInputClass: { type: [String, Array, Object], default: '', },\n badInputStyle: { type: [String, Array, Object], default: '', },\n goodInputStyle: { type: [String, Array, Object], default: '', },\n allCountries: { type: Array, default: () => allCountries, },\n autoFormat: { type: Boolean, default: () => true, },\n validation: { type: [Boolean, Object], default: false, },\n customValidate: { type: [Boolean, RegExp], default: () => false, },\n defaultCountry: { type: String, default: () => '', },\n disabled: { type: Boolean, default: () => false, },\n autoDefaultCountry: { type: Boolean, default: () => true },\n ignoredCountries: { type: Array, default: () => [], },\n invalidMsg: { type: String, default: () => '', },\n mode: { type: String, default: () => 'auto', },\n onlyCountries: { type: Array, default: () => [], },\n preferredCountries: { type: Array, default: () => [], },\n validCharactersOnly: { type: Boolean, default: () => false, },\n rootClass: { type: [String, Array, Object], default: () => '', },\n inputClass: { type: [String, Array, Object], default: () => {return ''}, },\n divInputClass: { type: [String, Array, Object], default: () => {return ''}, },\n rootStyle: { type: [String, Array, Object], default: () => {return ''}, },\n dropdownStyle: { type: [String, Array, Object], default: () => {return ''}, },\n listStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputId: { type: [String, Array, Object], default: () => {return ''}, },\n Placeholder: { type: [String, Object, Function], default: () => {return ''}, },\n dropdownOptions: { \n type: Object, \n default: () => {\n return {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n tabindex: 0\n }\n } \n },\n inputOptions: { \n type: Object, \n default: () => { \n return {\n autocomplete: 'on',\n autofocus: false,\n id: '',\n maxlength: 25,\n name: 'telephone',\n placeholder: 'Enter a phone number',\n readonly: false,\n required: false,\n tabindex: 0,\n type: 'tel',\n styleClasses: ''\n }\n }\n },\n });\n\n const emits = defineEmits([\n 'update:modelValue', \n 'change',\n 'validate', \n 'country-changed', \n 'open', \n 'close', \n 'blur', \n 'focus', \n 'enter', \n 'space'\n ]);\n\n const counter = ref(5);\n const initCounter = ref(5);\n const message = reactive({\n action: null,\n amount: null,\n });\n const phone = ref(props.modelValue ? props.modelValue : '');\n const activeCountryCode = ref('');\n const open = ref(false);\n const finishMounted = ref(false);\n const selectedIndex = ref(null);\n const typeToFindInput = ref('');\n const typeToFindTimer = ref(null);\n const dropdownOpenDirection = ref('below');\n const parsedPlaceholder = ref(props.Placeholder !== '' ? props.Placeholder : props.inputOptions.placeholder);\n\n const rootElement = ref(null)\n const list = ref(null)\n const input = ref(null)\n\n // Lifecycle hooks\n onMounted(async () => {\n if (props.modelValue) {\n phone.value = props.modelValue;\n }\n\n cleanInvalidCharacters();\n\n initializeCountry()\n .then(() => {\n if (!phone.value\n && props.inputOptions?.showDialCode\n && activeCountryCode.value) {\n phone.value = `+${activeCountryCode.value}`;\n }\n emits('validate', phoneObject.value);\n })\n .catch(console.error)\n .then(() => {\n finishMounted.value = true;\n });\n });\n\n // Computed properties\n const activeCountry = computed(() => {\n return findCountry(activeCountryCode.value);\n });\n\n const activeCountryFlag = computed(() => {\n return activeCountry.value ? activeCountry.value.flag : null;\n });\n\n const parsedMode = computed(() => {\n if (props.mode === 'auto') {\n if (!phone.value || phone.value[0] !== '+') {\n return 'national';\n }\n return 'international';\n }\n if (!['international', 'national'].includes(props.mode)) {\n console.error('Invalid value of prop \"mode\"');\n return 'international';\n }\n return props.mode;\n });\n\n const filteredCountries = computed(() => {\n if (props.onlyCountries && props.onlyCountries.length) {\n return props.allCountries.filter(({ iso2 }) => props.onlyCountries.includes(iso2.toUpperCase()));\n }\n\n if (props.ignoredCountries && props.ignoredCountries.length) {\n return props.allCountries.filter(({ iso2 }) =>\n !props.ignoredCountries.includes(iso2.toUpperCase()) && !props.ignoredCountries.includes(iso2.toLowerCase()),\n );\n }\n\n return props.allCountries;\n });\n const sortedCountries = computed(() => {\n const preferredCountries = getCountries(props.preferredCountries)\n .map(country => ({ ...country, preferred: true }));\n\n return [...preferredCountries, ...filteredCountries.value];\n });\n\n const phoneObject = computed(() => {\n let result = {};\n\n if (phone.value?.[0] === '+') {\n result = parsePhoneNumberFromString(phone.value) || {};\n } else {\n result = parsePhoneNumberFromString(phone.value, activeCountryCode.value) || {};\n }\n\n const { metadata, ...phoneDetails } = result;\n\n let valid = result.isValid?.();\n let formatted = phone.value;\n\n if (valid) {\n formatted = result.format?.(parsedMode.value.toUpperCase(), { nationalPrefix: false });\n }\n\n if (result.country && (props.ignoredCountries.length || props.onlyCountries.length)) {\n if (!findCountry(result.country)) {\n valid = false;\n result = { ...result, country: null };\n }\n }\n\n return {\n ...phoneDetails,\n countryCode: result.country,\n valid,\n country: activeCountry.value,\n formatted,\n };\n });\n\n const classes = computed(() => {\n return phoneObject.value.valid === true ? props.goodClass : \n phoneObject.value.valid === false ? props.badClass : undefined;\n });\n\n const styles = computed(() => {\n return phoneObject.value.valid === true ? props.goodStyle : \n phoneObject.value.valid === false ? props.badStyle : undefined;\n });\n\n const Iclasses = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputClass : \n phoneObject.value.valid === false ? props.badInputClass : undefined;\n });\n\n const Istyles = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputStyle : \n phoneObject.value.valid === false ? props.badInputStyle : undefined;\n });\n // ///////////\n // Watchers\n // ///////////\n watch(activeCountry, (newValue, oldValue) => {\n if (!newValue && oldValue?.iso2) {\n activeCountryCode.value = oldValue.iso2;\n return;\n }\n if (newValue?.iso2) {\n emits('country-changed', newValue);\n resetPlaceholder();\n }\n });\n\n // Следим за изменениями countryCode в phoneObject\n watch(() => phoneObject.value.countryCode, (newValue) => {\n activeCountryCode.value = newValue;\n });\n\n // Следим за изменениями валидности phoneObject\n watch(() => phoneObject.value.valid, () => {\n emits('validate', phoneObject.value);\n });\n\n // Следим за изменениями отформатированного номера в phoneObject\n watch(() => phoneObject.value.formatted, (newValue) => {\n if (!props.autoFormat || props.customValidate) {\n return;\n }\n emitInput(newValue);\n\n nextTick(() => {\n if (newValue && !props.modelValue) {\n phone.value = newValue;\n }\n });\n });\n\n // Следим за изменениями placeholder в inputOptions\n watch(() => props.inputOptions.placeholder, () => {\n resetPlaceholder();\n });\n\n // Следим за внешними изменениями значения (например, через v-model)\n watch(() => props.modelValue, (newValue, oldValue) => {\n if (!testCharacters()) {\n nextTick(() => {\n phone.value = oldValue;\n onInput();\n });\n } else {\n phone.value = newValue;\n }\n });\n\n // Следим за состоянием открытия/закрытия dropdown\n watch(open, (isDropdownOpened) => {\n if (isDropdownOpened) {\n setDropdownPosition();\n emits('open');\n } else {\n emits('close');\n }\n });\n\n // Methods\n function getCountry() {\n return fetch('https://ip2c.org/s')\n .then((response) => response.text())\n .then((response) => {\n const result = (response || '').toString();\n\n if (!result || result[0] !== '1') {\n throw new Error('unable to fetch the country');\n }\n\n return result.substr(2, 2);\n });\n }\n \n function setCaretPosition(ctrl, pos) {\n // Modern browsers\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\n\n // IE8 and below\n } else if (ctrl.createTextRange) {\n const range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n\n function resetPlaceholder() {\n parsedPlaceholder.value = props.inputOptions.placeholder;\n }\n function initializeCountry() {\n return new Promise((resolve) => {\n if (phone.value?.[0] === '+') { resolve(); return; }\n if (props.defaultCountry) { choose(props.defaultCountry); resolve(); return; }\n const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];\n if (props.autoDefaultCountry) {\n getCountry()\n .then((res) => { choose(res || activeCountryCode.value); })\n .catch((error) => { console.warn(error); choose(fallbackCountry); })\n .finally(() => { resolve(); });\n } else {\n choose(fallbackCountry);\n resolve();\n }\n });\n }\n\n function getCountries(list = []) {\n return list.map((countryCode) => findCountry(countryCode)).filter(Boolean);\n }\n\n function findCountry(iso = '') {\n return filteredCountries.value.find((country) => country.iso2 === iso.toUpperCase());\n }\n\n function getItemClass(index, iso2) {\n const highlighted = selectedIndex.value === index;\n const lastPreferred = index === props.preferredCountries.length - 1;\n const preferred = props.preferredCountries.some((c) => c.toUpperCase() === iso2);\n return { highlighted, 'last-preferred': lastPreferred, preferred };\n }\n\n function choose(country) {\n let parsedCountry = typeof country === 'string' ? findCountry(country) : country;\n if (!parsedCountry) return;\n \n if (phone.value?.[0] === '+' && parsedCountry.iso2 && phoneObject.value.nationalNumber) {\n activeCountryCode.value = parsedCountry.iso2;\n phone.value = parsePhoneNumberFromString(phoneObject.value.nationalNumber, parsedCountry.iso2).formatInternational();\n return;\n }\n\n if (props.inputOptions?.showDialCode && parsedCountry) {\n phone.value = `+${parsedCountry.dialCode}`;\n return;\n }\n\n activeCountryCode.value = parsedCountry.iso2;\n emitInput(phone.value);\n }\n\n function cleanInvalidCharacters() {\n const currentPhone = phone.value;\n\n if (props.validCharactersOnly) {\n const results = phone.value.match(/[()\\-+0-9\\s]*/g);\n phone.value = results.join('');\n }\n\n if (props.customValidate && props.customValidate instanceof RegExp) {\n const results = phone.value.match(props.customValidate);\n phone.value = results ? results.join('') : '';\n }\n\n if (currentPhone !== phone.value) {\n emitInput(phone.value);\n }\n }\n\n function testCharacters() {\n if (props.validCharactersOnly) {\n const result = /^[()\\-+0-9\\s]*$/.test(phone.value);\n if (!result) return false;\n }\n if (props.customValidate) {\n return testCustomValidate();\n }\n return true;\n }\n\n function testCustomValidate() {\n return props.customValidate instanceof RegExp ? props.customValidate.test(phone.value) : false;\n }\n\n function onInput() {\n input.value.setCustomValidity(phoneObject.valid ? '' : props.invalidMsg);\n\n emitInput(phone.value);\n }\n\n function emitInput(value) {\n emits('update:modelValue', value);\n\n\n\n if (phoneObject.value.valid) { \n emits('change', phoneObject.value.number);\n emits('country', phoneObject.value.number);\n } else {\n emits('country', null);\n }\n }\n\n function onBlur() {\n emits('blur');\n }\n\n function onFocus() {\n setCaretPosition(input.value, phone.value.length);\n emits('focus');\n }\n\n function onEnter() {\n emits('enter');\n }\n\n function onSpace() {\n emits('space');\n }\n\n function focus() {\n input.value.focus();\n }\n\n function toggleDropdown() {\n if (props.disabled) return;\n open.value = !open.value;\n }\n\n function clickedOutside() {\n open.value = false;\n }\n\n function keyboardNav(e) {\n if (e.keyCode === 40) { // down arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? 0 : Math.min(sortedCountries.value.length - 1, selectedIndex.value + 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight + selEle.clientHeight;\n }\n });\n } else if (e.keyCode === 38) { // up arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? sortedCountries.value.length - 1 : Math.max(0, selectedIndex.value - 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop < list.value.scrollTop) {\n list.value.scrollTop = selEle.offsetTop;\n }\n });\n } else if (e.keyCode === 13) { // enter key\n e.preventDefault();\n if (selectedIndex.value !== null) {\n choose(sortedCountries.value[selectedIndex.value]);\n }\n open.value = !open.value;\n } else { // typing a country's name\n typeToFindInput.value += e.key;\n clearTimeout(typeToFindTimer);\n typeToFindTimer = setTimeout(() => {\n typeToFindInput.value = '';\n }, 700);\n nextTick(() => {\n const typedCountryI = sortedCountries.value.slice(props.preferredCountries.length).findIndex((c) => c.name.toLowerCase().startsWith(typeToFindInput.value));\n if (typedCountryI >= 0) {\n selectedIndex.value = props.preferredCountries.length + typedCountryI;\n const selEle = list.value.children[selectedIndex.value];\n const needToScroll = selEle.offsetTop < list.value.scrollTop || selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight;\n if (needToScroll) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight / 2;\n }\n }\n });\n }\n }\n\n function reset() {\n selectedIndex.value = sortedCountries.value.map(c => c.iso2).indexOf(activeCountryCode.value);\n open.value = false;\n }\n\n function setDropdownPosition() {\n const spaceBelow = window.innerHeight - rootElement.value.getBoundingClientRect().bottom;\n const hasEnoughSpaceBelow = spaceBelow > 200;\n dropdownOpenDirection.value = hasEnoughSpaceBelow ? 'below' : 'above';\n }\n</script>\n\n<style lang=\"scss\">\n .vue3-reactive-tel-input{\n display:flex\n }\n .vue3-reactive-tel-input.disabled .dropdown,.vue3-reactive-tel-input.disabled .selection,.vue3-reactive-tel-input.disabled input{\n cursor:no-drop\n }\n .vti__dropdown{\n display:flex;\n flex-direction:column;\n align-content:center;\n justify-content:center;\n position:relative;\n padding:0.5rem;\n cursor:pointer\n }\n .vti__dropdown.show{\n max-height:300px;\n overflow:scroll\n }\n .vti__dropdown-list{\n z-index:1;\n padding:0;\n margin:0;\n text-align:left;\n list-style:none;\n max-height:200px;\n overflow-y:scroll;\n position:absolute;\n left:-1px;\n background-color:#fff;\n width:fit-content\n }\n .vti__dropdown-list.below{\n top:33px\n }\n .vti__dropdown-list.above{\n top:auto;\n bottom:100%\n }\n .vti__dropdown-arrow{\n transform:scaleY(.5);\n display:inline-block;\n color:#666\n }\n .vti__dropdown-item{\n cursor:pointer;\n padding:4px 15px\n }\n .vti__dropdown-item.last-preferred{\n border-bottom:1px solid #cacaca\n }\n .vti__dropdown-item .vti__flag{\n display:inline-block;\n margin-right:5px\n }\n .vti__input{\n color: inherit;\n border:none;\n border-radius:0 2px 2px 0;\n width:100%;\n outline:0;\n padding-left:7px\n }\n</style>"],"names":["clickOutside","ref","reactive","onMounted","computed","parsePhoneNumberFromString","watch","nextTick","list"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPhone.vue.js","sources":["../../../../../src/components/FieldPhone/FieldPhone.vue"],"sourcesContent":["<template>\n <div \n :class=\"[\n rootClass, \n classes,\n $attrs.class, \n { 'bg-fourth-nano': validation }, \n { disabled: disabled }\n ]\" \n :style=\"[\n rootStyle, \n styles\n ]\" \n ref=\"rootElement\"\n class=\"vue3-reactive-tel-input\"\n >\n <div\n v-click-outside=\"clickedOutside\"\n :class=\"['vti__dropdown', { open: open }]\"\n :style=\"[dropdownStyle]\"\n :tabindex=\"dropdownOptions.tabindex\"\n @keydown=\"keyboardNav\"\n @click=\"toggleDropdown\"\n @keydown.esc=\"reset\"\n class=\"br-solid br-black-transp br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-medium vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n <span v-if=\"dropdownOptions.showDialCodeInSelection\" class=\"vti__country-code\">\n +{{ activeCountry && activeCountry.dialCode }}\n </span>\n <!-- <slot name=\"arrow-icon\" :open=\"open\"> -->\n <!-- <span class=\"vti__dropdown-arrow\">{{ open ? \"▲\" : \"▼\" }}</span> -->\n <!-- </slot> -->\n </span>\n <ul \n ref=\"list\" \n class=\"bs-black radius-small vti__dropdown-list\"\n v-show=\"open\" \n :class=\"dropdownOpenDirection\"\n :style=\"[listStyle]\"\n \n >\n <li\n v-for=\"(pb, index) in sortedCountries\"\n class=\"flex-nowrap flex w-max\"\n :class=\"['vti__dropdown-item', getItemClass(index, pb.iso2)]\"\n :key=\"pb.iso2 + (pb.preferred ? '-preferred' : '')\"\n @click=\"choose(pb)\"\n @mousemove=\"selectedIndex = index\"\n >\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"pb.flag\" class=\"mn-r-thin\"/>\n <strong>{{ pb.name }}</strong>\n <span v-if=\"dropdownOptions.showDialCodeInList\"> +{{ pb.dialCode }} </span>\n </li>\n </ul>\n </div>\n <!-- <div :class=\"[divInputClass]\" > -->\n <input\n v-model=\"phone\"\n inputmode=\"numeric\" \n pattern=\"\\d*\"\n ref=\"input\"\n :type=\"inputOptions.type\"\n :autocomplete=\"inputOptions.autocomplete\"\n :autofocus=\"inputOptions.autofocus\"\n :class=\"['vti__input', inputOptions.styleClasses, inputClass, Iclasses]\"\n :style=\"[inputStyle, Istyles]\"\n :disabled=\"disabled\"\n :id=\"inputId !== ''? inputId : inputOptions.id\"\n :maxlength=\"inputOptions.maxlength\"\n :name=\"inputId !== ''? inputId : inputOptions.name\"\n :placeholder=\"parsedPlaceholder\"\n :readonly=\"inputOptions.readonly\"\n :required=\"inputOptions.required\"\n :tabindex=\"inputOptions.tabindex\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keyup.enter=\"onEnter\"\n @keyup.space=\"onSpace\"\n />\n <slot></slot> <!-- slot outlet -->\n <!-- </div> -->\n\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n\n\n<script setup>\n import { ref, reactive, watch, computed, onMounted, nextTick } from 'vue';\n import { parsePhoneNumberFromString } from 'libphonenumber-js';\n\n import clickOutside from './click-outside';\n import allCountries from './all-countries';\n\n let vClickOutside = clickOutside\n\n const props = defineProps({\n modelValue: { type: String, default: '',},\n badClass: { type: [String, Array, Object], default: '', },\n goodClass: { type: [String, Array, Object], default: '', },\n badStyle: { type: [String, Array, Object], default: '', },\n goodStyle: { type: [String, Array, Object], default: '', },\n badInputClass: { type: [String, Array, Object], default: '', },\n goodInputClass: { type: [String, Array, Object], default: '', },\n badInputStyle: { type: [String, Array, Object], default: '', },\n goodInputStyle: { type: [String, Array, Object], default: '', },\n allCountries: { type: Array, default: () => allCountries, },\n autoFormat: { type: Boolean, default: () => true, },\n validation: { type: [Boolean, Object], default: false, },\n customValidate: { type: [Boolean, RegExp], default: () => false, },\n defaultCountry: { type: String, default: () => '', },\n disabled: { type: Boolean, default: () => false, },\n autoDefaultCountry: { type: Boolean, default: () => true },\n ignoredCountries: { type: Array, default: () => [], },\n invalidMsg: { type: String, default: () => '', },\n mode: { type: String, default: () => 'auto', },\n onlyCountries: { type: Array, default: () => [], },\n preferredCountries: { type: Array, default: () => [], },\n validCharactersOnly: { type: Boolean, default: () => false, },\n rootClass: { type: [String, Array, Object], default: () => '', },\n inputClass: { type: [String, Array, Object], default: () => {return ''}, },\n divInputClass: { type: [String, Array, Object], default: () => {return ''}, },\n rootStyle: { type: [String, Array, Object], default: () => {return ''}, },\n dropdownStyle: { type: [String, Array, Object], default: () => {return ''}, },\n listStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputId: { type: [String, Array, Object], default: () => {return ''}, },\n Placeholder: { type: [String, Object, Function], default: () => {return ''}, },\n dropdownOptions: { \n type: Object, \n default: () => {\n return {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n tabindex: 0\n }\n } \n },\n inputOptions: { \n type: Object, \n default: () => { \n return {\n autocomplete: 'on',\n autofocus: false,\n id: '',\n maxlength: 25,\n name: 'telephone',\n placeholder: 'Enter a phone number',\n readonly: false,\n required: false,\n tabindex: 0,\n type: 'tel',\n styleClasses: ''\n }\n }\n },\n });\n\n const emits = defineEmits([\n 'update:modelValue', \n 'change',\n 'validate', \n 'country-changed', \n 'open', \n 'close', \n 'blur', \n 'focus', \n 'enter', \n 'space'\n ]);\n\n const counter = ref(5);\n const initCounter = ref(5);\n const message = reactive({\n action: null,\n amount: null,\n });\n const phone = ref(props.modelValue ? props.modelValue : '');\n const activeCountryCode = ref('');\n const open = ref(false);\n const finishMounted = ref(false);\n const selectedIndex = ref(null);\n const typeToFindInput = ref('');\n const typeToFindTimer = ref(null);\n const dropdownOpenDirection = ref('below');\n const parsedPlaceholder = ref(props.Placeholder !== '' ? props.Placeholder : props.inputOptions.placeholder);\n\n const rootElement = ref(null)\n const list = ref(null)\n const input = ref(null)\n\n // Lifecycle hooks\n onMounted(async () => {\n if (props.modelValue) {\n phone.value = props.modelValue;\n }\n\n cleanInvalidCharacters();\n\n initializeCountry()\n .then(() => {\n if (!phone.value\n && props.inputOptions?.showDialCode\n && activeCountryCode.value) {\n phone.value = `+${activeCountryCode.value}`;\n }\n emits('validate', phoneObject.value);\n })\n .catch(console.error)\n .then(() => {\n finishMounted.value = true;\n });\n });\n\n // Computed properties\n const activeCountry = computed(() => {\n return findCountry(activeCountryCode.value);\n });\n\n const activeCountryFlag = computed(() => {\n return activeCountry.value ? activeCountry.value.flag : null;\n });\n\n const parsedMode = computed(() => {\n if (props.mode === 'auto') {\n if (!phone.value || phone.value[0] !== '+') {\n return 'national';\n }\n return 'international';\n }\n if (!['international', 'national'].includes(props.mode)) {\n console.error('Invalid value of prop \"mode\"');\n return 'international';\n }\n return props.mode;\n });\n\n const filteredCountries = computed(() => {\n if (props.onlyCountries && props.onlyCountries.length) {\n return props.allCountries.filter(({ iso2 }) => props.onlyCountries.includes(iso2.toUpperCase()));\n }\n\n if (props.ignoredCountries && props.ignoredCountries.length) {\n return props.allCountries.filter(({ iso2 }) =>\n !props.ignoredCountries.includes(iso2.toUpperCase()) && !props.ignoredCountries.includes(iso2.toLowerCase()),\n );\n }\n\n return props.allCountries;\n });\n const sortedCountries = computed(() => {\n const preferredCountries = getCountries(props.preferredCountries)\n .map(country => ({ ...country, preferred: true }));\n\n return [...preferredCountries, ...filteredCountries.value];\n });\n\n const phoneObject = computed(() => {\n let result = {};\n\n if (phone.value?.[0] === '+') {\n result = parsePhoneNumberFromString(phone.value) || {};\n } else {\n result = parsePhoneNumberFromString(phone.value, activeCountryCode.value) || {};\n }\n\n const { metadata, ...phoneDetails } = result;\n\n let valid = result.isValid?.();\n let formatted = phone.value;\n\n if (valid) {\n formatted = result.format?.(parsedMode.value.toUpperCase(), { nationalPrefix: false });\n }\n\n if (result.country && (props.ignoredCountries.length || props.onlyCountries.length)) {\n if (!findCountry(result.country)) {\n valid = false;\n result = { ...result, country: null };\n }\n }\n\n return {\n ...phoneDetails,\n countryCode: result.country,\n valid,\n country: activeCountry.value,\n formatted,\n };\n });\n\n const classes = computed(() => {\n return phoneObject.value.valid === true ? props.goodClass : \n phoneObject.value.valid === false ? props.badClass : undefined;\n });\n\n const styles = computed(() => {\n return phoneObject.value.valid === true ? props.goodStyle : \n phoneObject.value.valid === false ? props.badStyle : undefined;\n });\n\n const Iclasses = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputClass : \n phoneObject.value.valid === false ? props.badInputClass : undefined;\n });\n\n const Istyles = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputStyle : \n phoneObject.value.valid === false ? props.badInputStyle : undefined;\n });\n // ///////////\n // Watchers\n // ///////////\n watch(activeCountry, (newValue, oldValue) => {\n if (!newValue && oldValue?.iso2) {\n activeCountryCode.value = oldValue.iso2;\n return;\n }\n if (newValue?.iso2) {\n emits('country-changed', newValue);\n resetPlaceholder();\n }\n });\n\n // Следим за изменениями countryCode в phoneObject\n watch(() => phoneObject.value.countryCode, (newValue) => {\n activeCountryCode.value = newValue;\n });\n\n // Следим за изменениями валидности phoneObject\n watch(() => phoneObject.value.valid, () => {\n emits('validate', phoneObject.value);\n });\n\n // Следим за изменениями отформатированного номера в phoneObject\n watch(() => phoneObject.value.formatted, (newValue) => {\n if (!props.autoFormat || props.customValidate) {\n return;\n }\n emitInput(newValue);\n\n nextTick(() => {\n if (newValue && !props.modelValue) {\n phone.value = newValue;\n }\n });\n });\n\n // Следим за изменениями placeholder в inputOptions\n watch(() => props.inputOptions.placeholder, () => {\n resetPlaceholder();\n });\n\n // Следим за внешними изменениями значения (например, через v-model)\n watch(() => props.modelValue, (newValue, oldValue) => {\n if (!testCharacters()) {\n nextTick(() => {\n phone.value = oldValue;\n onInput();\n });\n } else {\n phone.value = newValue;\n }\n });\n\n // Следим за состоянием открытия/закрытия dropdown\n watch(open, (isDropdownOpened) => {\n if (isDropdownOpened) {\n setDropdownPosition();\n emits('open');\n } else {\n emits('close');\n }\n });\n\n // Methods\n function getCountry() {\n return fetch('https://ip2c.org/s')\n .then((response) => response.text())\n .then((response) => {\n const result = (response || '').toString();\n\n if (!result || result[0] !== '1') {\n throw new Error('unable to fetch the country');\n }\n\n return result.substr(2, 2);\n });\n }\n \n function setCaretPosition(ctrl, pos) {\n // Modern browsers\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\n\n // IE8 and below\n } else if (ctrl.createTextRange) {\n const range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n\n function resetPlaceholder() {\n parsedPlaceholder.value = props.inputOptions.placeholder;\n }\n function initializeCountry() {\n return new Promise((resolve) => {\n if (phone.value?.[0] === '+') { resolve(); return; }\n if (props.defaultCountry) { choose(props.defaultCountry); resolve(); return; }\n const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];\n if (props.autoDefaultCountry) {\n getCountry()\n .then((res) => { choose(res || activeCountryCode.value); })\n .catch((error) => { console.warn(error); choose(fallbackCountry); })\n .finally(() => { resolve(); });\n } else {\n choose(fallbackCountry);\n resolve();\n }\n });\n }\n\n function getCountries(list = []) {\n return list.map((countryCode) => findCountry(countryCode)).filter(Boolean);\n }\n\n function findCountry(iso = '') {\n return filteredCountries.value.find((country) => country.iso2 === iso.toUpperCase());\n }\n\n function getItemClass(index, iso2) {\n const highlighted = selectedIndex.value === index;\n const lastPreferred = index === props.preferredCountries.length - 1;\n const preferred = props.preferredCountries.some((c) => c.toUpperCase() === iso2);\n return { highlighted, 'last-preferred': lastPreferred, preferred };\n }\n\n function choose(country) {\n let parsedCountry = typeof country === 'string' ? findCountry(country) : country;\n if (!parsedCountry) return;\n \n if (phone.value?.[0] === '+' && parsedCountry.iso2 && phoneObject.value.nationalNumber) {\n activeCountryCode.value = parsedCountry.iso2;\n phone.value = parsePhoneNumberFromString(phoneObject.value.nationalNumber, parsedCountry.iso2).formatInternational();\n return;\n }\n\n if (props.inputOptions?.showDialCode && parsedCountry) {\n phone.value = `+${parsedCountry.dialCode}`;\n return;\n }\n\n activeCountryCode.value = parsedCountry.iso2;\n emitInput(phone.value);\n }\n\n function cleanInvalidCharacters() {\n const currentPhone = phone.value;\n\n if (props.validCharactersOnly) {\n const results = phone.value.match(/[()\\-+0-9\\s]*/g);\n phone.value = results.join('');\n }\n\n if (props.customValidate && props.customValidate instanceof RegExp) {\n const results = phone.value.match(props.customValidate);\n phone.value = results ? results.join('') : '';\n }\n\n if (currentPhone !== phone.value) {\n emitInput(phone.value);\n }\n }\n\n function testCharacters() {\n if (props.validCharactersOnly) {\n const result = /^[()\\-+0-9\\s]*$/.test(phone.value);\n if (!result) return false;\n }\n if (props.customValidate) {\n return testCustomValidate();\n }\n return true;\n }\n\n function testCustomValidate() {\n return props.customValidate instanceof RegExp ? props.customValidate.test(phone.value) : false;\n }\n\n function onInput() {\n input.value.setCustomValidity(phoneObject.valid ? '' : props.invalidMsg);\n\n emitInput(phone.value);\n }\n\n function emitInput(value) {\n emits('update:modelValue', value);\n\n\n\n if (phoneObject.value.valid) { \n emits('change', phoneObject.value.number);\n emits('country', phoneObject.value.number);\n } else {\n emits('country', null);\n }\n }\n\n function onBlur() {\n emits('blur');\n }\n\n function onFocus() {\n setCaretPosition(input.value, phone.value.length);\n emits('focus');\n }\n\n function onEnter() {\n emits('enter');\n }\n\n function onSpace() {\n emits('space');\n }\n\n function focus() {\n input.value.focus();\n }\n\n function toggleDropdown() {\n if (props.disabled) return;\n open.value = !open.value;\n }\n\n function clickedOutside() {\n open.value = false;\n }\n\n function keyboardNav(e) {\n if (e.keyCode === 40) { // down arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? 0 : Math.min(sortedCountries.value.length - 1, selectedIndex.value + 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight + selEle.clientHeight;\n }\n });\n } else if (e.keyCode === 38) { // up arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? sortedCountries.value.length - 1 : Math.max(0, selectedIndex.value - 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop < list.value.scrollTop) {\n list.value.scrollTop = selEle.offsetTop;\n }\n });\n } else if (e.keyCode === 13) { // enter key\n e.preventDefault();\n if (selectedIndex.value !== null) {\n choose(sortedCountries.value[selectedIndex.value]);\n }\n open.value = !open.value;\n } else { // typing a country's name\n typeToFindInput.value += e.key;\n clearTimeout(typeToFindTimer);\n typeToFindTimer = setTimeout(() => {\n typeToFindInput.value = '';\n }, 700);\n nextTick(() => {\n const typedCountryI = sortedCountries.value.slice(props.preferredCountries.length).findIndex((c) => c.name.toLowerCase().startsWith(typeToFindInput.value));\n if (typedCountryI >= 0) {\n selectedIndex.value = props.preferredCountries.length + typedCountryI;\n const selEle = list.value.children[selectedIndex.value];\n const needToScroll = selEle.offsetTop < list.value.scrollTop || selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight;\n if (needToScroll) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight / 2;\n }\n }\n });\n }\n }\n\n function reset() {\n selectedIndex.value = sortedCountries.value.map(c => c.iso2).indexOf(activeCountryCode.value);\n open.value = false;\n }\n\n function setDropdownPosition() {\n const spaceBelow = window.innerHeight - rootElement.value.getBoundingClientRect().bottom;\n const hasEnoughSpaceBelow = spaceBelow > 200;\n dropdownOpenDirection.value = hasEnoughSpaceBelow ? 'below' : 'above';\n }\n</script>\n\n<style lang=\"scss\">\n .vue3-reactive-tel-input{\n display:flex\n }\n .vue3-reactive-tel-input.disabled .dropdown,.vue3-reactive-tel-input.disabled .selection,.vue3-reactive-tel-input.disabled input{\n cursor:no-drop\n }\n .vti__dropdown{\n display:flex;\n flex-direction:column;\n align-content:center;\n justify-content:center;\n position:relative;\n padding:2px;\n cursor:pointer\n }\n .vti__dropdown.show{\n max-height:300px;\n overflow:scroll\n }\n .vti__dropdown-list{\n z-index:1;\n padding:0;\n margin:0;\n text-align:left;\n list-style:none;\n max-height:200px;\n overflow-y:scroll;\n position:absolute;\n left:-1px;\n background-color:#fff;\n width:fit-content\n }\n .vti__dropdown-list.below{\n top:33px\n }\n .vti__dropdown-list.above{\n top:auto;\n bottom:100%\n }\n .vti__dropdown-arrow{\n transform:scaleY(.5);\n display:inline-block;\n color:#666\n }\n .vti__dropdown-item{\n cursor:pointer;\n padding:4px 15px\n }\n .vti__dropdown-item.last-preferred{\n border-bottom:1px solid #cacaca\n }\n .vti__dropdown-item .vti__flag{\n display:inline-block;\n margin-right:5px\n }\n .vti__input{\n color: inherit;\n border:none;\n border-radius:0 2px 2px 0;\n width:100%;\n outline:0;\n padding-left:7px\n }\n</style>"],"names":["parsePhoneNumberFromString","list"],"mappings":"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"}
1
+ {"version":3,"file":"FieldPhone.vue.js","sources":["../../../../../src/components/FieldPhone/FieldPhone.vue"],"sourcesContent":["<template>\n <div \n :class=\"[\n rootClass, \n classes,\n $attrs.class, \n { 'bg-fourth-nano': validation }, \n { disabled: disabled }\n ]\" \n :style=\"[\n rootStyle, \n styles\n ]\" \n ref=\"rootElement\"\n class=\"vue3-reactive-tel-input\"\n >\n <div\n v-click-outside=\"clickedOutside\"\n :class=\"['vti__dropdown', { open: open }]\"\n :style=\"[dropdownStyle]\"\n :tabindex=\"dropdownOptions.tabindex\"\n @keydown=\"keyboardNav\"\n @click=\"toggleDropdown\"\n @keydown.esc=\"reset\"\n class=\"br-solid br-black-transp br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-medium vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n <span v-if=\"dropdownOptions.showDialCodeInSelection\" class=\"vti__country-code\">\n +{{ activeCountry && activeCountry.dialCode }}\n </span>\n <!-- <slot name=\"arrow-icon\" :open=\"open\"> -->\n <!-- <span class=\"vti__dropdown-arrow\">{{ open ? \"▲\" : \"▼\" }}</span> -->\n <!-- </slot> -->\n </span>\n <ul \n ref=\"list\" \n class=\"bs-black radius-small vti__dropdown-list\"\n v-show=\"open\" \n :class=\"dropdownOpenDirection\"\n :style=\"[listStyle]\"\n \n >\n <li\n v-for=\"(pb, index) in sortedCountries\"\n class=\"flex-nowrap flex w-max\"\n :class=\"['vti__dropdown-item', getItemClass(index, pb.iso2)]\"\n :key=\"pb.iso2 + (pb.preferred ? '-preferred' : '')\"\n @click=\"choose(pb)\"\n @mousemove=\"selectedIndex = index\"\n >\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"pb.flag\" class=\"mn-r-thin\"/>\n <strong>{{ pb.name }}</strong>\n <span v-if=\"dropdownOptions.showDialCodeInList\"> +{{ pb.dialCode }} </span>\n </li>\n </ul>\n </div>\n <!-- <div :class=\"[divInputClass]\" > -->\n <input\n v-model=\"phone\"\n inputmode=\"numeric\" \n pattern=\"\\d*\"\n ref=\"input\"\n :type=\"inputOptions.type\"\n :autocomplete=\"inputOptions.autocomplete\"\n :autofocus=\"inputOptions.autofocus\"\n :class=\"['vti__input', inputOptions.styleClasses, inputClass, Iclasses]\"\n :style=\"[inputStyle, Istyles]\"\n :disabled=\"disabled\"\n :id=\"inputId !== ''? inputId : inputOptions.id\"\n :maxlength=\"inputOptions.maxlength\"\n :name=\"inputId !== ''? inputId : inputOptions.name\"\n :placeholder=\"parsedPlaceholder\"\n :readonly=\"inputOptions.readonly\"\n :required=\"inputOptions.required\"\n :tabindex=\"inputOptions.tabindex\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keyup.enter=\"onEnter\"\n @keyup.space=\"onSpace\"\n />\n <slot></slot> <!-- slot outlet -->\n <!-- </div> -->\n\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n\n\n<script setup>\n import { ref, reactive, watch, computed, onMounted, nextTick } from 'vue';\n import { parsePhoneNumberFromString } from 'libphonenumber-js';\n\n import clickOutside from './click-outside';\n import allCountries from './all-countries';\n\n let vClickOutside = clickOutside\n\n const props = defineProps({\n modelValue: { type: String, default: '',},\n badClass: { type: [String, Array, Object], default: '', },\n goodClass: { type: [String, Array, Object], default: '', },\n badStyle: { type: [String, Array, Object], default: '', },\n goodStyle: { type: [String, Array, Object], default: '', },\n badInputClass: { type: [String, Array, Object], default: '', },\n goodInputClass: { type: [String, Array, Object], default: '', },\n badInputStyle: { type: [String, Array, Object], default: '', },\n goodInputStyle: { type: [String, Array, Object], default: '', },\n allCountries: { type: Array, default: () => allCountries, },\n autoFormat: { type: Boolean, default: () => true, },\n validation: { type: [Boolean, Object], default: false, },\n customValidate: { type: [Boolean, RegExp], default: () => false, },\n defaultCountry: { type: String, default: () => '', },\n disabled: { type: Boolean, default: () => false, },\n autoDefaultCountry: { type: Boolean, default: () => true },\n ignoredCountries: { type: Array, default: () => [], },\n invalidMsg: { type: String, default: () => '', },\n mode: { type: String, default: () => 'auto', },\n onlyCountries: { type: Array, default: () => [], },\n preferredCountries: { type: Array, default: () => [], },\n validCharactersOnly: { type: Boolean, default: () => false, },\n rootClass: { type: [String, Array, Object], default: () => '', },\n inputClass: { type: [String, Array, Object], default: () => {return ''}, },\n divInputClass: { type: [String, Array, Object], default: () => {return ''}, },\n rootStyle: { type: [String, Array, Object], default: () => {return ''}, },\n dropdownStyle: { type: [String, Array, Object], default: () => {return ''}, },\n listStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputStyle: { type: [String, Array, Object], default: () => {return ''}, },\n inputId: { type: [String, Array, Object], default: () => {return ''}, },\n Placeholder: { type: [String, Object, Function], default: () => {return ''}, },\n dropdownOptions: { \n type: Object, \n default: () => {\n return {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n tabindex: 0\n }\n } \n },\n inputOptions: { \n type: Object, \n default: () => { \n return {\n autocomplete: 'on',\n autofocus: false,\n id: '',\n maxlength: 25,\n name: 'telephone',\n placeholder: 'Enter a phone number',\n readonly: false,\n required: false,\n tabindex: 0,\n type: 'tel',\n styleClasses: ''\n }\n }\n },\n });\n\n const emits = defineEmits([\n 'update:modelValue', \n 'change',\n 'validate', \n 'country-changed', \n 'open', \n 'close', \n 'blur', \n 'focus', \n 'enter', \n 'space'\n ]);\n\n const counter = ref(5);\n const initCounter = ref(5);\n const message = reactive({\n action: null,\n amount: null,\n });\n const phone = ref(props.modelValue ? props.modelValue : '');\n const activeCountryCode = ref('');\n const open = ref(false);\n const finishMounted = ref(false);\n const selectedIndex = ref(null);\n const typeToFindInput = ref('');\n const typeToFindTimer = ref(null);\n const dropdownOpenDirection = ref('below');\n const parsedPlaceholder = ref(props.Placeholder !== '' ? props.Placeholder : props.inputOptions.placeholder);\n\n const rootElement = ref(null)\n const list = ref(null)\n const input = ref(null)\n\n // Lifecycle hooks\n onMounted(async () => {\n if (props.modelValue) {\n phone.value = props.modelValue;\n }\n\n cleanInvalidCharacters();\n\n initializeCountry()\n .then(() => {\n if (!phone.value\n && props.inputOptions?.showDialCode\n && activeCountryCode.value) {\n phone.value = `+${activeCountryCode.value}`;\n }\n emits('validate', phoneObject.value);\n })\n .catch(console.error)\n .then(() => {\n finishMounted.value = true;\n });\n });\n\n // Computed properties\n const activeCountry = computed(() => {\n return findCountry(activeCountryCode.value);\n });\n\n const activeCountryFlag = computed(() => {\n return activeCountry.value ? activeCountry.value.flag : null;\n });\n\n const parsedMode = computed(() => {\n if (props.mode === 'auto') {\n if (!phone.value || phone.value[0] !== '+') {\n return 'national';\n }\n return 'international';\n }\n if (!['international', 'national'].includes(props.mode)) {\n console.error('Invalid value of prop \"mode\"');\n return 'international';\n }\n return props.mode;\n });\n\n const filteredCountries = computed(() => {\n if (props.onlyCountries && props.onlyCountries.length) {\n return props.allCountries.filter(({ iso2 }) => props.onlyCountries.includes(iso2.toUpperCase()));\n }\n\n if (props.ignoredCountries && props.ignoredCountries.length) {\n return props.allCountries.filter(({ iso2 }) =>\n !props.ignoredCountries.includes(iso2.toUpperCase()) && !props.ignoredCountries.includes(iso2.toLowerCase()),\n );\n }\n\n return props.allCountries;\n });\n const sortedCountries = computed(() => {\n const preferredCountries = getCountries(props.preferredCountries)\n .map(country => ({ ...country, preferred: true }));\n\n return [...preferredCountries, ...filteredCountries.value];\n });\n\n const phoneObject = computed(() => {\n let result = {};\n\n if (phone.value?.[0] === '+') {\n result = parsePhoneNumberFromString(phone.value) || {};\n } else {\n result = parsePhoneNumberFromString(phone.value, activeCountryCode.value) || {};\n }\n\n const { metadata, ...phoneDetails } = result;\n\n let valid = result.isValid?.();\n let formatted = phone.value;\n\n if (valid) {\n formatted = result.format?.(parsedMode.value.toUpperCase(), { nationalPrefix: false });\n }\n\n if (result.country && (props.ignoredCountries.length || props.onlyCountries.length)) {\n if (!findCountry(result.country)) {\n valid = false;\n result = { ...result, country: null };\n }\n }\n\n return {\n ...phoneDetails,\n countryCode: result.country,\n valid,\n country: activeCountry.value,\n formatted,\n };\n });\n\n const classes = computed(() => {\n return phoneObject.value.valid === true ? props.goodClass : \n phoneObject.value.valid === false ? props.badClass : undefined;\n });\n\n const styles = computed(() => {\n return phoneObject.value.valid === true ? props.goodStyle : \n phoneObject.value.valid === false ? props.badStyle : undefined;\n });\n\n const Iclasses = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputClass : \n phoneObject.value.valid === false ? props.badInputClass : undefined;\n });\n\n const Istyles = computed(() => {\n return phoneObject.value.valid === true ? props.goodInputStyle : \n phoneObject.value.valid === false ? props.badInputStyle : undefined;\n });\n // ///////////\n // Watchers\n // ///////////\n watch(activeCountry, (newValue, oldValue) => {\n if (!newValue && oldValue?.iso2) {\n activeCountryCode.value = oldValue.iso2;\n return;\n }\n if (newValue?.iso2) {\n emits('country-changed', newValue);\n resetPlaceholder();\n }\n });\n\n // Следим за изменениями countryCode в phoneObject\n watch(() => phoneObject.value.countryCode, (newValue) => {\n activeCountryCode.value = newValue;\n });\n\n // Следим за изменениями валидности phoneObject\n watch(() => phoneObject.value.valid, () => {\n emits('validate', phoneObject.value);\n });\n\n // Следим за изменениями отформатированного номера в phoneObject\n watch(() => phoneObject.value.formatted, (newValue) => {\n if (!props.autoFormat || props.customValidate) {\n return;\n }\n emitInput(newValue);\n\n nextTick(() => {\n if (newValue && !props.modelValue) {\n phone.value = newValue;\n }\n });\n });\n\n // Следим за изменениями placeholder в inputOptions\n watch(() => props.inputOptions.placeholder, () => {\n resetPlaceholder();\n });\n\n // Следим за внешними изменениями значения (например, через v-model)\n watch(() => props.modelValue, (newValue, oldValue) => {\n if (!testCharacters()) {\n nextTick(() => {\n phone.value = oldValue;\n onInput();\n });\n } else {\n phone.value = newValue;\n }\n });\n\n // Следим за состоянием открытия/закрытия dropdown\n watch(open, (isDropdownOpened) => {\n if (isDropdownOpened) {\n setDropdownPosition();\n emits('open');\n } else {\n emits('close');\n }\n });\n\n // Methods\n function getCountry() {\n return fetch('https://ip2c.org/s')\n .then((response) => response.text())\n .then((response) => {\n const result = (response || '').toString();\n\n if (!result || result[0] !== '1') {\n throw new Error('unable to fetch the country');\n }\n\n return result.substr(2, 2);\n });\n }\n \n function setCaretPosition(ctrl, pos) {\n // Modern browsers\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\n\n // IE8 and below\n } else if (ctrl.createTextRange) {\n const range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n\n function resetPlaceholder() {\n parsedPlaceholder.value = props.inputOptions.placeholder;\n }\n function initializeCountry() {\n return new Promise((resolve) => {\n if (phone.value?.[0] === '+') { resolve(); return; }\n if (props.defaultCountry) { choose(props.defaultCountry); resolve(); return; }\n const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];\n if (props.autoDefaultCountry) {\n getCountry()\n .then((res) => { choose(res || activeCountryCode.value); })\n .catch((error) => { console.warn(error); choose(fallbackCountry); })\n .finally(() => { resolve(); });\n } else {\n choose(fallbackCountry);\n resolve();\n }\n });\n }\n\n function getCountries(list = []) {\n return list.map((countryCode) => findCountry(countryCode)).filter(Boolean);\n }\n\n function findCountry(iso = '') {\n return filteredCountries.value.find((country) => country.iso2 === iso.toUpperCase());\n }\n\n function getItemClass(index, iso2) {\n const highlighted = selectedIndex.value === index;\n const lastPreferred = index === props.preferredCountries.length - 1;\n const preferred = props.preferredCountries.some((c) => c.toUpperCase() === iso2);\n return { highlighted, 'last-preferred': lastPreferred, preferred };\n }\n\n function choose(country) {\n let parsedCountry = typeof country === 'string' ? findCountry(country) : country;\n if (!parsedCountry) return;\n \n if (phone.value?.[0] === '+' && parsedCountry.iso2 && phoneObject.value.nationalNumber) {\n activeCountryCode.value = parsedCountry.iso2;\n phone.value = parsePhoneNumberFromString(phoneObject.value.nationalNumber, parsedCountry.iso2).formatInternational();\n return;\n }\n\n if (props.inputOptions?.showDialCode && parsedCountry) {\n phone.value = `+${parsedCountry.dialCode}`;\n return;\n }\n\n activeCountryCode.value = parsedCountry.iso2;\n emitInput(phone.value);\n }\n\n function cleanInvalidCharacters() {\n const currentPhone = phone.value;\n\n if (props.validCharactersOnly) {\n const results = phone.value.match(/[()\\-+0-9\\s]*/g);\n phone.value = results.join('');\n }\n\n if (props.customValidate && props.customValidate instanceof RegExp) {\n const results = phone.value.match(props.customValidate);\n phone.value = results ? results.join('') : '';\n }\n\n if (currentPhone !== phone.value) {\n emitInput(phone.value);\n }\n }\n\n function testCharacters() {\n if (props.validCharactersOnly) {\n const result = /^[()\\-+0-9\\s]*$/.test(phone.value);\n if (!result) return false;\n }\n if (props.customValidate) {\n return testCustomValidate();\n }\n return true;\n }\n\n function testCustomValidate() {\n return props.customValidate instanceof RegExp ? props.customValidate.test(phone.value) : false;\n }\n\n function onInput() {\n input.value.setCustomValidity(phoneObject.valid ? '' : props.invalidMsg);\n\n emitInput(phone.value);\n }\n\n function emitInput(value) {\n emits('update:modelValue', value);\n\n\n\n if (phoneObject.value.valid) { \n emits('change', phoneObject.value.number);\n emits('country', phoneObject.value.number);\n } else {\n emits('country', null);\n }\n }\n\n function onBlur() {\n emits('blur');\n }\n\n function onFocus() {\n setCaretPosition(input.value, phone.value.length);\n emits('focus');\n }\n\n function onEnter() {\n emits('enter');\n }\n\n function onSpace() {\n emits('space');\n }\n\n function focus() {\n input.value.focus();\n }\n\n function toggleDropdown() {\n if (props.disabled) return;\n open.value = !open.value;\n }\n\n function clickedOutside() {\n open.value = false;\n }\n\n function keyboardNav(e) {\n if (e.keyCode === 40) { // down arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? 0 : Math.min(sortedCountries.value.length - 1, selectedIndex.value + 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight + selEle.clientHeight;\n }\n });\n } else if (e.keyCode === 38) { // up arrow\n e.preventDefault();\n open.value = true;\n selectedIndex.value = selectedIndex.value === null ? sortedCountries.value.length - 1 : Math.max(0, selectedIndex.value - 1);\n nextTick(() => {\n const selEle = list.value.children[selectedIndex.value];\n if (selEle.offsetTop < list.value.scrollTop) {\n list.value.scrollTop = selEle.offsetTop;\n }\n });\n } else if (e.keyCode === 13) { // enter key\n e.preventDefault();\n if (selectedIndex.value !== null) {\n choose(sortedCountries.value[selectedIndex.value]);\n }\n open.value = !open.value;\n } else { // typing a country's name\n typeToFindInput.value += e.key;\n clearTimeout(typeToFindTimer);\n typeToFindTimer = setTimeout(() => {\n typeToFindInput.value = '';\n }, 700);\n nextTick(() => {\n const typedCountryI = sortedCountries.value.slice(props.preferredCountries.length).findIndex((c) => c.name.toLowerCase().startsWith(typeToFindInput.value));\n if (typedCountryI >= 0) {\n selectedIndex.value = props.preferredCountries.length + typedCountryI;\n const selEle = list.value.children[selectedIndex.value];\n const needToScroll = selEle.offsetTop < list.value.scrollTop || selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight;\n if (needToScroll) {\n list.value.scrollTop = selEle.offsetTop - list.value.clientHeight / 2;\n }\n }\n });\n }\n }\n\n function reset() {\n selectedIndex.value = sortedCountries.value.map(c => c.iso2).indexOf(activeCountryCode.value);\n open.value = false;\n }\n\n function setDropdownPosition() {\n const spaceBelow = window.innerHeight - rootElement.value.getBoundingClientRect().bottom;\n const hasEnoughSpaceBelow = spaceBelow > 200;\n dropdownOpenDirection.value = hasEnoughSpaceBelow ? 'below' : 'above';\n }\n</script>\n\n<style lang=\"scss\">\n .vue3-reactive-tel-input{\n display:flex\n }\n .vue3-reactive-tel-input.disabled .dropdown,.vue3-reactive-tel-input.disabled .selection,.vue3-reactive-tel-input.disabled input{\n cursor:no-drop\n }\n .vti__dropdown{\n display:flex;\n flex-direction:column;\n align-content:center;\n justify-content:center;\n position:relative;\n padding:0.5rem;\n cursor:pointer\n }\n .vti__dropdown.show{\n max-height:300px;\n overflow:scroll\n }\n .vti__dropdown-list{\n z-index:1;\n padding:0;\n margin:0;\n text-align:left;\n list-style:none;\n max-height:200px;\n overflow-y:scroll;\n position:absolute;\n left:-1px;\n background-color:#fff;\n width:fit-content\n }\n .vti__dropdown-list.below{\n top:33px\n }\n .vti__dropdown-list.above{\n top:auto;\n bottom:100%\n }\n .vti__dropdown-arrow{\n transform:scaleY(.5);\n display:inline-block;\n color:#666\n }\n .vti__dropdown-item{\n cursor:pointer;\n padding:4px 15px\n }\n .vti__dropdown-item.last-preferred{\n border-bottom:1px solid #cacaca\n }\n .vti__dropdown-item .vti__flag{\n display:inline-block;\n margin-right:5px\n }\n .vti__input{\n color: inherit;\n border:none;\n border-radius:0 2px 2px 0;\n width:100%;\n outline:0;\n padding-left:7px\n }\n</style>"],"names":["parsePhoneNumberFromString","list"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  ;/* empty css */
6
6
  ;/* empty css */
7
7
  ;/* empty css */
@@ -22,7 +22,7 @@ const _sfc_main = {
22
22
  return (_ctx, _cache) => {
23
23
  const _component_router_view = vue.resolveComponent("router-view");
24
24
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
25
- vue.createVNode(_component_router_view, { class: "pd-medium br-solid br-1px br-grey-transp-25 radius-big w-m-66r t-center" }, {
25
+ vue.createVNode(_component_router_view, { class: "pd-big w-m-66r t-center" }, {
26
26
  default: vue.withCtx(({ Component, route }) => [
27
27
  vue.createVNode(vue.Transition, {
28
28
  name: "scaleIn",
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.vue.cjs","sources":["../../../../../../../../src/modules/auth/views/components/layouts/Auth.vue"],"sourcesContent":["<template>\n <div \n \tclass=\"cols-2-1_2 gap-small pd-small bg-white\"\n >\n\n <router-view\n \tclass=\"pd-medium br-solid br-1px br-grey-transp-25 radius-big w-m-66r t-center\" \n \tv-slot=\"{ Component, route }\"\n >\n <transition \n \tname=\"scaleIn\" mode=\"out-in\"\n >\n <component \n \tref=\"page\" \n \t:key=\"route.path\" \n \t:localPosition=\"localPosition\" \n \t:is=\"Component\" \n />\n </transition>\n </router-view>\n\n <section class=\"w-100 desktop-only o-hidden radius-big bg-grad-main\">\n <!-- <SliderFeatures/> --> \n </section>\n </div>\n</template>\n\n<script setup>\n// Import components\nimport Tab from '@pf/src/components/Tab/Tab.vue'\nimport Field from '@pf/src/components/Field/Field.vue'\nimport Button from '@pf/src/components/Button/Button.vue'\n// Import blocks\nimport SliderFeatures from '@pf/src/modules/auth/views/components/sections/SliderFeatures.vue'\n// Import libs\nimport { computed, onMounted, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n// Import state\nimport * as auth from '@pf/src/modules/auth/views/store/auth'\n// Import validation\nimport * as inputsValidation from '@pf/src/modules/auth/views/validations/inputs.validation'\n\nconst phoneValidation = ref(null)\nconst passswordValidation = ref(null)\nconst emailValidation = ref(null)\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Accessing state\nconst tabAuth = ref('email')\n// Methods\nasync function onSubmit() {\n try {\n await inputsValidation.validateInputs(\n emailValidation,\n inputsValidation.validateEmail,\n auth.state.user.email,\n 'Некорректный email'\n )\n await inputsValidation.validateInputs(\n passswordValidation,\n inputsValidation.validatePassword,\n auth.state.user.password,\n 'Некорректный пароль'\n )\n } catch (error) {\n throw new Error\n }\n await auth.actions.login(auth.state.user, tabAuth.value)\n}\n\nfunction redirectTo() {\n router.push({ name: 'Account' })\n}\n</script>"],"names":["ref","useRoute","useRouter"],"mappings":";;;;;;;;;;;;;;;AA0CwBA,QAAG,IAAC,IAAI;AACJA,QAAG,IAAC,IAAI;AACZA,QAAG,IAAC,IAAI;AAElBC,cAAAA,SAAU;AACTC,cAAAA,UAAW;AAEVF,QAAG,IAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Auth.vue.cjs","sources":["../../../../../../../../src/modules/auth/views/components/layouts/Auth.vue"],"sourcesContent":["<template>\n <div \n \tclass=\"cols-2-1_2 gap-small pd-small bg-white\"\n >\n\n <router-view\n \tclass=\"pd-big w-m-66r t-center\" \n \tv-slot=\"{ Component, route }\"\n >\n <transition \n \tname=\"scaleIn\" mode=\"out-in\"\n >\n <component \n \tref=\"page\" \n \t:key=\"route.path\" \n \t:localPosition=\"localPosition\" \n \t:is=\"Component\" \n />\n </transition>\n </router-view>\n\n <section class=\"w-100 desktop-only o-hidden radius-big bg-grad-main\">\n <!-- <SliderFeatures/> --> \n </section>\n </div>\n</template>\n\n<script setup>\n// Import components\nimport Tab from '@pf/src/components/Tab/Tab.vue'\nimport Field from '@pf/src/components/Field/Field.vue'\nimport Button from '@pf/src/components/Button/Button.vue'\n// Import blocks\nimport SliderFeatures from '@pf/src/modules/auth/views/components/sections/SliderFeatures.vue'\n// Import libs\nimport { computed, onMounted, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n// Import state\nimport * as auth from '@pf/src/modules/auth/views/store/auth'\n// Import validation\nimport * as inputsValidation from '@pf/src/modules/auth/views/validations/inputs.validation'\n\nconst phoneValidation = ref(null)\nconst passswordValidation = ref(null)\nconst emailValidation = ref(null)\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Accessing state\nconst tabAuth = ref('email')\n// Methods\nasync function onSubmit() {\n try {\n await inputsValidation.validateInputs(\n emailValidation,\n inputsValidation.validateEmail,\n auth.state.user.email,\n 'Некорректный email'\n )\n await inputsValidation.validateInputs(\n passswordValidation,\n inputsValidation.validatePassword,\n auth.state.user.password,\n 'Некорректный пароль'\n )\n } catch (error) {\n throw new Error\n }\n await auth.actions.login(auth.state.user, tabAuth.value)\n}\n\nfunction redirectTo() {\n router.push({ name: 'Account' })\n}\n</script>"],"names":["ref","useRoute","useRouter"],"mappings":";;;;;;;;;;;;;;;AA0CwBA,QAAG,IAAC,IAAI;AACJA,QAAG,IAAC,IAAI;AACZA,QAAG,IAAC,IAAI;AAElBC,cAAAA,SAAU;AACTC,cAAAA,UAAW;AAEVF,QAAG,IAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, resolveComponent, openBlock, createElementBlock, createVNode, withCtx, Transition, createBlock, resolveDynamicComponent, createElementVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  /* empty css */
4
4
  /* empty css */
5
5
  /* empty css */
@@ -20,7 +20,7 @@ const _sfc_main = {
20
20
  return (_ctx, _cache) => {
21
21
  const _component_router_view = resolveComponent("router-view");
22
22
  return openBlock(), createElementBlock("div", _hoisted_1, [
23
- createVNode(_component_router_view, { class: "pd-medium br-solid br-1px br-grey-transp-25 radius-big w-m-66r t-center" }, {
23
+ createVNode(_component_router_view, { class: "pd-big w-m-66r t-center" }, {
24
24
  default: withCtx(({ Component, route }) => [
25
25
  createVNode(Transition, {
26
26
  name: "scaleIn",
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/layouts/Auth.vue"],"sourcesContent":["<template>\n <div \n \tclass=\"cols-2-1_2 gap-small pd-small bg-white\"\n >\n\n <router-view\n \tclass=\"pd-medium br-solid br-1px br-grey-transp-25 radius-big w-m-66r t-center\" \n \tv-slot=\"{ Component, route }\"\n >\n <transition \n \tname=\"scaleIn\" mode=\"out-in\"\n >\n <component \n \tref=\"page\" \n \t:key=\"route.path\" \n \t:localPosition=\"localPosition\" \n \t:is=\"Component\" \n />\n </transition>\n </router-view>\n\n <section class=\"w-100 desktop-only o-hidden radius-big bg-grad-main\">\n <!-- <SliderFeatures/> --> \n </section>\n </div>\n</template>\n\n<script setup>\n// Import components\nimport Tab from '@pf/src/components/Tab/Tab.vue'\nimport Field from '@pf/src/components/Field/Field.vue'\nimport Button from '@pf/src/components/Button/Button.vue'\n// Import blocks\nimport SliderFeatures from '@pf/src/modules/auth/views/components/sections/SliderFeatures.vue'\n// Import libs\nimport { computed, onMounted, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n// Import state\nimport * as auth from '@pf/src/modules/auth/views/store/auth'\n// Import validation\nimport * as inputsValidation from '@pf/src/modules/auth/views/validations/inputs.validation'\n\nconst phoneValidation = ref(null)\nconst passswordValidation = ref(null)\nconst emailValidation = ref(null)\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Accessing state\nconst tabAuth = ref('email')\n// Methods\nasync function onSubmit() {\n try {\n await inputsValidation.validateInputs(\n emailValidation,\n inputsValidation.validateEmail,\n auth.state.user.email,\n 'Некорректный email'\n )\n await inputsValidation.validateInputs(\n passswordValidation,\n inputsValidation.validatePassword,\n auth.state.user.password,\n 'Некорректный пароль'\n )\n } catch (error) {\n throw new Error\n }\n await auth.actions.login(auth.state.user, tabAuth.value)\n}\n\nfunction redirectTo() {\n router.push({ name: 'Account' })\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;AA0CwB,QAAI,IAAI;AACJ,QAAI,IAAI;AACZ,QAAI,IAAI;AAElB,aAAU;AACT,cAAW;AAEV,QAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Auth.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/layouts/Auth.vue"],"sourcesContent":["<template>\n <div \n \tclass=\"cols-2-1_2 gap-small pd-small bg-white\"\n >\n\n <router-view\n \tclass=\"pd-big w-m-66r t-center\" \n \tv-slot=\"{ Component, route }\"\n >\n <transition \n \tname=\"scaleIn\" mode=\"out-in\"\n >\n <component \n \tref=\"page\" \n \t:key=\"route.path\" \n \t:localPosition=\"localPosition\" \n \t:is=\"Component\" \n />\n </transition>\n </router-view>\n\n <section class=\"w-100 desktop-only o-hidden radius-big bg-grad-main\">\n <!-- <SliderFeatures/> --> \n </section>\n </div>\n</template>\n\n<script setup>\n// Import components\nimport Tab from '@pf/src/components/Tab/Tab.vue'\nimport Field from '@pf/src/components/Field/Field.vue'\nimport Button from '@pf/src/components/Button/Button.vue'\n// Import blocks\nimport SliderFeatures from '@pf/src/modules/auth/views/components/sections/SliderFeatures.vue'\n// Import libs\nimport { computed, onMounted, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n// Import state\nimport * as auth from '@pf/src/modules/auth/views/store/auth'\n// Import validation\nimport * as inputsValidation from '@pf/src/modules/auth/views/validations/inputs.validation'\n\nconst phoneValidation = ref(null)\nconst passswordValidation = ref(null)\nconst emailValidation = ref(null)\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Accessing state\nconst tabAuth = ref('email')\n// Methods\nasync function onSubmit() {\n try {\n await inputsValidation.validateInputs(\n emailValidation,\n inputsValidation.validateEmail,\n auth.state.user.email,\n 'Некорректный email'\n )\n await inputsValidation.validateInputs(\n passswordValidation,\n inputsValidation.validatePassword,\n auth.state.user.password,\n 'Некорректный пароль'\n )\n } catch (error) {\n throw new Error\n }\n await auth.actions.login(auth.state.user, tabAuth.value)\n}\n\nfunction redirectTo() {\n router.push({ name: 'Account' })\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;AA0CwB,QAAI,IAAI;AACJ,QAAI,IAAI;AACZ,QAAI,IAAI;AAElB,aAAU;AACT,cAAW;AAEV,QAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const Button = require("../../../../../components/Button/Button.vue.cjs");
7
7
  const vueRouter = require("vue-router");
@@ -1,5 +1,5 @@
1
1
  import { ref, openBlock, createElementBlock, createElementVNode, toDisplayString, unref, createVNode, createTextVNode, createCommentVNode, withCtx } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const Button = require("../../../../../components/Button/Button.vue.cjs");
7
7
  const vueRouter = require("vue-router");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, openBlock, createElementBlock, createElementVNode, createVNode, withCtx } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
@@ -6,7 +6,7 @@ const vue = require("vue");
6
6
  ;/* empty css */
7
7
  const Dropdown = require("../../../../../components/Dropdown/Dropdown.vue.cjs");
8
8
  const Completion = require("../../../../../components/Completion/Completion.vue.cjs");
9
- const Menu = require("../../../../../components/Menu/Menu.vue2.cjs");
9
+ const Menu = require("../../../../../components/Menu/Menu.vue.cjs");
10
10
  const MenuItem = require("../../../../../components/Menu/MenuItem.vue.cjs");
11
11
  const ButtonToggleMembership = require("../../../../organizations/components/elements/ButtonToggleMembership.vue.cjs");
12
12
  const FormReport = require("../../../../reports/components/sections/FormReport.vue.cjs");
@@ -4,7 +4,7 @@ import { ref, onMounted, openBlock, createElementBlock, unref, createBlock, crea
4
4
  /* empty css */
5
5
  import _sfc_main$2 from "../../../../../components/Dropdown/Dropdown.vue.js";
6
6
  import _sfc_main$1 from "../../../../../components/Completion/Completion.vue.js";
7
- import _sfc_main$7 from "../../../../../components/Menu/Menu.vue2.js";
7
+ import _sfc_main$7 from "../../../../../components/Menu/Menu.vue.js";
8
8
  import _sfc_main$8 from "../../../../../components/Menu/MenuItem.vue.js";
9
9
  import _sfc_main$4 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
10
10
  import _sfc_main$3 from "../../../../reports/components/sections/FormReport.vue.js";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
- const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
5
+ const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
6
6
  const Feed = require("../../../../../components/Feed/Feed.vue.cjs");
7
7
  const CardBlogpost = require("../../../../community/components/blocks/CardBlogpost.vue.cjs");
8
8
  const auth = require("../../store/auth.cjs");
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, openBlock, createElementBlock, createElementVNode, unref, createCommentVNode, createBlock, createVNode, withCtx, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
3
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
5
5
  import _sfc_main$3 from "../../../../community/components/blocks/CardBlogpost.vue.js";
6
6
  import { state } from "../../store/auth.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const Checkbox = require("../../../../../components/Checkbox/Checkbox.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, openBlock, createElementBlock, unref, createBlock, createCommentVNode, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$4 from "../../../../../components/Checkbox/Checkbox.vue.js";
5
5
  import _sfc_main$5 from "../../../../../components/Button/Button.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, openBlock, createElementBlock, createElementVNode, toDisplayString, unref, createVNode, Transition, withCtx, createCommentVNode, createTextVNode } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, resolveComponent, openBlock, createElementBlock, createElementVNode, createTextVNode, toDisplayString, unref, createVNode, withCtx, Transition, withDirectives, vShow } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, resolveComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, unref, createVNode, Transition, withCtx, withDirectives, vShow, createTextVNode } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  require("../../../../components/Menu/MenuItem.vue.cjs");
6
- ;/* empty css */
6
+ ;/* empty css */
7
7
  const vueRouter = require("vue-router");
8
8
  require("../../../auth/views/store/auth.cjs");
9
9
  require("../../../organizations/store/organizations.cjs");
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, openBlock, createElementBlock, createElementVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import "../../../../components/Menu/MenuItem.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import "../../../auth/views/store/auth.js";
7
7
  import "../../../organizations/store/organizations.js";
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Menu = require("../../../../components/Menu/Menu.vue2.cjs");
4
+ const Menu = require("../../../../components/Menu/Menu.vue.cjs");
5
5
  const MenuItem = require("../../../../components/Menu/MenuItem.vue.cjs");
6
- ;/* empty css */
6
+ ;/* empty css */
7
7
  const IconProducts = require("../../../icons/entities/IconProducts.vue.cjs");
8
8
  const IconEvents = require("../../../icons/entities/IconEvents.vue.cjs");
9
9
  const IconGroups = require("../../../icons/entities/IconGroups.vue.cjs");
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, openBlock, createElementBlock, createVNode, withCtx, unref, createElementVNode } from "vue";
2
- import _sfc_main$1 from "../../../../components/Menu/Menu.vue2.js";
2
+ import _sfc_main$1 from "../../../../components/Menu/Menu.vue.js";
3
3
  import _sfc_main$2 from "../../../../components/Menu/MenuItem.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$3 from "../../../icons/entities/IconProducts.vue.js";
6
6
  import _sfc_main$7 from "../../../icons/entities/IconEvents.vue.js";
7
7
  import IconGroups from "../../../icons/entities/IconGroups.vue.js";