itube-specs 0.0.211 → 0.0.213
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 +9 -117
- package/components/page-components/{f-filter-button.vue → s-filter-button.vue} +2 -2
- package/components/page-components/{f-filter-chips.vue → s-filter-chips.vue} +2 -2
- package/components/page-components/{f-filter-page.vue → s-filter-page.vue} +11 -11
- package/components/page-components/{f-filter-popup.vue → s-filter-popup.vue} +3 -3
- package/components/page-components/{f-filter.vue → s-filter.vue} +1 -1
- package/components/page-components/{f-model-filters.vue → s-model-filters.vue} +5 -5
- package/components/page-components/{f-report.vue → s-report.vue} +1 -1
- package/components/page-components/{f-share.vue → s-share.vue} +1 -1
- package/components/ui/{f-checkbox.vue → s-checkbox.vue} +2 -2
- package/components/ui/{f-chips.vue → s-chips.vue} +2 -2
- package/components/ui/{f-count.vue → s-count.vue} +1 -1
- package/components/ui/{f-country.vue → s-country.vue} +1 -1
- package/components/ui/{f-dropdown.vue → s-dropdown.vue} +8 -8
- package/components/ui/{f-icon.vue → s-icon.vue} +1 -1
- package/components/ui/{f-input.vue → s-input.vue} +5 -5
- package/components/ui/{f-label.vue → s-label.vue} +1 -1
- package/components/ui/{f-link.vue → s-link.vue} +1 -1
- package/components/ui/{f-model-tag.vue → s-model-tag.vue} +2 -2
- package/components/ui/{f-notification.vue → s-notification.vue} +8 -8
- package/components/ui/{f-popup.vue → s-popup.vue} +12 -12
- package/components/ui/{f-radio.vue → s-radio.vue} +5 -5
- package/components/ui/{f-select.vue → s-select.vue} +10 -10
- package/components/ui/{f-slider.vue → s-slider.vue} +6 -6
- package/components/ui/{f-snackbar.vue → s-snackbar.vue} +2 -2
- package/components/ui/{f-timestamp.vue → s-timestamp.vue} +4 -4
- package/components/ui/{f-toggle.vue → s-toggle.vue} +5 -5
- package/package.json +1 -1
- /package/components/page-components/{f-breadcrumbs.vue → s-breadcrumbs.vue} +0 -0
- /package/components/page-components/{f-chips-panel.vue → s-chips-panel.vue} +0 -0
- /package/components/page-components/{f-filter-model-chips.vue → s-filter-model-chips.vue} +0 -0
- /package/components/page-components/{f-filter-videos-chips.vue → s-filter-videos-chips.vue} +0 -0
- /package/components/page-components/{f-info-grid.vue → s-info-grid.vue} +0 -0
- /package/components/page-components/{f-info-socials.vue → s-info-socials.vue} +0 -0
- /package/components/page-components/{f-pagination.vue → s-pagination.vue} +0 -0
- /package/components/page-components/{f-sort.vue → s-sort.vue} +0 -0
- /package/components/page-components/{f-videos-title.vue → s-videos-title.vue} +0 -0
- /package/components/ui/{f-button.vue → s-button.vue} +0 -0
- /package/components/ui/{f-img.vue → s-img.vue} +0 -0
package/README.md
CHANGED
|
@@ -1,121 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
extends: [
|
|
9
|
-
process.env.LAYER_PATH || '@test/test'
|
|
10
|
-
],
|
|
11
|
-
```
|
|
12
|
-
6) Если не первый раз то обновляем пакет `npm install @test/test@latest`, если пакет уже установлен можно в ручную поменять версию и `npm install` (если пакет недавно обновился, сразу npm install может не подхватить последнюю версию);
|
|
13
|
-
7) `npx nuxi prepare`
|
|
14
|
-
8) если есть проблемы с runtime запустить в пакете npm run dev он перегенерирует tsconfig и eslint.config.mjs
|
|
15
|
-
9) и запускаем либо `npm run dev`
|
|
16
|
-
|
|
17
|
-
`nuxt.config.ts`
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
import { fileURLToPath } from 'node:url'
|
|
21
|
-
import { defineNuxtConfig } from 'nuxt/config'
|
|
22
|
-
|
|
23
|
-
export default defineNuxtConfig({
|
|
24
|
-
modules: ['@nuxt/eslint'],
|
|
25
|
-
eslint: {
|
|
26
|
-
config: {
|
|
27
|
-
// Use the generated ESLint config for lint root project as well
|
|
28
|
-
rootDir: fileURLToPath(new URL('..', import.meta.url))
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
components: {
|
|
32
|
-
dirs: [
|
|
33
|
-
{
|
|
34
|
-
path: './components',
|
|
35
|
-
pathPrefix: false
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
})
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
`package.json` - версии nuxt && vue должны быть идентичны проекту
|
|
43
|
-
```bash
|
|
44
|
-
{
|
|
45
|
-
"name": "@test/test", // свое
|
|
46
|
-
"type": "module",
|
|
47
|
-
"version": "0.0.1",
|
|
48
|
-
"main": "./nuxt.config.ts",
|
|
49
|
-
"types": "./types/index.d.ts",
|
|
50
|
-
"exports": {
|
|
51
|
-
".": {
|
|
52
|
-
"types": "./types/index.d.ts",
|
|
53
|
-
"import": "./nuxt.config.ts",
|
|
54
|
-
"default": "./nuxt.config.ts"
|
|
55
|
-
},
|
|
56
|
-
"./types": {
|
|
57
|
-
"types": "./types/index.d.ts",
|
|
58
|
-
"default": "./types/index.d.ts"
|
|
59
|
-
},
|
|
60
|
-
"./runtime": {
|
|
61
|
-
"import": "./runtime/index.ts",
|
|
62
|
-
"default": "./runtime/index.ts"
|
|
63
|
-
},
|
|
64
|
-
"./*": "./*"
|
|
65
|
-
},
|
|
66
|
-
"files": [
|
|
67
|
-
"components/",
|
|
68
|
-
"composables/",
|
|
69
|
-
"types/",
|
|
70
|
-
"nuxt.config.ts"
|
|
71
|
-
],
|
|
72
|
-
"devDependencies": {
|
|
73
|
-
"@nuxt/eslint": "latest",
|
|
74
|
-
"@types/node": "^20.19.19",
|
|
75
|
-
"eslint": "^9.37.0",
|
|
76
|
-
"nuxt": "3.17.6",
|
|
77
|
-
"typescript": "^5.9.3",
|
|
78
|
-
"vue": "3.5.17"
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
Импорт typescript типов осуществляется за счет этих опций
|
|
83
|
-
```
|
|
84
|
-
"types": "./types/index.d.ts",
|
|
85
|
-
"exports": {
|
|
86
|
-
".": {
|
|
87
|
-
"types": "./types/index.d.ts",
|
|
88
|
-
"import": "./nuxt.config.ts",
|
|
89
|
-
"default": "./nuxt.config.ts"
|
|
90
|
-
},
|
|
91
|
-
"./types": {
|
|
92
|
-
"types": "./types/index.d.ts",
|
|
93
|
-
"default": "./types/index.d.ts"
|
|
94
|
-
},
|
|
95
|
-
"./runtime": {
|
|
96
|
-
"import": "./runtime/index.ts",
|
|
97
|
-
"default": "./runtime/index.ts"
|
|
98
|
-
},
|
|
99
|
-
"./*": "./*"
|
|
100
|
-
},
|
|
101
|
-
```
|
|
102
|
-
Где:
|
|
103
|
-
- "types" указывает TypeScript, где лежит корневой файл с типами;
|
|
104
|
-
- "exports" сообщает Node и TS, какие модули доступны для импорта;
|
|
105
|
-
- "./types" позволяет писать коротко:
|
|
1
|
+
Пакет является nuxt layer проектов itube;
|
|
2
|
+
Как работать:
|
|
3
|
+
1) коммитим, потом `npm run patch` - патчит версию;
|
|
4
|
+
2) `npm i itube-specs` ставим пакет в проекте;
|
|
5
|
+
3) Если не первый раз то обновляем пакет `npm install @test/test@latest` или `npm run spec`;
|
|
6
|
+
4) npx nuxi prepare` при необходимости (могут не подсасаться композиблы или компоненты в автоимпорте);
|
|
7
|
+
5) если есть проблемы с runtime запустить в пакете npm run dev он перегенерирует tsconfig и eslint.config.mjs;
|
|
106
8
|
|
|
107
9
|
```
|
|
108
10
|
import type { IUser } from '@test/test/types'
|
|
109
11
|
```
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
`tsconfig.json`
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
{
|
|
116
|
-
"extends": "./.nuxt/tsconfig.json",
|
|
117
|
-
"compilerOptions": {
|
|
118
|
-
"types": ["node"]
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
12
|
+
Types не импортируются автоматически, каждый тип в свою очередь экспортируется в index.d.ts (обязательно указывать расширение при эскпорте d.ts) общий файл откуда уже и берутся все типы в проект.
|
|
13
|
+
Все что кроме nuxt сущностей (composables, components) устанавливается прописывается вручную.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<FButton
|
|
3
|
-
class="
|
|
3
|
+
class="s-filter-button"
|
|
4
4
|
:size="size"
|
|
5
5
|
:theme="theme"
|
|
6
6
|
aria-label="Filter"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
>{{ buttonName }}
|
|
13
13
|
</span>
|
|
14
14
|
<FIcon
|
|
15
|
-
class="
|
|
15
|
+
class="s-filter-button__icon _to-sm"
|
|
16
16
|
name="chevron-down"
|
|
17
17
|
size="16"
|
|
18
18
|
:class="{'--open': modelValue}"
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
<FChipsPanel v-if="items.length > 0">
|
|
3
3
|
<FChips
|
|
4
4
|
v-for="(item, index) in items"
|
|
5
|
-
class="
|
|
5
|
+
class="s-filter-chips"
|
|
6
6
|
with-close
|
|
7
|
-
:index="`
|
|
7
|
+
:index="`s-filter-page-chips${index}`"
|
|
8
8
|
bright
|
|
9
9
|
:item="item"
|
|
10
10
|
@click="onChipsClick(item)"
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="
|
|
3
|
-
<div class="
|
|
2
|
+
<div class="s-filter-page">
|
|
3
|
+
<div class="s-filter-page__items-wrapper">
|
|
4
4
|
<details
|
|
5
5
|
v-for="(group, index) in groups"
|
|
6
6
|
:key="`filter-group-${index}`"
|
|
7
|
-
class="
|
|
7
|
+
class="s-filter-page__group"
|
|
8
8
|
:open="index === 0 || activeGroup === index + 1"
|
|
9
9
|
>
|
|
10
10
|
<summary
|
|
11
11
|
v-if="filters.length > 0"
|
|
12
|
-
class="
|
|
12
|
+
class="s-filter-page__group-title"
|
|
13
13
|
>
|
|
14
14
|
{{ group?.title }}
|
|
15
15
|
<FIcon
|
|
16
|
-
class="
|
|
16
|
+
class="s-filter-page__group-title-icon"
|
|
17
17
|
size="32"
|
|
18
18
|
name="chevron-down"
|
|
19
19
|
/>
|
|
20
20
|
</summary>
|
|
21
|
-
<div class="
|
|
21
|
+
<div class="s-filter-page__items">
|
|
22
22
|
<template v-for="(item, subIndex) in filters">
|
|
23
23
|
<ClientOnly>
|
|
24
24
|
<FSlider
|
|
@@ -53,15 +53,15 @@
|
|
|
53
53
|
</div>
|
|
54
54
|
</details>
|
|
55
55
|
</div>
|
|
56
|
-
<div class="
|
|
57
|
-
<p class="
|
|
56
|
+
<div class="s-filter-page__footer _from-sm">
|
|
57
|
+
<p class="s-filter-page__footer-results">
|
|
58
58
|
<FIcon name="filter" size="24"/>
|
|
59
|
-
<span class="
|
|
59
|
+
<span class="s-filter-page__footer-text">{{ `${count} ${t('results_found')}` }}</span>
|
|
60
60
|
</p>
|
|
61
|
-
<div class="
|
|
61
|
+
<div class="s-filter-page__footer-buttons">
|
|
62
62
|
<FButton
|
|
63
63
|
wide
|
|
64
|
-
class="
|
|
64
|
+
class="s-filter-page__reset"
|
|
65
65
|
:disabled="!isFiltered"
|
|
66
66
|
@click="onResetClick"
|
|
67
67
|
theme="secondary"
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<template #title>{{ filterTitle }}</template>
|
|
9
9
|
|
|
10
10
|
<template #fixedContent>
|
|
11
|
-
<div class="
|
|
11
|
+
<div class="s-filter-popup__main-filters">
|
|
12
12
|
<FSelect
|
|
13
13
|
name="duration"
|
|
14
14
|
v-model="durationValue"
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
</div>
|
|
27
27
|
</template>
|
|
28
28
|
|
|
29
|
-
<div class="
|
|
29
|
+
<div class="s-filter-popup__filters">
|
|
30
30
|
<template
|
|
31
31
|
v-for="(item, index) in scheme"
|
|
32
32
|
:key="`scheme-${index}`"
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</div>
|
|
49
49
|
|
|
50
50
|
<template #footer>
|
|
51
|
-
<div class="
|
|
51
|
+
<div class="s-filter-popup__buttons">
|
|
52
52
|
<FButton
|
|
53
53
|
theme="secondary"
|
|
54
54
|
wide
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<FFilterModelChips :filters="data.filters"/>
|
|
3
3
|
<FFilterPage
|
|
4
|
-
class="
|
|
4
|
+
class="s-model-filters__filters _from-sm"
|
|
5
5
|
:filters="data.filters"
|
|
6
6
|
:count="data.total"
|
|
7
7
|
:class="{'_loading': status === 'pending'}"
|
|
@@ -11,20 +11,20 @@
|
|
|
11
11
|
v-if="model"
|
|
12
12
|
v-model="model"
|
|
13
13
|
sheet
|
|
14
|
-
class="
|
|
14
|
+
class="s-model-filters__popup"
|
|
15
15
|
>
|
|
16
16
|
<template #title>{{ popupTitle }}</template>
|
|
17
17
|
<FFilterPage
|
|
18
|
-
class="
|
|
18
|
+
class="s-model-filters__filters _to-sm"
|
|
19
19
|
:filters="data.filters"
|
|
20
20
|
:count="data.total"
|
|
21
21
|
:class="{'_loading': status === 'pending'}"
|
|
22
22
|
/>
|
|
23
23
|
<template #footer>
|
|
24
|
-
<div class="
|
|
24
|
+
<div class="s-model-filters__footer-buttons _to-sm">
|
|
25
25
|
<FButton
|
|
26
26
|
wide
|
|
27
|
-
class="
|
|
27
|
+
class="s-model-filters__reset"
|
|
28
28
|
:disabled="!isFiltered"
|
|
29
29
|
@click="onResetClick"
|
|
30
30
|
theme="secondary"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<component
|
|
3
3
|
:is="component"
|
|
4
|
-
class="
|
|
4
|
+
class="s-chips"
|
|
5
5
|
:class="{
|
|
6
6
|
'--active': isActive,
|
|
7
7
|
'--alphabet': alphabet,
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{{ name }}
|
|
23
23
|
<FIcon
|
|
24
24
|
v-if="(isActive && !withoutClose && item.value !== 'reset' && !mini) || withClose"
|
|
25
|
-
class="
|
|
25
|
+
class="s-chips__close"
|
|
26
26
|
name="close"
|
|
27
27
|
size="16"
|
|
28
28
|
/>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
ref="dropdownRef"
|
|
4
|
-
class="
|
|
4
|
+
class="s-dropdown"
|
|
5
5
|
:style="`--max-height: ${getMaxHeight}`"
|
|
6
6
|
:class="[
|
|
7
7
|
{'--top': top},
|
|
@@ -14,35 +14,35 @@
|
|
|
14
14
|
@mouseover="mouseHandler(true)"
|
|
15
15
|
>
|
|
16
16
|
<div
|
|
17
|
-
class="
|
|
17
|
+
class="s-dropdown__trigger"
|
|
18
18
|
@click="openDropdown"
|
|
19
19
|
>
|
|
20
20
|
<slot name="trigger"></slot>
|
|
21
21
|
</div>
|
|
22
|
-
<transition name="
|
|
22
|
+
<transition name="s-dropdown" mode="out-in">
|
|
23
23
|
<dialog
|
|
24
24
|
v-if="useVIf ? open && $slots.items : true"
|
|
25
25
|
:style="!useVIf ? { display: (open && $slots.items) ? '' : 'none' } : {}"
|
|
26
26
|
ref="menuRef"
|
|
27
|
-
class="
|
|
27
|
+
class="s-dropdown__menu"
|
|
28
28
|
:class="{'--open': open}"
|
|
29
29
|
@click="close"
|
|
30
30
|
>
|
|
31
31
|
<button
|
|
32
|
-
class="
|
|
32
|
+
class="s-dropdown__sheet-close _to-sm"
|
|
33
33
|
type="button"
|
|
34
34
|
@click="close"
|
|
35
35
|
></button>
|
|
36
36
|
<button
|
|
37
|
-
class="
|
|
37
|
+
class="s-dropdown__crest _to-sm"
|
|
38
38
|
type="button"
|
|
39
39
|
@click="close"
|
|
40
40
|
>
|
|
41
41
|
<FIcon name="close" size="16"/>
|
|
42
42
|
</button>
|
|
43
43
|
<slot name="header"></slot>
|
|
44
|
-
<div class="
|
|
45
|
-
<slot name="items" v-bind="'
|
|
44
|
+
<div class="s-dropdown__menu-items" v-if="$slots.items">
|
|
45
|
+
<slot name="items" v-bind="'s-dropdown__item'"></slot>
|
|
46
46
|
</div>
|
|
47
47
|
</dialog>
|
|
48
48
|
</transition>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
class="
|
|
3
|
+
class="s-input"
|
|
4
4
|
:class="[
|
|
5
|
-
{'
|
|
6
|
-
{'
|
|
7
|
-
{'
|
|
8
|
-
{'
|
|
5
|
+
{'s-input--filled': isFilled || isAutoFilled},
|
|
6
|
+
{'s-input--focused': isFocused},
|
|
7
|
+
{'s-input--disabled': disabled},
|
|
8
|
+
{'s-input--error': error},
|
|
9
9
|
{'f-input--textarea': isTextArea},
|
|
10
10
|
{'f-input--icon': isPassword || icon},
|
|
11
11
|
`f-input--${size}`,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<NuxtLink
|
|
3
|
-
class="
|
|
3
|
+
class="s-model-tag"
|
|
4
4
|
:to="generateLink(`/models/${convertString().toSlug(card.title)}`)"
|
|
5
5
|
>
|
|
6
6
|
<FImg
|
|
7
|
-
class="
|
|
7
|
+
class="s-model-tag__img"
|
|
8
8
|
sizes="20px sm:24px"
|
|
9
9
|
:src="card.primaryImageUrl || placeholder"
|
|
10
10
|
width="20"
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<dialog
|
|
3
3
|
ref="notification"
|
|
4
|
-
class="
|
|
4
|
+
class="s-notification"
|
|
5
5
|
:class="{'--popup': popup}"
|
|
6
6
|
@click="closeByBackdropClick"
|
|
7
7
|
@cancel="close"
|
|
8
8
|
>
|
|
9
|
-
<div class="
|
|
10
|
-
<header class="
|
|
9
|
+
<div class="s-notification__wrapper">
|
|
10
|
+
<header class="s-notification__header">
|
|
11
11
|
<p
|
|
12
12
|
v-if="$slots.title"
|
|
13
|
-
class="
|
|
13
|
+
class="s-notification__title"
|
|
14
14
|
>
|
|
15
15
|
<slot name="title"></slot>
|
|
16
16
|
</p>
|
|
17
17
|
<button
|
|
18
|
-
class="
|
|
18
|
+
class="s-notification__close"
|
|
19
19
|
type="button"
|
|
20
20
|
title="close"
|
|
21
21
|
aria-label="close"
|
|
22
22
|
@click="close"
|
|
23
23
|
>
|
|
24
|
-
<FIcon class="
|
|
24
|
+
<FIcon class="s-notification__close-icon" name="close" size="16"/>
|
|
25
25
|
</button>
|
|
26
26
|
</header>
|
|
27
|
-
<div class="
|
|
27
|
+
<div class="s-notification__content">
|
|
28
28
|
<slot></slot>
|
|
29
29
|
</div>
|
|
30
30
|
<div
|
|
31
31
|
v-if="$slots.footer"
|
|
32
|
-
class="
|
|
32
|
+
class="s-notification__footer"
|
|
33
33
|
>
|
|
34
34
|
<slot name="footer"></slot>
|
|
35
35
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<dialog
|
|
3
3
|
ref="popupRef"
|
|
4
|
-
class="
|
|
4
|
+
class="s-popup"
|
|
5
5
|
:class="[
|
|
6
6
|
{'--sheet': sheet},
|
|
7
7
|
{'--transparent-backdrop': transparentBackdrop},
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
@click="closeByBackdropClick"
|
|
11
11
|
@cancel="close"
|
|
12
12
|
>
|
|
13
|
-
<div class="
|
|
13
|
+
<div class="s-popup__wrapper">
|
|
14
14
|
<div
|
|
15
15
|
v-if="sheet"
|
|
16
|
-
class="
|
|
16
|
+
class="s-popup__sheet"
|
|
17
17
|
>
|
|
18
18
|
<button
|
|
19
|
-
class="
|
|
19
|
+
class="s-popup__sheet-handler"
|
|
20
20
|
type="button"
|
|
21
21
|
@click="close"
|
|
22
22
|
></button>
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
|
|
25
25
|
<aside
|
|
26
26
|
v-if="$slots.aside && !isMobile(breakpoints).value"
|
|
27
|
-
class="
|
|
27
|
+
class="s-popup__aside"
|
|
28
28
|
>
|
|
29
29
|
<slot name="aside"></slot>
|
|
30
30
|
</aside>
|
|
31
31
|
|
|
32
32
|
<header
|
|
33
|
-
class="
|
|
33
|
+
class="s-popup__header"
|
|
34
34
|
>
|
|
35
35
|
<button
|
|
36
36
|
v-if="back"
|
|
37
|
-
class="
|
|
37
|
+
class="s-popup__back"
|
|
38
38
|
type="button"
|
|
39
39
|
@click="$emit('back')"
|
|
40
40
|
>
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
</button>
|
|
43
43
|
<div
|
|
44
44
|
v-if="$slots.title"
|
|
45
|
-
class="
|
|
45
|
+
class="s-popup__title"
|
|
46
46
|
>
|
|
47
47
|
<slot name="title"></slot>
|
|
48
48
|
</div>
|
|
49
49
|
<button
|
|
50
|
-
class="
|
|
50
|
+
class="s-popup__close"
|
|
51
51
|
type="button"
|
|
52
52
|
@click="close"
|
|
53
53
|
>
|
|
@@ -56,19 +56,19 @@
|
|
|
56
56
|
</header>
|
|
57
57
|
<div
|
|
58
58
|
v-if="$slots.fixedContent"
|
|
59
|
-
class="
|
|
59
|
+
class="s-popup__subheader"
|
|
60
60
|
>
|
|
61
61
|
<slot name="fixedContent"></slot>
|
|
62
62
|
</div>
|
|
63
63
|
<div
|
|
64
64
|
v-if="$slots.default"
|
|
65
|
-
class="
|
|
65
|
+
class="s-popup__content"
|
|
66
66
|
>
|
|
67
67
|
<slot></slot>
|
|
68
68
|
</div>
|
|
69
69
|
<div
|
|
70
70
|
v-if="$slots.footer"
|
|
71
|
-
class="
|
|
71
|
+
class="s-popup__footer"
|
|
72
72
|
>
|
|
73
73
|
<slot name="footer"></slot>
|
|
74
74
|
</div>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<label
|
|
3
|
-
class="
|
|
3
|
+
class="s-radio"
|
|
4
4
|
:class="[
|
|
5
|
-
{'
|
|
6
|
-
{'
|
|
5
|
+
{'s-radio--disabled': disabled},
|
|
6
|
+
{'s-radio--error': error},
|
|
7
7
|
]"
|
|
8
8
|
>
|
|
9
9
|
<input
|
|
10
|
-
class="
|
|
10
|
+
class="s-radio__input _visually-hidden"
|
|
11
11
|
type="radio"
|
|
12
12
|
:name="name"
|
|
13
13
|
:checked="isChecked"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
@change="onChange"
|
|
16
16
|
v-bind="$attrs"
|
|
17
17
|
>
|
|
18
|
-
<span class="
|
|
18
|
+
<span class="s-radio__check" />
|
|
19
19
|
<span class="f-radio__label">
|
|
20
20
|
<slot>{{ label }}</slot>
|
|
21
21
|
</span>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<label
|
|
3
|
-
class="
|
|
3
|
+
class="s-select"
|
|
4
4
|
aria-label="select"
|
|
5
5
|
:class="[
|
|
6
6
|
{
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
`--${size}`,
|
|
11
11
|
]"
|
|
12
12
|
>
|
|
13
|
-
<span class="
|
|
13
|
+
<span class="s-select__label" v-if="label">
|
|
14
14
|
{{ label }}
|
|
15
|
-
<FCount class="
|
|
15
|
+
<FCount class="s-select__count" v-if="count">{{ count }}</FCount>
|
|
16
16
|
</span>
|
|
17
|
-
<span class="
|
|
17
|
+
<span class="s-select__wrapper">
|
|
18
18
|
<FIcon
|
|
19
19
|
v-if="icon"
|
|
20
20
|
:name="icon"
|
|
21
21
|
size="24"
|
|
22
|
-
class="
|
|
22
|
+
class="s-select__pre-icon"
|
|
23
23
|
/>
|
|
24
24
|
<select
|
|
25
|
-
class="
|
|
25
|
+
class="s-select__button"
|
|
26
26
|
:class="{'--icon': icon}"
|
|
27
27
|
:name="name"
|
|
28
28
|
@change="onChange"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
>
|
|
31
31
|
<option
|
|
32
32
|
v-if="placeholder"
|
|
33
|
-
class="
|
|
33
|
+
class="s-select__option"
|
|
34
34
|
value=""
|
|
35
35
|
selected
|
|
36
36
|
disabled
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
<option
|
|
39
39
|
v-for="(item, index) in items"
|
|
40
40
|
:value="item.value"
|
|
41
|
-
class="
|
|
42
|
-
:key="`
|
|
41
|
+
class="s-select__option"
|
|
42
|
+
:key="`s-select-${name}-${index}`"
|
|
43
43
|
:selected="item.value === modelValue && item.value !== placeholder"
|
|
44
44
|
>{{ capitalize(item.title as string || item.name as string) }}</option>
|
|
45
45
|
</select>
|
|
46
46
|
<FIcon
|
|
47
|
-
class="
|
|
47
|
+
class="s-select__icon"
|
|
48
48
|
name="dropdown"
|
|
49
49
|
size="24"
|
|
50
50
|
/>
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
class="
|
|
3
|
+
class="s-slider"
|
|
4
4
|
:class="{'--active': active}"
|
|
5
5
|
@touchstart="onTouchStart"
|
|
6
6
|
@touchmove="onTouchMove"
|
|
7
7
|
>
|
|
8
|
-
<div class="
|
|
9
|
-
<span class="
|
|
8
|
+
<div class="s-slider__header">
|
|
9
|
+
<span class="s-slider__label">
|
|
10
10
|
{{ title }}
|
|
11
11
|
</span>
|
|
12
|
-
<p class="
|
|
12
|
+
<p class="s-slider__subtitle">
|
|
13
13
|
{{ t('between') }}:
|
|
14
|
-
<span class="
|
|
14
|
+
<span class="s-slider__range">{{ (between && between[0]) || $attrs.min }}‑{{ (between && between[1]) || $attrs.max}}</span>
|
|
15
15
|
</p>
|
|
16
16
|
</div>
|
|
17
|
-
<div class="
|
|
17
|
+
<div class="s-slider__wrapper">
|
|
18
18
|
<Slider
|
|
19
19
|
v-model="model"
|
|
20
20
|
v-bind="$attrs"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
class="
|
|
3
|
+
class="s-snackbar"
|
|
4
4
|
:class="`--${snackbarTheme}`"
|
|
5
5
|
>
|
|
6
|
-
<FIcon class="
|
|
6
|
+
<FIcon class="s-snackbar__icon" :name="snackbarIcon" size="24"/>
|
|
7
7
|
{{
|
|
8
8
|
te(`snackbar.${convertSnackKey}`)
|
|
9
9
|
? t(`snackbar.${convertSnackKey}`)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<button
|
|
3
|
-
class="
|
|
3
|
+
class="s-timestamp"
|
|
4
4
|
type="button"
|
|
5
5
|
@click="onButtonClick"
|
|
6
6
|
>
|
|
7
|
-
<span class="
|
|
7
|
+
<span class="s-timestamp__preview-wrapper">
|
|
8
8
|
<span
|
|
9
|
-
class="
|
|
9
|
+
class="s-timestamp__preview"
|
|
10
10
|
:style="styles"
|
|
11
11
|
/>
|
|
12
12
|
</span>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<slot/>
|
|
15
15
|
|
|
16
16
|
<FIcon
|
|
17
|
-
class="
|
|
17
|
+
class="s-timestamp__icon"
|
|
18
18
|
name="forward-step"
|
|
19
19
|
size="16"
|
|
20
20
|
/>
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<label
|
|
3
|
-
class="
|
|
3
|
+
class="s-toggle"
|
|
4
4
|
aria-label="Toggle"
|
|
5
5
|
:class="[
|
|
6
|
-
{'
|
|
7
|
-
{'
|
|
6
|
+
{'s-toggle--checked': modelValue},
|
|
7
|
+
{'s-toggle--disabled': disabled}
|
|
8
8
|
]"
|
|
9
9
|
>
|
|
10
10
|
<input
|
|
11
|
-
class="
|
|
11
|
+
class="s-toggle__input _visually-hidden"
|
|
12
12
|
type="checkbox"
|
|
13
13
|
:checked="modelValue"
|
|
14
14
|
:value="modelValue"
|
|
15
15
|
@change="$emit('update:modelValue', $event.target?.checked)"
|
|
16
16
|
/>
|
|
17
|
-
<span v-if="$slots.default" class="
|
|
17
|
+
<span v-if="$slots.default" class="s-toggle__text">
|
|
18
18
|
<slot></slot>
|
|
19
19
|
{{ modelValue}}
|
|
20
20
|
</span>
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|