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.
Files changed (122) hide show
  1. package/components/adv/native-banner.vue +22 -17
  2. package/components/adv/native-bottom.vue +8 -6
  3. package/components/adv/native-player.vue +8 -6
  4. package/components/adv/ntv.vue +4 -3
  5. package/components/auth/icon.vue +4 -3
  6. package/components/auth/login.vue +39 -33
  7. package/components/auth/popup.vue +30 -24
  8. package/components/auth/recovery.vue +29 -24
  9. package/components/auth/register.vue +59 -50
  10. package/components/card/category-mini.vue +6 -4
  11. package/components/card/category.vue +25 -21
  12. package/components/card/channel-mini.vue +17 -13
  13. package/components/card/channel.vue +36 -29
  14. package/components/card/model-mini.vue +24 -19
  15. package/components/card/model.vue +43 -33
  16. package/components/card/playlist-mini.vue +19 -16
  17. package/components/card/playlist.vue +97 -73
  18. package/components/card/round.vue +16 -13
  19. package/components/card/video/dropdown.vue +55 -41
  20. package/components/card/video/index.vue +99 -81
  21. package/components/card/video/mini.vue +19 -15
  22. package/components/card/video/preview.vue +7 -6
  23. package/components/category/by-letter.vue +4 -3
  24. package/components/category/group.vue +18 -13
  25. package/components/category/letter-groups.vue +4 -3
  26. package/components/category/list.vue +19 -16
  27. package/components/category/nav.vue +15 -12
  28. package/components/filter/btn.vue +13 -10
  29. package/components/filter/chips.vue +8 -7
  30. package/components/filter/main.vue +27 -23
  31. package/components/filter/model-field.vue +43 -38
  32. package/components/filter/model.vue +33 -28
  33. package/components/filter/page.vue +53 -43
  34. package/components/filter/popup.vue +75 -60
  35. package/components/filter/selects.vue +63 -49
  36. package/components/filter/slider.vue +23 -20
  37. package/components/filter/videos-chips.vue +3 -2
  38. package/components/grid/categories.vue +5 -4
  39. package/components/grid/channels.vue +9 -7
  40. package/components/grid/models.vue +10 -8
  41. package/components/grid/playlists.vue +6 -5
  42. package/components/grid/videos.vue +35 -31
  43. package/components/info/grid.vue +43 -34
  44. package/components/info/main.vue +94 -71
  45. package/components/info/socials.vue +13 -11
  46. package/components/layout/burger-item.vue +44 -36
  47. package/components/layout/burger.vue +45 -35
  48. package/components/layout/cookie.vue +14 -11
  49. package/components/layout/extra-links.vue +6 -5
  50. package/components/layout/footer-language.vue +35 -28
  51. package/components/layout/header-user.vue +66 -51
  52. package/components/layout/header.vue +55 -42
  53. package/components/layout/language.vue +67 -54
  54. package/components/layout/logo.vue +11 -9
  55. package/components/layout/nav.vue +36 -29
  56. package/components/layout/skip-link.vue +3 -2
  57. package/components/player/aside-videos.vue +10 -8
  58. package/components/player/autoplay.vue +7 -5
  59. package/components/player/channel.vue +25 -19
  60. package/components/player/core.vue +11 -10
  61. package/components/player/follow.vue +17 -13
  62. package/components/player/info.vue +9 -6
  63. package/components/player/interface.vue +50 -38
  64. package/components/player/like.vue +32 -24
  65. package/components/player/main.vue +12 -10
  66. package/components/player/playlist.vue +79 -61
  67. package/components/player/sponsored.vue +20 -16
  68. package/components/playlist/add.vue +89 -71
  69. package/components/playlist/delete-video.vue +23 -18
  70. package/components/playlist/edit.vue +64 -49
  71. package/components/playlist/input.vue +32 -24
  72. package/components/playlist/main.vue +21 -18
  73. package/components/playlist/private-toggle.vue +4 -3
  74. package/components/profile/delete.vue +7 -6
  75. package/components/profile/guest.vue +10 -7
  76. package/components/profile/password.vue +25 -22
  77. package/components/profile/setup.vue +88 -71
  78. package/components/report/main.vue +89 -71
  79. package/components/search/input.vue +37 -31
  80. package/components/search/item.vue +22 -18
  81. package/components/search/main.vue +34 -26
  82. package/components/search/result.vue +72 -57
  83. package/components/section/categories-island.server.vue +7 -5
  84. package/components/section/categories.vue +4 -3
  85. package/components/section/models.vue +4 -3
  86. package/components/section/nav-links.vue +8 -7
  87. package/components/section/seo-text.vue +9 -6
  88. package/components/section/swiper-cards.vue +19 -14
  89. package/components/section/toolbar.vue +26 -20
  90. package/components/share/main.vue +32 -26
  91. package/components/ui/avatar.vue +10 -8
  92. package/components/ui/breadcrumbs.vue +33 -25
  93. package/components/ui/btn.vue +13 -12
  94. package/components/ui/checkbox.vue +21 -17
  95. package/components/ui/chips.vue +33 -29
  96. package/components/ui/count.vue +4 -3
  97. package/components/ui/dropdown.vue +42 -34
  98. package/components/ui/empty-state.vue +11 -9
  99. package/components/ui/expand-row.vue +34 -28
  100. package/components/ui/full-descr.vue +6 -4
  101. package/components/ui/icon.vue +4 -3
  102. package/components/ui/img.vue +11 -10
  103. package/components/ui/input.vue +75 -66
  104. package/components/ui/label.vue +4 -3
  105. package/components/ui/link.vue +20 -18
  106. package/components/ui/notification.vue +22 -17
  107. package/components/ui/pagination.vue +89 -76
  108. package/components/ui/popup.vue +39 -30
  109. package/components/ui/radio.vue +17 -14
  110. package/components/ui/section-title.vue +20 -15
  111. package/components/ui/segmented.vue +19 -15
  112. package/components/ui/select.vue +44 -35
  113. package/components/ui/slider.vue +16 -13
  114. package/components/ui/snackbar.vue +7 -5
  115. package/components/ui/swiper.vue +32 -24
  116. package/components/ui/toggle.vue +17 -14
  117. package/components/ui/tooltip.vue +15 -12
  118. package/components/view/model-videos.vue +71 -57
  119. package/components/view/models.vue +71 -57
  120. package/components/view/video.vue +64 -51
  121. package/components/view/videos.vue +56 -46
  122. package/package.json +1 -1
