@ozdao/martyrs 0.2.505 → 0.2.507

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 (517) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +4 -4
  4. package/dist/_virtual/index2.js +4 -4
  5. package/dist/auth.server.cjs +1 -1
  6. package/dist/auth.server.js +1 -1
  7. package/dist/builder.cjs +52 -60
  8. package/dist/builder.js +52 -60
  9. package/dist/chats.server.cjs +1 -1
  10. package/dist/chats.server.js +1 -1
  11. package/dist/events.server.cjs +1 -1
  12. package/dist/events.server.js +1 -1
  13. package/dist/{mailing-q7sR8gCV.cjs → mailing-Bs9ThyVZ.cjs} +1 -24
  14. package/dist/{mailing-C11EYWm-.js → mailing-DzlhsxCC.js} +1 -24
  15. package/dist/main-AWSb_d2P.cjs +11 -0
  16. package/dist/{main-CJm5myDI.js → main-Dq-UfO4G.js} +2562 -2477
  17. package/dist/martyrs/src/components/Button/Button.vue2.cjs +1 -1
  18. package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
  19. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +3 -3
  20. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  21. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +3 -3
  22. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  23. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +1 -1
  24. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  25. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +15 -46
  26. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  27. package/dist/martyrs/src/components/Feed/Feed.vue.js +22 -53
  28. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/Field/Field.vue.cjs +14 -6
  30. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  31. package/dist/martyrs/src/components/Field/Field.vue.js +14 -6
  32. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  33. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +58 -11
  34. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  35. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +60 -13
  36. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  37. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +1 -1
  38. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  39. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  40. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  42. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  43. package/dist/martyrs/src/components/Loader/{Loader.vue2.cjs → Loader.vue.cjs} +2 -2
  44. package/dist/martyrs/src/components/Loader/{Loader.vue2.js.map → Loader.vue.cjs.map} +1 -1
  45. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  46. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  47. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs +1 -1
  48. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
  49. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  50. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  51. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  52. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  53. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +2 -2
  54. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  55. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  56. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  57. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +1 -1
  58. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -3
  60. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  61. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  62. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +42 -10
  64. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +44 -12
  66. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +11 -15
  68. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +21 -25
  70. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +12 -16
  72. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +33 -37
  74. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +13 -9
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +13 -9
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/auth/views/router/users.cjs +0 -4
  80. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  81. package/dist/martyrs/src/modules/auth/views/router/users.js +0 -4
  82. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  83. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  85. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  87. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +431 -0
  88. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -0
  89. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +431 -0
  90. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -0
  91. package/dist/martyrs/src/modules/community/router/blogposts.cjs +17 -0
  92. package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
  93. package/dist/martyrs/src/modules/community/router/blogposts.js +17 -0
  94. package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
  95. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  97. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -3
  98. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  99. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -3
  100. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
  103. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  104. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  105. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  107. package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  110. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  111. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs +4 -6
  112. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js +4 -6
  114. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
  115. package/dist/martyrs/src/modules/globals/views/components/blocks/{BlockMultiselect.vue2.cjs → BlockMultiselect.vue.cjs} +2 -2
  116. package/dist/martyrs/src/modules/globals/views/components/blocks/{BlockMultiselect.vue2.js.map → BlockMultiselect.vue.cjs.map} +1 -1
  117. package/dist/martyrs/src/modules/globals/views/components/blocks/{BlockMultiselect.vue2.js → BlockMultiselect.vue.js} +2 -2
  118. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js.map +1 -0
  119. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +5 -2
  120. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +6 -3
  122. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  125. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  127. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -3
  128. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  129. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -3
  130. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +324 -0
  132. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
  133. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +324 -0
  134. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
  135. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs +32 -0
  136. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs.map +1 -0
  137. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js +32 -0
  138. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/icons/icons.client.cjs +2 -0
  140. package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/icons/icons.client.js +116 -114
  142. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  143. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +5 -3
  144. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +117 -115
  146. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +11 -36
  149. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  150. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +11 -36
  151. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  152. package/dist/martyrs/src/modules/landing/landing.client.cjs +3 -0
  153. package/dist/martyrs/src/modules/landing/landing.client.cjs.map +1 -1
  154. package/dist/martyrs/src/modules/landing/landing.client.js +3 -0
  155. package/dist/martyrs/src/modules/landing/landing.client.js.map +1 -1
  156. package/dist/martyrs/src/modules/landing/locales/en.cjs +12 -0
  157. package/dist/martyrs/src/modules/landing/locales/en.cjs.map +1 -0
  158. package/dist/martyrs/src/modules/landing/locales/en.js +12 -0
  159. package/dist/martyrs/src/modules/landing/locales/en.js.map +1 -0
  160. package/dist/martyrs/src/modules/landing/locales/index.cjs +10 -0
  161. package/dist/martyrs/src/modules/landing/locales/index.cjs.map +1 -0
  162. package/dist/martyrs/src/modules/landing/locales/index.js +10 -0
  163. package/dist/martyrs/src/modules/landing/locales/index.js.map +1 -0
  164. package/dist/martyrs/src/modules/landing/locales/ru.cjs +12 -0
  165. package/dist/martyrs/src/modules/landing/locales/ru.cjs.map +1 -0
  166. package/dist/martyrs/src/modules/landing/locales/ru.js +12 -0
  167. package/dist/martyrs/src/modules/landing/locales/ru.js.map +1 -0
  168. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
  169. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  170. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  171. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  172. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  173. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  174. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +1 -1
  175. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  176. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
  177. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  178. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +2 -2
  179. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  180. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  181. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  183. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  184. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  185. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  186. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  187. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  188. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  189. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  190. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  191. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  192. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  193. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  194. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  195. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  196. package/dist/martyrs/src/modules/music/router/music.cjs +2 -4
  197. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  198. package/dist/martyrs/src/modules/music/router/music.js +2 -4
  199. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  200. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs +86 -0
  201. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs.map +1 -0
  202. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +86 -0
  203. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -0
  204. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs +103 -0
  205. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs.map +1 -0
  206. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +103 -0
  207. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -0
  208. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +194 -0
  209. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -0
  210. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +194 -0
  211. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -0
  212. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +138 -0
  213. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs.map +1 -0
  214. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +138 -0
  215. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -0
  216. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +189 -0
  217. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -0
  218. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +189 -0
  219. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -0
  220. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +173 -0
  221. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs.map +1 -0
  222. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +173 -0
  223. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -0
  224. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +233 -0
  225. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs.map +1 -0
  226. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +233 -0
  227. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -0
  228. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +234 -0
  229. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs.map +1 -0
  230. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +234 -0
  231. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -0
  232. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +9 -8
  233. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  234. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +9 -8
  235. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  236. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +8 -82
  237. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  238. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +9 -83
  239. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  240. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +119 -0
  241. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs.map +1 -0
  242. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +119 -0
  243. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -0
  244. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +139 -0
  245. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs.map +1 -0
  246. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +139 -0
  247. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -0
  248. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -3
  249. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  250. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -3
  251. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  252. package/dist/martyrs/src/modules/orders/locales/en.cjs +38 -0
  253. package/dist/martyrs/src/modules/orders/locales/en.cjs.map +1 -0
  254. package/dist/martyrs/src/modules/orders/locales/en.js +38 -0
  255. package/dist/martyrs/src/modules/orders/locales/en.js.map +1 -0
  256. package/dist/martyrs/src/modules/orders/locales/index.cjs +10 -0
  257. package/dist/martyrs/src/modules/orders/locales/index.cjs.map +1 -0
  258. package/dist/martyrs/src/modules/orders/locales/index.js +10 -0
  259. package/dist/martyrs/src/modules/orders/locales/index.js.map +1 -0
  260. package/dist/martyrs/src/modules/orders/locales/ru.cjs +38 -0
  261. package/dist/martyrs/src/modules/orders/locales/ru.cjs.map +1 -0
  262. package/dist/martyrs/src/modules/orders/locales/ru.js +38 -0
  263. package/dist/martyrs/src/modules/orders/locales/ru.js.map +1 -0
  264. package/dist/martyrs/src/modules/orders/orders.client.cjs +78 -3
  265. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  266. package/dist/martyrs/src/modules/orders/orders.client.js +80 -5
  267. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  268. package/dist/martyrs/src/modules/orders/router/applications.router.cjs +17 -0
  269. package/dist/martyrs/src/modules/orders/router/applications.router.cjs.map +1 -0
  270. package/dist/martyrs/src/modules/orders/router/applications.router.js +17 -0
  271. package/dist/martyrs/src/modules/orders/router/applications.router.js.map +1 -0
  272. package/dist/martyrs/src/modules/orders/router/customers.router.cjs +18 -0
  273. package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -0
  274. package/dist/martyrs/src/modules/orders/router/customers.router.js +18 -0
  275. package/dist/martyrs/src/modules/orders/router/customers.router.js.map +1 -0
  276. package/dist/martyrs/src/modules/orders/store/applications.cjs +4 -42
  277. package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
  278. package/dist/martyrs/src/modules/orders/store/applications.js +3 -41
  279. package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
  280. package/dist/martyrs/src/modules/orders/store/models/application.cjs +20 -0
  281. package/dist/martyrs/src/modules/orders/store/models/application.cjs.map +1 -0
  282. package/dist/martyrs/src/modules/orders/store/models/application.js +20 -0
  283. package/dist/martyrs/src/modules/orders/store/models/application.js.map +1 -0
  284. package/dist/martyrs/src/modules/orders/store/models/customer.cjs +13 -1
  285. package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
  286. package/dist/martyrs/src/modules/orders/store/models/customer.js +13 -1
  287. package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
  288. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  289. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  290. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  291. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  292. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +18 -194
  293. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  294. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +19 -195
  295. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  296. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  297. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  298. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  299. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
  300. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  301. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  302. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -11
  303. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
  304. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +6 -15
  305. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +1 -1
  306. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  307. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  308. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  309. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  310. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +85 -89
  311. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  312. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +92 -96
  313. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  314. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +5 -1
  315. package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
  316. package/dist/martyrs/src/modules/organizations/router/organizations.js +5 -1
  317. package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
  318. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  319. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  320. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs +3 -6
  321. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
  322. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +3 -6
  323. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  324. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +1 -1
  325. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  326. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  327. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  328. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +2 -2
  329. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  330. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
  331. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  332. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.cjs +1 -1
  333. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  334. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +22 -19
  335. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  336. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +22 -19
  337. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  338. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +27 -18
  339. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  340. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +27 -18
  341. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  342. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
  343. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  344. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  345. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  346. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +1 -1
  347. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  348. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +361 -106
  349. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  350. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +379 -124
  351. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  352. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +20 -6
  353. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  354. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +20 -6
  355. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  356. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +32 -2
  357. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  358. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +33 -3
  359. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  360. package/dist/martyrs/src/modules/products/router/products.router.cjs +15 -0
  361. package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
  362. package/dist/martyrs/src/modules/products/router/products.router.js +15 -0
  363. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  364. package/dist/martyrs/src/modules/products/store/categories.cjs +25 -7
  365. package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
  366. package/dist/martyrs/src/modules/products/store/categories.js +25 -7
  367. package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
  368. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  369. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
  370. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  371. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  372. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +345 -0
  373. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -0
  374. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +345 -0
  375. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -0
  376. package/dist/martyrs/src/modules/spots/router/spots.cjs +17 -0
  377. package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
  378. package/dist/martyrs/src/modules/spots/router/spots.js +17 -0
  379. package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
  380. package/dist/martyrs.cjs.js +1 -1
  381. package/dist/martyrs.css +1 -1
  382. package/dist/martyrs.es.js +1 -1
  383. package/dist/notifications.server.cjs +1 -1
  384. package/dist/notifications.server.js +1 -1
  385. package/dist/orders.server.cjs +459 -201
  386. package/dist/orders.server.js +459 -201
  387. package/dist/organizations.server.cjs +1 -1
  388. package/dist/organizations.server.js +1 -1
  389. package/dist/products.server.cjs +439 -255
  390. package/dist/products.server.js +439 -255
  391. package/dist/style.css +115 -139
  392. package/dist/{tickets.controller-DQQcjyui.js → tickets.controller-C56OvH6v.js} +1 -1
  393. package/dist/{tickets.controller-D0V0gJCA.cjs → tickets.controller-DdnndM6c.cjs} +1 -1
  394. package/dist/wallet.server.cjs +1 -1
  395. package/dist/wallet.server.js +1 -1
  396. package/dist/{web-Dkk0_7TA.js → web-BXajFCU2.js} +1 -1
  397. package/dist/{web-stVkXd0l.cjs → web-DaBwwCQ5.cjs} +1 -1
  398. package/package.json +1 -1
  399. package/src/builder/modes/ssr.dev.js +10 -10
  400. package/src/builder/rspack/rspack.config.ssr.client.js +50 -50
  401. package/src/components/Checkbox/Checkbox.vue +3 -4
  402. package/src/components/Feed/Feed.old.vue +522 -0
  403. package/src/components/Feed/Feed.vue +4 -4
  404. package/src/components/Field/Field.vue +7 -1
  405. package/src/components/FieldBig/FieldBig.vue +62 -8
  406. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  407. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  408. package/src/modules/STYLES.MD +198 -0
  409. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  410. package/src/modules/auth/views/components/pages/ProfileEdit.vue +42 -8
  411. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +9 -11
  412. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +9 -11
  413. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +7 -4
  414. package/src/modules/auth/views/router/users.js +0 -4
  415. package/src/modules/community/components/pages/Posts.vue +444 -0
  416. package/src/modules/community/router/blogposts.js +15 -0
  417. package/src/modules/events/components/pages/EventsBackoffice.vue +1 -1
  418. package/src/modules/globals/views/classes/globals.websocket.js +7 -8
  419. package/src/modules/globals/views/components/blocks/Card.vue +2 -1
  420. package/src/modules/globals/views/components/layouts/Client.vue +1 -2
  421. package/src/modules/globals/views/components/partials/FooterAlt.vue +161 -188
  422. package/src/modules/globals/views/components/sections/Filters.vue +261 -121
  423. package/src/modules/globals/views/components/sections/filters/FilterCheckbox.vue +78 -0
  424. package/src/modules/globals/views/components/sections/filters/FilterDateRange.vue +177 -0
  425. package/src/modules/globals/views/components/sections/filters/FilterRange.vue +51 -50
  426. package/src/modules/icons/entities/IconLock.vue +14 -0
  427. package/src/modules/icons/icons.client.js +2 -1
  428. package/src/modules/icons/pages/IconsPage.vue +4 -2
  429. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +11 -61
  430. package/src/modules/landing/landing.client.js +6 -0
  431. package/src/modules/landing/locales/en.js +9 -0
  432. package/src/modules/landing/locales/index.js +7 -0
  433. package/src/modules/landing/locales/ru.js +9 -0
  434. package/src/modules/music/components/pages/Album.vue +1 -1
  435. package/src/modules/music/components/pages/Playlist.vue +1 -1
  436. package/src/modules/music/components/pages/Track.vue +1 -1
  437. package/src/modules/orders/components/blocks/CardApplication.vue +74 -0
  438. package/src/modules/orders/components/blocks/CardCustomer.vue +90 -0
  439. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +199 -0
  440. package/src/modules/orders/components/forms/FormApplicationDetails.vue +117 -0
  441. package/src/modules/orders/components/forms/FormCustomerDetails.vue +165 -0
  442. package/src/modules/orders/components/forms/FormSelectCustomer.vue +172 -0
  443. package/src/modules/orders/components/pages/Applications.vue +240 -0
  444. package/src/modules/orders/components/pages/Customers.vue +239 -0
  445. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  446. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +5 -76
  447. package/src/modules/orders/components/sections/ApplicationDetails.vue +91 -0
  448. package/src/modules/orders/components/sections/CustomerDetails.vue +107 -0
  449. package/src/modules/orders/locales/en.js +35 -0
  450. package/src/modules/orders/locales/index.js +7 -0
  451. package/src/modules/orders/locales/ru.js +35 -0
  452. package/src/modules/orders/middlewares/applications.verifier.js +189 -0
  453. package/src/modules/orders/middlewares/customers.verifier.js +251 -0
  454. package/src/modules/orders/models/application.model.js +21 -0
  455. package/src/modules/orders/models/customer.model.js +26 -0
  456. package/src/modules/orders/orders.client.js +86 -1
  457. package/src/modules/orders/orders.server.js +3 -1
  458. package/src/modules/orders/router/applications.router.js +15 -0
  459. package/src/modules/orders/router/customers.router.js +17 -0
  460. package/src/modules/orders/routes/applications.routes.js +124 -12
  461. package/src/modules/orders/routes/customers.routes.js +43 -0
  462. package/src/modules/orders/store/applications.js +3 -159
  463. package/src/modules/orders/store/models/application.js +18 -0
  464. package/src/modules/orders/store/models/customer.js +12 -0
  465. package/src/modules/organizations/components/pages/Organization.new.vue +593 -0
  466. package/src/modules/organizations/components/pages/Organization.vue +11 -202
  467. package/src/modules/organizations/components/pages/Organizations.vue +1 -1
  468. package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
  469. package/src/modules/organizations/configs/navigation.organization.config.js +69 -85
  470. package/src/modules/organizations/router/organizations.js +5 -0
  471. package/src/modules/pages/views/components/pages/Page.vue +1 -1
  472. package/src/modules/products/TASKS.MD +157 -0
  473. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  474. package/src/modules/products/components/blocks/ProductImages.vue +1 -1
  475. package/src/modules/products/components/pages/Categories.vue +27 -22
  476. package/src/modules/products/components/pages/CategoryEdit.vue +24 -13
  477. package/src/modules/products/components/pages/Products.vue +415 -174
  478. package/src/modules/products/components/sections/EditVariants.vue +14 -0
  479. package/src/modules/products/components/sections/ProductsRecommended.vue +46 -2
  480. package/src/modules/products/controllers/categories.controller.js +321 -282
  481. package/src/modules/products/controllers/configs/products.lookup.config.js +9 -0
  482. package/src/modules/products/controllers/products.controller.js +2 -1
  483. package/src/modules/products/controllers/queries/products.queries.js +183 -11
  484. package/src/modules/products/middlewares/categories.verifier.js +58 -15
  485. package/src/modules/products/middlewares/variants.verifier.js +12 -0
  486. package/src/modules/products/migrations/categories-to-materialized-path.js +433 -0
  487. package/src/modules/products/migrations/path-to-url.js +27 -0
  488. package/src/modules/products/models/category.model.js +8 -23
  489. package/src/modules/products/models/variant.model.js +3 -0
  490. package/src/modules/products/router/products.router.js +12 -0
  491. package/src/modules/products/store/categories.js +26 -7
  492. package/src/modules/rents/TASK.MD +161 -0
  493. package/src/modules/reports/components/sections/FormReport.vue +1 -1
  494. package/src/modules/spots/components/pages/Spots.vue +342 -0
  495. package/src/modules/spots/router/spots.js +15 -0
  496. package/src/styles/base/all.scss +2 -3
  497. package/src/styles/layout.scss +16 -0
  498. package/dist/main-DTaE01lg.cjs +0 -11
  499. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs +0 -96
  500. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs.map +0 -1
  501. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +0 -96
  502. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +0 -1
  503. package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +0 -1
  504. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  505. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  506. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue2.cjs.map +0 -1
  507. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +0 -155
  508. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +0 -1
  509. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +0 -155
  510. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +0 -1
  511. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +0 -81
  512. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs.map +0 -1
  513. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +0 -81
  514. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js.map +0 -1
  515. package/src/modules/orders/components/sections/FormAddCustomer.vue +0 -152
  516. package/src/modules/orders/components/sections/FormCustomerDetails.vue +0 -67
  517. package/src/modules/orders/controllers/applications.controller.js +0 -122
