@ozdao/martyrs 0.2.577 → 0.2.580
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.
- package/dist/builder.js +42 -34
- package/dist/loader.js +5 -0
- package/dist/{main-EZaj64lH.js → main-vq1_XpmQ.js} +430 -425
- package/dist/martyrs/dist/{main-EZaj64lH.js → main-vq1_XpmQ.js} +12 -12
- package/dist/martyrs/dist/main-vq1_XpmQ.js.map +1 -0
- package/dist/martyrs/dist/{web-ClbcbWYJ.js → web-BNJDRie_.js} +2 -2
- package/dist/martyrs/dist/{web-ClbcbWYJ.js.map → web-BNJDRie_.js.map} +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js +21 -11
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js +3 -3
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
- package/dist/martyrs/src/components/Upload/{Upload.vue.js → Upload.vue2.js} +2 -2
- package/dist/martyrs/src/components/Upload/Upload.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/VideoPlayer.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +34 -38
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +19 -10
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/actions/IconOpenLink.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/actions/IconShopcartAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/actions/IconShow.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconAddress.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconBell.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconCalendar.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconCatalog.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconCommunity.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconDate.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconEarn.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconEmail.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconEvents.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconFeatured.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconFollowing.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconGroups.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconHome.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconInfo.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconLeftovers.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconList.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconOrders.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconPayments.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconPhone.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconPopular.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconPrice.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconProfile.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconRecent.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconShopcart.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconArrow.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconCheckmark.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconCross.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconDelete.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconEllipsis.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconFilter.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconInfo.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconMinus.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPlus.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconSearch.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconUpload.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/dribbble.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/facebook.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/instagram.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/line.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/linkedin.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/reddit.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/telegram.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/twitter.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/vk.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/whatsapp.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/socials/youtube.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/style.css +36 -27
- package/dist/{web-ClbcbWYJ.js → web-BNJDRie_.js} +1 -1
- package/package.json +17 -17
- package/src/components/BottomSheet/BottomSheet.vue +1 -1
- package/src/components/Chips/Chips.vue +2 -2
- package/src/components/Dropdown/Dropdown.vue +42 -14
- package/src/components/Menu/MenuItem.vue +3 -3
- package/src/jit/loader.js +5 -0
- package/src/jit/plugin.js +10 -1
- package/src/jit/rules.js +42 -41
- package/src/modules/core/views/components/partials/Navigation.vue +9 -12
- package/src/modules/core/views/components/partials/Sidebar.vue +17 -11
- package/src/modules/governance/reactcode/package-lock.json +4229 -0
- package/src/modules/icons/actions/IconDuplicate.vue +1 -1
- package/src/modules/icons/actions/IconOpenLink.vue +1 -1
- package/src/modules/icons/actions/IconShopcartAdd.vue +1 -1
- package/src/modules/icons/actions/IconShow.vue +1 -1
- package/src/modules/icons/entities/IconAddress.vue +1 -1
- package/src/modules/icons/entities/IconBell.vue +1 -1
- package/src/modules/icons/entities/IconCalendar.vue +1 -1
- package/src/modules/icons/entities/IconCash.vue +1 -1
- package/src/modules/icons/entities/IconCatalog.vue +1 -1
- package/src/modules/icons/entities/IconCommunity.vue +1 -1
- package/src/modules/icons/entities/IconDate.vue +1 -1
- package/src/modules/icons/entities/IconDiscount.vue +1 -1
- package/src/modules/icons/entities/IconEarn.vue +1 -1
- package/src/modules/icons/entities/IconEmail.vue +1 -1
- package/src/modules/icons/entities/IconEvents.vue +1 -1
- package/src/modules/icons/entities/IconFeatured.vue +1 -1
- package/src/modules/icons/entities/IconFile.vue +1 -1
- package/src/modules/icons/entities/IconFollowing.vue +1 -1
- package/src/modules/icons/entities/IconGallery.vue +1 -1
- package/src/modules/icons/entities/IconGroups.vue +1 -1
- package/src/modules/icons/entities/IconHome.vue +1 -1
- package/src/modules/icons/entities/IconInfo.vue +1 -1
- package/src/modules/icons/entities/IconLeftovers.vue +1 -1
- package/src/modules/icons/entities/IconList.vue +1 -1
- package/src/modules/icons/entities/IconLock.vue +1 -1
- package/src/modules/icons/entities/IconMusic.vue +1 -1
- package/src/modules/icons/entities/IconOrders.vue +1 -1
- package/src/modules/icons/entities/IconPayments.vue +1 -1
- package/src/modules/icons/entities/IconPhone.vue +1 -1
- package/src/modules/icons/entities/IconPopular.vue +1 -1
- package/src/modules/icons/entities/IconPrice.vue +1 -1
- package/src/modules/icons/entities/IconProducts.vue +1 -1
- package/src/modules/icons/entities/IconProfile.vue +1 -1
- package/src/modules/icons/entities/IconRecent.vue +1 -1
- package/src/modules/icons/entities/IconSettings.vue +1 -1
- package/src/modules/icons/entities/IconShopcart.vue +1 -1
- package/src/modules/icons/navigation/IconAdd.vue +1 -1
- package/src/modules/icons/navigation/IconArrow.vue +1 -1
- package/src/modules/icons/navigation/IconAttach.vue +1 -1
- package/src/modules/icons/navigation/IconCheck.vue +1 -1
- package/src/modules/icons/navigation/IconCheckmark.vue +1 -1
- package/src/modules/icons/navigation/IconCross.vue +1 -1
- package/src/modules/icons/navigation/IconDelete.vue +1 -1
- package/src/modules/icons/navigation/IconDoubleCheck.vue +1 -1
- package/src/modules/icons/navigation/IconEdit.vue +1 -1
- package/src/modules/icons/navigation/IconEllipsis.vue +1 -1
- package/src/modules/icons/navigation/IconFilter.vue +1 -1
- package/src/modules/icons/navigation/IconHeart.vue +1 -1
- package/src/modules/icons/navigation/IconInfo.vue +1 -1
- package/src/modules/icons/navigation/IconLike.vue +1 -1
- package/src/modules/icons/navigation/IconMinus.vue +1 -1
- package/src/modules/icons/navigation/IconMute.vue +1 -1
- package/src/modules/icons/navigation/IconPause.vue +1 -1
- package/src/modules/icons/navigation/IconPlay.vue +1 -1
- package/src/modules/icons/navigation/IconPlus.vue +1 -1
- package/src/modules/icons/navigation/IconRefresh.vue +1 -1
- package/src/modules/icons/navigation/IconSearch.vue +1 -1
- package/src/modules/icons/navigation/IconShuffle.vue +1 -1
- package/src/modules/icons/navigation/IconSort.vue +1 -1
- package/src/modules/icons/navigation/IconUnMute.vue +1 -1
- package/src/modules/icons/navigation/IconUpload.vue +1 -1
- package/src/modules/icons/navigation/IconVolume.vue +1 -1
- package/src/modules/icons/socials/dribbble.vue +1 -1
- package/src/modules/icons/socials/facebook.vue +1 -1
- package/src/modules/icons/socials/instagram.vue +1 -1
- package/src/modules/icons/socials/line.vue +1 -1
- package/src/modules/icons/socials/linkedin.vue +1 -1
- package/src/modules/icons/socials/reddit.vue +1 -1
- package/src/modules/icons/socials/telegram.vue +1 -1
- package/src/modules/icons/socials/twitter.vue +1 -1
- package/src/modules/icons/socials/vk.vue +1 -1
- package/src/modules/icons/socials/whatsapp.vue +1 -1
- package/src/modules/icons/socials/youtube.vue +1 -1
- package/src/styles/config.scss +0 -1
- package/src/styles/layout.scss +0 -3
- package/src/styles/reset.scss +5 -2
- package/dist/martyrs/dist/main-EZaj64lH.js.map +0 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Upload/Upload.vue.js.map +0 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
|
@@ -9,32 +9,33 @@ import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue.js";
|
|
|
9
9
|
import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
10
10
|
const _hoisted_1 = ["onClick"];
|
|
11
11
|
const _hoisted_2 = { class: "fw-medium" };
|
|
12
|
-
const _hoisted_3 =
|
|
13
|
-
const _hoisted_4 =
|
|
12
|
+
const _hoisted_3 = { class: "dropdown-submenu" };
|
|
13
|
+
const _hoisted_4 = ["onClick"];
|
|
14
|
+
const _hoisted_5 = {
|
|
14
15
|
key: 1,
|
|
15
16
|
class: ""
|
|
16
17
|
};
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
18
|
+
const _hoisted_6 = { class: "w-100" };
|
|
19
|
+
const _hoisted_7 = ["onClick"];
|
|
20
|
+
const _hoisted_8 = {
|
|
20
21
|
key: 0,
|
|
21
22
|
class: "w-100 flex-child-default w-max-big flex flex-center aspect-1x1"
|
|
22
23
|
};
|
|
23
|
-
const
|
|
24
|
+
const _hoisted_9 = {
|
|
24
25
|
key: 1,
|
|
25
26
|
class: "p-regular"
|
|
26
27
|
};
|
|
27
|
-
const
|
|
28
|
-
const
|
|
28
|
+
const _hoisted_10 = ["onClick"];
|
|
29
|
+
const _hoisted_11 = {
|
|
29
30
|
key: 0,
|
|
30
31
|
class: "mn-l-small mn-t-thin"
|
|
31
32
|
};
|
|
32
|
-
const
|
|
33
|
-
const
|
|
33
|
+
const _hoisted_12 = ["onClick"];
|
|
34
|
+
const _hoisted_13 = {
|
|
34
35
|
key: 1,
|
|
35
36
|
class: ""
|
|
36
37
|
};
|
|
37
|
-
const
|
|
38
|
+
const _hoisted_14 = { class: "w-100" };
|
|
38
39
|
const _sfc_main = {
|
|
39
40
|
__name: "Navigation",
|
|
40
41
|
props: {
|
|
@@ -90,9 +91,9 @@ const _sfc_main = {
|
|
|
90
91
|
};
|
|
91
92
|
return (_ctx, _cache) => {
|
|
92
93
|
return openBlock(), createElementBlock("nav", {
|
|
93
|
-
class: normalizeClass(["ease-quint-out
|
|
94
|
+
class: normalizeClass(["ease-quint-out", [
|
|
94
95
|
__props.stateSidebar ? "pd-small" : "pd-micro",
|
|
95
|
-
__props.horizontal ? "w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible" : "
|
|
96
|
+
__props.horizontal ? "w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible o-x-visible" : "gap-medium flex flex-column"
|
|
96
97
|
]])
|
|
97
98
|
}, [
|
|
98
99
|
(openBlock(true), createElementBlock(Fragment, null, renderList(props.navigationItems, (section) => {
|
|
@@ -138,9 +139,7 @@ const _sfc_main = {
|
|
|
138
139
|
], 10, _hoisted_1)
|
|
139
140
|
]),
|
|
140
141
|
default: withCtx(() => [
|
|
141
|
-
createElementVNode("ul",
|
|
142
|
-
class: normalizeClass(["dropdown-submenu bg-blur-small", __props.theme === "light" ? "bg-white-transp-50 " : "bg-black-transp-50"])
|
|
143
|
-
}, [
|
|
142
|
+
createElementVNode("ul", _hoisted_3, [
|
|
144
143
|
(openBlock(true), createElementBlock(Fragment, null, renderList(item.subItems, (subItem) => {
|
|
145
144
|
return openBlock(), createElementBlock("li", {
|
|
146
145
|
key: subItem.title
|
|
@@ -148,39 +147,37 @@ const _sfc_main = {
|
|
|
148
147
|
createElementVNode("a", {
|
|
149
148
|
onClick: ($event) => subItem.route ? unref(router).push(processRoute(subItem.route)) : null,
|
|
150
149
|
href: "#",
|
|
151
|
-
class: normalizeClass(["ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small", [
|
|
150
|
+
class: normalizeClass(["group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small", [
|
|
152
151
|
subItem.route && unref(route).path === processRoute(subItem.route) ? __props.theme === "light" ? "bg-light" : "bg-dark" : "",
|
|
153
152
|
__props.theme === "light" ? "hover:bg-light" : "hover:bg-dark"
|
|
154
153
|
]])
|
|
155
154
|
}, [
|
|
156
155
|
subItem.iconComponent ? (openBlock(), createBlock(resolveDynamicComponent(subItem.iconComponent), {
|
|
157
156
|
key: 0,
|
|
158
|
-
class: "i-medium"
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
], 10, _hoisted_3)
|
|
157
|
+
class: "i-medium t-black-transp-25 group-hover:t-main"
|
|
158
|
+
})) : (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(subItem.icon), 1)),
|
|
159
|
+
createElementVNode("span", _hoisted_6, toDisplayString(subItem.title), 1)
|
|
160
|
+
], 10, _hoisted_4)
|
|
163
161
|
]);
|
|
164
162
|
}), 128))
|
|
165
|
-
]
|
|
163
|
+
])
|
|
166
164
|
]),
|
|
167
165
|
_: 2
|
|
168
166
|
}, 1024)) : (openBlock(), createElementBlock("button", {
|
|
169
167
|
key: 1,
|
|
170
|
-
class: normalizeClass(["ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center", [
|
|
168
|
+
class: normalizeClass(["group ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center", [
|
|
171
169
|
__props.horizontal ? "pd-thin" : "",
|
|
172
170
|
item.route && unref(route).path === processRoute(item.route) ? __props.theme === "light" ? "bg-light" : "bg-dark" : "",
|
|
173
171
|
__props.theme === "light" ? "hover:bg-light" : "hover:bg-dark"
|
|
174
172
|
]]),
|
|
175
173
|
onClick: ($event) => item.route ? (_ctx.isPhone ? __props.stateSidebar = false : null, unref(route).path !== processRoute(item.route) ? unref(router).push(processRoute(item.route)) : null) : null
|
|
176
174
|
}, [
|
|
177
|
-
!__props.horizontal ? (openBlock(), createElementBlock("div",
|
|
175
|
+
!__props.horizontal ? (openBlock(), createElementBlock("div", _hoisted_8, [
|
|
178
176
|
item.iconComponent ? (openBlock(), createBlock(resolveDynamicComponent(item.iconComponent), {
|
|
179
177
|
key: 0,
|
|
180
|
-
class: "i-medium flex-child-default"
|
|
181
|
-
fill: "rgba(var(--black), 0.25)"
|
|
178
|
+
class: "i-medium flex-child-default ease-quint-out t-black-transp-25 group-hover:t-main"
|
|
182
179
|
})) : createCommentVNode("", true),
|
|
183
|
-
!item.iconComponent ? (openBlock(), createElementBlock("span",
|
|
180
|
+
!item.iconComponent ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(item.icon), 1)) : createCommentVNode("", true)
|
|
184
181
|
])) : createCommentVNode("", true),
|
|
185
182
|
createElementVNode("span", {
|
|
186
183
|
class: normalizeClass(["ease-quint-out w-100 t-left fw-medium", { "hidden": !__props.stateSidebar && !__props.horizontal, "visible": __props.stateSidebar || __props.horizontal }])
|
|
@@ -194,8 +191,8 @@ const _sfc_main = {
|
|
|
194
191
|
class: normalizeClass([{ "rotate-180deg mn-t-micro-negative": _ctx.isOpen }, "i-small"]),
|
|
195
192
|
fill: __props.theme === "dark" ? "rgb(var(--white))" : "rgb(var(--black))"
|
|
196
193
|
}, null, 8, ["class", "fill"])
|
|
197
|
-
], 10,
|
|
198
|
-
], 10,
|
|
194
|
+
], 10, _hoisted_10)) : createCommentVNode("", true)
|
|
195
|
+
], 10, _hoisted_7)),
|
|
199
196
|
createVNode(Transition, {
|
|
200
197
|
"enter-active-class": "dropdown-enter",
|
|
201
198
|
"leave-active-class": "dropdown-leave",
|
|
@@ -205,7 +202,7 @@ const _sfc_main = {
|
|
|
205
202
|
"leave-to-class": "dropdown-leave-to"
|
|
206
203
|
}, {
|
|
207
204
|
default: withCtx(() => [
|
|
208
|
-
item.subItems && isSectionExpanded(item.title) && __props.stateSidebar && !__props.horizontal ? (openBlock(), createElementBlock("ul",
|
|
205
|
+
item.subItems && isSectionExpanded(item.title) && __props.stateSidebar && !__props.horizontal ? (openBlock(), createElementBlock("ul", _hoisted_11, [
|
|
209
206
|
(openBlock(true), createElementBlock(Fragment, null, renderList(item.subItems, (subItem) => {
|
|
210
207
|
return openBlock(), createElementBlock("li", {
|
|
211
208
|
key: subItem.title
|
|
@@ -213,18 +210,17 @@ const _sfc_main = {
|
|
|
213
210
|
createElementVNode("a", {
|
|
214
211
|
onClick: ($event) => subItem.route ? (_ctx.isPhone ? __props.stateSidebar = false : null, unref(route).path !== processRoute(subItem.route) ? unref(router).push(processRoute(subItem.route)) : null) : null,
|
|
215
212
|
href: "#",
|
|
216
|
-
class: normalizeClass(["ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small", [
|
|
213
|
+
class: normalizeClass(["group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small", [
|
|
217
214
|
subItem.route && unref(route).path === processRoute(subItem.route) ? __props.theme === "light" ? "bg-light" : "bg-dark" : "",
|
|
218
215
|
__props.theme === "light" ? "hover:bg-light" : "hover:bg-dark"
|
|
219
216
|
]])
|
|
220
217
|
}, [
|
|
221
218
|
subItem.iconComponent ? (openBlock(), createBlock(resolveDynamicComponent(subItem.iconComponent), {
|
|
222
219
|
key: 0,
|
|
223
|
-
class: "i-medium"
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
], 10, _hoisted_11)
|
|
220
|
+
class: "i-medium t-black-transp-25 group-hover:t-main"
|
|
221
|
+
})) : (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString(subItem.icon), 1)),
|
|
222
|
+
createElementVNode("span", _hoisted_14, toDisplayString(subItem.title), 1)
|
|
223
|
+
], 10, _hoisted_12)
|
|
228
224
|
]);
|
|
229
225
|
}), 128))
|
|
230
226
|
])) : createCommentVNode("", true)
|
|
@@ -244,7 +240,7 @@ const _sfc_main = {
|
|
|
244
240
|
};
|
|
245
241
|
}
|
|
246
242
|
};
|
|
247
|
-
const Navigation = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
243
|
+
const Navigation = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9f149045"]]);
|
|
248
244
|
export {
|
|
249
245
|
Navigation as default
|
|
250
246
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigation.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Navigation.vue"],"sourcesContent":["<script setup>\nimport { ref, watch, computed } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\n\nimport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst store = useStore()\nconst router = useRouter()\nconst route = useRoute()\n\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue'\n\nconst props = defineProps({\n navigationItems: Array,\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: Boolean,\n default: false\n }\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst expandedSections = ref([])\n\nconst toggleSection = (title) => {\n if (!props.stateSidebar) {\n if (menuItems.value.flatMap(section => section.items).find(item => item.title === title && item.subItems)) {\n emits('closeSidebar')\n setTimeout(() => {\n expandedSections.value.push(title)\n }, 50)\n }\n return\n }\n \n const index = expandedSections.value.indexOf(title)\n\n if (index === -1) {\n expandedSections.value.push(title)\n } else {\n expandedSections.value.splice(index, 1)\n }\n}\n\nconst isSectionExpanded = (title) => {\n return expandedSections.value.includes(title)\n}\n\n// Process route functions with auth data and route\nconst processRoute = (routeFn) => {\n if (typeof routeFn === 'function') {\n return routeFn(auth.state, route)\n }\n return routeFn\n}\n\n</script>\n\n<template>\n <nav\n class=\"ease-quint-out o-x-visible h-100\"\n :class=\"[\n stateSidebar ? 'pd-small' : 'pd-micro',\n horizontal ? 'w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible' : 'o-y-scroll gap-medium rows-1',\n ]\"\n >\n <div \n v-for=\"section in props.navigationItems\" \n v-show=\"!section.visible || (typeof section.visible === 'function' ? section.visible(auth.state, route) : true)\"\n :key=\"section.category\" \n class=\"ease-quint-out\"\n :class=\"[\n horizontal ? 'w-max flex-child-default flex flex-nowrap' : '',\n stateSidebar && !horizontal ? '' : '',\n ]\"\n >\n <div\n v-if=\"section.category && stateSidebar && !horizontal\"\n class=\"uppercase fw-medium t-transp p-small\"\n :class=\"{\n 't-black': theme === 'light',\n 't-white': theme === 'dark'\n }\"\n >\n {{ section.category }}\n </div>\n\n <ul \n :class=\"[\n horizontal ? 'w-100 gap-micro flex flex-nowrap' : 'flex flex-column gap-micro',\n ]\"\n >\n <li\n v-for=\"item in section.items\"\n v-show=\"!item.visible || (typeof item.visible === 'function' ? item.visible(auth.state, route) : true)\"\n class=\"w-100 pos-relative\"\n :key=\"item.title\"\n\n >\n <Dropdown\n v-if=\"item.subItems && horizontal\"\n class=\"w-100\"\n align=\"left\"\n trigger=\"hover\"\n >\n <template #label>\n <button\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center pd-thin\"\n @click=\"item.route ? router.push(processRoute(item.route)) : null\"\n :class=\"[\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span class=\"fw-medium\">{{ item.title }}</span>\n <!-- <IconChevronBottom :fill=\"theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small mn-l-thin\"/> -->\n </button>\n </template>\n <ul class=\"dropdown-submenu bg-blur-small\" :class=\"theme === 'light' ? 'bg-white-transp-50 ' : 'bg-black-transp-50'\">\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n <a\n @click=\"subItem.route ? router.push(processRoute(subItem.route)) : null\"\n href=\"#\"\n class=\"ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium\"\n fill=\"rgba(var(--black), 0.25)\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </Dropdown>\n <button\n v-else\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center\"\n @click=\"item.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(item.route) ? router.push(processRoute(item.route)) : null) : null\"\n :class=\"[\n horizontal ? 'pd-thin' : '',\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <div v-if=\"!horizontal\" class=\"w-100 flex-child-default w-max-big flex flex-center aspect-1x1\">\n <component\n v-if=\"item.iconComponent\"\n :is=\"item.iconComponent\"\n class=\"i-medium flex-child-default\"\n fill=\"rgba(var(--black), 0.25)\"\n />\n <span\n v-if=\"!item.iconComponent \"\n class=\"p-regular\"\n >\n {{ item.icon }}\n </span>\n </div>\n\n <span\n class=\"ease-quint-out w-100 t-left fw-medium\"\n :class=\"{ 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }\"\n >\n {{ item.title }}\n </span>\n\n <span\n v-if=\"item.subItems && stateSidebar && !horizontal\"\n class=\"mn-l-auto mn-r-small sidebar-dropdown-icon\"\n :class=\"{ 'rotate-180deg': isSectionExpanded(item.title) }\"\n @click.stop=\"toggleSection(item.title)\"\n >\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" :fill=\" theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small\"/>\n </span>\n </button>\n <transition\n enter-active-class=\"dropdown-enter\"\n leave-active-class=\"dropdown-leave\"\n enter-from-class=\"dropdown-enter-from\"\n enter-to-class=\"dropdown-enter-to\"\n leave-from-class=\"dropdown-leave-from\"\n leave-to-class=\"dropdown-leave-to\"\n >\n <ul\n v-if=\"item.subItems && isSectionExpanded(item.title) && stateSidebar && !horizontal\"\n class=\"mn-l-small mn-t-thin\"\n >\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n\n <a\n @click=\"subItem.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(subItem.route) ? router.push(processRoute(subItem.route)) : null) : null\"\n href=\"#\"\n class=\"ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium\"\n fill=\"rgba(var(--black), 0.25)\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </transition>\n </li>\n </ul>\n </div>\n </nav>\n</template>\n\n<style scoped>\n\n.rotate-180deg {\n transform: rotate(180deg);\n}\n\n.hidden {\n/* opacity: 0;*/\n width: 0;\n display: none;\n}\n\n.visible {\n/* opacity: 1;*/\n display: block;\n}\n\n/* Dropdown animations */\n.dropdown-enter, .dropdown-leave {\n transition: all 0.3s ease-in-out;\n}\n\n.dropdown-enter-from, .dropdown-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.dropdown-enter-to, .dropdown-leave-from {\n opacity: 1;\n transform: translateY(0);\n}\n\n/* Horizontal dropdown submenu */\n.dropdown-submenu {\n list-style: none;\n padding: 0.5rem;\n margin: 0;\n min-width: 12rem;\n}\n\n.dropdown-submenu li {\n width: 100%;\n}\n\n.dropdown-submenu a {\n display: flex;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Transition for horizontal dropdown */\n:deep(.TransitionTranslateY-enter-active),\n:deep(.TransitionTranslateY-leave-active) {\n transition: translateY 0.2s ease;\n transition: opacity 0.2s ease;\n}\n\n:deep(.TransitionTranslateY-enter-from),\n:deep(.TransitionTranslateY-leave-to) {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n:deep(.TransitionTranslateY-enter-to),\n:deep(.TransitionTranslateY-leave-from) {\n opacity: 1;\n transform: translateY(0);\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASc,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAKtB,UAAM,QAAQ;AAgBd,UAAM,QAAQ;AAId,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAE/B,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,UAAU,MAAM,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,GAAG;AACzG,gBAAM,cAAc;AACpB,qBAAW,MAAM;AACf,6BAAiB,MAAM,KAAK,KAAK;AAAA,UACnC,GAAG,EAAE;AAAA,QACP;AACA;AAAA,MACF;AAEA,YAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK;AAElD,UAAI,UAAU,IAAI;AAChB,yBAAiB,MAAM,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,yBAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,aAAO,iBAAiB,MAAM,SAAS,KAAK;AAAA,IAC9C;AAGA,UAAM,eAAe,CAAC,YAAY;AAChC,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,QAAQA,OAAY,KAAK;AAAA,MAClC;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Navigation.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Navigation.vue"],"sourcesContent":["<script setup>\nimport { ref, watch, computed } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\n\nimport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst store = useStore()\nconst router = useRouter()\nconst route = useRoute()\n\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue'\n\nconst props = defineProps({\n navigationItems: Array,\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: Boolean,\n default: false\n }\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst expandedSections = ref([])\n\nconst toggleSection = (title) => {\n if (!props.stateSidebar) {\n if (menuItems.value.flatMap(section => section.items).find(item => item.title === title && item.subItems)) {\n emits('closeSidebar')\n setTimeout(() => {\n expandedSections.value.push(title)\n }, 50)\n }\n return\n }\n \n const index = expandedSections.value.indexOf(title)\n\n if (index === -1) {\n expandedSections.value.push(title)\n } else {\n expandedSections.value.splice(index, 1)\n }\n}\n\nconst isSectionExpanded = (title) => {\n return expandedSections.value.includes(title)\n}\n\n// Process route functions with auth data and route\nconst processRoute = (routeFn) => {\n if (typeof routeFn === 'function') {\n return routeFn(auth.state, route)\n }\n return routeFn\n}\n\n</script>\n\n<template>\n <nav\n class=\"ease-quint-out\"\n :class=\"[\n stateSidebar ? 'pd-small' : 'pd-micro',\n horizontal ? 'w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible o-x-visible' : 'gap-medium flex flex-column',\n ]\"\n >\n <div \n v-for=\"section in props.navigationItems\" \n v-show=\"!section.visible || (typeof section.visible === 'function' ? section.visible(auth.state, route) : true)\"\n :key=\"section.category\" \n class=\"ease-quint-out\"\n :class=\"[\n horizontal ? 'w-max flex-child-default flex flex-nowrap' : '',\n stateSidebar && !horizontal ? '' : '',\n ]\"\n >\n <div\n v-if=\"section.category && stateSidebar && !horizontal\"\n class=\"uppercase fw-medium t-transp p-small\"\n :class=\"{\n 't-black': theme === 'light',\n 't-white': theme === 'dark'\n }\"\n >\n {{ section.category }}\n </div>\n\n <ul \n :class=\"[\n horizontal ? 'w-100 gap-micro flex flex-nowrap' : 'flex flex-column gap-micro',\n ]\"\n >\n <li\n v-for=\"item in section.items\"\n v-show=\"!item.visible || (typeof item.visible === 'function' ? item.visible(auth.state, route) : true)\"\n class=\"w-100 pos-relative\"\n :key=\"item.title\"\n\n >\n <Dropdown\n v-if=\"item.subItems && horizontal\"\n class=\"w-100\"\n align=\"left\"\n trigger=\"hover\"\n >\n <template #label>\n <button\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center pd-thin\"\n @click=\"item.route ? router.push(processRoute(item.route)) : null\"\n :class=\"[\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span class=\"fw-medium\">{{ item.title }}</span>\n <!-- <IconChevronBottom :fill=\"theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small mn-l-thin\"/> -->\n </button>\n </template>\n <ul class=\"dropdown-submenu\">\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n <a\n @click=\"subItem.route ? router.push(processRoute(subItem.route)) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </Dropdown>\n <button\n v-else\n class=\"group ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center\"\n @click=\"item.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(item.route) ? router.push(processRoute(item.route)) : null) : null\"\n :class=\"[\n horizontal ? 'pd-thin' : '',\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <div v-if=\"!horizontal\" class=\"w-100 flex-child-default w-max-big flex flex-center aspect-1x1\">\n <component\n v-if=\"item.iconComponent\"\n :is=\"item.iconComponent\"\n class=\"i-medium flex-child-default ease-quint-out t-black-transp-25 group-hover:t-main\"\n />\n <span\n v-if=\"!item.iconComponent \"\n class=\"p-regular\"\n >\n {{ item.icon }}\n </span>\n </div>\n\n <span\n class=\"ease-quint-out w-100 t-left fw-medium\"\n :class=\"{ 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }\"\n >\n {{ item.title }}\n </span>\n\n <span\n v-if=\"item.subItems && stateSidebar && !horizontal\"\n class=\"mn-l-auto mn-r-small sidebar-dropdown-icon\"\n :class=\"{ 'rotate-180deg': isSectionExpanded(item.title) }\"\n @click.stop=\"toggleSection(item.title)\"\n >\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" :fill=\" theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small\"/>\n </span>\n </button>\n <transition\n enter-active-class=\"dropdown-enter\"\n leave-active-class=\"dropdown-leave\"\n enter-from-class=\"dropdown-enter-from\"\n enter-to-class=\"dropdown-enter-to\"\n leave-from-class=\"dropdown-leave-from\"\n leave-to-class=\"dropdown-leave-to\"\n >\n <ul\n v-if=\"item.subItems && isSectionExpanded(item.title) && stateSidebar && !horizontal\"\n class=\"mn-l-small mn-t-thin\"\n >\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n\n <a\n @click=\"subItem.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(subItem.route) ? router.push(processRoute(subItem.route)) : null) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </transition>\n </li>\n </ul>\n </div>\n </nav>\n</template>\n\n<style scoped>\n\n.rotate-180deg {\n transform: rotate(180deg);\n}\n\n.hidden {\n/* opacity: 0;*/\n width: 0;\n display: none;\n}\n\n.visible {\n/* opacity: 1;*/\n display: block;\n}\n\n/* Dropdown animations */\n.dropdown-enter, .dropdown-leave {\n transition: all 0.3s ease-in-out;\n}\n\n.dropdown-enter-from, .dropdown-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.dropdown-enter-to, .dropdown-leave-from {\n opacity: 1;\n transform: translateY(0);\n}\n\n/* Horizontal dropdown submenu */\n.dropdown-submenu {\n list-style: none;\n padding: 0.5rem;\n margin: 0;\n min-width: 12rem;\n}\n\n.dropdown-submenu li {\n width: 100%;\n}\n\n.dropdown-submenu a {\n display: flex;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Transition for horizontal dropdown */\n:deep(.TransitionTranslateY-enter-active),\n:deep(.TransitionTranslateY-leave-active) {\n transition: translateY 0.2s ease;\n transition: opacity 0.2s ease;\n}\n\n:deep(.TransitionTranslateY-enter-from),\n:deep(.TransitionTranslateY-leave-to) {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n:deep(.TransitionTranslateY-enter-to),\n:deep(.TransitionTranslateY-leave-from) {\n opacity: 1;\n transform: translateY(0);\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASc,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAKtB,UAAM,QAAQ;AAgBd,UAAM,QAAQ;AAId,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAE/B,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,UAAU,MAAM,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,GAAG;AACzG,gBAAM,cAAc;AACpB,qBAAW,MAAM;AACf,6BAAiB,MAAM,KAAK,KAAK;AAAA,UACnC,GAAG,EAAE;AAAA,QACP;AACA;AAAA,MACF;AAEA,YAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK;AAElD,UAAI,UAAU,IAAI;AAChB,yBAAiB,MAAM,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,yBAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,aAAO,iBAAiB,MAAM,SAAS,KAAK;AAAA,IAC9C;AAGA,UAAM,eAAe,CAAC,YAAY;AAChC,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,QAAQA,OAAY,KAAK;AAAA,MAClC;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { ref, watch, createElementBlock, openBlock, normalizeClass,
|
|
1
|
+
import { ref, watch, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, renderSlot, unref, toDisplayString } from "vue";
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
3
|
import { useGlobalMixins } from "../../mixins/mixins.js";
|
|
4
4
|
import { useStore } from "../../store/core.store.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
7
|
-
const _hoisted_1 = { class: "
|
|
7
|
+
const _hoisted_1 = { class: "flex-shrink-0" };
|
|
8
|
+
const _hoisted_2 = { class: "flex-child-1 o-y-auto" };
|
|
9
|
+
const _hoisted_3 = { class: "flex-shrink-0" };
|
|
10
|
+
const _hoisted_4 = { class: "aspect-1x1 flex-child-default w-max-big w-100 flex flex-center" };
|
|
8
11
|
const _sfc_main = {
|
|
9
12
|
__name: "Sidebar",
|
|
10
13
|
props: {
|
|
@@ -72,7 +75,7 @@ const _sfc_main = {
|
|
|
72
75
|
return (_ctx, _cache) => {
|
|
73
76
|
return openBlock(), createElementBlock("aside", {
|
|
74
77
|
"data-sidebar": "",
|
|
75
|
-
class: normalizeClass(["ease-quint-out w-min-0
|
|
78
|
+
class: normalizeClass(["ease-quint-out w-min-0 flex-child-default z-index-2 br-r-1px flex flex-column h-100", [
|
|
76
79
|
{ "mobile-opened": isManuallyOpened.value },
|
|
77
80
|
__props.stateSidebar ? `${__props.width} w-min-10 tablet:w-min-100 tablet:w-100 mobile:w-min-100 mobile:w-100` : `${__props.widthHidden} mobile:w-0`,
|
|
78
81
|
//
|
|
@@ -81,20 +84,26 @@ const _sfc_main = {
|
|
|
81
84
|
onMouseenter: handleMouseEnter,
|
|
82
85
|
onMouseleave: handleMouseLeave
|
|
83
86
|
}, [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
createElementVNode("div", _hoisted_1, [
|
|
88
|
+
renderSlot(_ctx.$slots, "header", {}, void 0, true)
|
|
89
|
+
]),
|
|
90
|
+
createElementVNode("div", _hoisted_2, [
|
|
91
|
+
renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
|
92
|
+
]),
|
|
93
|
+
createElementVNode("div", _hoisted_3, [
|
|
94
|
+
renderSlot(_ctx.$slots, "footer", {}, void 0, true)
|
|
95
|
+
]),
|
|
87
96
|
_ctx.MOBILE_APP ? (openBlock(), createElementBlock("div", {
|
|
88
97
|
key: 0,
|
|
89
98
|
onClick: _cache[0] || (_cache[0] = () => toggleSidebar()),
|
|
90
|
-
class: "pos-relative"
|
|
99
|
+
class: "flex-shrink-0 pos-relative"
|
|
91
100
|
}, _cache[2] || (_cache[2] = [
|
|
92
101
|
createElementVNode("div", { class: "bg-light radius-medium pd-medium" }, [
|
|
93
102
|
createElementVNode("p", { class: "fw-medium t-black-transp-60" }, " Close Menu ")
|
|
94
103
|
], -1)
|
|
95
104
|
]))) : createCommentVNode("", true),
|
|
96
105
|
createElementVNode("div", {
|
|
97
|
-
class: normalizeClass(["w-100 br-t-1px", {
|
|
106
|
+
class: normalizeClass(["flex-shrink-0 w-100 br-t-1px", {
|
|
98
107
|
"pd-micro": !__props.stateSidebar,
|
|
99
108
|
"pd-small": __props.stateSidebar,
|
|
100
109
|
"br-light": __props.theme === "light",
|
|
@@ -111,14 +120,14 @@ const _sfc_main = {
|
|
|
111
120
|
createElementVNode("span", {
|
|
112
121
|
class: normalizeClass(["w-100 t-nowrap ease-quint-out t-left fw-medium mn-r-thin", { "hidden": !__props.stateSidebar, "visible": __props.stateSidebar }])
|
|
113
122
|
}, " Dark Mode ", 2),
|
|
114
|
-
createElementVNode("span",
|
|
123
|
+
createElementVNode("span", _hoisted_4, toDisplayString(unref(store).core.state.theme.darkmode ? "🌙" : "☀️"), 1)
|
|
115
124
|
], 2)
|
|
116
125
|
], 2)
|
|
117
126
|
], 34);
|
|
118
127
|
};
|
|
119
128
|
}
|
|
120
129
|
};
|
|
121
|
-
const Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
130
|
+
const Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-499f10e6"]]);
|
|
122
131
|
export {
|
|
123
132
|
Sidebar as default
|
|
124
133
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Sidebar.vue"],"sourcesContent":["<script setup>\nimport { ref, watch } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\nconst store = useStore()\n\nconst props = defineProps({\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: 'w-15r'\n },\n widthHidden:{\n type: String,\n default: 'w-3r '\n },\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst { isPhone, isTablet } = useGlobalMixins()\nconst router = useRouter()\nconst route = useRoute()\n\n// Отдельный флаг для клика меню на mobile\nconst isManuallyOpened = ref(false)\n\n// Синхронизируем с stateSidebar ТОЛЬКО на mobile\nwatch(() => props.stateSidebar, (newVal) => {\n if (isPhone() || isTablet()) {\n isManuallyOpened.value = newVal\n }\n})\n\nconst toggleSidebar = () => {\n isManuallyOpened.value = !isManuallyOpened.value\n if (!isManuallyOpened.value) {\n emits('closeSidebar')\n }\n}\n\nconst handleMouseEnter = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = true\n }\n}\n\nconst handleMouseLeave = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = false\n }\n}\n\nrouter.beforeEach((to, from) => {\n // На mobile не трогаем state через навигацию\n if (isPhone() || isTablet()) {\n emits('closeSidebar')\n return\n }\n\n\n // Desktop логика\n // Если уходим с профиля И НЕ идем на профиль - закрыть\n if (from.meta?.sidebarCloseOnLeave === true && to.meta?.sidebarOpenOnEnter !== true) {\n store.core.state.isOpenSidebar = false\n }\n\n // Если приходим на профиль - открыть\n if (to.meta?.sidebarOpenOnEnter === true) {\n store.core.state.isOpenSidebar = true\n }\n})\n</script>\n\n<template>\n <aside\n data-sidebar\n class=\"ease-quint-out w-min-0
|
|
1
|
+
{"version":3,"file":"Sidebar.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Sidebar.vue"],"sourcesContent":["<script setup>\nimport { ref, watch } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\nconst store = useStore()\n\nconst props = defineProps({\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: 'w-15r'\n },\n widthHidden:{\n type: String,\n default: 'w-3r '\n },\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst { isPhone, isTablet } = useGlobalMixins()\nconst router = useRouter()\nconst route = useRoute()\n\n// Отдельный флаг для клика меню на mobile\nconst isManuallyOpened = ref(false)\n\n// Синхронизируем с stateSidebar ТОЛЬКО на mobile\nwatch(() => props.stateSidebar, (newVal) => {\n if (isPhone() || isTablet()) {\n isManuallyOpened.value = newVal\n }\n})\n\nconst toggleSidebar = () => {\n isManuallyOpened.value = !isManuallyOpened.value\n if (!isManuallyOpened.value) {\n emits('closeSidebar')\n }\n}\n\nconst handleMouseEnter = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = true\n }\n}\n\nconst handleMouseLeave = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = false\n }\n}\n\nrouter.beforeEach((to, from) => {\n // На mobile не трогаем state через навигацию\n if (isPhone() || isTablet()) {\n emits('closeSidebar')\n return\n }\n\n\n // Desktop логика\n // Если уходим с профиля И НЕ идем на профиль - закрыть\n if (from.meta?.sidebarCloseOnLeave === true && to.meta?.sidebarOpenOnEnter !== true) {\n store.core.state.isOpenSidebar = false\n }\n\n // Если приходим на профиль - открыть\n if (to.meta?.sidebarOpenOnEnter === true) {\n store.core.state.isOpenSidebar = true\n }\n})\n</script>\n\n<template>\n <aside\n data-sidebar\n class=\"ease-quint-out w-min-0 flex-child-default z-index-2 br-r-1px flex flex-column h-100\"\n :class=\"[\n { 'mobile-opened': isManuallyOpened },\n stateSidebar\n ? `${width} w-min-10 tablet:w-min-100 tablet:w-100 mobile:w-min-100 mobile:w-100`\n : `${widthHidden} mobile:w-0`,\n //\n theme === 'light'\n ? 't-black bg-white br-light'\n : 't-white bg-black br-dark'\n ]\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- Header slot - shrink-0 -->\n <div class=\"flex-shrink-0\">\n <slot name=\"header\"></slot>\n </div>\n\n <!-- Main scrollable content - flex-1 overflow-y-auto -->\n <div class=\"flex-child-1 o-y-auto\">\n <slot></slot>\n </div>\n\n <!-- Footer slot - shrink-0 -->\n <div class=\"flex-shrink-0\">\n <slot name=\"footer\"></slot>\n </div>\n <div v-if=\"MOBILE_APP\" @click=\"() => toggleSidebar()\" class=\"flex-shrink-0 pos-relative\">\n <div class=\"bg-light radius-medium pd-medium\">\n <p class=\"fw-medium t-black-transp-60\">\n Close Menu\n </p>\n </div>\n </div>\n <div\n class=\"flex-shrink-0 w-100 br-t-1px\"\n :class=\"{ \n 'pd-micro': !stateSidebar, \n 'pd-small': stateSidebar,\n 'br-light': theme === 'light',\n 'br-dark': theme === 'dark'\n }\"\n >\n <button\n @click=\"() => store.core.actions.toggleTheme()\"\n class=\"ease-quint-out flex w-100 flex-center radius-small cursor-pointer flex-nowrap\"\n :class=\"[\n stateSidebar ? 'pd-thin justify-between' : 'w-100 justify-center',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span\n class=\"w-100 t-nowrap ease-quint-out t-left fw-medium mn-r-thin\"\n :class=\"{ 'hidden': !stateSidebar, 'visible': stateSidebar }\"\n >\n Dark Mode\n </span>\n <span class=\"aspect-1x1 flex-child-default w-max-big w-100 flex flex-center \">\n {{ store.core.state.theme.darkmode ? '🌙' : '☀️' }}\n </span>\n </button>\n </div>\n </aside>\n</template>\n\n<style scoped>\n.hidden {\n opacity: 0;\n width: 0;\n display: none;\n}\n.visible {\n opacity: 1;\n display: block;\n}\n\n/* Mobile: ВСЕГДА скрываем, показываем ТОЛЬКО по клику меню */\n@media (max-width: 1024px) {\n aside[data-sidebar] {\n position: absolute !important;\n left: 0 !important;\n transform: translateX(-100%) !important;\n visibility: hidden !important;\n z-index: 1000 !important;\n }\n\n /* Показываем ТОЛЬКО когда manual клик (НЕ от SSR state) */\n aside[data-sidebar].mobile-opened {\n transform: translateX(0) !important;\n visibility: visible !important;\n }\n}\n\n/* Scrollbar styles */\n::-webkit-scrollbar {\n width: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background-color: var(--grey-micro);\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background-color: var(--grey-small);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ;AAmBd,UAAM,QAAQ;AAId,UAAM,EAAE,SAAS,SAAQ,IAAK,gBAAe;AAC7C,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAGtB,UAAM,mBAAmB,IAAI,KAAK;AAGlC,UAAM,MAAM,MAAM,cAAc,CAAC,WAAW;AAC1C,UAAI,QAAO,KAAM,YAAY;AAC3B,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,UAAM,gBAAgB,MAAM;AAC1B,uBAAiB,QAAQ,CAAC,iBAAiB;AAC3C,UAAI,CAAC,iBAAiB,OAAO;AAC3B,cAAM,cAAc;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,MAAM,MAAM,iBAAiB,CAAC,QAAO,KAAM,CAAC,YAAY;AAC1D,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,MAAM,MAAM,iBAAiB,CAAC,QAAO,KAAM,CAAC,YAAY;AAC1D,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,WAAW,CAAC,IAAI,SAAS;AAE9B,UAAI,QAAO,KAAM,YAAY;AAC3B,cAAM,cAAc;AACpB;AAAA,MACF;AAKA,UAAI,KAAK,MAAM,wBAAwB,QAAQ,GAAG,MAAM,uBAAuB,MAAM;AACnF,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAGA,UAAI,GAAG,MAAM,uBAAuB,MAAM;AACxC,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js}
RENAMED
|
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../../../../icons/entities/IconCalendar.vue.js";
|
|
|
10
10
|
import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
11
11
|
import _sfc_main$6 from "./filters/FilterOptions.vue.js";
|
|
12
12
|
import _sfc_main$1 from "../../../../icons/navigation/IconFilter.vue.js";
|
|
13
|
-
/* empty css
|
|
13
|
+
/* empty css */
|
|
14
14
|
const _hoisted_1 = { class: "flex o-x-scroll scroll-hide t-nowrap gap-thin" };
|
|
15
15
|
const _hoisted_2 = { key: 0 };
|
|
16
16
|
const _hoisted_3 = ["onClick"];
|
|
@@ -270,4 +270,4 @@ const Filters = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2c
|
|
|
270
270
|
export {
|
|
271
271
|
Filters as default
|
|
272
272
|
};
|
|
273
|
-
//# sourceMappingURL=Filters.
|
|
273
|
+
//# sourceMappingURL=Filters.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filters.vue2.js","sources":["../../../../../../../../src/modules/core/views/components/sections/Filters.vue"],"sourcesContent":["<template>\n <div class=\"flex o-x-scroll scroll-hide 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-regular\" />\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-regular\" />\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=\"closeAllFilters\"\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 <FiltersGroup\n :filters=\"filters\"\n v-model:selected=\"tempSelected\"\n :immediate=\"false\"\n :showHeader=\"true\"\n :showApplyButton=\"true\"\n :showResetButton=\"true\"\n @update:selected=\"applyAllFilters\"\n />\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=\"cancelFilter(filter.value)\"\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 <FilterCheckbox\n v-if=\"filter.type === 'checkbox'\"\n v-model=\"tempSelected[filter.value]\"\n :options=\"filter.options\"\n />\n\n <!-- Range Filter -->\n <FilterRange\n v-else-if=\"filter.type === 'range'\"\n v-model=\"tempSelected[filter.value]\"\n :minPlaceholder=\"filter.minPlaceholder || 'Min'\"\n :maxPlaceholder=\"filter.maxPlaceholder || 'Max'\"\n :label=\"filter.label\"\n />\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 <!-- Radio/Options Filter -->\n <FilterOptions\n v-else-if=\"filter.type === 'radio'\"\n v-model=\"tempSelected[filter.value]\"\n :options=\"filter.options\"\n />\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 </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, reactive, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport FiltersGroup from './filters/FiltersGroup.vue'\nimport FilterCheckbox from './filters/FilterCheckbox.vue'\nimport FilterRange from './filters/FilterRange.vue'\nimport FilterDateRange from './filters/FilterDateRange.vue'\nimport FilterOptions from './filters/FilterOptions.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, returnCurrency } = 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 = (newValues) => {\n Object.entries(newValues).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 closeAllFilters = () => {\n showAllFilters.value = false\n}\n</script>\n\n<style scoped>\n.filters-content {\n max-height: 60vh;\n overflow-y: auto;\n}\n</style>"],"names":["_useModel"],"mappings":"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"}
|
|
@@ -8,12 +8,12 @@ import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
|
|
|
8
8
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
9
9
|
import _sfc_main$6 from "../../../../components/FieldTags/BlockTags.vue.js";
|
|
10
10
|
import _sfc_main$9 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
11
|
-
/* empty css
|
|
11
|
+
/* empty css */
|
|
12
12
|
import "axios";
|
|
13
|
-
/* empty css
|
|
13
|
+
/* empty css */
|
|
14
14
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
15
15
|
/* empty css */
|
|
16
|
-
/* empty css
|
|
16
|
+
/* empty css */
|
|
17
17
|
import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
|
|
18
18
|
import _sfc_main$a from "../../../../components/Button/Button.vue2.js";
|
|
19
19
|
import _sfc_main$7 from "../../../core/views/components/blocks/Card.vue.js";
|
|
@@ -4,7 +4,7 @@ import { useRoute } from "vue-router";
|
|
|
4
4
|
import _sfc_main$8 from "../../../../components/Button/Button.vue2.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
import _sfc_main$4 from "../../../../components/Chips/Chips.vue.js";
|
|
7
|
-
/* empty css
|
|
7
|
+
/* empty css */
|
|
8
8
|
import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
|
|
9
9
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
10
10
|
import PhotoViewer from "../../../../components/PhotoViewer/PhotoViewer.vue.js";
|
|
@@ -12,7 +12,7 @@ import { state } from "../../../auth/views/store/auth.js";
|
|
|
12
12
|
import gallery from "../../store/gallery.js";
|
|
13
13
|
import _sfc_main$3 from "../../../core/views/components/blocks/CardHeader.vue.js";
|
|
14
14
|
import _sfc_main$1 from "../../../core/views/components/sections/SectionPageTitle.vue.js";
|
|
15
|
-
import _sfc_main$6 from "../../../../components/EditImages/EditImages.
|
|
15
|
+
import _sfc_main$6 from "../../../../components/EditImages/EditImages.vue2.js";
|
|
16
16
|
import _sfc_main$7 from "../../../../components/FieldTags/BlockTags.vue.js";
|
|
17
17
|
const _hoisted_1 = { class: "cols-1 gap-thin pd-thin" };
|
|
18
18
|
const _hoisted_2 = { class: "pos-relative" };
|