@@ -1,37 +1,41 @@
1
1
  <!-- Главный контейнер фильтра видео: синхронизация с query и применение фильтров -->
2
2
  <template>
3
3
  <div class="filter-main">
4
- <FilterBtn v-model="filterOpen"
5
- :count="filterCount"
6
- :theme="buttonTheme"
7
- :size="buttonSize"
4
+ <FilterBtn
5
+ v-model="filterOpen"
6
+ :count="filterCount"
7
+ :theme="buttonTheme"
8
+ :size="buttonSize"
8
9
  />
9
10
 
10
11
  <transition>
11
- <LazyFilterPopup v-if="filterOpen"
12
- v-model="filterOpen"
13
- :title="$t('filter')"
14
- :active-count="activeCount"
15
- :active-chips="activeChips"
16
- :quick="quickFields"
17
- :groups="groupItems"
18
- :loading="!scheme.length"
19
- @chip-click="onChipClick"
20
- @field-update="onFieldUpdate"
12
+ <LazyFilterPopup
13
+ v-if="filterOpen"
14
+ v-model="filterOpen"
15
+ :title="$t('filter')"
16
+ :active-count="activeCount"
17
+ :active-chips="activeChips"
18
+ :quick="quickFields"
19
+ :groups="groupItems"
20
+ :loading="!scheme.length"
21
+ @chip-click="onChipClick"
22
+ @field-update="onFieldUpdate"
21
23
  >
22
24
  <template #footer>
