@ozdao/martyrs 0.2.556 → 0.2.557
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/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +2 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/style.css +8 -8
- package/package.json +1 -1
- package/src/modules/core/views/components/partials/Sidebar.vue +2 -0
|
@@ -59,6 +59,7 @@ const _sfc_main = {
|
|
|
59
59
|
};
|
|
60
60
|
router.beforeEach((to, from) => {
|
|
61
61
|
if (isPhone() || isTablet()) {
|
|
62
|
+
emits("closeSidebar");
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
64
65
|
if (from.meta?.sidebarCloseOnLeave === true && to.meta?.sidebarOpenOnEnter !== true) {
|
|
@@ -117,7 +118,7 @@ const _sfc_main = {
|
|
|
117
118
|
};
|
|
118
119
|
}
|
|
119
120
|
};
|
|
120
|
-
const Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
121
|
+
const Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a9ee4417"]]);
|
|
121
122
|
export {
|
|
122
123
|
Sidebar as default
|
|
123
124
|
};
|
|
@@ -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 return\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=\"transition-quint-out w-min-0 o-hidden flex-child-default z-index-2 br-r br-solid 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 <!-- Slot for header component (e.g., ProfileCard) -->\n <slot name=\"header\"></slot>\n\n <!-- Slot for navigation content -->\n <slot></slot>\n\n <!-- Slot for footer component (e.g., HelpCard) -->\n <slot name=\"footer\"></slot>\n <div v-if=\"MOBILE_APP\" @click=\"() => toggleSidebar()\" class=\"pos-relative\">\n <div class=\"bg-light radius-medium pd-medium\">\n <p class=\"t-medium t-black-transp-60\">\n Close Menu\n </p>\n </div>\n </div>\n <div \n class=\"br-solid w-100 br-t\"\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=\"transition-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 transition-quint-out t-left t-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: fixed !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;AAAA,MACF;
|
|
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=\"transition-quint-out w-min-0 o-hidden flex-child-default z-index-2 br-r br-solid 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 <!-- Slot for header component (e.g., ProfileCard) -->\n <slot name=\"header\"></slot>\n\n <!-- Slot for navigation content -->\n <slot></slot>\n\n <!-- Slot for footer component (e.g., HelpCard) -->\n <slot name=\"footer\"></slot>\n <div v-if=\"MOBILE_APP\" @click=\"() => toggleSidebar()\" class=\"pos-relative\">\n <div class=\"bg-light radius-medium pd-medium\">\n <p class=\"t-medium t-black-transp-60\">\n Close Menu\n </p>\n </div>\n </div>\n <div \n class=\"br-solid w-100 br-t\"\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=\"transition-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 transition-quint-out t-left t-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: fixed !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/style.css
CHANGED
|
@@ -1578,19 +1578,19 @@ to {
|
|
|
1578
1578
|
transform: translateY(0);
|
|
1579
1579
|
}
|
|
1580
1580
|
|
|
1581
|
-
.hidden[data-v-
|
|
1581
|
+
.hidden[data-v-a9ee4417] {
|
|
1582
1582
|
opacity: 0;
|
|
1583
1583
|
width: 0;
|
|
1584
1584
|
display: none;
|
|
1585
1585
|
}
|
|
1586
|
-
.visible[data-v-
|
|
1586
|
+
.visible[data-v-a9ee4417] {
|
|
1587
1587
|
opacity: 1;
|
|
1588
1588
|
display: block;
|
|
1589
1589
|
}
|
|
1590
1590
|
|
|
1591
1591
|
/* Mobile: ВСЕГДА скрываем, показываем ТОЛЬКО по клику меню */
|
|
1592
1592
|
@media (max-width: 1024px) {
|
|
1593
|
-
aside[data-sidebar][data-v-
|
|
1593
|
+
aside[data-sidebar][data-v-a9ee4417] {
|
|
1594
1594
|
position: fixed !important;
|
|
1595
1595
|
left: 0 !important;
|
|
1596
1596
|
transform: translateX(-100%) !important;
|
|
@@ -1599,24 +1599,24 @@ aside[data-sidebar][data-v-3a896578] {
|
|
|
1599
1599
|
}
|
|
1600
1600
|
|
|
1601
1601
|
/* Показываем ТОЛЬКО когда manual клик (НЕ от SSR state) */
|
|
1602
|
-
aside[data-sidebar].mobile-opened[data-v-
|
|
1602
|
+
aside[data-sidebar].mobile-opened[data-v-a9ee4417] {
|
|
1603
1603
|
transform: translateX(0) !important;
|
|
1604
1604
|
visibility: visible !important;
|
|
1605
1605
|
}
|
|
1606
1606
|
}
|
|
1607
1607
|
|
|
1608
1608
|
/* Scrollbar styles */
|
|
1609
|
-
[data-v-
|
|
1609
|
+
[data-v-a9ee4417]::-webkit-scrollbar {
|
|
1610
1610
|
width: 6px;
|
|
1611
1611
|
}
|
|
1612
|
-
[data-v-
|
|
1612
|
+
[data-v-a9ee4417]::-webkit-scrollbar-track {
|
|
1613
1613
|
background: transparent;
|
|
1614
1614
|
}
|
|
1615
|
-
[data-v-
|
|
1615
|
+
[data-v-a9ee4417]::-webkit-scrollbar-thumb {
|
|
1616
1616
|
background-color: var(--grey-micro);
|
|
1617
1617
|
border-radius: 3px;
|
|
1618
1618
|
}
|
|
1619
|
-
[data-v-
|
|
1619
|
+
[data-v-a9ee4417]::-webkit-scrollbar-thumb:hover {
|
|
1620
1620
|
background-color: var(--grey-small);
|
|
1621
1621
|
}
|
|
1622
1622
|
.eye[data-v-4241147a] {
|
package/package.json
CHANGED
|
@@ -65,9 +65,11 @@ const handleMouseLeave = () => {
|
|
|
65
65
|
router.beforeEach((to, from) => {
|
|
66
66
|
// На mobile не трогаем state через навигацию
|
|
67
67
|
if (isPhone() || isTablet()) {
|
|
68
|
+
emits('closeSidebar')
|
|
68
69
|
return
|
|
69
70
|
}
|
|
70
71
|
|
|
72
|
+
|
|
71
73
|
// Desktop логика
|
|
72
74
|
// Если уходим с профиля И НЕ идем на профиль - закрыть
|
|
73
75
|
if (from.meta?.sidebarCloseOnLeave === true && to.meta?.sidebarOpenOnEnter !== true) {
|