@ozdao/martyrs 0.2.510 → 0.2.511

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 (179) 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 -2
  6. package/dist/auth.server.js +1 -2
  7. package/dist/builder.cjs +105 -19
  8. package/dist/builder.js +107 -20
  9. package/dist/{main-XJQJFmgj.cjs → main-B1XN9Zjg.cjs} +7 -7
  10. package/dist/{main-DrpgUZcn.js → main-u7zgfMGL.js} +1850 -1856
  11. package/dist/martyrs/src/components/Button/Button.vue2.cjs +1 -1
  12. package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
  13. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +1 -1
  14. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  15. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
  16. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  17. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  18. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  19. package/dist/martyrs/src/components/Loader/{Loader.vue2.cjs → Loader.vue.cjs} +2 -2
  20. package/dist/martyrs/src/components/Loader/{Loader.vue2.js.map → Loader.vue.cjs.map} +1 -1
  21. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  22. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  23. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs +1 -1
  24. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
  25. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  26. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  27. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  28. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  29. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +1 -1
  30. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  31. package/dist/martyrs/src/modules/auth/locales/ru.cjs +2 -0
  32. package/dist/martyrs/src/modules/auth/locales/ru.cjs.map +1 -1
  33. package/dist/martyrs/src/modules/auth/locales/ru.js +2 -0
  34. package/dist/martyrs/src/modules/auth/locales/ru.js.map +1 -1
  35. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +2 -2
  36. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs.map +1 -1
  37. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +2 -2
  38. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +1 -1
  39. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  40. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  46. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  55. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  57. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  59. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  61. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  62. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  63. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  64. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  65. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  67. package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  69. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  70. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  71. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  73. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  75. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  77. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +27 -27
  78. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
  79. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +28 -28
  80. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
  81. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  83. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  85. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  87. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  88. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  89. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  90. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  91. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  93. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  97. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  98. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  99. package/dist/martyrs/src/modules/music/router/music.cjs +1 -1
  100. package/dist/martyrs/src/modules/music/router/music.js +1 -1
  101. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  103. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  105. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  107. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  109. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  111. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  112. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  113. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  115. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  117. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  119. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  121. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  122. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  123. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  125. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  127. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  129. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  131. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  132. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  133. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  135. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  137. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +64 -63
  138. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +64 -63
  140. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  143. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  145. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  146. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  147. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  149. package/dist/martyrs.cjs.js +1 -1
  150. package/dist/martyrs.css +1 -1
  151. package/dist/martyrs.es.js +1 -1
  152. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  153. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  154. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  155. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  156. package/dist/orders.server.cjs +3 -0
  157. package/dist/orders.server.js +3 -0
  158. package/dist/products.server.cjs +9 -36
  159. package/dist/products.server.js +9 -36
  160. package/dist/style.css +1 -1
  161. package/dist/{web-C5cmb1FH.js → web--8-wgr6b.js} +1 -1
  162. package/dist/{web-d40xcY_Y.cjs → web-BS6utuAZ.cjs} +1 -1
  163. package/package.json +1 -1
  164. package/src/builder/CLAUDE.MD +405 -0
  165. package/src/builder/builder.js +3 -0
  166. package/src/builder/modes/spa.dev.js +35 -15
  167. package/src/builder/modes/spa.prod.js +5 -6
  168. package/src/builder/modes/spa.rspack.dev.js +110 -0
  169. package/src/modules/auth/controllers/services/twofa.service.js +1 -1
  170. package/src/modules/auth/locales/ru.js +2 -0
  171. package/src/modules/auth/views/components/pages/EnterCode.vue +2 -2
  172. package/src/modules/globals/views/components/sections/Filters.vue +26 -17
  173. package/src/modules/orders/models/application.model.js +3 -0
  174. package/src/modules/products/components/pages/Products.vue +12 -10
  175. package/src/modules/products/controllers/configs/products.lookup.config.js +0 -26
  176. package/src/modules/products/controllers/products.controller.js +3 -7
  177. package/src/modules/products/controllers/queries/products.queries.js +10 -5
  178. package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +0 -1
  179. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue2.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, createTextVNode, toDisplayString, unref, withCtx, Transition, withDirectives, vShow } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue2.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Transition, withCtx, withDirectives, vShow, createTextVNode } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vue_SixQ7xP = require("../../../../../../node_modules/.pnpm/@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.cjs");
5
- ;/* empty css */
5
+ ;/* empty css */
6
6
  const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
7
7
  const CardBlogpost = require("../blocks/CardBlogpost.vue.cjs");
8
8
  const SkeletonBlogpost = require("../../../icons/skeletons/SkeletonBlogpost.vue.cjs");
@@ -1,6 +1,6 @@
1
1
  import { computed, ref, onServerPrefetch, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, Fragment, renderList, Transition, createBlock } from "vue";
2
2
  import { u as useHead } from "../../../../../../node_modules/.pnpm/@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
5
5
  import _sfc_main$2 from "../blocks/CardBlogpost.vue.js";
6
6
  import SkeletonBlogpost from "../../../icons/skeletons/SkeletonBlogpost.vue.js";
@@ -5,7 +5,7 @@ require("isomorphic-dompurify");
5
5
  ;/* empty css */
6
6
  const Constructor = require("../../../constructor/components/sections/Constructor.vue.cjs");
7
7
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
8
- require("../../../../../../_virtual/index.cjs");
8
+ require("../../../../../../_virtual/index2.cjs");
9
9
  ;/* empty css */
10
10
  ;/* empty css */
11
11
  const BlockTags = require("../../../../components/FieldTags/BlockTags.vue.cjs");