23
25
  <div class="filter-main__footer-buttons">
24
- <UiBtn :disabled="!isFiltered"
25
- theme="secondary"
26
- wide
27
- size="l"
28
- @click="reset"
26
+ <UiBtn
27
+ :disabled="!isFiltered"
28
+ theme="secondary"
29
+ wide
30
+ size="l"
31
+ @click="reset"
29
32
  >{{ $t('reset_all') }}
30
33
  </UiBtn>
31
- <UiBtn wide
32
- size="l"
33
- theme="primary"
34
- @click="saveResult"
34
+ <UiBtn
35
+ wide
36
+ size="l"
37
+ theme="primary"
38
+ @click="saveResult"
35
39
  >{{ $t('apply') }}{{ activeCount ? ` (${activeCount})` : '' }}
36
40
  </UiBtn>
37
41
  </div>
@@ -1,49 +1,54 @@
1
1
  <!-- Одно поле фильтра моделей (слайдер/селект/радио) с поддержкой единиц роста -->
2
2
  <template>
3
- <FilterSlider v-if="field.kind === 'range'"
4
- :item="field"
5
- :group-name="field.group.name"
6
- :index="index"
7
- :query="pendingQuery"
8
- :icon="(field as any).icon"
9
- class="filter-model-field__slider"
10
- icon-prefix="models"
11
- @update:query="$emit('update:pending-query', $event)"
3
+ <FilterSlider
4
+ v-if="field.kind === 'range'"
5
+ :item="field"
6
+ :group-name="field.group.name"
7
+ :index="index"
8
+ :query="pendingQuery"
9
+ :icon="(field as any).icon"
10
+ class="filter-model-field__slider"
11
+ icon-prefix="models"
12
+ @update:query="$emit('update:pending-query', $event)"
12
13
  >
13
- <template v-if="isHeight"
14
- #title-append
14
+ <template
15
+ v-if="isHeight"
16
+ #title-append
15
17
  >
16
- <UiSegmented :class="{'_hidden': !field.show_on_form}"
17
- :items="unitItems"
18
- :model-value="units"
19
- class="filter-model-field__units"
20
- small
21
- @update:model-value="$emit('update:units', $event)"
18
+ <UiSegmented
19
+ :class="{'_hidden': !field.show_on_form}"
20
+ :items="unitItems"
21
+ :model-value="units"
22
+ class="filter-model-field__units"
23
+ small
24
+ @update:model-value="$emit('update:units', $event)"
22
25
  />
23
26
  </template>
24
27
  </FilterSlider>
25
- <UiSelect v-else-if="field.kind === 'select'"
26
- :class="{'_hidden': !field.show_on_form}"
27
- :name="field.name"
28
- :model-value="currentValue"
29
- :items="selectItems"
30
- :active="isActive"
31
- :label="field.title"
32
- :label-icon="(field as any).icon ? { icon: (field as any).icon, prefix: 'models' } : undefined"
33
- class="filter-model-field__select"
34
- size="s"
35
- is-first-placeholder
36
- @update:model-value="onUpdate"
28
+ <UiSelect
29
+ v-else-if="field.kind === 'select'"
30
+ :class="{'_hidden': !field.show_on_form}"
31
+ :name="field.name"
32
+ :model-value="currentValue"
33
+ :items="selectItems"
34
+ :active="isActive"
35
+ :label="field.title"
36
+ :label-icon="(field as any).icon ? { icon: (field as any).icon, prefix: 'models' } : undefined"
37
+ class="filter-model-field__select"
38
+ size="s"
39
+ is-first-placeholder
40
+ @update:model-value="onUpdate"
37
41
  />
