@ozdao/martyrs 0.2.563 → 0.2.565

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 (207) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/src/components/Button/Button.vue2.js +33 -42
  13. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
  14. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
  15. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  16. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  17. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  18. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  19. package/dist/martyrs/src/components/Loader/Loader.vue.js +1 -2
  20. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -1
  21. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  22. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  23. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  24. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -0
  25. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  26. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  27. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  28. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  29. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  30. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  31. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  32. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  33. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  34. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +12 -12
  35. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  36. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  37. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  38. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  39. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  40. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  41. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +3 -3
  42. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  43. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  44. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  45. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  46. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  47. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  48. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  49. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
  50. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  51. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +1 -1
  52. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  53. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  54. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  55. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  56. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  57. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  58. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  59. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  60. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +2 -2
  61. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  62. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  63. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +0 -16
  64. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
  65. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  66. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  68. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  69. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  70. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  71. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  72. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  73. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  74. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  76. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  77. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  78. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  80. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  81. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  82. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  84. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  85. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +9 -6
  86. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  87. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -3
  88. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  89. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  90. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  92. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
  93. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  94. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  95. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  96. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  97. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  98. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +210 -60
  99. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  100. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +3 -3
  101. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  102. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  103. package/dist/martyrs.css +1 -1
  104. package/dist/martyrs.es.js +1 -1
  105. package/dist/music.server.js +11 -12
  106. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  107. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  108. package/dist/notifications.server.js +0 -3
  109. package/dist/orders.server.js +5 -6
  110. package/dist/organizations.server.js +9 -10
  111. package/dist/products.server.js +27 -26
  112. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  113. package/dist/rents.server.js +2 -3
  114. package/dist/spots.server.js +1 -1
  115. package/dist/style.css +38 -23
  116. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  117. package/package.json +1 -1
  118. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  119. package/src/builder/rspack/rspack.config.api.js +15 -4
  120. package/src/builder/rspack/rspack.config.base.js +3 -3
  121. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  122. package/src/builder/templates/page.js +2 -2
  123. package/src/components/Button/Button.vue +50 -37
  124. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  125. package/src/components/Loader/Loader.vue +1 -1
  126. package/src/components/Tree/Tree.vue +6 -3
  127. package/src/modules/PROCESS.md +0 -0
  128. package/src/modules/TASKS.MD +17 -0
  129. package/src/modules/auth/auth.client.js +11 -7
  130. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  131. package/src/modules/auth/views/router/auth.router.js +94 -0
  132. package/src/modules/auth/views/router/users.router.js +153 -0
  133. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  134. package/src/modules/community/community.server.js +8 -0
  135. package/src/modules/community/policies/blog.policies.js +55 -0
  136. package/src/modules/community/routes/blog.routes.js +1 -1
  137. package/src/modules/community/routes/comments.routes.js +1 -1
  138. package/src/modules/community/routes/reactions.routes.js +1 -4
  139. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  140. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  141. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  142. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  143. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  144. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  145. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  146. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  147. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  148. package/src/modules/core/core.server.js +1 -0
  149. package/src/modules/core/locales/en.js +45 -0
  150. package/src/modules/core/locales/ru.js +45 -0
  151. package/src/modules/core/models/schemas/common.schema.js +1 -1
  152. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  153. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  154. package/src/modules/core/views/mixins/mixins.js +1 -2
  155. package/src/modules/core/views/router/addRoutes.js +6 -1
  156. package/src/modules/events/routes/events.routes.js +1 -1
  157. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  158. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  159. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  160. package/src/modules/marketplace/marketplace.router.js +66 -0
  161. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  162. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  163. package/src/modules/marketplace/views/store/marketplace.js +0 -16
  164. package/src/modules/music/controllers/stream.controller.js +1 -1
  165. package/src/modules/music/music.server.js +1 -1
  166. package/src/modules/music/policies/music.policies.js +3 -2
  167. package/src/modules/music/router/library.router.js +26 -0
  168. package/src/modules/music/router/music.router.js +176 -0
  169. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  170. package/src/modules/notifications/notifications.server.js +1 -3
  171. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  172. package/src/modules/orders/orders.server.js +0 -1
  173. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  174. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  175. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  176. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  177. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  178. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  179. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  180. package/src/modules/products/components/pages/Categories.vue +9 -6
  181. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  182. package/src/modules/products/components/pages/Product.vue +11 -5
  183. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  184. package/src/modules/products/controllers/categories.controller.js +32 -27
  185. package/src/modules/products/routes/categories.routes.js +1 -1
  186. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  187. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  188. package/src/modules/spots/components/pages/Map.vue +2 -2
  189. package/dist/abac-DYoheWuc.js +0 -1031
  190. package/dist/core.abac-DUPBnlk6.js +0 -298
  191. package/dist/core.logger-C3q8A9dl.js +0 -51
  192. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  193. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  194. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  195. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  196. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  197. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  198. package/src/modules/auth/auth.router.js +0 -262
  199. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  200. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  201. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  202. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  203. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  204. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  205. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  206. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  207. package/src/modules/governance/reactcode/eslint.config.js +0 -28