@@ -3,7 +3,7 @@ import "isomorphic-dompurify";
3
3
  /* empty css */
4
4
  import _sfc_main$1 from "../../../constructor/components/sections/Constructor.vue.js";
5
5
  import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
6
- import "../../../../../../_virtual/index.js";
6
+ import "../../../../../../_virtual/index2.js";
7
7
  /* empty css */
8
8
  /* empty css */
9
9
  import _sfc_main$3 from "../../../../components/FieldTags/BlockTags.vue.js";
@@ -16,7 +16,7 @@ const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
16
16
  require("axios");
17
17
  ;/* empty css */
18
18
  const UploadImage = require("../../../../components/UploadImage/UploadImage.vue.cjs");
19
- ;/* empty css */
19
+ ;/* empty css */
20
20
  require("../../../globals/views/store/globals.cjs");
21
21
  require("../../../../components/EditImages/EditImages.vue.cjs");
22
22
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
@@ -14,7 +14,7 @@ import _sfc_main$9 from "../../../../components/Checkbox/Checkbox.vue.js";
14
14
  import "axios";
15
15
  /* empty css */
16
16
  import _sfc_main$1 from "../../../../components/UploadImage/UploadImage.vue.js";
17
- /* empty css */
17
+ /* empty css */
18
18
  import "../../../globals/views/store/globals.js";
19
19
  import "../../../../components/EditImages/EditImages.vue.js";
20
20
  import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  ;/* empty css */
6
6
  const Viewer = require("../../../constructor/components/sections/Viewer.vue.cjs");
7
7
  const Countdown = require("../../../../components/Countdown/Countdown.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, createBlock, Fragment, renderList, unref, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  /* empty css */
4
4
  import _sfc_main$2 from "../../../constructor/components/sections/Viewer.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Countdown/Countdown.vue.js";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
- const Tab = require("../../../../components/Tab/Tab.vue.cjs");
5
+ const Tab = require("../../../../components/Tab/Tab.vue2.cjs");
6
6
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
7
7
  ;/* empty css */
8
8
  const CardEvent = require("../blocks/CardEvent.vue.cjs");
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, createElementBlock, openBlock, createElementVNode, createCommentVNode, unref, createBlock, createVNode, isRef, withCtx, Fragment, renderList, withModifiers } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$1 from "../../../../components/Tab/Tab.vue.js";
3
+ import _sfc_main$1 from "../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
5
5
  /* empty css */
6
6
  import _sfc_main$3 from "../blocks/CardEvent.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Loader = require("../../../../components/Loader/Loader.vue2.cjs");
4
+ const Loader = require("../../../../components/Loader/Loader.vue.cjs");
5
5
  const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
6
6
  const CardEvent = require("../blocks/CardEvent.vue.cjs");