38
- <UiSegmented v-else-if="field.kind === 'radio'"
39
- :class="{'_hidden': !field.show_on_form}"
40
- :items="radioItems"
41
- :title="field.title"
42
- :icon="(field as any).icon"
43
- :model-value="currentValue"
44
- class="filter-model-field__radio"
45
- icon-prefix="models"
46
- @update:model-value="onUpdate"
42
+ <UiSegmented
43
+ v-else-if="field.kind === 'radio'"
44
+ :class="{'_hidden': !field.show_on_form}"
45
+ :items="radioItems"
46
+ :title="field.title"
47
+ :icon="(field as any).icon"
48
+ :model-value="currentValue"
49
+ class="filter-model-field__radio"
50
+ icon-prefix="models"
51
+ @update:model-value="onUpdate"
47
52
  />
48
53
  </template>
49
54
 
@@ -1,45 +1,50 @@
1
1
  <!-- Контейнер фильтра моделей с отложенным применением (pending) перед навигацией -->
2
2
  <template>
3
3
  <div class="filter-model">
4
- <FilterChips :items="chipsItems"
5
- @click="onChipsClick"
4
+ <FilterChips
5
+ :items="chipsItems"
6
+ @click="onChipsClick"
6
7
  />
7
8
  <transition appear>
8
- <FilterPopup v-model="model"
9
- :title="t('filter')"
10
- :active-count="pendingChipsItems.length"
11
- :active-chips="pendingChipsItems"
12
- :quick="quickFields"
13
- :groups="groupItems"
14
- models-page
15
- :loading="status === 'pending'"
16
- @chip-click="onPendingChipsClick"
17
- @field-update="onFieldUpdate"
9
+ <FilterPopup
10
+ v-model="model"
11
+ :title="t('filter')"
12
+ :active-count="pendingChipsItems.length"
13
+ :active-chips="pendingChipsItems"
14
+ :quick="quickFields"
15
+ :groups="groupItems"
16
+ models-page
17
+ :loading="status === 'pending'"
18
+ @chip-click="onPendingChipsClick"
19
+ @field-update="onFieldUpdate"
18
20
  >
19
21
  <template #field="{ field, index }">
20
- <FilterModelField :field="field as IModelFilter"
21
- :index="index"
22
- :pending-query="pendingQuery"
23
- :units="units"
24
- :unit-items="unitItems"
25
- @update:pending-query="onQueryUpdate"
26
- @update:units="units = $event"
22
+ <FilterModelField
23
+ :field="field as IModelFilter"
24
+ :index="index"
25
+ :pending-query="pendingQuery"
26
+ :units="units"
27
+ :unit-items="unitItems"
28
+ @update:pending-query="onQueryUpdate"
29
+ @update:units="units = $event"
27
30
  />
28
31
  </template>
29
32
 
30
33
  <template #footer>
31
34
  <div class="filter-model__footer-buttons">
32
- <UiBtn wide
33
- :disabled="!isPendingFiltered"
34
- size="l"
35
- theme="secondary"
36
- @click="onResetClick"
35
+ <UiBtn
36
+ wide
37
+ :disabled="!isPendingFiltered"
38
+ size="l"
39
+ theme="secondary"
40
+ @click="onResetClick"
37
41
  >{{ t('reset_all') }}
38
42
  </UiBtn>
39
- <UiBtn wide
40
- size="l"
41
- theme="primary"
42
- @click="onApplyClick"
43
+ <UiBtn
44
+ wide
45
+ size="l"
46
+ theme="primary"
47
+ @click="onApplyClick"
43
48
  >{{ t('apply') }}{{ pendingChipsItems.length ? ` (${pendingChipsItems.length})` : '' }}
44
49
  </UiBtn>
45
50
  </div>
@@ -2,65 +2,75 @@
2
2
  <template>
3
3
  <div class="filter-page">
4
4
  <div class="filter-page__items-wrapper">
5
- <h2 v-if="title"
6
- class="filter-page__title"
5
+ <h2
6
+ v-if="title"
7
+ class="filter-page__title"
7
8
  >{{ title }}
8
9
  </h2>
9
- <div v-for="(group, index) in groups"
10
- :key="`filter-group-${index}`"
11
- :class="{'--short': group.name === 'tags'}"
12
- class="filter-page__group"
10
+ <div
11
+ v-for="(group, index) in groups"
12
+ :key="`filter-group-${index}`"
13
+ :class="{'--short': group.name === 'tags'}"
14
+ class="filter-page__group"
13
15
  >
