@ozdao/martyrs 0.2.482 → 0.2.483

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/{Media-JBERcJWj.js → Media-C57G7rnE.js} +1 -1
  2. package/dist/{Media-p7Q8ZAQM.cjs → Media-DjnpKS62.cjs} +1 -1
  3. package/dist/_virtual/_commonjsHelpers.cjs +2 -0
  4. package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
  5. package/dist/_virtual/_commonjsHelpers.js +2 -0
  6. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  7. package/dist/_virtual/index2.cjs +8 -0
  8. package/dist/_virtual/index2.cjs.map +1 -0
  9. package/dist/_virtual/index2.js +8 -0
  10. package/dist/_virtual/index2.js.map +1 -0
  11. package/dist/_virtual/index3.cjs +5 -0
  12. package/dist/_virtual/index3.cjs.map +1 -0
  13. package/dist/_virtual/index3.js +5 -0
  14. package/dist/_virtual/index3.js.map +1 -0
  15. package/dist/{main-AtCVQKF9.js → main-CXQqAVVb.js} +2002 -1937
  16. package/dist/main-De5X_RUk.cjs +11 -0
  17. package/dist/martyrs/src/components/Button/{Button.vue2.cjs → Button.vue.cjs} +2 -2
  18. package/dist/martyrs/src/components/Button/{Button.vue2.js.map → Button.vue.cjs.map} +1 -1
  19. package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +2 -2
  20. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
  21. package/dist/martyrs/src/components/Chips/{Chips.vue2.cjs → Chips.vue.cjs} +2 -2
  22. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -0
  23. package/dist/martyrs/src/components/Chips/{Chips.vue2.js → Chips.vue.js} +2 -2
  24. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -0
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +141 -113
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  27. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +142 -114
  28. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/Popup/{Popup.vue2.cjs → Popup.vue.cjs} +2 -2
  30. package/dist/martyrs/src/components/Popup/{Popup.vue2.js.map → Popup.vue.cjs.map} +1 -1
  31. package/dist/martyrs/src/components/Popup/{Popup.vue2.js → Popup.vue.js} +2 -2
  32. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +1 -0
  33. package/dist/martyrs/src/components/Status/Status.vue.cjs +11 -5
  34. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  35. package/dist/martyrs/src/components/Status/Status.vue.js +13 -7
  36. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  37. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +6 -4
  38. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
  39. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +6 -4
  40. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  51. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  61. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +17 -39
  62. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +18 -40
  64. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.cjs +1 -1
  66. package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.js +1 -1
  67. package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.js +1 -1
  69. package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.cjs +1 -1
  70. package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.js +1 -1
  71. package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.cjs +1 -1
  72. package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.js +1 -1
  73. package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.cjs +1 -1
  74. package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.js +1 -1
  75. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  77. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +3 -3
  78. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +3 -3
  79. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +2 -2
  80. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  81. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  83. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  85. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  88. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  89. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +2 -2
  90. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  93. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  95. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
  98. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  99. package/dist/martyrs/src/modules/globals/globals.client.cjs +11 -0
  100. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/globals/globals.client.js +11 -0
  102. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  103. package/dist/martyrs/src/modules/globals/locales/en.cjs +24 -0
  104. package/dist/martyrs/src/modules/globals/locales/en.cjs.map +1 -0
  105. package/dist/martyrs/src/modules/globals/locales/en.js +24 -0
  106. package/dist/martyrs/src/modules/globals/locales/en.js.map +1 -0
  107. package/dist/martyrs/src/modules/globals/locales/ru.cjs +24 -0
  108. package/dist/martyrs/src/modules/globals/locales/ru.cjs.map +1 -0
  109. package/dist/martyrs/src/modules/globals/locales/ru.js +24 -0
  110. package/dist/martyrs/src/modules/globals/locales/ru.js.map +1 -0
  111. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +71 -0
  112. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs.map +1 -0
  113. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +71 -0
  114. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js.map +1 -0
  115. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js +1 -1
  117. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  119. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +2 -2
  120. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +2 -2
  121. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +2 -2
  122. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +2 -2
  123. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +51 -45
  124. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  125. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +51 -45
  126. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  129. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  131. package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
  132. package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
  133. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +52 -58
  134. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  135. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +52 -58
  136. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  139. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
  140. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  141. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  143. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
  144. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  145. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  146. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  147. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  149. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  151. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  152. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  153. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  155. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  156. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  157. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +1 -1
  159. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
  160. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  161. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  163. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  165. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  167. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  169. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +2 -2
  170. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  171. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +1 -1
  173. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +1 -1
  174. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +1 -1
  175. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  177. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  179. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +2 -2
  180. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +2 -2
  181. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  182. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  183. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +3 -3
  184. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +3 -3
  186. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  189. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +2 -2
  190. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  191. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +2 -2
  192. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  193. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
  195. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  197. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  198. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  199. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  201. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +2 -1
  202. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -1
  203. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +2 -1
  204. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  206. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  207. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  209. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  211. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
  212. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  213. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
  215. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  217. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  218. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  219. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
  220. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  221. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
  222. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
  223. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.cjs +1 -1
  224. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.js +1 -1
  225. package/dist/martyrs.cjs.js +1 -1
  226. package/dist/martyrs.css +1 -1
  227. package/dist/martyrs.es.js +1 -1
  228. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  229. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  230. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  231. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  232. package/dist/node_modules/lodash.merge/index.cjs +689 -0
  233. package/dist/node_modules/lodash.merge/index.cjs.map +1 -0
  234. package/dist/node_modules/lodash.merge/index.js +689 -0
  235. package/dist/node_modules/lodash.merge/index.js.map +1 -0
  236. package/dist/style.css +53 -75
  237. package/package.json +1 -1
  238. package/src/components/FieldPhone/FieldPhone.vue +337 -238
  239. package/src/components/Status/Status.vue +10 -7
  240. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  241. package/src/modules/auth/views/components/sections/SliderFeatures.vue +13 -79
  242. package/src/modules/auth/views/localization/EnterCode.json +2 -2
  243. package/src/modules/auth/views/localization/EnterPassword.json +2 -2
  244. package/src/modules/auth/views/localization/ResetPassword.json +2 -2
  245. package/src/modules/auth/views/localization/SignIn.json +2 -2
  246. package/src/modules/auth/views/localization/SignUp.json +2 -2
  247. package/src/modules/globals/globals.client.js +15 -1
  248. package/src/modules/globals/locales/en.js +21 -0
  249. package/src/modules/globals/locales/index.js +8 -0
  250. package/src/modules/globals/locales/ru.js +21 -0
  251. package/src/modules/globals/views/classes/globals.i18n.js +84 -0
  252. package/src/modules/globals/views/components/layouts/Client.vue +43 -40
  253. package/src/modules/globals/views/components/partials/Footer.vue +162 -162
  254. package/src/modules/globals/views/store/globals.js +0 -40
  255. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +34 -38
  256. package/src/modules/products/components/pages/Product.vue +1 -1
  257. package/src/modules/products/components/sections/ProductsPopular.vue +3 -2
  258. package/src/modules/wallet/views/localization/wallet.json +2 -2
  259. package/dist/main-B-we7C0w.cjs +0 -11
  260. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +0 -1
  261. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +0 -1
  262. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +0 -1
  263. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +0 -1
  264. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs +0 -194
  265. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs.map +0 -1
  266. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js +0 -194
  267. package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js.map +0 -1
  268. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs +0 -43
  269. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs.map +0 -1
  270. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js +0 -43
  271. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js.map +0 -1
  272. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs +0 -43
  273. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs.map +0 -1
  274. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js +0 -43
  275. package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js.map +0 -1
  276. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs +0 -1630
  277. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs.map +0 -1
  278. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js +0 -1630
  279. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js.map +0 -1
