@ozdao/martyrs 0.2.494 → 0.2.496
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/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +4 -4
- package/dist/_virtual/index2.js +4 -4
- package/dist/builder.cjs +41 -42
- package/dist/builder.js +43 -44
- package/dist/globals.server.cjs +13 -2
- package/dist/globals.server.js +13 -2
- package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +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 +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +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/Tooltip/{Tooltip.vue2.cjs → Tooltip.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js.map → Tooltip.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- 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 +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- 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/pages/Event.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.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/layouts/Client.vue.cjs +28 -13
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +28 -13
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +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/router/scrollBehavior.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +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.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +95 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +95 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +2 -2
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +127 -175
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +136 -184
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +5 -5
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +5 -5
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +97 -144
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +113 -160
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +7 -7
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +7 -7
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +164 -170
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +185 -191
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +2 -2
- package/dist/martyrs/src/modules/music/router/music.js +2 -2
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +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/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/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/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.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/products/components/blocks/ProductDiscounts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- 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/wallet/views/components/pages/Wallet.vue.cjs +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
- package/dist/martyrs.css +1 -1
- package/dist/style.css +18 -5
- package/package.json +1 -1
- package/src/builder/rspack/rspack.config.ssr.client.js +40 -40
- package/src/modules/globals/controllers/classes/globals.websocket.js +11 -2
- package/src/modules/globals/globals.client.js +1 -2
- package/src/modules/globals/views/components/layouts/Client.vue +13 -11
- package/src/modules/globals/views/router/scrollBehavior.js +1 -1
- package/src/modules/music/README.md +2 -0
- package/src/modules/music/components/SidebarMusic.vue +7 -7
- package/src/modules/music/components/cards/ArtistCardSmall.vue +92 -0
- package/src/modules/music/components/cards/TrackListCard.vue +1 -1
- package/src/modules/music/components/forms/SearchForm.vue +1 -1
- package/src/modules/music/components/pages/Album.vue +44 -83
- package/src/modules/music/components/pages/Artist.vue +5 -5
- package/src/modules/music/components/pages/MusicLibrary.vue +5 -5
- package/src/modules/music/components/pages/Playlist.vue +35 -53
- package/src/modules/music/components/pages/SearchResults.vue +6 -6
- package/src/modules/music/components/pages/Track.vue +66 -87
- package/src/modules/music/music.client.js +1 -1
- package/src/modules/notifications/notifications.client.js +1 -1
- package/src/styles/base/all.scss +1 -0
- 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/Tooltip/Tooltip.vue2.cjs.map +0 -1
package/dist/style.css
CHANGED
|
@@ -3125,6 +3125,19 @@ to {
|
|
|
3125
3125
|
transform: scale(1);
|
|
3126
3126
|
}
|
|
3127
3127
|
|
|
3128
|
+
.artist-card[data-v-7fd022f7] {
|
|
3129
|
+
transition: all 0.2s ease;
|
|
3130
|
+
}
|
|
3131
|
+
.artist-card[data-v-7fd022f7]:hover {
|
|
3132
|
+
transform: translateY(-5px);
|
|
3133
|
+
}
|
|
3134
|
+
.artist-avatar img[data-v-7fd022f7] {
|
|
3135
|
+
transition: transform 0.2s ease;
|
|
3136
|
+
}
|
|
3137
|
+
.artist-card:hover .artist-avatar img[data-v-7fd022f7] {
|
|
3138
|
+
transform: scale(1.05);
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3128
3141
|
.playlist-card[data-v-be2a71af] {
|
|
3129
3142
|
transition: transform 0.3s ease;
|
|
3130
3143
|
}
|
|
@@ -3162,20 +3175,20 @@ to {
|
|
|
3162
3175
|
background: linear-gradient(to bottom, rgba(var(--dark), 0.8), rgba(var(--black), 0.9));
|
|
3163
3176
|
}
|
|
3164
3177
|
|
|
3165
|
-
.bg-gradient-color[data-v-
|
|
3178
|
+
.bg-gradient-color[data-v-e47a0d68] {
|
|
3166
3179
|
background: var(--gradient-color, linear-gradient(135deg, #1DB954, #1ED760));
|
|
3167
3180
|
}
|
|
3168
3181
|
|
|
3169
|
-
.search-form[data-v-
|
|
3182
|
+
.search-form[data-v-fa80a365] {
|
|
3170
3183
|
transition: background-color 0.2s ease;
|
|
3171
3184
|
}
|
|
3172
|
-
.search-form[data-v-
|
|
3185
|
+
.search-form[data-v-fa80a365]:focus-within {
|
|
3173
3186
|
background-color: rgba(var(--dark), 0.8);
|
|
3174
3187
|
}
|
|
3175
|
-
input[data-v-
|
|
3188
|
+
input[data-v-fa80a365]::placeholder {
|
|
3176
3189
|
color: rgba(var(--grey), 0.8);
|
|
3177
3190
|
}
|
|
3178
|
-
input[data-v-
|
|
3191
|
+
input[data-v-fa80a365]:focus {
|
|
3179
3192
|
outline: none;
|
|
3180
3193
|
}
|
|
3181
3194
|
|
package/package.json
CHANGED
|
@@ -67,47 +67,47 @@ export default (projectRoot) => {
|
|
|
67
67
|
}),
|
|
68
68
|
// PWA PWA PWA PWA PWA
|
|
69
69
|
// PWA: инжектим манифест в существующий sw.js
|
|
70
|
-
new InjectManifest({
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}),
|
|
70
|
+
// new InjectManifest({
|
|
71
|
+
// swSrc: path.resolve(projectRoot, '../public/sw.js'),
|
|
72
|
+
// swDest: 'sw.js',
|
|
73
|
+
// exclude: [/\.html$/, /\.map$/],
|
|
74
|
+
// manifestTransforms: [
|
|
75
|
+
// (manifestEntries) => {
|
|
76
|
+
// const manifest = manifestEntries.filter(entry => {
|
|
77
|
+
// return !entry.url.match(/\.(html|map)$/) && entry.size < 5 * 1024 * 1024;
|
|
78
|
+
// });
|
|
79
|
+
// return { manifest };
|
|
80
|
+
// }
|
|
81
|
+
// ]
|
|
82
|
+
// }),
|
|
83
83
|
// // PWA Manifest
|
|
84
|
-
new RspackManifestPlugin({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}),
|
|
84
|
+
// new RspackManifestPlugin({
|
|
85
|
+
// fileName: 'manifest.json',
|
|
86
|
+
// seed: {
|
|
87
|
+
// name: process.env.APP_NAME || 'OZDAO App',
|
|
88
|
+
// short_name: process.env.APP_SHORT_NAME || 'OZDAO',
|
|
89
|
+
// description: process.env.APP_DESCRIPTION || 'OZDAO Progressive Web App',
|
|
90
|
+
// theme_color: '#000000',
|
|
91
|
+
// background_color: '#ffffff',
|
|
92
|
+
// display: 'standalone',
|
|
93
|
+
// orientation: 'portrait',
|
|
94
|
+
// scope: '/',
|
|
95
|
+
// start_url: '/',
|
|
96
|
+
// icons: [
|
|
97
|
+
// {
|
|
98
|
+
// src: '/favicon/android-chrome-192x192.png',
|
|
99
|
+
// sizes: '192x192',
|
|
100
|
+
// type: 'image/png'
|
|
101
|
+
// },
|
|
102
|
+
// {
|
|
103
|
+
// src: '/favicon/android-chrome-512x512.png',
|
|
104
|
+
// sizes: '512x512',
|
|
105
|
+
// type: 'image/png'
|
|
106
|
+
// }
|
|
107
|
+
// ]
|
|
108
|
+
// },
|
|
109
|
+
// generate: (seed) => seed
|
|
110
|
+
// }),
|
|
111
111
|
],
|
|
112
112
|
optimization: {
|
|
113
113
|
usedExports: true,
|
|
@@ -2,9 +2,18 @@ import * as cookie from 'cookie';
|
|
|
2
2
|
import jwt from 'jsonwebtoken';
|
|
3
3
|
import uWS from 'uWebSockets.js';
|
|
4
4
|
class WebSocketManager {
|
|
5
|
-
constructor() {
|
|
5
|
+
constructor(options = {}) {
|
|
6
6
|
// Создаем uWebSockets.js приложение внутри класса
|
|
7
|
-
|
|
7
|
+
if (options.ssl) {
|
|
8
|
+
this.app = uWS.SSLApp({
|
|
9
|
+
key_file_name: options.ssl.key, // путь к private key
|
|
10
|
+
cert_file_name: options.ssl.cert, // путь к certificate
|
|
11
|
+
passphrase: options.ssl.passphrase // если ключ защищен паролем
|
|
12
|
+
});
|
|
13
|
+
} else {
|
|
14
|
+
// Fallback на обычный HTTP для разработки
|
|
15
|
+
this.app = uWS.App();
|
|
16
|
+
};
|
|
8
17
|
this.modules = new Map();
|
|
9
18
|
this.userConnections = new Map();
|
|
10
19
|
// Добавляем контейнер для RPC методов
|
|
@@ -44,12 +44,11 @@ function initializeGlobals(app, store, router, config, options = {}) {
|
|
|
44
44
|
|
|
45
45
|
i18nManager.register('globals', locales);
|
|
46
46
|
|
|
47
|
-
console.log('mesages is', i18nManager.getAllMessages())
|
|
48
|
-
|
|
49
47
|
const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];
|
|
50
48
|
|
|
51
49
|
app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;
|
|
52
50
|
app.config.globalProperties.API_URL = process.env.API_URL;
|
|
51
|
+
app.config.globalProperties.WSS_URL = process.env.WSS_URL;
|
|
53
52
|
app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;
|
|
54
53
|
app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;
|
|
55
54
|
app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
</component>
|
|
107
107
|
<!-- rows-1-min0_max1 z-index-1 pos-relative w-100 h-100 -->
|
|
108
108
|
<div class="rows-1-min0_max1 z-index-1 pos-relative w-100 h-100">
|
|
109
|
-
<div class="o-y-scroll o-x-hidden h-100">
|
|
109
|
+
<div id="scrollview" ref="scrollview" class="o-y-scroll o-x-hidden h-100">
|
|
110
110
|
<Status
|
|
111
111
|
v-if="globals.state.error.show"
|
|
112
112
|
:data="globals.state.error"
|
|
@@ -157,15 +157,16 @@
|
|
|
157
157
|
class="z-index-2"
|
|
158
158
|
:is="route.meta.player"
|
|
159
159
|
/>
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
160
|
+
<transition @before-enter="scrollTop" name="scaleTransition" mode="out-in" appear>
|
|
161
|
+
<component
|
|
162
|
+
v-if="!MOBILE_APP && route.meta.footer && !route.meta.hideFooter && page && !isPageLoading"
|
|
163
|
+
ref="footer"
|
|
164
|
+
:is="route.meta.footer"
|
|
165
|
+
:theme="headerTheme"
|
|
166
|
+
:logotype="route.meta.logotype"
|
|
167
|
+
:location="route.meta.location"
|
|
168
|
+
/>
|
|
169
|
+
</transition>
|
|
169
170
|
</div>
|
|
170
171
|
</div>
|
|
171
172
|
</section>
|
|
@@ -232,6 +233,7 @@
|
|
|
232
233
|
let show = ref(false)
|
|
233
234
|
// Preloader
|
|
234
235
|
const page = ref(null)
|
|
236
|
+
const scrollview = ref(null)
|
|
235
237
|
|
|
236
238
|
const isPageLoading = ref(true);
|
|
237
239
|
|
|
@@ -265,7 +267,7 @@
|
|
|
265
267
|
globals.state.isOpenLocationPopup = false;
|
|
266
268
|
}
|
|
267
269
|
function scrollTop(){
|
|
268
|
-
|
|
270
|
+
scrollview.value.scrollTop = 0;
|
|
269
271
|
}
|
|
270
272
|
// Scrolling header
|
|
271
273
|
const scrollOffset = ref(0)
|
|
@@ -16,7 +16,7 @@ export default async function scrollBehavior(to, from, savedPosition) {
|
|
|
16
16
|
|
|
17
17
|
if (to.hash) {
|
|
18
18
|
let el = await findEl(to.hash);
|
|
19
|
-
let screen = await findEl('#
|
|
19
|
+
let screen = await findEl('#scrollview');
|
|
20
20
|
|
|
21
21
|
if ('scrollBehavior' in document.documentElement.style) {
|
|
22
22
|
return screen.scrollTo({ top: el.offsetTop, behavior: 'smooth' });
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Music Module
|
|
2
2
|
|
|
3
3
|
## Задачи
|
|
4
|
+
1. Отрефачить карточку ArtistCardSmall - декомпозировать пропс artist, заменить ArtistCard на ArtistCardSmall и оставить только ArtistCard.
|
|
5
|
+
2. Кнопка проигрывания должна показывать паузу на треке только если это текущий трек!
|
|
4
6
|
|
|
5
7
|
### Оптимизация подсчета воспроизведений
|
|
6
8
|
- [ ] Перенести увеличение playCount из HTTP stream controller в WebSocket handler
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<li>
|
|
15
15
|
<router-link :to="{ name: 'music-home' }"
|
|
16
16
|
class="flex-v-center flex gap-small pd-thin radius-small"
|
|
17
|
-
:class="$route.name === 'music-home' ? 'bg-
|
|
17
|
+
:class="$route.name === 'music-home' ? 'bg-white' : 'hover-bg-white'"
|
|
18
18
|
>
|
|
19
19
|
<IconHome class="i-medium" :fill="$route.name === 'music-home' ? 'rgb(var(--main))' : 'rgb(var(--white))'"/>
|
|
20
20
|
<span class="t-medium" :class="$route.name === 'music-home' ? 't-main' : ''">Home</span>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<li>
|
|
24
24
|
<router-link :to="{ name: 'music-search' }"
|
|
25
25
|
class="flex-v-center flex gap-small pd-thin radius-small"
|
|
26
|
-
:class="$route.name === 'music-search' ? 'bg-
|
|
26
|
+
:class="$route.name === 'music-search' ? 'bg-white' : 'hover-bg-white'"
|
|
27
27
|
>
|
|
28
28
|
<IconSearch class="i-medium" :fill="$route.name === 'music-search' ? 'rgb(var(--main))' : 'rgb(var(--white))'"/>
|
|
29
29
|
<span class="t-medium" :class="$route.name === 'music-search' ? 't-main' : ''">Search</span>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<li>
|
|
33
33
|
<router-link :to="{ name: 'music-library' }"
|
|
34
34
|
class="flex-v-center flex gap-small pd-thin radius-small"
|
|
35
|
-
:class="$route.name === 'music-library' ? 'bg-
|
|
35
|
+
:class="$route.name === 'music-library' ? 'bg-white' : 'hover-bg-white'"
|
|
36
36
|
>
|
|
37
37
|
<IconLibrary class="i-medium" :fill="$route.name === 'music-library' ? 'rgb(var(--main))' : 'rgb(var(--white))'"/>
|
|
38
38
|
<span class="t-medium" :class="$route.name === 'music-library' ? 't-main' : ''">Your Library</span>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<h4 class="t-transp t-medium">YOUR PLAYLISTS</h4>
|
|
47
47
|
<Button
|
|
48
48
|
@click="showCreatePlaylistModal = true"
|
|
49
|
-
class="bg-transparent cursor-pointer pd-micro radius-small hover-bg-
|
|
49
|
+
class="bg-transparent cursor-pointer pd-micro radius-small hover-bg-white"
|
|
50
50
|
:showLoader="false"
|
|
51
51
|
:showSucces="false"
|
|
52
52
|
>
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
<li v-for="playlist in items" :key="playlist._id" class="mn-b-thin">
|
|
73
73
|
<router-link
|
|
74
74
|
:to="{ name: 'playlist', params: { url: playlist.url } }"
|
|
75
|
-
class=" t-truncate d-block pd-thin radius-small hover-bg-
|
|
76
|
-
:class="$route.params.url === playlist.url ? 'bg-
|
|
75
|
+
class=" t-truncate d-block pd-thin radius-small hover-bg-white"
|
|
76
|
+
:class="$route.params.url === playlist.url ? 'bg-white t-main' : ''"
|
|
77
77
|
>
|
|
78
78
|
{{ playlist.title }}
|
|
79
79
|
</router-link>
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
<Popup
|
|
88
88
|
v-if="showCreatePlaylistModal"
|
|
89
89
|
@close-popup="showCreatePlaylistModal = false"
|
|
90
|
-
class="bg-
|
|
90
|
+
class="bg-white pd-small w-m-25r radius-medium "
|
|
91
91
|
>
|
|
92
92
|
<h3 class="mn-b-medium">Create Playlist</h3>
|
|
93
93
|
<PlaylistForm @created="onPlaylistCreated" />
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<!-- components/cards/ArtistCard.vue -->
|
|
2
|
+
<template>
|
|
3
|
+
<div class="artist-card bg-light pd-medium radius-medium flex flex-center gap-big">
|
|
4
|
+
<router-link
|
|
5
|
+
:to="artist.url ? { name: 'artist', params: { url: artist.url } } : artist.to"
|
|
6
|
+
class="flex flex-v-center gap-thin flex-1 hover-opacity"
|
|
7
|
+
>
|
|
8
|
+
<div class="artist-avatar">
|
|
9
|
+
<Media
|
|
10
|
+
v-if="artist.photoUrl"
|
|
11
|
+
:url="artist.photoUrl"
|
|
12
|
+
:alt="artist.name"
|
|
13
|
+
class="w-4r h-4r radius-full object-fit-cover"
|
|
14
|
+
/>
|
|
15
|
+
<div v-else class="w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center">
|
|
16
|
+
{{ artist.name.charAt(0) }}
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div>
|
|
21
|
+
<div class="flex items-center gap-thin">
|
|
22
|
+
<span class="mn-b-thin">{{ artist.name }}</span>
|
|
23
|
+
<IconVerified v-if="artist.isVerified" class="w-1r h-1r t-primary" />
|
|
24
|
+
</div>
|
|
25
|
+
<span class="t-small t-transp">{{ artistType }}</span>
|
|
26
|
+
</div>
|
|
27
|
+
</router-link>
|
|
28
|
+
|
|
29
|
+
<Button
|
|
30
|
+
v-if="showFollowButton"
|
|
31
|
+
@click="handleFollowClick"
|
|
32
|
+
:color="isFollowing ? 'primary' : 'transp'"
|
|
33
|
+
size="small"
|
|
34
|
+
class="bg-main"
|
|
35
|
+
>
|
|
36
|
+
{{ isFollowing ? 'Following' : 'Follow' }}
|
|
37
|
+
</Button>
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
40
|
+
|
|
41
|
+
<script setup>
|
|
42
|
+
import { computed } from 'vue';
|
|
43
|
+
import Button from '@martyrs/src/components/Button/Button.vue';
|
|
44
|
+
import Media from '@martyrs/src/components/Media/Media.vue';
|
|
45
|
+
import IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';
|
|
46
|
+
|
|
47
|
+
const props = defineProps({
|
|
48
|
+
artist: {
|
|
49
|
+
type: Object,
|
|
50
|
+
required: true,
|
|
51
|
+
validator: (value) => {
|
|
52
|
+
return value._id && value.name && value.url;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
isFollowing: {
|
|
56
|
+
type: Boolean,
|
|
57
|
+
default: false
|
|
58
|
+
},
|
|
59
|
+
showFollowButton: {
|
|
60
|
+
type: Boolean,
|
|
61
|
+
default: true
|
|
62
|
+
},
|
|
63
|
+
artistType: {
|
|
64
|
+
type: String,
|
|
65
|
+
default: 'Artist'
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const emit = defineEmits(['toggle-follow']);
|
|
70
|
+
|
|
71
|
+
const handleFollowClick = () => {
|
|
72
|
+
emit('toggle-follow', props.artist._id);
|
|
73
|
+
};
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<style scoped>
|
|
77
|
+
.artist-card {
|
|
78
|
+
transition: all 0.2s ease;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.artist-card:hover {
|
|
82
|
+
transform: translateY(-5px);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.artist-avatar img {
|
|
86
|
+
transition: transform 0.2s ease;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.artist-card:hover .artist-avatar img {
|
|
90
|
+
transform: scale(1.05);
|
|
91
|
+
}
|
|
92
|
+
</style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- components/cards/TrackListCard.vue -->
|
|
2
2
|
<template>
|
|
3
3
|
<div
|
|
4
|
-
class="track-item pd-small hover-bg-
|
|
4
|
+
class="track-item pd-small hover-bg-white-transp-25 flex-v-center flex cursor-pointer"
|
|
5
5
|
:class="{'bg-main-transp-10': isPlaying(track)}"
|
|
6
6
|
@click="playTrack(track)"
|
|
7
7
|
@dblclick="playTrack(track, true)"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- components/forms/SearchForm.vue -->
|
|
2
2
|
<template>
|
|
3
|
-
<div class="search-form flex-v-center flex bg-
|
|
3
|
+
<div class="search-form flex-v-center flex bg-white-transp-50 pd-thin radius-extra">
|
|
4
4
|
<IconSearch class="i-small mn-r-small" fill="rgb(var(--grey))"/>
|
|
5
5
|
<input
|
|
6
6
|
ref="searchInput"
|