@@ -1 +1 @@
1
- {"version":3,"file":"Field.vue.cjs","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});\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 />\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 />\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}\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":["ref","watch","nextTick","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,UAAM,OAAO;AACb,UAAM,QAAQ;AAad,QAAI,MAAM,OAAO;AACf,WAAK,gBAAgB,MAAM,KAAK;AAAA,IAClC;AACA,UAAM,WAAWA,IAAAA,IAAI,IAAI;AACzB,UAAM,QAAQA,IAAAA,IAAI,IAAI;AACtB,UAAM,eAAeA,IAAAA,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;AACAC,QAAAA,MAAM,MAAM,MAAM,OAAO,MAAM;AAC7B,UAAI,MAAM,SAAS,YAAY;AAC7BC,YAAAA,SAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AACDD,QAAAA,MAAM,MAAM,MAAM,WAAW,CAAC,WAAW;AACvC,UAAI,QAAQ;AACVC,YAAAA,SAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AACDC,QAAAA,UAAU,MAAM;AACdD,UAAAA,SAAS,KAAK;AACdA,UAAAA,SAAS,MAAM;AAAA,IACjB,CAAC;AACD,UAAM,OAAOF,IAAAA,IAAI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Field.vue.cjs","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}\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":["ref","watch","nextTick","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,UAAM,OAAO;AACb,UAAM,QAAQ;AAed,QAAI,MAAM,OAAO;AACf,WAAK,gBAAgB,MAAM,KAAK;AAAA,IAClC;AACA,UAAM,WAAWA,IAAAA,IAAI,IAAI;AACzB,UAAM,QAAQA,IAAAA,IAAI,IAAI;AACtB,UAAM,eAAeA,IAAAA,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;AACAC,QAAAA,MAAM,MAAM,MAAM,OAAO,MAAM;AAC7B,UAAI,MAAM,SAAS,YAAY;AAC7BC,YAAAA,SAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AACDD,QAAAA,MAAM,MAAM,MAAM,WAAW,CAAC,WAAW;AACvC,UAAI,QAAQ;AACVC,YAAAA,SAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AACDC,QAAAA,UAAU,MAAM;AACdD,UAAAA,SAAS,KAAK;AACdA,UAAAA,SAAS,MAAM;AAAA,IACjB,CAAC;AACD,UAAM,OAAOF,IAAAA,IAAI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -8,8 +8,8 @@ const _hoisted_1 = {
8
8
  };
9
9
  const _hoisted_2 = { class: "t-nowrap" };
10
10
  const _hoisted_3 = { class: "w-100 pos-relative" };
11
- const _hoisted_4 = ["type", "value", "placeholder", "tabindex", "disabled", "autofocus"];
12
- const _hoisted_5 = ["value", "placeholder", "tabindex", "disabled"];
11
+ const _hoisted_4 = ["type", "value", "placeholder", "tabindex", "disabled", "autofocus", "name", "id"];
12
+ const _hoisted_5 = ["value", "placeholder", "tabindex", "disabled", "name", "id"];
13
13
  const _hoisted_6 = {
14
14
  key: 4,
15
15
  class: "t-transp mn-l-small"
@@ -31,8 +31,12 @@ const _sfc_main = {
31
31
  disabled: null,
32
32
  tabindex: -1,
33
33
  autofocus: false,
34
- icon: null
34
+ icon: null,
35
35
  // Добавлен пропс для иконки
36
+ name: null,
37
+ // Имя поля для автозаполнения
38
+ id: null
39
+ // ID поля
36
40
  },
37
41
  emits: ["update:field", "focus", "blur"],
38
42
  setup(__props, { emit: __emit }) {
@@ -110,7 +114,9 @@ const _sfc_main = {
110
114
  placeholder: __props.placeholder,
111
115
  tabindex: __props.tabindex,
112
116
  disabled: __props.disabled,
113
- autofocus: __props.autofocus
117
+ autofocus: __props.autofocus,
118
+ name: __props.name,
119
+ id: __props.id
114
120
  }, null, 40, _hoisted_4)) : (openBlock(), createElementBlock("textarea", {
115
121
  key: 1,
116
122
  ref_key: "textarea",
@@ -122,7 +128,9 @@ const _sfc_main = {
122
128
  value: __props.field,
123
129
  placeholder: __props.placeholder,
124
130
  tabindex: __props.tabindex,
125
- disabled: __props.disabled
131
+ disabled: __props.disabled,
132
+ name: __props.name,
133
+ id: __props.id
126
134
  }, null, 40, _hoisted_5))
127
135
  ]),
128
136
  __props.type === "password" ? (openBlock(), createBlock(_sfc_main$1, {
@@ -146,7 +154,7 @@ const _sfc_main = {
146
154
  };
147
155
  }
148
156
  };
149
- const Field = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-69b12b85"]]);
157
+ const Field = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-985f0e53"]]);
150
158
  export {
151
159
  Field as default
152
160
  };
@@ -1 +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});\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 />\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 />\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}\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;AAad,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
+ {"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}\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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const Field = require("../Field/Field.vue.cjs");
5
+ const Button = require("../Button/Button.vue2.cjs");
5
6
  const IconArrow = require("../../modules/icons/navigation/IconArrow.vue.cjs");
6
7
  const vueI18n = require("vue-i18n");
7
8
  const _hoisted_1 = {
@@ -44,11 +45,42 @@ const _sfc_main = {
44
45
  enableTyping: {
45
46
  type: Boolean,
46
47
  default: false
48
+ },
49
+ showLoader: {
50
+ type: Boolean,
51
+ default: true
52
+ },
53
+ showSuccess: {
54
+ type: Boolean,
55
+ default: true
56
+ },
57
+ callback: {
58
+ type: Function,
59
+ default: null
60
+ },
61
+ callbackDelay: {
62
+ type: Number,
63
+ default: 750
64
+ },
65
+ name: {
66
+ type: String,
67
+ default: null
68
+ },
69
+ id: {
70
+ type: String,
71
+ default: null
72
+ },
73
+ validation: {
74
+ type: [Object, Boolean],
75
+ default: false
47
76
  }
48
77
  },
49
78
  emits: ["update:input", "action"],
50
79
  setup(__props, { emit: __emit }) {
80
+ const uniqueId = Math.random().toString(36).substr(2, 9);
51
81
  const props = __props;
82
+ const fieldName = props.name || `field-big-${uniqueId}`;
83
+ const fieldId = props.id || `field-big-${uniqueId}`;
52
84
  const { t, locale } = vueI18n.useI18n();
53
85
  let placeholderIndex = vue.ref(0);
54
86
  let inputField = vue.ref(props.input);
@@ -59,8 +91,12 @@ const _sfc_main = {
59
91
  let cursorVisible = vue.ref(true);
60
92
  let cursorInterval = null;
61
93
  const emit = __emit;
62
- function emitAction() {
63
- emit("action");
94
+ async function handleAction() {
95
+ const result = emit("action");
96
+ if (result && typeof result.then === "function") {
97
+ return result;
98
+ }
99
+ return Promise.resolve(result);
64
100
  }
65
101
  function updateInput(event) {
66
102
  emit("update:input", event);
@@ -135,19 +171,30 @@ const _sfc_main = {
135
171
  onInput: handleInput,
136
172
  onFocus: handleFocus,
137
173
  onBlur: checkInput,
138
- class: "pd-thin radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-small"
174
+ name: vue.unref(fieldName),
175
+ id: vue.unref(fieldId),
176
+ validation: __props.validation,
177
+ class: "pd-l-medium radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-thin"
139
178
  }, {
140
179
  default: vue.withCtx(() => [
141
- vue.createElementVNode("button", {
142
- onClick: emitAction,
180
+ vue.renderSlot(_ctx.$slots, "default"),
181
+ vue.createVNode(Button.default, {
182
+ submit: handleAction,
183
+ showSucces: __props.showSuccess,
184
+ showLoader: __props.showLoader,
185
+ callback: __props.callback,
186
+ callbackDelay: __props.callbackDelay,
143
187
  class: "t-nowrap t-medium radius-big uppercase cursor-pointer flex flex-v-center pd-thin w-max hover-bg-fifth t-semi transition-linear transition-timing-1 t-black bg-main"
144
- }, [
145
- __props.action ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1, vue.toDisplayString(__props.action), 1)) : vue.createCommentVNode("", true),
146
- vue.createVNode(IconArrow.default, { class: "i-medium" })
147
- ])
188
+ }, {
189
+ default: vue.withCtx(() => [
190
+ __props.action ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1, vue.toDisplayString(__props.action), 1)) : vue.createCommentVNode("", true),
191
+ vue.createVNode(IconArrow.default, { class: "i-medium" })
192
+ ]),
193
+ _: 1
194
+ }, 8, ["showSucces", "showLoader", "callback", "callbackDelay"])
148
195
  ]),
149
- _: 1
150
- }, 8, ["field", "placeholder"]);
196
+ _: 3
197
+ }, 8, ["field", "placeholder", "name", "id", "validation"]);
151
198
  };