14
- <div v-if="filters.length > 0"
15
- class="filter-page__group-header"
16
+ <div
17
+ v-if="filters.length > 0"
18
+ class="filter-page__group-header"
16
19
  >
17
20
  <span class="filter-page__group-title">
18
21
  {{ group?.title }}
19
22
  </span>
20
- <UiSegmented v-if="group?.name === 'physical'"
21
- :items="unitItems"
22
- :model-value="units"
23
- small
24
- @update:model-value="units = $event"
23
+ <UiSegmented
24
+ v-if="group?.name === 'physical'"
25
+ :items="unitItems"
26
+ :model-value="units"
27
+ small
28
+ @update:model-value="units = $event"
25
29
  />
26
30
  </div>
27
- <div v-if="getGroupSliders(group?.name).length > 1"
28
- :style="{ '--slider-count': getGroupSliders(group?.name).length }"
29
- class="filter-page__sliders"
31
+ <div
32
+ v-if="getGroupSliders(group?.name).length > 1"
33
+ :style="{ '--slider-count': getGroupSliders(group?.name).length }"
34
+ class="filter-page__sliders"
30
35
  >
31
- <FilterSlider v-for="(item, subIndex) in getGroupSliders(group?.name)"
32
- :key="`slider-${subIndex}`"
33
- :item="item"
34
- :group-name="item.group.name"
35
- :index="subIndex"
36
+ <FilterSlider
37
+ v-for="(item, subIndex) in getGroupSliders(group?.name)"
38
+ :key="`slider-${subIndex}`"
39
+ :item="item"
40
+ :group-name="item.group.name"
41
+ :index="subIndex"
36
42
  />
37
43
  </div>
38
44
  <div class="filter-page__items">
39
- <template v-for="(item, subIndex) in filters"
40
- :key="`model-filter-${subIndex}`"
45
+ <template
46
+ v-for="(item, subIndex) in filters"
47
+ :key="`model-filter-${subIndex}`"
41
48
  >
42
- <FilterSlider v-if="(item.kind === 'range') && (item.group.name === group?.name) && !hiddenByUnits.has(item.name) && getGroupSliders(group?.name).length === 1"
43
- :item="item"
44
- :group-name="item.group.name"
45
- :index="subIndex"
46
- class="filter-page__slider"
49
+ <FilterSlider
50
+ v-if="(item.kind === 'range') && (item.group.name === group?.name) && !hiddenByUnits.has(item.name) && getGroupSliders(group?.name).length === 1"
51
+ :item="item"
52
+ :group-name="item.group.name"
53
+ :index="subIndex"
54
+ class="filter-page__slider"
47
55
  />
48
- <UiSelect v-if="(item.kind === 'select') && (item.group.name === group?.name) && !hiddenByUnits.has(item.name)"
49
- :name="item.name"
50
- :model-value="getValue(item.name)"
51
- :items="selectItems(item)"
52
- :active="isActiveSelect(item.name)"
53
- :label="item.title"
54
- class="filter-page__select"
55
- size="s"
56
- @update:model-value="val => updateFilter(item.name, val)"
56
+ <UiSelect
57
+ v-if="(item.kind === 'select') && (item.group.name === group?.name) && !hiddenByUnits.has(item.name)"
58
+ :name="item.name"
59
+ :model-value="getValue(item.name)"
60
+ :items="selectItems(item)"
61
+ :active="isActiveSelect(item.name)"
62
+ :label="item.title"
63
+ class="filter-page__select"
64
+ size="s"
65
+ @update:model-value="val => updateFilter(item.name, val)"
57
66
  />