@@ -7,10 +7,7 @@
7
7
  { 'bg-fourth-nano': validation },
8
8
  { disabled: disabled }
9
9
  ]"
10
- :style="[
11
- rootStyle,
12
- styles
13
- ]"
10
+ :style="[rootStyle, styles]"
14
11
  ref="rootElement"
15
12
  class="vue3-reactive-tel-input"
16
13
  >
@@ -19,30 +16,39 @@
19
16
  :class="['vti__dropdown', { open: open }]"
20
17
  :style="[dropdownStyle]"
21
18
  :tabindex="dropdownOptions.tabindex"
22
- @keydown="keyboardNav"
23
- @click="toggleDropdown"
24
19
  @keydown.esc="reset"
25
20
  class="br-solid br-black-transp br-1px radius-thin"
26
21
  >
27
- <span class="flex-nowrap flex flex-v-center p-medium vti__selection">
22
+ <span class="flex-nowrap flex flex-v-center p-medium vti__selection">
28
23
  <span v-if="dropdownOptions.showFlags" v-html="activeCountryFlag" class="mn-r-nano" />
29
- <span v-if="dropdownOptions.showDialCodeInSelection" class="vti__country-code">
30
- +{{ activeCountry && activeCountry.dialCode }}
31
- </span>
32
- <!-- <slot name="arrow-icon" :open="open"> -->
33
- <!-- <span class="vti__dropdown-arrow">{{ open ? "▲" : "▼" }}</span> -->
34
- <!-- </slot> -->
24
+
25
+ <!-- Новый инпут для ввода кода страны -->
26
+ <input
27
+ v-if="dropdownOptions.showDialCodeInSelection"
28
+ v-model="dialCodeInput"
29
+ @input="onDialCodeInput"
30
+ @focus="openDropdown"
31
+ @blur="onDialCodeBlur"
32
+ @keydown="keyboardNav"
33
+ type="text"
34
+ class="vti__country-code-input"
35
+ :placeholder="`+${activeCountry?.dialCode || ''}`"
36
+ :disabled="disabled"
37
+ :size="Math.max((dialCodeInput?.length || 0) + 1, 3)"
38
+ maxlength="5"
39
+ />
40
+
35
41
  </span>
42
+
36
43
  <ul
37
44
  ref="list"
38
45
  class="bs-black radius-small vti__dropdown-list"
