@ozdao/martyrs 0.2.564 → 0.2.566

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 (366) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/dist/main-B9o1iBAZ.js +943 -0
  13. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  14. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  15. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  16. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  17. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  19. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  23. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  28. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  30. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  31. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  34. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  38. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  40. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  42. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  57. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  59. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  60. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  63. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  64. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  65. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  66. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  67. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  68. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  69. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  70. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  71. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  72. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  75. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  76. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  77. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
  78. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  80. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  81. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  82. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  83. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  84. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  85. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  86. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +2 -2
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  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.js +2 -2
  92. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  93. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  95. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  96. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  98. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  99. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  100. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  101. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  103. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  105. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  106. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  107. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  108. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -3
  109. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +25 -25
  111. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  115. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  117. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  118. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  119. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  120. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +121 -206
  122. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  124. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  125. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +167 -246
  128. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  130. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +136 -221
  131. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  134. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  135. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +32 -154
  136. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  138. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  140. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  142. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  143. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  144. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  145. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  146. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  148. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  150. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  152. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  153. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  156. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  160. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  162. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  169. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  172. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  173. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  175. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  177. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  178. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  179. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  180. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  181. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  183. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  186. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  188. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  190. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  192. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  193. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  195. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  196. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  197. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  198. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  199. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  200. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  202. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  203. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  205. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  206. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  207. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  208. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  210. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  211. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  213. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  214. package/dist/martyrs.css +1 -1
  215. package/dist/martyrs.es.js +1 -1
  216. package/dist/music.server.js +44 -18
  217. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  218. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  219. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  220. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  221. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  222. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  223. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  224. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  226. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  227. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  228. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  229. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  230. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  231. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  232. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  233. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  234. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  235. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  236. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  237. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  238. package/dist/notifications.server.js +0 -3
  239. package/dist/orders.server.js +5 -6
  240. package/dist/organizations.server.js +9 -10
  241. package/dist/products.server.js +27 -26
  242. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  243. package/dist/rents.server.js +2 -3
  244. package/dist/spots.server.js +1 -1
  245. package/dist/style.css +252 -161
  246. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  247. package/package.json +1 -1
  248. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  249. package/src/builder/rspack/rspack.config.api.js +15 -4
  250. package/src/builder/rspack/rspack.config.base.js +3 -3
  251. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  252. package/src/builder/templates/page.js +2 -2
  253. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  254. package/src/components/Button/Button.vue +50 -37
  255. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  256. package/src/components/Loader/Loader.vue +1 -1
  257. package/src/components/Tree/Tree.vue +6 -3
  258. package/src/modules/LAYOUT.MD +767 -0
  259. package/src/modules/PROCESS.md +0 -0
  260. package/src/modules/TASKS.MD +17 -0
  261. package/src/modules/auth/auth.client.js +11 -7
  262. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  263. package/src/modules/auth/views/router/auth.router.js +94 -0
  264. package/src/modules/auth/views/router/users.router.js +153 -0
  265. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  266. package/src/modules/community/community.server.js +8 -0
  267. package/src/modules/community/policies/blog.policies.js +55 -0
  268. package/src/modules/community/routes/blog.routes.js +1 -1
  269. package/src/modules/community/routes/comments.routes.js +1 -1
  270. package/src/modules/community/routes/reactions.routes.js +1 -4
  271. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  272. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  273. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  274. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  275. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  276. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  277. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  278. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  279. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  280. package/src/modules/core/core.server.js +1 -0
  281. package/src/modules/core/locales/en.js +45 -0
  282. package/src/modules/core/locales/ru.js +45 -0
  283. package/src/modules/core/models/schemas/common.schema.js +1 -1
  284. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  285. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  286. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  287. package/src/modules/core/views/mixins/mixins.js +1 -2
  288. package/src/modules/core/views/router/addRoutes.js +6 -1
  289. package/src/modules/events/events.client.js +3 -0
  290. package/src/modules/events/routes/events.routes.js +1 -1
  291. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  292. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  293. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  294. package/src/modules/marketplace/marketplace.router.js +66 -0
  295. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  296. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  297. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  298. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  299. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  300. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  301. package/src/modules/music/components/pages/Album.vue +55 -67
  302. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  303. package/src/modules/music/components/pages/Playlist.vue +61 -70
  304. package/src/modules/music/components/pages/Track.vue +54 -71
  305. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  306. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  307. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  308. package/src/modules/music/components/player/Visualizer.vue +151 -0
  309. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  310. package/src/modules/music/components/player/tonar.png +0 -0
  311. package/src/modules/music/controllers/stream.controller.js +1 -1
  312. package/src/modules/music/music.server.js +1 -1
  313. package/src/modules/music/policies/music.policies.js +3 -2
  314. package/src/modules/music/router/library.router.js +26 -0
  315. package/src/modules/music/router/music.router.js +176 -0
  316. package/src/modules/music/routes/albums.routes.js +13 -12
  317. package/src/modules/music/routes/tracks.routes.js +39 -0
  318. package/src/modules/music/store/albums.js +10 -2
  319. package/src/modules/music/store/player.js +101 -89
  320. package/src/modules/music/store/tracks.js +5 -21
  321. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  322. package/src/modules/notifications/notifications.server.js +1 -3
  323. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  324. package/src/modules/orders/orders.server.js +0 -1
  325. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  326. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  327. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  328. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  329. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  330. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  331. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  332. package/src/modules/products/components/pages/Categories.vue +9 -6
  333. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  334. package/src/modules/products/components/pages/Product.vue +11 -5
  335. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  336. package/src/modules/products/controllers/categories.controller.js +32 -27
  337. package/src/modules/products/routes/categories.routes.js +1 -1
  338. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  339. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  340. package/src/modules/spots/components/pages/Map.vue +2 -2
  341. package/src/styles/config.scss +6 -6
  342. package/dist/abac-DYoheWuc.js +0 -1031
  343. package/dist/core.abac-DUPBnlk6.js +0 -298
  344. package/dist/core.logger-C3q8A9dl.js +0 -51
  345. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  346. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  347. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  348. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  349. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  350. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  351. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  352. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  353. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  354. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  355. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  356. package/src/modules/auth/auth.router.js +0 -262
  357. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  358. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  359. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  360. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  361. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  362. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  363. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  364. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  365. package/src/modules/governance/reactcode/eslint.config.js +0 -28
  366. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
