@ozdao/martyrs 0.2.454 → 0.2.456
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/{Media-DlEIDFaB.js → Media-1oukRVfv.js} +1 -1
- package/dist/{Media-DzQv7XkX.mjs → Media-q-XJSM_H.mjs} +3 -3
- package/dist/{main-CSphtCso.js → main-C7jGMDJC.js} +2 -2
- package/dist/{main-CjVIbgn3.mjs → main-yXkgrjj8.mjs} +3 -9
- package/dist/martyrs/src/components/Button/Button.vue.cjs +1 -1
- package/dist/martyrs/src/components/Button/Button.vue.js +1 -1
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.cjs +2 -2
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +2 -2
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +93 -0
- package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js +94 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +0 -93
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -94
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
- package/dist/martyrs/src/components/EmptyState/EmptyState.vue.cjs +1 -1
- package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Loader/{Loader.vue.cjs → Loader.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
- package/dist/martyrs/src/components/Loader/{Loader.vue.cjs.map → Loader.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs +1 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
- package/dist/martyrs/src/components/Media/Media.vue.cjs +2 -2
- package/dist/martyrs/src/components/Media/Media.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Media/Media.vue.js +2 -2
- package/dist/martyrs/src/components/Media/Media.vue.js.map +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
- 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/Slider/Slider.native.vue.cjs +229 -0
- package/dist/martyrs/src/components/Slider/Slider.native.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Slider/Slider.native.vue.js +229 -0
- package/dist/martyrs/src/components/Slider/Slider.native.vue.js.map +1 -0
- package/dist/martyrs/src/components/Slider/Slider.vue.cjs +1 -1
- package/dist/martyrs/src/components/Slider/Slider.vue.js +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +3 -4
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +3 -4
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +29 -17
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +29 -17
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -23
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +5 -26
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +50 -132
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +66 -148
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +3 -33
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +3 -33
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs +98 -0
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js +98 -0
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js.map +1 -0
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +4 -6
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +4 -6
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs +10 -8
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js +10 -8
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs +4 -4
- package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js +4 -4
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs +190 -0
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +190 -0
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -0
- package/dist/martyrs/src/modules/events/events.client.js +12 -12
- package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
- package/dist/martyrs/src/modules/events/router/events.cjs +15 -0
- package/dist/martyrs/src/modules/events/router/events.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/router/events.js +15 -0
- package/dist/martyrs/src/modules/events/router/events.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs +2 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js +1 -0
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/Images360.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/Images360.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/organizations.server.js +0 -1
- package/dist/organizations.server.mjs +0 -1
- package/dist/style.css +93 -6
- package/package.json +1 -1
- package/src/components/DatePicker/DatePicker.vue +1 -1
- package/src/components/EmptyState/EmptyState.vue +1 -1
- package/src/components/Media/Media.vue +1 -1
- package/src/components/Slider/Slider.native.vue +313 -0
- package/src/modules/auth/views/components/sections/FeaturedUsers.vue +2 -2
- package/src/modules/community/components/sections/HotPosts.vue +0 -1
- package/src/modules/events/components/blocks/CardEvent.vue +21 -7
- package/src/modules/events/components/pages/Event.vue +0 -20
- package/src/modules/events/components/pages/Events.vue +91 -141
- package/src/modules/events/components/pages/EventsBackoffice.vue +5 -3
- package/src/modules/events/components/pages/EventsSearch.vue +122 -0
- package/src/modules/events/components/sections/EventsHot.vue +3 -5
- package/src/modules/events/components/sections/FeaturedEvents.vue +45 -13
- package/src/modules/events/components/sections/List.vue +3 -3
- package/src/modules/events/components/sections/SelectDate.vue +217 -0
- package/src/modules/events/router/events.js +12 -0
- package/src/modules/globals/views/components/layouts/App.vue +1 -0
- package/src/modules/organizations/policies/organizations.policies.js +0 -1
- package/src/modules/products/components/pages/Product.old.vue +201 -0
- package/src/styles/base/all.scss +1 -0
- package/src/styles/typography.scss +22 -0
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
|
@@ -3,9 +3,10 @@ import { useRoute, useRouter } from "vue-router";
|
|
|
3
3
|
import _sfc_main$1 from "./List.vue.js";
|
|
4
4
|
import "../../store/events.js";
|
|
5
5
|
import { state } from "../../../auth/views/store/auth.js";
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
7
|
+
const _hoisted_1 = { class: "columns-wrapper scroll-hide gap-thin" };
|
|
8
|
+
const _hoisted_2 = { class: "column flex flex-column flex-child-default" };
|
|
9
|
+
const _hoisted_3 = { class: "column flex flex-column flex-child-default" };
|
|
9
10
|
const _sfc_main = {
|
|
10
11
|
__name: "FeaturedEvents",
|
|
11
12
|
setup(__props) {
|
|
@@ -14,18 +15,18 @@ const _sfc_main = {
|
|
|
14
15
|
return (_ctx, _cache) => {
|
|
15
16
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
16
17
|
createElementVNode("div", _hoisted_2, [
|
|
17
|
-
_cache[0] || (_cache[0] = createElementVNode("
|
|
18
|
+
_cache[0] || (_cache[0] = createElementVNode("h3", { class: "mn-b-small" }, " Planned ", -1)),
|
|
18
19
|
createVNode(_sfc_main$1, {
|
|
19
20
|
user: state.user._id,
|
|
20
|
-
class: "bg-
|
|
21
|
+
class: "bg-light o-hidden h-100 pd-thin radius-medium",
|
|
21
22
|
phase: "planned"
|
|
22
23
|
}, null, 8, ["user"])
|
|
23
24
|
]),
|
|
24
25
|
createElementVNode("div", _hoisted_3, [
|
|
25
|
-
_cache[1] || (_cache[1] = createElementVNode("
|
|
26
|
+
_cache[1] || (_cache[1] = createElementVNode("h3", { class: "mn-b-small" }, " Finished ", -1)),
|
|
26
27
|
createVNode(_sfc_main$1, {
|
|
27
28
|
user: state.user._id,
|
|
28
|
-
class: "bg-
|
|
29
|
+
class: "bg-light o-hidden h-100 pd-thin radius-medium",
|
|
29
30
|
phase: "finished"
|
|
30
31
|
}, null, 8, ["user"])
|
|
31
32
|
])
|
|
@@ -33,7 +34,8 @@ const _sfc_main = {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
};
|
|
37
|
+
const FeaturedEvents = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-579150be"]]);
|
|
36
38
|
export {
|
|
37
|
-
|
|
39
|
+
FeaturedEvents as default
|
|
38
40
|
};
|
|
39
41
|
//# sourceMappingURL=FeaturedEvents.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeaturedEvents.vue.js","sources":["../../../../../../../src/modules/events/components/sections/FeaturedEvents.vue"],"sourcesContent":["<template>\n <div class=\"
|
|
1
|
+
{"version":3,"file":"FeaturedEvents.vue.js","sources":["../../../../../../../src/modules/events/components/sections/FeaturedEvents.vue"],"sourcesContent":["<template>\n <div class=\"columns-wrapper scroll-hide gap-thin\">\n <div class=\"column flex flex-column flex-child-default\">\n <h3\n class=\"mn-b-small\"\n >\n Planned\n </h3>\n <List\n :user=\"auth.state.user._id\"\n class=\"bg-light o-hidden h-100 pd-thin radius-medium\"\n :phase=\"'planned'\"\n />\n </div>\n\n <div class=\"column flex flex-column flex-child-default\">\n <h3\n class=\"mn-b-small\"\n >\n Finished \n </h3>\n <List\n :user=\"auth.state.user._id\"\n class=\"bg-light o-hidden h-100 pd-thin radius-medium\"\n :phase=\"'finished'\"\n />\n </div>\n </div>\n</template>\n\n<script setup=\"props\">\n import { computed, onMounted, watch } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import List from '@martyrs/src/modules/events/components/sections/List.vue'; \n // Import state\n import * as events from '@martyrs/src/modules/events/store/events.js'; \n import * as auth from '@martyrs/src/modules/auth/views/store/auth'\n\n // State\n const route = useRoute();\n const router = useRouter();\n</script>\n\n<style lang=\"scss\" scoped>\n.columns-container {\n width: 100%;\n overflow: hidden;\n}\n\n.columns-wrapper {\n display: flex;\n width: 100%;\n \n @media (min-width: 768px) {\n /* Десктоп: 2 колонки рядом */\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n \n @media (max-width: 767px) {\n /* Мобильные устройства: горизонтальный скролл */\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n }\n}\n\n.column {\n @media (max-width: 767px) {\n /* Настройки для мобильных устройств */\n max-width: 90%;\n flex: 0 0 auto;\n scroll-snap-align: start;\n \n &:last-child {\n margin-right: 0;\n }\n }\n}\n</style> "],"names":[],"mappings":";;;;;;;;;;;;AAwCgB,aAAQ;AACP,cAAS;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
const Loader = require("../../../../components/Loader/Loader.
|
|
4
|
+
const Loader = require("../../../../components/Loader/Loader.vue2.cjs");
|
|
5
5
|
const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
|
|
6
6
|
const CardEvent = require("../blocks/CardEvent.vue.cjs");
|
|
7
7
|
const events = require("../../store/events.cjs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, createCommentVNode, Transition, Fragment, renderList } from "vue";
|
|
2
|
-
import Loader from "../../../../components/Loader/Loader.
|
|
2
|
+
import Loader from "../../../../components/Loader/Loader.vue2.js";
|
|
3
3
|
import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../blocks/CardEvent.vue.js";
|
|
5
5
|
import { read } from "../../store/events.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
;/* empty css
|
|
4
|
+
;/* empty css */
|
|
5
5
|
const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
|
|
6
6
|
const CardEvent = require("../blocks/CardEvent.vue.cjs");
|
|
7
7
|
const SkeletonEventShort = require("../../../icons/skeletons/SkeletonEventShort.vue.cjs");
|
|
@@ -66,7 +66,7 @@ const _sfc_main = {
|
|
|
66
66
|
vue.createVNode(vue.TransitionGroup, {
|
|
67
67
|
tag: "ul",
|
|
68
68
|
name: "fade",
|
|
69
|
-
class: "o-hidden bg-
|
|
69
|
+
class: "o-hidden bg-white radius-medium"
|
|
70
70
|
}, {
|
|
71
71
|
default: vue.withCtx(() => [
|
|
72
72
|
isLoading.value ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(limit.value, (i) => {
|
|
@@ -81,7 +81,7 @@ const _sfc_main = {
|
|
|
81
81
|
key: 0,
|
|
82
82
|
title: "No Planned Events ",
|
|
83
83
|
description: "No events available. Please check back later.",
|
|
84
|
-
class: "pd-medium
|
|
84
|
+
class: "pd-medium h-100 bg-white radius-medium"
|
|
85
85
|
})) : vue.createCommentVNode("", true)
|
|
86
86
|
]),
|
|
87
87
|
_: 1
|
|
@@ -99,7 +99,7 @@ const _sfc_main = {
|
|
|
99
99
|
event,
|
|
100
100
|
owner: __props.user,
|
|
101
101
|
type: "short",
|
|
102
|
-
class: vue.normalizeClass(["pd-medium", {
|
|
102
|
+
class: vue.normalizeClass(["pd-medium mobile:pd-thin", {
|
|
103
103
|
"br-b br-solid br-black-transp-10": index !== eventsList.value.length - 1
|
|
104
104
|
}])
|
|
105
105
|
}, null, 8, ["onClick", "event", "owner", "class"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.vue.cjs","sources":["../../../../../../../src/modules/events/components/sections/List.vue"],"sourcesContent":["<template>\n <section \n class=\"today-events\"\n >\n <!-- <transition name=\"fade\">\n <Loader v-if=\"isLoading\" class=\"z-index-5 pos-t-50 left-t-50 pos-absolute\"/>\n </transition> -->\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-
|
|
1
|
+
{"version":3,"file":"List.vue.cjs","sources":["../../../../../../../src/modules/events/components/sections/List.vue"],"sourcesContent":["<template>\n <section \n class=\"today-events\"\n >\n <!-- <transition name=\"fade\">\n <Loader v-if=\"isLoading\" class=\"z-index-5 pos-t-50 left-t-50 pos-absolute\"/>\n </transition> -->\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-white radius-medium\">\n <SkeletonEventShort\n v-if=\"isLoading\"\n v-for=\"i in limit\" :key=\"i\"\n />\n </TransitionGroup>\n\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && eventsList.length < 1\"\n title=\"No Planned Events \"\n description=\"No events available. Please check back later.\"\n class=\"pd-medium h-100 bg-white radius-medium\"\n />\n </transition>\n\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n <CardEvent \n v-if=\"!isLoading && eventsList.length > 0\"\n @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n v-for=\"(event,index) in eventsList\" \n :key=\"event._id\" \n :event=\"event\" \n :owner=\"user\" \n :type=\"'short'\"\n class=\"pd-medium mobile:pd-thin\"\n :class=\"{\n 'br-b br-solid br-black-transp-10': index !== eventsList.length - 1\n }\"\n />\n </TransitionGroup>\n \n </section>\n</template>\n\n<script setup>\n import { ref, onMounted } from 'vue';\n \n\n import Loader from '@martyrs/src/components/Loader/Loader.vue';\n import EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n\n import SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n import SkeletonEventShort from '@martyrs/src/modules/icons/skeletons/SkeletonEventShort.vue'\n\n import * as events from '@martyrs/src/modules/events/store/events.js';\n\n const props = defineProps({\n category: {\n type: String,\n default: null\n },\n status: {\n type: String,\n default: null\n },\n organization: {\n type: String,\n default: null\n },\n owner: {\n type: String,\n default: null\n },\n user: {\n type: [String, Number],\n default: null\n },\n period: {\n type: String,\n default: null\n },\n phase: {\n type: String,\n default: null\n }\n });\n\n const eventsList = ref([]);\n const isLoading = ref(true);\n\n const skip = ref(0);\n const limit = ref(3);\n\n onMounted(async () => {\n const data = await events.read({\n skip: skip.value,\n limit: limit.value,\n sortOrder: 'desc',\n category: props.category,\n user: props.user,\n owner: props.owner,\n organization: props.organization,\n period: props.period,\n phase: props.phase,\n status: props.status\n });\n\n eventsList.value = data;\n isLoading.value = false;\n });\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["ref","onMounted","events.read"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DE,UAAM,QAAQ;AA+Bd,UAAM,aAAaA,IAAG,IAAC,EAAE;AACzB,UAAM,YAAYA,IAAG,IAAC,IAAI;AAE1B,UAAM,OAAOA,IAAG,IAAC,CAAC;AAClB,UAAM,QAAQA,IAAG,IAAC,CAAC;AAEnBC,QAAAA,UAAU,YAAY;AACpB,YAAM,OAAO,MAAMC,YAAY;AAAA,QAC7B,MAAM,KAAK;AAAA,QACX,OAAO,MAAM;AAAA,QACb,WAAW;AAAA,QACX,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,cAAc,MAAM;AAAA,QACpB,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,MACpB,CAAK;AAED,iBAAW,QAAQ;AACnB,gBAAU,QAAQ;AAAA,IACtB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, Fragment, renderList, createBlock, Transition, normalizeClass } from "vue";
|
|
2
|
-
/* empty css
|
|
2
|
+
/* empty css */
|
|
3
3
|
import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../blocks/CardEvent.vue.js";
|
|
5
5
|
import SkeletonEventShort from "../../../icons/skeletons/SkeletonEventShort.vue.js";
|
|
@@ -64,7 +64,7 @@ const _sfc_main = {
|
|
|
64
64
|
createVNode(TransitionGroup, {
|
|
65
65
|
tag: "ul",
|
|
66
66
|
name: "fade",
|
|
67
|
-
class: "o-hidden bg-
|
|
67
|
+
class: "o-hidden bg-white radius-medium"
|
|
68
68
|
}, {
|
|
69
69
|
default: withCtx(() => [
|
|
70
70
|
isLoading.value ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(limit.value, (i) => {
|
|
@@ -79,7 +79,7 @@ const _sfc_main = {
|
|
|
79
79
|
key: 0,
|
|
80
80
|
title: "No Planned Events ",
|
|
81
81
|
description: "No events available. Please check back later.",
|
|
82
|
-
class: "pd-medium
|
|
82
|
+
class: "pd-medium h-100 bg-white radius-medium"
|
|
83
83
|
})) : createCommentVNode("", true)
|
|
84
84
|
]),
|
|
85
85
|
_: 1
|
|
@@ -97,7 +97,7 @@ const _sfc_main = {
|
|
|
97
97
|
event,
|
|
98
98
|
owner: __props.user,
|
|
99
99
|
type: "short",
|
|
100
|
-
class: normalizeClass(["pd-medium", {
|
|
100
|
+
class: normalizeClass(["pd-medium mobile:pd-thin", {
|
|
101
101
|
"br-b br-solid br-black-transp-10": index !== eventsList.value.length - 1
|
|
102
102
|
}])
|
|
103
103
|
}, null, 8, ["onClick", "event", "owner", "class"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.vue.js","sources":["../../../../../../../src/modules/events/components/sections/List.vue"],"sourcesContent":["<template>\n <section \n class=\"today-events\"\n >\n <!-- <transition name=\"fade\">\n <Loader v-if=\"isLoading\" class=\"z-index-5 pos-t-50 left-t-50 pos-absolute\"/>\n </transition> -->\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-
|
|
1
|
+
{"version":3,"file":"List.vue.js","sources":["../../../../../../../src/modules/events/components/sections/List.vue"],"sourcesContent":["<template>\n <section \n class=\"today-events\"\n >\n <!-- <transition name=\"fade\">\n <Loader v-if=\"isLoading\" class=\"z-index-5 pos-t-50 left-t-50 pos-absolute\"/>\n </transition> -->\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-white radius-medium\">\n <SkeletonEventShort\n v-if=\"isLoading\"\n v-for=\"i in limit\" :key=\"i\"\n />\n </TransitionGroup>\n\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && eventsList.length < 1\"\n title=\"No Planned Events \"\n description=\"No events available. Please check back later.\"\n class=\"pd-medium h-100 bg-white radius-medium\"\n />\n </transition>\n\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n <CardEvent \n v-if=\"!isLoading && eventsList.length > 0\"\n @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n v-for=\"(event,index) in eventsList\" \n :key=\"event._id\" \n :event=\"event\" \n :owner=\"user\" \n :type=\"'short'\"\n class=\"pd-medium mobile:pd-thin\"\n :class=\"{\n 'br-b br-solid br-black-transp-10': index !== eventsList.length - 1\n }\"\n />\n </TransitionGroup>\n \n </section>\n</template>\n\n<script setup>\n import { ref, onMounted } from 'vue';\n \n\n import Loader from '@martyrs/src/components/Loader/Loader.vue';\n import EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n\n import SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n import SkeletonEventShort from '@martyrs/src/modules/icons/skeletons/SkeletonEventShort.vue'\n\n import * as events from '@martyrs/src/modules/events/store/events.js';\n\n const props = defineProps({\n category: {\n type: String,\n default: null\n },\n status: {\n type: String,\n default: null\n },\n organization: {\n type: String,\n default: null\n },\n owner: {\n type: String,\n default: null\n },\n user: {\n type: [String, Number],\n default: null\n },\n period: {\n type: String,\n default: null\n },\n phase: {\n type: String,\n default: null\n }\n });\n\n const eventsList = ref([]);\n const isLoading = ref(true);\n\n const skip = ref(0);\n const limit = ref(3);\n\n onMounted(async () => {\n const data = await events.read({\n skip: skip.value,\n limit: limit.value,\n sortOrder: 'desc',\n category: props.category,\n user: props.user,\n owner: props.owner,\n organization: props.organization,\n period: props.period,\n phase: props.phase,\n status: props.status\n });\n\n eventsList.value = data;\n isLoading.value = false;\n });\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["events.read"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DE,UAAM,QAAQ;AA+Bd,UAAM,aAAa,IAAI,EAAE;AACzB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,OAAO,IAAI,CAAC;AAClB,UAAM,QAAQ,IAAI,CAAC;AAEnB,cAAU,YAAY;AACpB,YAAM,OAAO,MAAMA,KAAY;AAAA,QAC7B,MAAM,KAAK;AAAA,QACX,OAAO,MAAM;AAAA,QACb,WAAW;AAAA,QACX,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,cAAc,MAAM;AAAA,QACpB,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,MACpB,CAAK;AAED,iBAAW,QAAQ;AACnB,gBAAU,QAAQ;AAAA,IACtB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
;/* empty css */
|
|
5
|
+
const _hoisted_1 = { class: "gap-medium radius-medium mn-b-semi" };
|
|
6
|
+
const _hoisted_2 = { class: "mn-b-small" };
|
|
7
|
+
const _hoisted_3 = { class: "cols-4 gap-thin" };
|
|
8
|
+
const _hoisted_4 = ["onClick"];
|
|
9
|
+
const _hoisted_5 = { class: "t-medium" };
|
|
10
|
+
const _hoisted_6 = { class: "text-small text-muted" };
|
|
11
|
+
const _sfc_main = {
|
|
12
|
+
__name: "SelectDate",
|
|
13
|
+
props: {
|
|
14
|
+
title: {
|
|
15
|
+
type: String,
|
|
16
|
+
default: "Explore by Date"
|
|
17
|
+
},
|
|
18
|
+
locale: {
|
|
19
|
+
type: String,
|
|
20
|
+
default: "en-US"
|
|
21
|
+
},
|
|
22
|
+
labels: {
|
|
23
|
+
type: Object,
|
|
24
|
+
default: () => ({
|
|
25
|
+
today: "Today",
|
|
26
|
+
tomorrow: "Tomorrow",
|
|
27
|
+
thisWeekend: "This Weekend",
|
|
28
|
+
thisWeek: "This Week",
|
|
29
|
+
nextWeekend: "Next Weekend",
|
|
30
|
+
nextWeek: "Next Week",
|
|
31
|
+
thisMonth: "This Month",
|
|
32
|
+
customDate: "Custom Date",
|
|
33
|
+
pickRange: "Pick Range"
|
|
34
|
+
})
|
|
35
|
+
},
|
|
36
|
+
customDateOptions: {
|
|
37
|
+
type: Array,
|
|
38
|
+
default: () => []
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
emits: ["date-selected"],
|
|
42
|
+
setup(__props, { emit: __emit }) {
|
|
43
|
+
const props = __props;
|
|
44
|
+
const emit = __emit;
|
|
45
|
+
const formatSingleDate = (date) => {
|
|
46
|
+
const weekday = new Intl.DateTimeFormat(props.locale, { weekday: "short" }).format(date);
|
|
47
|
+
const day = new Intl.DateTimeFormat(props.locale, { day: "numeric" }).format(date);
|
|
48
|
+
const month = new Intl.DateTimeFormat(props.locale, { month: "short" }).format(date);
|
|
49
|
+
return `${weekday}, ${day} ${month}`;
|
|
50
|
+
};
|
|
51
|
+
const formatDateRange = (startDate, endDate) => {
|
|
52
|
+
const sameMonth = startDate.getMonth() === endDate.getMonth();
|
|
53
|
+
const startDay = new Intl.DateTimeFormat(props.locale, { day: "numeric" }).format(startDate);
|
|
54
|
+
const endDay = new Intl.DateTimeFormat(props.locale, { day: "numeric" }).format(endDate);
|
|
55
|
+
const startMonth = new Intl.DateTimeFormat(props.locale, { month: "short" }).format(startDate);
|
|
56
|
+
const endMonth = new Intl.DateTimeFormat(props.locale, { month: "short" }).format(endDate);
|
|
57
|
+
if (sameMonth) {
|
|
58
|
+
return `${startDay} - ${endDay} ${startMonth}`;
|
|
59
|
+
} else {
|
|
60
|
+
return `${startDay} ${startMonth} - ${endDay} ${endMonth}`;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const setStartOfDay = (date) => {
|
|
64
|
+
const result = new Date(date);
|
|
65
|
+
result.setHours(0, 0, 0, 0);
|
|
66
|
+
return result;
|
|
67
|
+
};
|
|
68
|
+
const setEndOfDay = (date) => {
|
|
69
|
+
const result = new Date(date);
|
|
70
|
+
result.setHours(23, 59, 59, 999);
|
|
71
|
+
return result;
|
|
72
|
+
};
|
|
73
|
+
const computedDateOptions = vue.computed(() => {
|
|
74
|
+
if (props.customDateOptions.length > 0) {
|
|
75
|
+
return props.customDateOptions;
|
|
76
|
+
}
|
|
77
|
+
const today = /* @__PURE__ */ new Date();
|
|
78
|
+
const tomorrow = new Date(today);
|
|
79
|
+
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
80
|
+
const thisWeekendStart = new Date(today);
|
|
81
|
+
const daysUntilWeekend = 6 - today.getDay();
|
|
82
|
+
thisWeekendStart.setDate(today.getDate() + (daysUntilWeekend <= 0 ? daysUntilWeekend + 7 : daysUntilWeekend));
|
|
83
|
+
const thisWeekendEnd = new Date(thisWeekendStart);
|
|
84
|
+
thisWeekendEnd.setDate(thisWeekendStart.getDate() + 1);
|
|
85
|
+
const thisWeekStart = new Date(today);
|
|
86
|
+
thisWeekStart.setDate(today.getDate() - today.getDay());
|
|
87
|
+
const thisWeekEnd = new Date(thisWeekStart);
|
|
88
|
+
thisWeekEnd.setDate(thisWeekStart.getDate() + 6);
|
|
89
|
+
const nextWeekendStart = new Date(thisWeekendStart);
|
|
90
|
+
nextWeekendStart.setDate(nextWeekendStart.getDate() + 7);
|
|
91
|
+
const nextWeekendEnd = new Date(nextWeekendStart);
|
|
92
|
+
nextWeekendEnd.setDate(nextWeekendStart.getDate() + 1);
|
|
93
|
+
const nextWeekStart = new Date(thisWeekStart);
|
|
94
|
+
nextWeekStart.setDate(nextWeekStart.getDate() + 7);
|
|
95
|
+
const nextWeekEnd = new Date(nextWeekStart);
|
|
96
|
+
nextWeekEnd.setDate(nextWeekStart.getDate() + 6);
|
|
97
|
+
new Date(today.getFullYear(), today.getMonth(), 1);
|
|
98
|
+
new Date(today.getFullYear(), today.getMonth() + 1, 0);
|
|
99
|
+
return [
|
|
100
|
+
{
|
|
101
|
+
label: props.labels.today,
|
|
102
|
+
range: formatSingleDate(today),
|
|
103
|
+
data: {
|
|
104
|
+
startDate: setStartOfDay(today),
|
|
105
|
+
endDate: setEndOfDay(today)
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
label: props.labels.tomorrow,
|
|
110
|
+
range: formatSingleDate(tomorrow),
|
|
111
|
+
data: {
|
|
112
|
+
startDate: setStartOfDay(tomorrow),
|
|
113
|
+
endDate: setEndOfDay(tomorrow)
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
label: props.labels.thisWeekend,
|
|
118
|
+
range: formatDateRange(thisWeekendStart, thisWeekendEnd),
|
|
119
|
+
data: {
|
|
120
|
+
startDate: setStartOfDay(thisWeekendStart),
|
|
121
|
+
endDate: setEndOfDay(thisWeekendEnd)
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
label: props.labels.thisWeek,
|
|
126
|
+
range: formatDateRange(thisWeekStart, thisWeekEnd),
|
|
127
|
+
data: {
|
|
128
|
+
startDate: setStartOfDay(thisWeekStart),
|
|
129
|
+
endDate: setEndOfDay(thisWeekEnd)
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
label: props.labels.nextWeekend,
|
|
134
|
+
range: formatDateRange(nextWeekendStart, nextWeekendEnd),
|
|
135
|
+
data: {
|
|
136
|
+
startDate: setStartOfDay(nextWeekendStart),
|
|
137
|
+
endDate: setEndOfDay(nextWeekendEnd)
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
label: props.labels.nextWeek,
|
|
142
|
+
range: formatDateRange(nextWeekStart, nextWeekEnd),
|
|
143
|
+
data: {
|
|
144
|
+
startDate: setStartOfDay(nextWeekStart),
|
|
145
|
+
endDate: setEndOfDay(nextWeekEnd)
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// {
|
|
149
|
+
// label: props.labels.thisMonth,
|
|
150
|
+
// range: formatDateRange(thisMonthStart, thisMonthEnd),
|
|
151
|
+
// data: {
|
|
152
|
+
// startDate: setStartOfDay(thisMonthStart),
|
|
153
|
+
// endDate: setEndOfDay(thisMonthEnd)
|
|
154
|
+
// }
|
|
155
|
+
// },
|
|
156
|
+
// {
|
|
157
|
+
// label: props.labels.customDate,
|
|
158
|
+
// range: props.labels.pickRange,
|
|
159
|
+
// data: {
|
|
160
|
+
// startDate: null,
|
|
161
|
+
// endDate: null,
|
|
162
|
+
// isCustom: true
|
|
163
|
+
// }
|
|
164
|
+
// }
|
|
165
|
+
];
|
|
166
|
+
});
|
|
167
|
+
const handleDateSelect = (date) => {
|
|
168
|
+
emit("date-selected", date.data);
|
|
169
|
+
};
|
|
170
|
+
return (_ctx, _cache) => {
|
|
171
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
172
|
+
vue.createElementVNode("h3", _hoisted_2, vue.toDisplayString(__props.title), 1),
|
|
173
|
+
vue.createElementVNode("div", _hoisted_3, [
|
|
174
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(computedDateOptions.value, (date, index) => {
|
|
175
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
176
|
+
key: index,
|
|
177
|
+
class: "bg-light radius-medium pd-medium cursor-pointer",
|
|
178
|
+
onClick: ($event) => handleDateSelect(date)
|
|
179
|
+
}, [
|
|
180
|
+
vue.createElementVNode("h4", _hoisted_5, vue.toDisplayString(date.label), 1),
|
|
181
|
+
vue.createElementVNode("div", _hoisted_6, vue.toDisplayString(date.range), 1)
|
|
182
|
+
], 8, _hoisted_4);
|
|
183
|
+
}), 128))
|
|
184
|
+
])
|
|
185
|
+
]);
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
exports.default = _sfc_main;
|
|
190
|
+
//# sourceMappingURL=SelectDate.vue.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectDate.vue.cjs","sources":["../../../../../../../src/modules/events/components/sections/SelectDate.vue"],"sourcesContent":["<template>\n <div class=\"gap-medium radius-medium mn-b-semi\">\n <h3 class=\"mn-b-small\">\n {{ title }}\n </h3>\n \n <div class=\"cols-4 gap-thin\">\n <div \n v-for=\"(date, index) in computedDateOptions\" \n :key=\"index\"\n class=\"bg-light radius-medium pd-medium cursor-pointer\"\n @click=\"handleDateSelect(date)\"\n >\n <h4 class=\"t-medium\">{{ date.label }}</h4>\n <div class=\"text-small text-muted\">{{ date.range }}</div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, defineProps, defineEmits } from 'vue'\n\nconst props = defineProps({\n title: {\n type: String,\n default: 'Explore by Date'\n },\n locale: {\n type: String,\n default: 'en-US'\n },\n labels: {\n type: Object,\n default: () => ({\n today: 'Today',\n tomorrow: 'Tomorrow',\n thisWeekend: 'This Weekend',\n thisWeek: 'This Week',\n nextWeekend: 'Next Weekend',\n nextWeek: 'Next Week',\n thisMonth: 'This Month',\n customDate: 'Custom Date',\n pickRange: 'Pick Range'\n })\n },\n customDateOptions: {\n type: Array,\n default: () => []\n }\n});\n\nconst emit = defineEmits(['date-selected']);\n\n// Форматирование одиночной даты с месяцем после числа\nconst formatSingleDate = (date) => {\n // Получаем отдельные форматированные части\n const weekday = new Intl.DateTimeFormat(props.locale, { weekday: 'short' }).format(date);\n const day = new Intl.DateTimeFormat(props.locale, { day: 'numeric' }).format(date);\n const month = new Intl.DateTimeFormat(props.locale, { month: 'short' }).format(date);\n \n // Собираем в нужном порядке: день недели, число месяца\n return `${weekday}, ${day} ${month}`;\n};\n\n// Форматирование диапазона дат с месяцем после числа\nconst formatDateRange = (startDate, endDate) => {\n const sameMonth = startDate.getMonth() === endDate.getMonth();\n \n // Форматируем начало и конец диапазона\n const startDay = new Intl.DateTimeFormat(props.locale, { day: 'numeric' }).format(startDate);\n const endDay = new Intl.DateTimeFormat(props.locale, { day: 'numeric' }).format(endDate);\n const startMonth = new Intl.DateTimeFormat(props.locale, { month: 'short' }).format(startDate);\n const endMonth = new Intl.DateTimeFormat(props.locale, { month: 'short' }).format(endDate);\n \n if (sameMonth) {\n // Если один и тот же месяц: \"1 - 2 Jan\"\n return `${startDay} - ${endDay} ${startMonth}`;\n } else {\n // Если разные месяцы: \"30 Dec - 5 Jan\"\n return `${startDay} ${startMonth} - ${endDay} ${endMonth}`;\n }\n};\n\n// Вспомогательная функция для установки времени на начало дня (00:00:00)\nconst setStartOfDay = (date) => {\n const result = new Date(date);\n result.setHours(0, 0, 0, 0);\n return result;\n};\n\n// Вспомогательная функция для установки времени на конец дня (23:59:59.999)\nconst setEndOfDay = (date) => {\n const result = new Date(date);\n result.setHours(23, 59, 59, 999);\n return result;\n};\n\nconst computedDateOptions = computed(() => {\n if (props.customDateOptions.length > 0) {\n return props.customDateOptions;\n }\n \n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n \n // Расчет текущих выходных (следующие суббота и воскресенье)\n const thisWeekendStart = new Date(today);\n const daysUntilWeekend = (6 - today.getDay()); // 6 - суббота\n thisWeekendStart.setDate(today.getDate() + (daysUntilWeekend <= 0 ? daysUntilWeekend + 7 : daysUntilWeekend));\n \n const thisWeekendEnd = new Date(thisWeekendStart);\n thisWeekendEnd.setDate(thisWeekendStart.getDate() + 1);\n \n // Расчет текущей недели (воскресенье - суббота)\n const thisWeekStart = new Date(today);\n thisWeekStart.setDate(today.getDate() - today.getDay());\n \n const thisWeekEnd = new Date(thisWeekStart);\n thisWeekEnd.setDate(thisWeekStart.getDate() + 6);\n \n // Расчет следующих выходных\n const nextWeekendStart = new Date(thisWeekendStart);\n nextWeekendStart.setDate(nextWeekendStart.getDate() + 7);\n \n const nextWeekendEnd = new Date(nextWeekendStart);\n nextWeekendEnd.setDate(nextWeekendStart.getDate() + 1);\n \n // Расчет следующей недели\n const nextWeekStart = new Date(thisWeekStart);\n nextWeekStart.setDate(nextWeekStart.getDate() + 7);\n \n const nextWeekEnd = new Date(nextWeekStart);\n nextWeekEnd.setDate(nextWeekStart.getDate() + 6);\n \n // Расчет текущего месяца\n const thisMonthStart = new Date(today.getFullYear(), today.getMonth(), 1);\n const thisMonthEnd = new Date(today.getFullYear(), today.getMonth() + 1, 0);\n \n return [\n { \n label: props.labels.today, \n range: formatSingleDate(today),\n data: { \n startDate: setStartOfDay(today), \n endDate: setEndOfDay(today) \n }\n },\n { \n label: props.labels.tomorrow, \n range: formatSingleDate(tomorrow),\n data: { \n startDate: setStartOfDay(tomorrow), \n endDate: setEndOfDay(tomorrow) \n }\n },\n { \n label: props.labels.thisWeekend, \n range: formatDateRange(thisWeekendStart, thisWeekendEnd),\n data: { \n startDate: setStartOfDay(thisWeekendStart), \n endDate: setEndOfDay(thisWeekendEnd) \n }\n },\n { \n label: props.labels.thisWeek, \n range: formatDateRange(thisWeekStart, thisWeekEnd),\n data: { \n startDate: setStartOfDay(thisWeekStart), \n endDate: setEndOfDay(thisWeekEnd) \n }\n },\n { \n label: props.labels.nextWeekend, \n range: formatDateRange(nextWeekendStart, nextWeekendEnd),\n data: { \n startDate: setStartOfDay(nextWeekendStart), \n endDate: setEndOfDay(nextWeekendEnd) \n }\n },\n { \n label: props.labels.nextWeek, \n range: formatDateRange(nextWeekStart, nextWeekEnd),\n data: { \n startDate: setStartOfDay(nextWeekStart), \n endDate: setEndOfDay(nextWeekEnd) \n }\n },\n // { \n // label: props.labels.thisMonth, \n // range: formatDateRange(thisMonthStart, thisMonthEnd),\n // data: { \n // startDate: setStartOfDay(thisMonthStart), \n // endDate: setEndOfDay(thisMonthEnd) \n // }\n // },\n // { \n // label: props.labels.customDate, \n // range: props.labels.pickRange,\n // data: { \n // startDate: null, \n // endDate: null,\n // isCustom: true\n // }\n // }\n ];\n});\n\nconst handleDateSelect = (date) => {\n emit('date-selected', date.data);\n};\n</script>\n\n<style lang=\"scss\">\n/* Стили остаются неизменными */\n</style>"],"names":["computed"],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { computed, createElementBlock, openBlock, createElementVNode, toDisplayString, Fragment, renderList } from "vue";
|
|
2
|
+
/* empty css */
|
|
3
|
+
const _hoisted_1 = { class: "gap-medium radius-medium mn-b-semi" };
|
|
4
|
+
const _hoisted_2 = { class: "mn-b-small" };
|
|
5
|
+
const _hoisted_3 = { class: "cols-4 gap-thin" };
|
|
6
|
+
const _hoisted_4 = ["onClick"];
|
|
7
|
+
const _hoisted_5 = { class: "t-medium" };
|
|
8
|
+
const _hoisted_6 = { class: "text-small text-muted" };
|
|
9
|
+
const _sfc_main = {
|
|
10
|
+
__name: "SelectDate",
|
|
11
|
+
props: {
|
|
12
|
+
title: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: "Explore by Date"
|
|
15
|
+
},
|
|
16
|
+
locale: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: "en-US"
|
|
19
|
+
},
|
|
20
|
+
labels: {
|
|
21
|
+
type: Object,
|
|
22
|
+
default: () => ({
|
|
23
|
+
today: "Today",
|
|
24
|
+
tomorrow: "Tomorrow",
|
|
25
|
+
thisWeekend: "This Weekend",
|
|
26
|
+
thisWeek: "This Week",
|
|
27
|
+
nextWeekend: "Next Weekend",
|
|
28
|
+
nextWeek: "Next Week",
|
|
29
|
+
thisMonth: "This Month",
|
|
30
|
+
customDate: "Custom Date",
|
|
31
|
+
pickRange: "Pick Range"
|
|
32
|
+
})
|
|
33
|
+
},
|
|
34
|
+
customDateOptions: {
|
|
35
|
+
type: Array,
|
|
36
|
+
default: () => []
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
emits: ["date-selected"],
|
|
40
|
+
setup(__props, { emit: __emit }) {
|
|
41
|
+
const props = __props;
|
|
42
|
+
const emit = __emit;
|
|
43
|
+
const formatSingleDate = (date) => {
|
|
44
|
+
const weekday = new Intl.DateTimeFormat(props.locale, { weekday: "short" }).format(date);
|
|
45
|
+
const day = new Intl.DateTimeFormat(props.locale, { day: "numeric" }).format(date);
|
|
46
|
+
const month = new Intl.DateTimeFormat(props.locale, { month: "short" }).format(date);
|
|
47
|
+
return `${weekday}, ${day} ${month}`;
|
|
48
|
+
};
|
|
49
|
+
const formatDateRange = (startDate, endDate) => {
|
|
50
|
+
const sameMonth = startDate.getMonth() === endDate.getMonth();
|
|
51
|
+
const startDay = new Intl.DateTimeFormat(props.locale, { day: "numeric" }).format(startDate);
|
|
52
|
+
const endDay = new Intl.DateTimeFormat(props.locale, { day: "numeric" }).format(endDate);
|
|
53
|
+
const startMonth = new Intl.DateTimeFormat(props.locale, { month: "short" }).format(startDate);
|
|
54
|
+
const endMonth = new Intl.DateTimeFormat(props.locale, { month: "short" }).format(endDate);
|
|
55
|
+
if (sameMonth) {
|
|
56
|
+
return `${startDay} - ${endDay} ${startMonth}`;
|
|
57
|
+
} else {
|
|
58
|
+
return `${startDay} ${startMonth} - ${endDay} ${endMonth}`;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const setStartOfDay = (date) => {
|
|
62
|
+
const result = new Date(date);
|
|
63
|
+
result.setHours(0, 0, 0, 0);
|
|
64
|
+
return result;
|
|
65
|
+
};
|
|
66
|
+
const setEndOfDay = (date) => {
|
|
67
|
+
const result = new Date(date);
|
|
68
|
+
result.setHours(23, 59, 59, 999);
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
71
|
+
const computedDateOptions = computed(() => {
|
|
72
|
+
if (props.customDateOptions.length > 0) {
|
|
73
|
+
return props.customDateOptions;
|
|
74
|
+
}
|
|
75
|
+
const today = /* @__PURE__ */ new Date();
|
|
76
|
+
const tomorrow = new Date(today);
|
|
77
|
+
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
78
|
+
const thisWeekendStart = new Date(today);
|
|
79
|
+
const daysUntilWeekend = 6 - today.getDay();
|
|
80
|
+
thisWeekendStart.setDate(today.getDate() + (daysUntilWeekend <= 0 ? daysUntilWeekend + 7 : daysUntilWeekend));
|
|
81
|
+
const thisWeekendEnd = new Date(thisWeekendStart);
|
|
82
|
+
thisWeekendEnd.setDate(thisWeekendStart.getDate() + 1);
|
|
83
|
+
const thisWeekStart = new Date(today);
|
|
84
|
+
thisWeekStart.setDate(today.getDate() - today.getDay());
|
|
85
|
+
const thisWeekEnd = new Date(thisWeekStart);
|
|
86
|
+
thisWeekEnd.setDate(thisWeekStart.getDate() + 6);
|
|
87
|
+
const nextWeekendStart = new Date(thisWeekendStart);
|
|
88
|
+
nextWeekendStart.setDate(nextWeekendStart.getDate() + 7);
|
|
89
|
+
const nextWeekendEnd = new Date(nextWeekendStart);
|
|
90
|
+
nextWeekendEnd.setDate(nextWeekendStart.getDate() + 1);
|
|
91
|
+
const nextWeekStart = new Date(thisWeekStart);
|
|
92
|
+
nextWeekStart.setDate(nextWeekStart.getDate() + 7);
|
|
93
|
+
const nextWeekEnd = new Date(nextWeekStart);
|
|
94
|
+
nextWeekEnd.setDate(nextWeekStart.getDate() + 6);
|
|
95
|
+
new Date(today.getFullYear(), today.getMonth(), 1);
|
|
96
|
+
new Date(today.getFullYear(), today.getMonth() + 1, 0);
|
|
97
|
+
return [
|
|
98
|
+
{
|
|
99
|
+
label: props.labels.today,
|
|
100
|
+
range: formatSingleDate(today),
|
|
101
|
+
data: {
|
|
102
|
+
startDate: setStartOfDay(today),
|
|
103
|
+
endDate: setEndOfDay(today)
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
label: props.labels.tomorrow,
|
|
108
|
+
range: formatSingleDate(tomorrow),
|
|
109
|
+
data: {
|
|
110
|
+
startDate: setStartOfDay(tomorrow),
|
|
111
|
+
endDate: setEndOfDay(tomorrow)
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
label: props.labels.thisWeekend,
|
|
116
|
+
range: formatDateRange(thisWeekendStart, thisWeekendEnd),
|
|
117
|
+
data: {
|
|
118
|
+
startDate: setStartOfDay(thisWeekendStart),
|
|
119
|
+
endDate: setEndOfDay(thisWeekendEnd)
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
label: props.labels.thisWeek,
|
|
124
|
+
range: formatDateRange(thisWeekStart, thisWeekEnd),
|
|
125
|
+
data: {
|
|
126
|
+
startDate: setStartOfDay(thisWeekStart),
|
|
127
|
+
endDate: setEndOfDay(thisWeekEnd)
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
label: props.labels.nextWeekend,
|
|
132
|
+
range: formatDateRange(nextWeekendStart, nextWeekendEnd),
|
|
133
|
+
data: {
|
|
134
|
+
startDate: setStartOfDay(nextWeekendStart),
|
|
135
|
+
endDate: setEndOfDay(nextWeekendEnd)
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
label: props.labels.nextWeek,
|
|
140
|
+
range: formatDateRange(nextWeekStart, nextWeekEnd),
|
|
141
|
+
data: {
|
|
142
|
+
startDate: setStartOfDay(nextWeekStart),
|
|
143
|
+
endDate: setEndOfDay(nextWeekEnd)
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// {
|
|
147
|
+
// label: props.labels.thisMonth,
|
|
148
|
+
// range: formatDateRange(thisMonthStart, thisMonthEnd),
|
|
149
|
+
// data: {
|
|
150
|
+
// startDate: setStartOfDay(thisMonthStart),
|
|
151
|
+
// endDate: setEndOfDay(thisMonthEnd)
|
|
152
|
+
// }
|
|
153
|
+
// },
|
|
154
|
+
// {
|
|
155
|
+
// label: props.labels.customDate,
|
|
156
|
+
// range: props.labels.pickRange,
|
|
157
|
+
// data: {
|
|
158
|
+
// startDate: null,
|
|
159
|
+
// endDate: null,
|
|
160
|
+
// isCustom: true
|
|
161
|
+
// }
|
|
162
|
+
// }
|
|
163
|
+
];
|
|
164
|
+
});
|
|
165
|
+
const handleDateSelect = (date) => {
|
|
166
|
+
emit("date-selected", date.data);
|
|
167
|
+
};
|
|
168
|
+
return (_ctx, _cache) => {
|
|
169
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
170
|
+
createElementVNode("h3", _hoisted_2, toDisplayString(__props.title), 1),
|
|
171
|
+
createElementVNode("div", _hoisted_3, [
|
|
172
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(computedDateOptions.value, (date, index) => {
|
|
173
|
+
return openBlock(), createElementBlock("div", {
|
|
174
|
+
key: index,
|
|
175
|
+
class: "bg-light radius-medium pd-medium cursor-pointer",
|
|
176
|
+
onClick: ($event) => handleDateSelect(date)
|
|
177
|
+
}, [
|
|
178
|
+
createElementVNode("h4", _hoisted_5, toDisplayString(date.label), 1),
|
|
179
|
+
createElementVNode("div", _hoisted_6, toDisplayString(date.range), 1)
|
|
180
|
+
], 8, _hoisted_4);
|
|
181
|
+
}), 128))
|
|
182
|
+
])
|
|
183
|
+
]);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
export {
|
|
188
|
+
_sfc_main as default
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=SelectDate.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectDate.vue.js","sources":["../../../../../../../src/modules/events/components/sections/SelectDate.vue"],"sourcesContent":["<template>\n <div class=\"gap-medium radius-medium mn-b-semi\">\n <h3 class=\"mn-b-small\">\n {{ title }}\n </h3>\n \n <div class=\"cols-4 gap-thin\">\n <div \n v-for=\"(date, index) in computedDateOptions\" \n :key=\"index\"\n class=\"bg-light radius-medium pd-medium cursor-pointer\"\n @click=\"handleDateSelect(date)\"\n >\n <h4 class=\"t-medium\">{{ date.label }}</h4>\n <div class=\"text-small text-muted\">{{ date.range }}</div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, defineProps, defineEmits } from 'vue'\n\nconst props = defineProps({\n title: {\n type: String,\n default: 'Explore by Date'\n },\n locale: {\n type: String,\n default: 'en-US'\n },\n labels: {\n type: Object,\n default: () => ({\n today: 'Today',\n tomorrow: 'Tomorrow',\n thisWeekend: 'This Weekend',\n thisWeek: 'This Week',\n nextWeekend: 'Next Weekend',\n nextWeek: 'Next Week',\n thisMonth: 'This Month',\n customDate: 'Custom Date',\n pickRange: 'Pick Range'\n })\n },\n customDateOptions: {\n type: Array,\n default: () => []\n }\n});\n\nconst emit = defineEmits(['date-selected']);\n\n// Форматирование одиночной даты с месяцем после числа\nconst formatSingleDate = (date) => {\n // Получаем отдельные форматированные части\n const weekday = new Intl.DateTimeFormat(props.locale, { weekday: 'short' }).format(date);\n const day = new Intl.DateTimeFormat(props.locale, { day: 'numeric' }).format(date);\n const month = new Intl.DateTimeFormat(props.locale, { month: 'short' }).format(date);\n \n // Собираем в нужном порядке: день недели, число месяца\n return `${weekday}, ${day} ${month}`;\n};\n\n// Форматирование диапазона дат с месяцем после числа\nconst formatDateRange = (startDate, endDate) => {\n const sameMonth = startDate.getMonth() === endDate.getMonth();\n \n // Форматируем начало и конец диапазона\n const startDay = new Intl.DateTimeFormat(props.locale, { day: 'numeric' }).format(startDate);\n const endDay = new Intl.DateTimeFormat(props.locale, { day: 'numeric' }).format(endDate);\n const startMonth = new Intl.DateTimeFormat(props.locale, { month: 'short' }).format(startDate);\n const endMonth = new Intl.DateTimeFormat(props.locale, { month: 'short' }).format(endDate);\n \n if (sameMonth) {\n // Если один и тот же месяц: \"1 - 2 Jan\"\n return `${startDay} - ${endDay} ${startMonth}`;\n } else {\n // Если разные месяцы: \"30 Dec - 5 Jan\"\n return `${startDay} ${startMonth} - ${endDay} ${endMonth}`;\n }\n};\n\n// Вспомогательная функция для установки времени на начало дня (00:00:00)\nconst setStartOfDay = (date) => {\n const result = new Date(date);\n result.setHours(0, 0, 0, 0);\n return result;\n};\n\n// Вспомогательная функция для установки времени на конец дня (23:59:59.999)\nconst setEndOfDay = (date) => {\n const result = new Date(date);\n result.setHours(23, 59, 59, 999);\n return result;\n};\n\nconst computedDateOptions = computed(() => {\n if (props.customDateOptions.length > 0) {\n return props.customDateOptions;\n }\n \n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n \n // Расчет текущих выходных (следующие суббота и воскресенье)\n const thisWeekendStart = new Date(today);\n const daysUntilWeekend = (6 - today.getDay()); // 6 - суббота\n thisWeekendStart.setDate(today.getDate() + (daysUntilWeekend <= 0 ? daysUntilWeekend + 7 : daysUntilWeekend));\n \n const thisWeekendEnd = new Date(thisWeekendStart);\n thisWeekendEnd.setDate(thisWeekendStart.getDate() + 1);\n \n // Расчет текущей недели (воскресенье - суббота)\n const thisWeekStart = new Date(today);\n thisWeekStart.setDate(today.getDate() - today.getDay());\n \n const thisWeekEnd = new Date(thisWeekStart);\n thisWeekEnd.setDate(thisWeekStart.getDate() + 6);\n \n // Расчет следующих выходных\n const nextWeekendStart = new Date(thisWeekendStart);\n nextWeekendStart.setDate(nextWeekendStart.getDate() + 7);\n \n const nextWeekendEnd = new Date(nextWeekendStart);\n nextWeekendEnd.setDate(nextWeekendStart.getDate() + 1);\n \n // Расчет следующей недели\n const nextWeekStart = new Date(thisWeekStart);\n nextWeekStart.setDate(nextWeekStart.getDate() + 7);\n \n const nextWeekEnd = new Date(nextWeekStart);\n nextWeekEnd.setDate(nextWeekStart.getDate() + 6);\n \n // Расчет текущего месяца\n const thisMonthStart = new Date(today.getFullYear(), today.getMonth(), 1);\n const thisMonthEnd = new Date(today.getFullYear(), today.getMonth() + 1, 0);\n \n return [\n { \n label: props.labels.today, \n range: formatSingleDate(today),\n data: { \n startDate: setStartOfDay(today), \n endDate: setEndOfDay(today) \n }\n },\n { \n label: props.labels.tomorrow, \n range: formatSingleDate(tomorrow),\n data: { \n startDate: setStartOfDay(tomorrow), \n endDate: setEndOfDay(tomorrow) \n }\n },\n { \n label: props.labels.thisWeekend, \n range: formatDateRange(thisWeekendStart, thisWeekendEnd),\n data: { \n startDate: setStartOfDay(thisWeekendStart), \n endDate: setEndOfDay(thisWeekendEnd) \n }\n },\n { \n label: props.labels.thisWeek, \n range: formatDateRange(thisWeekStart, thisWeekEnd),\n data: { \n startDate: setStartOfDay(thisWeekStart), \n endDate: setEndOfDay(thisWeekEnd) \n }\n },\n { \n label: props.labels.nextWeekend, \n range: formatDateRange(nextWeekendStart, nextWeekendEnd),\n data: { \n startDate: setStartOfDay(nextWeekendStart), \n endDate: setEndOfDay(nextWeekendEnd) \n }\n },\n { \n label: props.labels.nextWeek, \n range: formatDateRange(nextWeekStart, nextWeekEnd),\n data: { \n startDate: setStartOfDay(nextWeekStart), \n endDate: setEndOfDay(nextWeekEnd) \n }\n },\n // { \n // label: props.labels.thisMonth, \n // range: formatDateRange(thisMonthStart, thisMonthEnd),\n // data: { \n // startDate: setStartOfDay(thisMonthStart), \n // endDate: setEndOfDay(thisMonthEnd) \n // }\n // },\n // { \n // label: props.labels.customDate, \n // range: props.labels.pickRange,\n // data: { \n // startDate: null, \n // endDate: null,\n // isCustom: true\n // }\n // }\n ];\n});\n\nconst handleDateSelect = (date) => {\n emit('date-selected', date.data);\n};\n</script>\n\n<style lang=\"scss\">\n/* Стили остаются неизменными */\n</style>"],"names":[],"mappings":"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"}
|