@ozdao/martyrs 0.2.591 → 0.2.593
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/auth.server.js +7 -0
- package/dist/builder.js +0 -3
- package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +2 -2
- package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
- package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
- package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
- package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Select/{Select.vue.js → Select.vue2.js} +2 -2
- package/dist/martyrs/src/components/Select/Select.vue2.js.map +1 -0
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/locales/en.js +2 -1
- package/dist/martyrs/src/modules/auth/locales/en.js.map +1 -1
- package/dist/martyrs/src/modules/auth/locales/ru.js +2 -1
- package/dist/martyrs/src/modules/auth/locales/ru.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +8 -12
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +10 -2
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/core/core.client.js +3 -3
- package/dist/martyrs/src/modules/core/core.client.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/icons/IconMenu.vue.js +44 -0
- package/dist/martyrs/src/modules/core/views/components/icons/IconMenu.vue.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +45 -51
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +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.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.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 +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
- package/dist/style.css +17 -53
- package/package.json +5 -2
- package/src/builder/rspack/rspack.config.base.js +0 -3
- package/src/modules/TASKS.MD +70 -1
- package/src/modules/auth/controllers/routes/auth.routes.js +9 -0
- package/src/modules/auth/locales/en.js +2 -1
- package/src/modules/auth/locales/ru.js +2 -1
- package/src/modules/auth/views/components/pages/SignUp.vue +2 -5
- package/src/modules/auth/views/store/auth.js +13 -3
- package/src/modules/core/core.client.js +2 -2
- package/src/modules/core/views/components/elements/OnlineIndicator.vue +1 -1
- package/src/modules/core/views/components/icons/IconMenu.vue +82 -0
- package/src/modules/core/views/components/partials/Header.vue +166 -305
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +0 -1
- 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.vue.js.map +0 -1
- package/dist/martyrs/src/components/Select/Select.vue.js.map +0 -1
- package/src/modules/PROCESS.md +0 -0
package/dist/auth.server.js
CHANGED
|
@@ -278,6 +278,13 @@ const authRoutes = (function(app, db, origins) {
|
|
|
278
278
|
controller.signup
|
|
279
279
|
);
|
|
280
280
|
app.post("/api/auth/signin", controller.signin);
|
|
281
|
+
app.get("/api/auth/check-token", [authJwt.verifyToken()], (req, res) => {
|
|
282
|
+
res.status(200).json({
|
|
283
|
+
ok: true,
|
|
284
|
+
userId: req.userId,
|
|
285
|
+
sessionId: req.sessionId || null
|
|
286
|
+
});
|
|
287
|
+
});
|
|
281
288
|
app.post(
|
|
282
289
|
"/api/auth/reset-password",
|
|
283
290
|
[
|
package/dist/builder.js
CHANGED
|
@@ -1998,9 +1998,6 @@ const baseConfig = (projectRoot) => {
|
|
|
1998
1998
|
warnings: true,
|
|
1999
1999
|
// Цвета в терминале
|
|
2000
2000
|
colors: true
|
|
2001
|
-
},
|
|
2002
|
-
watchOptions: {
|
|
2003
|
-
ignored: ["**/node_modules/**", "**/martyrs/node_modules/**", "**/create-martyrs/node_modules/**"]
|
|
2004
2001
|
}
|
|
2005
2002
|
};
|
|
2006
2003
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, createElementBlock, openBlock, normalizeClass, withModifiers, createElementVNode, createCommentVNode, renderSlot, createBlock, Fragment, createTextVNode, toDisplayString } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../modules/icons/navigation/IconCheckmark.vue.js";
|
|
3
3
|
import _sfc_main$2 from "../../modules/icons/navigation/IconCross.vue.js";
|
|
4
|
-
/* empty css
|
|
4
|
+
/* empty css */
|
|
5
5
|
const _hoisted_1 = ["disabled"];
|
|
6
6
|
const _hoisted_2 = {
|
|
7
7
|
key: 0,
|
|
@@ -147,4 +147,4 @@ const _sfc_main = {
|
|
|
147
147
|
export {
|
|
148
148
|
_sfc_main as default
|
|
149
149
|
};
|
|
150
|
-
//# sourceMappingURL=Button.
|
|
150
|
+
//# sourceMappingURL=Button.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.vue.js","sources":["../../../../../src/components/Button/Button.vue"],"sourcesContent":["<script setup>\nimport { ref } from 'vue'\n\nimport IconCheckmark from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n submit: {\n type: Function,\n default: async () => { console.log('Button click.') }\n },\n text: {\n type: Object,\n default: () => ({\n success: null,\n error: null\n })\n },\n counter: {\n type: Object\n },\n callback: {\n type: Function,\n default: async () => { console.log('Button callback.') }\n },\n callbackDelay: {\n type: Number,\n default: 750\n },\n showSucces: {\n type: Boolean,\n default: true\n },\n showLoader: {\n type: Boolean,\n default: true\n },\n validation: {\n type: Boolean,\n default: false\n },\n})\n\nconst emits = defineEmits(['error'])\n\nconst button = ref(null)\nconst error = ref(null)\nconst loading = ref(false)\nconst finished = ref(false)\n\nasync function Submit() {\n console.log('click')\n \n button.value.style['pointer-events'] = 'none'\n error.value = null\n loading.value = true\n\n // Функция для сброса состояния кнопки\n const resetButton = () => {\n if (button.value) {\n button.value.style.pointerEvents = 'auto'\n loading.value = false\n finished.value = false\n error.value = null\n }\n }\n\n try {\n await props.submit()\n\n button.value.classList.replace('bg-main', 'bg-second')\n loading.value = false\n\n // Используем функцию сброса состояния кнопки здесь\n if (props.showSucces) { \n finished.value = true\n setTimeout(() => {\n resetButton()\n button.value.classList.replace('bg-second', 'bg-main')\n }, 500)\n } else {\n resetButton()\n button.value.classList.replace('bg-second', 'bg-main')\n }\n\n // Если есть callback, мы также установим таймер для его вызова\n if (props.callback) setTimeout(() => props.callback(), props.callbackDelay)\n\n } catch (err) {\n console.error('=== BUTTON ERROR ===', err)\n emits('error', err)\n // Если возникла ошибка, мы изменяем стили и устанавливаем сообщение об ошибке\n button.value.classList.replace('bg-main', 'bg-fourth-nano')\n loading.value = false\n error.value = true\n \n // После задержки снова сбрасываем состояние кнопки\n setTimeout(() => {\n resetButton()\n // Так как класс кнопки был изменен, вернем его в исходное состояние\n button.value.classList.replace('bg-fourth-nano', 'bg-main')\n }, 1330)\n }\n}\n</script>\n\n<template>\n <button \n @click.stop=\"Submit\"\n :disabled=\"validation\"\n ref=\"button\"\n\t\tclass=\"button\"\n :class=\"{ 'button--disabled': loading || validation }\"\n >\n <span class=\"button-content\" :class=\"{ 'hidden': loading || error || finished }\">\n <slot></slot>\n </span>\n\n <span class=\"button-loader\" :class=\"{ 'active': loading && showLoader }\">\n <span class=\"dot\"></span>\n <span class=\"dot\"></span>\n <span class=\"dot\"></span>\n </span>\n\n <span class=\"button-success\" :class=\"{ 'active': finished && showSucces }\">\n <template v-if=\"text.success\">{{ text.success }}</template>\n <IconCheckmark v-else class=\"i-regular\" />\n </span>\n\n <span class=\"button-error\" :class=\"{ 'active': error }\">\n <template v-if=\"text.error\">{{ text.error }}</template>\n <IconCross v-else class=\"i-regular\" />\n </span>\n \n <!-- Counter -->\n <div v-if=\"counter\" class=\"button-counter font-second flex flex-center\">\n <span>{{ counter }}</span>\n </div>\n </button>\n</template>\n\n<style lang=\"scss\">\nbutton[disabled] {\n opacity: 0.75 !important;\n pointer-events: none !important;\n cursor: default !important;\n color: rgba(var(--dark), 0.33) !important;\n background: rgba(var(--light), 1) !important;\n}\n\na.button {\n text-box: trim-both cap alphabetic;\n}\n\n.button {\n position: relative;\n display: flex;\n padding: var(--small);\n border-radius: var(--small);\n text-box: trim-both cap alphabetic;\n transform: scale(1);\n opacity: 1;\n align-items: center;\n justify-content: center;\n color: black;\n text-align: center;\n font-size: 1rem;\n letter-spacing: 5%;\n transition: all 0.33s ease;\n\n &:hover {\n cursor: pointer;\n opacity: 0.9;\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n &-small {\n padding: 0.75rem;\n border-radius: 0.5rem;\n height: fit-content;\n }\n\n .button-counter {\n position: absolute;\n right: -8px;\n bottom: -8px;\n background: yellow;\n height: 16px;\n border-radius: 16px;\n width: 16px;\n font-weight: 500;\n text-align: center;\n line-height: 16px;\n font-size: 10px;\n }\n}\n\n.button-content {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transform: translateY(0);\n opacity: 1;\n transition:\n opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\n &.hidden {\n opacity: 0;\n transform: translateY(4px);\n }\n}\n\n.button-loader {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n opacity: 0;\n transform: translateY(4px);\n transition:\n opacity 0.25s cubic-bezier(0.0, 0, 0.2, 1) 0.05s,\n transform 0.25s cubic-bezier(0.0, 0, 0.2, 1) 0.05s;\n pointer-events: none;\n\n &.active {\n opacity: 1;\n transform: translateY(0);\n }\n\n .dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n animation: dot-bounce 0.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n\n &:nth-child(1) { animation-delay: 0s; }\n &:nth-child(2) { animation-delay: 0.12s; }\n &:nth-child(3) { animation-delay: 0.24s; }\n }\n}\n\n@keyframes dot-bounce {\n 0%, 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-5px);\n }\n}\n\n.button-success {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transform: translateY(4px);\n transition:\n opacity 0.2s cubic-bezier(0.0, 0, 0.2, 1),\n transform 0.2s cubic-bezier(0.0, 0, 0.2, 1);\n pointer-events: none;\n\n &.active {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.button-error {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transform: translateY(4px);\n transition:\n opacity 0.2s cubic-bezier(0.0, 0, 0.2, 1),\n transform 0.2s cubic-bezier(0.0, 0, 0.2, 1);\n pointer-events: none;\n\n &.active {\n opacity: 1;\n transform: translateY(0);\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,UAAM,QAAQ;AAqCd,UAAM,QAAQ;AAEd,UAAM,SAAS,IAAI,IAAI;AACvB,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,WAAW,IAAI,KAAK;AAE1B,mBAAe,SAAS;AACtB,cAAQ,IAAI,OAAO;AAEnB,aAAO,MAAM,MAAM,gBAAgB,IAAI;AACvC,YAAM,QAAQ;AACd,cAAQ,QAAQ;AAGhB,YAAM,cAAc,MAAM;AACxB,YAAI,OAAO,OAAO;AAChB,iBAAO,MAAM,MAAM,gBAAgB;AACnC,kBAAQ,QAAQ;AAChB,mBAAS,QAAQ;AACjB,gBAAM,QAAQ;AAAA,QAChB;AAAA,MACF;AAEA,UAAI;AACF,cAAM,MAAM,OAAM;AAElB,eAAO,MAAM,UAAU,QAAQ,WAAW,WAAW;AACrD,gBAAQ,QAAQ;AAGhB,YAAI,MAAM,YAAY;AACpB,mBAAS,QAAQ;AACjB,qBAAW,MAAM;AACf,wBAAW;AACX,mBAAO,MAAM,UAAU,QAAQ,aAAa,SAAS;AAAA,UACvD,GAAG,GAAG;AAAA,QACR,OAAO;AACL,sBAAW;AACX,iBAAO,MAAM,UAAU,QAAQ,aAAa,SAAS;AAAA,QACvD;AAGA,YAAI,MAAM,SAAU,YAAW,MAAM,MAAM,SAAQ,GAAI,MAAM,aAAa;AAAA,MAE5E,SAAS,KAAK;AACZ,gBAAQ,MAAM,wBAAwB,GAAG;AACzC,cAAM,SAAS,GAAG;AAElB,eAAO,MAAM,UAAU,QAAQ,WAAW,gBAAgB;AAC1D,gBAAQ,QAAQ;AAChB,cAAM,QAAQ;AAGd,mBAAW,MAAM;AACf,sBAAW;AAEX,iBAAO,MAAM,UAAU,QAAQ,kBAAkB,SAAS;AAAA,QAC5D,GAAG,IAAI;AAAA,MACT;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, computed, withDirectives, createElementBlock, openBlock, withModifiers, renderSlot, createVNode, createBlock, resolveDynamicComponent, mergeProps, toDisplayString, Transition, withCtx, createCommentVNode, normalizeStyle, unref } from "vue";
|
|
2
2
|
import clickOutside from "../FieldPhone/click-outside.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
const _hoisted_1 = {
|
|
5
5
|
key: 0,
|
|
6
6
|
class: "w-100 h-100 flex-center flex"
|
|
@@ -81,4 +81,4 @@ const _sfc_main = {
|
|
|
81
81
|
export {
|
|
82
82
|
_sfc_main as default
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=Dropdown.
|
|
84
|
+
//# sourceMappingURL=Dropdown.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropdown.vue2.js","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div\n class=\"dropdown pos-relative\"\n v-click-outside=\"clickedOutside\"\n @click.stop=\"trigger === 'click' ? (isOpen = !isOpen) : null\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <slot name=\"label\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n </slot>\n <Transition name=\"dropdown\">\n <div\n v-if=\"isOpen\"\n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\"\n class=\"dropdown-content\"\n >\n <slot></slot>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside.js';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n },\n trigger: {\n type: String,\n default: 'click'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nlet closeTimeout = null;\n\nfunction handleMouseEnter() {\n if (props.trigger === 'hover') {\n clearTimeout(closeTimeout);\n isOpen.value = true;\n }\n}\n\nfunction handleMouseLeave() {\n if (props.trigger === 'hover') {\n closeTimeout = setTimeout(() => {\n isOpen.value = false;\n }, 100);\n }\n}\n\nfunction clickedOutside() {\n if (props.trigger === 'click') {\n isOpen.value = false;\n }\n}\n</script>\n\n<style>\n.dropdown-content {\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 100;\n border-radius: var(--small);\n transform-origin: top left;\n backdrop-filter: blur(var(--small));\n -webkit-backdrop-filter: blur(var(--small));\n background: rgba(var(--white), 0.5);\n}\n\n.dropdown-enter-active,\n.dropdown-leave-active {\n transition: transform 0.33s cubic-bezier(0.9, 0, 0.1, 1), opacity 0.15s ease;\n}\n\n.dropdown-enter-from,\n.dropdown-leave-to {\n opacity: 0.01;\n transform: translateY(-4px) scale(0.8);\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,QAAI,gBAAgB;AAEpB,UAAM,QAAQ;AAed,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,mBAAmB,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,QAAI,eAAe;AAEnB,aAAS,mBAAmB;AAC1B,UAAI,MAAM,YAAY,SAAS;AAC7B,qBAAa,YAAY;AACzB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAEA,aAAS,mBAAmB;AAC1B,UAAI,MAAM,YAAY,SAAS;AAC7B,uBAAe,WAAW,MAAM;AAC9B,iBAAO,QAAQ;AAAA,QACjB,GAAG,GAAG;AAAA,MACR;AAAA,IACF;AAEA,aAAS,iBAAiB;AACxB,UAAI,MAAM,YAAY,SAAS;AAC7B,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createBlock, createVNode, normalizeClass, unref, withCtx, Fragment, renderList, Transition, renderSlot } from "vue";
|
|
2
2
|
import { useI18n } from "vue-i18n";
|
|
3
3
|
import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
|
|
4
|
-
import Loader from "../Loader/Loader.
|
|
4
|
+
import Loader from "../Loader/Loader.vue2.js";
|
|
5
5
|
import _sfc_main$2 from "../Slider/Slider.vue.js";
|
|
6
6
|
import _sfc_main$1 from "../EmptyState/EmptyState.vue.js";
|
|
7
7
|
/* empty css */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { mergeModels, useModel, ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, Fragment, createCommentVNode, createBlock, normalizeClass, withCtx, createVNode, renderList, resolveDynamicComponent, unref, TransitionGroup, renderSlot } from "vue";
|
|
2
2
|
import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
|
|
3
|
-
import Loader from "../Loader/Loader.
|
|
3
|
+
import Loader from "../Loader/Loader.vue2.js";
|
|
4
4
|
import Skeleton from "../Skeleton/Skeleton.vue2.js";
|
|
5
5
|
import _sfc_main$6 from "../EmptyState/EmptyState.vue.js";
|
|
6
|
-
import _sfc_main$2 from "../Dropdown/Dropdown.
|
|
6
|
+
import _sfc_main$2 from "../Dropdown/Dropdown.vue2.js";
|
|
7
7
|
import Calendar from "../Calendar/Calendar.vue2.js";
|
|
8
8
|
import _sfc_main$1 from "../../modules/core/views/components/blocks/BlockSearch.vue.js";
|
|
9
9
|
import _sfc_main$5 from "../../modules/core/views/components/blocks/BlockSorting.vue.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, onMounted, watchEffect, createBlock, openBlock, unref, isRef, withCtx, renderSlot, createVNode, createElementBlock, createCommentVNode, toDisplayString } from "vue";
|
|
2
2
|
import Field from "../Field/Field.vue.js";
|
|
3
|
-
import _sfc_main$1 from "../Button/Button.
|
|
3
|
+
import _sfc_main$1 from "../Button/Button.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../../modules/icons/navigation/IconArrow.vue.js";
|
|
5
5
|
import { useI18n } from "vue-i18n";
|
|
6
6
|
const _hoisted_1 = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, toDisplayString } from "vue";
|
|
2
|
-
/* empty css
|
|
2
|
+
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
4
|
const _sfc_main = {
|
|
5
5
|
props: {
|
|
@@ -57,4 +57,4 @@ const Loader = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]])
|
|
|
57
57
|
export {
|
|
58
58
|
Loader as default
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=Loader.
|
|
60
|
+
//# sourceMappingURL=Loader.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.vue2.js","sources":["../../../../../src/components/Loader/Loader.vue"],"sourcesContent":["<template>\n <div class=\"circular-loader z-index-1 w-100 h-100 w-max-2r h-max-2r\" :class=\"{ 'circular-loader-centered': centered }\">\n <svg viewBox=\"25 25 50 50\">\n <circle class=\"circular-loader-fill\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n <circle class=\"circular-loader-circle\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n </svg>\n <div v-if=\"progress\" class=\"progress-text\">{{ progress }}</div>\n <div v-if=\"status\" class=\"uppercase fw-semi w-m-10r status-text\">{{ status }}</div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n progress: {\n type: Number,\n default: null,\n },\n status: {\n type: String,\n default: null,\n },\n centered: {\n type: Boolean,\n default: false\n },\n },\n};\n</script>\n\n<style>\n.circular-loader-centered {\n top: calc(50% - 1rem);\n left: calc(50% - 1rem);\n}\n\n.circular-loader svg {\n animation: rotate 2s linear infinite;\n}\n\n.circular-loader-circle {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n stroke-linecap: round;\n stroke: rgb(var(--main));\n animation: dash 1.5s ease-in-out infinite;\n}\n\n.circular-loader-fill {\n stroke-linecap: round;\n stroke: rgba(var(--black),0.2);\n}\n\n.progress-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 0.8rem;\n color: rgb(var(--main));;\n}\n\n.status-text {\n position: absolute;\n top: 120%;\n left: calc(50% - 5rem);\n font-size: 0.8rem;\n width: 10rem !important;\n text-align: center;\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: -124;\n }\n}\n</style>"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode"],"mappings":";;;AAYA,MAAK,YAAU;AAAA,EACb,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;AAGf;;EA3BA,KAAA;AAAA,EAMyB,OAAM;;;EAN/B,KAAA;AAAA,EAOuB,OAAM;;;sBAN3BA,mBAOM,OAAA;AAAA,IAPD,OADPC,eAAA,CACa,2DAAyD,EAAA,4BAAuC,OAAA,UAAQ,CAAA;AAAA;8BACjHC,mBAGM,OAAA,EAHD,SAAQ,iBAAa;AAAA,MACxBA,mBAAkH,UAAA;AAAA,QAA1G,OAAM;AAAA,QAAuB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;MAC3GA,mBAAoH,UAAA;AAAA,QAA5G,OAAM;AAAA,QAAyB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;;IAEpG,OAAA,yBAAXF,mBAA+D,OAA/D,YAA+DG,gBAAjB,OAAA,QAAQ,GAAA,CAAA,KAN1DC,mBAAA,IAAA,IAAA;AAAA,IAOe,OAAA,uBAAXJ,mBAAmF,OAAnF,YAAmFG,gBAAf,OAAA,MAAM,GAAA,CAAA,KAP9EC,mBAAA,IAAA,IAAA;AAAA;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, onMounted, watchEffect, createElementBlock, openBlock, createElementVNode, createVNode, Transition, withCtx, createBlock } from "vue";
|
|
2
2
|
import { Loader } from "../../../../node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js";
|
|
3
|
-
import Loader$1 from "../Loader/Loader.
|
|
3
|
+
import Loader$1 from "../Loader/Loader.vue2.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
const _hoisted_1 = { class: "pos-relative" };
|
|
6
6
|
const _hoisted_2 = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, computed, onMounted, onUnmounted, createElementBlock, openBlock, createCommentVNode, mergeProps, createElementVNode, createVNode } from "vue";
|
|
2
|
-
import Loader from "../Loader/Loader.
|
|
2
|
+
import Loader from "../Loader/Loader.vue2.js";
|
|
3
3
|
import _sfc_main$1 from "../../modules/icons/entities/IconGallery.vue.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, renderSlot } from "vue";
|
|
2
|
-
/* empty css
|
|
2
|
+
/* empty css */
|
|
3
3
|
const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
|
|
4
4
|
const _sfc_main = {
|
|
5
5
|
__name: "Menu",
|
|
@@ -14,4 +14,4 @@ const _sfc_main = {
|
|
|
14
14
|
export {
|
|
15
15
|
_sfc_main as default
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=Menu.
|
|
17
|
+
//# sourceMappingURL=Menu.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, computed, watch, createElementBlock, openBlock, Fragment, withDirectives, createVNode, normalizeClass, withModifiers, createCommentVNode, createElementVNode, toDisplayString, Transition, withCtx, renderList, vShow, unref, nextTick } from "vue";
|
|
2
2
|
import clickOutside from "../FieldPhone/click-outside.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
5
|
const _hoisted_1 = {
|
|
6
6
|
key: 0,
|
|
@@ -131,4 +131,4 @@ const Select = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-af5
|
|
|
131
131
|
export {
|
|
132
132
|
Select as default
|
|
133
133
|
};
|
|
134
|
-
//# sourceMappingURL=Select.
|
|
134
|
+
//# sourceMappingURL=Select.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.vue2.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"t-transp mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover:bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, computed, watch, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, withModifiers, createVNode, toDisplayString } from "vue";
|
|
2
2
|
import axios from "axios";
|
|
3
|
-
import Loader from "../Loader/Loader.
|
|
3
|
+
import Loader from "../Loader/Loader.vue2.js";
|
|
4
4
|
import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../modules/icons/navigation/IconDelete.vue.js";
|
|
6
6
|
/* empty css */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, createElementBlock, openBlock, withModifiers, createVNode, createElementVNode, Transition, withCtx, createBlock, createCommentVNode, toDisplayString } from "vue";
|
|
2
2
|
import axios from "axios";
|
|
3
|
-
import Loader from "../Loader/Loader.
|
|
3
|
+
import Loader from "../Loader/Loader.vue2.js";
|
|
4
4
|
import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
|
|
5
5
|
import { useStore } from "../../modules/core/views/store/core.store.js";
|
|
6
6
|
const _hoisted_1 = {
|
|
@@ -32,7 +32,8 @@ const en = {
|
|
|
32
32
|
emailNotice: "We will send you an email with a confirmation code that you will need to enter in the next step.",
|
|
33
33
|
smsNotice: "We will send you an SMS with a confirmation code that you will need to enter in the next step.",
|
|
34
34
|
sendCode: "Send Code",
|
|
35
|
-
haveAccount: "Already have an account?"
|
|
35
|
+
haveAccount: "Already have an account?",
|
|
36
|
+
agreement: "By registering, you agree to our <a href='/legal/eula' target='_blank'>End User License Agreement (EULA)</a>"
|
|
36
37
|
},
|
|
37
38
|
enterCode: {
|
|
38
39
|
verifyNumberTitle: "Verify Number",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sources":["../../../../../../src/modules/auth/locales/en.js"],"sourcesContent":["// @martyrs/src/modules/auth/locales/en.js\nexport default {\n auth: {\n popup: {\n title: \"Welcome\",\n subtitle: \"Please sign in or create an account to continue.\",\n signUp: \"Sign Up\",\n haveAccount: \"Already have an account?\",\n signIn: \"Sign in\"\n },\n signIn: {\n title: \"Welcome to OZ DAO,\",\n subtitle: \"Sign In to Continue\",\n signup: \"Don't have an account?\",\n phone: \"Phone\",\n email: \"Email\",\n phonePlaceholder: \"Enter your phone\",\n emailPlaceholder: \"Enter your email\",\n haveAccount: \"Don't have an account? Sign Up\",\n passwordPlaceholder: \"Enter your password\",\n forgotPassword: \"Forgot Password?\",\n signin: \"Sign In\",\n signin_apple: \"Sign In with Apple\",\n soon: \"SOON\"\n },\n signUp: {\n title: \"Sign Up\",\n description: \"Choose a convenient way to register via phone or email:\",\n phone: \"Phone\",\n email: \"Email\",\n phonePlaceholder: \"Enter your phone\",\n emailPlaceholder: \"Enter your email\",\n emailNotice: \"We will send you an email with a confirmation code that you will need to enter in the next step.\",\n smsNotice: \"We will send you an SMS with a confirmation code that you will need to enter in the next step.\",\n sendCode: \"Send Code\",\n haveAccount: \"Already have an account?\"\n },\n enterCode: {\n verifyNumberTitle: \"Verify Number\",\n instructions: \"We have sent a registration code to your phone number. Please enter it in the field below:\",\n resendCode: \"Send the code again\",\n secondsResend: \"seconds to the possibility of sending the code again.\"\n },\n resetPassword: {\n forgotPasswordTitle: \"Forgot Password?\",\n instructions: \"To reset your password, specify the phone or email used during registration.\",\n smsInfo: \"We will send you an SMS with a confirmation code to reset your password, which you will need to enter in the next step.\",\n emailInfo: \"We will send you an email with a confirmation code to reset your password, which you will need to enter in the next step.\",\n phone: \"Phone\",\n email: \"Email\",\n phonePlaceholder: \"Enter your phone\",\n emailPlaceholder: \"Enter your email\",\n sendCode: \"Send code\"\n },\n enterPassword: {\n almostDone: \"Almost there!\",\n newPasswordPrompt: \"Please, set a new password.\",\n registrationPasswordPrompt: \"Please, set your password to complete the registration.\",\n passwordPlaceholder: \"Password\",\n repeatPasswordPlaceholder: \"Repeat Password\",\n changePasswordBtn: \"Change Password\",\n registerBtn: \"Register\"\n },\n features: [\n {\n title: \"What's the Weeder Token, Dude?\",\n description: \"WDT is like, the backbone of our rad community. It's cash, it's power, it's an investment. Groovy, right?\"\n },\n {\n title: \"Light Up and Level Up\",\n description: \"Order up, light up, and earn Weeder tokens. More tokes, more cash in your pocket, man.\"\n },\n {\n title: \"Hang Ten with Our Community\",\n description: \"Find the dopest strains and start floating on cloud 9 with us!\"\n },\n {\n title: \"Shop 'Til You Drop... Into Your Couch\",\n description: \"Score primo bud and gear with just a few clicks. Delivered right to your pad!\"\n }\n ]\n }\n};"],"names":[],"mappings":"AACA,MAAA,KAAe;AAAA,EACb,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,MAAM;AAAA,IACZ;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,
|
|
1
|
+
{"version":3,"file":"en.js","sources":["../../../../../../src/modules/auth/locales/en.js"],"sourcesContent":["// @martyrs/src/modules/auth/locales/en.js\nexport default {\n auth: {\n popup: {\n title: \"Welcome\",\n subtitle: \"Please sign in or create an account to continue.\",\n signUp: \"Sign Up\",\n haveAccount: \"Already have an account?\",\n signIn: \"Sign in\"\n },\n signIn: {\n title: \"Welcome to OZ DAO,\",\n subtitle: \"Sign In to Continue\",\n signup: \"Don't have an account?\",\n phone: \"Phone\",\n email: \"Email\",\n phonePlaceholder: \"Enter your phone\",\n emailPlaceholder: \"Enter your email\",\n haveAccount: \"Don't have an account? Sign Up\",\n passwordPlaceholder: \"Enter your password\",\n forgotPassword: \"Forgot Password?\",\n signin: \"Sign In\",\n signin_apple: \"Sign In with Apple\",\n soon: \"SOON\"\n },\n signUp: {\n title: \"Sign Up\",\n description: \"Choose a convenient way to register via phone or email:\",\n phone: \"Phone\",\n email: \"Email\",\n phonePlaceholder: \"Enter your phone\",\n emailPlaceholder: \"Enter your email\",\n emailNotice: \"We will send you an email with a confirmation code that you will need to enter in the next step.\",\n smsNotice: \"We will send you an SMS with a confirmation code that you will need to enter in the next step.\",\n sendCode: \"Send Code\",\n haveAccount: \"Already have an account?\",\n agreement: \"By registering, you agree to our <a href='/legal/eula' target='_blank'>End User License Agreement (EULA)</a>\"\n },\n enterCode: {\n verifyNumberTitle: \"Verify Number\",\n instructions: \"We have sent a registration code to your phone number. Please enter it in the field below:\",\n resendCode: \"Send the code again\",\n secondsResend: \"seconds to the possibility of sending the code again.\"\n },\n resetPassword: {\n forgotPasswordTitle: \"Forgot Password?\",\n instructions: \"To reset your password, specify the phone or email used during registration.\",\n smsInfo: \"We will send you an SMS with a confirmation code to reset your password, which you will need to enter in the next step.\",\n emailInfo: \"We will send you an email with a confirmation code to reset your password, which you will need to enter in the next step.\",\n phone: \"Phone\",\n email: \"Email\",\n phonePlaceholder: \"Enter your phone\",\n emailPlaceholder: \"Enter your email\",\n sendCode: \"Send code\"\n },\n enterPassword: {\n almostDone: \"Almost there!\",\n newPasswordPrompt: \"Please, set a new password.\",\n registrationPasswordPrompt: \"Please, set your password to complete the registration.\",\n passwordPlaceholder: \"Password\",\n repeatPasswordPlaceholder: \"Repeat Password\",\n changePasswordBtn: \"Change Password\",\n registerBtn: \"Register\"\n },\n features: [\n {\n title: \"What's the Weeder Token, Dude?\",\n description: \"WDT is like, the backbone of our rad community. It's cash, it's power, it's an investment. Groovy, right?\"\n },\n {\n title: \"Light Up and Level Up\",\n description: \"Order up, light up, and earn Weeder tokens. More tokes, more cash in your pocket, man.\"\n },\n {\n title: \"Hang Ten with Our Community\",\n description: \"Find the dopest strains and start floating on cloud 9 with us!\"\n },\n {\n title: \"Shop 'Til You Drop... Into Your Couch\",\n description: \"Score primo bud and gear with just a few clicks. Delivered right to your pad!\"\n }\n ]\n }\n};"],"names":[],"mappings":"AACA,MAAA,KAAe;AAAA,EACb,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,MAAM;AAAA,IACZ;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,MACb,WAAW;AAAA,IACjB;AAAA,IACI,WAAW;AAAA,MACT,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,eAAe;AAAA,IACrB;AAAA,IACI,eAAe;AAAA,MACb,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,IAChB;AAAA,IACI,eAAe;AAAA,MACb,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,4BAA4B;AAAA,MAC5B,qBAAqB;AAAA,MACrB,2BAA2B;AAAA,MAC3B,mBAAmB;AAAA,MACnB,aAAa;AAAA,IACnB;AAAA,IACI,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,IACA;AAAA,EACA;AACA;"}
|
|
@@ -32,7 +32,8 @@ const ru = {
|
|
|
32
32
|
emailNotice: "Мы отправим вам электронное письмо с кодом подтверждения, который вы должны будете ввести в следующем шаге.",
|
|
33
33
|
smsNotice: "Мы вышлем вам SMS с кодом подтверждения, который вы должны будете ввести в следующем шаге.",
|
|
34
34
|
sendCode: "Отправить код",
|
|
35
|
-
haveAccount: "У вас уже есть аккаунт?"
|
|
35
|
+
haveAccount: "У вас уже есть аккаунт?",
|
|
36
|
+
agreement: "Регистрируясь, вы соглашаетесь с <a href='/legal/eula' target='_blank'>Пользовательским соглашением (EULA)</a>"
|
|
36
37
|
},
|
|
37
38
|
enterCode: {
|
|
38
39
|
verifyNumberTitle: "Подтвердите номер",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ru.js","sources":["../../../../../../src/modules/auth/locales/ru.js"],"sourcesContent":["// @martyrs/src/modules/auth/locales/ru.js\nexport default {\n auth: {\n popup: {\n title: \"Добро пожаловать\",\n subtitle: \"Войдите или создайте аккаунт для продолжения.\",\n signUp: \"Регистрация\",\n haveAccount: \"Уже есть аккаунт?\",\n signIn: \"Войти\"\n },\n signIn: {\n title: \"Приветствуем вас,\",\n subtitle: \"Войдите для продолжения\",\n signup: \"Нет аккаунта?\",\n phone: \"Телефон\",\n email: \"Email\",\n phonePlaceholder: \"Введите ваш телефон\",\n emailPlaceholder: \"Введите ваш email\",\n haveAccount: \"Нет аккаунта? Зарегистрироваться\",\n passwordPlaceholder: \"Введите ваш пароль\",\n forgotPassword: \"Забыли пароль?\",\n signin: \"Войти\",\n signin_apple: \"Войти через Apple\",\n soon: \"СКОРО\"\n },\n signUp: {\n title: \"Новая учетная запись\",\n description: \"Выберите удобный способ регистрации через телефон или email:\",\n phone: \"Телефон\",\n email: \"Email\",\n phonePlaceholder: \"Введите ваш телефон\",\n emailPlaceholder: \"Введите ваш email\",\n emailNotice: \"Мы отправим вам электронное письмо с кодом подтверждения, который вы должны будете ввести в следующем шаге.\",\n smsNotice: \"Мы вышлем вам SMS с кодом подтверждения, который вы должны будете ввести в следующем шаге.\",\n sendCode: \"Отправить код\",\n haveAccount: \"У вас уже есть аккаунт?\"\n },\n enterCode: {\n verifyNumberTitle: \"Подтвердите номер\",\n verifyEmailTitle: \"Подтвердите email\",\n instructions: \"Мы отправили код регистрации на ваш номер телефона. Введите его в поле ниже:\",\n instructionsEmail: \"Мы отправили код регистрации на ваш email. Введите его в поле ниже:\",\n resendCode: \"Отправить код еще раз\",\n secondsResend: \"секунд до возможности отправить код еще раз.\"\n },\n resetPassword: {\n forgotPasswordTitle: \"Забыли пароль?\",\n instructions: \"Чтобы сбросить пароль, укажите телефон или email, использованные при регистрации.\",\n smsInfo: \"Мы вышлем вам SMS с кодом подтверждения для сброса пароля, который вы должны будете ввести в следующем шаге.\",\n emailInfo: \"Мы отправим вам электронное письмо с кодом подтверждения для сброса пароля, который вы должны будете ввести в следующем шаге.\",\n phone: \"Телефон\",\n email: \"Email\",\n phonePlaceholder: \"Введите ваш телефон\",\n emailPlaceholder: \"Введите ваш email\",\n sendCode: \"Отправить код\"\n },\n enterPassword: {\n almostDone: \"Почти все!\",\n newPasswordPrompt: \"Пожалуйста, укажите новый пароль.\",\n registrationPasswordPrompt: \"Пожалуйста, укажите пароль, на этом регистрация будет закончена.\",\n passwordPlaceholder: \"Пароль\",\n repeatPasswordPlaceholder: \"Повторите пароль\",\n changePasswordBtn: \"Поменять пароль\",\n registerBtn: \"Зарегистрироваться\"\n },\n features: [\n {\n title: \"Что такое токен Weeder, Бро?\",\n description: \"WDT - это как основа нашего крутого сообщества. Это деньги, это власть, это инвестиции. Круто, а?\"\n },\n {\n title: \"Зажигай и Развивайся\",\n description: \"Закажи шмали, курни и зарабатывай токены Weeder. Чем больше курнешь, тем больше кэша у тебя в кармане, чувак.\"\n },\n {\n title: \"Веселись с Нашим Сообществом\",\n description: \"Найди самые крутые сорта и начни шмалить на девятом облаке вместе с нами.\"\n },\n {\n title: \"Покупайте, Когда Накурились\",\n description: \"Закажи премиумную бошку и крутые аксессуары за пару кликов, чувак. Прямо к твоей двери!\"\n }\n ]\n }\n};"],"names":[],"mappings":"AACA,MAAA,KAAe;AAAA,EACb,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,MAAM;AAAA,IACZ;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,
|
|
1
|
+
{"version":3,"file":"ru.js","sources":["../../../../../../src/modules/auth/locales/ru.js"],"sourcesContent":["// @martyrs/src/modules/auth/locales/ru.js\nexport default {\n auth: {\n popup: {\n title: \"Добро пожаловать\",\n subtitle: \"Войдите или создайте аккаунт для продолжения.\",\n signUp: \"Регистрация\",\n haveAccount: \"Уже есть аккаунт?\",\n signIn: \"Войти\"\n },\n signIn: {\n title: \"Приветствуем вас,\",\n subtitle: \"Войдите для продолжения\",\n signup: \"Нет аккаунта?\",\n phone: \"Телефон\",\n email: \"Email\",\n phonePlaceholder: \"Введите ваш телефон\",\n emailPlaceholder: \"Введите ваш email\",\n haveAccount: \"Нет аккаунта? Зарегистрироваться\",\n passwordPlaceholder: \"Введите ваш пароль\",\n forgotPassword: \"Забыли пароль?\",\n signin: \"Войти\",\n signin_apple: \"Войти через Apple\",\n soon: \"СКОРО\"\n },\n signUp: {\n title: \"Новая учетная запись\",\n description: \"Выберите удобный способ регистрации через телефон или email:\",\n phone: \"Телефон\",\n email: \"Email\",\n phonePlaceholder: \"Введите ваш телефон\",\n emailPlaceholder: \"Введите ваш email\",\n emailNotice: \"Мы отправим вам электронное письмо с кодом подтверждения, который вы должны будете ввести в следующем шаге.\",\n smsNotice: \"Мы вышлем вам SMS с кодом подтверждения, который вы должны будете ввести в следующем шаге.\",\n sendCode: \"Отправить код\",\n haveAccount: \"У вас уже есть аккаунт?\",\n agreement: \"Регистрируясь, вы соглашаетесь с <a href='/legal/eula' target='_blank'>Пользовательским соглашением (EULA)</a>\"\n },\n enterCode: {\n verifyNumberTitle: \"Подтвердите номер\",\n verifyEmailTitle: \"Подтвердите email\",\n instructions: \"Мы отправили код регистрации на ваш номер телефона. Введите его в поле ниже:\",\n instructionsEmail: \"Мы отправили код регистрации на ваш email. Введите его в поле ниже:\",\n resendCode: \"Отправить код еще раз\",\n secondsResend: \"секунд до возможности отправить код еще раз.\"\n },\n resetPassword: {\n forgotPasswordTitle: \"Забыли пароль?\",\n instructions: \"Чтобы сбросить пароль, укажите телефон или email, использованные при регистрации.\",\n smsInfo: \"Мы вышлем вам SMS с кодом подтверждения для сброса пароля, который вы должны будете ввести в следующем шаге.\",\n emailInfo: \"Мы отправим вам электронное письмо с кодом подтверждения для сброса пароля, который вы должны будете ввести в следующем шаге.\",\n phone: \"Телефон\",\n email: \"Email\",\n phonePlaceholder: \"Введите ваш телефон\",\n emailPlaceholder: \"Введите ваш email\",\n sendCode: \"Отправить код\"\n },\n enterPassword: {\n almostDone: \"Почти все!\",\n newPasswordPrompt: \"Пожалуйста, укажите новый пароль.\",\n registrationPasswordPrompt: \"Пожалуйста, укажите пароль, на этом регистрация будет закончена.\",\n passwordPlaceholder: \"Пароль\",\n repeatPasswordPlaceholder: \"Повторите пароль\",\n changePasswordBtn: \"Поменять пароль\",\n registerBtn: \"Зарегистрироваться\"\n },\n features: [\n {\n title: \"Что такое токен Weeder, Бро?\",\n description: \"WDT - это как основа нашего крутого сообщества. Это деньги, это власть, это инвестиции. Круто, а?\"\n },\n {\n title: \"Зажигай и Развивайся\",\n description: \"Закажи шмали, курни и зарабатывай токены Weeder. Чем больше курнешь, тем больше кэша у тебя в кармане, чувак.\"\n },\n {\n title: \"Веселись с Нашим Сообществом\",\n description: \"Найди самые крутые сорта и начни шмалить на девятом облаке вместе с нами.\"\n },\n {\n title: \"Покупайте, Когда Накурились\",\n description: \"Закажи премиумную бошку и крутые аксессуары за пару кликов, чувак. Прямо к твоей двери!\"\n }\n ]\n }\n};"],"names":[],"mappings":"AACA,MAAA,KAAe;AAAA,EACb,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,MAAM;AAAA,IACZ;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,MACb,WAAW;AAAA,IACjB;AAAA,IACI,WAAW;AAAA,MACT,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,eAAe;AAAA,IACrB;AAAA,IACI,eAAe;AAAA,MACb,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,IAChB;AAAA,IACI,eAAe;AAAA,MACb,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,4BAA4B;AAAA,MAC5B,qBAAqB;AAAA,MACrB,2BAA2B;AAAA,MAC3B,mBAAmB;AAAA,MACnB,aAAa;AAAA,IACnB;AAAA,IACI,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,MACrB;AAAA,IACA;AAAA,EACA;AACA;"}
|
|
@@ -2,7 +2,7 @@ import { createBlock, openBlock, withCtx, createElementVNode, toDisplayString, u
|
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
3
|
import { useI18n } from "vue-i18n";
|
|
4
4
|
import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
|
|
5
|
-
import _sfc_main$2 from "../../../../../components/Button/Button.
|
|
5
|
+
import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
|
|
6
6
|
const _hoisted_1 = { class: "t-center" };
|
|
7
7
|
const _hoisted_2 = { class: "mn-b-medium" };
|
|
8
8
|
const _hoisted_3 = { class: "mn-b-semi t-transp" };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, withCtx } from "vue";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import Field from "../../../../../components/Field/Field.vue.js";
|
|
4
|
-
import _sfc_main$1 from "../../../../../components/Button/Button.
|
|
4
|
+
import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
|
|
5
5
|
import { useRoute, useRouter } from "vue-router";
|
|
6
6
|
import { state, actions } from "../../store/auth.js";
|
|
7
7
|
import invitesStore from "../../../../organizations/store/invites.store.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ref, onServerPrefetch, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, createCommentVNode, unref, withCtx, toDisplayString, Fragment, renderList, normalizeClass, resolveDynamicComponent } from "vue";
|
|
2
2
|
/* empty css */
|
|
3
|
-
/* empty css
|
|
4
|
-
import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.
|
|
5
|
-
import _sfc_main$7 from "../../../../../components/Menu/Menu.
|
|
3
|
+
/* empty css */
|
|
4
|
+
import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue2.js";
|
|
5
|
+
import _sfc_main$7 from "../../../../../components/Menu/Menu.vue2.js";
|
|
6
6
|
import _sfc_main$c from "../../../../../components/Menu/MenuItem.vue.js";
|
|
7
7
|
import _sfc_main$3 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
|
|
8
8
|
import _sfc_main$2 from "../../../../reports/components/sections/FormReport.vue.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, onMounted, provide, resolveComponent, createBlock, openBlock, withCtx, createElementBlock, createVNode } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
|
|
3
|
-
import Loader from "../../../../../components/Loader/Loader.
|
|
3
|
+
import Loader from "../../../../../components/Loader/Loader.vue2.js";
|
|
4
4
|
import _sfc_main$2 from "./ProfileEditSidebar.vue.js";
|
|
5
5
|
import { useRoute, useRouter } from "vue-router";
|
|
6
6
|
import { state } from "../../store/auth.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, withCtx, createTextVNode, unref } from "vue";
|
|
2
2
|
import _sfc_main$3 from "../../../../../components/Checkbox/Checkbox.vue.js";
|
|
3
|
-
import _sfc_main$2 from "../../../../../components/Button/Button.
|
|
3
|
+
import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
|
|
4
4
|
import Field from "../../../../../components/Field/Field.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
|
|
6
6
|
import { useRouter } from "vue-router";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
|
|
2
2
|
import Field from "../../../../../components/Field/Field.vue.js";
|
|
3
|
-
import _sfc_main$1 from "../../../../../components/Button/Button.
|
|
3
|
+
import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
|
|
4
4
|
import UploadImage from "../../../../../components/UploadImage/UploadImage.vue.js";
|
|
5
5
|
import { useRouter } from "vue-router";
|
|
6
6
|
import { state, actions } from "../../store/users.js";
|
|
@@ -2,7 +2,7 @@ import { ref, computed, createElementBlock, openBlock, createElementVNode, creat
|
|
|
2
2
|
import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
|
|
3
3
|
import Field from "../../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
|
|
5
|
-
import _sfc_main$3 from "../../../../../components/Button/Button.
|
|
5
|
+
import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { useRouter } from "vue-router";
|
|
7
7
|
import { useI18n } from "vue-i18n";
|
|
8
8
|
import { useStore, setError } from "../../../../core/views/store/core.store.js";
|
|
@@ -2,7 +2,7 @@ import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlo
|
|
|
2
2
|
import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
|
|
3
3
|
import Field from "../../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
|
|
5
|
-
import _sfc_main$3 from "../../../../../components/Button/Button.
|
|
5
|
+
import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { useRoute, useRouter } from "vue-router";
|
|
7
7
|
import { useI18n } from "vue-i18n";
|
|
8
8
|
import { useStore } from "../../../../core/views/store/core.store.js";
|
|
@@ -2,7 +2,7 @@ import { ref, computed, resolveComponent, createElementBlock, openBlock, createE
|
|
|
2
2
|
import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
|
|
3
3
|
import Field from "../../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
|
|
5
|
-
import _sfc_main$3 from "../../../../../components/Button/Button.
|
|
5
|
+
import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { useRoute, useRouter } from "vue-router";
|
|
7
7
|
import { useI18n } from "vue-i18n";
|
|
8
8
|
import { useStore, setError } from "../../../../core/views/store/core.store.js";
|
|
@@ -22,7 +22,8 @@ const _hoisted_6 = { class: "mn-b-small t-transp" };
|
|
|
22
22
|
const _hoisted_7 = { class: "mn-b-semi radius-small o-hidden" };
|
|
23
23
|
const _hoisted_8 = { class: "mn-b-small t-transp" };
|
|
24
24
|
const _hoisted_9 = { class: "mn-b-semi" };
|
|
25
|
-
const _hoisted_10 =
|
|
25
|
+
const _hoisted_10 = ["innerHTML"];
|
|
26
|
+
const _hoisted_11 = { class: "w-100" };
|
|
26
27
|
const _sfc_main = {
|
|
27
28
|
__name: "SignUp",
|
|
28
29
|
setup(__props) {
|
|
@@ -171,15 +172,10 @@ const _sfc_main = {
|
|
|
171
172
|
class: "bg-light pd-small radius-small"
|
|
172
173
|
}, null, 8, ["field", "placeholder"])
|
|
173
174
|
]),
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
href: "/legal/eula",
|
|
179
|
-
target: "_blank",
|
|
180
|
-
rel: "noopener noreferrer"
|
|
181
|
-
}, "End User License Agreement (EULA)")
|
|
182
|
-
], -1)),
|
|
175
|
+
createElementVNode("div", {
|
|
176
|
+
class: "p-regular fw-semi mn-b-semi",
|
|
177
|
+
innerHTML: unref(t)("auth.signUp.agreement")
|
|
178
|
+
}, null, 8, _hoisted_10),
|
|
183
179
|
createVNode(_sfc_main$3, {
|
|
184
180
|
submit: onSubmit,
|
|
185
181
|
class: "w-100 bg-main mn-b-big"
|
|
@@ -189,7 +185,7 @@ const _sfc_main = {
|
|
|
189
185
|
]),
|
|
190
186
|
_: 1
|
|
191
187
|
}),
|
|
192
|
-
createElementVNode("div",
|
|
188
|
+
createElementVNode("div", _hoisted_11, [
|
|
193
189
|
createVNode(_component_router_link, {
|
|
194
190
|
to: { name: "Sign In", query: { returnUrl: unref(route).query.returnUrl } },
|
|
195
191
|
class: "underline mn-b-medium d-block t-blue"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignUp.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/SignUp.vue"],"sourcesContent":["<template>\n <section class=\"t-left pd-medium\">\n <h3 class=\"mn-b-small\">{{ t('auth.signUp.title') }}</h3>\n\n <!-- Tab selector -->\n <div\n v-if=\"availableTabs.length > 1\"\n class=\"mn-b-small p-small uppercase fw-semi bg-light radius-small o-hidden\"\n >\n <Tab\n v-model:selected=\"tabAuth\"\n :tabs=\"availableTabs\"\n classTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n />\n </div>\n\n <!-- Form -->\n <div class=\"pos-relative\">\n <!-- Phone -->\n <transition name=\"slide-fade\">\n <div v-show=\"tabAuth === 'phone'\" class=\"mn-b-semi radius-small\">\n <p class=\"mn-b-small t-transp\">{{ t('auth.signUp.smsNotice') }}</p>\n <FieldPhone\n @change=\"(event) => phone = event\"\n :dropdownOptions=\"{\n showDialCodeInSelection: true,\n showFlags: true,\n showDialCodeInList: true\n }\"\n :validation=\"phoneValidation\"\n mode=\"national\"\n :inputOptions=\"{ placeholder: t('auth.signUp.phonePlaceholder') }\"\n class=\"bg-light h-4r pd-small radius-small mn-b-thin\"\n />\n </div>\n </transition>\n <!-- Email -->\n <transition name=\"slide-fade\">\n <div v-show=\"tabAuth === 'email'\" class=\"mn-b-semi radius-small o-hidden\">\n <p class=\"mn-b-small t-transp\">{{ t('auth.signUp.emailNotice') }}</p>\n <Field\n v-model:field=\"email\"\n :placeholder=\"t('auth.signUp.emailPlaceholder')\"\n :validation=\"emailValidation\"\n class=\"bg-light h-4r pd-medium radius-small\"\n />\n </div>\n </transition>\n </div>\n\n <!-- Password fields -->\n <div class=\"mn-b-semi\">\n <Field\n v-model:field=\"password\"\n type=\"password\"\n :placeholder=\"t('auth.enterPassword.passwordPlaceholder')\"\n :validation=\"passwordValidation\"\n class=\"bg-light pd-small radius-small mn-b-thin\"\n />\n <Field\n v-model:field=\"passwordRepeat\"\n type=\"password\"\n :placeholder=\"t('auth.enterPassword.repeatPasswordPlaceholder')\"\n class=\"bg-light pd-small radius-small\"\n />\n </div>\n\n <!--
|
|
1
|
+
{"version":3,"file":"SignUp.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/SignUp.vue"],"sourcesContent":["<template>\n <section class=\"t-left pd-medium\">\n <h3 class=\"mn-b-small\">{{ t('auth.signUp.title') }}</h3>\n\n <!-- Tab selector -->\n <div\n v-if=\"availableTabs.length > 1\"\n class=\"mn-b-small p-small uppercase fw-semi bg-light radius-small o-hidden\"\n >\n <Tab\n v-model:selected=\"tabAuth\"\n :tabs=\"availableTabs\"\n classTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n />\n </div>\n\n <!-- Form -->\n <div class=\"pos-relative\">\n <!-- Phone -->\n <transition name=\"slide-fade\">\n <div v-show=\"tabAuth === 'phone'\" class=\"mn-b-semi radius-small\">\n <p class=\"mn-b-small t-transp\">{{ t('auth.signUp.smsNotice') }}</p>\n <FieldPhone\n @change=\"(event) => phone = event\"\n :dropdownOptions=\"{\n showDialCodeInSelection: true,\n showFlags: true,\n showDialCodeInList: true\n }\"\n :validation=\"phoneValidation\"\n mode=\"national\"\n :inputOptions=\"{ placeholder: t('auth.signUp.phonePlaceholder') }\"\n class=\"bg-light h-4r pd-small radius-small mn-b-thin\"\n />\n </div>\n </transition>\n <!-- Email -->\n <transition name=\"slide-fade\">\n <div v-show=\"tabAuth === 'email'\" class=\"mn-b-semi radius-small o-hidden\">\n <p class=\"mn-b-small t-transp\">{{ t('auth.signUp.emailNotice') }}</p>\n <Field\n v-model:field=\"email\"\n :placeholder=\"t('auth.signUp.emailPlaceholder')\"\n :validation=\"emailValidation\"\n class=\"bg-light h-4r pd-medium radius-small\"\n />\n </div>\n </transition>\n </div>\n\n <!-- Password fields -->\n <div class=\"mn-b-semi\">\n <Field\n v-model:field=\"password\"\n type=\"password\"\n :placeholder=\"t('auth.enterPassword.passwordPlaceholder')\"\n :validation=\"passwordValidation\"\n class=\"bg-light pd-small radius-small mn-b-thin\"\n />\n <Field\n v-model:field=\"passwordRepeat\"\n type=\"password\"\n :placeholder=\"t('auth.enterPassword.repeatPasswordPlaceholder')\"\n class=\"bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Agreement -->\n <div class=\"p-regular fw-semi mn-b-semi\" v-html=\"t('auth.signUp.agreement')\"></div>\n\n <!-- Button -->\n <Button :submit=\"onSubmit\" class=\"w-100 bg-main mn-b-big\">\n {{ t('auth.enterPassword.registerBtn') }}\n </Button>\n\n <!-- Links -->\n <div class=\"w-100\">\n <router-link\n :to=\"{ name: 'Sign In', query: { returnUrl: route.query.returnUrl } }\"\n class=\"underline mn-b-medium d-block t-blue\"\n >\n {{ t('auth.signUp.haveAccount') }}\n </router-link>\n </div>\n </section>\n</template>\n\n<script setup>\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport FieldPhone from '@martyrs/src/components/FieldPhone/FieldPhone.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\n\nimport { computed, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport { setError } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport { withOtp } from '@martyrs/src/modules/auth/views/plugins/otp.plugin.js'\nimport $axios from '@martyrs/src/modules/core/views/utils/axios-instance.js'\nimport * as inputsValidation from '@martyrs/src/modules/auth/views/validations/inputs.validation'\n\nconst store = useStore()\nconst core = store.core || { state: {} }\nconst auth = store.auth\n\nconst route = useRoute()\nconst router = useRouter()\nconst { t } = useI18n({ useScope: 'global' })\n\nconst email = ref('')\nconst phone = ref('')\nconst password = ref('')\nconst passwordRepeat = ref('')\n\nconst phoneValidation = ref(null)\nconst emailValidation = ref(null)\nconst passwordValidation = ref(null)\n\nconst availableTabs = computed(() => {\n const tabs = [\n { name: t('auth.signUp.phone'), value: 'phone' },\n { name: t('auth.signUp.email'), value: 'email' }\n ]\n const excludeMethods = core.state?.options?.auth?.authMethodsExclude || []\n return tabs.filter(tab => !excludeMethods.includes(tab.value))\n})\n\nconst tabAuth = ref(availableTabs.value.length ? availableTabs.value[0].value : '')\n\nasync function onSubmit() {\n // Validate identifier\n if (tabAuth.value === 'phone') {\n await inputsValidation.validateInputs(\n phoneValidation,\n inputsValidation.validatePhone,\n phone.value,\n 'Некорректный телефон'\n )\n }\n if (tabAuth.value === 'email') {\n await inputsValidation.validateInputs(\n emailValidation,\n inputsValidation.validateEmail,\n email.value,\n 'Некорректный email'\n )\n }\n\n // Validate password\n await inputsValidation.validateInputs(\n passwordValidation,\n inputsValidation.validatePassword,\n password.value,\n 'Некорректный пароль'\n )\n\n if (password.value !== passwordRepeat.value) {\n setError({ response: { data: { errorCode: 'PASSWORDS_DO_NOT_MATCH' } } })\n throw new Error('PASSWORDS_DO_NOT_MATCH')\n }\n\n // Signup with OTP verification\n try {\n const result = await withOtp(\n (data) => $axios.post('/api/auth/signup', data),\n {\n email: tabAuth.value === 'email' ? email.value : undefined,\n phone: tabAuth.value === 'phone' ? phone.value : undefined,\n password: password.value,\n type: tabAuth.value,\n inviteCode: route.query.invite\n }\n )\n\n // Success - save token and redirect\n if (result.data?.accessToken) {\n const Cookies = (await import('js-cookie')).default\n Cookies.set('user', JSON.stringify(result.data), { path: '/', expires: 7 })\n await auth.actions.initialize()\n\n if (route.query.returnUrl) {\n router.push({ path: route.query.returnUrl, query: { afterAuth: 'true' } })\n } else {\n router.push({ name: 'User Profile', params: { _id: result.data._id }, query: { afterAuth: 'true' } })\n }\n }\n } catch (error) {\n setError(error)\n throw error\n }\n}\n</script>\n\n<style lang=\"scss\">\n.slide-fade-enter-active,\n.slide-fade-leave-active {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.slide-fade-enter-from,\n.slide-fade-leave-to {\n position: absolute;\n transform: translateX(20px);\n opacity: 0;\n left: 0;\n top: 0;\n}\n</style>\n"],"names":["inputsValidation.validateInputs","inputsValidation.validatePhone","inputsValidation.validateEmail","inputsValidation.validatePassword"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuGA,UAAM,QAAQ,SAAQ;AACtB,UAAM,OAAO,MAAM,QAAQ,EAAE,OAAO,CAAA,EAAE;AACtC,UAAM,OAAO,MAAM;AAEnB,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,EAAC,IAAK,QAAQ,EAAE,UAAU,SAAQ,CAAE;AAE5C,UAAM,QAAQ,IAAI,EAAE;AACpB,UAAM,QAAQ,IAAI,EAAE;AACpB,UAAM,WAAW,IAAI,EAAE;AACvB,UAAM,iBAAiB,IAAI,EAAE;AAE7B,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,qBAAqB,IAAI,IAAI;AAEnC,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,OAAO;AAAA,QACX,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,QAAO;AAAA,QAC9C,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,QAAO;AAAA,MAClD;AACE,YAAM,iBAAiB,KAAK,OAAO,SAAS,MAAM,sBAAsB,CAAA;AACxE,aAAO,KAAK,OAAO,SAAO,CAAC,eAAe,SAAS,IAAI,KAAK,CAAC;AAAA,IAC/D,CAAC;AAED,UAAM,UAAU,IAAI,cAAc,MAAM,SAAS,cAAc,MAAM,CAAC,EAAE,QAAQ,EAAE;AAElF,mBAAe,WAAW;AAExB,UAAI,QAAQ,UAAU,SAAS;AAC7B,cAAMA;AAAAA,UACJ;AAAA,UACAC;AAAAA,UACA,MAAM;AAAA,UACN;AAAA,QACN;AAAA,MACE;AACA,UAAI,QAAQ,UAAU,SAAS;AAC7B,cAAMD;AAAAA,UACJ;AAAA,UACAE;AAAAA,UACA,MAAM;AAAA,UACN;AAAA,QACN;AAAA,MACE;AAGA,YAAMF;AAAAA,QACJ;AAAA,QACAG;AAAAA,QACA,SAAS;AAAA,QACT;AAAA,MACJ;AAEE,UAAI,SAAS,UAAU,eAAe,OAAO;AAC3C,iBAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,yBAAwB,IAAI,CAAE;AACxE,cAAM,IAAI,MAAM,wBAAwB;AAAA,MAC1C;AAGA,UAAI;AACF,cAAM,SAAS,MAAM;AAAA,UACnB,CAAC,SAAS,OAAO,KAAK,oBAAoB,IAAI;AAAA,UAC9C;AAAA,YACE,OAAO,QAAQ,UAAU,UAAU,MAAM,QAAQ;AAAA,YACjD,OAAO,QAAQ,UAAU,UAAU,MAAM,QAAQ;AAAA,YACjD,UAAU,SAAS;AAAA,YACnB,MAAM,QAAQ;AAAA,YACd,YAAY,MAAM,MAAM;AAAA,UAChC;AAAA,QACA;AAGI,YAAI,OAAO,MAAM,aAAa;AAC5B,gBAAM,WAAW,MAAM,OAAO,kGAAW,GAAG;AAC5C,kBAAQ,IAAI,QAAQ,KAAK,UAAU,OAAO,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS,EAAC,CAAE;AAC1E,gBAAM,KAAK,QAAQ,WAAU;AAE7B,cAAI,MAAM,MAAM,WAAW;AACzB,mBAAO,KAAK,EAAE,MAAM,MAAM,MAAM,WAAW,OAAO,EAAE,WAAW,SAAQ,CAAE;AAAA,UAC3E,OAAO;AACL,mBAAO,KAAK,EAAE,MAAM,gBAAgB,QAAQ,EAAE,KAAK,OAAO,KAAK,IAAG,GAAI,OAAO,EAAE,WAAW,OAAM,EAAE,CAAE;AAAA,UACtG;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,iBAAS,KAAK;AACd,cAAM;AAAA,MACR;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -29,8 +29,16 @@ const actions = {
|
|
|
29
29
|
if (userCookie) {
|
|
30
30
|
const { _id, email, phone, avatar, roles, accessToken } = userCookie;
|
|
31
31
|
setAuthToken(accessToken);
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
await $axios.get("/api/auth/check-token");
|
|
33
|
+
let userAccesses = [];
|
|
34
|
+
try {
|
|
35
|
+
const response = await $axios.get("/api/organizations/check-accesses");
|
|
36
|
+
userAccesses = response.data;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (error.response?.status !== 404) {
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
34
42
|
state.accesses = userAccesses;
|
|
35
43
|
Object.assign(state.user, { _id, email, phone, avatar });
|
|
36
44
|
Object.assign(state.access, { token: accessToken, roles, status: !!accessToken });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sources":["../../../../../../../src/modules/auth/views/store/auth.js"],"sourcesContent":["// Dependencies\nimport $axios, { setAuthToken } from '@martyrs/src/modules/core/views/utils/axios-instance.js';\nimport Cookies from 'js-cookie';\n// Capacitor\nimport { Preferences } from '@capacitor/preferences';\n// Vue modules\nimport { reactive, watch } from 'vue';\n// Globals\nimport { useSession, setError } from '@martyrs/src/modules/core/views/store/core.store.js';\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n\n// State\nconst state = reactive({\n user: {\n _id: undefined,\n avatar: null,\n username: '',\n email: '',\n phone: '',\n password: '',\n passwordRepeat: '',\n },\n access: {\n roles: null,\n token: null,\n status: false,\n },\n accesses: [],\n});\n\n// Session manager\nconst session = useSession();\n\nconst actions = {\n async initialize(cookie) {\n try {\n const userCookie = cookie ? cookie : await getCookie('user');\n\n if (userCookie) {\n const { _id, email, phone, avatar, roles, accessToken } = userCookie;\n\n setAuthToken(accessToken);\n\n // Проверка токена через серверный маршрут\n const response = await $axios.get('/api/organizations/check-accesses');\n const userAccesses = response.data;\n\n // ТОЛЬКО ПОСЛЕ УСПЕШНОЙ ПРОВЕРКИ устанавливаем состояние\n state.accesses = userAccesses;\n Object.assign(state.user, { _id, email, phone, avatar });\n Object.assign(state.access, { token: accessToken, roles, status: !!accessToken });\n\n // Update Session with full user data\n session.set({ ...userCookie, accesses: userAccesses });\n\n // Переподключаем WebSocket если пользователь аутентифицирован\n if (_id && accessToken) {\n console.log('[AUTH] Reconnecting WebSocket for authenticated user:', _id);\n await wsManager.reconnectWithAuth(_id);\n }\n } else {\n console.log('no cookies');\n setAuthToken(null);\n session.clear();\n this.resetState();\n }\n } catch (error) {\n console.error('Error initializing auth:', error);\n // Make sure we remove the cookie when there's an error\n await removeCookie('user');\n setAuthToken(null);\n session.clear();\n this.resetState();\n setError(error);\n throw error;\n }\n },\n\n // Helper method to reset state\n resetState() {\n state.accesses = [];\n state.user = {\n _id: undefined,\n avatar: null,\n username: '',\n email: '',\n phone: '',\n password: '',\n passwordRepeat: '',\n };\n state.access = {\n roles: null,\n token: null,\n status: false,\n };\n session.clear();\n },\n\n async login(user, type) {\n try {\n const response = await $axios.post('/api/auth/signin', {\n ...user,\n type,\n });\n\n setCookie('user', response.data);\n\n Object.assign(state.user, {\n ...response.data,\n });\n\n Object.assign(state.access, {\n token: response.data.accessToken,\n status: true,\n roles: response.data.roles,\n });\n\n session.set(response.data);\n\n await this.initialize();\n\n return response.data;\n } catch (error) {\n // Make sure cookie is removed on login error\n await removeCookie('user');\n\n Object.assign(state.access, {\n token: null,\n status: false,\n roles: null,\n });\n\n session.clear();\n\n console.log(error);\n setError(error);\n return Promise.reject(error);\n }\n },\n\n async signup(user, type, invite) {\n const { password, passwordRepeat } = state.user;\n\n console.log(password);\n console.log(passwordRepeat);\n\n if (password !== passwordRepeat) {\n const error = {\n response: {\n data: { errorCode: 'PASSWORDS_DO_NOT_MATCH' },\n },\n };\n setError(error);\n throw new Error(error.response.status);\n }\n\n try {\n const response = await $axios.post('/api/auth/signup', {\n ...user,\n type,\n inviteCode: invite,\n });\n\n console.log(response);\n\n if (response.data.accessToken) {\n setCookie('user', response.data);\n }\n\n Object.assign(state.user, {\n ...response.data,\n });\n\n Object.assign(state.access, {\n token: response.data.accessToken,\n status: true,\n roles: response.data.roles,\n });\n\n session.set(response.data);\n\n await this.initialize();\n\n return response.data;\n } catch (error) {\n // Make sure cookie is removed on signup error\n await removeCookie('user');\n setError(error);\n console.log('Sign up failed');\n throw error;\n }\n },\n\n async logout() {\n await removeCookie('user');\n setAuthToken(null);\n session.clear();\n this.resetState();\n\n // Отключаем WebSocket при выходе\n console.log('[AUTH] Disconnecting WebSocket on logout');\n wsManager.disconnect();\n },\n};\n\n// Cookies\nconst optionsDefault = {\n development: { path: '/', domain: process.env.DOMAIN_URL, secure: false, expires: 7, sameSite: 'Lax' },\n production: {\n expires: 7,\n path: '/',\n domain: process.env.DOMAIN_URL,\n sameSite: 'strict',\n secure: true,\n },\n};\n\nasync function getCookie(name) {\n if (process.env.MOBILE_APP) {\n const { value } = await Preferences.get({ key: name });\n return value ? JSON.parse(value) : null;\n } else {\n const cookie = Cookies.get(name);\n return cookie ? JSON.parse(cookie) : null;\n }\n}\n\nasync function setCookie(name, data, mode = process.env.NODE_ENV) {\n if (process.env.MOBILE_APP) {\n // Если приложение запущено в Capacitor\n await Preferences.set({\n key: name,\n value: JSON.stringify(data),\n });\n } else {\n // Для веб-версии\n const options = optionsDefault[mode];\n console.log('[AUTH COOKIE DEBUG] setCookie', { name, mode, options, domain: process.env.DOMAIN_URL });\n Cookies.set(name, JSON.stringify(data), options);\n }\n}\n\nasync function removeCookie(name, mode = process.env.NODE_ENV) {\n if (process.env.MOBILE_APP) {\n // Если приложение запущено в Capacitor\n await Preferences.remove({ key: name });\n } else {\n // Для веб-версии\n const options = optionsDefault[mode];\n const allCookiesBefore = typeof document !== 'undefined' ? document.cookie : 'SSR - no document';\n console.log('[AUTH COOKIE DEBUG] removeCookie BEFORE', { name, mode, options, domain: process.env.DOMAIN_URL, allCookies: allCookiesBefore });\n Cookies.remove(name, options);\n const allCookiesAfter = typeof document !== 'undefined' ? document.cookie : 'SSR - no document';\n console.log('[AUTH COOKIE DEBUG] removeCookie AFTER', { allCookies: allCookiesAfter });\n }\n}\n\n// History\nconst history = [];\nhistory.push(state);\n\n// Watch\nwatch(state, (newState, oldState) => {\n history.push(newState);\n});\n\n// Module Export\nexport { actions, removeCookie, state };\n"],"names":["Cookies"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../../../../../../src/modules/auth/views/store/auth.js"],"sourcesContent":["// Dependencies\nimport $axios, { setAuthToken } from '@martyrs/src/modules/core/views/utils/axios-instance.js';\nimport Cookies from 'js-cookie';\n// Capacitor\nimport { Preferences } from '@capacitor/preferences';\n// Vue modules\nimport { reactive, watch } from 'vue';\n// Globals\nimport { useSession, setError } from '@martyrs/src/modules/core/views/store/core.store.js';\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n\n// State\nconst state = reactive({\n user: {\n _id: undefined,\n avatar: null,\n username: '',\n email: '',\n phone: '',\n password: '',\n passwordRepeat: '',\n },\n access: {\n roles: null,\n token: null,\n status: false,\n },\n accesses: [],\n});\n\n// Session manager\nconst session = useSession();\n\nconst actions = {\n async initialize(cookie) {\n try {\n const userCookie = cookie ? cookie : await getCookie('user');\n\n if (userCookie) {\n const { _id, email, phone, avatar, roles, accessToken } = userCookie;\n\n setAuthToken(accessToken);\n\n // Валидация токена (обязательно)\n await $axios.get('/api/auth/check-token');\n\n // Загрузка accesses (опционально, если модуль organizations подключен)\n let userAccesses = [];\n try {\n const response = await $axios.get('/api/organizations/check-accesses');\n userAccesses = response.data;\n } catch (error) {\n if (error.response?.status !== 404) {\n throw error;\n }\n }\n\n // ТОЛЬКО ПОСЛЕ УСПЕШНОЙ ПРОВЕРКИ устанавливаем состояние\n state.accesses = userAccesses;\n Object.assign(state.user, { _id, email, phone, avatar });\n Object.assign(state.access, { token: accessToken, roles, status: !!accessToken });\n\n // Update Session with full user data\n session.set({ ...userCookie, accesses: userAccesses });\n\n // Переподключаем WebSocket если пользователь аутентифицирован\n if (_id && accessToken) {\n console.log('[AUTH] Reconnecting WebSocket for authenticated user:', _id);\n await wsManager.reconnectWithAuth(_id);\n }\n } else {\n console.log('no cookies');\n setAuthToken(null);\n session.clear();\n this.resetState();\n }\n } catch (error) {\n console.error('Error initializing auth:', error);\n // Make sure we remove the cookie when there's an error\n await removeCookie('user');\n setAuthToken(null);\n session.clear();\n this.resetState();\n setError(error);\n throw error;\n }\n },\n\n // Helper method to reset state\n resetState() {\n state.accesses = [];\n state.user = {\n _id: undefined,\n avatar: null,\n username: '',\n email: '',\n phone: '',\n password: '',\n passwordRepeat: '',\n };\n state.access = {\n roles: null,\n token: null,\n status: false,\n };\n session.clear();\n },\n\n async login(user, type) {\n try {\n const response = await $axios.post('/api/auth/signin', {\n ...user,\n type,\n });\n\n setCookie('user', response.data);\n\n Object.assign(state.user, {\n ...response.data,\n });\n\n Object.assign(state.access, {\n token: response.data.accessToken,\n status: true,\n roles: response.data.roles,\n });\n\n session.set(response.data);\n\n await this.initialize();\n\n return response.data;\n } catch (error) {\n // Make sure cookie is removed on login error\n await removeCookie('user');\n\n Object.assign(state.access, {\n token: null,\n status: false,\n roles: null,\n });\n\n session.clear();\n\n console.log(error);\n setError(error);\n return Promise.reject(error);\n }\n },\n\n async signup(user, type, invite) {\n const { password, passwordRepeat } = state.user;\n\n console.log(password);\n console.log(passwordRepeat);\n\n if (password !== passwordRepeat) {\n const error = {\n response: {\n data: { errorCode: 'PASSWORDS_DO_NOT_MATCH' },\n },\n };\n setError(error);\n throw new Error(error.response.status);\n }\n\n try {\n const response = await $axios.post('/api/auth/signup', {\n ...user,\n type,\n inviteCode: invite,\n });\n\n console.log(response);\n\n if (response.data.accessToken) {\n setCookie('user', response.data);\n }\n\n Object.assign(state.user, {\n ...response.data,\n });\n\n Object.assign(state.access, {\n token: response.data.accessToken,\n status: true,\n roles: response.data.roles,\n });\n\n session.set(response.data);\n\n await this.initialize();\n\n return response.data;\n } catch (error) {\n // Make sure cookie is removed on signup error\n await removeCookie('user');\n setError(error);\n console.log('Sign up failed');\n throw error;\n }\n },\n\n async logout() {\n await removeCookie('user');\n setAuthToken(null);\n session.clear();\n this.resetState();\n\n // Отключаем WebSocket при выходе\n console.log('[AUTH] Disconnecting WebSocket on logout');\n wsManager.disconnect();\n },\n};\n\n// Cookies\nconst optionsDefault = {\n development: { path: '/', domain: process.env.DOMAIN_URL, secure: false, expires: 7, sameSite: 'Lax' },\n production: {\n expires: 7,\n path: '/',\n domain: process.env.DOMAIN_URL,\n sameSite: 'strict',\n secure: true,\n },\n};\n\nasync function getCookie(name) {\n if (process.env.MOBILE_APP) {\n const { value } = await Preferences.get({ key: name });\n return value ? JSON.parse(value) : null;\n } else {\n const cookie = Cookies.get(name);\n return cookie ? JSON.parse(cookie) : null;\n }\n}\n\nasync function setCookie(name, data, mode = process.env.NODE_ENV) {\n if (process.env.MOBILE_APP) {\n // Если приложение запущено в Capacitor\n await Preferences.set({\n key: name,\n value: JSON.stringify(data),\n });\n } else {\n // Для веб-версии\n const options = optionsDefault[mode];\n console.log('[AUTH COOKIE DEBUG] setCookie', { name, mode, options, domain: process.env.DOMAIN_URL });\n Cookies.set(name, JSON.stringify(data), options);\n }\n}\n\nasync function removeCookie(name, mode = process.env.NODE_ENV) {\n if (process.env.MOBILE_APP) {\n // Если приложение запущено в Capacitor\n await Preferences.remove({ key: name });\n } else {\n // Для веб-версии\n const options = optionsDefault[mode];\n const allCookiesBefore = typeof document !== 'undefined' ? document.cookie : 'SSR - no document';\n console.log('[AUTH COOKIE DEBUG] removeCookie BEFORE', { name, mode, options, domain: process.env.DOMAIN_URL, allCookies: allCookiesBefore });\n Cookies.remove(name, options);\n const allCookiesAfter = typeof document !== 'undefined' ? document.cookie : 'SSR - no document';\n console.log('[AUTH COOKIE DEBUG] removeCookie AFTER', { allCookies: allCookiesAfter });\n }\n}\n\n// History\nconst history = [];\nhistory.push(state);\n\n// Watch\nwatch(state, (newState, oldState) => {\n history.push(newState);\n});\n\n// Module Export\nexport { actions, removeCookie, state };\n"],"names":["Cookies"],"mappings":"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"}
|