152
199
  }
153
200
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBig.vue.cjs","sources":["../../../../../src/components/FieldBig/FieldBig.vue"],"sourcesContent":["<template>\n <Field\n v-model:field=\"inputField\"\n @update:field=\"updateInput\"\n :placeholder=\"typing ? '' : placeholder\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"checkInput\"\n class=\"pd-thin radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-small\"\n >\n <button\n @click=\"emitAction\" \n class=\"t-nowrap t-medium radius-big uppercase cursor-pointer flex flex-v-center pd-thin w-max hover-bg-fifth t-semi transition-linear transition-timing-1 t-black bg-main\" \n >\n <span v-if=\"action\" class=\"desktop-only mn-r-thin\">{{action}}</span>\n <IconArrow class=\"i-medium\"/>\n </button>\n</Field>\n</template>\n\n<script setup=\"props\">\n import { ref, watchEffect, onMounted } from 'vue'\n import Field from '@martyrs/src/components/Field/Field.vue'\n import IconArrow from '@martyrs/src/modules/icons/navigation/IconArrow.vue'\n import { useI18n } from 'vue-i18n'\n\n const props = defineProps({\n input: String,\n placeholder: {\n type: String\n },\n action: {\n type: String\n },\n placeholderTexts: {\n type: Object,\n default: () => ({\n en: [\n 'Lowest THC, please!',\n 'Something with banana flavors?',\n \"I'm in the mood for trippy vibes.\"\n ],\n ru: [\n 'Я хочу самый низкий THC',\n 'Я хочу чего-нибудь бананового',\n 'Я хочу курнуть хейза'\n ],\n })\n },\n typingSpeed: {\n type: Number,\n default: 200\n },\n loopTyping: {\n type: Boolean,\n default: false\n },\n enableTyping: {\n type: Boolean,\n default: false\n }\n });\n\n const { t, locale } = useI18n()\n\n let placeholderIndex = ref(0)\n\n let inputField = ref(props.input)\n let inputPlaceholder = ref(props.placeholder)\n let typing = ref(props.enableTyping)\n let typeInterval = ref(null)\n let userText = ref('') // Stores user input\n let cursorVisible = ref(true)\n let cursorInterval = null\n\n const emit = defineEmits(['update:input', 'action']);\n\n function emitAction() {\n emit('action')\n }\n \n function updateInput(event) {\n emit('update:input', event)\n userText.value = event // Stores user input\n }\n\n function handleInput() {\n placeholderIndex.value = (placeholderIndex.value + 1) % props.placeholderTexts[locale.value].length\n }\n\n function handleFocus() {\n typing.value = false\n\n clearInterval(typeInterval.value)\n\n inputPlaceholder.value = props.placeholder\n\n if (!userText.value) {\n inputField.value = ''\n }\n }\n\n function checkInput() {\n if (!userText.value && props.enableTyping) {\n typing.value = true\n inputPlaceholder.value = ''\n startTyping()\n }\n }\n\n function startTyping() {\n let placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n let i = 0\n let typingBackwards = false\n \n // Start the cursor blinking\n cursorInterval = setInterval(() => {\n cursorVisible.value = !cursorVisible.value\n }, 200)\n\n typeInterval.value = setInterval(() => {\n if (typing.value) {\n if (!typingBackwards) {\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i++\n } else {\n inputField.value = inputField.value.slice(0, -1)\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i--\n }\n\n if (i > placeholderText.length && props.loopTyping) {\n setTimeout(() => {\n typingBackwards = true\n inputField.value = placeholderText.substring(0, i)\n }, 333)\n }\n\n if (i === 0 && typingBackwards) {\n typingBackwards = false\n handleInput()\n placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n }\n }\n }, props.typingSpeed)\n }\n\n\n onMounted(() => {\n if (props.enableTyping) startTyping()\n })\n\n watchEffect(() => {\n if (!typing.value) {\n clearInterval(typeInterval.value)\n clearInterval(cursorInterval)\n }\n })\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["useI18n","ref","onMounted","watchEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BE,UAAM,QAAQ;AAqCd,UAAM,EAAE,GAAG,OAAM,IAAKA,QAAAA,QAAO;AAE7B,QAAI,mBAAmBC,IAAAA,IAAI,CAAC;AAE5B,QAAI,aAAaA,QAAI,MAAM,KAAK;AAChC,QAAI,mBAAmBA,QAAI,MAAM,WAAW;AAC5C,QAAI,SAASA,QAAI,MAAM,YAAY;AACnC,QAAI,eAAeA,IAAAA,IAAI,IAAI;AAC3B,QAAI,WAAWA,IAAAA,IAAI,EAAE;AACrB,QAAI,gBAAgBA,IAAAA,IAAI,IAAI;AAC5B,QAAI,iBAAiB;AAErB,UAAM,OAAO;AAEb,aAAS,aAAa;AACpB,WAAK,QAAQ;AAAA,IACf;AAEA,aAAS,YAAY,OAAO;AACzB,WAAK,gBAAgB,KAAK;AAC1B,eAAS,QAAQ;AAAA,IACpB;AAEA,aAAS,cAAc;AACrB,uBAAiB,SAAS,iBAAiB,QAAQ,KAAK,MAAM,iBAAiB,OAAO,KAAK,EAAE;AAAA,IAC/F;AAEA,aAAS,cAAc;AACrB,aAAO,QAAQ;AAEf,oBAAc,aAAa,KAAK;AAEhC,uBAAiB,QAAQ,MAAM;AAE/B,UAAI,CAAC,SAAS,OAAO;AACnB,mBAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAEA,aAAS,aAAa;AACpB,UAAI,CAAC,SAAS,SAAS,MAAM,cAAc;AACzC,eAAO,QAAQ;AACf,yBAAiB,QAAQ;AACzB,oBAAW;AAAA,MACb;AAAA,IACF;AAEA,aAAS,cAAc;AACrB,UAAI,kBAAkB,MAAM,iBAAiB,OAAO,KAAK,EAAE,iBAAiB,KAAK;AACjF,UAAI,IAAI;AACR,UAAI,kBAAkB;AAGtB,uBAAiB,YAAY,MAAM;AACjC,sBAAc,QAAQ,CAAC,cAAc;AAAA,MACvC,GAAG,GAAG;AAEN,mBAAa,QAAQ,YAAY,MAAM;AACrC,YAAI,OAAO,OAAO;AAChB,cAAI,CAAC,iBAAiB;AACpB,uBAAW,QAAQ,gBAAgB,UAAU,GAAG,CAAC,KAAK,cAAc,SAAS,IAAI,IAAI,MAAM;AAC3F;AAAA,UACF,OAAO;AACL,uBAAW,QAAQ,WAAW,MAAM,MAAM,GAAG,EAAE;AAC/C,uBAAW,QAAQ,gBAAgB,UAAU,GAAG,CAAC,KAAK,cAAc,SAAS,IAAI,IAAI,MAAM;AAC3F;AAAA,UACF;AAEA,cAAI,IAAI,gBAAgB,UAAU,MAAM,YAAY;AAClD,uBAAW,MAAM;AACf,gCAAkB;AAClB,yBAAW,QAAQ,gBAAgB,UAAU,GAAG,CAAC;AAAA,YACnD,GAAG,GAAG;AAAA,UACR;AAEA,cAAI,MAAM,KAAK,iBAAiB;AAC9B,8BAAkB;AAClB,wBAAW;AACX,8BAAkB,MAAM,iBAAiB,OAAO,KAAK,EAAE,iBAAiB,KAAK;AAAA,UAC/E;AAAA,QACF;AAAA,MACF,GAAG,MAAM,WAAW;AAAA,IACtB;AAGAC,QAAAA,UAAU,MAAM;AACd,UAAI,MAAM,aAAc,aAAW;AAAA,IACrC,CAAC;AAEDC,QAAAA,YAAY,MAAM;AAChB,UAAI,CAAC,OAAO,OAAO;AACjB,sBAAc,aAAa,KAAK;AAChC,sBAAc,cAAc;AAAA,MAC9B;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FieldBig.vue.cjs","sources":["../../../../../src/components/FieldBig/FieldBig.vue"],"sourcesContent":["<template>\n <Field\n v-model:field=\"inputField\"\n @update:field=\"updateInput\"\n :placeholder=\"typing ? '' : placeholder\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"checkInput\"\n :name=\"fieldName\"\n :id=\"fieldId\"\n :validation=\"validation\"\n class=\"pd-l-medium radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-thin\"\n >\n <slot></slot>\n <Button\n :submit=\"handleAction\"\n :showSucces=\"showSuccess\"\n :showLoader=\"showLoader\"\n :callback=\"callback\"\n :callbackDelay=\"callbackDelay\"\n class=\"t-nowrap t-medium radius-big uppercase cursor-pointer flex flex-v-center pd-thin w-max hover-bg-fifth t-semi transition-linear transition-timing-1 t-black bg-main\"\n >\n <span v-if=\"action\" class=\"desktop-only mn-r-thin\">{{action}}</span>\n <IconArrow class=\"i-medium\"/>\n </Button>\n</Field>\n</template>\n\n<script setup=\"props\">\n import { ref, watchEffect, onMounted } from 'vue'\n import Field from '@martyrs/src/components/Field/Field.vue'\n import Button from '@martyrs/src/components/Button/Button.vue'\n import IconArrow from '@martyrs/src/modules/icons/navigation/IconArrow.vue'\n import { useI18n } from 'vue-i18n'\n\n // Генерируем уникальный ID для каждого экземпляра\n const uniqueId = Math.random().toString(36).substr(2, 9)\n\n const props = defineProps({\n input: String,\n placeholder: {\n type: String\n },\n action: {\n type: String\n },\n placeholderTexts: {\n type: Object,\n default: () => ({\n en: [\n 'Lowest THC, please!',\n 'Something with banana flavors?',\n \"I'm in the mood for trippy vibes.\"\n ],\n ru: [\n 'Я хочу самый низкий THC',\n 'Я хочу чего-нибудь бананового',\n 'Я хочу курнуть хейза'\n ],\n })\n },\n typingSpeed: {\n type: Number,\n default: 200\n },\n loopTyping: {\n type: Boolean,\n default: false\n },\n enableTyping: {\n type: Boolean,\n default: false\n },\n showLoader: {\n type: Boolean,\n default: true\n },\n showSuccess: {\n type: Boolean,\n default: true\n },\n callback: {\n type: Function,\n default: null\n },\n callbackDelay: {\n type: Number,\n default: 750\n },\n name: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: null\n },\n validation: {\n type: [Object, Boolean],\n default: false\n }\n });\n\n // Уникальные имена для полей\n const fieldName = props.name || `field-big-${uniqueId}`\n const fieldId = props.id || `field-big-${uniqueId}`\n\n const { t, locale } = useI18n()\n\n let placeholderIndex = ref(0)\n\n let inputField = ref(props.input)\n let inputPlaceholder = ref(props.placeholder)\n let typing = ref(props.enableTyping)\n let typeInterval = ref(null)\n let userText = ref('') // Stores user input\n let cursorVisible = ref(true)\n let cursorInterval = null\n\n const emit = defineEmits(['update:input', 'action']);\n\n function emitAction() {\n emit('action')\n }\n\n async function handleAction() {\n const result = emit('action')\n // Если обработчик вернул промис, ждем его\n if (result && typeof result.then === 'function') {\n return result\n }\n // Иначе возвращаем resolved промис\n return Promise.resolve(result)\n }\n \n function updateInput(event) {\n emit('update:input', event)\n userText.value = event // Stores user input\n }\n\n function handleInput() {\n placeholderIndex.value = (placeholderIndex.value + 1) % props.placeholderTexts[locale.value].length\n }\n\n function handleFocus() {\n typing.value = false\n\n clearInterval(typeInterval.value)\n\n inputPlaceholder.value = props.placeholder\n\n if (!userText.value) {\n inputField.value = ''\n }\n }\n\n function checkInput() {\n if (!userText.value && props.enableTyping) {\n typing.value = true\n inputPlaceholder.value = ''\n startTyping()\n }\n }\n\n function startTyping() {\n let placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n let i = 0\n let typingBackwards = false\n \n // Start the cursor blinking\n cursorInterval = setInterval(() => {\n cursorVisible.value = !cursorVisible.value\n }, 200)\n\n typeInterval.value = setInterval(() => {\n if (typing.value) {\n if (!typingBackwards) {\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i++\n } else {\n inputField.value = inputField.value.slice(0, -1)\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i--\n }\n\n if (i > placeholderText.length && props.loopTyping) {\n setTimeout(() => {\n typingBackwards = true\n inputField.value = placeholderText.substring(0, i)\n }, 333)\n }\n\n if (i === 0 && typingBackwards) {\n typingBackwards = false\n handleInput()\n placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n }\n }\n }, props.typingSpeed)\n }\n\n\n onMounted(() => {\n if (props.enableTyping) startTyping()\n })\n\n watchEffect(() => {\n if (!typing.value) {\n clearInterval(typeInterval.value)\n clearInterval(cursorInterval)\n }\n })\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["useI18n","ref","onMounted","watchEffect"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { ref, onMounted, watchEffect, createBlock, openBlock, unref, isRef, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, toDisplayString } from "vue";
1
+ import { ref, onMounted, watchEffect, createBlock, openBlock, unref, isRef, withCtx, renderSlot, createVNode, createElementBlock, createCommentVNode, toDisplayString } from "vue";
2
2
  import Field from "../Field/Field.vue.js";