39
46
  v-show="open"
40
47
  :class="dropdownOpenDirection"
41
48
  :style="[listStyle]"
42
-
43
- >
49
+ >
44
50
  <li
45
- v-for="(pb, index) in sortedCountries"
51
+ v-for="(pb, index) in filteredAndSortedCountries"
46
52
  class="flex-nowrap flex w-max"
47
53
  :class="['vti__dropdown-item', getItemClass(index, pb.iso2)]"
48
54
  :key="pb.iso2 + (pb.preferred ? '-preferred' : '')"
@@ -55,35 +61,34 @@
55
61
  </li>
56
62
  </ul>
57
63
  </div>
58
- <!-- <div :class="[divInputClass]" > -->
59
- <input
60
- v-model="phone"
61
- inputmode="numeric"
62
- pattern="\d*"
63
- ref="input"
64
- :type="inputOptions.type"
65
- :autocomplete="inputOptions.autocomplete"
66
- :autofocus="inputOptions.autofocus"
67
- :class="['vti__input', inputOptions.styleClasses, inputClass, Iclasses]"
68
- :style="[inputStyle, Istyles]"
69
- :disabled="disabled"
70
- :id="inputId !== ''? inputId : inputOptions.id"
71
- :maxlength="inputOptions.maxlength"
72
- :name="inputId !== ''? inputId : inputOptions.name"
73
- :placeholder="parsedPlaceholder"
74
- :readonly="inputOptions.readonly"
75
- :required="inputOptions.required"
76
- :tabindex="inputOptions.tabindex"
77
- @blur="onBlur"
78
- @focus="onFocus"
79
- @input="onInput"
80
- @keyup.enter="onEnter"
81
- @keyup.space="onSpace"
82
- />
83
- <slot></slot> <!-- slot outlet -->
84
- <!-- </div> -->
85
-
64
+
65
+ <input
66
+ v-model="phone"
67
+ inputmode="numeric"
68
+ pattern="\d*"
69
+ ref="input"
70
+ :type="inputOptions.type"
71
+ :autocomplete="inputOptions.autocomplete"
72
+ :autofocus="inputOptions.autofocus"
73
+ :class="['vti__input', inputOptions.styleClasses, inputClass, Iclasses]"
74
+ :style="[inputStyle, Istyles]"
75
+ :disabled="disabled"
76
+ :id="inputId !== '' ? inputId : inputOptions.id"
77
+ :maxlength="inputOptions.maxlength"
78
+ :name="inputId !== '' ? inputId : inputOptions.name"
79
+ :placeholder="parsedPlaceholder"
80
+ :readonly="inputOptions.readonly"
81
+ :required="inputOptions.required"
82
+ :tabindex="inputOptions.tabindex"
83
+ @blur="onBlur"
84
+ @focus="onFocus"
85
+ @input="onInput"
86
+ @keyup.enter="onEnter"
87
+ @keyup.space="onSpace"
88
+ />
89
+ <slot></slot>
86
90
  </div>
91
+
87
92
  <!-- Validation -->
88
93
  <transition name="fade">
89
94
  <div v-if="validation" class="mn-t-thin mn-b-thin invalid-feedback">
@@ -92,7 +97,6 @@
92
97
  </transition>
93
98
  </template>
94
99
 
95
-
96
100
  <script setup>
97
101
  import { ref, reactive, watch, computed, onMounted, nextTick } from 'vue';
98
102
  import { parsePhoneNumberFromString } from 'libphonenumber-js';
@@ -103,65 +107,60 @@
103
107
  let vClickOutside = clickOutside
104
108
 
