itube-specs 0.0.793 → 0.0.795
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/README.md +18 -25
- package/components/adv/native-banner.vue +22 -17
- package/components/adv/native-bottom.vue +8 -6
- package/components/adv/native-player.vue +8 -6
- package/components/adv/ntv.vue +4 -3
- package/components/auth/icon.vue +4 -3
- package/components/auth/login.vue +39 -33
- package/components/auth/popup.vue +30 -24
- package/components/auth/recovery.vue +29 -24
- package/components/auth/register.vue +59 -50
- package/components/card/category-mini.vue +6 -4
- package/components/card/category.vue +25 -21
- package/components/card/channel-mini.vue +17 -13
- package/components/card/channel.vue +36 -29
- package/components/card/model-mini.vue +24 -19
- package/components/card/model.vue +43 -33
- package/components/card/playlist-mini.vue +19 -16
- package/components/card/playlist.vue +97 -73
- package/components/card/round.vue +16 -13
- package/components/card/video/dropdown.vue +55 -41
- package/components/card/video/index.vue +99 -81
- package/components/card/video/mini.vue +19 -15
- package/components/card/video/preview.vue +7 -6
- package/components/category/by-letter.vue +4 -3
- package/components/category/group.vue +18 -13
- package/components/category/letter-groups.vue +4 -3
- package/components/category/list.vue +19 -16
- package/components/category/nav.vue +15 -12
- package/components/filter/btn.vue +13 -10
- package/components/filter/chips.vue +8 -7
- package/components/filter/main.vue +27 -23
- package/components/filter/model-field.vue +43 -38
- package/components/filter/model.vue +33 -28
- package/components/filter/page.vue +53 -43
- package/components/filter/popup.vue +75 -60
- package/components/filter/selects.vue +63 -49
- package/components/filter/slider.vue +23 -20
- package/components/filter/videos-chips.vue +3 -2
- package/components/grid/categories.vue +5 -4
- package/components/grid/channels.vue +9 -7
- package/components/grid/models.vue +10 -8
- package/components/grid/playlists.vue +6 -5
- package/components/grid/videos.vue +35 -31
- package/components/info/grid.vue +43 -34
- package/components/info/main.vue +94 -71
- package/components/info/socials.vue +13 -11
- package/components/layout/burger-item.vue +44 -36
- package/components/layout/burger.vue +45 -35
- package/components/layout/cookie.vue +14 -11
- package/components/layout/extra-links.vue +6 -5
- package/components/layout/footer-language.vue +35 -28
- package/components/layout/header-user.vue +66 -51
- package/components/layout/header.vue +55 -42
- package/components/layout/language.vue +67 -54
- package/components/layout/logo.vue +11 -9
- package/components/layout/nav.vue +36 -29
- package/components/layout/skip-link.vue +3 -2
- package/components/player/aside-videos.vue +10 -8
- package/components/player/autoplay.vue +7 -5
- package/components/player/channel.vue +25 -19
- package/components/player/core.vue +11 -10
- package/components/player/follow.vue +17 -13
- package/components/player/info.vue +9 -6
- package/components/player/interface.vue +50 -38
- package/components/player/like.vue +32 -24
- package/components/player/main.vue +12 -10
- package/components/player/playlist.vue +79 -61
- package/components/player/sponsored.vue +20 -16
- package/components/playlist/add.vue +89 -71
- package/components/playlist/delete-video.vue +23 -18
- package/components/playlist/edit.vue +64 -49
- package/components/playlist/input.vue +32 -24
- package/components/playlist/main.vue +21 -18
- package/components/playlist/private-toggle.vue +4 -3
- package/components/profile/delete.vue +7 -6
- package/components/profile/guest.vue +10 -7
- package/components/profile/password.vue +25 -22
- package/components/profile/setup.vue +88 -71
- package/components/report/main.vue +89 -71
- package/components/search/input.vue +37 -31
- package/components/search/item.vue +22 -18
- package/components/search/main.vue +34 -26
- package/components/search/result.vue +72 -57
- package/components/section/categories-island.server.vue +7 -5
- package/components/section/categories.vue +4 -3
- package/components/section/models.vue +4 -3
- package/components/section/nav-links.vue +8 -7
- package/components/section/seo-text.vue +9 -6
- package/components/section/swiper-cards.vue +19 -14
- package/components/section/toolbar.vue +26 -20
- package/components/share/main.vue +32 -26
- package/components/ui/avatar.vue +10 -8
- package/components/ui/breadcrumbs.vue +33 -25
- package/components/ui/btn.vue +13 -12
- package/components/ui/checkbox.vue +21 -17
- package/components/ui/chips.vue +33 -29
- package/components/ui/count.vue +4 -3
- package/components/ui/dropdown.vue +42 -34
- package/components/ui/empty-state.vue +11 -9
- package/components/ui/expand-row.vue +34 -28
- package/components/ui/full-descr.vue +6 -4
- package/components/ui/icon.vue +4 -3
- package/components/ui/img.vue +11 -10
- package/components/ui/input.vue +75 -66
- package/components/ui/label.vue +4 -3
- package/components/ui/link.vue +20 -18
- package/components/ui/notification.vue +22 -17
- package/components/ui/pagination.vue +89 -76
- package/components/ui/popup.vue +39 -30
- package/components/ui/radio.vue +17 -14
- package/components/ui/section-title.vue +20 -15
- package/components/ui/segmented.vue +19 -15
- package/components/ui/select.vue +44 -35
- package/components/ui/slider.vue +16 -13
- package/components/ui/snackbar.vue +7 -5
- package/components/ui/swiper.vue +32 -24
- package/components/ui/toggle.vue +17 -14
- package/components/ui/tooltip.vue +15 -12
- package/components/view/model-videos.vue +71 -57
- package/components/view/models.vue +71 -57
- package/components/view/video.vue +64 -51
- package/components/view/videos.vue +55 -45
- package/package.json +1 -1
|
@@ -1,75 +1,89 @@
|
|
|
1
1
|
<!-- Дропдаун-меню видео: добавить в плейлист, смотреть позже, поделиться, пожаловаться -->
|
|
2
2
|
<template>
|
|
3
|
-
<UiDropdown
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
<UiDropdown
|
|
4
|
+
ref="dropdownRef"
|
|
5
|
+
right
|
|
6
|
+
use-v-if
|
|
7
|
+
v-bind="$attrs"
|
|
7
8
|
>
|
|
8
9
|
<template #trigger>
|
|
9
10
|
<slot name="trigger">
|
|
10
|
-
<button
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
<button
|
|
12
|
+
:aria-label="$t('open_menu')"
|
|
13
|
+
class="card-video-dropdown__trigger"
|
|
14
|
+
type="button"
|
|
15
|
+
@click="emit('triggerClick', $event)"
|
|
14
16
|
>
|
|
15
|
-
<UiIcon
|
|
16
|
-
|
|
17
|
+
<UiIcon
|
|
18
|
+
name="dots-vertical"
|
|
19
|
+
size="18"
|
|
17
20
|
/>
|
|
18
21
|
</button>
|
|
19
22
|
</slot>
|
|
20
23
|
</template>
|
|
21
24
|
<template #header>
|
|
22
|
-
<CardVideoMini
|
|
23
|
-
|
|
25
|
+
<CardVideoMini
|
|
26
|
+
:card="card"
|
|
27
|
+
class="card-video-dropdown__preview _to-md"
|
|
24
28
|
/>
|
|
25
29
|
</template>
|
|
26
30
|
<template #items="className">
|
|
27
|
-
<button
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
<button
|
|
32
|
+
:class="className"
|
|
33
|
+
type="button"
|
|
34
|
+
@click="onAddPlaylist"
|
|
30
35
|
>
|
|
31
|
-
<UiIcon
|
|
32
|
-
|
|
36
|
+
<UiIcon
|
|
37
|
+
name="star"
|
|
38
|
+
size="20"
|
|
33
39
|
/>
|
|
34
40
|
{{ $t('video_submenu.add_to') }}
|
|
35
41
|
</button>
|
|
36
|
-
<button
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
<button
|
|
43
|
+
v-if="showWatchLater"
|
|
44
|
+
:class="className"
|
|
45
|
+
type="button"
|
|
46
|
+
@click="emit('watchLater')"
|
|
40
47
|
>
|
|
41
|
-
<UiIcon
|
|
42
|
-
|
|
48
|
+
<UiIcon
|
|
49
|
+
name="time"
|
|
50
|
+
size="20"
|
|
43
51
|
/>
|
|
44
52
|
{{ $t('video_submenu.watch_later') }}
|
|
45
53
|
</button>
|
|
46
|
-
<button
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
<button
|
|
55
|
+
v-if="showShare"
|
|
56
|
+
:class="className"
|
|
57
|
+
type="button"
|
|
58
|
+
@click="onShare"
|
|
50
59
|
>
|
|
51
|
-
<UiIcon
|
|
52
|
-
|
|
60
|
+
<UiIcon
|
|
61
|
+
name="share"
|
|
62
|
+
size="20"
|
|
53
63
|
/>
|
|
54
64
|
{{ $t('share') }}
|
|
55
65
|
</button>
|
|
56
|
-
<button
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
66
|
+
<button
|
|
67
|
+
v-if="showReport"
|
|
68
|
+
:class="className"
|
|
69
|
+
type="button"
|
|
70
|
+
@click="onReport"
|
|
60
71
|
>
|
|
61
|
-
<UiIcon
|
|
62
|
-
|
|
72
|
+
<UiIcon
|
|
73
|
+
name="flag"
|
|
74
|
+
size="20"
|
|
63
75
|
/>
|
|
64
76
|
{{ $t('video_submenu.report') }}
|
|
65
77
|
</button>
|
|
66
|
-
<button
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
<button
|
|
79
|
+
v-if="showRemove"
|
|
80
|
+
:class="className"
|
|
81
|
+
type="button"
|
|
82
|
+
@click="emit('remove')"
|
|
70
83
|
>
|
|
71
|
-
<UiIcon
|
|
72
|
-
|
|
84
|
+
<UiIcon
|
|
85
|
+
name="trash-bin"
|
|
86
|
+
size="20"
|
|
73
87
|
/>
|
|
74
88
|
{{ $t('remove_video') }}
|
|
75
89
|
</button>
|
|
@@ -1,116 +1,134 @@
|
|
|
1
1
|
<!-- Карточка видео: постер, логотип канала, превью при наведении, теги моделей -->
|
|
2
2
|
<template>
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
<div
|
|
4
|
+
:class="[
|
|
5
|
+
{'--mini': mini},
|
|
6
|
+
{'--avatar': card.channelAvatar},
|
|
7
|
+
{'--no-channel': isChannelPage},
|
|
8
|
+
]"
|
|
9
|
+
class="card-video"
|
|
9
10
|
>
|
|
10
|
-
<NuxtLink
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
<NuxtLink
|
|
12
|
+
:to="link"
|
|
13
|
+
class="card-video__poster-wrapper"
|
|
14
|
+
@mouseenter.passive="playVideo"
|
|
15
|
+
@touchmove.passive="playVideo"
|
|
16
|
+
@mouseleave.passive="stopVideo"
|
|
17
|
+
@touchend.passive="stopVideo"
|
|
16
18
|
>
|
|
17
|
-
<UiImg
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
<UiImg
|
|
20
|
+
:src="currentPoster"
|
|
21
|
+
:urls="card.thumbUrls"
|
|
22
|
+
:loading="loading"
|
|
23
|
+
:priority="priority"
|
|
24
|
+
:sizes="`(max-width: ${CSS_BREAKPOINTS.lg}px) 180px, 480px`"
|
|
25
|
+
:alt="card.title"
|
|
26
|
+
class="card-video__poster"
|
|
27
|
+
width="480"
|
|
28
|
+
height="270"
|
|
29
|
+
@error="onPosterError"
|
|
27
30
|
/>
|
|
28
|
-
<CardVideoPreview
|
|
29
|
-
|
|
31
|
+
<CardVideoPreview
|
|
32
|
+
v-if="isPreviewShow && card.previewUrl"
|
|
33
|
+
:url="card.previewUrl"
|
|
30
34
|
/>
|
|
31
|
-
<UiLabel
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
<UiLabel
|
|
36
|
+
v-if="card.isNew"
|
|
37
|
+
:text="t('new')"
|
|
38
|
+
class="card-video__new"
|
|
39
|
+
theme="primary-gradient"
|
|
35
40
|
/>
|
|
36
|
-
<UiLabel
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
<UiLabel
|
|
42
|
+
v-if="card.quality && parseInt(card.quality) >= 1080"
|
|
43
|
+
:text="card.quality"
|
|
44
|
+
class="card-video__resolution"
|
|
45
|
+
theme="yellow"
|
|
40
46
|
/>
|
|
41
|
-
<UiLabel
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
<UiLabel
|
|
48
|
+
v-if="card.duration"
|
|
49
|
+
:text="duration"
|
|
50
|
+
class="card-video__duration"
|
|
51
|
+
theme="black"
|
|
45
52
|
/>
|
|
46
53
|
</NuxtLink>
|
|
47
54
|
|
|
48
55
|
<div class="card-video__wrapper">
|
|
49
|
-
<component
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
<component
|
|
57
|
+
v-if="!mini"
|
|
58
|
+
:is="component"
|
|
59
|
+
:to="card.channelName ? localePath(`/channels/${convertString().toSlug(card.channelName)}`) : undefined"
|
|
60
|
+
class="card-video__logo-wrapper"
|
|
53
61
|
>
|
|
54
|
-
<UiImg
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
<UiImg
|
|
63
|
+
v-if="card.channelAvatar"
|
|
64
|
+
:loading="loading"
|
|
65
|
+
:src="currentAvatar"
|
|
66
|
+
:alt="card.channelName"
|
|
67
|
+
class="card-video__channel-logo"
|
|
68
|
+
width="32"
|
|
69
|
+
height="32"
|
|
70
|
+
sizes="32px"
|
|
71
|
+
@error="onAvatarError"
|
|
63
72
|
/>
|
|
64
|
-
<span
|
|
65
|
-
|
|
73
|
+
<span
|
|
74
|
+
v-else
|
|
75
|
+
class="card-video__user"
|
|
66
76
|
>U</span>
|
|
67
77
|
</component>
|
|
68
|
-
<NuxtLink
|
|
69
|
-
|
|
70
|
-
|
|
78
|
+
<NuxtLink
|
|
79
|
+
:to="link"
|
|
80
|
+
:title="card.title"
|
|
81
|
+
class="card-video__title _truncate"
|
|
71
82
|
>{{ card.title }}
|
|
72
83
|
</NuxtLink>
|
|
73
|
-
<component
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
<component
|
|
85
|
+
v-if="!mini && card.channelName"
|
|
86
|
+
:is="component"
|
|
87
|
+
:to="card.channelName ? localePath(`/channels/${convertString().toSlug(card.channelName)}`) : undefined"
|
|
88
|
+
class="card-video__channel-wrapper"
|
|
77
89
|
>
|
|
78
|
-
<span
|
|
79
|
-
|
|
90
|
+
<span
|
|
91
|
+
:data-nosnippet="!card.channelName || null"
|
|
92
|
+
class="card-video__channel-title"
|
|
80
93
|
>
|
|
81
94
|
<template v-if="card.channelName">
|
|
82
95
|
{{ card.channelName }}
|
|
83
96
|
</template>
|
|
84
97
|
</span>
|
|
85
98
|
</component>
|
|
86
|
-
<div
|
|
87
|
-
|
|
99
|
+
<div
|
|
100
|
+
v-if="!mini && cardTags && cardTags.length > 0"
|
|
101
|
+
class="card-video__tags"
|
|
88
102
|
>
|
|
89
103
|
<div class="card-video__tags-wrapper">
|
|
90
|
-
<UiChips
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
104
|
+
<UiChips
|
|
105
|
+
v-for="(item, index) in cardTags?.slice(0, 4)"
|
|
106
|
+
micro
|
|
107
|
+
:key="`${card.guid}-tag-${index}`"
|
|
108
|
+
:item="item"
|
|
109
|
+
class="card-video__chips"
|
|
110
|
+
is-link
|
|
96
111
|
/>
|
|
97
112
|
</div>
|
|
98
113
|
</div>
|
|
99
|
-
<LazyCardVideoDropdown
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
114
|
+
<LazyCardVideoDropdown
|
|
115
|
+
v-if="dropdownMounted"
|
|
116
|
+
:card="card"
|
|
117
|
+
:show-watch-later="FeatureFlags.FeatureWatchLaterEnabled"
|
|
118
|
+
class="card-video__dropdown"
|
|
119
|
+
show-report
|
|
120
|
+
auto-open
|
|
105
121
|
/>
|
|
106
|
-
<button
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
122
|
+
<button
|
|
123
|
+
v-else
|
|
124
|
+
:aria-label="t('open_menu')"
|
|
125
|
+
class="card-video__dropdown card-video-dropdown__trigger"
|
|
126
|
+
type="button"
|
|
127
|
+
@click="dropdownMounted = true"
|
|
111
128
|
>
|
|
112
|
-
<UiIcon
|
|
113
|
-
|
|
129
|
+
<UiIcon
|
|
130
|
+
name="dots-vertical"
|
|
131
|
+
size="18"
|
|
114
132
|
/>
|
|
115
133
|
</button>
|
|
116
134
|
</div>
|
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
<!-- Мини-карточка видео: постер 16:9 слева, название, канал, длительность -->
|
|
2
2
|
<template>
|
|
3
|
-
<component
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
<component
|
|
4
|
+
:is="component"
|
|
5
|
+
:title="card.title"
|
|
6
|
+
:to="link ? generateLink(`/playlists/${prefix}/${card.id}`) : null"
|
|
7
|
+
class="card-video-mini"
|
|
7
8
|
>
|
|
8
|
-
<UiImg
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
<UiImg
|
|
10
|
+
:src="currentPoster"
|
|
11
|
+
:alt="card.title"
|
|
12
|
+
class="card-video-mini__img"
|
|
13
|
+
sizes="140px"
|
|
14
|
+
width="1600"
|
|
15
|
+
height="900"
|
|
16
|
+
@error="onPosterError"
|
|
15
17
|
/>
|
|
16
18
|
<div class="card-video-mini__wrapper">
|
|
17
19
|
<p class="card-video-mini__title _truncate">{{ card.title }}</p>
|
|
18
|
-
<span
|
|
19
|
-
|
|
20
|
+
<span
|
|
21
|
+
v-if="card.channelName"
|
|
22
|
+
class="card-video-mini__channel _truncate"
|
|
20
23
|
>{{ card.channelName }}</span>
|
|
21
24
|
<span class="card-video-mini__duration">
|
|
22
|
-
<UiIcon
|
|
23
|
-
|
|
25
|
+
<UiIcon
|
|
26
|
+
name="time"
|
|
27
|
+
size="12"
|
|
24
28
|
/>
|
|
25
29
|
{{ duration }}</span>
|
|
26
30
|
</div>
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<!-- Видео-предпросмотр (автоплей) поверх постера карточки видео -->
|
|
2
2
|
<template>
|
|
3
|
-
<video
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
<video
|
|
4
|
+
:src="url"
|
|
5
|
+
class="card-video-preview"
|
|
6
|
+
loop
|
|
7
|
+
muted
|
|
8
|
+
autoplay
|
|
9
|
+
playsinline
|
|
9
10
|
/>
|
|
10
11
|
</template>
|
|
11
12
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="category-by-letter">
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
<div
|
|
4
|
+
v-for="(items, letter) in categories"
|
|
5
|
+
:key="`category-by-letter-${String(letter)}`"
|
|
6
|
+
class="category-by-letter__block"
|
|
6
7
|
>
|
|
7
8
|
<UiLetter :text="getLetter(letter)" />
|
|
8
9
|
<CategoryList :items="items" />
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<section
|
|
3
|
-
|
|
2
|
+
<section
|
|
3
|
+
v-if="items && items.length > 0"
|
|
4
|
+
class="category-group"
|
|
4
5
|
>
|
|
5
|
-
<UiLetter
|
|
6
|
-
|
|
6
|
+
<UiLetter
|
|
7
|
+
v-if="text"
|
|
8
|
+
:text="text"
|
|
7
9
|
/>
|
|
8
|
-
<h2
|
|
9
|
-
|
|
10
|
+
<h2
|
|
11
|
+
v-else-if="title"
|
|
12
|
+
class="category-group__title _title"
|
|
10
13
|
>
|
|
11
|
-
<UiIcon
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
<UiIcon
|
|
15
|
+
v-if="icon"
|
|
16
|
+
:name="icon"
|
|
17
|
+
class="category-group__title-icon"
|
|
18
|
+
prefix="categories"
|
|
19
|
+
size="24"
|
|
16
20
|
/>
|
|
17
21
|
{{ title }}</h2>
|
|
18
|
-
<GridCategories
|
|
19
|
-
|
|
22
|
+
<GridCategories
|
|
23
|
+
:categories="items"
|
|
24
|
+
priority
|
|
20
25
|
>
|
|
21
26
|
<!-- <div-->
|
|
22
27
|
<!-- v-if="allLink"-->
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="category-letter-groups">
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
<div
|
|
4
|
+
v-for="(groupItems, letter) in grouped"
|
|
5
|
+
:key="`category-letter-groups-${String(letter)}`"
|
|
6
|
+
class="category-letter-groups__block"
|
|
6
7
|
>
|
|
7
8
|
<UiLetter :text="String(letter)" />
|
|
8
9
|
<slot :items="groupItems" />
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="category-list">
|
|
3
|
-
<NuxtLink
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
<NuxtLink
|
|
4
|
+
v-for="category in items"
|
|
5
|
+
:key="`category-all-${category.guid}`"
|
|
6
|
+
:data-count="category.videosCount"
|
|
7
|
+
:class="{'--top': category.isTop}"
|
|
8
|
+
:to="localePath(`/categories/${slug(category.name)}`)"
|
|
9
|
+
class="category-list__link"
|
|
9
10
|
>
|
|
10
11
|
{{ category.title }}
|
|
11
|
-
<img
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
<img
|
|
13
|
+
v-if="category.icon"
|
|
14
|
+
:src="`/icons/flags/${category.icon}.svg`"
|
|
15
|
+
:alt="category.icon"
|
|
16
|
+
class="category-list__link-image"
|
|
17
|
+
width="17"
|
|
18
|
+
height="17"
|
|
19
|
+
loading="lazy"
|
|
18
20
|
>
|
|
19
21
|
</NuxtLink>
|
|
20
|
-
<NuxtLink
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
<NuxtLink
|
|
23
|
+
v-if="allCategories"
|
|
24
|
+
:to="localePath('/categories')"
|
|
25
|
+
class="category-list__link --all"
|
|
23
26
|
>
|
|
24
27
|
{{ t('all_categories') }}
|
|
25
28
|
</NuxtLink>
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<SectionNavLinks
|
|
3
|
-
|
|
2
|
+
<SectionNavLinks
|
|
3
|
+
:items="categoriesNavigation"
|
|
4
|
+
theme="secondary"
|
|
4
5
|
/>
|
|
5
|
-
<UiExpandRow
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
<UiExpandRow
|
|
7
|
+
:class="{'_from-sm': hideOnMobile}"
|
|
8
|
+
:items="alphabetItems"
|
|
9
|
+
class="category-nav__alphabet"
|
|
10
|
+
alphabet
|
|
9
11
|
>
|
|
10
|
-
<UiChips
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
<UiChips
|
|
13
|
+
v-for="(item, index) in alphabetItems"
|
|
14
|
+
:key="`categories-chips-${index}`"
|
|
15
|
+
:item="item"
|
|
16
|
+
:class="{ '--all': item.value === '' }"
|
|
17
|
+
is-link
|
|
18
|
+
alphabet
|
|
16
19
|
/>
|
|
17
20
|
</UiExpandRow>
|
|
18
21
|
</template>
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
<!-- Кнопка открытия фильтра со счётчиком активных фильтров -->
|
|
2
2
|
<template>
|
|
3
|
-
<UiBtn
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
<UiBtn
|
|
4
|
+
:size="size"
|
|
5
|
+
:theme="theme"
|
|
6
|
+
:title="t('filter')"
|
|
7
|
+
class="filter-btn"
|
|
8
|
+
aria-label="Filter"
|
|
9
|
+
@click="emit('update:modelValue', true)"
|
|
9
10
|
>
|
|
10
|
-
<UiIcon
|
|
11
|
-
|
|
11
|
+
<UiIcon
|
|
12
|
+
name="adjustments-horizontal"
|
|
13
|
+
size="16"
|
|
12
14
|
/>
|
|
13
15
|
<span class="_from-sm">{{ t('filter') }}
|
|
14
16
|
</span>
|
|
15
|
-
<span
|
|
16
|
-
|
|
17
|
+
<span
|
|
18
|
+
v-if="count > 0"
|
|
19
|
+
class="filter-btn__count"
|
|
17
20
|
>{{ mobileCount }}</span>
|
|
18
21
|
</UiBtn>
|
|
19
22
|
</template>
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
<template #prepend>
|
|
5
5
|
<slot/>
|
|
6
6
|
</template>
|
|
7
|
-
<UiChips
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
<UiChips
|
|
8
|
+
v-for="(item, index) in items"
|
|
9
|
+
:key="index"
|
|
10
|
+
:index="`s-filter-page-chips${index}`"
|
|
11
|
+
:item="item"
|
|
12
|
+
class="filter-chips"
|
|
13
|
+
with-close
|
|
14
|
+
@click="onChipsClick(item)"
|
|
14
15
|
/>
|
|
15
16
|
</UiExpandRow>
|
|
16
17
|
</template>
|