58
- <UiSegmented v-if="(item.kind === 'radio') && (item.group.name === group?.name)"
59
- :items="getRadioItems(item.options)"
60
- :title="item.title"
61
- :model-value="getValue(item.name)"
62
- class="filter-page__radio"
63
- @update:model-value="val => updateFilter(item.name, val)"
67
+ <UiSegmented
68
+ v-if="(item.kind === 'radio') && (item.group.name === group?.name)"
69
+ :items="getRadioItems(item.options)"
70
+ :title="item.title"
71
+ :model-value="getValue(item.name)"
72
+ class="filter-page__radio"
73
+ @update:model-value="val => updateFilter(item.name, val)"
64
74
  />
65
75
  </template>
66
76
  </div>
@@ -1,102 +1,117 @@
1
1
  <!-- Модалка фильтра (видео и модели): вкладки групп + быстрые фильтры -->
2
2
  <template>
3
- <UiPopup v-if="model"
4
- v-model="model"
5
- drawer
6
- class="filter-popup"
3
+ <UiPopup
4
+ v-if="model"
5
+ v-model="model"
6
+ drawer
7
+ class="filter-popup"
7
8
  >
8
9
  <template #title>
9
10
  <div class="filter-popup__title-wrapper">
10
11
  {{ title ?? t('filter') }}
11
- <span v-if="activeCount"
12
- class="filter-popup__active"
12
+ <span
13
+ v-if="activeCount"
14
+ class="filter-popup__active"
13
15
  >{{ t('filter_popup.active_count', { count: activeCount }) }}</span>
14
16
  </div>
15
17
  </template>
16
18
 
17
- <div :class="{ '_loading': loading }"
18
- class="filter-popup__content"
19
+ <div
20
+ :class="{ '_loading': loading }"
21
+ class="filter-popup__content"
19
22
  >
20
- <div v-if="activeChips && activeChips.length > 0"
21
- class="filter-popup__active-filters"
23
+ <div
24
+ v-if="activeChips && activeChips.length > 0"
25
+ class="filter-popup__active-filters"
22
26
  >
23
27
  <span class="filter-popup__active-filters-title">{{ t('filter_popup.active_title') }}</span>
24
28
  <div class="filter-popup__active-chips">
25
- <UiChips v-for="(chip, index) in activeChips"
26
- :key="`s-filter-popup-active-${index}`"
27
- :index="`s-filter-popup-chips-${index}`"
28
- :item="chip"
29
- class="filter-popup__chips"
30
- with-close
31
- @click="$emit('chip-click', chip)"
29
+ <UiChips
30
+ v-for="(chip, index) in activeChips"
31
+ :key="`s-filter-popup-active-${index}`"
32
+ :index="`s-filter-popup-chips-${index}`"
33
+ :item="chip"
34
+ class="filter-popup__chips"
35
+ with-close
36
+ @click="$emit('chip-click', chip)"
32
37
  />
33
38
  </div>
34
39
  </div>
35
40
 
36
- <div v-if="quick && quick.length > 0"
37
- class="filter-popup__quick"
41
+ <div
42
+ v-if="quick && quick.length > 0"
43
+ class="filter-popup__quick"
38
44
  >
39
45
  <span class="filter-popup__quick-title">{{ t('filter_popup.quick_title') }}</span>
40
46
  <div class="filter-popup__grid">
41
- <template v-for="(item, index) in quick"
42
- :key="`quick-${index}`"
47
+ <template
48
+ v-for="(item, index) in quick"
49
+ :key="`quick-${index}`"
43
50
  >
44
- <slot :item="item"
45
- :index="index"
46
- name="quick-field"
51
+ <slot
52
+ :item="item"
53
+ :index="index"
54
+ name="quick-field"
47
55
  >