105
109
  const props = defineProps({
106
- modelValue: { type: String, default: '',},
107
- badClass: { type: [String, Array, Object], default: '', },
108
- goodClass: { type: [String, Array, Object], default: '', },
109
- badStyle: { type: [String, Array, Object], default: '', },
110
- goodStyle: { type: [String, Array, Object], default: '', },
111
- badInputClass: { type: [String, Array, Object], default: '', },
112
- goodInputClass: { type: [String, Array, Object], default: '', },
113
- badInputStyle: { type: [String, Array, Object], default: '', },
114
- goodInputStyle: { type: [String, Array, Object], default: '', },
115
- allCountries: { type: Array, default: () => allCountries, },
116
- autoFormat: { type: Boolean, default: () => true, },
117
- validation: { type: [Boolean, Object], default: false, },
118
- customValidate: { type: [Boolean, RegExp], default: () => false, },
119
- defaultCountry: { type: String, default: () => '', },
120
- disabled: { type: Boolean, default: () => false, },
121
- autoDefaultCountry: { type: Boolean, default: () => true },
122
- ignoredCountries: { type: Array, default: () => [], },
123
- invalidMsg: { type: String, default: () => '', },
124
- mode: { type: String, default: () => 'auto', },
125
- onlyCountries: { type: Array, default: () => [], },
126
- preferredCountries: { type: Array, default: () => [], },
127
- validCharactersOnly: { type: Boolean, default: () => false, },
128
- rootClass: { type: [String, Array, Object], default: () => '', },
129
- inputClass: { type: [String, Array, Object], default: () => {return ''}, },
130
- divInputClass: { type: [String, Array, Object], default: () => {return ''}, },
131
- rootStyle: { type: [String, Array, Object], default: () => {return ''}, },
132
- dropdownStyle: { type: [String, Array, Object], default: () => {return ''}, },
133
- listStyle: { type: [String, Array, Object], default: () => {return ''}, },
134
- inputStyle: { type: [String, Array, Object], default: () => {return ''}, },
135
- inputId: { type: [String, Array, Object], default: () => {return ''}, },
136
- Placeholder: { type: [String, Object, Function], default: () => {return ''}, },
110
+ modelValue: { type: String, default: '' },
111
+ badClass: { type: [String, Array, Object], default: '' },
112
+ goodClass: { type: [String, Array, Object], default: '' },
113
+ badStyle: { type: [String, Array, Object], default: '' },
114
+ goodStyle: { type: [String, Array, Object], default: '' },
115
+ badInputClass: { type: [String, Array, Object], default: '' },
116
+ goodInputClass: { type: [String, Array, Object], default: '' },
117
+ badInputStyle: { type: [String, Array, Object], default: '' },
118
+ goodInputStyle: { type: [String, Array, Object], default: '' },
119
+ allCountries: { type: Array, default: () => allCountries },
120
+ autoFormat: { type: Boolean, default: true },
121
+ validation: { type: [Boolean, Object], default: false },
122
+ customValidate: { type: [Boolean, RegExp], default: false },
123
+ defaultCountry: { type: String, default: '' },
124
+ disabled: { type: Boolean, default: false },
125
+ autoDefaultCountry: { type: Boolean, default: true },
126
+ ignoredCountries: { type: Array, default: () => [] },
127
+ invalidMsg: { type: String, default: '' },
128
+ mode: { type: String, default: 'auto' },
129
+ onlyCountries: { type: Array, default: () => [] },
130
+ preferredCountries: { type: Array, default: () => [] },
131
+ validCharactersOnly: { type: Boolean, default: false },
132
+ rootClass: { type: [String, Array, Object], default: '' },
133
+ inputClass: { type: [String, Array, Object], default: '' },
134
+ rootStyle: { type: [String, Array, Object], default: '' },
135
+ dropdownStyle: { type: [String, Array, Object], default: '' },
136
+ listStyle: { type: [String, Array, Object], default: '' },
137
+ inputStyle: { type: [String, Array, Object], default: '' },
138
+ inputId: { type: [String, Array, Object], default: '' },
139
+ Placeholder: { type: [String, Object, Function], default: '' },
137
140
  dropdownOptions: {
138
141
  type: Object,
139
- default: () => {
140
- return {
141
- showDialCodeInList: true,
142
- showDialCodeInSelection: false,
143
- showFlags: true,
144
- tabindex: 0
145
- }
146
- }
142
+ default: () => ({
143
+ showDialCodeInList: true,
144
+ showDialCodeInSelection: false,
145
+ showFlags: true,
146
+ tabindex: 0
147
+ })
147
148
  },
148
149
  inputOptions: {
149
150
  type: Object,
150
- default: () => {
151
- return {
152
- autocomplete: 'on',
153
- autofocus: false,
154
- id: '',
155
- maxlength: 25,
156
- name: 'telephone',
157
- placeholder: 'Enter a phone number',
158
- readonly: false,
159
- required: false,
160
- tabindex: 0,
161
- type: 'tel',
162
- styleClasses: ''
163
- }
164
- }
151
+ default: () => ({
152
+ autocomplete: 'on',
153
+ autofocus: false,
154
+ id: '',
155
+ maxlength: 25,
156
+ name: 'telephone',
157
+ placeholder: 'Enter a phone number',
158
+ readonly: false,
159
+ required: false,
160
+ tabindex: 0,
161
+ type: 'tel',
162
+ styleClasses: ''
163
+ })
165
164
  },
166
165
  });
167
166
 
@@ -178,14 +177,11 @@
178
177
  'space'
179
178
  ]);
180
179
 
181
- const counter = ref(5);
182
- const initCounter = ref(5);
183
- const message = reactive({
184
- action: null,
185
- amount: null,
186
- });
187
- const phone = ref(props.modelValue ? props.modelValue : '');
180
+ // Reactive data
181
+ const phone = ref(props.modelValue || '');
188
182
  const activeCountryCode = ref('');
183
+ const dialCodeInput = ref('');
184
+ const dialCodeFilter = ref('');
189
185
  const open = ref(false);
190
186
  const finishMounted = ref(false);
191
187
  const selectedIndex = ref(null);
@@ -194,12 +190,13 @@
194
190
  const dropdownOpenDirection = ref('below');
195
191
  const parsedPlaceholder = ref(props.Placeholder !== '' ? props.Placeholder : props.inputOptions.placeholder);
196
192
 
197
- const rootElement = ref(null)
198
- const list = ref(null)
199
- const input = ref(null)
193
+ // Element refs
194
+ const rootElement = ref(null);
195
+ const list = ref(null);
196
+ const input = ref(null);
200
197
 
