@ozdao/martyrs 0.2.483 → 0.2.484
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-C57G7rnE.js → Media-2NvSR0vE.js} +1 -1
- package/dist/{Media-DjnpKS62.cjs → Media-EYG9WPI4.cjs} +1 -1
- package/dist/{main-CXQqAVVb.js → main-BT1yoKH2.js} +2598 -2294
- package/dist/{main-De5X_RUk.cjs → main-rF15sgss.cjs} +7 -7
- package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
- package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
- 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/Feed/Feed.vue.cjs +32 -12
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +48 -28
- package/dist/martyrs/src/components/Feed/Feed.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/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
- package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Slider/Slider.vue.cjs +21 -24
- package/dist/martyrs/src/components/Slider/Slider.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Slider/Slider.vue.js +21 -24
- package/dist/martyrs/src/components/Slider/Slider.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +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.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/pages/ProfileEdit.vue.cjs +1 -1
- 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.cjs +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.cjs +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.cjs +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.cjs +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.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +17 -12
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +17 -12
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +3 -3
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +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.cjs +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.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +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.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.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/PopupAuth.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.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/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +183 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +183 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterOptions.vue.cjs +67 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterOptions.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterOptions.vue.js +67 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterOptions.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterPrice.vue.cjs +91 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterPrice.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterPrice.vue.js +91 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterPrice.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterRange.vue2.cjs +64 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterRange.vue2.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterRange.vue2.js +64 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/filters/FilterRange.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +4 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
- 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/pages/OrganizationEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.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/organizations/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.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/pages/views/components/pages/PageEdit.vue.cjs +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.cjs +2 -2
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +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.cjs +5 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +3 -3
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.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/sections/EditAttributes.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +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.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +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.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.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/src/modules/spots/components/pages/Map.vue.cjs +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.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +4 -4
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +4 -4
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/style.css +50 -0
- package/package.json +1 -1
- package/src/components/Feed/Feed.vue +23 -0
- package/src/components/Slider/Slider.vue +15 -17
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +18 -6
- package/src/modules/globals/views/components/sections/Filters.vue +198 -0
- package/src/modules/globals/views/components/sections/filters/FilterOptions.vue +65 -0
- package/src/modules/globals/views/components/sections/filters/FilterPrice.vue +81 -0
- package/src/modules/globals/views/components/sections/filters/FilterRange.vue +74 -0
- package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.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
- package/dist/martyrs/src/components/Popup/Popup.vue.js.map +0 -1
package/dist/martyrs.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as o, b as t, c as d, d as r, e as l, f as i, g as p, h as u, i as n, j as m, k as M, F as S, l as c, n as F, o as g, L as h, p as b, M as k, q as x, r as B, s as C, t as T, u as U, S as f, v as w, w as D, x as E, y as I, z as L, A as P, B as q, C as y, U as A, D as j, E as v, m as z } from "./main-
|
|
1
|
+
import { a as o, b as t, c as d, d as r, e as l, f as i, g as p, h as u, i as n, j as m, k as M, F as S, l as c, n as F, o as g, L as h, p as b, M as k, q as x, r as B, s as C, t as T, u as U, S as f, v as w, w as D, x as E, y as I, z as L, A as P, B as q, C as y, U as A, D as j, E as v, m as z } from "./main-BT1yoKH2.js";
|
|
2
2
|
import "vue";
|
|
3
3
|
export {
|
|
4
4
|
o as Address,
|
package/dist/style.css
CHANGED
|
@@ -173,11 +173,18 @@ a.button {
|
|
|
173
173
|
.carousel__dot--active {
|
|
174
174
|
background-color: rgba(0, 0, 0, 0.6);
|
|
175
175
|
}
|
|
176
|
+
.auth_slider .carousel {
|
|
177
|
+
height: 100%;
|
|
178
|
+
}
|
|
179
|
+
.auth_slider .carousel__container {
|
|
180
|
+
height: 100%;
|
|
181
|
+
}
|
|
176
182
|
.parent-div {
|
|
177
183
|
display: flex;
|
|
178
184
|
flex-direction: column;
|
|
179
185
|
height: 100%;
|
|
180
186
|
width: 100%;
|
|
187
|
+
object-fit: contain;
|
|
181
188
|
}
|
|
182
189
|
.background-div {
|
|
183
190
|
flex-grow: 1;
|
|
@@ -739,6 +746,49 @@ button[data-v-416842ae]:disabled {
|
|
|
739
746
|
overflow: hidden;
|
|
740
747
|
transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
741
748
|
}
|
|
749
|
+
.range-slider input[type="range"] {
|
|
750
|
+
-webkit-appearance: none;
|
|
751
|
+
appearance: none;
|
|
752
|
+
height: 6px;
|
|
753
|
+
background: var(--color-light);
|
|
754
|
+
border-radius: 3px;
|
|
755
|
+
outline: none;
|
|
756
|
+
}
|
|
757
|
+
.range-slider input[type="range"]::-webkit-slider-thumb {
|
|
758
|
+
-webkit-appearance: none;
|
|
759
|
+
appearance: none;
|
|
760
|
+
width: 18px;
|
|
761
|
+
height: 18px;
|
|
762
|
+
background: var(--color-primary);
|
|
763
|
+
border-radius: 50%;
|
|
764
|
+
cursor: pointer;
|
|
765
|
+
}
|
|
766
|
+
.range-slider input[type="range"]::-moz-range-thumb {
|
|
767
|
+
width: 18px;
|
|
768
|
+
height: 18px;
|
|
769
|
+
background: var(--color-primary);
|
|
770
|
+
border-radius: 50%;
|
|
771
|
+
cursor: pointer;
|
|
772
|
+
border: none;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
.btn-filter {
|
|
776
|
+
display: flex;
|
|
777
|
+
align-items: center;
|
|
778
|
+
gap: 0.25rem;
|
|
779
|
+
border: none;
|
|
780
|
+
cursor: pointer;
|
|
781
|
+
transition: all 0.2s;
|
|
782
|
+
white-space: nowrap;
|
|
783
|
+
}
|
|
784
|
+
.btn-filter:hover {
|
|
785
|
+
opacity: 0.8;
|
|
786
|
+
}
|
|
787
|
+
.filters-container {
|
|
788
|
+
max-height: 60vh;
|
|
789
|
+
overflow-y: auto;
|
|
790
|
+
}
|
|
791
|
+
|
|
742
792
|
.feed-move, /* apply transition to moving elements */
|
|
743
793
|
.feed-enter-active,
|
|
744
794
|
.feed-leave-active {
|
package/package.json
CHANGED
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
:autofocus="search.autofocus"
|
|
10
10
|
/>
|
|
11
11
|
|
|
12
|
+
<FiltersBar
|
|
13
|
+
v-if="filter"
|
|
14
|
+
v-model="filter.selected"
|
|
15
|
+
:filters="filterConfig"
|
|
16
|
+
:class="filter.class || 'mobile-only'"
|
|
17
|
+
/>
|
|
18
|
+
|
|
12
19
|
<Dropdown
|
|
13
20
|
v-if="date"
|
|
14
21
|
:label="{
|
|
@@ -180,6 +187,8 @@ import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/Bl
|
|
|
180
187
|
import BlockSorting from '@martyrs/src/modules/globals/views/components/blocks/BlockSorting.vue'
|
|
181
188
|
import BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue'
|
|
182
189
|
|
|
190
|
+
import FiltersBar from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'
|
|
191
|
+
|
|
183
192
|
import ButtonSort from '@martyrs/src/modules/globals/views/components/elements/ButtonSort.vue'
|
|
184
193
|
import ButtonDate from '@martyrs/src/modules/globals/views/components/elements/ButtonDate.vue'
|
|
185
194
|
|
|
@@ -192,6 +201,20 @@ const filter = defineModel('filter')
|
|
|
192
201
|
const date = defineModel('date')
|
|
193
202
|
const items = defineModel('items')
|
|
194
203
|
|
|
204
|
+
const filterConfig = computed(() => {
|
|
205
|
+
if (!filter.value?.options) return []
|
|
206
|
+
|
|
207
|
+
// Преобразуем старый формат в новый
|
|
208
|
+
return filter.value.options.map(opt => ({
|
|
209
|
+
key: opt.value,
|
|
210
|
+
title: opt.title,
|
|
211
|
+
type: 'options', // или другой тип в зависимости от данных
|
|
212
|
+
options: opt.options || [],
|
|
213
|
+
defaultValue: null
|
|
214
|
+
}))
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
|
|
195
218
|
// Пропсы
|
|
196
219
|
const props = defineProps({
|
|
197
220
|
showLoadMore: {
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<div class="
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
></button>
|
|
18
|
-
</div>
|
|
2
|
+
<!-- Native Carousel -->
|
|
3
|
+
<div class="carousel" ref="carouselRef">
|
|
4
|
+
<div class="carousel__container" @scroll="handleScroll">
|
|
5
|
+
<slot></slot>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<!-- Navigation Dots (optional) -->
|
|
9
|
+
<div class="carousel__dots" v-if="showDots && slideCount > 1">
|
|
10
|
+
<button
|
|
11
|
+
v-for="index in slideCount"
|
|
12
|
+
:key="index - 1"
|
|
13
|
+
class="carousel__dot"
|
|
14
|
+
:class="{ 'carousel__dot--active': selectedIndex === index - 1 }"
|
|
15
|
+
@click="scrollTo(index - 1)"
|
|
16
|
+
></button>
|
|
19
17
|
</div>
|
|
20
18
|
</div>
|
|
21
19
|
</template>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from 'vue'
|
|
3
3
|
import { useI18n } from 'vue-i18n'
|
|
4
|
+
|
|
4
5
|
import Slider from '@martyrs/src/components/Slider/Slider.vue'
|
|
5
6
|
|
|
6
7
|
const text = {
|
|
@@ -53,23 +54,34 @@ const features = computed(() => tm('features'))
|
|
|
53
54
|
</script>
|
|
54
55
|
|
|
55
56
|
<template>
|
|
56
|
-
<Slider :showDots="true" :slideCount="features.length">
|
|
57
|
-
<div class="carousel__slide
|
|
58
|
-
<div class="parent-div
|
|
59
|
-
<div class="background-div"></div>
|
|
60
|
-
<
|
|
61
|
-
|
|
57
|
+
<Slider :showDots="true" :slideCount="features.length" class="auth_slider h-100">
|
|
58
|
+
<div class="carousel__slide" v-for="(feature, index) in features" :key="index">
|
|
59
|
+
<div class="parent-div flex flex-h-center" >
|
|
60
|
+
<div class="background-div" :style="`background-image: url(/features/${index}.png); background-size:contain; background-position: center center; background-repeat: no-repeat;`"></div>
|
|
61
|
+
<div class="pd-big">
|
|
62
|
+
<h5 class="t-center w-100 mn-b-regular">{{ feature.title }}</h5>
|
|
63
|
+
<p class='t-center t-transp w-100'>{{ feature.description }}</p>
|
|
64
|
+
</div>
|
|
62
65
|
</div>
|
|
63
66
|
</div>
|
|
64
67
|
</Slider>
|
|
65
68
|
</template>
|
|
66
69
|
|
|
67
70
|
<style lang="scss">
|
|
71
|
+
.auth_slider .carousel {
|
|
72
|
+
height: 100%;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.auth_slider .carousel__container {
|
|
76
|
+
height: 100%;
|
|
77
|
+
}
|
|
78
|
+
|
|
68
79
|
.parent-div {
|
|
69
80
|
display: flex;
|
|
70
81
|
flex-direction: column;
|
|
71
82
|
height: 100%;
|
|
72
83
|
width: 100%;
|
|
84
|
+
object-fit: contain;
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
.background-div {
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
<!-- FiltersBar.vue -->
|
|
2
|
+
<template>
|
|
3
|
+
<div class="flex gap-thin">
|
|
4
|
+
<!-- All Filters Button -->
|
|
5
|
+
<button
|
|
6
|
+
@click="showAllFilters = true"
|
|
7
|
+
class="btn-filter radius-medium pd-thin bg-light"
|
|
8
|
+
:class="{ 'bg-primary t-white': hasActiveFilters }"
|
|
9
|
+
>
|
|
10
|
+
<IconFilter class="w-1r h-auto" />
|
|
11
|
+
<span v-if="activeFiltersCount" class="ml-thin">{{ activeFiltersCount }}</span>
|
|
12
|
+
</button>
|
|
13
|
+
|
|
14
|
+
<!-- Individual Filter Buttons -->
|
|
15
|
+
<button
|
|
16
|
+
v-for="(filter, idx) in filters"
|
|
17
|
+
:key="idx"
|
|
18
|
+
@click="() => openFilter(idx)"
|
|
19
|
+
class="btn-filter radius-medium pd-thin bg-light"
|
|
20
|
+
:class="{ 'bg-primary t-white': getFilterActiveState(filter) }"
|
|
21
|
+
>
|
|
22
|
+
{{ getFilterLabel(filter) }}
|
|
23
|
+
</button>
|
|
24
|
+
|
|
25
|
+
<!-- All Filters Popup -->
|
|
26
|
+
<Popup
|
|
27
|
+
v-model:show="showAllFilters"
|
|
28
|
+
align="bottom center"
|
|
29
|
+
class="w-100 max-h-80vh"
|
|
30
|
+
>
|
|
31
|
+
<div class="pd-medium bg-white radius-top-medium">
|
|
32
|
+
<div class="flex justify-between align-center mb-medium">
|
|
33
|
+
<h3 class="t-h3">Filters</h3>
|
|
34
|
+
<IconCross @click="showAllFilters = false" class="w-1r h-auto cursor-pointer" />
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div class="filters-container">
|
|
38
|
+
<div v-for="(filter, idx) in filters" :key="idx" class="mb-medium">
|
|
39
|
+
<h4 class="t-h4 mb-thin">{{ filter.title }}</h4>
|
|
40
|
+
<component
|
|
41
|
+
:is="getFilterComponent(filter.type)"
|
|
42
|
+
v-model="appliedFilters[filter.key]"
|
|
43
|
+
:options="filter.options"
|
|
44
|
+
:config="filter.config"
|
|
45
|
+
/>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<div class="flex gap-thin mt-medium">
|
|
50
|
+
<button @click="applyFilters" class="btn btn-primary flex-1">Apply</button>
|
|
51
|
+
<button @click="resetFilters" class="btn btn-secondary">Reset</button>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</Popup>
|
|
55
|
+
|
|
56
|
+
<!-- Individual Filter Popups -->
|
|
57
|
+
<Popup
|
|
58
|
+
:isPopupOpen="individualPopups[idx]"
|
|
59
|
+
v-for="(filter, idx) in filters"
|
|
60
|
+
:key="`popup-${idx}`"
|
|
61
|
+
align="bottom center"
|
|
62
|
+
class="min-w-200"
|
|
63
|
+
>
|
|
64
|
+
<div class="pd-medium bg-white radius-medium">
|
|
65
|
+
<h4 class="t-h4 mb-thin">{{ filter.title }}</h4>
|
|
66
|
+
<component
|
|
67
|
+
:is="getFilterComponent(filter.type)"
|
|
68
|
+
v-model="appliedFilters[filter.key]"
|
|
69
|
+
:options="filter.options"
|
|
70
|
+
:config="filter.config"
|
|
71
|
+
@update:modelValue="() => updateFilter(filter.key)"
|
|
72
|
+
/>
|
|
73
|
+
</div>
|
|
74
|
+
</Popup>
|
|
75
|
+
</div>
|
|
76
|
+
</template>
|
|
77
|
+
|
|
78
|
+
<script setup>
|
|
79
|
+
import { ref, computed, reactive } from 'vue'
|
|
80
|
+
import Field from '@martyrs/src/components/Field/Field.vue';
|
|
81
|
+
import Popup from '@martyrs/src/components/Popup/Popup.vue';
|
|
82
|
+
import Select from '@martyrs/src/components/Select/Select.vue';
|
|
83
|
+
import IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'
|
|
84
|
+
import IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'
|
|
85
|
+
|
|
86
|
+
// Import filter components
|
|
87
|
+
import FilterOptions from './filters/FilterOptions.vue'
|
|
88
|
+
import FilterRange from './filters/FilterRange.vue'
|
|
89
|
+
import FilterPrice from './filters/FilterPrice.vue'
|
|
90
|
+
|
|
91
|
+
const props = defineProps({
|
|
92
|
+
filters: {
|
|
93
|
+
type: Array,
|
|
94
|
+
required: true
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
const model = defineModel({
|
|
99
|
+
type: Object,
|
|
100
|
+
default: () => ({})
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
// State
|
|
104
|
+
const showAllFilters = ref(false)
|
|
105
|
+
const individualPopups = reactive({})
|
|
106
|
+
const appliedFilters = reactive({})
|
|
107
|
+
|
|
108
|
+
// Initialize filters
|
|
109
|
+
props.filters.forEach(filter => {
|
|
110
|
+
individualPopups[props.filters.indexOf(filter)] = false
|
|
111
|
+
if (!appliedFilters[filter.key]) {
|
|
112
|
+
appliedFilters[filter.key] = filter.defaultValue || null
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
// Computed
|
|
117
|
+
const hasActiveFilters = computed(() => {
|
|
118
|
+
return Object.values(appliedFilters).some(v => v !== null && v !== undefined)
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
const activeFiltersCount = computed(() => {
|
|
122
|
+
return Object.values(appliedFilters).filter(v => v !== null && v !== undefined).length
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
// Methods
|
|
126
|
+
const getFilterComponent = (type) => {
|
|
127
|
+
if (typeof type === 'object') return type
|
|
128
|
+
|
|
129
|
+
const components = {
|
|
130
|
+
options: FilterOptions,
|
|
131
|
+
range: FilterRange,
|
|
132
|
+
price: FilterPrice
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return components[type] || FilterOptions
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const getFilterLabel = (filter) => {
|
|
139
|
+
const value = appliedFilters[filter.key]
|
|
140
|
+
if (!value) return filter.title
|
|
141
|
+
|
|
142
|
+
if (Array.isArray(value) && value.length) {
|
|
143
|
+
return `${filter.title} (${value.length})`
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (typeof value === 'object' && (value.min || value.max)) {
|
|
147
|
+
return `${filter.title}: ${value.min || 0}-${value.max || '∞'}`
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return `${filter.title}: ${value}`
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const getFilterActiveState = (filter) => {
|
|
154
|
+
const value = appliedFilters[filter.key]
|
|
155
|
+
return value !== null && value !== undefined
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const openFilter = (idx) => {
|
|
159
|
+
individualPopups[idx] = true
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const updateFilter = (key) => {
|
|
163
|
+
model.value = { ...appliedFilters }
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const applyFilters = () => {
|
|
167
|
+
model.value = { ...appliedFilters }
|
|
168
|
+
showAllFilters.value = false
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const resetFilters = () => {
|
|
172
|
+
Object.keys(appliedFilters).forEach(key => {
|
|
173
|
+
appliedFilters[key] = null
|
|
174
|
+
})
|
|
175
|
+
model.value = {}
|
|
176
|
+
}
|
|
177
|
+
</script>
|
|
178
|
+
|
|
179
|
+
<style>
|
|
180
|
+
.btn-filter {
|
|
181
|
+
display: flex;
|
|
182
|
+
align-items: center;
|
|
183
|
+
gap: 0.25rem;
|
|
184
|
+
border: none;
|
|
185
|
+
cursor: pointer;
|
|
186
|
+
transition: all 0.2s;
|
|
187
|
+
white-space: nowrap;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.btn-filter:hover {
|
|
191
|
+
opacity: 0.8;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.filters-container {
|
|
195
|
+
max-height: 60vh;
|
|
196
|
+
overflow-y: auto;
|
|
197
|
+
}
|
|
198
|
+
</style>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<!-- filters/FilterOptions.vue -->
|
|
2
|
+
<template>
|
|
3
|
+
<div class="filter-options">
|
|
4
|
+
<div
|
|
5
|
+
v-for="option in options"
|
|
6
|
+
:key="option.value"
|
|
7
|
+
class="flex align-center gap-thin pd-thin cursor-pointer hover-bg-light radius-small"
|
|
8
|
+
@click="toggleOption(option.value)"
|
|
9
|
+
>
|
|
10
|
+
<Field
|
|
11
|
+
type="checkbox"
|
|
12
|
+
v-model:field="checkboxStates[option.value]"
|
|
13
|
+
class="mr-thin"
|
|
14
|
+
/>
|
|
15
|
+
<span>{{ option.label }}</span>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
import { ref, watch } from 'vue'
|
|
22
|
+
import Field from '@martyrs/src/components/Field/Field.vue';
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
const props = defineProps({
|
|
26
|
+
options: {
|
|
27
|
+
type: Array,
|
|
28
|
+
required: true,
|
|
29
|
+
default: () => []
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
const model = defineModel({
|
|
34
|
+
type: Array,
|
|
35
|
+
default: () => []
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
// Создаем объект для хранения состояний чекбоксов
|
|
39
|
+
const checkboxStates = ref({})
|
|
40
|
+
|
|
41
|
+
// Инициализация состояний
|
|
42
|
+
props.options.forEach(option => {
|
|
43
|
+
checkboxStates.value[option.value] = model.value.includes(option.value)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
// Следим за изменениями модели
|
|
47
|
+
watch(model, (newVal) => {
|
|
48
|
+
props.options.forEach(option => {
|
|
49
|
+
checkboxStates.value[option.value] = newVal.includes(option.value)
|
|
50
|
+
})
|
|
51
|
+
}, { deep: true })
|
|
52
|
+
|
|
53
|
+
// Обновляем модель при изменении чекбоксов
|
|
54
|
+
watch(checkboxStates, (states) => {
|
|
55
|
+
const selected = []
|
|
56
|
+
Object.entries(states).forEach(([value, checked]) => {
|
|
57
|
+
if (checked) selected.push(value)
|
|
58
|
+
})
|
|
59
|
+
model.value = selected
|
|
60
|
+
}, { deep: true })
|
|
61
|
+
|
|
62
|
+
const toggleOption = (value) => {
|
|
63
|
+
checkboxStates.value[value] = !checkboxStates.value[value]
|
|
64
|
+
}
|
|
65
|
+
</script>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<!-- filters/FilterPrice.vue -->
|
|
2
|
+
<template>
|
|
3
|
+
<div class="filter-price">
|
|
4
|
+
<div class="flex gap-thin align-center">
|
|
5
|
+
<Field
|
|
6
|
+
type="number"
|
|
7
|
+
v-model:field="localValue.min"
|
|
8
|
+
placeholder="Min"
|
|
9
|
+
class="flex-1 bg-light pd-medium radius-small"
|
|
10
|
+
@blur="updateValue"
|
|
11
|
+
/>
|
|
12
|
+
<span class="t-small">—</span>
|
|
13
|
+
<Field
|
|
14
|
+
type="number"
|
|
15
|
+
v-model:field="localValue.max"
|
|
16
|
+
placeholder="Max"
|
|
17
|
+
class="flex-1 bg-light pd-medium radius-small"
|
|
18
|
+
@blur="updateValue"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div v-if="config?.presets" class="mt-thin">
|
|
23
|
+
<button
|
|
24
|
+
v-for="preset in config.presets"
|
|
25
|
+
:key="preset.label"
|
|
26
|
+
@click="applyPreset(preset)"
|
|
27
|
+
class="btn btn-small mr-thin mb-thin"
|
|
28
|
+
:class="isPresetActive(preset) ? 'btn-primary' : 'btn-secondary'"
|
|
29
|
+
>
|
|
30
|
+
{{ preset.label }}
|
|
31
|
+
</button>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</template>
|
|
35
|
+
|
|
36
|
+
<script setup>
|
|
37
|
+
import { ref, watch } from 'vue'
|
|
38
|
+
import Field from '@martyrs/src/components/Field/Field.vue';
|
|
39
|
+
|
|
40
|
+
const props = defineProps({
|
|
41
|
+
config: {
|
|
42
|
+
type: Object,
|
|
43
|
+
default: () => ({})
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
const model = defineModel({
|
|
48
|
+
type: Object,
|
|
49
|
+
default: () => ({ min: null, max: null })
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
const localValue = ref({
|
|
53
|
+
min: model.value?.min || null,
|
|
54
|
+
max: model.value?.max || null
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
watch(model, (val) => {
|
|
58
|
+
if (val) {
|
|
59
|
+
localValue.value = {
|
|
60
|
+
min: val.min || null,
|
|
61
|
+
max: val.max || null
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}, { deep: true })
|
|
65
|
+
|
|
66
|
+
const updateValue = () => {
|
|
67
|
+
model.value = { ...localValue.value }
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const applyPreset = (preset) => {
|
|
71
|
+
localValue.value = {
|
|
72
|
+
min: preset.min || null,
|
|
73
|
+
max: preset.max || null
|
|
74
|
+
}
|
|
75
|
+
updateValue()
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const isPresetActive = (preset) => {
|
|
79
|
+
return localValue.value.min === preset.min && localValue.value.max === preset.max
|
|
80
|
+
}
|
|
81
|
+
</script>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<!-- filters/FilterRange.vue -->
|
|
2
|
+
<template>
|
|
3
|
+
<div class="filter-range">
|
|
4
|
+
<div class="range-slider">
|
|
5
|
+
<input
|
|
6
|
+
type="range"
|
|
7
|
+
v-model.number="localValue"
|
|
8
|
+
:min="config?.min || 0"
|
|
9
|
+
:max="config?.max || 100"
|
|
10
|
+
:step="config?.step || 1"
|
|
11
|
+
@input="updateValue"
|
|
12
|
+
class="w-100"
|
|
13
|
+
/>
|
|
14
|
+
<div class="flex justify-between mt-thin">
|
|
15
|
+
<span class="t-small">{{ config?.min || 0 }}{{ config?.unit || '' }}</span>
|
|
16
|
+
<span class="t-bold">{{ localValue }}{{ config?.unit || '' }}</span>
|
|
17
|
+
<span class="t-small">{{ config?.max || 100 }}{{ config?.unit || '' }}</span>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup>
|
|
24
|
+
import { ref, watch } from 'vue'
|
|
25
|
+
|
|
26
|
+
const props = defineProps({
|
|
27
|
+
config: Object
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
const model = defineModel({
|
|
31
|
+
type: Number,
|
|
32
|
+
default: 0
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
const localValue = ref(model.value)
|
|
36
|
+
|
|
37
|
+
watch(model, (val) => {
|
|
38
|
+
localValue.value = val
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const updateValue = () => {
|
|
42
|
+
model.value = localValue.value
|
|
43
|
+
}
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<style>
|
|
47
|
+
.range-slider input[type="range"] {
|
|
48
|
+
-webkit-appearance: none;
|
|
49
|
+
appearance: none;
|
|
50
|
+
height: 6px;
|
|
51
|
+
background: var(--color-light);
|
|
52
|
+
border-radius: 3px;
|
|
53
|
+
outline: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.range-slider input[type="range"]::-webkit-slider-thumb {
|
|
57
|
+
-webkit-appearance: none;
|
|
58
|
+
appearance: none;
|
|
59
|
+
width: 18px;
|
|
60
|
+
height: 18px;
|
|
61
|
+
background: var(--color-primary);
|
|
62
|
+
border-radius: 50%;
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.range-slider input[type="range"]::-moz-range-thumb {
|
|
67
|
+
width: 18px;
|
|
68
|
+
height: 18px;
|
|
69
|
+
background: var(--color-primary);
|
|
70
|
+
border-radius: 50%;
|
|
71
|
+
cursor: pointer;
|
|
72
|
+
border: none;
|
|
73
|
+
}
|
|
74
|
+
</style>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button.vue.js","sources":["../../../../../src/components/Button/Button.vue"],"sourcesContent":["<script setup>\n\timport { ref } from 'vue'\n\n\timport Loader from '@martyrs/src/components/Loader/Loader.vue'\n\n\tconst props = defineProps({\n\t\tsubmit: {\n\t\t\ttype: Function,\n\t\t\tdefault: async () => { console.log('Button click.') }\n\t\t},\n\t\ttext: {\n\t\t\ttype: Object,\n\t\t\tdefault: (textComponent) => {\n\t\t\t\treturn textComponent = {\n\t\t\t\t\t...textComponent.text,\n\t\t\t\t\tsuccess: '✔',\n\t\t\t\t\terror: '✖'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcounter: {\n\t type: Object\n\t },\n\t\tcallback: {\n\t\t\ttype: Function,\n\t\t\tdefault: async () => { console.log('Button callback.') }\n\t\t},\n\t\tcallbackDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 750\n\t\t},\n\t\tshowSucces: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tshowLoader: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tvalidation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t})\t\n\n\tconst emits = defineEmits(['error'])\n\n\tconst button = ref(null);\n\tconst error = ref(null);\n\tconst loading = ref(false);\n\tconst finished = ref(false);\n\n\tasync function Submit() {\n\t\t\tconsole.log('click')\n\t\t\t\n\t button.value.style['pointer-events'] = 'none';\n\t error.value = null;\n\t loading.value = true;\n\n\t // Функция для сброса состояния кнопки.\n\t const resetButton = () => {\n if (button.value) {\n // button.value.classList.replace('bg-second', 'bg-main');\n button.value.style.pointerEvents = 'auto';\n loading.value = false;\n finished.value = false;\n error.value = null;\n }\n\t };\n\n\t try {\n await props.submit();\n\n button.value.classList.replace('bg-main', 'bg-second');\n\n loading.value = false;\n\n // Используем функцию сброса состояния кнопки здесь.\n if (props.showSucces) { \n\t\t\t\t\tfinished.value = true;\n setTimeout(resetButton, 500);\n } else {\n resetButton();\n }\n\n // Если есть callback, мы также установим таймер для его вызова.\n if (props.callback) setTimeout(() => props.callback(), props.callbackDelay);\n\n\t } catch (err) {\n \t\temits('error',err)\n // Если возникла ошибка, мы изменяем стили и устанавливаем сообщение об ошибке.\n button.value.classList.replace('bg-main', 'bg-fourth-nano');\n error.value = props.error;\n \n // После задержки снова сбрасываем состояние кнопки.\n setTimeout(() => {\n resetButton();\n // Так как класс кнопки был изменен, вернем его в исходное состояние.\n button.value.classList.replace('bg-fourth-nano', 'bg-main');\n }, 1330);\n\t }\n\t}\n\n</script>\n\n<template>\n\t<button @click.stop=\"Submit\" :disabled=\"validation\" ref=\"button\" class=\"button\">\n\t\t<transition name=\"FromTop\" >\n\t\t\t<!-- Slot -->\n\t\t\t<template v-if=\"!loading && !error && !finished || !showLoader\"><slot></slot></template>\n\t\t\t<!-- Loading Circle Animation -->\n\t\t\t<template v-else-if=\"loading && !error && showLoader\"><Loader class=\"pos-relative pos-t-0 pos-l-0 loading\"/></template>\n\t\t\t<!-- <Loader v-else-if=\"loading && !error && showLoader\"/> -->\n\t\t\t<!-- Success -->\n\t\t\t<span v-else-if=\"finished && showSucces\" class=\"t-semi t-center w-100 loading t-black\">{{text.success}}</span>\n\t\t\t<!-- Error if not finished -->\n\t\t\t<span v-else-if=\"error\" class=\"t-center w-100 error\">{{ error }}</span>\n\t\t</transition>\n\t\t<!-- Counter -->\n\t\t<div v-if=\"counter\" class=\"button-counter flex-center\"><span>{{counter}}</span></div> \n\n\t</button> \n</template>\n\n\n<style lang=\"scss\">\n\t.FromTop-enter-active,\n\t.FromTop-leave-active {\n\t\ttransform: translateY(0);\n\t\topacity: 1;\n\t\ttransition: all 0.5s ease; \n\t\t\n\t}\n\t.FromTop-enter-from,\n\t.FromTop-leave-to {\n\t\tposition: absolute;\n\t\ttransform: translateY(-1rem);\n\t\topacity: 0;\n\t\ttransition: all 0.5s ease;\n\t}\n\n\tbutton[disabled] {\n\t\topacity: 0.75 !important;\n\t \tpointer-events: none !important;\n\t \tcursor: default !important;\n\t \tcolor: rgba(var(--dark), 0.33) !important;\n\t\tbackground: rgba(var(--light), 1) !important; \n\t}\n\n\ta.button {\n\t\t\ttext-box: trim-both cap alphabetic;\n\t}\n\n\t.button {\n\t\tdisplay: flex;\n\n\t\tpadding: 0.5rem;\n\t\tborder-radius: 3rem;\n\t\ttext-box: trim-both cap alphabetic;\n\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\t\n\t\tcolor: black;\n\t\ttext-align: center;\n\t\ttext-transform: uppercase;\n\t\tfont-size: 1rem;\n\t\tletter-spacing: 5%;\n\n\t\ttransition: all 0.33s ease;\n\t \n\t\t&:hover {\n\t\t\tcursor: pointer;\n\t\t\topacity: 0.9;\n\t\t}\n\n\t\t&:active {\n\t\t\ttransform: scale(0.95);\n\t\t}\n\n\t\t&-small {\n\t\t\tpadding: 0.75rem;\n\t\t\tborder-radius: 0.5rem;\n\t\t\theight: fit-content;\n\t\t}\n\n\t\t.button-counter {\n\t\t\tposition: absolute;\n\t\t\tright: -8px;\n\t bottom: -8px;\n\t background: yellow;\n\t height: 16px;\n\t border-radius: 16px;\n\t width: 16px;\n\t font-weight: 500;\n\t text-align: center;\n\t line-height: 16px;\n\t font-size: 10px;\n\t\t}\n\t}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKC,UAAM,QAAQ;AAwCd,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;AAEjB,aAAO,MAAM,MAAM,gBAAgB,IAAI;AACvC,YAAM,QAAQ;AACd,cAAQ,QAAQ;AAGhB,YAAM,cAAc,MAAM;AACvB,YAAI,OAAO,OAAO;AAEhB,iBAAO,MAAM,MAAM,gBAAgB;AACnC,kBAAQ,QAAQ;AAChB,mBAAS,QAAQ;AACjB,gBAAM,QAAQ;AAAA,QACxB;AAAA,MACM;AAED,UAAI;AACD,cAAM,MAAM,OAAQ;AAEpB,eAAO,MAAM,UAAU,QAAQ,WAAW,WAAW;AAErD,gBAAQ,QAAQ;AAGhB,YAAI,MAAM,YAAY;AACzB,mBAAS,QAAQ;AACZ,qBAAW,aAAa,GAAG;AAAA,QACrC,OAAe;AACL,sBAAa;AAAA,QACvB;AAGQ,YAAI,MAAM,SAAU,YAAW,MAAM,MAAM,SAAU,GAAE,MAAM,aAAa;AAAA,MAE5E,SAAQ,KAAK;AACb,cAAM,SAAQ,GAAG;AAEf,eAAO,MAAM,UAAU,QAAQ,WAAW,gBAAgB;AAC1D,cAAM,QAAQ,MAAM;AAGpB,mBAAW,MAAM;AACf,sBAAa;AAEb,iBAAO,MAAM,UAAU,QAAQ,kBAAkB,SAAS;AAAA,QAC3D,GAAE,IAAI;AAAA,MACf;AAAA,IACA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chips.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chips.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.vue.js","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div class=\"dropdown pos-relative\" v-click-outside=\"clickedOutside\" @click.stop=\"isOpen = !isOpen\">\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 <transition name=\"TransitionTranslateY\" mode=\"out-in\">\n <div \n v-show=\"isOpen\" \n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\" \n class=\"dropdown-content radius-big\" \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})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nfunction clickedOutside () {\n isOpen.value = false\n}\n</script>\n\n<style >\n.dropdown-content {\n display: block;\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n}\n\n/*.dropdown:hover .dropdown-content {\n display: block;\n}*/\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,QAAI,gBAAgB;AAEpB,UAAM,QAAQ;AAWd,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,mBAAmB,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,aAAS,iBAAkB;AACzB,aAAO,QAAQ;AAAA,IACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|