@@ -0,0 +1,55 @@
1
+ import { W as Nn } from "./main-B9o1iBAZ.js";
2
+ class f extends Nn {
3
+ constructor() {
4
+ super(...arguments), this.group = "CapacitorStorage";
5
+ }
6
+ async configure({ group: e }) {
7
+ typeof e == "string" && (this.group = e);
8
+ }
9
+ async get(e) {
10
+ return { value: this.impl.getItem(this.applyPrefix(e.key)) };
11
+ }
12
+ async set(e) {
13
+ this.impl.setItem(this.applyPrefix(e.key), e.value);
14
+ }
15
+ async remove(e) {
16
+ this.impl.removeItem(this.applyPrefix(e.key));
17
+ }
18
+ async keys() {
19
+ return { keys: this.rawKeys().map((t) => t.substring(this.prefix.length)) };
20
+ }
21
+ async clear() {
22
+ for (const e of this.rawKeys())
23
+ this.impl.removeItem(e);
24
+ }
25
+ async migrate() {
26
+ var e;
27
+ const t = [], s = [], n = "_cap_", o = Object.keys(this.impl).filter((i) => i.indexOf(n) === 0);
28
+ for (const i of o) {
29
+ const r = i.substring(n.length), a = (e = this.impl.getItem(i)) !== null && e !== void 0 ? e : "", { value: l } = await this.get({ key: r });
30
+ typeof l == "string" ? s.push(r) : (await this.set({ key: r, value: a }), t.push(r));
31
+ }
32
+ return { migrated: t, existing: s };
33
+ }
34
+ async removeOld() {
35
+ const e = "_cap_", t = Object.keys(this.impl).filter((s) => s.indexOf(e) === 0);
36
+ for (const s of t)
37
+ this.impl.removeItem(s);
38
+ }
39
+ get impl() {
40
+ return window.localStorage;
41
+ }
42
+ get prefix() {
43
+ return this.group === "NativeStorage" ? "" : `${this.group}.`;
44
+ }
45
+ rawKeys() {
46
+ return Object.keys(this.impl).filter((e) => e.indexOf(this.prefix) === 0);
47
+ }
48
+ applyPrefix(e) {
49
+ return this.prefix + e;
50
+ }
51
+ }
52
+ export {
53
+ f as PreferencesWeb
54
+ };
55
+ //# sourceMappingURL=web-BF3ijvEr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-BF3ijvEr.js","sources":["../../web-BF3ijvEr.js"],"sourcesContent":["import { W as p } from \"./main-B9o1iBAZ.js\";\nclass f extends p {\n constructor() {\n super(...arguments), this.group = \"CapacitorStorage\";\n }\n async configure({ group: e }) {\n typeof e == \"string\" && (this.group = e);\n }\n async get(e) {\n return { value: this.impl.getItem(this.applyPrefix(e.key)) };\n }\n async set(e) {\n this.impl.setItem(this.applyPrefix(e.key), e.value);\n }\n async remove(e) {\n this.impl.removeItem(this.applyPrefix(e.key));\n }\n async keys() {\n return { keys: this.rawKeys().map((t) => t.substring(this.prefix.length)) };\n }\n async clear() {\n for (const e of this.rawKeys())\n this.impl.removeItem(e);\n }\n async migrate() {\n var e;\n const t = [], s = [], n = \"_cap_\", o = Object.keys(this.impl).filter((i) => i.indexOf(n) === 0);\n for (const i of o) {\n const r = i.substring(n.length), a = (e = this.impl.getItem(i)) !== null && e !== void 0 ? e : \"\", { value: l } = await this.get({ key: r });\n typeof l == \"string\" ? s.push(r) : (await this.set({ key: r, value: a }), t.push(r));\n }\n return { migrated: t, existing: s };\n }\n async removeOld() {\n const e = \"_cap_\", t = Object.keys(this.impl).filter((s) => s.indexOf(e) === 0);\n for (const s of t)\n this.impl.removeItem(s);\n }\n get impl() {\n return window.localStorage;\n }\n get prefix() {\n return this.group === \"NativeStorage\" ? \"\" : `${this.group}.`;\n }\n rawKeys() {\n return Object.keys(this.impl).filter((e) => e.indexOf(this.prefix) === 0);\n }\n applyPrefix(e) {\n return this.prefix + e;\n }\n}\nexport {\n f as PreferencesWeb\n};\n"],"names":["p"],"mappings":";AACA,MAAM,UAAUA,GAAE;AAAA,EAChB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,QAAQ;AAAA,EACpC;AAAA,EACA,MAAM,UAAU,EAAE,OAAO,KAAK;AAC5B,WAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,EACxC;AAAA,EACA,MAAM,IAAI,GAAG;AACX,WAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,CAAC,EAAC;AAAA,EAC5D;AAAA,EACA,MAAM,IAAI,GAAG;AACX,SAAK,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,GAAG,EAAE,KAAK;AAAA,EACpD;AAAA,EACA,MAAM,OAAO,GAAG;AACd,SAAK,KAAK,WAAW,KAAK,YAAY,EAAE,GAAG,CAAC;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO;AACX,WAAO,EAAE,MAAM,KAAK,QAAO,EAAG,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,MAAM,CAAC,EAAC;AAAA,EAC3E;AAAA,EACA,MAAM,QAAQ;AACZ,eAAW,KAAK,KAAK,QAAO;AAC1B,WAAK,KAAK,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,MAAM,UAAU;AACd,QAAI;AACJ,UAAM,IAAI,CAAA,GAAI,IAAI,CAAA,GAAI,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC9F,eAAW,KAAK,GAAG;AACjB,YAAM,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,OAAO,QAAQ,MAAM,SAAS,IAAI,IAAI,EAAE,OAAO,MAAM,MAAM,KAAK,IAAI,EAAE,KAAK,EAAC,CAAE;AAC3I,aAAO,KAAK,WAAW,EAAE,KAAK,CAAC,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,GAAG,OAAO,EAAC,CAAE,GAAG,EAAE,KAAK,CAAC;AAAA,IACpF;AACA,WAAO,EAAE,UAAU,GAAG,UAAU,EAAC;AAAA,EACnC;AAAA,EACA,MAAM,YAAY;AAChB,UAAM,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC9E,eAAW,KAAK;AACd,WAAK,KAAK,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,UAAU,kBAAkB,KAAK,GAAG,KAAK,KAAK;AAAA,EAC5D;AAAA,EACA,UAAU;AACR,WAAO,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,KAAK,MAAM,MAAM,CAAC;AAAA,EAC1E;AAAA,EACA,YAAY,GAAG;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;"}
@@ -0,0 +1,96 @@
1
+ import { ref, watch, createBlock, openBlock, Transition, withCtx, createElementBlock, createCommentVNode, normalizeClass, createElementVNode, renderSlot } from "vue";
2
+ const _sfc_main = {
3
+ __name: "BottomSheet",
4
+ props: {
5
+ show: {
6
+ type: Boolean,
7
+ default: false
8
+ },
9
+ options: {
10
+ type: Object,
11
+ default: {
12
+ position: false
13
+ }
14
+ }
15
+ },
16
+ emits: [
17
+ "toggle"
18
+ ],
19
+ setup(__props, { emit: __emit }) {
20
+ const props = __props;
21
+ const emits = __emit;
22
+ const wrapper = ref(null);
23
+ const startY = ref(0);
24
+ const currentY = ref(0);
25
+ const dragging = ref(false);
26
+ watch(() => props.show, (newVal) => {
27
+ if (newVal) {
28
+ document.body.classList.add("no-scroll");
29
+ } else {
30
+ document.body.classList.remove("no-scroll");
31
+ }
32
+ });
33
+ function startDrag(event) {
34
+ dragging.value = true;
35
+ startY.value = event.touches ? event.touches[0].clientY : event.clientY;
36
+ currentY.value = startY.value;
37
+ }
38
+ function onDrag(event) {
39
+ if (!dragging.value) return;
40
+ event.preventDefault();
41
+ currentY.value = event.touches ? event.touches[0].clientY : event.clientY;
42
+ const deltaY = currentY.value - startY.value;
43
+ if (deltaY > 0) {
44
+ wrapper.value.style.top = `${deltaY}px`;
45
+ }
46
+ }
47
+ function endDrag() {
48
+ if (!dragging.value) return;
49
+ dragging.value = false;
50
+ const deltaY = currentY.value - startY.value;
51
+ const threshold = window.innerHeight * 0.2;
52
+ if (deltaY < threshold) {
53
+ wrapper.value.style.top = "";
54
+ } else {
55
+ emits("toggle");
56
+ }
57
+ }
58
+ return (_ctx, _cache) => {
59
+ return openBlock(), createBlock(Transition, {
60
+ name: "slideY",
61
+ mode: "out-in"
62
+ }, {
63
+ default: withCtx(() => [
64
+ __props.show ? (openBlock(), createElementBlock("section", {
65
+ key: 0,
66
+ ref_key: "wrapper",
67
+ ref: wrapper,
68
+ class: normalizeClass(["w-100 bs-black rows-1 h-100 pos-absolute pos-t-0 pos-l-0 z-index-9999", {
69
+ "pd-t-extra": _ctx.MOBILE_APP === "ios"
70
+ }])
71
+ }, [
72
+ createElementVNode("div", {
73
+ onClick: _cache[0] || (_cache[0] = ($event) => emits("toggle")),
74
+ onMousedown: startDrag,
75
+ onTouchstart: startDrag,
76
+ onMousemove: onDrag,
77
+ onTouchmove: onDrag,
78
+ onMouseup: endDrag,
79
+ onTouchend: endDrag,
80
+ onMouseleave: endDrag,
81
+ class: "bs-black pd-small br-b br-solid br-light pos-relative bg-white flex-center flex z-index-2"
82
+ }, _cache[1] || (_cache[1] = [
83
+ createElementVNode("div", { class: "radius-extra pd-nano w-3r h-1r bg-light" }, null, -1)
84
+ ]), 32),
85
+ renderSlot(_ctx.$slots, "default")
86
+ ], 2)) : createCommentVNode("", true)
87
+ ]),
88
+ _: 3
89
+ });
90
+ };
91
+ }
92
+ };
93
+ export {
94
+ _sfc_main as default
95
+ };
96
+ //# sourceMappingURL=BottomSheet.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomSheet.vue.js","sources":["../../../../../src/components/BottomSheet/BottomSheet.vue"],"sourcesContent":["<template>\n <transition name=\"slideY\" mode=\"out-in\">\n <section\n v-if=\"show\"\n ref=\"wrapper\"\n class=\"w-100 bs-black rows-1 h-100 pos-absolute pos-t-0 pos-l-0 z-index-9999\"\n :class=\"{\n 'pd-t-extra': MOBILE_APP === 'ios',\n }\"\n >\n <!-- Toggle To Close -->\n <div\n @click=\"emits('toggle')\"\n @mousedown=\"startDrag\"\n @touchstart=\"startDrag\"\n @mousemove=\"onDrag\"\n @touchmove=\"onDrag\"\n @mouseup=\"endDrag\"\n @touchend=\"endDrag\"\n @mouseleave=\"endDrag\"\n class=\"bs-black pd-small br-b br-solid br-light pos-relative bg-white flex-center flex z-index-2\"\n >\n <div class=\"radius-extra pd-nano w-3r h-1r bg-light\"></div>\n </div>\n \n <slot></slot>\n </section>\n </transition>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\n\nconst props = defineProps({\n show: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: {\n position: false\n }\n }\n})\n\nconst emits = defineEmits([\n 'toggle'\n])\n\nconst wrapper = ref(null)\n\nconst startY = ref(0);\nconst currentY = ref(0);\nconst dragging = ref(false);\n\nwatch(() => props.show, (newVal) => {\n if (newVal) {\n document.body.classList.add('no-scroll');\n } else {\n document.body.classList.remove('no-scroll');\n }\n});\n\nfunction startDrag(event) {\n dragging.value = true;\n startY.value = event.touches ? event.touches[0].clientY : event.clientY;\n currentY.value = startY.value;\n}\n\nfunction onDrag(event) {\n if (!dragging.value) return;\n event.preventDefault(); // Prevent scrolling while dragging\n currentY.value = event.touches ? event.touches[0].clientY : event.clientY;\n const deltaY = currentY.value - startY.value;\n\n if (deltaY > 0) {\n wrapper.value.style.top = `${deltaY}px`;\n }\n}\nfunction endDrag() {\n if (!dragging.value) return;\n\n dragging.value = false;\n\n const deltaY = currentY.value - startY.value;\n const threshold = window.innerHeight * 0.2;\n\n if (deltaY < threshold) {\n // If less than 40%, snap back to the original position\n wrapper.value.style.top = '';\n } else {\n // If more than 40%, hide the element\n emits('toggle')\n // VisualizerWrapper.value.style.top = '';\n }\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAiCA,UAAM,QAAQ;AAad,UAAM,QAAQ;AAId,UAAM,UAAU,IAAI,IAAI;AAExB,UAAM,SAAS,IAAI,CAAC;AACpB,UAAM,WAAW,IAAI,CAAC;AACtB,UAAM,WAAW,IAAI,KAAK;AAE1B,UAAM,MAAM,MAAM,MAAM,CAAC,WAAW;AAClC,UAAI,QAAQ;AACV,iBAAS,KAAK,UAAU,IAAI,WAAW;AAAA,MACzC,OAAO;AACL,iBAAS,KAAK,UAAU,OAAO,WAAW;AAAA,MAC5C;AAAA,IACF,CAAC;AAED,aAAS,UAAU,OAAO;AACxB,eAAS,QAAQ;AACjB,aAAO,QAAQ,MAAM,UAAU,MAAM,QAAQ,CAAC,EAAE,UAAU,MAAM;AAChE,eAAS,QAAQ,OAAO;AAAA,IAC1B;AAEA,aAAS,OAAO,OAAO;AACrB,UAAI,CAAC,SAAS,MAAO;AACrB,YAAM,eAAc;AACpB,eAAS,QAAQ,MAAM,UAAU,MAAM,QAAQ,CAAC,EAAE,UAAU,MAAM;AAClE,YAAM,SAAS,SAAS,QAAQ,OAAO;AAEvC,UAAI,SAAS,GAAG;AACd,gBAAQ,MAAM,MAAM,MAAM,GAAG,MAAM;AAAA,MACrC;AAAA,IACF;AACA,aAAS,UAAU;AACjB,UAAI,CAAC,SAAS,MAAO;AAErB,eAAS,QAAQ;AAEjB,YAAM,SAAS,SAAS,QAAQ,OAAO;AACvC,YAAM,YAAY,OAAO,cAAc;AAEvC,UAAI,SAAS,WAAW;AAEtB,gBAAQ,MAAM,MAAM,MAAM;AAAA,MAC5B,OAAO;AAEL,cAAM,QAAQ;AAAA,MAEhB;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,22 +1,10 @@
1
- import { ref, createElementBlock, openBlock, normalizeClass, withModifiers, createVNode, createCommentVNode, Transition, withCtx, createBlock, renderSlot, Fragment, createTextVNode, toDisplayString, createElementVNode } from "vue";
2
- import Loader from "../Loader/Loader.vue2.js";
1
+ import { ref, createElementBlock, openBlock, normalizeClass, withModifiers, createElementVNode, createCommentVNode, renderSlot, createVNode, createBlock, Fragment, createTextVNode, toDisplayString } from "vue";
2
+ import Loader from "../Loader/Loader.vue.js";
3
3
  import _sfc_main$1 from "../../modules/icons/navigation/IconCheckmark.vue.js";