7
7
  const events = require("../../store/events.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, createCommentVNode, Transition, Fragment, renderList } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue.js";
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEvent.vue.js";
5
5
  import { read } from "../../store/events.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
6
6
  const CardEvent = require("../blocks/CardEvent.vue.cjs");
7
7
  const SkeletonEventShort = require("../../../icons/skeletons/SkeletonEventShort.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, Fragment, renderList, normalizeClass } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEvent.vue.js";
5
5
  import SkeletonEventShort from "../../../icons/skeletons/SkeletonEventShort.vue.js";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const index = require("../../../../../../_virtual/index2.cjs");
3
+ const index = require("../../../../../../_virtual/index.cjs");
4
4
  class I18nManager {
5
5
  constructor() {
6
6
  this.moduleLocales = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- import merge from "../../../../../../_virtual/index2.js";
1
+ import merge from "../../../../../../_virtual/index.js";
2
2
  class I18nManager {
3
3
  constructor() {
4
4
  this.moduleLocales = /* @__PURE__ */ new Map();
@@ -8,7 +8,7 @@ const PlaceholderUserpic = require("../../../../icons/placeholders/PlaceholderUs
8
8
  const PlaceholderOrganizationPic = require("../../../../icons/placeholders/PlaceholderOrganizationPic.vue.cjs");
9
9
  const IconEllipsis = require("../../../../icons/navigation/IconEllipsis.vue.cjs");
10
10
  const FormReport = require("../../../../reports/components/sections/FormReport.vue.cjs");
11
- ;/* empty css */
11
+ ;/* empty css */
12
12
  ;/* empty css */
13
13
  require("../../../../auth/views/store/auth.cjs");
14
14
  require("../../../../organizations/store/memberships.cjs");
@@ -6,7 +6,7 @@ import PlaceholderUserpic from "../../../../icons/placeholders/PlaceholderUserpi
6
6
  import PlaceholderOrganizationPic from "../../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
7
7
  import _sfc_main$4 from "../../../../icons/navigation/IconEllipsis.vue.js";
8
8
  import _sfc_main$5 from "../../../../reports/components/sections/FormReport.vue.js";
9
- /* empty css */
9
+ /* empty css */
10
10
  /* empty css */
11
11
  import "../../../../auth/views/store/auth.js";
12
12
  import "../../../../organizations/store/memberships.js";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const vueI18n = require("vue-i18n");
5
5
  const Popup = require("../../../../../components/Popup/Popup.vue.cjs");
6
- const Loader = require("../../../../../components/Loader/Loader.vue2.cjs");
6
+ const Loader = require("../../../../../components/Loader/Loader.vue.cjs");
7
7
  const Calendar = require("../../../../../components/Calendar/Calendar.vue2.cjs");
8
8
  const Button = require("../../../../../components/Button/Button.vue2.cjs");
9
9
  const IconShopcartAdd = require("../../../../icons/actions/IconShopcartAdd.vue.cjs");
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, watch, onMounted, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode, toDisplayString, unref } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
3
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
4
- import Loader from "../../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../../components/Loader/Loader.vue.js";
5
5
  import Calendar from "../../../../../components/Calendar/Calendar.vue2.js";
6
6
  import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
7
7
  import _sfc_main$4 from "../../../../icons/actions/IconShopcartAdd.vue.js";
@@ -8,7 +8,7 @@ const Snack = require("../../../../../components/Status/Snack.vue.cjs");
8
8
  const Popup = require("../../../../../components/Popup/Popup.vue.cjs");
9
9
  require("vue-i18n");
10
10
  ;/* empty css */
11
- const Loader = require("../../../../../components/Loader/Loader.vue2.cjs");
11
+ const Loader = require("../../../../../components/Loader/Loader.vue.cjs");
12
12
  ;/* empty css */
13
13
  require("../../../../orders/store/shopcart.cjs");
14
14
  require("../../../../auth/views/store/auth.cjs");
@@ -6,7 +6,7 @@ import _sfc_main$5 from "../../../../../components/Status/Snack.vue.js";
6
6
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
7
7
  import "vue-i18n";
8
8
  /* empty css */
9
- import Loader from "../../../../../components/Loader/Loader.vue2.js";
9
+ import Loader from "../../../../../components/Loader/Loader.vue.js";
10
10
  /* empty css */
11
11
  import "../../../../orders/store/shopcart.js";
12
12
  import "../../../../auth/views/store/auth.js";
@@ -14,7 +14,7 @@ const _pluginVue_exportHelper = require("../../../../../../../_virtual/_plugin-v
14
14
  const _hoisted_1 = { class: "flex t-nowrap gap-thin" };
15
15
  const _hoisted_2 = { key: 0 };
16
16
  const _hoisted_3 = ["onClick"];
17
- const _hoisted_4 = { class: "t-nowrap h-1r" };
17
+ const _hoisted_4 = { class: "t-nowrap" };
18
18
  const _hoisted_5 = {
19
19
  key: 1,
20
20
  class: "mn-l-micro"
@@ -39,11 +39,10 @@ const _hoisted_18 = {
39
39
  class: "flex gap-thin"
40
40
  };
41
41
  const _hoisted_19 = { key: 3 };
42
- const _hoisted_20 = ["onClick"];
43
- const _hoisted_21 = { class: "mn-t-small" };
44
- const _hoisted_22 = { class: "flex gap-thin mn-t-medium" };
42
+ const _hoisted_20 = { class: "mn-t-small" };
43
+ const _hoisted_21 = { class: "flex gap-thin mn-t-medium" };
44
+ const _hoisted_22 = ["onClick"];
45
45
  const _hoisted_23 = ["onClick"];
46
- const _hoisted_24 = ["onClick"];
47
46
  const _sfc_main = {
48
47
  __name: "Filters",
49
48
  props: {
@@ -67,7 +66,7 @@ const _sfc_main = {
67
66
  const showAllFilters = vue.ref(false);
68
67
  const individualPopups = vue.reactive({});
69
68
  const tempSelected = vue.reactive({});
70
- const tempDateRange = vue.ref(null);
69
+ vue.ref(null);
71
70
  vue.watch(filters, (newFilters) => {
72
71
  newFilters.forEach((filter) => {
73
72
  individualPopups[filter.value] = false;
@@ -118,7 +117,18 @@ const _sfc_main = {
118
117
  return true;
119
118
  };
120
119
  const getFilterValue = (filter) => {
121
- return selected.value[filter.value];
120
+ const value = selected.value[filter.value];
121
+ if (!value) return false;
122
+ if (filter.type === "range") {
123
+ return value.min || value.max;
124
+ }
125
+ if (filter.type === "date") {
126
+ return value && value.start && value.end;
127
+ }
128
+ if (Array.isArray(value)) {
129
+ return value.length > 0;
130
+ }
131
+ return value;
122
132
  };
123
133
  const formatFilterValue = (filter) => {
124
134
  const value = selected.value[filter.value];
@@ -205,10 +215,10 @@ const _sfc_main = {
205
215
  }, [
206
216
  filter.type === "date" ? (vue.openBlock(), vue.createBlock(IconCalendar.default, {
207
217
  key: 0,
208
- class: "i-medium"
218
+ class: "mn-r-micro i-medium"
209
219
  })) : vue.createCommentVNode("", true),
210
- vue.createElementVNode("span", _hoisted_4, vue.toDisplayString(filter.title), 1),
211
- getFilterValue(filter) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5, vue.toDisplayString(formatFilterValue(filter)), 1)) : vue.createCommentVNode("", true)
220
+ vue.createElementVNode("span", _hoisted_4, vue.toDisplayString(filter.type === "date" && getFilterValue(filter) ? formatFilterValue(filter) : filter.title), 1),
221
+ getFilterValue(filter) && filter.type !== "date" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5, vue.toDisplayString(formatFilterValue(filter)), 1)) : vue.createCommentVNode("", true)
212
222
  ], 10, _hoisted_3);
213
223
  }), 128)),
214
224
  vue.createVNode(Popup.default, {
@@ -344,17 +354,7 @@ const _sfc_main = {
344
354
  class: "w-50 bg-light pd-small radius-small"
345
355
  }, null, 8, ["field", "onUpdate:field", "placeholder"])
346
356
  ])) : filter.type === "date" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_19, [
347
- vue.createElementVNode("div", {
348
- onClick: () => {
349
- tempDateRange.value = tempSelected[filter.value];
350
- tempSelected[filter.value] = tempSelected[filter.value] || null;
351
- },
352
- class: "pd-small radius-small bg-light cursor-pointer flex-v-center flex gap-micro"
353
- }, [
354
- vue.createVNode(IconCalendar.default, { class: "i-small" }),
355
- vue.createElementVNode("span", null, vue.toDisplayString(tempSelected[filter.value] ? `${vue.unref(formatDate)(tempSelected[filter.value].start, { dayMonth: true, language: "en" })} - ${vue.unref(formatDate)(tempSelected[filter.value].end, { dayMonth: true, language: "en" })}` : "Select dates"), 1)
356
- ], 8, _hoisted_20),
357
- vue.createElementVNode("div", _hoisted_21, [
357
+ vue.createElementVNode("div", _hoisted_20, [
358
358
  vue.createVNode(Calendar.default, {
359
359
  date: tempSelected[filter.value],
360
360
  "onUpdate:date": ($event) => tempSelected[filter.value] = $event,
@@ -364,15 +364,15 @@ const _sfc_main = {
364
364
  }, null, 8, ["date", "onUpdate:date"])
365
365
  ])
366
366
  ])) : vue.createCommentVNode("", true),
367
- vue.createElementVNode("div", _hoisted_22, [
367
+ vue.createElementVNode("div", _hoisted_21, [
368
368
  vue.createElementVNode("button", {
369
369
  onClick: ($event) => cancelFilter(filter.value),
370
- class: "w-100 button bg-light"
371
- }, " Cancel ", 8, _hoisted_23),
370
+ class: "bg-light button flex-child-full"
371
+ }, " Cancel ", 8, _hoisted_22),
372
372
  vue.createElementVNode("button", {
373
373
  onClick: ($event) => applyFilter(filter.value),
374
- class: "w-100 button bg-main"
375
- }, " Apply ", 8, _hoisted_24)
374
+ class: "bg-main w-100 button flex-child-full"
375
+ }, " Apply ", 8, _hoisted_23)
376
376
  ])
377
377
  ]),
378
378
  _: 2
@@ -382,6 +382,6 @@ const _sfc_main = {
382
382
  };
383
383
  }
384
384
  };