3
- import _sfc_main$1 from "../../modules/icons/navigation/IconArrow.vue.js";
3
+ import _sfc_main$1 from "../Button/Button.vue2.js";
4
+ import _sfc_main$2 from "../../modules/icons/navigation/IconArrow.vue.js";
4
5
  import { useI18n } from "vue-i18n";
5
6
  const _hoisted_1 = {
6
7
  key: 0,
@@ -42,11 +43,42 @@ const _sfc_main = {
42
43
  enableTyping: {
43
44
  type: Boolean,
44
45
  default: false
46
+ },
47
+ showLoader: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ showSuccess: {
52
+ type: Boolean,
53
+ default: true
54
+ },
55
+ callback: {
56
+ type: Function,
57
+ default: null
58
+ },
59
+ callbackDelay: {
60
+ type: Number,
61
+ default: 750
62
+ },
63
+ name: {
64
+ type: String,
65
+ default: null
66
+ },
67
+ id: {
68
+ type: String,
69
+ default: null
70
+ },
71
+ validation: {
72
+ type: [Object, Boolean],
73
+ default: false
45
74
  }
46
75
  },
47
76
  emits: ["update:input", "action"],
48
77
  setup(__props, { emit: __emit }) {
78
+ const uniqueId = Math.random().toString(36).substr(2, 9);
49
79
  const props = __props;
80
+ const fieldName = props.name || `field-big-${uniqueId}`;
81
+ const fieldId = props.id || `field-big-${uniqueId}`;
50
82
  const { t, locale } = useI18n();
51
83
  let placeholderIndex = ref(0);
52
84
  let inputField = ref(props.input);
@@ -57,8 +89,12 @@ const _sfc_main = {
57
89
  let cursorVisible = ref(true);
58
90
  let cursorInterval = null;
59
91
  const emit = __emit;
60
- function emitAction() {
61
- emit("action");
92
+ async function handleAction() {
93
+ const result = emit("action");
94
+ if (result && typeof result.then === "function") {
95
+ return result;
96
+ }
97
+ return Promise.resolve(result);
62
98
  }
63
99
  function updateInput(event) {
64
100
  emit("update:input", event);
@@ -133,19 +169,30 @@ const _sfc_main = {
133
169
  onInput: handleInput,
134
170
  onFocus: handleFocus,
135
171
  onBlur: checkInput,
136
- class: "pd-thin radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-small"
172
+ name: unref(fieldName),
173
+ id: unref(fieldId),
174
+ validation: __props.validation,
175
+ class: "pd-l-medium radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-thin"
137
176
  }, {
138
177
  default: withCtx(() => [
139
- createElementVNode("button", {
140
- onClick: emitAction,
178
+ renderSlot(_ctx.$slots, "default"),
179
+ createVNode(_sfc_main$1, {
180
+ submit: handleAction,
181
+ showSucces: __props.showSuccess,
182
+ showLoader: __props.showLoader,
183
+ callback: __props.callback,
184
+ callbackDelay: __props.callbackDelay,
141
185
  class: "t-nowrap t-medium radius-big uppercase cursor-pointer flex flex-v-center pd-thin w-max hover-bg-fifth t-semi transition-linear transition-timing-1 t-black bg-main"
142
- }, [
143
- __props.action ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(__props.action), 1)) : createCommentVNode("", true),
144
- createVNode(_sfc_main$1, { class: "i-medium" })
145
- ])
186
+ }, {
187
+ default: withCtx(() => [
188
+ __props.action ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(__props.action), 1)) : createCommentVNode("", true),
189
+ createVNode(_sfc_main$2, { class: "i-medium" })
190
+ ]),
191
+ _: 1
192
+ }, 8, ["showSucces", "showLoader", "callback", "callbackDelay"])
146
193
  ]),
147
- _: 1
148
- }, 8, ["field", "placeholder"]);
194
+ _: 3
195
+ }, 8, ["field", "placeholder", "name", "id", "validation"]);
149
196
  };