4
4
  import _sfc_main$2 from "../../modules/icons/navigation/IconCross.vue.js";
5
- /* empty css */
5
+ /* empty css */
6
6
  const _hoisted_1 = ["disabled"];
7
7
  const _hoisted_2 = {
8
- key: 0,
9
- class: "button-content"
10
- };
11
- const _hoisted_3 = {
12
- key: 2,
13
- class: "button-content t-semi t-center w-100 loading t-black"
14
- };
15
- const _hoisted_4 = {
16
- key: 3,
17
- class: "button-content t-center w-100 error"
18
- };
19
- const _hoisted_5 = {
20
8
  key: 0,
21
9
  class: "button-counter font-second flex flex-center"
22
10
  };
@@ -99,6 +87,7 @@ const _sfc_main = {
99
87
  }
100
88
  if (props.callback) setTimeout(() => props.callback(), props.callbackDelay);
101
89
  } catch (err) {
90
+ console.error("=== BUTTON ERROR ===", err);
102
91
  emits("error", err);
103
92
  button.value.classList.replace("bg-main", "bg-fourth-nano");
104
93
  loading.value = false;
@@ -117,35 +106,37 @@ const _sfc_main = {
117
106
  ref: button,
118
107
  class: normalizeClass(["button", { "button--disabled": loading.value || __props.validation }])
119
108
  }, [
120
- createVNode(Transition, {
121
- name: "content",
122
- mode: "out-in"
123
- }, {
124
- default: withCtx(() => [
125
- !loading.value && !error.value && !finished.value || !__props.showLoader ? (openBlock(), createElementBlock("span", _hoisted_2, [
126
- renderSlot(_ctx.$slots, "default")
127
- ])) : loading.value && !error.value && __props.showLoader ? (openBlock(), createBlock(Loader, {
128
- key: 1,
129
- class: "icon button-content pos-relative pos-t-0 pos-l-0 loading"
130
- })) : finished.value && __props.showSucces ? (openBlock(), createElementBlock("span", _hoisted_3, [
131
- __props.text.success ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
132
- createTextVNode(toDisplayString(__props.text.success), 1)
133
- ], 64)) : (openBlock(), createBlock(_sfc_main$1, {
134
- key: 1,
135
- class: "icon"
136
- }))
137
- ])) : error.value ? (openBlock(), createElementBlock("span", _hoisted_4, [
138
- __props.text.error ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
139
- createTextVNode(toDisplayString(__props.text.error), 1)
140
- ], 64)) : (openBlock(), createBlock(_sfc_main$2, {
141
- key: 1,
142
- class: "icon"
143
- }))
144
- ])) : createCommentVNode("", true)
145
- ]),
146
- _: 3
147
- }),
148
- __props.counter ? (openBlock(), createElementBlock("div", _hoisted_5, [
109
+ createElementVNode("span", {
110
+ class: normalizeClass(["button-content", { "hidden": loading.value || error.value || finished.value }])
111
+ }, [
112
+ renderSlot(_ctx.$slots, "default")
113
+ ], 2),
114
+ createElementVNode("span", {
115
+ class: normalizeClass(["button-loader", { "active": loading.value && __props.showLoader }])
116
+ }, [
117
+ createVNode(Loader, { class: "" })
118
+ ], 2),
119
+ createElementVNode("span", {
120
+ class: normalizeClass(["button-success", { "active": finished.value && __props.showSucces }])
121
+ }, [
122
+ __props.text.success ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
123
+ createTextVNode(toDisplayString(__props.text.success), 1)
124
+ ], 64)) : (openBlock(), createBlock(_sfc_main$1, {
125
+ key: 1,
126
+ class: "i-regular"
127
+ }))
128
+ ], 2),
129
+ createElementVNode("span", {
130
+ class: normalizeClass(["button-error", { "active": error.value }])
131
+ }, [
132
+ __props.text.error ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
133
+ createTextVNode(toDisplayString(__props.text.error), 1)
134
+ ], 64)) : (openBlock(), createBlock(_sfc_main$2, {
135
+ key: 1,
136
+ class: "i-regular"
137
+ }))
138
+ ], 2),
139
+ __props.counter ? (openBlock(), createElementBlock("div", _hoisted_2, [
149
140
  createElementVNode("span", null, toDisplayString(__props.counter), 1)
150
141
  ])) : createCommentVNode("", true)