201
198
  // Lifecycle hooks
202
- onMounted(async () => {
199
+ onMounted(() => {
203
200
  if (props.modelValue) {
204
201
  phone.value = props.modelValue;
205
202
  }
@@ -208,11 +205,15 @@
208
205
 
209
206
  initializeCountry()
210
207
  .then(() => {
211
- if (!phone.value
212
- && props.inputOptions?.showDialCode
213
- && activeCountryCode.value) {
208
+ if (!phone.value && props.inputOptions?.showDialCode && activeCountryCode.value) {
214
209
  phone.value = `+${activeCountryCode.value}`;
215
210
  }
211
+
212
+ // Инициализируем dialCodeInput
213
+ if (activeCountry.value && props.dropdownOptions.showDialCodeInSelection) {
214
+ dialCodeInput.value = `+${activeCountry.value.dialCode}`;
215
+ }
216
+
216
217
  emits('validate', phoneObject.value);
217
218
  })
218
219
  .catch(console.error)
@@ -223,7 +224,7 @@
223
224
 
224
225
  // Computed properties
225
226
  const activeCountry = computed(() => {
226
- return findCountry(activeCountryCode.value);
227
+ return findCountry(activeCountryCode.value);
227
228
  });
228
229
 
229
230
  const activeCountryFlag = computed(() => {
@@ -245,20 +246,38 @@
245
246
  });
246
247
 
247
248
  const filteredCountries = computed(() => {
249
+ let countries = props.allCountries;
250
+
251
+ // Фильтрация по onlyCountries/ignoredCountries
248
252
  if (props.onlyCountries && props.onlyCountries.length) {
249
- return props.allCountries.filter(({ iso2 }) => props.onlyCountries.includes(iso2.toUpperCase()));
253
+ countries = countries.filter(({ iso2 }) =>
254
+ props.onlyCountries.includes(iso2.toUpperCase())
255
+ );
256
+ } else if (props.ignoredCountries && props.ignoredCountries.length) {
257
+ countries = countries.filter(({ iso2 }) =>
258
+ !props.ignoredCountries.includes(iso2.toUpperCase()) &&
259
+ !props.ignoredCountries.includes(iso2.toLowerCase())
260
+ );
250
261
  }
251
262
 
252
- if (props.ignoredCountries && props.ignoredCountries.length) {
253
- return props.allCountries.filter(({ iso2 }) =>
254
- !props.ignoredCountries.includes(iso2.toUpperCase()) && !props.ignoredCountries.includes(iso2.toLowerCase()),
263
+ // Фильтрация по введенному коду страны
264
+ if (dialCodeFilter.value) {
265
+ const filterValue = dialCodeFilter.value.replace('+', '');
266
+ countries = countries.filter(country =>
267
+ country.dialCode.startsWith(filterValue)
255
268
  );
256
269
  }
257
270
 
258
- return props.allCountries;
271
+ return countries;
259
272
  });
260
- const sortedCountries = computed(() => {
273
+
274
+ const filteredAndSortedCountries = computed(() => {
261
275
  const preferredCountries = getCountries(props.preferredCountries)
276
+ .filter(country => {
277
+ if (!dialCodeFilter.value) return true;
278
+ const filterValue = dialCodeFilter.value.replace('+', '');
279
+ return country.dialCode.startsWith(filterValue);
280
+ })
262
281
  .map(country => ({ ...country, preferred: true }));
263
282
 
264
283
  return [...preferredCountries, ...filteredCountries.value];
@@ -317,9 +336,8 @@
317
336
  return phoneObject.value.valid === true ? props.goodInputStyle :
318
337
  phoneObject.value.valid === false ? props.badInputStyle : undefined;
319
338
  });
320
- // ///////////
339
+
321
340
  // Watchers
322
- // ///////////
323
341
  watch(activeCountry, (newValue, oldValue) => {
324
342
  if (!newValue && oldValue?.iso2) {
325
343
  activeCountryCode.value = oldValue.iso2;
@@ -328,20 +346,19 @@
328
346
  if (newValue?.iso2) {
329
347
  emits('country-changed', newValue);
330
348
  resetPlaceholder();
349
+ // Обновляем dialCodeInput при смене страны
350
+ dialCodeInput.value = `+${newValue.dialCode}`;
331
351
  }
332
352
  });
333
353
 
334
- // Следим за изменениями countryCode в phoneObject
335
354
  watch(() => phoneObject.value.countryCode, (newValue) => {
336
355
  activeCountryCode.value = newValue;
337
356
  });
338
357
 
339
- // Следим за изменениями валидности phoneObject
340
358
  watch(() => phoneObject.value.valid, () => {
341
359
  emits('validate', phoneObject.value);
342
360
  });
343
361
 
344
- // Следим за изменениями отформатированного номера в phoneObject
345
362
  watch(() => phoneObject.value.formatted, (newValue) => {
346
363
  if (!props.autoFormat || props.customValidate) {
347
364
  return;
@@ -355,12 +372,10 @@
355
372
  });
356
373
  });
357
374
 
358
- // Следим за изменениями placeholder в inputOptions
359
375
  watch(() => props.inputOptions.placeholder, () => {
360
376
  resetPlaceholder();
361
377
  });
362
378
 
363
- // Следим за внешними изменениями значения (например, через v-model)
364
379
  watch(() => props.modelValue, (newValue, oldValue) => {
365
380
  if (!testCharacters()) {
366
381
  nextTick(() => {
@@ -372,7 +387,6 @@
372
387
  }
373
388
  });
374
389
 
375
- // Следим за состоянием открытия/закрытия dropdown
376
390
  watch(open, (isDropdownOpened) => {
377
391
  if (isDropdownOpened) {
378
392
  setDropdownPosition();
@@ -383,49 +397,100 @@
383
397
  });
384
398
 
385
399
  // Methods
386
- function getCountry() {
387
- return fetch('https://ip2c.org/s')
388
- .then((response) => response.text())
389
- .then((response) => {
390
- const result = (response || '').toString();
400
+ function onDialCodeInput() {
401
+ // Убеждаемся, что символ + всегда есть в начале
402
+ if (!dialCodeInput.value.startsWith('+')) {
403
+ dialCodeInput.value = '+' + dialCodeInput.value.replace(/^\+*/, '');
404
+ }
405
+
406
+ // Разрешаем только + и цифры
407
+ dialCodeInput.value = dialCodeInput.value.replace(/[^\+\d]/g, '');
408
+
409
+ // Убеждаемся что + только в начале
410
+ const plusCount = (dialCodeInput.value.match(/\+/g) || []).length;
411
+ if (plusCount > 1) {
412
+ dialCodeInput.value = '+' + dialCodeInput.value.replace(/\+/g, '');
413
+ }
414
+
415
+ dialCodeFilter.value = dialCodeInput.value;
416
+ open.value = true;
417
+
418
+ // Автовыбор страны если код точно совпадает
419
+ const exactMatch = filteredCountries.value.find(country =>
420
+ `+${country.dialCode}` === dialCodeInput.value
421
+ );
422
+
423
+ if (exactMatch && filteredAndSortedCountries.value.length === 1) {
424
+ choose(exactMatch);
425
+ }
426
+ }
391
427
 
392
- if (!result || result[0] !== '1') {
393
- throw new Error('unable to fetch the country');
394
- }
428
+ function onDialCodeBlur() {
429
+ setTimeout(() => {
430
+ if (!dialCodeInput.value && activeCountry.value) {
431
+ dialCodeInput.value = `+${activeCountry.value.dialCode}`;
432
+ }
433
+ }, 200);
434
+ }
395
435
 
396
- return result.substr(2, 2);
397
- });
436
+ function openDropdown() {
437
+ if (!props.disabled) {
438
+ open.value = true;
439
+ }
398
440
  }
399
-
441
+
400
442
  function setCaretPosition(ctrl, pos) {
401
- // Modern browsers
402
443
  if (ctrl.setSelectionRange) {
403
- ctrl.focus();
404
- ctrl.setSelectionRange(pos, pos);
405
-
406
- // IE8 and below
444
+ ctrl.focus();
445
+ ctrl.setSelectionRange(pos, pos);
407
446
  } else if (ctrl.createTextRange) {
408
- const range = ctrl.createTextRange();
409
- range.collapse(true);
410
- range.moveEnd('character', pos);
411
- range.moveStart('character', pos);
412
- range.select();
447
+ const range = ctrl.createTextRange();
448
+ range.collapse(true);
449
+ range.moveEnd('character', pos);
450
+ range.moveStart('character', pos);
451
+ range.select();
413
452
  }
414
453
  }
415
454
 
416
455
  function resetPlaceholder() {
417
456
  parsedPlaceholder.value = props.inputOptions.placeholder;
418
457
  }
458
+
419
459
  function initializeCountry() {
420
460
  return new Promise((resolve) => {
421
- if (phone.value?.[0] === '+') { resolve(); return; }
422
- if (props.defaultCountry) { choose(props.defaultCountry); resolve(); return; }
461
+ if (phone.value?.[0] === '+') {
462
+ resolve();
463
+ return;
464
+ }
465
+
466
+ if (props.defaultCountry) {
467
+ choose(props.defaultCountry);
468
+ resolve();
469
+ return;
470
+ }
471
+
423
472
  const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];
473
+
424
474
  if (props.autoDefaultCountry) {
425
- getCountry()
426
- .then((res) => { choose(res || activeCountryCode.value); })
427
- .catch((error) => { console.warn(error); choose(fallbackCountry); })
428
- .finally(() => { resolve(); });
475
+ fetch('https://ip2c.org/s')
476
+ .then((response) => response.text())
477
+ .then((response) => {
478
+ const result = (response || '').toString();
479
+ if (!result || result[0] !== '1') {
480
+ throw new Error('unable to fetch the country');
481
+ }
482
+ return result.substr(2, 2);
483
+ })
484
+ .then((res) => {
485
+ choose(res || activeCountryCode.value);
486
+ })
487
+ .catch((error) => {
488
+ console.warn(error);
489
+ choose(fallbackCountry);
490
+ })
491
+ .finally(() => {
492
+ resolve();
493
+ });
429
494
  } else {
430
495
  choose(fallbackCountry);
431
496
  resolve();
@@ -454,16 +519,27 @@
454
519
 
455
520
  if (phone.value?.[0] === '+' && parsedCountry.iso2 && phoneObject.value.nationalNumber) {
456
521
  activeCountryCode.value = parsedCountry.iso2;
457
- phone.value = parsePhoneNumberFromString(phoneObject.value.nationalNumber, parsedCountry.iso2).formatInternational();
458
- return;
459
- }
460
-
461
- if (props.inputOptions?.showDialCode && parsedCountry) {
462
- phone.value = `+${parsedCountry.dialCode}`;
463
- return;
522
+ phone.value = parsePhoneNumberFromString(
523
+ phoneObject.value.nationalNumber,
524
+ parsedCountry.iso2
525
+ ).formatInternational();
526
+ } else {
527
+ activeCountryCode.value = parsedCountry.iso2;
464
528
  }
465
529
 
466
- activeCountryCode.value = parsedCountry.iso2;
530
+ dialCodeInput.value = `+${parsedCountry.dialCode}`;
531
+ dialCodeFilter.value = '';
532
+
533
+ // Закрываем дропдаун
534
+ open.value = false;
535
+
536
+ // Переводим фокус на основной инпут
537
+ nextTick(() => {
538
+ if (input.value) {
539
+ input.value.focus();
540
+ }
541
+ });
542
+
467
543
  emitInput(phone.value);
468
544
  }
469
545
 
@@ -502,16 +578,13 @@
502
578
 
503
579
  function onInput() {
504
580
  input.value.setCustomValidity(phoneObject.valid ? '' : props.invalidMsg);
505
-
506
581
  emitInput(phone.value);
507
582
  }
508
583
 
509
584
  function emitInput(value) {
510
585
  emits('update:modelValue', value);
511
586
 
512
-
513
-
514
- if (phoneObject.value.valid) {
587
+ if (phoneObject.value.valid) {
515
588
  emits('change', phoneObject.value.number);
516
589
  emits('country', phoneObject.value.number);
517
590
  } else {
@@ -547,13 +620,15 @@
547
620
 
548
621
  function clickedOutside() {
549
622
  open.value = false;
623
+ dialCodeFilter.value = '';
550
624
  }
551
625
 
552
626
  function keyboardNav(e) {
553
627
  if (e.keyCode === 40) { // down arrow
554
628
  e.preventDefault();
555
629
  open.value = true;
556
- selectedIndex.value = selectedIndex.value === null ? 0 : Math.min(sortedCountries.value.length - 1, selectedIndex.value + 1);
630
+ selectedIndex.value = selectedIndex.value === null ? 0 :
631
+ Math.min(filteredAndSortedCountries.value.length - 1, selectedIndex.value + 1);
557
632
  nextTick(() => {
558
633
  const selEle = list.value.children[selectedIndex.value];
559
634
  if (selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight) {
@@ -563,7 +638,8 @@
563
638
  } else if (e.keyCode === 38) { // up arrow
564
639
  e.preventDefault();
565
640
  open.value = true;
566
- selectedIndex.value = selectedIndex.value === null ? sortedCountries.value.length - 1 : Math.max(0, selectedIndex.value - 1);
641
+ selectedIndex.value = selectedIndex.value === null ?
642
+ filteredAndSortedCountries.value.length - 1 : Math.max(0, selectedIndex.value - 1);
567
643
  nextTick(() => {
568
644
  const selEle = list.value.children[selectedIndex.value];
569
645
  if (selEle.offsetTop < list.value.scrollTop) {
@@ -573,21 +649,27 @@
573
649
  } else if (e.keyCode === 13) { // enter key
574
650
  e.preventDefault();
575
651
  if (selectedIndex.value !== null) {
576
- choose(sortedCountries.value[selectedIndex.value]);
652
+ choose(filteredAndSortedCountries.value[selectedIndex.value]);
577
653
  }
578
- open.value = !open.value;
579
- } else { // typing a country's name
654
+ } else {
655
+ // Поиск по названию страны
656
+ if (e.target.classList.contains('vti__country-code-input')) return;
657
+
580
658
  typeToFindInput.value += e.key;
581
659
  clearTimeout(typeToFindTimer);
582
660
  typeToFindTimer = setTimeout(() => {
583
661
  typeToFindInput.value = '';
584
662
  }, 700);
663
+
585
664
  nextTick(() => {
586
- const typedCountryI = sortedCountries.value.slice(props.preferredCountries.length).findIndex((c) => c.name.toLowerCase().startsWith(typeToFindInput.value));
665
+ const typedCountryI = filteredAndSortedCountries.value
666
+ .slice(props.preferredCountries.length)
667
+ .findIndex((c) => c.name.toLowerCase().startsWith(typeToFindInput.value));
587
668
  if (typedCountryI >= 0) {
588
669
  selectedIndex.value = props.preferredCountries.length + typedCountryI;
589
670
  const selEle = list.value.children[selectedIndex.value];
590
- const needToScroll = selEle.offsetTop < list.value.scrollTop || selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight;
671
+ const needToScroll = selEle.offsetTop < list.value.scrollTop ||
672
+ selEle.offsetTop + selEle.clientHeight > list.value.scrollTop + list.value.clientHeight;
591
673
  if (needToScroll) {
592
674
  list.value.scrollTop = selEle.offsetTop - list.value.clientHeight / 2;
593
675
  }
@@ -597,7 +679,8 @@
597
679
  }
598
680
 
599
681
  function reset() {
600
- selectedIndex.value = sortedCountries.value.map(c => c.iso2).indexOf(activeCountryCode.value);
682
+ selectedIndex.value = filteredAndSortedCountries.value
683
+ .map(c => c.iso2).indexOf(activeCountryCode.value);
601
684
  open.value = false;
602
685
  }
603
686
 
@@ -609,67 +692,83 @@
609
692
  </script>
610
693
 
611
694
  <style lang="scss">
612
- .vue3-reactive-tel-input{
613
- display:flex
614
- }
615
- .vue3-reactive-tel-input.disabled .dropdown,.vue3-reactive-tel-input.disabled .selection,.vue3-reactive-tel-input.disabled input{
616
- cursor:no-drop
617
- }
618
- .vti__dropdown{
619
- display:flex;
620
- flex-direction:column;
621
- align-content:center;
622
- justify-content:center;
623
- position:relative;
624
- padding:0.5rem;
625
- cursor:pointer
626
- }
627
- .vti__dropdown.show{
628
- max-height:300px;
629
- overflow:scroll
630
- }
631
- .vti__dropdown-list{
632
- z-index:1;
633
- padding:0;
634
- margin:0;
635
- text-align:left;
636
- list-style:none;
637
- max-height:200px;
638
- overflow-y:scroll;
639
- position:absolute;
640
- left:-1px;
641
- background-color:#fff;
642
- width:fit-content
643
- }
644
- .vti__dropdown-list.below{
645
- top:33px
646
- }
647
- .vti__dropdown-list.above{
648
- top:auto;
649
- bottom:100%
650
- }
651
- .vti__dropdown-arrow{
652
- transform:scaleY(.5);
653
- display:inline-block;
654
- color:#666
655
- }
656
- .vti__dropdown-item{
657
- cursor:pointer;
658
- padding:4px 15px
659
- }
660
- .vti__dropdown-item.last-preferred{
661
- border-bottom:1px solid #cacaca
662
- }
663
- .vti__dropdown-item .vti__flag{
664
- display:inline-block;
665
- margin-right:5px
666
- }
667
- .vti__input{
668
- color: inherit;
669
- border:none;
670
- border-radius:0 2px 2px 0;
671
- width:100%;
672
- outline:0;
673
- padding-left:7px
674
- }
695
+ .vue3-reactive-tel-input {
696
+ display: flex;
697
+ }
698
+
699
+ .vue3-reactive-tel-input.disabled .dropdown,
700
+ .vue3-reactive-tel-input.disabled .selection,
701
+ .vue3-reactive-tel-input.disabled input {
702
+ cursor: no-drop;
703
+ }
704
+
705
+ .vti__dropdown {
706
+ display: flex;
707
+ flex-direction: column;
708
+ align-content: center;
709
+ justify-content: center;
710
+ position: relative;
711
+ padding: 0.5rem;
712
+ cursor: pointer;
713
+ }
714
+
715
+ .vti__dropdown.show {
716
+ max-height: 300px;
717
+ overflow: scroll;
718
+ }
719
+
720
+ .vti__dropdown-list {
721
+ z-index: 1;
722
+ padding: 0;
723
+ margin: 0;
724
+ text-align: left;
725
+ list-style: none;
726
+ max-height: 200px;
727
+ overflow-y: scroll;
728
+ position: absolute;
729
+ left: -1px;
730
+ background-color: #fff;
731
+ width: fit-content;
732
+ }
733
+
734
+ .vti__dropdown-list.below {
735
+ top: 33px;
736
+ }
737
+
738
+ .vti__dropdown-list.above {
739
+ top: auto;
740
+ bottom: 100%;
741
+ }
742
+
743
+ .vti__dropdown-item {
744
+ cursor: pointer;
745
+ padding: 4px 15px;
746
+ }
747
+
748
+ .vti__dropdown-item.highlighted {
749
+ background-color: #f0f0f0;
750
+ }
751
+
752
+ .vti__dropdown-item.last-preferred {
753
+ border-bottom: 1px solid #cacaca;
754
+ }
755
+
756
+ .vti__input {
757
+ color: inherit;
758
+ border: none;
759
+ border-radius: 0 2px 2px 0;
760
+ width: 100%;
761
+ outline: 0;
762
+ padding-left: 7px;
763
+ }
764
+
765
+ .vti__country-code-input {
766
+ max-width: 70px;
767
+ border: none;
768
+ outline: none;
769
+ background: transparent;
770
+ font-size: inherit;
771
+ color: inherit;
772
+ text-align: center;
773
+ }
675
774
  </style>