48
- <UiSelect :name="(item as any).name"
49
- :model-value="(item as any).value"
50
- :items="(item as any).items"
51
- :is-first-placeholder="modelsPage"
52
- :active="(item as any).active"
53
- :label="(item as any).label ?? (item as any).title"
54
- :label-icon="(item as any).icon ? { icon: (item as any).icon, prefix: (item as any).iconPrefix ?? (modelsPage ? 'models' : 'categories') } : undefined"
55
- :placeholder="(item as any).placeholder"
56
- separator-before="unspecified"
57
- class="filter-popup__select"
58
- size="s"
59
- @update:model-value="val => $emit('field-update', { name: (item as any).name, value: val })"
56
+ <UiSelect
57
+ :name="(item as any).name"
58
+ :model-value="(item as any).value"
59
+ :items="(item as any).items"
60
+ :is-first-placeholder="modelsPage"
61
+ :active="(item as any).active"
62
+ :label="(item as any).label ?? (item as any).title"
63
+ :label-icon="(item as any).icon ? { icon: (item as any).icon, prefix: (item as any).iconPrefix ?? (modelsPage ? 'models' : 'categories') } : undefined"
64
+ :placeholder="(item as any).placeholder"
65
+ separator-before="unspecified"
66
+ class="filter-popup__select"
67
+ size="s"
68
+ @update:model-value="val => $emit('field-update', { name: (item as any).name, value: val })"
60
69
  />
61
70
  </slot>
62
71
  </template>
63
72
  </div>
64
73
  </div>
65
74
 
66
- <details v-for="(group, groupIndex) in groups"
67
- :key="`group-${groupIndex}`"
68
- class="filter-popup__group"
75
+ <details
76
+ v-for="(group, groupIndex) in groups"
77
+ :key="`group-${groupIndex}`"
78
+ class="filter-popup__group"
69
79
  >
70
80
  <summary class="filter-popup__summary">
71
- <UiIcon name="angle-right"
72
- size="16"
73
- class="filter-popup__summary-arrow"
81
+ <UiIcon
82
+ name="angle-right"
83
+ size="16"
84
+ class="filter-popup__summary-arrow"
74
85
  />
75
86
  <span class="filter-popup__summary-title">{{ group.title }}</span>
76
87
  <span class="filter-popup__summary-count">{{ t('filter_popup.fields', { count: group.count ?? group.fields.length }) }}</span>
77
- <span v-if="group.description"
78
- class="filter-popup__summary-description"
88
+ <span
89
+ v-if="group.description"
90
+ class="filter-popup__summary-description"
79
91
  >{{ group.description }}</span>
80
92
  </summary>
81
93
  <div class="filter-popup__group-content">
82
- <template v-for="(field, fieldIndex) in group.fields"
83
- :key="`field-${groupIndex}-${fieldIndex}`"
94
+ <template
95
+ v-for="(field, fieldIndex) in group.fields"
96
+ :key="`field-${groupIndex}-${fieldIndex}`"
84
97
  >
85
- <slot :field="field"
86
- :group="group"
87
- :index="fieldIndex"
88
- name="field"
98
+ <slot
99
+ :field="field"
100
+ :group="group"
101
+ :index="fieldIndex"
102
+ name="field"
89
103
  >
90
- <UiSelect :name="(field as any).name"
91
- :model-value="(field as any).value"
92
- :items="(field as any).items"
93
- :active="(field as any).active"
94
- :label="(field as any).label ?? (field as any).title"
95
- :label-icon="(field as any).icon ? { icon: (field as any).icon, prefix: (field as any).iconPrefix ?? (modelsPage ? 'models' : 'categories') } : undefined"
96
- :placeholder="(field as any).placeholder"
97
- class="filter-popup__select"
98
- size="s"
99
- @update:model-value="val => $emit('field-update', { name: (field as any).name, value: val })"
104
+ <UiSelect
105
+ :name="(field as any).name"
106
+ :model-value="(field as any).value"
107
+ :items="(field as any).items"
108
+ :active="(field as any).active"
109
+ :label="(field as any).label ?? (field as any).title"
110
+ :label-icon="(field as any).icon ? { icon: (field as any).icon, prefix: (field as any).iconPrefix ?? (modelsPage ? 'models' : 'categories') } : undefined"
111
+ :placeholder="(field as any).placeholder"
112
+ class="filter-popup__select"
113
+ size="s"
114
+ @update:model-value="val => $emit('field-update', { name: (field as any).name, value: val })"
100
115
  />
101
116
  </slot>
102
117
  </template>