151
142
  ], 10, _hoisted_1);
@@ -155,4 +146,4 @@ const _sfc_main = {
155
146
  export {
156
147
  _sfc_main as default
157
148
  };
158
- //# sourceMappingURL=Button.vue.js.map
149
+ //# sourceMappingURL=Button.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.vue2.js","sources":["../../../../../src/components/Button/Button.vue"],"sourcesContent":["<script setup>\nimport { ref } from 'vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\n\nimport IconCheckmark from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n submit: {\n type: Function,\n default: async () => { console.log('Button click.') }\n },\n text: {\n type: Object,\n default: () => ({\n success: null,\n error: null\n })\n },\n counter: {\n type: Object\n },\n callback: {\n type: Function,\n default: async () => { console.log('Button callback.') }\n },\n callbackDelay: {\n type: Number,\n default: 750\n },\n showSucces: {\n type: Boolean,\n default: true\n },\n showLoader: {\n type: Boolean,\n default: true\n },\n validation: {\n type: Boolean,\n default: false\n },\n})\n\nconst emits = defineEmits(['error'])\n\nconst button = ref(null)\nconst error = ref(null)\nconst loading = ref(false)\nconst finished = ref(false)\n\nasync function Submit() {\n console.log('click')\n \n button.value.style['pointer-events'] = 'none'\n error.value = null\n loading.value = true\n\n // Функция для сброса состояния кнопки\n const resetButton = () => {\n if (button.value) {\n button.value.style.pointerEvents = 'auto'\n loading.value = false\n finished.value = false\n error.value = null\n }\n }\n\n try {\n await props.submit()\n\n button.value.classList.replace('bg-main', 'bg-second')\n loading.value = false\n\n // Используем функцию сброса состояния кнопки здесь\n if (props.showSucces) { \n finished.value = true\n setTimeout(() => {\n resetButton()\n button.value.classList.replace('bg-second', 'bg-main')\n }, 500)\n } else {\n resetButton()\n button.value.classList.replace('bg-second', 'bg-main')\n }\n\n // Если есть callback, мы также установим таймер для его вызова\n if (props.callback) setTimeout(() => props.callback(), props.callbackDelay)\n\n } catch (err) {\n console.error('=== BUTTON ERROR ===', err)\n emits('error', err)\n // Если возникла ошибка, мы изменяем стили и устанавливаем сообщение об ошибке\n button.value.classList.replace('bg-main', 'bg-fourth-nano')\n loading.value = false\n error.value = true\n \n // После задержки снова сбрасываем состояние кнопки\n setTimeout(() => {\n resetButton()\n // Так как класс кнопки был изменен, вернем его в исходное состояние\n button.value.classList.replace('bg-fourth-nano', 'bg-main')\n }, 1330)\n }\n}\n</script>\n\n<template>\n <button \n @click.stop=\"Submit\"\n :disabled=\"validation\"\n ref=\"button\"\n\t\tclass=\"button\"\n :class=\"{ 'button--disabled': loading || validation }\"\n >\n <span class=\"button-content\" :class=\"{ 'hidden': loading || error || finished }\">\n <slot></slot>\n </span>\n\n <span class=\"button-loader\" :class=\"{ 'active': loading && showLoader }\">\n <Loader class=\"\"/>\n </span>\n\n <span class=\"button-success\" :class=\"{ 'active': finished && showSucces }\">\n <template v-if=\"text.success\">{{ text.success }}</template>\n <IconCheckmark v-else class=\"i-regular\" />\n </span>\n\n <span class=\"button-error\" :class=\"{ 'active': error }\">\n <template v-if=\"text.error\">{{ text.error }}</template>\n <IconCross v-else class=\"i-regular\" />\n </span>\n \n <!-- Counter -->\n <div v-if=\"counter\" class=\"button-counter font-second flex flex-center\">\n <span>{{ counter }}</span>\n </div>\n </button>\n</template>\n\n<style lang=\"scss\">\nbutton[disabled] {\n opacity: 0.75 !important;\n pointer-events: none !important;\n cursor: default !important;\n color: rgba(var(--dark), 0.33) !important;\n background: rgba(var(--light), 1) !important;\n}\n\na.button {\n text-box: trim-both cap alphabetic;\n}\n\n.button {\n position: relative;\n display: flex;\n padding: var(--small);\n border-radius: var(--small);\n text-box: trim-both cap alphabetic;\n transform: scale(1);\n opacity: 1;\n align-items: center;\n justify-content: center;\n color: black;\n text-align: center;\n font-size: 1rem;\n letter-spacing: 5%;\n transition: all 0.33s ease;\n\n &:hover {\n cursor: pointer;\n opacity: 0.9;\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n &-small {\n padding: 0.75rem;\n border-radius: 0.5rem;\n height: fit-content;\n }\n\n .button-counter {\n position: absolute;\n right: -8px;\n bottom: -8px;\n background: yellow;\n height: 16px;\n border-radius: 16px;\n width: 16px;\n font-weight: 500;\n text-align: center;\n line-height: 16px;\n font-size: 10px;\n }\n}\n\n.button-content {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.3s ease;\n}\n\n\n.button-loader {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n}\n\n.button-success {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n}\n\n.button-error {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n}\n\n.active {\n opacity: 1;\n}\n\n.hidden {\n opacity: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAqCd,UAAM,QAAQ;AAEd,UAAM,SAAS,IAAI,IAAI;AACvB,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,WAAW,IAAI,KAAK;AAE1B,mBAAe,SAAS;AACtB,cAAQ,IAAI,OAAO;AAEnB,aAAO,MAAM,MAAM,gBAAgB,IAAI;AACvC,YAAM,QAAQ;AACd,cAAQ,QAAQ;AAGhB,YAAM,cAAc,MAAM;AACxB,YAAI,OAAO,OAAO;AAChB,iBAAO,MAAM,MAAM,gBAAgB;AACnC,kBAAQ,QAAQ;AAChB,mBAAS,QAAQ;AACjB,gBAAM,QAAQ;AAAA,QAChB;AAAA,MACF;AAEA,UAAI;AACF,cAAM,MAAM,OAAM;AAElB,eAAO,MAAM,UAAU,QAAQ,WAAW,WAAW;AACrD,gBAAQ,QAAQ;AAGhB,YAAI,MAAM,YAAY;AACpB,mBAAS,QAAQ;AACjB,qBAAW,MAAM;AACf,wBAAW;AACX,mBAAO,MAAM,UAAU,QAAQ,aAAa,SAAS;AAAA,UACvD,GAAG,GAAG;AAAA,QACR,OAAO;AACL,sBAAW;AACX,iBAAO,MAAM,UAAU,QAAQ,aAAa,SAAS;AAAA,QACvD;AAGA,YAAI,MAAM,SAAU,YAAW,MAAM,MAAM,SAAQ,GAAI,MAAM,aAAa;AAAA,MAE5E,SAAS,KAAK;AACZ,gBAAQ,MAAM,wBAAwB,GAAG;AACzC,cAAM,SAAS,GAAG;AAElB,eAAO,MAAM,UAAU,QAAQ,WAAW,gBAAgB;AAC1D,gBAAQ,QAAQ;AAChB,cAAM,QAAQ;AAGd,mBAAW,MAAM;AACf,sBAAW;AAEX,iBAAO,MAAM,UAAU,QAAQ,kBAAkB,SAAS;AAAA,QAC5D,GAAG,IAAI;AAAA,MACT;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createBlock, createVNode, normalizeClass, unref, withCtx, Fragment, renderList, Transition, renderSlot } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
3
  import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
4
- import Loader from "../Loader/Loader.vue2.js";
4
+ import Loader from "../Loader/Loader.vue.js";
5
5
  import _sfc_main$2 from "../Slider/Slider.vue.js";
6
6
  import _sfc_main$1 from "../EmptyState/EmptyState.vue.js";
7
7
  /* empty css */
@@ -1,6 +1,6 @@
1
1
  import { mergeModels, useModel, ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, Fragment, createCommentVNode, createBlock, normalizeClass, withCtx, createVNode, renderList, resolveDynamicComponent, unref, TransitionGroup, renderSlot } from "vue";
2
2
  import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
3
- import Loader from "../Loader/Loader.vue2.js";
3
+ import Loader from "../Loader/Loader.vue.js";
4
4
  import Skeleton from "../Skeleton/Skeleton.vue2.js";
5
5
  import _sfc_main$6 from "../EmptyState/EmptyState.vue.js";
6
6
  import _sfc_main$2 from "../Dropdown/Dropdown.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, nextTick, onMounted, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, normalizeClass, renderSlot, createBlock, createCommentVNode, resolveDynamicComponent, toDisplayString, Transition, withCtx } from "vue";
2
2
  import _sfc_main$1 from "../../modules/icons/actions/IconShow.vue.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = {
6
6
  key: 2,
@@ -158,4 +158,4 @@ const Field = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3699
158
158
  export {
159
159
  Field as default
160
160
  };
161
- //# sourceMappingURL=Field.vue2.js.map
161
+ //# sourceMappingURL=Field.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.vue.js","sources":["../../../../../src/components/Field/Field.vue"],"sourcesContent":["<script setup>\nimport { ref, onMounted, nextTick, watch } from 'vue'\nimport IconShow from '@martyrs/src/modules/icons/actions/IconShow.vue';\nconst emit = defineEmits(['update:field', 'focus', 'blur']);\nconst props = defineProps({\n label: null,\n symbol: null,\n type: 'text',\n placeholder: 'Enter something here',\n field: null,\n value: null,\n validation: false,\n disabled: null,\n tabindex: -1,\n autofocus: false,\n icon: null, // Добавлен пропс для иконки\n name: null, // Имя поля для автозаполнения\n id: null // ID поля\n});\nif (props.value) {\n emit('update:field', props.value)\n}\nconst textarea = ref(null);\nconst input = ref(null);\nconst showPassword = ref(false);\n\nfunction resize() {\n if (!textarea.value) {\n return;\n }\n const el = textarea.value;\n el.style.height = '';\n const scrollHeight = el.scrollHeight;\n if (scrollHeight > 33) {\n el.style.height = scrollHeight + 'px';\n } else {\n el.style.height = '';\n }\n}\nfunction focus() {\n if (props.autofocus) {\n if (props.type === 'textarea' && textarea.value) {\n textarea.value.focus();\n } else if (input.value) {\n input.value.focus();\n }\n }\n}\nwatch(() => props.field, () => {\n if (props.type === 'textarea') {\n nextTick(resize);\n }\n});\nwatch(() => props.autofocus, (newVal) => {\n if (newVal) {\n nextTick(focus);\n }\n});\nonMounted(() => {\n nextTick(focus);\n nextTick(resize);\n});\nconst text = ref(props.field);\n</script>\n<template>\n <div\n :class=\"[\n $attrs.class,\n { 'bg-fourth-nano': validation }\n ]\"\n class=\"field-wrapper flex-center flex-nowrap flex\"\n >\n <!-- Слот для иконки -->\n <slot name=\"icon\" v-if=\"$slots.icon\" />\n <!-- Или компонент иконки через пропс -->\n <component :is=\"icon\" v-else-if=\"icon\" class=\"i-medium t-transp mn-r-thin\" />\n \n <div\n v-if=\"label\"\n class=\"t-transp mn-r-small\"\n >\n <span class=\"t-nowrap\">\n {{label}}\n </span>\n </div>\n <div class=\"w-100 pos-relative\">\n <input\n v-if=\"type !== 'textarea'\"\n ref=\"input\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n :type=\"type === 'password' && !showPassword ? 'password' : type === 'password' ? 'text' : type\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :autofocus=\"autofocus\"\n :name=\"name\"\n :id=\"id\"\n />\n <textarea\n v-else\n ref=\"textarea\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :name=\"name\"\n :id=\"id\"\n />\n </div>\n <IconShow\n v-if=\"type === 'password'\"\n :show=\"!showPassword\"\n @click=\"showPassword = !showPassword\"\n class=\"i-medium cursor-pointer\"\n />\n <slot></slot>\n <div\n v-if=\"symbol\"\n class=\"t-transp mn-l-small\"\n >\n <span>\n {{symbol}}\n </span>\n </div>\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<style scoped>\ninput,\ntextarea,\nspan {\n color: inherit;\n line-height: 1;\n}\ntextarea {\n resize: none;\n overflow: hidden; \n height: 1rem;\n}\n\ninput {\n height: 1rem;\n}\n\ninput[type=\"date\"]::-webkit-calendar-picker-indicator,\ninput[type=\"time\"]::-webkit-calendar-picker-indicator {\n filter: invert(1);\n opacity: 1;\n color: inherit;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,UAAM,OAAO;AACb,UAAM,QAAQ;AAed,QAAI,MAAM,OAAO;AACf,WAAK,gBAAgB,MAAM,KAAK;AAAA,IAClC;AACA,UAAM,WAAW,IAAI,IAAI;AACzB,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,eAAe,IAAI,KAAK;AAE9B,aAAS,SAAS;AAChB,UAAI,CAAC,SAAS,OAAO;AACnB;AAAA,MACF;AACA,YAAM,KAAK,SAAS;AACpB,SAAG,MAAM,SAAS;AAClB,YAAM,eAAe,GAAG;AACxB,UAAI,eAAe,IAAI;AACrB,WAAG,MAAM,SAAS,eAAe;AAAA,MACnC,OAAO;AACL,WAAG,MAAM,SAAS;AAAA,MACpB;AAAA,IACF;AACA,aAAS,QAAQ;AACf,UAAI,MAAM,WAAW;AACnB,YAAI,MAAM,SAAS,cAAc,SAAS,OAAO;AAC/C,mBAAS,MAAM,MAAK;AAAA,QACtB,WAAW,MAAM,OAAO;AACtB,gBAAM,MAAM,MAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACA,UAAM,MAAM,MAAM,OAAO,MAAM;AAC7B,UAAI,MAAM,SAAS,YAAY;AAC7B,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AACD,UAAM,MAAM,MAAM,WAAW,CAAC,WAAW;AACvC,UAAI,QAAQ;AACV,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AACD,cAAU,MAAM;AACd,eAAS,KAAK;AACd,eAAS,MAAM;AAAA,IACjB,CAAC;AACD,UAAM,OAAO,IAAI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, watchEffect, createBlock, openBlock, unref, isRef, withCtx, renderSlot, createVNode, createElementBlock, createCommentVNode, toDisplayString } from "vue";
2
- import Field from "../Field/Field.vue2.js";
3
- import _sfc_main$1 from "../Button/Button.vue.js";
2
+ import Field from "../Field/Field.vue.js";
3
+ import _sfc_main$1 from "../Button/Button.vue2.js";
4
4
  import _sfc_main$2 from "../../modules/icons/navigation/IconArrow.vue.js";
5
5
  import { useI18n } from "vue-i18n";
6
6
  const _hoisted_1 = {
@@ -259,7 +259,7 @@ const _sfc_main = {
259
259
  if (!dialCodeInput.value.startsWith("+")) {
260
260
  dialCodeInput.value = "+" + dialCodeInput.value.replace(/^\+*/, "");
261
261
  }
262
- dialCodeInput.value = dialCodeInput.value.replace(/[^\+\d]/g, "");
262
+ dialCodeInput.value = dialCodeInput.value.replace(/[^+\d]/g, "");
263
263
  const plusCount = (dialCodeInput.value.match(/\+/g) || []).length;
264
264
  if (plusCount > 1) {
265
265
  dialCodeInput.value = "+" + dialCodeInput.value.replace(/\+/g, "");
@@ -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=\"[rootStyle, styles]\" \n ref=\"rootElement\"\n class=\"field-wrapper 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.esc=\"reset\"\n class=\"br-solid br-black-transp-10 br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-regular vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n \n <!-- Новый инпут для ввода кода страны -->\n <input\n v-if=\"dropdownOptions.showDialCodeInSelection\"\n v-model=\"dialCodeInput\"\n @input=\"onDialCodeInput\"\n @focus=\"openDropdown\"\n @blur=\"onDialCodeBlur\"\n @keydown=\"keyboardNav\"\n type=\"text\"\n class=\"vti__country-code-input\"\n :placeholder=\"`+${activeCountry?.dialCode || ''}`\"\n :disabled=\"disabled\"\n :size=\"Math.max((dialCodeInput?.length || 0) + 1, 3)\"\n maxlength=\"5\"\n />\n\n </span>\n \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 <li\n v-for=\"(pb, index) in filteredAndSortedCountries\"\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 \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>\n </div>\n \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<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.js';\n import allCountries from './all-countries.js';\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: '' },\n rootStyle: { type: [String, Array, Object], default: '' },\n dropdownStyle: { type: [String, Array, Object], default: '' },\n listStyle: { type: [String, Array, Object], default: '' },\n inputStyle: { type: [String, Array, Object], default: '' },\n inputId: { type: [String, Array, Object], default: '' },\n Placeholder: { type: [String, Object, Function], default: '' },\n dropdownOptions: { \n type: Object, \n default: () => ({\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n tabindex: 0\n })\n },\n inputOptions: { \n type: Object, \n default: () => ({ \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 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 // Reactive data\n const phone = ref(props.modelValue || '');\n const activeCountryCode = ref('');\n const dialCodeInput = ref('');\n const dialCodeFilter = 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 // Element refs\n const rootElement = ref(null);\n const list = ref(null);\n const input = ref(null);\n\n // Lifecycle hooks\n onMounted(() => {\n if (props.modelValue) {\n phone.value = props.modelValue;\n }\n\n cleanInvalidCharacters();\n\n initializeCountry()\n .then(() => {\n if (!phone.value && props.inputOptions?.showDialCode && activeCountryCode.value) {\n phone.value = `+${activeCountryCode.value}`;\n }\n \n // Инициализируем dialCodeInput\n if (activeCountry.value && props.dropdownOptions.showDialCodeInSelection) {\n dialCodeInput.value = `+${activeCountry.value.dialCode}`;\n }\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 let countries = props.allCountries;\n\n // Фильтрация по onlyCountries/ignoredCountries\n if (props.onlyCountries && props.onlyCountries.length) {\n countries = countries.filter(({ iso2 }) => \n props.onlyCountries.includes(iso2.toUpperCase())\n );\n } else if (props.ignoredCountries && props.ignoredCountries.length) {\n countries = countries.filter(({ iso2 }) =>\n !props.ignoredCountries.includes(iso2.toUpperCase()) && \n !props.ignoredCountries.includes(iso2.toLowerCase())\n );\n }\n\n // Фильтрация по введенному коду страны\n if (dialCodeFilter.value) {\n const filterValue = dialCodeFilter.value.replace('+', '');\n countries = countries.filter(country => \n country.dialCode.startsWith(filterValue)\n );\n }\n\n return countries;\n });\n\n const filteredAndSortedCountries = computed(() => {\n const preferredCountries = getCountries(props.preferredCountries)\n .filter(country => {\n if (!dialCodeFilter.value) return true;\n const filterValue = dialCodeFilter.value.replace('+', '');\n return country.dialCode.startsWith(filterValue);\n })\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 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 // Обновляем dialCodeInput при смене страны\n dialCodeInput.value = `+${newValue.dialCode}`;\n }\n });\n\n watch(() => phoneObject.value.countryCode, (newValue) => {\n activeCountryCode.value = newValue;\n });\n\n watch(() => phoneObject.value.valid, () => {\n emits('validate', phoneObject.value);\n });\n\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 watch(() => props.inputOptions.placeholder, () => {\n resetPlaceholder();\n });\n\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 watch(open, (isDropdownOpened) => {\n if (isDropdownOpened) {\n setDropdownPosition();\n emits('open');\n } else {\n emits('close');\n }\n });\n\n // Methods\n function onDialCodeInput() {\n // Убеждаемся, что символ + всегда есть в начале\n if (!dialCodeInput.value.startsWith('+')) {\n dialCodeInput.value = '+' + dialCodeInput.value.replace(/^\\+*/, '');\n }\n \n // Разрешаем только + и цифры\n dialCodeInput.value = dialCodeInput.value.replace(/[^\\+\\d]/g, '');\n \n // Убеждаемся что + только в начале\n const plusCount = (dialCodeInput.value.match(/\\+/g) || []).length;\n if (plusCount > 1) {\n dialCodeInput.value = '+' + dialCodeInput.value.replace(/\\+/g, '');\n }\n \n dialCodeFilter.value = dialCodeInput.value;\n open.value = true;\n \n // Автовыбор страны если код точно совпадает\n const exactMatch = filteredCountries.value.find(country => \n `+${country.dialCode}` === dialCodeInput.value\n );\n \n if (exactMatch && filteredAndSortedCountries.value.length === 1) {\n choose(exactMatch);\n }\n }\n\n function onDialCodeBlur() {\n setTimeout(() => {\n if (!dialCodeInput.value && activeCountry.value) {\n dialCodeInput.value = `+${activeCountry.value.dialCode}`;\n }\n }, 200);\n }\n\n function openDropdown() {\n if (!props.disabled) {\n open.value = true;\n }\n }\n\n function setCaretPosition(ctrl, pos) {\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\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\n function initializeCountry() {\n return new Promise((resolve) => {\n if (phone.value?.[0] === '+') { \n resolve(); \n return; \n }\n \n if (props.defaultCountry) { \n choose(props.defaultCountry); \n resolve(); \n return; \n }\n \n const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];\n \n if (props.autoDefaultCountry) {\n fetch('https://ip2c.org/s')\n .then((response) => response.text())\n .then((response) => {\n const result = (response || '').toString();\n if (!result || result[0] !== '1') {\n throw new Error('unable to fetch the country');\n }\n return result.substr(2, 2);\n })\n .then((res) => { \n choose(res || activeCountryCode.value); \n })\n .catch((error) => { \n console.warn(error); \n choose(fallbackCountry); \n })\n .finally(() => { \n resolve(); \n });\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(\n phoneObject.value.nationalNumber, \n parsedCountry.iso2\n ).formatInternational();\n } else {\n activeCountryCode.value = parsedCountry.iso2;\n }\n\n dialCodeInput.value = `+${parsedCountry.dialCode}`;\n dialCodeFilter.value = '';\n \n // Закрываем дропдаун\n open.value = false;\n \n // Переводим фокус на основной инпут\n nextTick(() => {\n if (input.value) {\n input.value.focus();\n }\n });\n \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 emitInput(phone.value);\n }\n\n function emitInput(value) {\n emits('update:modelValue', value);\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 dialCodeFilter.value = '';\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 : \n Math.min(filteredAndSortedCountries.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 ? \n filteredAndSortedCountries.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(filteredAndSortedCountries.value[selectedIndex.value]);\n }\n } else { \n // Поиск по названию страны\n if (e.target.classList.contains('vti__country-code-input')) return;\n \n typeToFindInput.value += e.key;\n clearTimeout(typeToFindTimer);\n typeToFindTimer = setTimeout(() => {\n typeToFindInput.value = '';\n }, 700);\n \n nextTick(() => {\n const typedCountryI = filteredAndSortedCountries.value\n .slice(props.preferredCountries.length)\n .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 || \n 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 = filteredAndSortedCountries.value\n .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\n.vue3-reactive-tel-input.disabled .dropdown,\n.vue3-reactive-tel-input.disabled .selection,\n.vue3-reactive-tel-input.disabled input {\n cursor: no-drop;\n}\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\n.vti__dropdown.show {\n max-height: 300px;\n overflow: scroll;\n}\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\n.vti__dropdown-list.below {\n top: 33px;\n}\n\n.vti__dropdown-list.above {\n top: auto;\n bottom: 100%;\n}\n\n.vti__dropdown-item {\n cursor: pointer;\n padding: 4px 15px;\n}\n\n.vti__dropdown-item.highlighted {\n background-color: #f0f0f0;\n}\n\n.vti__dropdown-item.last-preferred {\n border-bottom: 1px solid #cacaca;\n}\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\n.vti__country-code-input {\n max-width: 70px;\n border: none;\n outline: none;\n background: transparent;\n font-size: inherit;\n color: inherit;\n text-align: center;\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=\"[rootStyle, styles]\" \n ref=\"rootElement\"\n class=\"field-wrapper 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.esc=\"reset\"\n class=\"br-solid br-black-transp-10 br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-regular vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n \n <!-- Новый инпут для ввода кода страны -->\n <input\n v-if=\"dropdownOptions.showDialCodeInSelection\"\n v-model=\"dialCodeInput\"\n @input=\"onDialCodeInput\"\n @focus=\"openDropdown\"\n @blur=\"onDialCodeBlur\"\n @keydown=\"keyboardNav\"\n type=\"text\"\n class=\"vti__country-code-input\"\n :placeholder=\"`+${activeCountry?.dialCode || ''}`\"\n :disabled=\"disabled\"\n :size=\"Math.max((dialCodeInput?.length || 0) + 1, 3)\"\n maxlength=\"5\"\n />\n\n </span>\n \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 <li\n v-for=\"(pb, index) in filteredAndSortedCountries\"\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 \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>\n </div>\n \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<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.js';\n import allCountries from './all-countries.js';\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: '' },\n rootStyle: { type: [String, Array, Object], default: '' },\n dropdownStyle: { type: [String, Array, Object], default: '' },\n listStyle: { type: [String, Array, Object], default: '' },\n inputStyle: { type: [String, Array, Object], default: '' },\n inputId: { type: [String, Array, Object], default: '' },\n Placeholder: { type: [String, Object, Function], default: '' },\n dropdownOptions: { \n type: Object, \n default: () => ({\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n tabindex: 0\n })\n },\n inputOptions: { \n type: Object, \n default: () => ({ \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 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 // Reactive data\n const phone = ref(props.modelValue || '');\n const activeCountryCode = ref('');\n const dialCodeInput = ref('');\n const dialCodeFilter = 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 // Element refs\n const rootElement = ref(null);\n const list = ref(null);\n const input = ref(null);\n\n // Lifecycle hooks\n onMounted(() => {\n if (props.modelValue) {\n phone.value = props.modelValue;\n }\n\n cleanInvalidCharacters();\n\n initializeCountry()\n .then(() => {\n if (!phone.value && props.inputOptions?.showDialCode && activeCountryCode.value) {\n phone.value = `+${activeCountryCode.value}`;\n }\n \n // Инициализируем dialCodeInput\n if (activeCountry.value && props.dropdownOptions.showDialCodeInSelection) {\n dialCodeInput.value = `+${activeCountry.value.dialCode}`;\n }\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 let countries = props.allCountries;\n\n // Фильтрация по onlyCountries/ignoredCountries\n if (props.onlyCountries && props.onlyCountries.length) {\n countries = countries.filter(({ iso2 }) => \n props.onlyCountries.includes(iso2.toUpperCase())\n );\n } else if (props.ignoredCountries && props.ignoredCountries.length) {\n countries = countries.filter(({ iso2 }) =>\n !props.ignoredCountries.includes(iso2.toUpperCase()) && \n !props.ignoredCountries.includes(iso2.toLowerCase())\n );\n }\n\n // Фильтрация по введенному коду страны\n if (dialCodeFilter.value) {\n const filterValue = dialCodeFilter.value.replace('+', '');\n countries = countries.filter(country => \n country.dialCode.startsWith(filterValue)\n );\n }\n\n return countries;\n });\n\n const filteredAndSortedCountries = computed(() => {\n const preferredCountries = getCountries(props.preferredCountries)\n .filter(country => {\n if (!dialCodeFilter.value) return true;\n const filterValue = dialCodeFilter.value.replace('+', '');\n return country.dialCode.startsWith(filterValue);\n })\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 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 // Обновляем dialCodeInput при смене страны\n dialCodeInput.value = `+${newValue.dialCode}`;\n }\n });\n\n watch(() => phoneObject.value.countryCode, (newValue) => {\n activeCountryCode.value = newValue;\n });\n\n watch(() => phoneObject.value.valid, () => {\n emits('validate', phoneObject.value);\n });\n\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 watch(() => props.inputOptions.placeholder, () => {\n resetPlaceholder();\n });\n\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 watch(open, (isDropdownOpened) => {\n if (isDropdownOpened) {\n setDropdownPosition();\n emits('open');\n } else {\n emits('close');\n }\n });\n\n // Methods\n function onDialCodeInput() {\n // Убеждаемся, что символ + всегда есть в начале\n if (!dialCodeInput.value.startsWith('+')) {\n dialCodeInput.value = '+' + dialCodeInput.value.replace(/^\\+*/, '');\n }\n \n // Разрешаем только + и цифры\n dialCodeInput.value = dialCodeInput.value.replace(/[^+\\d]/g, '');\n \n // Убеждаемся что + только в начале\n const plusCount = (dialCodeInput.value.match(/\\+/g) || []).length;\n if (plusCount > 1) {\n dialCodeInput.value = '+' + dialCodeInput.value.replace(/\\+/g, '');\n }\n \n dialCodeFilter.value = dialCodeInput.value;\n open.value = true;\n \n // Автовыбор страны если код точно совпадает\n const exactMatch = filteredCountries.value.find(country => \n `+${country.dialCode}` === dialCodeInput.value\n );\n \n if (exactMatch && filteredAndSortedCountries.value.length === 1) {\n choose(exactMatch);\n }\n }\n\n function onDialCodeBlur() {\n setTimeout(() => {\n if (!dialCodeInput.value && activeCountry.value) {\n dialCodeInput.value = `+${activeCountry.value.dialCode}`;\n }\n }, 200);\n }\n\n function openDropdown() {\n if (!props.disabled) {\n open.value = true;\n }\n }\n\n function setCaretPosition(ctrl, pos) {\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\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\n function initializeCountry() {\n return new Promise((resolve) => {\n if (phone.value?.[0] === '+') { \n resolve(); \n return; \n }\n \n if (props.defaultCountry) { \n choose(props.defaultCountry); \n resolve(); \n return; \n }\n \n const fallbackCountry = props.preferredCountries[0] || filteredCountries.value[0];\n \n if (props.autoDefaultCountry) {\n fetch('https://ip2c.org/s')\n .then((response) => response.text())\n .then((response) => {\n const result = (response || '').toString();\n if (!result || result[0] !== '1') {\n throw new Error('unable to fetch the country');\n }\n return result.substr(2, 2);\n })\n .then((res) => { \n choose(res || activeCountryCode.value); \n })\n .catch((error) => { \n console.warn(error); \n choose(fallbackCountry); \n })\n .finally(() => { \n resolve(); \n });\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(\n phoneObject.value.nationalNumber, \n parsedCountry.iso2\n ).formatInternational();\n } else {\n activeCountryCode.value = parsedCountry.iso2;\n }\n\n dialCodeInput.value = `+${parsedCountry.dialCode}`;\n dialCodeFilter.value = '';\n \n // Закрываем дропдаун\n open.value = false;\n \n // Переводим фокус на основной инпут\n nextTick(() => {\n if (input.value) {\n input.value.focus();\n }\n });\n \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 emitInput(phone.value);\n }\n\n function emitInput(value) {\n emits('update:modelValue', value);\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 dialCodeFilter.value = '';\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 : \n Math.min(filteredAndSortedCountries.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 ? \n filteredAndSortedCountries.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(filteredAndSortedCountries.value[selectedIndex.value]);\n }\n } else { \n // Поиск по названию страны\n if (e.target.classList.contains('vti__country-code-input')) return;\n \n typeToFindInput.value += e.key;\n clearTimeout(typeToFindTimer);\n typeToFindTimer = setTimeout(() => {\n typeToFindInput.value = '';\n }, 700);\n \n nextTick(() => {\n const typedCountryI = filteredAndSortedCountries.value\n .slice(props.preferredCountries.length)\n .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 || \n 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 = filteredAndSortedCountries.value\n .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\n.vue3-reactive-tel-input.disabled .dropdown,\n.vue3-reactive-tel-input.disabled .selection,\n.vue3-reactive-tel-input.disabled input {\n cursor: no-drop;\n}\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\n.vti__dropdown.show {\n max-height: 300px;\n overflow: scroll;\n}\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\n.vti__dropdown-list.below {\n top: 33px;\n}\n\n.vti__dropdown-list.above {\n top: auto;\n bottom: 100%;\n}\n\n.vti__dropdown-item {\n cursor: pointer;\n padding: 4px 15px;\n}\n\n.vti__dropdown-item.highlighted {\n background-color: #f0f0f0;\n}\n\n.vti__dropdown-item.last-preferred {\n border-bottom: 1px solid #cacaca;\n}\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\n.vti__country-code-input {\n max-width: 70px;\n border: none;\n outline: none;\n background: transparent;\n font-size: inherit;\n color: inherit;\n text-align: center;\n}\n</style>"],"names":["parsePhoneNumberFromString","list"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, toDisplayString } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
4
4
  const _sfc_main = {
5
5
  props: {
@@ -13,8 +13,7 @@ const _sfc_main = {
13
13
  },
14
14
  centered: {
15
15
  type: Boolean,
16
- default: true
17
- // По умолчанию лоадер центрирован (для обратной совместимости)
16
+ default: false
18
17
  }
19
18
  }
20
19
  };
@@ -58,4 +57,4 @@ const Loader = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]])
58
57
  export {
59
58
  Loader as default
60
59
  };