@@ -3,7 +3,7 @@ const ObjectId = { Types }.Types.ObjectId;
3
3
 
4
4
  function getBasicOptions(query) {
5
5
  console.log(query);
6
- const { _id, url, status, notstatus, type, organization, owner, customer, creator, product } = query;
6
+ const { _id, url, status, notstatus, type, organization, owner, customer, creator, product, listing } = query;
7
7
  const stages = [];
8
8
  const conditions = [];
9
9
  if (_id) {
@@ -50,6 +50,9 @@ function getBasicOptions(query) {
50
50
  if (product) {
51
51
  conditions.push({ 'product': new ObjectId(product) });
52
52
  }
53
+ if (listing) {
54
+ conditions.push({ listing: listing });
55
+ }
53
56
 
54
57
  if (conditions.length > 0) {
55
58
  stages.push({ $match: { $and: conditions } });
@@ -15,6 +15,7 @@ async function createWebSocketManager(...args) {
15
15
  return new _WebSocketManagerClass(...args);
16
16
  }
17
17
 
18
+
18
19
  // Для обратной совместимости экспортируем как WebSocketManager
19
20
  const WebSocketManager = createWebSocketManager;
20
21
 
@@ -25,5 +25,50 @@ export default {
25
25
  PREVIEW_GENERATION_ERROR: 'Error generating file previews.',
26
26
  IMAGE_CONVERSION_ERROR: 'Error converting image format.'
27
27
  }
28
+ },
29
+ footer: {
30
+ description: 'Get in touch with us',
31
+ phoneNumber: '+1 234 567 890',
32
+ emailAddress: "info{'@'}example.com",
33
+ hours_text: 'Mon-Fri: 9:00 AM - 6:00 PM',
34
+ app: 'Download our app',
35
+ subscribe: 'Subscribe to our newsletter',
36
+ subscribe_text: 'Stay updated with the latest news and updates',
37
+ follow: 'Follow us',
38
+ year: '2025',
39
+ heart: '♥',
40
+ copyright: 'All rights reserved',
41
+ ozdao: 'Made by OZ DAO',
42
+ navigationColumns: [
43
+ {
44
+ sections: [
45
+ {
46
+ title: 'Company',
47
+ items: [
48
+ { name: 'About', url: 'about' },
49
+ { name: 'Careers', url: 'careers' },
50
+ { name: 'Contact', url: 'contact' }
51
+ ]
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ sections: [
57
+ {
58
+ title: 'Resources',
59
+ items: [
60
+ { name: 'Blog', url: 'blog' },
61
+ { name: 'Help Center', url: 'help' },
62
+ { name: 'Privacy', url: 'privacy' }
63
+ ]
64
+ }
65
+ ]
66
+ }
67
+ ],
68
+ socialLinks: [
69
+ { name: 'IconInstagram', url: 'https://instagram.com' },
70
+ { name: 'IconFacebook', url: 'https://facebook.com' },
71
+ { name: 'IconLinkedin', url: 'https://linkedin.com' }
72
+ ]
28
73
  }
29
74
  };
@@ -17,5 +17,50 @@ export default {
17
17
  POST_URL_ALREADY_IN_USE: 'Ошибка! Публикация с этим URL уже используется!',
18
18
  NAME_CANNOT_BE_EMPTY: 'Ошибка: Название не может быть пустым. Пожалуйста, введите название.',
19
19
  }
20
+ },
21
+ footer: {
22
+ description: 'Свяжитесь с нами',
23
+ phoneNumber: '+1 234 567 890',
24
+ emailAddress: "info{'@'}example.com",
25
+ hours_text: 'Пн-Пт: 9:00 - 18:00',
26
+ app: 'Скачайте наше приложение',
27
+ subscribe: 'Подпишитесь на рассылку',
28
+ subscribe_text: 'Будьте в курсе последних новостей и обновлений',
29
+ follow: 'Подписывайтесь',
30
+ year: '2025',
31
+ heart: '♥',
32
+ copyright: 'Все права защищены',
33
+ ozdao: 'Сделано OZ DAO',
34
+ navigationColumns: [
35
+ {
36
+ sections: [
37
+ {
38
+ title: 'Компания',
39
+ items: [
40
+ { name: 'О нас', url: 'about' },
41
+ { name: 'Карьера', url: 'careers' },
42
+ { name: 'Контакты', url: 'contact' }
43
+ ]
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ sections: [
49
+ {
50
+ title: 'Ресурсы',
51
+ items: [
52
+ { name: 'Блог', url: 'blog' },
53
+ { name: 'Помощь', url: 'help' },
54
+ { name: 'Конфиденциальность', url: 'privacy' }
55
+ ]
56
+ }
57
+ ]
58
+ }
59
+ ],
60
+ socialLinks: [
61
+ { name: 'IconInstagram', url: 'https://instagram.com' },
62
+ { name: 'IconFacebook', url: 'https://facebook.com' },
63
+ { name: 'IconLinkedin', url: 'https://linkedin.com' }
64
+ ]
20
65
  }
21
66
  };
@@ -2,7 +2,7 @@ export default (function applyCommonSchema(schema, db) {
2
2
  schema.add({
3
3
  status: {
4
4
  type: String,
5
- enum: ['draft', 'published', 'featured', 'archived', 'removed'],
5
+ enum: ['draft', 'published', 'internal', 'archived', 'removed'],
6
6
  default: 'draft',
7
7
  required: true,
8
8
  },
@@ -5,6 +5,11 @@ class I18nManager {
5
5
  this.moduleLocales = new Map();
6
6
  this.overrides = new Map();
7
7
  this.extensions = new Map();
8
+ this.i18nInstance = null;
9
+ }
10
+
11
+ setI18nInstance(i18n) {
12
+ this.i18nInstance = i18n;
8
13
  }
9
14
 
10
15
  register(moduleName, locales) {
@@ -12,6 +17,14 @@ class I18nManager {
12
17
  throw new TypeError('Invalid arguments for register()');
13
18
  }
14
19
  this.moduleLocales.set(moduleName, locales);
20
+
21
+ // Если i18n instance уже создан, добавляем переводы динамически
22
+ if (this.i18nInstance) {
23
+ Object.entries(locales).forEach(([locale, messages]) => {
24
+ this.i18nInstance.global.mergeLocaleMessage(locale, messages);
25
+ });
26
+ }
27
+
15
28
  return this;
16
29
  }
17
30
 
@@ -0,0 +1,81 @@
1
+ <!-- filters/FilterPrice.vue -->
2
+ <template>
3
+ <div class="filter-price">
4
+ <div class="flex gap-thin align-center">
5
+ <Field
6
+ type="number"
7
+ v-model:field="localValue.min"
8
+ placeholder="Min"
9
+ class="flex-1 bg-light pd-medium radius-small"
10
+ @blur="updateValue"
11
+ />
12
+ <span class="t-small">—</span>
13
+ <Field
14
+ type="number"
15
+ v-model:field="localValue.max"
16
+ placeholder="Max"
17
+ class="flex-1 bg-light pd-medium radius-small"
18
+ @blur="updateValue"
19
+ />
20
+ </div>
21
+
22
+ <div v-if="config?.presets" class="mt-thin">
23
+ <button
24
+ v-for="preset in config.presets"
25
+ :key="preset.label"
26
+ @click="applyPreset(preset)"
27
+ class="btn btn-small mr-thin mb-thin"
28
+ :class="isPresetActive(preset) ? 'btn-primary' : 'btn-secondary'"
29
+ >
30
+ {{ preset.label }}
31
+ </button>
32
+ </div>
33
+ </div>
34
+ </template>
35
+
36
+ <script setup>
37
+ import { ref, watch } from 'vue'
38
+ import Field from '@martyrs/src/components/Field/Field.vue';
39
+
40
+ const props = defineProps({
41
+ config: {
42
+ type: Object,
43
+ default: () => ({})
44
+ }
45
+ })
46
+
47
+ const model = defineModel({
48
+ type: Object,
49
+ default: () => ({ min: null, max: null })
50
+ })
51
+
52
+ const localValue = ref({
53
+ min: model.value?.min || null,
54
+ max: model.value?.max || null
55
+ })
56
+
57
+ watch(model, (val) => {
58
+ if (val) {
59
+ localValue.value = {
60
+ min: val.min || null,
61
+ max: val.max || null
62
+ }
63
+ }
64
+ }, { deep: true })
65
+
66
+ const updateValue = () => {
67
+ model.value = { ...localValue.value }
68
+ }
69
+
70
+ const applyPreset = (preset) => {
71
+ localValue.value = {
72
+ min: preset.min || null,
73
+ max: preset.max || null
74
+ }
75
+ updateValue()
76
+ }
77
+
78
+ const isPresetActive = (preset) => {
79
+ return localValue.value.min === preset.min && localValue.value.max === preset.max
80
+ }
81
+ </script>
@@ -1,10 +1,9 @@
1
1
  import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';
2
- import { inject } from 'vue';
3
2
 
4
3
  // useGlobalMixins.js
5
4
  export function useGlobalMixins() {
6
5
  const isModuleInstalled = (moduleName) => {
7
- const store = inject('store');
6
+ const store = useStore();
8
7
  const options = store.core.state.options;
9
8
 
10
9
  if (options && typeof options === 'object') {
@@ -52,7 +52,12 @@ function addRoutes(router, config) {
52
52
  if (emptyRootBehavior.type === 'redirect') {
53
53
  // Используем пользовательский redirectPath или первый дочерний маршрут
54
54
  const redirectTo = emptyRootBehavior.redirectPath || filteredRoutes[0].path;
55
- finalChildren = [{ path: '', redirect: redirectTo, meta: { ...meta, isAutoRedirect: true } }, ...filteredRoutes];
55
+ finalChildren = [{
56
+ path: '',
57
+ redirect: redirectTo,
58
+ name: `${routeNamePrefix}${basePath.charAt(0).toUpperCase() + basePath.slice(1)}Root`,
59
+ meta: { ...meta, isAutoRedirect: true }
60
+ }, ...filteredRoutes];
56
61
  } else if (emptyRootBehavior.type === 'fallback') {
57
62
  finalChildren = [
58
63
  {
@@ -1,5 +1,5 @@
1
1
  import middlewareFactoryAuth from '@martyrs/src/modules/auth/controllers/middlewares/index.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
3
3
  import controllerFactory from '../controllers/events.controller.js';
4
4
  import middlewareFactoryEvents from '../middlewares/server/index.js';
5
5
  // ABAC
@@ -188,7 +188,7 @@
188
188
 
189
189
  <!-- :actions="[{
190
190
  component: IconEdit,
191
- handler: () => core.actions.add(leftovers.state.current.positions, position),
191
+ handler: () => store.core.actions.add(leftovers.state.current.positions, position),
192
192
  class: 'bg-light'
193
193
  },{
194
194
  component: IconDelete,
@@ -254,7 +254,7 @@
254
254
 
255
255
  import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';
256
256
  import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';
257
- const core = useStore();
257
+ const store = useStore();
258
258
  import * as inventory from '@martyrs/src/modules/inventory/store/inventory.store.js';
259
259
  import * as products from '@martyrs/src/modules/products/store/products.js';
260
260
  import * as spots from '@martyrs/src/modules/spots/store/spots.js';
@@ -334,7 +334,7 @@
334
334
  }
335
335
  };
336
336
  // Add position to inventory state
337
- core.actions.add(inventory.state.current.positions, position);
337
+ store.core.actions.add(inventory.state.current.positions, position);
338
338
  closeVariantsPopup();
339
339
  }
340
340
 
@@ -1,4 +1,4 @@
1
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
1
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
2
2
 
3
3
  const { getInstance } = coreabac;
4
4
 
@@ -1,5 +1,5 @@
1
1
  import jwtFactory from '@martyrs/src/modules/auth/controllers/middlewares/authJwt.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
3
3
  import adjustmentServiceFactory from '../services/adjustment.service.js';
4
4
  import availabilityServiceFactory from '../services/availability.service.js';
5
5
  import auditServiceFactory from '../services/audit.service.js';
@@ -0,0 +1,66 @@
1
+ function buildMarketplaceTree(options = {}) {
2
+ const layoutComponent = options.layoutComponent || (() => import(
3
+ /* webpackChunkName: 'marketplace-layout' */
4
+ './views/components/layouts/Marketplace.vue'
5
+ ));
6
+ const catalogComponent = options.catalogComponent || (() => import(
7
+ /* webpackChunkName: 'marketplace-catalog' */
8
+ './views/components/pages/Catalog.vue'
9
+ ));
10
+
11
+ const buildName = (suffix) => {
12
+ const prefix = options.routeNamePrefix || '';
13
+ return suffix ? `${prefix}${suffix}` : prefix || undefined;
14
+ };
15
+
16
+ return [
17
+ {
18
+ path: '',
19
+ name: buildName('Marketplace') || 'Marketplace',
20
+ component: layoutComponent,
21
+ meta: {
22
+ title: {
23
+ en: 'Marketplace',
24
+ ru: 'Маркетплейс',
25
+ },
26
+ },
27
+ children: [
28
+ {
29
+ path: ':country?',
30
+ component: catalogComponent,
31
+ children: [
32
+ {
33
+ path: ':state?',
34
+ name: buildName('State') || 'State',
35
+ component: catalogComponent,
36
+ children: [
37
+ {
38
+ path: ':city?',
39
+ name: buildName('City') || 'City',
40
+ component: catalogComponent,
41
+ },
42
+ ],
43
+ },
44
+ ],
45
+ },
46
+ ],
47
+ },
48
+ ];
49
+ }
50
+
51
+ export function getRoutes(options = {}) {
52
+ const route = options.route || 'Home';
53
+ const routes = [];
54
+
55
+ routes.push({
56
+ parentName: route,
57
+ config: {
58
+ basePath: options.basePath || 'marketplace',
59
+ routes: buildMarketplaceTree(options),
60
+ },
61
+ });
62
+
63
+ return routes;
64
+ }
65
+
66
+ export default { getRoutes };