150
197
  }
151
198
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBig.vue.js","sources":["../../../../../src/components/FieldBig/FieldBig.vue"],"sourcesContent":["<template>\n <Field\n v-model:field=\"inputField\"\n @update:field=\"updateInput\"\n :placeholder=\"typing ? '' : placeholder\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"checkInput\"\n class=\"pd-thin radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-small\"\n >\n <button\n @click=\"emitAction\" \n class=\"t-nowrap t-medium radius-big uppercase cursor-pointer flex flex-v-center pd-thin w-max hover-bg-fifth t-semi transition-linear transition-timing-1 t-black bg-main\" \n >\n <span v-if=\"action\" class=\"desktop-only mn-r-thin\">{{action}}</span>\n <IconArrow class=\"i-medium\"/>\n </button>\n</Field>\n</template>\n\n<script setup=\"props\">\n import { ref, watchEffect, onMounted } from 'vue'\n import Field from '@martyrs/src/components/Field/Field.vue'\n import IconArrow from '@martyrs/src/modules/icons/navigation/IconArrow.vue'\n import { useI18n } from 'vue-i18n'\n\n const props = defineProps({\n input: String,\n placeholder: {\n type: String\n },\n action: {\n type: String\n },\n placeholderTexts: {\n type: Object,\n default: () => ({\n en: [\n 'Lowest THC, please!',\n 'Something with banana flavors?',\n \"I'm in the mood for trippy vibes.\"\n ],\n ru: [\n 'Я хочу самый низкий THC',\n 'Я хочу чего-нибудь бананового',\n 'Я хочу курнуть хейза'\n ],\n })\n },\n typingSpeed: {\n type: Number,\n default: 200\n },\n loopTyping: {\n type: Boolean,\n default: false\n },\n enableTyping: {\n type: Boolean,\n default: false\n }\n });\n\n const { t, locale } = useI18n()\n\n let placeholderIndex = ref(0)\n\n let inputField = ref(props.input)\n let inputPlaceholder = ref(props.placeholder)\n let typing = ref(props.enableTyping)\n let typeInterval = ref(null)\n let userText = ref('') // Stores user input\n let cursorVisible = ref(true)\n let cursorInterval = null\n\n const emit = defineEmits(['update:input', 'action']);\n\n function emitAction() {\n emit('action')\n }\n \n function updateInput(event) {\n emit('update:input', event)\n userText.value = event // Stores user input\n }\n\n function handleInput() {\n placeholderIndex.value = (placeholderIndex.value + 1) % props.placeholderTexts[locale.value].length\n }\n\n function handleFocus() {\n typing.value = false\n\n clearInterval(typeInterval.value)\n\n inputPlaceholder.value = props.placeholder\n\n if (!userText.value) {\n inputField.value = ''\n }\n }\n\n function checkInput() {\n if (!userText.value && props.enableTyping) {\n typing.value = true\n inputPlaceholder.value = ''\n startTyping()\n }\n }\n\n function startTyping() {\n let placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n let i = 0\n let typingBackwards = false\n \n // Start the cursor blinking\n cursorInterval = setInterval(() => {\n cursorVisible.value = !cursorVisible.value\n }, 200)\n\n typeInterval.value = setInterval(() => {\n if (typing.value) {\n if (!typingBackwards) {\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i++\n } else {\n inputField.value = inputField.value.slice(0, -1)\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i--\n }\n\n if (i > placeholderText.length && props.loopTyping) {\n setTimeout(() => {\n typingBackwards = true\n inputField.value = placeholderText.substring(0, i)\n }, 333)\n }\n\n if (i === 0 && typingBackwards) {\n typingBackwards = false\n handleInput()\n placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n }\n }\n }, props.typingSpeed)\n }\n\n\n onMounted(() => {\n if (props.enableTyping) startTyping()\n })\n\n watchEffect(() => {\n if (!typing.value) {\n clearInterval(typeInterval.value)\n clearInterval(cursorInterval)\n }\n })\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BE,UAAM,QAAQ;AAqCd,UAAM,EAAE,GAAG,OAAM,IAAK,QAAO;AAE7B,QAAI,mBAAmB,IAAI,CAAC;AAE5B,QAAI,aAAa,IAAI,MAAM,KAAK;AAChC,QAAI,mBAAmB,IAAI,MAAM,WAAW;AAC5C,QAAI,SAAS,IAAI,MAAM,YAAY;AACnC,QAAI,eAAe,IAAI,IAAI;AAC3B,QAAI,WAAW,IAAI,EAAE;AACrB,QAAI,gBAAgB,IAAI,IAAI;AAC5B,QAAI,iBAAiB;AAErB,UAAM,OAAO;AAEb,aAAS,aAAa;AACpB,WAAK,QAAQ;AAAA,IACf;AAEA,aAAS,YAAY,OAAO;AACzB,WAAK,gBAAgB,KAAK;AAC1B,eAAS,QAAQ;AAAA,IACpB;AAEA,aAAS,cAAc;AACrB,uBAAiB,SAAS,iBAAiB,QAAQ,KAAK,MAAM,iBAAiB,OAAO,KAAK,EAAE;AAAA,IAC/F;AAEA,aAAS,cAAc;AACrB,aAAO,QAAQ;AAEf,oBAAc,aAAa,KAAK;AAEhC,uBAAiB,QAAQ,MAAM;AAE/B,UAAI,CAAC,SAAS,OAAO;AACnB,mBAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAEA,aAAS,aAAa;AACpB,UAAI,CAAC,SAAS,SAAS,MAAM,cAAc;AACzC,eAAO,QAAQ;AACf,yBAAiB,QAAQ;AACzB,oBAAW;AAAA,MACb;AAAA,IACF;AAEA,aAAS,cAAc;AACrB,UAAI,kBAAkB,MAAM,iBAAiB,OAAO,KAAK,EAAE,iBAAiB,KAAK;AACjF,UAAI,IAAI;AACR,UAAI,kBAAkB;AAGtB,uBAAiB,YAAY,MAAM;AACjC,sBAAc,QAAQ,CAAC,cAAc;AAAA,MACvC,GAAG,GAAG;AAEN,mBAAa,QAAQ,YAAY,MAAM;AACrC,YAAI,OAAO,OAAO;AAChB,cAAI,CAAC,iBAAiB;AACpB,uBAAW,QAAQ,gBAAgB,UAAU,GAAG,CAAC,KAAK,cAAc,SAAS,IAAI,IAAI,MAAM;AAC3F;AAAA,UACF,OAAO;AACL,uBAAW,QAAQ,WAAW,MAAM,MAAM,GAAG,EAAE;AAC/C,uBAAW,QAAQ,gBAAgB,UAAU,GAAG,CAAC,KAAK,cAAc,SAAS,IAAI,IAAI,MAAM;AAC3F;AAAA,UACF;AAEA,cAAI,IAAI,gBAAgB,UAAU,MAAM,YAAY;AAClD,uBAAW,MAAM;AACf,gCAAkB;AAClB,yBAAW,QAAQ,gBAAgB,UAAU,GAAG,CAAC;AAAA,YACnD,GAAG,GAAG;AAAA,UACR;AAEA,cAAI,MAAM,KAAK,iBAAiB;AAC9B,8BAAkB;AAClB,wBAAW;AACX,8BAAkB,MAAM,iBAAiB,OAAO,KAAK,EAAE,iBAAiB,KAAK;AAAA,UAC/E;AAAA,QACF;AAAA,MACF,GAAG,MAAM,WAAW;AAAA,IACtB;AAGA,cAAU,MAAM;AACd,UAAI,MAAM,aAAc,aAAW;AAAA,IACrC,CAAC;AAED,gBAAY,MAAM;AAChB,UAAI,CAAC,OAAO,OAAO;AACjB,sBAAc,aAAa,KAAK;AAChC,sBAAc,cAAc;AAAA,MAC9B;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FieldBig.vue.js","sources":["../../../../../src/components/FieldBig/FieldBig.vue"],"sourcesContent":["<template>\n <Field\n v-model:field=\"inputField\"\n @update:field=\"updateInput\"\n :placeholder=\"typing ? '' : placeholder\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"checkInput\"\n :name=\"fieldName\"\n :id=\"fieldId\"\n :validation=\"validation\"\n class=\"pd-l-medium radius-extra flex-nowrap flex w-100 p-medium t-regular uppercase pd-thin\"\n >\n <slot></slot>\n <Button\n :submit=\"handleAction\"\n :showSucces=\"showSuccess\"\n :showLoader=\"showLoader\"\n :callback=\"callback\"\n :callbackDelay=\"callbackDelay\"\n class=\"t-nowrap t-medium radius-big uppercase cursor-pointer flex flex-v-center pd-thin w-max hover-bg-fifth t-semi transition-linear transition-timing-1 t-black bg-main\"\n >\n <span v-if=\"action\" class=\"desktop-only mn-r-thin\">{{action}}</span>\n <IconArrow class=\"i-medium\"/>\n </Button>\n</Field>\n</template>\n\n<script setup=\"props\">\n import { ref, watchEffect, onMounted } from 'vue'\n import Field from '@martyrs/src/components/Field/Field.vue'\n import Button from '@martyrs/src/components/Button/Button.vue'\n import IconArrow from '@martyrs/src/modules/icons/navigation/IconArrow.vue'\n import { useI18n } from 'vue-i18n'\n\n // Генерируем уникальный ID для каждого экземпляра\n const uniqueId = Math.random().toString(36).substr(2, 9)\n\n const props = defineProps({\n input: String,\n placeholder: {\n type: String\n },\n action: {\n type: String\n },\n placeholderTexts: {\n type: Object,\n default: () => ({\n en: [\n 'Lowest THC, please!',\n 'Something with banana flavors?',\n \"I'm in the mood for trippy vibes.\"\n ],\n ru: [\n 'Я хочу самый низкий THC',\n 'Я хочу чего-нибудь бананового',\n 'Я хочу курнуть хейза'\n ],\n })\n },\n typingSpeed: {\n type: Number,\n default: 200\n },\n loopTyping: {\n type: Boolean,\n default: false\n },\n enableTyping: {\n type: Boolean,\n default: false\n },\n showLoader: {\n type: Boolean,\n default: true\n },\n showSuccess: {\n type: Boolean,\n default: true\n },\n callback: {\n type: Function,\n default: null\n },\n callbackDelay: {\n type: Number,\n default: 750\n },\n name: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: null\n },\n validation: {\n type: [Object, Boolean],\n default: false\n }\n });\n\n // Уникальные имена для полей\n const fieldName = props.name || `field-big-${uniqueId}`\n const fieldId = props.id || `field-big-${uniqueId}`\n\n const { t, locale } = useI18n()\n\n let placeholderIndex = ref(0)\n\n let inputField = ref(props.input)\n let inputPlaceholder = ref(props.placeholder)\n let typing = ref(props.enableTyping)\n let typeInterval = ref(null)\n let userText = ref('') // Stores user input\n let cursorVisible = ref(true)\n let cursorInterval = null\n\n const emit = defineEmits(['update:input', 'action']);\n\n function emitAction() {\n emit('action')\n }\n\n async function handleAction() {\n const result = emit('action')\n // Если обработчик вернул промис, ждем его\n if (result && typeof result.then === 'function') {\n return result\n }\n // Иначе возвращаем resolved промис\n return Promise.resolve(result)\n }\n \n function updateInput(event) {\n emit('update:input', event)\n userText.value = event // Stores user input\n }\n\n function handleInput() {\n placeholderIndex.value = (placeholderIndex.value + 1) % props.placeholderTexts[locale.value].length\n }\n\n function handleFocus() {\n typing.value = false\n\n clearInterval(typeInterval.value)\n\n inputPlaceholder.value = props.placeholder\n\n if (!userText.value) {\n inputField.value = ''\n }\n }\n\n function checkInput() {\n if (!userText.value && props.enableTyping) {\n typing.value = true\n inputPlaceholder.value = ''\n startTyping()\n }\n }\n\n function startTyping() {\n let placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n let i = 0\n let typingBackwards = false\n \n // Start the cursor blinking\n cursorInterval = setInterval(() => {\n cursorVisible.value = !cursorVisible.value\n }, 200)\n\n typeInterval.value = setInterval(() => {\n if (typing.value) {\n if (!typingBackwards) {\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i++\n } else {\n inputField.value = inputField.value.slice(0, -1)\n inputField.value = placeholderText.substring(0, i) + (cursorVisible.value && i % 2 ? '|' : '')\n i--\n }\n\n if (i > placeholderText.length && props.loopTyping) {\n setTimeout(() => {\n typingBackwards = true\n inputField.value = placeholderText.substring(0, i)\n }, 333)\n }\n\n if (i === 0 && typingBackwards) {\n typingBackwards = false\n handleInput()\n placeholderText = props.placeholderTexts[locale.value][placeholderIndex.value]\n }\n }\n }, props.typingSpeed)\n }\n\n\n onMounted(() => {\n if (props.enableTyping) startTyping()\n })\n\n watchEffect(() => {\n if (!typing.value) {\n clearInterval(typeInterval.value)\n clearInterval(cursorInterval)\n }\n })\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":[],"mappings":"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"}
@@ -496,7 +496,7 @@ const _sfc_main = {
496
496
  ref: rootElement
497
497
  }, [
498
498
  vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
499
- class: vue.normalizeClass([["vti__dropdown", { open: open.value }], "br-solid br-black-transp br-1px radius-thin"]),
499
+ class: vue.normalizeClass([["vti__dropdown", { open: open.value }], "br-solid br-black-transp-10 br-1px radius-thin"]),
500
500
  style: vue.normalizeStyle([__props.dropdownStyle]),
501
501
  tabindex: __props.dropdownOptions.tabindex,
502
502
  onKeydown: vue.withKeys(reset, ["esc"])
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPhone.vue.cjs","sources":["../../../../../src/components/FieldPhone/FieldPhone.vue"],"sourcesContent":["<template>\n <div \n :class=\"[\n rootClass, \n classes,\n $attrs.class, \n { 'bg-fourth-nano': validation }, \n { disabled: disabled }\n ]\" \n :style=\"[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 br-1px radius-thin\"\n >\n <span class=\"flex-nowrap flex flex-v-center p-medium vti__selection\">\n <span v-if=\"dropdownOptions.showFlags\" v-html=\"activeCountryFlag\" class=\"mn-r-nano\" />\n \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":["clickOutside","ref","onMounted","computed","parsePhoneNumberFromString","watch","nextTick","list"],"mappings":"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"}
1
+ {"version":3,"file":"FieldPhone.vue.cjs","sources":["../../../../../src/components/FieldPhone/FieldPhone.vue"],"sourcesContent":["<template>\n <div \n :class=\"[\n rootClass, \n classes,\n $attrs.class, \n { 'bg-fourth-nano': validation }, \n { disabled: disabled }\n ]\" \n :style=\"[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-medium 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":["clickOutside","ref","onMounted","computed","parsePhoneNumberFromString","watch","nextTick","list"],"mappings":"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"}
@@ -494,7 +494,7 @@ const _sfc_main = {
494
494
  ref: rootElement
495
495
  }, [
496
496
  withDirectives((openBlock(), createElementBlock("div", {
497
- class: normalizeClass([["vti__dropdown", { open: open.value }], "br-solid br-black-transp br-1px radius-thin"]),
497
+ class: normalizeClass([["vti__dropdown", { open: open.value }], "br-solid br-black-transp-10 br-1px radius-thin"]),
498
498
  style: normalizeStyle([__props.dropdownStyle]),
499
499
  tabindex: __props.dropdownOptions.tabindex,
500
500
  onKeydown: withKeys(reset, ["esc"])