385
- const Filters = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-e749b035"]]);
385
+ const Filters = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-798714cf"]]);
386
386
  exports.default = Filters;
387
387
  //# sourceMappingURL=Filters.vue2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.vue2.cjs","sources":["../../../../../../../../src/modules/globals/views/components/sections/Filters.vue"],"sourcesContent":["<template>\n <div class=\"flex t-nowrap gap-thin\">\n <!-- All Filters Button -->\n <button\n @click=\"showAllFilters = true\"\n class=\"pd-small radius-medium bg-light flex-v-center flex gap-micro cursor-pointer\"\n :class=\"{ 'bg-main': activeFiltersCount > 0 }\"\n >\n <IconFilter class=\"i-medium\" />\n <span class=\"h-1r\"></span>\n <span v-if=\"activeFiltersCount\">{{ activeFiltersCount }}</span>\n </button>\n\n <!-- Individual Filter Buttons -->\n <button\n v-for=\"filter in filters\"\n :key=\"filter.value\"\n @click=\"openFilter(filter.value)\"\n class=\"pd-small radius-medium bg-light cursor-pointer flex-v-center flex gap-micro\"\n :class=\"{ 'selected bg-main': isFilterActive(filter) }\"\n >\n <IconCalendar v-if=\"filter.type === 'date'\" class=\"i-medium\" />\n <span class=\"t-nowrap h-1r\">{{ filter.title }}</span>\n <span v-if=\"getFilterValue(filter)\" class=\"mn-l-micro\">\n {{ formatFilterValue(filter) }}\n </span>\n </button>\n\n <!-- All Filters Popup -->\n <Popup\n :isPopupOpen=\"showAllFilters\"\n @close-popup=\"showAllFilters = false\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"w-min-20r bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"flex-child-full\">Filters</h3>\n <IconCross \n @click=\"showAllFilters = false\" \n class=\"i-regular cursor-pointer\"\n />\n </div>\n\n <div class=\"filters-content\">\n <div \n v-for=\"filter in filters\" \n :key=\"filter.value\"\n class=\"mn-b-medium\"\n >\n <h4 class=\"mn-b-small\">{{ filter.title }}</h4>\n \n <!-- Checkbox Filter -->\n <div v-if=\"filter.type === 'checkbox'\">\n <Checkbox\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n v-model:radio=\"tempSelected[filter.value]\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n\n <!-- Radio Filter -->\n <div v-else-if=\"filter.type === 'radio'\">\n <div\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n @click=\"tempSelected[filter.value] = option.value\"\n class=\"pd-small radius-small cursor-pointer mn-b-micro\"\n :class=\"{ \n 'bg-main': tempSelected[filter.value] === option.value,\n 'bg-light': tempSelected[filter.value] !== option.value\n }\"\n >\n {{ option.label }}\n </div>\n </div>\n\n <!-- Range Filter -->\n <div v-else-if=\"filter.type === 'range'\" class=\"flex gap-thin\">\n <Field\n v-model:field=\"tempSelected[filter.value].min\"\n :placeholder=\"filter.minPlaceholder || 'Min'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"tempSelected[filter.value].max\"\n :placeholder=\"filter.maxPlaceholder || 'Max'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button \n @click=\"applyAllFilters\" \n class=\"button bg-main flex-child-full\"\n >\n Apply\n </button>\n <button \n @click=\"resetFilters\" \n class=\"button bg-light\"\n >\n Reset Filters\n </button>\n </div>\n </Popup>\n\n <!-- Individual Filter Popups -->\n <Popup\n v-for=\"filter in filters\"\n :key=\"`popup-${filter.value}`\"\n :isPopupOpen=\"individualPopups[filter.value]\"\n @close-popup=\"individualPopups[filter.value] = false\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <h4 class=\"mn-b-medium\">{{ filter.title }}</h4>\n \n <!-- Checkbox Filter -->\n <div v-if=\"filter.type === 'checkbox'\">\n <Checkbox\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n v-model:radio=\"tempSelected[filter.value]\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n\n <!-- Radio Filter -->\n <div v-else-if=\"filter.type === 'radio'\">\n <div\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n @click=\"tempSelected[filter.value] = option.value\"\n class=\"pd-small radius-small cursor-pointer mn-b-micro\"\n :class=\"{ \n 'bg-main': tempSelected[filter.value] === option.value,\n 'bg-light': tempSelected[filter.value] !== option.value\n }\"\n >\n {{ option.label }}\n </div>\n </div>\n\n <!-- Range Filter -->\n <div v-else-if=\"filter.type === 'range'\" class=\"flex gap-thin\">\n <Field\n v-model:field=\"tempSelected[filter.value].min\"\n :placeholder=\"filter.minPlaceholder || 'Min'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"tempSelected[filter.value].max\"\n :placeholder=\"filter.maxPlaceholder || 'Max'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <div \n @click=\"() => { tempDateRange = tempSelected[filter.value]; tempSelected[filter.value] = tempSelected[filter.value] || null; }\"\n class=\"pd-small radius-small bg-light cursor-pointer flex-v-center flex gap-micro\"\n >\n <IconCalendar class=\"i-small\" />\n <span>{{ tempSelected[filter.value] ? `${formatDate(tempSelected[filter.value].start, { dayMonth: true, language: 'en' })} - ${formatDate(tempSelected[filter.value].end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n <div class=\"mn-t-small\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button \n @click=\"cancelFilter(filter.value)\" \n class=\"w-100 button bg-light\"\n >\n Cancel\n </button>\n <button \n @click=\"applyFilter(filter.value)\" \n class=\"w-100 button bg-main\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, reactive, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\nconst filters = defineModel('filters', {\n type: Array,\n required: true\n})\n\nconst selected = defineModel('selected', {\n type: Object,\n default: () => ({})\n})\n\nconst emit = defineEmits(['select'])\n\nconst { formatDate } = useGlobalMixins()\n\n// State\nconst showAllFilters = ref(false)\nconst individualPopups = reactive({})\nconst tempSelected = reactive({})\nconst tempDateRange = ref(null)\n\n// Initialize popups and temp values\nwatch(filters, (newFilters) => {\n newFilters.forEach(filter => {\n individualPopups[filter.value] = false\n \n if (!tempSelected[filter.value]) {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = [...(selected.value[filter.value] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { ...(selected.value[filter.value] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = selected.value[filter.value] || null\n } else {\n tempSelected[filter.value] = selected.value[filter.value] || null\n }\n }\n })\n}, { immediate: true, deep: true })\n\n// Sync selected to tempSelected\nwatch(selected, (newSelected) => {\n Object.keys(newSelected).forEach(key => {\n const filter = filters.value.find(f => f.value === key)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[key] = [...(newSelected[key] || [])]\n } else if (filter.type === 'range') {\n tempSelected[key] = { ...(newSelected[key] || { min: '', max: '' }) }\n } else {\n tempSelected[key] = newSelected[key]\n }\n }\n })\n}, { deep: true })\n\n// Computed\nconst activeFiltersCount = computed(() => {\n return Object.entries(selected.value).filter(([key, value]) => {\n if (Array.isArray(value)) return value.length > 0\n if (typeof value === 'object' && value !== null) {\n return value.min || value.max\n }\n return value !== null && value !== undefined\n }).length\n})\n\n// Methods\nconst openFilter = (filterValue) => {\n individualPopups[filterValue] = true\n}\n\nconst isFilterActive = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n if (Array.isArray(value)) return value.length > 0\n if (filter.type === 'range') return value.min || value.max\n return true\n}\n\nconst getFilterValue = (filter) => {\n return selected.value[filter.value]\n}\n\nconst formatFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return ''\n \n if (Array.isArray(value)) {\n return `(${value.length})`\n }\n \n if (filter.type === 'range') {\n if (!value.min && !value.max) return ''\n return `${value.min || '0'}-${value.max || '∞'}`\n }\n \n if (filter.type === 'date') {\n if (!value || !value.start || !value.end) return ''\n return `${formatDate(value.start, { dayMonth: true, language: 'en' })} - ${formatDate(value.end, { dayMonth: true, language: 'en' })}`\n }\n \n if (filter.type === 'radio') {\n const option = filter.options.find(o => o.value === value)\n return option ? `(${option.label})` : ''\n }\n \n return ''\n}\n\nconst applyFilter = (filterValue) => {\n selected.value[filterValue] = tempSelected[filterValue]\n individualPopups[filterValue] = false\n emit('select', { filter: filterValue, value: tempSelected[filterValue] })\n}\n\nconst cancelFilter = (filterValue) => {\n const filter = filters.value.find(f => f.value === filterValue)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[filterValue] = [...(selected.value[filterValue] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filterValue] = { ...(selected.value[filterValue] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filterValue] = selected.value[filterValue] || null\n } else {\n tempSelected[filterValue] = selected.value[filterValue] || null\n }\n }\n individualPopups[filterValue] = false\n}\n\nconst applyAllFilters = () => {\n Object.entries(tempSelected).forEach(([key, value]) => {\n if (selected.value[key] !== value) {\n selected.value[key] = value\n emit('select', { filter: key, value })\n }\n })\n showAllFilters.value = false\n}\n\nconst resetFilters = () => {\n filters.value.forEach(filter => {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = []\n selected.value[filter.value] = []\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { min: '', max: '' }\n selected.value[filter.value] = { min: '', max: '' }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = null\n selected.value[filter.value] = null\n } else {\n tempSelected[filter.value] = null\n selected.value[filter.value] = null\n }\n emit('select', { filter: filter.value, value: null })\n })\n}\n</script>\n\n<style scoped>\n.filters-content {\n max-height: 60vh;\n overflow-y: auto;\n}\n</style>"],"names":["_useModel","useGlobalMixins","ref","reactive","watch","computed"],"mappings":"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"}
