itube-specs 0.0.792 → 0.0.794
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/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 +56 -46
- package/package.json +1 -1
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
<div
|
|
3
|
+
v-if="data"
|
|
4
|
+
ref="userRef"
|
|
5
|
+
:class="{'--open': isMenuShow}"
|
|
6
|
+
class="layout-header-user"
|
|
6
7
|
>
|
|
7
|
-
<button
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
<button
|
|
9
|
+
:title="$t('show_menu')"
|
|
10
|
+
type="button"
|
|
11
|
+
class="layout-header-user__trigger"
|
|
12
|
+
@click="showMenu"
|
|
11
13
|
>
|
|
12
14
|
<UiAvatar :size="36" />
|
|
13
|
-
<UiIcon
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
<UiIcon
|
|
16
|
+
class="layout-header-user__trigger-icon"
|
|
17
|
+
name="angle-down"
|
|
18
|
+
size="16"
|
|
16
19
|
/>
|
|
17
20
|
</button>
|
|
18
21
|
<transition mode="out-in">
|
|
19
|
-
<div
|
|
20
|
-
|
|
22
|
+
<div
|
|
23
|
+
v-if="isMenuShow"
|
|
24
|
+
class="layout-header-user__dropdown"
|
|
21
25
|
>
|
|
22
|
-
<NuxtLink
|
|
23
|
-
|
|
26
|
+
<NuxtLink
|
|
27
|
+
:to="generateLink('/user/profile')"
|
|
28
|
+
class="layout-header-user__profile"
|
|
24
29
|
>
|
|
25
|
-
<UiAvatar
|
|
26
|
-
|
|
30
|
+
<UiAvatar
|
|
31
|
+
:size="48"
|
|
32
|
+
class="layout-header-user__profile-avatar"
|
|
27
33
|
/>
|
|
28
34
|
<div class="layout-header-user__profile-wrapper">
|
|
29
35
|
<span class="layout-header-user__profile-title">{{ data.username }}</span>
|
|
@@ -31,56 +37,65 @@
|
|
|
31
37
|
</div>
|
|
32
38
|
</NuxtLink>
|
|
33
39
|
<div class="layout-header-user__links">
|
|
34
|
-
<div
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
<div
|
|
41
|
+
v-for="(group, groupIndex) in groupsCount"
|
|
42
|
+
:key="`group-profile-${groupIndex}`"
|
|
43
|
+
class="layout-header-user__links-wrapper"
|
|
37
44
|
>
|
|
38
|
-
<template
|
|
39
|
-
|
|
45
|
+
<template
|
|
46
|
+
v-for="(item, index) in profileNavigationItems.filter(item => item.group === group)"
|
|
47
|
+
:key="`profile-link-${index}`"
|
|
40
48
|
>
|
|
41
|
-
<component
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
<component
|
|
50
|
+
:is="component(hasChild(item))"
|
|
51
|
+
:class="[
|
|
52
|
+
{'--has-child' : hasChild(item)},
|
|
53
|
+
{'--open' : isChildsShow}
|
|
54
|
+
]"
|
|
55
|
+
:to="hasChild(item) ? null : generateLink(item.value)"
|
|
56
|
+
class="layout-header-user__item"
|
|
57
|
+
@click="hasChild(item) ? openChilds() : null"
|
|
49
58
|
>
|
|
50
|
-
<UiIcon
|
|
51
|
-
|
|
52
|
-
|
|
59
|
+
<UiIcon
|
|
60
|
+
:name="item.icon"
|
|
61
|
+
class="layout-header-user__item-icon"
|
|
62
|
+
size="20"
|
|
53
63
|
/>
|
|
54
64
|
{{ $t(item.title) }}
|
|
55
|
-
<UiIcon
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
<UiIcon
|
|
66
|
+
v-if="hasChild(item)"
|
|
67
|
+
class="layout-header-user__angle"
|
|
68
|
+
name="angle-down"
|
|
69
|
+
size="16"
|
|
59
70
|
/>
|
|
60
71
|
</component>
|
|
61
72
|
<template v-if="hasChild(item) && isChildsShow">
|
|
62
|
-
<NuxtLink
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
<NuxtLink
|
|
74
|
+
v-for="(child, childIndex) in item.childs"
|
|
75
|
+
:key="`profile-link-${index}-${childIndex}`"
|
|
76
|
+
:to="generateLink(child.value)"
|
|
77
|
+
class="layout-header-user__item --child"
|
|
66
78
|
>
|
|
67
|
-
<UiIcon
|
|
68
|
-
|
|
69
|
-
|
|
79
|
+
<UiIcon
|
|
80
|
+
:name="child.icon"
|
|
81
|
+
class="layout-header-user__item-icon"
|
|
82
|
+
size="16"
|
|
70
83
|
/>
|
|
71
84
|
{{ $t(child.title) }}
|
|
72
85
|
</NuxtLink>
|
|
73
86
|
</template>
|
|
74
87
|
</template>
|
|
75
88
|
|
|
76
|
-
<button
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
89
|
+
<button
|
|
90
|
+
v-if="group === groupsCount"
|
|
91
|
+
type="button"
|
|
92
|
+
class="layout-header-user__item"
|
|
93
|
+
@click="logOut"
|
|
80
94
|
>
|
|
81
|
-
<UiIcon
|
|
82
|
-
|
|
83
|
-
|
|
95
|
+
<UiIcon
|
|
96
|
+
name="logout"
|
|
97
|
+
class="layout-header-user__item-icon"
|
|
98
|
+
size="20"
|
|
84
99
|
/>
|
|
85
100
|
{{ $t('log_out') }}
|
|
86
101
|
</button>
|
|
@@ -1,75 +1,88 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<header
|
|
3
|
-
|
|
2
|
+
<header
|
|
3
|
+
:class="{'--burger-open': burgerShow}"
|
|
4
|
+
class="layout-header"
|
|
4
5
|
>
|
|
5
6
|
|
|
6
7
|
<SearchMain class="layout-header__search"/>
|
|
7
8
|
|
|
8
|
-
<LayoutLogo
|
|
9
|
-
|
|
9
|
+
<LayoutLogo
|
|
10
|
+
glow
|
|
11
|
+
class="layout-header__logo"
|
|
10
12
|
/>
|
|
11
|
-
<div
|
|
12
|
-
|
|
13
|
+
<div
|
|
14
|
+
ref="languageRef"
|
|
15
|
+
class="layout-header__language _from-sm"
|
|
13
16
|
>
|
|
14
|
-
<button
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
<button
|
|
18
|
+
:class="{'--open': showLanguage}"
|
|
19
|
+
:aria-label="$t('language')"
|
|
20
|
+
class="layout-header__language-trigger"
|
|
21
|
+
type="button"
|
|
22
|
+
@click="showLanguageMenu"
|
|
19
23
|
>
|
|
20
|
-
<img
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
<img
|
|
25
|
+
v-if="clientCountryIcon"
|
|
26
|
+
:src="`/icons/flags/${clientCountryIcon}.svg`"
|
|
27
|
+
:alt="clientCountryIcon"
|
|
28
|
+
class="layout-header__language-icon"
|
|
29
|
+
width="24"
|
|
30
|
+
height="16"
|
|
26
31
|
>
|
|
27
|
-
<UiIcon
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
<UiIcon
|
|
33
|
+
v-else
|
|
34
|
+
class="layout-header__language-icon"
|
|
35
|
+
name="earth"
|
|
36
|
+
size="20"
|
|
31
37
|
/>
|
|
32
|
-
<UiIcon
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
<UiIcon
|
|
39
|
+
class="layout-header__language-angle"
|
|
40
|
+
name="angle-down"
|
|
41
|
+
size="12"
|
|
35
42
|
/>
|
|
36
43
|
</button>
|
|
37
44
|
<transition mode="out-in">
|
|
38
45
|
<KeepAlive>
|
|
39
|
-
<LazyLayoutLanguage
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
<LazyLayoutLanguage
|
|
47
|
+
v-if="showLanguage"
|
|
48
|
+
class="layout-header__language-menu"
|
|
49
|
+
icon-size="20"
|
|
50
|
+
@change="closeLanguage"
|
|
43
51
|
/>
|
|
44
52
|
</KeepAlive>
|
|
45
53
|
</transition>
|
|
46
54
|
</div>
|
|
47
55
|
|
|
48
|
-
<LazyLayoutHeaderUser
|
|
49
|
-
|
|
56
|
+
<LazyLayoutHeaderUser
|
|
57
|
+
v-if="isAuthorized"
|
|
58
|
+
class="layout-header__user _from-sm"
|
|
50
59
|
/>
|
|
51
60
|
|
|
52
61
|
<template v-else>
|
|
53
|
-
<UiBtn
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
<UiBtn
|
|
63
|
+
class="layout-header__sign-up _from-sm"
|
|
64
|
+
theme="primary"
|
|
65
|
+
@click="openAuthPopup(AuthSteps.Registration)"
|
|
56
66
|
>{{ $t('sign_up_button') }}
|
|
57
67
|
</UiBtn>
|
|
58
68
|
</template>
|
|
59
69
|
|
|
60
|
-
<button
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
70
|
+
<button
|
|
71
|
+
:aria-label="$t('show_menu')"
|
|
72
|
+
class="layout-header__burger _to-sm"
|
|
73
|
+
type="button"
|
|
74
|
+
@click="burgerShow = true"
|
|
64
75
|
>
|
|
65
|
-
<UiIcon
|
|
66
|
-
|
|
67
|
-
|
|
76
|
+
<UiIcon
|
|
77
|
+
class="layout-header__burger-bars"
|
|
78
|
+
name="bars"
|
|
79
|
+
size="24"
|
|
68
80
|
/>
|
|
69
81
|
</button>
|
|
70
82
|
|
|
71
|
-
<LayoutBurger
|
|
72
|
-
|
|
83
|
+
<LayoutBurger
|
|
84
|
+
v-show="burgerShow"
|
|
85
|
+
v-model="burgerShow"
|
|
73
86
|
/>
|
|
74
87
|
</header>
|
|
75
88
|
</template>
|
|
@@ -1,92 +1,105 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="layout-language">
|
|
3
3
|
<span class="layout-language__title _to-sm">{{ $t('language') }}:</span>
|
|
4
|
-
<details
|
|
5
|
-
|
|
4
|
+
<details
|
|
5
|
+
class="layout-language__details"
|
|
6
|
+
name="layout-language"
|
|
6
7
|
>
|
|
7
8
|
<summary class="layout-language__summary">
|
|
8
|
-
<UiIcon
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
<UiIcon
|
|
10
|
+
:size="iconSize"
|
|
11
|
+
class="layout-language__icon"
|
|
12
|
+
name="earth"
|
|
11
13
|
/>
|
|
12
14
|
<span class="layout-language__current">
|
|
13
15
|
<span class="_from-sm">{{ $t('language') }}: </span>
|
|
14
16
|
<span class="layout-language__text">{{ localeName }}</span>
|
|
15
17
|
</span>
|
|
16
|
-
<UiIcon
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
<UiIcon
|
|
19
|
+
class="layout-language__angle"
|
|
20
|
+
name="angle-down"
|
|
21
|
+
size="16"
|
|
19
22
|
/>
|
|
20
23
|
</summary>
|
|
21
24
|
<div class="layout-language__details-wrapper">
|
|
22
|
-
<button
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
<button
|
|
26
|
+
v-for="(item, index) in enabledLocales"
|
|
27
|
+
:key="`language-${index}`"
|
|
28
|
+
:class="{'--current': item.code === selectedLocale}"
|
|
29
|
+
:lang="item.language"
|
|
30
|
+
class="layout-language__details-item"
|
|
31
|
+
type="button"
|
|
32
|
+
@click="changeLocale(item.code)"
|
|
29
33
|
>{{ item.name }}
|
|
30
34
|
</button>
|
|
31
35
|
</div>
|
|
32
36
|
</details>
|
|
33
37
|
<span class="layout-language__title _to-sm">{{ $t('country') }}:</span>
|
|
34
|
-
<details
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
<details
|
|
39
|
+
class="layout-language__details"
|
|
40
|
+
name="layout-language"
|
|
41
|
+
@toggle="onCountryToggle($event)"
|
|
37
42
|
>
|
|
38
43
|
<summary class="layout-language__summary">
|
|
39
|
-
<img
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
<img
|
|
45
|
+
v-if="clientCountryIcon"
|
|
46
|
+
:alt="clientCountryName"
|
|
47
|
+
:src="`/icons/flags/${clientCountryIcon}.svg`"
|
|
48
|
+
class="layout-language__icon"
|
|
49
|
+
width="20"
|
|
50
|
+
height="20"
|
|
45
51
|
>
|
|
46
|
-
<UiIcon
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
<UiIcon
|
|
53
|
+
v-else
|
|
54
|
+
:size="iconSize"
|
|
55
|
+
class="layout-language__icon"
|
|
56
|
+
name="earth"
|
|
50
57
|
/>
|
|
51
58
|
<span class="layout-language__current">
|
|
52
59
|
<span class="_from-sm">{{ $t('country') }}: </span>
|
|
53
60
|
<span class="layout-language__text">{{ clientCountryName }}</span></span>
|
|
54
|
-
<UiIcon
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
<UiIcon
|
|
62
|
+
class="layout-language__angle"
|
|
63
|
+
name="angle-down"
|
|
64
|
+
size="16"
|
|
57
65
|
/>
|
|
58
66
|
</summary>
|
|
59
67
|
<div class="layout-language__details-wrapper">
|
|
60
|
-
<UiInput
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
<UiInput
|
|
69
|
+
v-model="countryValue"
|
|
70
|
+
:icon="countryValue.length > 0 ? 'close' : ''"
|
|
71
|
+
:placeholder="$t('search')"
|
|
72
|
+
pre-icon="search"
|
|
73
|
+
class="layout-language__input"
|
|
74
|
+
pre-icon-size="16"
|
|
75
|
+
size="s"
|
|
76
|
+
@icon-click="countryValue = ''"
|
|
68
77
|
/>
|
|
69
78
|
<p class="layout-language__description">{{ $t('country_description') }}</p>
|
|
70
|
-
<div
|
|
71
|
-
|
|
79
|
+
<div
|
|
80
|
+
v-if="isCountryOpen"
|
|
81
|
+
class="layout-language__buttons"
|
|
72
82
|
>
|
|
73
|
-
<button
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
<button
|
|
84
|
+
v-for="(item, index) in filteredCountries"
|
|
85
|
+
:key="`language-${index}`"
|
|
86
|
+
:class="{'--current': item.icon === clientCountryIcon}"
|
|
87
|
+
class="layout-language__details-item --country"
|
|
88
|
+
type="button"
|
|
89
|
+
@click="changeCountry(item)"
|
|
79
90
|
>
|
|
80
|
-
<img
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
<img
|
|
92
|
+
:alt="item.title"
|
|
93
|
+
:src="`/icons/flags/${item.icon}.svg`"
|
|
94
|
+
width="20"
|
|
95
|
+
height="20"
|
|
96
|
+
loading="lazy"
|
|
85
97
|
>
|
|
86
98
|
{{ item.title }}
|
|
87
99
|
</button>
|
|
88
|
-
<p
|
|
89
|
-
|
|
100
|
+
<p
|
|
101
|
+
v-if="countryValue && !filteredCountries.length"
|
|
102
|
+
class="layout-language__empty"
|
|
90
103
|
>{{ $t('nothing_found') }}</p>
|
|
91
104
|
</div>
|
|
92
105
|
</div>
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<NuxtLink
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
<NuxtLink
|
|
3
|
+
:class="{'layout-logo--glow': glow}"
|
|
4
|
+
:to="localePath('/')"
|
|
5
|
+
class="layout-logo"
|
|
6
|
+
@click="onLogoClick"
|
|
6
7
|
>
|
|
7
|
-
<img
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
<img
|
|
9
|
+
class="layout-logo__image"
|
|
10
|
+
src="/img/logo.svg"
|
|
11
|
+
width="144"
|
|
12
|
+
height="24"
|
|
13
|
+
alt="gay.cool"
|
|
12
14
|
>
|
|
13
15
|
</NuxtLink>
|
|
14
16
|
</template>
|
|
@@ -1,42 +1,49 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<nav class="layout-nav">
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
<div
|
|
4
|
+
v-for="(item, index) in items || navigationItems"
|
|
5
|
+
:key="`navigation-item-${index}`"
|
|
6
|
+
class="layout-nav__item"
|
|
6
7
|
>
|
|
7
|
-
<component
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
<component
|
|
9
|
+
:is="item.link ? SLink : SButton"
|
|
10
|
+
class="layout-nav__link"
|
|
11
|
+
v-bind="item.link ? {
|
|
12
|
+
to: generateLink(item.link),
|
|
13
|
+
ariaCurrent: isCurrent(item.link) ? 'page' : undefined,
|
|
14
|
+
tabindex: isCurrent(item.link) ? -1 : undefined,
|
|
15
|
+
} : {}"
|
|
14
16
|
>
|
|
15
|
-
<UiIcon
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
<UiIcon
|
|
18
|
+
v-if="item.icon"
|
|
19
|
+
:class="{'--accent': item.accent}"
|
|
20
|
+
:name="item.icon"
|
|
21
|
+
class="layout-nav__icon"
|
|
22
|
+
size="16"
|
|
20
23
|
/>
|
|
21
24
|
{{ $t(`navigation.${item.title}`) }}
|
|
22
|
-
<UiIcon
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
<UiIcon
|
|
26
|
+
v-if="hasChild(item)"
|
|
27
|
+
class="layout-nav__down"
|
|
28
|
+
size="11"
|
|
29
|
+
name="angle-down"
|
|
26
30
|
/>
|
|
27
31
|
</component>
|
|
28
|
-
<div
|
|
29
|
-
|
|
32
|
+
<div
|
|
33
|
+
v-if="hasChild(item)"
|
|
34
|
+
class="layout-nav__menu"
|
|
30
35
|
>
|
|
31
|
-
<NuxtLink
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
<NuxtLink
|
|
37
|
+
v-for="(subItem, subIndex) in item.childs"
|
|
38
|
+
:key="`navigation-subitem-${index}-${subIndex}`"
|
|
39
|
+
:to="generateLink(subItem.link)"
|
|
40
|
+
:aria-current="isCurrent(subItem.link) ? 'page' : undefined"
|
|
41
|
+
:tabindex="isCurrent(subItem.link) ? -1 : undefined"
|
|
42
|
+
class="layout-nav__menu-item"
|
|
37
43
|
>
|
|
38
|
-
<UiIcon
|
|
39
|
-
|
|
44
|
+
<UiIcon
|
|
45
|
+
:name="subItem.icon"
|
|
46
|
+
size="16"
|
|
40
47
|
/>
|
|
41
48
|
{{ $t(subItem.title) }}
|
|
42
49
|
</NuxtLink>
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
<!-- Боковая колонка справа: рекомендации или реклама -->
|
|
2
2
|
<template>
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
<div
|
|
4
|
+
:class="[
|
|
5
|
+
{'_loading': status === 'pending'},
|
|
6
|
+
]"
|
|
7
|
+
class="player-aside-videos _from-md"
|
|
7
8
|
>
|
|
8
9
|
<AdvNtv v-if="FeatureFlags.AdsNTVEnabled" />
|
|
9
10
|
|
|
10
11
|
<template v-else>
|
|
11
|
-
<CardVideo
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<CardVideo
|
|
13
|
+
v-for="item in asideVideos?.items?.slice(0, 2)"
|
|
14
|
+
:key="`aside-video-${item.guid}`"
|
|
15
|
+
:card="item"
|
|
16
|
+
mini
|
|
15
17
|
/>
|
|
16
18
|
</template>
|
|
17
19
|
</div>
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
<!-- Тоггл автозапуска следующего видео (состояние в localStorage) -->
|
|
2
2
|
<template>
|
|
3
3
|
<div class="player-autoplay">
|
|
4
|
-
<button
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
<button
|
|
5
|
+
type="button"
|
|
6
|
+
class="player-autoplay__button"
|
|
7
|
+
@click="value = !value"
|
|
7
8
|
>
|
|
8
9
|
{{ $t('autoplay_next_video')}}
|
|
9
10
|
</button>
|
|
10
|
-
<UiToggle
|
|
11
|
-
|
|
11
|
+
<UiToggle
|
|
12
|
+
v-model="value"
|
|
13
|
+
class="player-autoplay__toggle"
|
|
12
14
|
/>
|
|
13
15
|
</div>
|
|
14
16
|
</template>
|