startup-ui 0.11.3 → 1.0.0
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/AGENTS.md +18 -0
- package/CHANGELOG.md +39 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +21 -0
- package/README.md +54 -0
- package/dist/defaults.css +83 -0
- package/dist/index.css +1 -1
- package/dist/startup-ui.cjs.js +28 -587
- package/dist/startup-ui.cjs.js.map +1 -1
- package/dist/startup-ui.es.js +4555 -7451
- package/dist/startup-ui.es.js.map +1 -1
- package/dist/types/components/SActionIcon.d.ts +2 -1
- package/dist/types/components/SActionIcon.d.ts.map +1 -1
- package/dist/types/components/SCanvas.d.ts +0 -1
- package/dist/types/components/SCanvas.d.ts.map +1 -1
- package/dist/types/components/SCheckbox.d.ts.map +1 -1
- package/dist/types/components/SCheckboxGroup.d.ts +4 -0
- package/dist/types/components/SCheckboxGroup.d.ts.map +1 -1
- package/dist/types/components/SColumnSettings.d.ts +4 -4
- package/dist/types/components/SColumnSettings.d.ts.map +1 -1
- package/dist/types/components/SConfirm/SConfirm.d.ts +2 -0
- package/dist/types/components/SConfirm/SConfirm.d.ts.map +1 -1
- package/dist/types/components/SCopyText.d.ts.map +1 -1
- package/dist/types/components/SDatePicker.d.ts +3 -4
- package/dist/types/components/SDatePicker.d.ts.map +1 -1
- package/dist/types/components/SDialog.d.ts.map +1 -1
- package/dist/types/components/SFilterGroup.d.ts +3 -3
- package/dist/types/components/SFilterGroup.d.ts.map +1 -1
- package/dist/types/components/SFooter.d.ts.map +1 -1
- package/dist/types/components/SForm.d.ts.map +1 -1
- package/dist/types/components/SFormRow.d.ts.map +1 -1
- package/dist/types/components/SHtmlEditor.d.ts +20 -0
- package/dist/types/components/SHtmlEditor.d.ts.map +1 -1
- package/dist/types/components/SImagePreview.d.ts.map +1 -1
- package/dist/types/components/SInput.d.ts +9 -2
- package/dist/types/components/SInput.d.ts.map +1 -1
- package/dist/types/components/SMenu.d.ts +39 -0
- package/dist/types/components/SMenu.d.ts.map +1 -0
- package/dist/types/components/SNote.d.ts.map +1 -1
- package/dist/types/components/SPagination.d.ts.map +1 -1
- package/dist/types/components/SProgressbar.d.ts.map +1 -1
- package/dist/types/components/SRadio.d.ts.map +1 -1
- package/dist/types/components/SRadioGroup.d.ts +4 -0
- package/dist/types/components/SRadioGroup.d.ts.map +1 -1
- package/dist/types/components/SSelect.d.ts +6 -0
- package/dist/types/components/SSelect.d.ts.map +1 -1
- package/dist/types/components/SStatus.d.ts.map +1 -1
- package/dist/types/components/STable.d.ts +4 -4
- package/dist/types/components/STable.d.ts.map +1 -1
- package/dist/types/components/SToggle.d.ts.map +1 -1
- package/dist/types/components/STooltip.d.ts +0 -1
- package/dist/types/components/STooltip.d.ts.map +1 -1
- package/dist/types/components/STree.d.ts +11 -5
- package/dist/types/components/STree.d.ts.map +1 -1
- package/dist/types/components/SUpload.d.ts +5 -4
- package/dist/types/components/SUpload.d.ts.map +1 -1
- package/dist/types/components/SVerticalMenu.d.ts.map +1 -1
- package/dist/types/components/htmlEditor/contentStyle.d.ts +9 -0
- package/dist/types/components/htmlEditor/contentStyle.d.ts.map +1 -0
- package/dist/types/components/icons.d.ts +24 -0
- package/dist/types/components/icons.d.ts.map +1 -0
- package/dist/types/config.d.ts +49 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/global-components.d.ts +3 -6
- package/dist/types/global-components.d.ts.map +1 -1
- package/dist/types/index.d.ts +12 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/locale/index.d.ts +49 -0
- package/dist/types/locale/index.d.ts.map +1 -0
- package/dist/types/locale/messages/en-US.d.ts +4 -0
- package/dist/types/locale/messages/en-US.d.ts.map +1 -0
- package/dist/types/locale/messages/en.d.ts +4 -0
- package/dist/types/locale/messages/en.d.ts.map +1 -0
- package/dist/types/locale/messages/ru.d.ts +4 -0
- package/dist/types/locale/messages/ru.d.ts.map +1 -0
- package/dist/types/locale/types.d.ts +74 -0
- package/dist/types/locale/types.d.ts.map +1 -0
- package/dist/types/plugin.d.ts +2 -1
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/utils/deepMerge.d.ts +9 -0
- package/dist/types/utils/deepMerge.d.ts.map +1 -0
- package/dist/types/utils/options.d.ts +25 -0
- package/dist/types/utils/options.d.ts.map +1 -0
- package/llms/components/data/sfilter.md +194 -0
- package/llms/components/data/spagination.md +114 -0
- package/llms/components/data/stable.md +638 -0
- package/llms/components/data/stree.md +213 -0
- package/llms/components/forms/scheckbox.md +139 -0
- package/llms/components/forms/sdatepicker.md +161 -0
- package/llms/components/forms/sform.md +240 -0
- package/llms/components/forms/shtmleditor.md +143 -0
- package/llms/components/forms/sinput.md +165 -0
- package/llms/components/forms/sradio.md +164 -0
- package/llms/components/forms/sselect.md +149 -0
- package/llms/components/forms/sswitch.md +69 -0
- package/llms/components/forms/supload.md +189 -0
- package/llms/components/interfaces/sactionbar.md +40 -0
- package/llms/components/interfaces/sactionicon.md +126 -0
- package/llms/components/interfaces/salert.md +87 -0
- package/llms/components/interfaces/sbutton.md +167 -0
- package/llms/components/interfaces/scolumnsettings.md +204 -0
- package/llms/components/interfaces/sconfirm.md +57 -0
- package/llms/components/interfaces/scopytext.md +67 -0
- package/llms/components/interfaces/sdashboard.md +130 -0
- package/llms/components/interfaces/sdialog.md +158 -0
- package/llms/components/interfaces/simagepreview.md +98 -0
- package/llms/components/interfaces/snote.md +64 -0
- package/llms/components/interfaces/sprogressbar.md +48 -0
- package/llms/components/interfaces/sstat.md +79 -0
- package/llms/components/interfaces/sstatus.md +76 -0
- package/llms/components/interfaces/stag.md +70 -0
- package/llms/components/interfaces/stimeline.md +47 -0
- package/llms/components/interfaces/stoggle.md +120 -0
- package/llms/components/interfaces/stooltip.md +88 -0
- package/llms/components/template/scanvas.md +61 -0
- package/llms/components/template/smenu.md +88 -0
- package/llms/components/template/sverticalmenu.md +113 -0
- package/llms/llms.txt +49 -0
- package/package.json +56 -21
- package/dist/types/components/SDropdownMenu.d.ts +0 -39
- package/dist/types/components/SDropdownMenu.d.ts.map +0 -1
- package/dist/types/components/SHorizontalMenu.d.ts +0 -33
- package/dist/types/components/SHorizontalMenu.d.ts.map +0 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# SFilterGroup > SFilter
|
|
2
|
+
|
|
3
|
+
Фильтры
|
|
4
|
+
|
|
5
|
+
<SToggleGroup>
|
|
6
|
+
<SToggle title="В чем отличие от аналогов?">
|
|
7
|
+
<p>В популярных библиотеках компонентов для Vue3 прямого аналога нет. По сравнению с ручной сборкой из других компонентов SFilter позволяет:</p>
|
|
8
|
+
<ol>
|
|
9
|
+
<li>Минимальным синтаксисом собирать функциональные фильтры на страницах. Это обеспечивает одинаковую реализацию разными программистами, избавляет от визуальных отличий, упрощает дальнейшую поддержку и сохраняет взаимозаменяемость между проектами.</li>
|
|
10
|
+
<li>Брать первоначальные значения фильтра напрямую из GET-параметров, а не пробрасывать из контроллера (сохранение «тонких контроллеров»).</li>
|
|
11
|
+
<li>Дебаунсить применение значений одним атрибутом, что всегда нужно для приятного UX ввода текстовых значений.</li>
|
|
12
|
+
<li>Для пустых/незаданных значений фильтров не добавляет GET-параметры, чтобы сохранять консистентность URL.</li>
|
|
13
|
+
</ol>
|
|
14
|
+
</SToggle>
|
|
15
|
+
</SToggleGroup>
|
|
16
|
+
|
|
17
|
+
## Базовый пример
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<template>
|
|
21
|
+
<SFilterGroup v-model="filter">
|
|
22
|
+
<SFilter name="plan">
|
|
23
|
+
<SRadioGroup buttons>
|
|
24
|
+
<SRadio value="">Все тарифы</SRadio>
|
|
25
|
+
<SRadio value="base">Базовый</SRadio>
|
|
26
|
+
<SRadio value="premium">Премиум</SRadio>
|
|
27
|
+
</SRadioGroup>
|
|
28
|
+
</SFilter>
|
|
29
|
+
<SFilter name="period">
|
|
30
|
+
<SDatePicker range value-format="YYYYMMDD" />
|
|
31
|
+
</SFilter>
|
|
32
|
+
</SFilterGroup>
|
|
33
|
+
<p>Текущее значение: <code>{{ filter }}</code></p>
|
|
34
|
+
</template>
|
|
35
|
+
<script setup>
|
|
36
|
+
import { ref } from 'vue'
|
|
37
|
+
const filter = ref({})
|
|
38
|
+
</script>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Привязка к GET-параметрам
|
|
42
|
+
|
|
43
|
+
Часто бывает удобно привязать модель напрямую к GET-параметрам:
|
|
44
|
+
<ol>
|
|
45
|
+
<li>Взять стартовые значения модели из GET-параметров (без необходимости проброса через контроллер)</li>
|
|
46
|
+
|
|
47
|
+
<li>При изменениях модели автоматически обновлять GET-параметры, сбрасывая page, но оставляя любые другие параметры.</li>
|
|
48
|
+
</ol>
|
|
49
|
+
|
|
50
|
+
В этом случае можно использовать атрибут `bind-to-query` , который включит такое поведение:
|
|
51
|
+
|
|
52
|
+
```vue
|
|
53
|
+
<SFilterGroup bind-to-query>
|
|
54
|
+
<!-- ... -->
|
|
55
|
+
</SFilterGroup>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
По умолчанию `bind-to-query` синхронизирует URL через нативный History API — без серверного рефетча и без зависимости от какого-либо роутера (компонент не требует InertiaJS). Если нужно, чтобы изменение фильтра инициировало серверный запрос (SPA-навигация), зарегистрируйте роутер один раз при подключении плагина — например, роутер Inertia:
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
// app.js
|
|
62
|
+
import StartupUI from 'startup-ui';
|
|
63
|
+
import { router } from '@inertiajs/vue3';
|
|
64
|
+
|
|
65
|
+
app.use(StartupUI, { router });
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Подойдёт любой объект с совместимой сигнатурой `get(url, params, options)`. Если роутер не зарегистрирован — `bind-to-query` работает «в чистом виде» (только синхронизация URL).
|
|
69
|
+
|
|
70
|
+
## Часто используемые поля
|
|
71
|
+
|
|
72
|
+
### Горизонтальные радио-кнопки
|
|
73
|
+
|
|
74
|
+
```vue
|
|
75
|
+
<template>
|
|
76
|
+
<SFilterGroup v-model="filter">
|
|
77
|
+
<SFilter name="role">
|
|
78
|
+
<SRadioGroup buttons placeholder="Все" :options="roles" />
|
|
79
|
+
</SFilter>
|
|
80
|
+
</SFilterGroup>
|
|
81
|
+
<p>Текущее значение: <code>{{ filter }}</code></p>
|
|
82
|
+
</template>
|
|
83
|
+
<script setup>
|
|
84
|
+
import { ref } from 'vue'
|
|
85
|
+
const filter = ref({})
|
|
86
|
+
const roles = { customer: 'Пользователь', admin: 'Админ', editor: 'Редактор' }
|
|
87
|
+
</script>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Placeholder задает «не выбранный вариант» — null-значение.
|
|
91
|
+
|
|
92
|
+
## Выпадающий список
|
|
93
|
+
|
|
94
|
+
```vue
|
|
95
|
+
<template>
|
|
96
|
+
<SFilterGroup v-model="filter">
|
|
97
|
+
<SFilter name="status">
|
|
98
|
+
<SSelect placeholder="Любой статус" :options="statusOptions" clearable />
|
|
99
|
+
</SFilter>
|
|
100
|
+
</SFilterGroup>
|
|
101
|
+
<p>Текущее значение: <code>{{ filter }}</code></p>
|
|
102
|
+
</template>
|
|
103
|
+
<script setup>
|
|
104
|
+
import { ref } from 'vue'
|
|
105
|
+
const filter = ref({})
|
|
106
|
+
const statusOptions = { warning: 'Предупреждение', success: 'Удачно', error: 'Ошибка' }
|
|
107
|
+
</script>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Текстовое поле ввода
|
|
111
|
+
|
|
112
|
+
```vue
|
|
113
|
+
<template>
|
|
114
|
+
<SFilterGroup v-model="filter">
|
|
115
|
+
<SFilter name="q" :debounce="500" style="max-width: 350px">
|
|
116
|
+
<SInput placeholder="Поиск по никнейму" clearable />
|
|
117
|
+
</SFilter>
|
|
118
|
+
</SFilterGroup>
|
|
119
|
+
<p>Текущее значение: <code>{{ filter }}</code></p>
|
|
120
|
+
</template>
|
|
121
|
+
<script setup>
|
|
122
|
+
import { ref } from 'vue'
|
|
123
|
+
const filter = ref({})
|
|
124
|
+
</script>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Выбор периода дат
|
|
128
|
+
|
|
129
|
+
```vue
|
|
130
|
+
<template>
|
|
131
|
+
<SFilterGroup v-model="filter">
|
|
132
|
+
<SFilter name="period">
|
|
133
|
+
<SDatePicker range value-format="YYYYMMDD" />
|
|
134
|
+
</SFilter>
|
|
135
|
+
</SFilterGroup>
|
|
136
|
+
<p>Текущее значение: <code>{{ filter }}</code></p>
|
|
137
|
+
</template>
|
|
138
|
+
<script setup>
|
|
139
|
+
import { ref } from 'vue'
|
|
140
|
+
const filter = ref({})
|
|
141
|
+
</script>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Интерфейс компонента SFilterGroup
|
|
145
|
+
|
|
146
|
+
### Свойства (Props)
|
|
147
|
+
|
|
148
|
+
| Название | Тип | По умолчанию | Описание |
|
|
149
|
+
|----------|-----|--------------|----------|
|
|
150
|
+
| v-model | `Object` | `{}` | Объект, хранящий состояние всех вложенных `SFilter`. |
|
|
151
|
+
| bindToQuery | boolean | `false` | Синхронизирует состояние с GET-параметрами. По умолчанию через History API; если зарегистрирован роутер (`app.use(StartupUI, { router })`) — через него (напр. Inertia-визит с серверным рефетчем). |
|
|
152
|
+
| ignoreQueryNames | `string[]` | `['page']` | GET-параметры, которые игнорируются при сбросе фильтров. |
|
|
153
|
+
| ignoreQueryValues | `any[]` | `['', null, undefined, false]` | Значения, при которых параметр удаляется из URL (чтобы не мусорить пустой строкой). |
|
|
154
|
+
| title | string | - | Заголовок группы фильтров. |
|
|
155
|
+
| loading | boolean | `false` | Состояние загрузки (скелетон или спиннер). |
|
|
156
|
+
| showAll | boolean | `false` | Если `true`, кнопка «Показать все» заменяется на «Скрыть». |
|
|
157
|
+
|
|
158
|
+
### Слоты (Slots)
|
|
159
|
+
|
|
160
|
+
| Название | Описание |
|
|
161
|
+
|----------|----------|
|
|
162
|
+
| default | Содержимое группы (обычно компоненты `SFilter`). |
|
|
163
|
+
|
|
164
|
+
## Интерфейс компонента SFilter
|
|
165
|
+
|
|
166
|
+
### Свойства (Props)
|
|
167
|
+
|
|
168
|
+
| Название | Тип | По умолчанию | Описание |
|
|
169
|
+
|----------|-----|--------------|----------|
|
|
170
|
+
| name | string | `undefined` | **Обязательное.** Ключ для хранения значения в `v-model` родительской группы. |
|
|
171
|
+
| debounce | number | `0` | Задержка в миллисекундах перед сохранением. Критично для текстовых инпутов при `bindToQuery`. |
|
|
172
|
+
| title | string | - | Заголовок конкретного фильтра. |
|
|
173
|
+
| opened | boolean | `false` | Раскрыт ли фильтр по умолчанию. |
|
|
174
|
+
|
|
175
|
+
### Слоты (Slots)
|
|
176
|
+
|
|
177
|
+
| Название | Описание |
|
|
178
|
+
|----------|----------|
|
|
179
|
+
| default | Содержимое фильтра (чекбоксы, инпуты и т.д.). |
|
|
180
|
+
|
|
181
|
+
<style lang="scss" scoped>
|
|
182
|
+
.vp-doc ol {
|
|
183
|
+
margin: var(--s-base-margin) !important;
|
|
184
|
+
}
|
|
185
|
+
.vp-doc li {
|
|
186
|
+
margin-bottom: 10px !important;
|
|
187
|
+
}
|
|
188
|
+
.s-datepicker {
|
|
189
|
+
color: var(--s-text);
|
|
190
|
+
}
|
|
191
|
+
.s-filtergroup {
|
|
192
|
+
margin-bottom: 0;
|
|
193
|
+
}
|
|
194
|
+
</style>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# SPagination
|
|
2
|
+
|
|
3
|
+
Постраничная навигация.
|
|
4
|
+
|
|
5
|
+
<SToggleGroup>
|
|
6
|
+
<SToggle title="В чем отличие от аналогов?">
|
|
7
|
+
<p>В отличие от популярных библиотек компонентов для Vue3:</p>
|
|
8
|
+
<ol>
|
|
9
|
+
<li>Принимает атрибуты ровно в том формате, в котором его отдает пагинатор Laravel, что позволяет сразу пробросить исходный пагинатор без дополнительных прописываний атрибутов через v-bind.</li>
|
|
10
|
+
</ol>
|
|
11
|
+
</SToggle>
|
|
12
|
+
</SToggleGroup>
|
|
13
|
+
|
|
14
|
+
## Базовый пример
|
|
15
|
+
|
|
16
|
+
```vue
|
|
17
|
+
<template>
|
|
18
|
+
<!-- inertia('User/Index', ['users' => Users::paginate()]) -->
|
|
19
|
+
<SPagination v-bind="users" />
|
|
20
|
+
</template>
|
|
21
|
+
<script setup>
|
|
22
|
+
import { ref } from 'vue'
|
|
23
|
+
|
|
24
|
+
// Объект в том же виде, в каком его отдаёт пагинатор Laravel
|
|
25
|
+
const users = ref({
|
|
26
|
+
current_page: 2,
|
|
27
|
+
from: 16,
|
|
28
|
+
to: 30,
|
|
29
|
+
per_page: 15,
|
|
30
|
+
total: 72,
|
|
31
|
+
links: [
|
|
32
|
+
{ url: '?page=1', label: '←', active: false },
|
|
33
|
+
{ url: '?page=1', label: '1', active: false },
|
|
34
|
+
{ url: '?page=2', label: '2', active: true },
|
|
35
|
+
{ url: '?page=3', label: '3', active: false },
|
|
36
|
+
{ url: '?page=4', label: '4', active: false },
|
|
37
|
+
{ url: '?page=5', label: '5', active: false },
|
|
38
|
+
{ url: '?page=3', label: '→', active: false },
|
|
39
|
+
],
|
|
40
|
+
})
|
|
41
|
+
</script>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Laravel-пагинатор на выходе формирует объект с ключами `{current_page, from, last_page, links, per_page, to, total}`. SPaginator использует ровно то же именование входных атрибутов, поэтому пробрасываем их как есть через v-bind.
|
|
45
|
+
|
|
46
|
+
## Выбор кол-ва результатов на странице
|
|
47
|
+
|
|
48
|
+
Чтобы также выводить выпадающий список в кол-вом результатов на странице, можно добавить атрибут <strong>per-page-options</strong>:
|
|
49
|
+
|
|
50
|
+
```vue
|
|
51
|
+
<template>
|
|
52
|
+
<SPagination v-bind="users" :per-page-options="[15, 25, 50]" />
|
|
53
|
+
</template>
|
|
54
|
+
<script setup>
|
|
55
|
+
import { ref } from 'vue'
|
|
56
|
+
|
|
57
|
+
const users = ref({
|
|
58
|
+
current_page: 2,
|
|
59
|
+
from: 16,
|
|
60
|
+
to: 30,
|
|
61
|
+
per_page: 15,
|
|
62
|
+
total: 72,
|
|
63
|
+
links: [
|
|
64
|
+
{ url: '?page=1', label: '←', active: false },
|
|
65
|
+
{ url: '?page=1', label: '1', active: false },
|
|
66
|
+
{ url: '?page=2', label: '2', active: true },
|
|
67
|
+
{ url: '?page=3', label: '3', active: false },
|
|
68
|
+
{ url: '?page=4', label: '4', active: false },
|
|
69
|
+
{ url: '?page=5', label: '5', active: false },
|
|
70
|
+
{ url: '?page=3', label: '→', active: false },
|
|
71
|
+
],
|
|
72
|
+
})
|
|
73
|
+
</script>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Изменение кол-ва вариантов на странице меняет query-параметр perpage, сбрасывает query-параметр page и сохраняет все остальные query-параметры нетронутыми.
|
|
77
|
+
|
|
78
|
+
## Интерфейс компонента
|
|
79
|
+
|
|
80
|
+
### Свойства (Props)
|
|
81
|
+
|
|
82
|
+
| Название | Тип | По умолчанию | Описание |
|
|
83
|
+
|----------|-----|--------------|----------|
|
|
84
|
+
| links | `PaginationLink[]` | `[]` | Массив ссылок `[{ url, label, active }]`. Обычно генерируется бекэндом Laravel. |
|
|
85
|
+
| perPageOptions | `number[] \| string[]` \ `Record` | `undefined` | Опции для выпадающего списка кол-ва элементов на странице (например, `[10, 20, 50]`). |
|
|
86
|
+
| url | string | `location.pathname` | Базовый URL, используемый при смене кол-ва элементов на странице. |
|
|
87
|
+
| preserveScroll | boolean | `true` | Пробрасывается в зарегистрированный `Link` (Inertia). Сохраняет позицию скролла. |
|
|
88
|
+
| preserveState | boolean | `false` | Пробрасывается в зарегистрированный `Link` (Inertia). Сохраняет локальный стейт страницы. |
|
|
89
|
+
| per_page | number | `undefined` | Выбранное кол-во элементов на странице. |
|
|
90
|
+
| from | number | `undefined` | Начальный индекс (для надписи «Показано X-Y из Z»). |
|
|
91
|
+
| to | number | `undefined` | Конечный индекс. |
|
|
92
|
+
| total | number | `undefined` | Общее количество записей. |
|
|
93
|
+
|
|
94
|
+
### Слоты (Slots)
|
|
95
|
+
|
|
96
|
+
| Название | Описание |
|
|
97
|
+
|----------|----------|
|
|
98
|
+
| default | По умолчанию слоты отсутствуют, пагинация генерируется автоматически по пропсам. |
|
|
99
|
+
|
|
100
|
+
<style lang="scss">
|
|
101
|
+
:root {
|
|
102
|
+
.vp-doc ul {
|
|
103
|
+
padding-left: 0;
|
|
104
|
+
margin: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.vp-doc li + li {
|
|
108
|
+
margin: 0;
|
|
109
|
+
}
|
|
110
|
+
.s-demo-preview .s-pagination {
|
|
111
|
+
margin-bottom: 0;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
</style>
|