1
+ {"version":3,"file":"Filters.vue2.cjs","sources":["../../../../../../../../src/modules/globals/views/components/sections/Filters.vue"],"sourcesContent":["<template>\n <div class=\"flex t-nowrap gap-thin\">\n <!-- All Filters Button -->\n <button\n @click=\"showAllFilters = true\"\n class=\"pd-small radius-medium bg-light flex-v-center flex gap-micro cursor-pointer\"\n :class=\"{ 'bg-main': activeFiltersCount > 0 }\"\n >\n <IconFilter class=\"i-medium\" />\n <span class=\"h-1r\"></span>\n <span v-if=\"activeFiltersCount\">{{ activeFiltersCount }}</span>\n </button>\n\n <!-- Individual Filter Buttons -->\n <button\n v-for=\"filter in filters\"\n :key=\"filter.value\"\n @click=\"openFilter(filter.value)\"\n class=\"pd-small radius-medium bg-light cursor-pointer flex-v-center flex gap-micro\"\n :class=\"{ 'selected bg-main': isFilterActive(filter) }\"\n >\n <IconCalendar v-if=\"filter.type === 'date'\" class=\"mn-r-micro i-medium\" />\n <span class=\"t-nowrap\">{{ filter.type === 'date' && getFilterValue(filter) ? formatFilterValue(filter) : filter.title }}</span>\n <span v-if=\"getFilterValue(filter) && filter.type !== 'date'\" class=\"mn-l-micro\">\n {{ formatFilterValue(filter) }}\n </span>\n </button>\n\n <!-- All Filters Popup -->\n <Popup\n :isPopupOpen=\"showAllFilters\"\n @close-popup=\"showAllFilters = false\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"w-min-20r bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"flex-child-full\">Filters</h3>\n <IconCross \n @click=\"showAllFilters = false\" \n class=\"i-regular cursor-pointer\"\n />\n </div>\n\n <div class=\"filters-content\">\n <div \n v-for=\"filter in filters\" \n :key=\"filter.value\"\n class=\"mn-b-medium\"\n >\n <h4 class=\"mn-b-small\">{{ filter.title }}</h4>\n \n <!-- Checkbox Filter -->\n <div v-if=\"filter.type === 'checkbox'\">\n <Checkbox\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n v-model:radio=\"tempSelected[filter.value]\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n\n <!-- Radio Filter -->\n <div v-else-if=\"filter.type === 'radio'\">\n <div\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n @click=\"tempSelected[filter.value] = option.value\"\n class=\"pd-small radius-small cursor-pointer mn-b-micro\"\n :class=\"{ \n 'bg-main': tempSelected[filter.value] === option.value,\n 'bg-light': tempSelected[filter.value] !== option.value\n }\"\n >\n {{ option.label }}\n </div>\n </div>\n\n <!-- Range Filter -->\n <div v-else-if=\"filter.type === 'range'\" class=\"flex gap-thin\">\n <Field\n v-model:field=\"tempSelected[filter.value].min\"\n :placeholder=\"filter.minPlaceholder || 'Min'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"tempSelected[filter.value].max\"\n :placeholder=\"filter.maxPlaceholder || 'Max'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button \n @click=\"applyAllFilters\" \n class=\"button bg-main flex-child-full\"\n >\n Apply\n </button>\n <button \n @click=\"resetFilters\" \n class=\"button bg-light\"\n >\n Reset Filters\n </button>\n </div>\n </Popup>\n\n <!-- Individual Filter Popups -->\n <Popup\n v-for=\"filter in filters\"\n :key=\"`popup-${filter.value}`\"\n :isPopupOpen=\"individualPopups[filter.value]\"\n @close-popup=\"individualPopups[filter.value] = false\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <h4 class=\"mn-b-medium\">{{ filter.title }}</h4>\n \n <!-- Checkbox Filter -->\n <div v-if=\"filter.type === 'checkbox'\">\n <Checkbox\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n v-model:radio=\"tempSelected[filter.value]\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n\n <!-- Radio Filter -->\n <div v-else-if=\"filter.type === 'radio'\">\n <div\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n @click=\"tempSelected[filter.value] = option.value\"\n class=\"pd-small radius-small cursor-pointer mn-b-micro\"\n :class=\"{ \n 'bg-main': tempSelected[filter.value] === option.value,\n 'bg-light': tempSelected[filter.value] !== option.value\n }\"\n >\n {{ option.label }}\n </div>\n </div>\n\n <!-- Range Filter -->\n <div v-else-if=\"filter.type === 'range'\" class=\"flex gap-thin\">\n <Field\n v-model:field=\"tempSelected[filter.value].min\"\n :placeholder=\"filter.minPlaceholder || 'Min'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"tempSelected[filter.value].max\"\n :placeholder=\"filter.maxPlaceholder || 'Max'\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <div class=\"mn-t-small\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button \n @click=\"cancelFilter(filter.value)\" \n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyFilter(filter.value)\" \n class=\"bg-main w-100 button flex-child-full\"\n >\n Apply\n </button>\n \n \n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, reactive, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\nconst filters = defineModel('filters', {\n type: Array,\n required: true\n})\n\nconst selected = defineModel('selected', {\n type: Object,\n default: () => ({})\n})\n\nconst emit = defineEmits(['select'])\n\nconst { formatDate } = useGlobalMixins()\n\n// State\nconst showAllFilters = ref(false)\nconst individualPopups = reactive({})\nconst tempSelected = reactive({})\nconst tempDateRange = ref(null)\n\n// Initialize popups and temp values\nwatch(filters, (newFilters) => {\n newFilters.forEach(filter => {\n individualPopups[filter.value] = false\n \n if (!tempSelected[filter.value]) {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = [...(selected.value[filter.value] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { ...(selected.value[filter.value] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = selected.value[filter.value] || null\n } else {\n tempSelected[filter.value] = selected.value[filter.value] || null\n }\n }\n })\n}, { immediate: true, deep: true })\n\n// Sync selected to tempSelected\nwatch(selected, (newSelected) => {\n Object.keys(newSelected).forEach(key => {\n const filter = filters.value.find(f => f.value === key)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[key] = [...(newSelected[key] || [])]\n } else if (filter.type === 'range') {\n tempSelected[key] = { ...(newSelected[key] || { min: '', max: '' }) }\n } else {\n tempSelected[key] = newSelected[key]\n }\n }\n })\n}, { deep: true })\n\n// Computed\nconst activeFiltersCount = computed(() => {\n return Object.entries(selected.value).filter(([key, value]) => {\n if (Array.isArray(value)) return value.length > 0\n if (typeof value === 'object' && value !== null) {\n return value.min || value.max\n }\n return value !== null && value !== undefined\n }).length\n})\n\n// Methods\nconst openFilter = (filterValue) => {\n individualPopups[filterValue] = true\n}\n\nconst isFilterActive = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n if (Array.isArray(value)) return value.length > 0\n if (filter.type === 'range') return value.min || value.max\n return true\n}\n\nconst getFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n \n if (filter.type === 'range') {\n return value.min || value.max\n }\n \n if (filter.type === 'date') {\n return value && value.start && value.end\n }\n \n if (Array.isArray(value)) {\n return value.length > 0\n }\n \n return value\n}\n\nconst formatFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return ''\n \n if (Array.isArray(value)) {\n return `(${value.length})`\n }\n \n if (filter.type === 'range') {\n if (!value.min && !value.max) return ''\n return `${value.min || '0'}-${value.max || '∞'}`\n }\n \n if (filter.type === 'date') {\n if (!value || !value.start || !value.end) return ''\n return `${formatDate(value.start, { dayMonth: true, language: 'en' })} - ${formatDate(value.end, { dayMonth: true, language: 'en' })}`\n }\n \n if (filter.type === 'radio') {\n const option = filter.options.find(o => o.value === value)\n return option ? `(${option.label})` : ''\n }\n \n return ''\n}\n\nconst applyFilter = (filterValue) => {\n selected.value[filterValue] = tempSelected[filterValue]\n individualPopups[filterValue] = false\n emit('select', { filter: filterValue, value: tempSelected[filterValue] })\n}\n\nconst cancelFilter = (filterValue) => {\n const filter = filters.value.find(f => f.value === filterValue)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[filterValue] = [...(selected.value[filterValue] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filterValue] = { ...(selected.value[filterValue] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filterValue] = selected.value[filterValue] || null\n } else {\n tempSelected[filterValue] = selected.value[filterValue] || null\n }\n }\n individualPopups[filterValue] = false\n}\n\nconst applyAllFilters = () => {\n Object.entries(tempSelected).forEach(([key, value]) => {\n if (selected.value[key] !== value) {\n selected.value[key] = value\n emit('select', { filter: key, value })\n }\n })\n showAllFilters.value = false\n}\n\nconst resetFilters = () => {\n filters.value.forEach(filter => {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = []\n selected.value[filter.value] = []\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { min: '', max: '' }\n selected.value[filter.value] = { min: '', max: '' }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = null\n selected.value[filter.value] = null\n } else {\n tempSelected[filter.value] = null\n selected.value[filter.value] = null\n }\n emit('select', { filter: filter.value, value: null })\n })\n}\n</script>\n\n<style scoped>\n.filters-content {\n max-height: 60vh;\n overflow-y: auto;\n}\n</style>"],"names":["_useModel","useGlobalMixins","ref","reactive","watch","computed"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { mergeModels, useModel, ref, reactive, watch, computed, createElementBlock, openBlock, createElementVNode, createVNode, normalizeClass, createCommentVNode, toDisplayString, Fragment, renderList, createBlock, withCtx, unref } from "vue";
1
+ import { mergeModels, useModel, ref, reactive, watch, computed, createElementBlock, openBlock, createElementVNode, createVNode, normalizeClass, createCommentVNode, toDisplayString, Fragment, renderList, createBlock, withCtx } from "vue";
2
2
  import { useGlobalMixins } from "../../mixins/mixins.js";
3
3
  import _sfc_main$3 from "../../../../../components/Popup/Popup.vue.js";
4
4
  import _sfc_main$5 from "../../../../../components/Checkbox/Checkbox.vue.js";
@@ -12,7 +12,7 @@ import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper
12
12
  const _hoisted_1 = { class: "flex t-nowrap gap-thin" };
13
13
  const _hoisted_2 = { key: 0 };
14
14
  const _hoisted_3 = ["onClick"];
15
- const _hoisted_4 = { class: "t-nowrap h-1r" };
15
+ const _hoisted_4 = { class: "t-nowrap" };
16
16
  const _hoisted_5 = {
17
17
  key: 1,
18
18
  class: "mn-l-micro"
@@ -37,11 +37,10 @@ const _hoisted_18 = {
37
37
  class: "flex gap-thin"
38
38
  };
39
39
  const _hoisted_19 = { key: 3 };
40
- const _hoisted_20 = ["onClick"];
41
- const _hoisted_21 = { class: "mn-t-small" };
42
- const _hoisted_22 = { class: "flex gap-thin mn-t-medium" };
40
+ const _hoisted_20 = { class: "mn-t-small" };
41
+ const _hoisted_21 = { class: "flex gap-thin mn-t-medium" };
42
+ const _hoisted_22 = ["onClick"];
43
43
  const _hoisted_23 = ["onClick"];
44
- const _hoisted_24 = ["onClick"];
45
44
  const _sfc_main = {
46
45
  __name: "Filters",
47
46
  props: {
@@ -65,7 +64,7 @@ const _sfc_main = {
65
64
  const showAllFilters = ref(false);
66
65
  const individualPopups = reactive({});
67
66
  const tempSelected = reactive({});
68
- const tempDateRange = ref(null);
67
+ ref(null);
69
68
  watch(filters, (newFilters) => {
70
69
  newFilters.forEach((filter) => {
71
70
  individualPopups[filter.value] = false;
@@ -116,7 +115,18 @@ const _sfc_main = {
116
115
  return true;
117
116
  };
118
117
  const getFilterValue = (filter) => {
119
- return selected.value[filter.value];
118
+ const value = selected.value[filter.value];
119
+ if (!value) return false;
120
+ if (filter.type === "range") {
121
+ return value.min || value.max;
122
+ }
123
+ if (filter.type === "date") {
124
+ return value && value.start && value.end;
125
+ }
126
+ if (Array.isArray(value)) {
127
+ return value.length > 0;
128
+ }
129
+ return value;
120
130
  };
121
131
  const formatFilterValue = (filter) => {
122
132
  const value = selected.value[filter.value];
@@ -203,10 +213,10 @@ const _sfc_main = {
203
213
  }, [
204
214
  filter.type === "date" ? (openBlock(), createBlock(_sfc_main$2, {
205
215
  key: 0,
206
- class: "i-medium"
216
+ class: "mn-r-micro i-medium"
207
217
  })) : createCommentVNode("", true),
208
- createElementVNode("span", _hoisted_4, toDisplayString(filter.title), 1),
209
- getFilterValue(filter) ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(formatFilterValue(filter)), 1)) : createCommentVNode("", true)
218
+ createElementVNode("span", _hoisted_4, toDisplayString(filter.type === "date" && getFilterValue(filter) ? formatFilterValue(filter) : filter.title), 1),
219
+ getFilterValue(filter) && filter.type !== "date" ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(formatFilterValue(filter)), 1)) : createCommentVNode("", true)
210
220
  ], 10, _hoisted_3);
211
221
  }), 128)),
212
222
  createVNode(_sfc_main$3, {
@@ -342,17 +352,7 @@ const _sfc_main = {
342
352
  class: "w-50 bg-light pd-small radius-small"
343
353
  }, null, 8, ["field", "onUpdate:field", "placeholder"])
344
354
  ])) : filter.type === "date" ? (openBlock(), createElementBlock("div", _hoisted_19, [
345
- createElementVNode("div", {
346
- onClick: () => {
347
- tempDateRange.value = tempSelected[filter.value];
348
- tempSelected[filter.value] = tempSelected[filter.value] || null;
349
- },
350
- class: "pd-small radius-small bg-light cursor-pointer flex-v-center flex gap-micro"
351
- }, [
352
- createVNode(_sfc_main$2, { class: "i-small" }),
353
- createElementVNode("span", null, toDisplayString(tempSelected[filter.value] ? `${unref(formatDate)(tempSelected[filter.value].start, { dayMonth: true, language: "en" })} - ${unref(formatDate)(tempSelected[filter.value].end, { dayMonth: true, language: "en" })}` : "Select dates"), 1)
354
- ], 8, _hoisted_20),
355
- createElementVNode("div", _hoisted_21, [
355
+ createElementVNode("div", _hoisted_20, [
356
356
  createVNode(Calendar, {
357
357
  date: tempSelected[filter.value],
358
358
  "onUpdate:date": ($event) => tempSelected[filter.value] = $event,
@@ -362,15 +362,15 @@ const _sfc_main = {
362
362
  }, null, 8, ["date", "onUpdate:date"])
363
363
  ])
364
364
  ])) : createCommentVNode("", true),
365
- createElementVNode("div", _hoisted_22, [
365
+ createElementVNode("div", _hoisted_21, [
366
366
  createElementVNode("button", {
367
367
  onClick: ($event) => cancelFilter(filter.value),
368
- class: "w-100 button bg-light"
369
- }, " Cancel ", 8, _hoisted_23),
368
+ class: "bg-light button flex-child-full"
369
+ }, " Cancel ", 8, _hoisted_22),
370
370
  createElementVNode("button", {
371
371
  onClick: ($event) => applyFilter(filter.value),
372
- class: "w-100 button bg-main"
373
- }, " Apply ", 8, _hoisted_24)
372
+ class: "bg-main w-100 button flex-child-full"
373
+ }, " Apply ", 8, _hoisted_23)
374
374
  ])
375
375
  ]),
376
376
  _: 2
@@ -380,7 +380,7 @@ const _sfc_main = {
380
380
  };
381
381
  }
382
382
  };
383
- const Filters = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e749b035"]]);
383
+ const Filters = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-798714cf"]]);
384
384
  export {
385
385
  Filters as default
386
386
  };