61
- //# sourceMappingURL=Loader.vue2.js.map
60
+ //# sourceMappingURL=Loader.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loader.vue.js","sources":["../../../../../src/components/Loader/Loader.vue"],"sourcesContent":["<template>\n <div class=\"circular-loader pos-relative z-index-1 w-100 h-100 w-max-2r h-max-2r\" :class=\"{ 'circular-loader-centered': centered }\">\n <svg viewBox=\"25 25 50 50\">\n <circle class=\"circular-loader-fill\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n <circle class=\"circular-loader-circle\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n </svg>\n <div v-if=\"progress\" class=\"progress-text\">{{ progress }}</div>\n <div v-if=\"status\" class=\"uppercase t-semi w-m-10r status-text\">{{ status }}</div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n progress: {\n type: Number,\n default: null,\n },\n status: {\n type: String,\n default: null,\n },\n centered: {\n type: Boolean,\n default: false\n },\n },\n};\n</script>\n\n<style>\n.circular-loader-centered {\n top: calc(50% - 1rem);\n left: calc(50% - 1rem);\n}\n\n.circular-loader svg {\n animation: rotate 2s linear infinite;\n}\n\n.circular-loader-circle {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n stroke-linecap: round;\n stroke: rgb(var(--main));\n animation: dash 1.5s ease-in-out infinite;\n}\n\n.circular-loader-fill {\n stroke-linecap: round;\n stroke: rgba(var(--black),0.2);\n}\n\n.progress-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 0.8rem;\n color: rgb(var(--main));;\n}\n\n.status-text {\n position: absolute;\n top: 120%;\n left: calc(50% - 5rem);\n font-size: 0.8rem;\n width: 10rem !important;\n text-align: center;\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: -124;\n }\n}\n</style>"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode"],"mappings":";;;AAYA,MAAK,YAAU;AAAA,EACb,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;AAGf;;EA3BA,KAAA;AAAA,EAMyB,OAAM;;;EAN/B,KAAA;AAAA,EAOuB,OAAM;;;sBAN3BA,mBAOM,OAAA;AAAA,IAPD,OADPC,eAAA,CACa,wEAAsE,EAAA,4BAAuC,OAAA,UAAQ,CAAA;AAAA;8BAC9HC,mBAGM,OAAA,EAHD,SAAQ,iBAAa;AAAA,MACxBA,mBAAkH,UAAA;AAAA,QAA1G,OAAM;AAAA,QAAuB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;MAC3GA,mBAAoH,UAAA;AAAA,QAA5G,OAAM;AAAA,QAAyB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;;IAEpG,OAAA,yBAAXF,mBAA+D,OAA/D,YAA+DG,gBAAjB,OAAA,QAAQ,GAAA,CAAA,KAN1DC,mBAAA,IAAA,IAAA;AAAA,IAOe,OAAA,uBAAXJ,mBAAkF,OAAlF,YAAkFG,gBAAf,OAAA,MAAM,GAAA,CAAA,KAP7EC,mBAAA,IAAA,IAAA;AAAA;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, watchEffect, createElementBlock, openBlock, createElementVNode, createVNode, Transition, withCtx, createBlock } from "vue";
2
2
  import { Loader } from "../../../../node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js";
3
- import Loader$1 from "../Loader/Loader.vue2.js";
3
+ import Loader$1 from "../Loader/Loader.vue.js";
4
4
  /* empty css */
5
5
  const _hoisted_1 = { class: "pos-relative" };
6
6
  const _hoisted_2 = {
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, onMounted, onUnmounted, createElementBlock, openBlock, createCommentVNode, mergeProps, createElementVNode, createVNode } from "vue";
2
- import Loader from "../Loader/Loader.vue2.js";
2
+ import Loader from "../Loader/Loader.vue.js";
3
3
  import _sfc_main$1 from "../../modules/icons/entities/IconGallery.vue.js";
4
4
  /* empty css */
5
5
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, renderSlot } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
4
4
  const _sfc_main = {
5
5
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  export {
15
15
  _sfc_main as default
16
16
  };
17
- //# sourceMappingURL=Menu.vue.js.map
17
+ //# sourceMappingURL=Menu.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}