shared-ritm 1.3.68 → 1.3.69
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/dist/index.css +1 -1
- package/dist/shared-ritm.es.js +4555 -4392
- package/dist/shared-ritm.umd.js +181 -181
- package/dist/types/api/services/AuthService.d.ts +0 -1
- package/dist/types/api/services/MetricsService.d.ts +2 -1
- package/dist/types/api/services/PhotoService.d.ts +40 -0
- package/dist/types/api/services/UserService.d.ts +1 -2
- package/dist/types/api/settings/ApiService.d.ts +2 -6
- package/dist/types/api/types/Api_Auth.d.ts +0 -15
- package/dist/types/api/types/Api_Metrics.d.ts +18 -0
- package/dist/types/api/types/Api_User.d.ts +0 -9
- package/dist/types/common/app-checkbox/Checkbox.stories.d.ts +5 -1
- package/dist/types/common/app-toggle/Toggle.stories.d.ts +5 -1
- package/dist/types/stories/Button.stories.d.ts +13 -0
- package/dist/types/stories/Checkbox.stories.d.ts +7 -0
- package/dist/types/stories/Confirm.stories.d.ts +8 -0
- package/dist/types/stories/DatePicker.stories.d.ts +8 -0
- package/dist/types/stories/Dropdown.stories.d.ts +8 -0
- package/dist/types/stories/File.stories.d.ts +8 -0
- package/dist/types/stories/Icon.stories.d.ts +7 -0
- package/dist/types/stories/Input.stories.d.ts +11 -0
- package/dist/types/stories/InputNew.stories.d.ts +12 -0
- package/dist/types/stories/InputSearch.stories.d.ts +10 -0
- package/dist/types/stories/Loader.stories.d.ts +8 -0
- package/dist/types/stories/Select.stories.d.ts +7 -0
- package/dist/types/stories/Toggle.stories.d.ts +8 -0
- package/package.json +70 -70
- package/src/App.vue +2461 -2461
- package/src/api/services/AuthService.ts +4 -18
- package/src/api/services/ControlsService.ts +96 -96
- package/src/api/services/EquipmentService.ts +29 -29
- package/src/api/services/GanttService.ts +23 -23
- package/src/api/services/MetricsService.ts +127 -123
- package/src/api/services/RepairsService.ts +111 -111
- package/src/api/services/UserService.ts +0 -6
- package/src/api/services/VideoService.ts +118 -118
- package/src/api/settings/ApiService.ts +10 -70
- package/src/api/types/Api_Auth.ts +0 -16
- package/src/api/types/Api_Metrics.ts +26 -5
- package/src/api/types/Api_Repairs.ts +186 -186
- package/src/api/types/Api_Tasks.ts +376 -376
- package/src/api/types/Api_User.ts +0 -10
- package/src/api/types/Api_Video.ts +244 -244
- package/src/common/app-button/Button.stories.ts +369 -369
- package/src/common/app-checkbox/AppCheckbox.vue +19 -12
- package/src/common/app-checkbox/Checkbox.stories.ts +252 -60
- package/src/common/app-date-picker/DatePicker.stories.ts +66 -66
- package/src/common/app-datepicker/Datepicker.stories.ts +145 -145
- package/src/common/app-dialogs/AppConfirmDialog.vue +109 -109
- package/src/common/app-dialogs/Confirm.stories.ts +93 -93
- package/src/common/app-dropdown/Dropdown.stories.ts +94 -94
- package/src/common/app-file/File.stories.ts +104 -104
- package/src/common/app-icon/AppIcon.vue +108 -108
- package/src/common/app-icon/Icon.stories.ts +91 -91
- package/src/common/app-input/Input.stories.ts +160 -160
- package/src/common/app-input-new/InputNew.stories.ts +240 -240
- package/src/common/app-input-search/InputSearch.stories.ts +149 -149
- package/src/common/app-layout/components/AppLayoutHeader.vue +289 -289
- package/src/common/app-loader/Loader.stories.ts +114 -114
- package/src/common/app-select/AppSelect.vue +159 -159
- package/src/common/app-select/Select.stories.ts +155 -155
- package/src/common/app-sidebar/AppSidebar.vue +174 -174
- package/src/common/app-table/AppTable.vue +313 -313
- package/src/common/app-table/components/ModalSelect.stories.ts +323 -323
- package/src/common/app-table/components/ModalSelect.vue +302 -302
- package/src/common/app-table/components/TableModal.vue +367 -367
- package/src/common/app-table/controllers/useColumnSelector.ts +45 -45
- package/src/common/app-table/controllers/useTableModel.ts +97 -97
- package/src/common/app-toggle/AppToggle.vue +5 -15
- package/src/common/app-toggle/Toggle.stories.ts +245 -69
- package/src/common/app-wrapper/AppWrapper.vue +31 -31
- package/src/configs/storybook.ts +14 -14
- package/src/index.ts +131 -131
- package/src/shared/styles/general.css +140 -140
- package/src/styles/variables.sass +12 -12
- package/src/utils/helpers.ts +59 -59
|
@@ -1,240 +1,240 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/vue3'
|
|
2
|
-
import AppInputNew from '@/common/app-input-new/AppInputNew.vue'
|
|
3
|
-
|
|
4
|
-
const meta: Meta<typeof AppInputNew> = {
|
|
5
|
-
title: 'Components/AppInputNew',
|
|
6
|
-
component: AppInputNew,
|
|
7
|
-
tags: ['autodocs'],
|
|
8
|
-
argTypes: {
|
|
9
|
-
label: {
|
|
10
|
-
control: 'text',
|
|
11
|
-
description: 'Подпись над полем ввода.',
|
|
12
|
-
table: { category: '🔤 Текст' },
|
|
13
|
-
},
|
|
14
|
-
placeholder: {
|
|
15
|
-
control: 'text',
|
|
16
|
-
description: 'Текст-подсказка внутри поля.',
|
|
17
|
-
table: { category: '🔤 Текст' },
|
|
18
|
-
},
|
|
19
|
-
required: {
|
|
20
|
-
control: 'boolean',
|
|
21
|
-
description: 'Показывает звёздочку (*) рядом с лейблом.',
|
|
22
|
-
table: { category: '🔤 Текст' },
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
modelValue: {
|
|
26
|
-
control: 'text',
|
|
27
|
-
},
|
|
28
|
-
type: {
|
|
29
|
-
control: 'select',
|
|
30
|
-
options: ['text', 'password', 'number', 'email', 'tel'],
|
|
31
|
-
description: 'Тип HTML-инпута.',
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
disable: {
|
|
35
|
-
control: 'boolean',
|
|
36
|
-
table: { category: '⚡ Состояния' },
|
|
37
|
-
},
|
|
38
|
-
readonly: {
|
|
39
|
-
control: 'boolean',
|
|
40
|
-
table: { category: '⚡ Состояния' },
|
|
41
|
-
},
|
|
42
|
-
error: {
|
|
43
|
-
control: 'boolean',
|
|
44
|
-
table: { category: '⚡ Состояния' },
|
|
45
|
-
},
|
|
46
|
-
loading: {
|
|
47
|
-
control: 'boolean',
|
|
48
|
-
table: { category: '⚡ Состояния' },
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
clearable: {
|
|
52
|
-
control: 'boolean',
|
|
53
|
-
description: 'Показывает иконку крестика для очистки поля.',
|
|
54
|
-
table: { category: '⚙️ Поведение' },
|
|
55
|
-
},
|
|
56
|
-
copyable: {
|
|
57
|
-
control: 'boolean',
|
|
58
|
-
description: 'Показывает иконку копирования содержимого в буфер обмена.',
|
|
59
|
-
table: { category: '⚙️ Поведение' },
|
|
60
|
-
},
|
|
61
|
-
uuid: {
|
|
62
|
-
control: 'boolean',
|
|
63
|
-
description: 'Показывает кнопку "UUID", генерирующую уникальный идентификатор.',
|
|
64
|
-
table: { category: '⚙️ Поведение' },
|
|
65
|
-
},
|
|
66
|
-
debounce: {
|
|
67
|
-
control: 'number',
|
|
68
|
-
description: 'Задержка в миллисекундах перед эмитом значения.',
|
|
69
|
-
table: { category: '⚙️ Поведение' },
|
|
70
|
-
},
|
|
71
|
-
autocomplete: {
|
|
72
|
-
control: 'text',
|
|
73
|
-
description: 'Значение атрибута autocomplete (например, "off", "email").',
|
|
74
|
-
table: { category: '⚙️ Поведение' },
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
rules: {
|
|
78
|
-
control: false,
|
|
79
|
-
description: 'Массив функций валидации.',
|
|
80
|
-
},
|
|
81
|
-
|
|
82
|
-
inputClass: {
|
|
83
|
-
control: 'text',
|
|
84
|
-
description: 'Дополнительные CSS-классы для q-input.',
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
args: {
|
|
88
|
-
label: 'Имя',
|
|
89
|
-
placeholder: 'Введите имя...',
|
|
90
|
-
modelValue: '',
|
|
91
|
-
type: 'text',
|
|
92
|
-
required: false,
|
|
93
|
-
disable: false,
|
|
94
|
-
readonly: false,
|
|
95
|
-
error: false,
|
|
96
|
-
loading: false,
|
|
97
|
-
clearable: true,
|
|
98
|
-
copyable: false,
|
|
99
|
-
uuid: false,
|
|
100
|
-
debounce: 0,
|
|
101
|
-
autocomplete: 'off',
|
|
102
|
-
},
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export default meta
|
|
106
|
-
|
|
107
|
-
type Story = StoryObj<typeof AppInputNew>
|
|
108
|
-
|
|
109
|
-
export const Default: Story = {}
|
|
110
|
-
|
|
111
|
-
export const InputTypes: Story = {
|
|
112
|
-
render: () => ({
|
|
113
|
-
components: { AppInputNew },
|
|
114
|
-
template: `
|
|
115
|
-
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
116
|
-
<AppInputNew v-model="textValue" label="Текст" placeholder="Обычное текстовое поле" />
|
|
117
|
-
<AppInputNew v-model="passwordValue" label="Пароль" type="password" placeholder="••••••••" />
|
|
118
|
-
<AppInputNew v-model="emailValue" label="Email" type="email" placeholder="user@example.com" />
|
|
119
|
-
<AppInputNew v-model="telValue" label="Телефон" type="tel" placeholder="+7 (999) 000-00-00" />
|
|
120
|
-
<AppInputNew v-model="numberValue" label="Число" type="number" placeholder="Только цифры" />
|
|
121
|
-
</div>
|
|
122
|
-
`,
|
|
123
|
-
data() {
|
|
124
|
-
return {
|
|
125
|
-
textValue: '',
|
|
126
|
-
passwordValue: '',
|
|
127
|
-
emailValue: '',
|
|
128
|
-
telValue: '',
|
|
129
|
-
numberValue: null as number | null,
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
}),
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export const Features: Story = {
|
|
136
|
-
render: () => ({
|
|
137
|
-
components: { AppInputNew },
|
|
138
|
-
template: `
|
|
139
|
-
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
140
|
-
<AppInputNew
|
|
141
|
-
v-model="clearableValue"
|
|
142
|
-
label="С очисткой"
|
|
143
|
-
placeholder="Напишите что-нибудь"
|
|
144
|
-
:clearable="true"
|
|
145
|
-
/>
|
|
146
|
-
<AppInputNew
|
|
147
|
-
v-model="copyableValue"
|
|
148
|
-
label="С копированием"
|
|
149
|
-
placeholder="Скопируйте меня"
|
|
150
|
-
:copyable="true"
|
|
151
|
-
/>
|
|
152
|
-
<AppInputNew
|
|
153
|
-
v-model="uuidValue"
|
|
154
|
-
label="С генерацией UUID"
|
|
155
|
-
placeholder="Нажмите UUID"
|
|
156
|
-
:uuid="true"
|
|
157
|
-
/>
|
|
158
|
-
</div>
|
|
159
|
-
`,
|
|
160
|
-
data() {
|
|
161
|
-
return {
|
|
162
|
-
clearableValue: 'Текст для очистки',
|
|
163
|
-
copyableValue: 'secret-token-123',
|
|
164
|
-
uuidValue: '',
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
}),
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export const States: Story = {
|
|
171
|
-
render: () => ({
|
|
172
|
-
components: { AppInputNew },
|
|
173
|
-
template: `
|
|
174
|
-
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
175
|
-
<AppInputNew v-model="activeValue" label="Обычное" placeholder="Активное поле" />
|
|
176
|
-
<AppInputNew v-model="disabledValue" label="Отключено" placeholder="Недоступно" :disable="true" />
|
|
177
|
-
<AppInputNew v-model="readonlyValue" label="Только для чтения" placeholder="Нельзя редактировать" :readonly="true" />
|
|
178
|
-
<AppInputNew v-model="errorValue" label="С ошибкой" placeholder="Ошибка валидации" :error="true" />
|
|
179
|
-
<AppInputNew v-model="loadingValue" label="Загрузка" placeholder="Загружается..." :loading="true" />
|
|
180
|
-
</div>
|
|
181
|
-
`,
|
|
182
|
-
data() {
|
|
183
|
-
return {
|
|
184
|
-
activeValue: '',
|
|
185
|
-
disabledValue: 'недоступно',
|
|
186
|
-
readonlyValue: 'только чтение',
|
|
187
|
-
errorValue: 'ошибка!',
|
|
188
|
-
loadingValue: 'загрузка...',
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
}),
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
export const WithLabel: Story = {
|
|
195
|
-
render: () => ({
|
|
196
|
-
components: { AppInputNew },
|
|
197
|
-
template: `
|
|
198
|
-
<AppInputNew v-model="requiredValue" label="Обязательное поле" :required="true" placeholder="Это поле обязательно" />
|
|
199
|
-
`,
|
|
200
|
-
data() {
|
|
201
|
-
return {
|
|
202
|
-
requiredValue: '',
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
}),
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export const Password: Story = {
|
|
209
|
-
render: () => ({
|
|
210
|
-
components: { AppInputNew },
|
|
211
|
-
template: `
|
|
212
|
-
<AppInputNew v-model="password" label="Пароль" type="password" />
|
|
213
|
-
`,
|
|
214
|
-
data() {
|
|
215
|
-
return {
|
|
216
|
-
password: '',
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
}),
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
export const WithAppendSlot: Story = {
|
|
223
|
-
render: () => ({
|
|
224
|
-
components: { AppInputNew },
|
|
225
|
-
template: `
|
|
226
|
-
<AppInputNew v-model="slotValue" label="С кастомным append">
|
|
227
|
-
<template #append>
|
|
228
|
-
<span style="background: #eef4ff; padding: 0 8px; border-radius: 4px; font-size: 14px; color: #3f8cff;">
|
|
229
|
-
RUB
|
|
230
|
-
</span>
|
|
231
|
-
</template>
|
|
232
|
-
</AppInputNew>
|
|
233
|
-
`,
|
|
234
|
-
data() {
|
|
235
|
-
return {
|
|
236
|
-
slotValue: '',
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
}),
|
|
240
|
-
}
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3'
|
|
2
|
+
import AppInputNew from '@/common/app-input-new/AppInputNew.vue'
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof AppInputNew> = {
|
|
5
|
+
title: 'Components/AppInputNew',
|
|
6
|
+
component: AppInputNew,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
argTypes: {
|
|
9
|
+
label: {
|
|
10
|
+
control: 'text',
|
|
11
|
+
description: 'Подпись над полем ввода.',
|
|
12
|
+
table: { category: '🔤 Текст' },
|
|
13
|
+
},
|
|
14
|
+
placeholder: {
|
|
15
|
+
control: 'text',
|
|
16
|
+
description: 'Текст-подсказка внутри поля.',
|
|
17
|
+
table: { category: '🔤 Текст' },
|
|
18
|
+
},
|
|
19
|
+
required: {
|
|
20
|
+
control: 'boolean',
|
|
21
|
+
description: 'Показывает звёздочку (*) рядом с лейблом.',
|
|
22
|
+
table: { category: '🔤 Текст' },
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
modelValue: {
|
|
26
|
+
control: 'text',
|
|
27
|
+
},
|
|
28
|
+
type: {
|
|
29
|
+
control: 'select',
|
|
30
|
+
options: ['text', 'password', 'number', 'email', 'tel'],
|
|
31
|
+
description: 'Тип HTML-инпута.',
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
disable: {
|
|
35
|
+
control: 'boolean',
|
|
36
|
+
table: { category: '⚡ Состояния' },
|
|
37
|
+
},
|
|
38
|
+
readonly: {
|
|
39
|
+
control: 'boolean',
|
|
40
|
+
table: { category: '⚡ Состояния' },
|
|
41
|
+
},
|
|
42
|
+
error: {
|
|
43
|
+
control: 'boolean',
|
|
44
|
+
table: { category: '⚡ Состояния' },
|
|
45
|
+
},
|
|
46
|
+
loading: {
|
|
47
|
+
control: 'boolean',
|
|
48
|
+
table: { category: '⚡ Состояния' },
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
clearable: {
|
|
52
|
+
control: 'boolean',
|
|
53
|
+
description: 'Показывает иконку крестика для очистки поля.',
|
|
54
|
+
table: { category: '⚙️ Поведение' },
|
|
55
|
+
},
|
|
56
|
+
copyable: {
|
|
57
|
+
control: 'boolean',
|
|
58
|
+
description: 'Показывает иконку копирования содержимого в буфер обмена.',
|
|
59
|
+
table: { category: '⚙️ Поведение' },
|
|
60
|
+
},
|
|
61
|
+
uuid: {
|
|
62
|
+
control: 'boolean',
|
|
63
|
+
description: 'Показывает кнопку "UUID", генерирующую уникальный идентификатор.',
|
|
64
|
+
table: { category: '⚙️ Поведение' },
|
|
65
|
+
},
|
|
66
|
+
debounce: {
|
|
67
|
+
control: 'number',
|
|
68
|
+
description: 'Задержка в миллисекундах перед эмитом значения.',
|
|
69
|
+
table: { category: '⚙️ Поведение' },
|
|
70
|
+
},
|
|
71
|
+
autocomplete: {
|
|
72
|
+
control: 'text',
|
|
73
|
+
description: 'Значение атрибута autocomplete (например, "off", "email").',
|
|
74
|
+
table: { category: '⚙️ Поведение' },
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
rules: {
|
|
78
|
+
control: false,
|
|
79
|
+
description: 'Массив функций валидации.',
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
inputClass: {
|
|
83
|
+
control: 'text',
|
|
84
|
+
description: 'Дополнительные CSS-классы для q-input.',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
args: {
|
|
88
|
+
label: 'Имя',
|
|
89
|
+
placeholder: 'Введите имя...',
|
|
90
|
+
modelValue: '',
|
|
91
|
+
type: 'text',
|
|
92
|
+
required: false,
|
|
93
|
+
disable: false,
|
|
94
|
+
readonly: false,
|
|
95
|
+
error: false,
|
|
96
|
+
loading: false,
|
|
97
|
+
clearable: true,
|
|
98
|
+
copyable: false,
|
|
99
|
+
uuid: false,
|
|
100
|
+
debounce: 0,
|
|
101
|
+
autocomplete: 'off',
|
|
102
|
+
},
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export default meta
|
|
106
|
+
|
|
107
|
+
type Story = StoryObj<typeof AppInputNew>
|
|
108
|
+
|
|
109
|
+
export const Default: Story = {}
|
|
110
|
+
|
|
111
|
+
export const InputTypes: Story = {
|
|
112
|
+
render: () => ({
|
|
113
|
+
components: { AppInputNew },
|
|
114
|
+
template: `
|
|
115
|
+
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
116
|
+
<AppInputNew v-model="textValue" label="Текст" placeholder="Обычное текстовое поле" />
|
|
117
|
+
<AppInputNew v-model="passwordValue" label="Пароль" type="password" placeholder="••••••••" />
|
|
118
|
+
<AppInputNew v-model="emailValue" label="Email" type="email" placeholder="user@example.com" />
|
|
119
|
+
<AppInputNew v-model="telValue" label="Телефон" type="tel" placeholder="+7 (999) 000-00-00" />
|
|
120
|
+
<AppInputNew v-model="numberValue" label="Число" type="number" placeholder="Только цифры" />
|
|
121
|
+
</div>
|
|
122
|
+
`,
|
|
123
|
+
data() {
|
|
124
|
+
return {
|
|
125
|
+
textValue: '',
|
|
126
|
+
passwordValue: '',
|
|
127
|
+
emailValue: '',
|
|
128
|
+
telValue: '',
|
|
129
|
+
numberValue: null as number | null,
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
}),
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export const Features: Story = {
|
|
136
|
+
render: () => ({
|
|
137
|
+
components: { AppInputNew },
|
|
138
|
+
template: `
|
|
139
|
+
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
140
|
+
<AppInputNew
|
|
141
|
+
v-model="clearableValue"
|
|
142
|
+
label="С очисткой"
|
|
143
|
+
placeholder="Напишите что-нибудь"
|
|
144
|
+
:clearable="true"
|
|
145
|
+
/>
|
|
146
|
+
<AppInputNew
|
|
147
|
+
v-model="copyableValue"
|
|
148
|
+
label="С копированием"
|
|
149
|
+
placeholder="Скопируйте меня"
|
|
150
|
+
:copyable="true"
|
|
151
|
+
/>
|
|
152
|
+
<AppInputNew
|
|
153
|
+
v-model="uuidValue"
|
|
154
|
+
label="С генерацией UUID"
|
|
155
|
+
placeholder="Нажмите UUID"
|
|
156
|
+
:uuid="true"
|
|
157
|
+
/>
|
|
158
|
+
</div>
|
|
159
|
+
`,
|
|
160
|
+
data() {
|
|
161
|
+
return {
|
|
162
|
+
clearableValue: 'Текст для очистки',
|
|
163
|
+
copyableValue: 'secret-token-123',
|
|
164
|
+
uuidValue: '',
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
}),
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export const States: Story = {
|
|
171
|
+
render: () => ({
|
|
172
|
+
components: { AppInputNew },
|
|
173
|
+
template: `
|
|
174
|
+
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
175
|
+
<AppInputNew v-model="activeValue" label="Обычное" placeholder="Активное поле" />
|
|
176
|
+
<AppInputNew v-model="disabledValue" label="Отключено" placeholder="Недоступно" :disable="true" />
|
|
177
|
+
<AppInputNew v-model="readonlyValue" label="Только для чтения" placeholder="Нельзя редактировать" :readonly="true" />
|
|
178
|
+
<AppInputNew v-model="errorValue" label="С ошибкой" placeholder="Ошибка валидации" :error="true" />
|
|
179
|
+
<AppInputNew v-model="loadingValue" label="Загрузка" placeholder="Загружается..." :loading="true" />
|
|
180
|
+
</div>
|
|
181
|
+
`,
|
|
182
|
+
data() {
|
|
183
|
+
return {
|
|
184
|
+
activeValue: '',
|
|
185
|
+
disabledValue: 'недоступно',
|
|
186
|
+
readonlyValue: 'только чтение',
|
|
187
|
+
errorValue: 'ошибка!',
|
|
188
|
+
loadingValue: 'загрузка...',
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
}),
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export const WithLabel: Story = {
|
|
195
|
+
render: () => ({
|
|
196
|
+
components: { AppInputNew },
|
|
197
|
+
template: `
|
|
198
|
+
<AppInputNew v-model="requiredValue" label="Обязательное поле" :required="true" placeholder="Это поле обязательно" />
|
|
199
|
+
`,
|
|
200
|
+
data() {
|
|
201
|
+
return {
|
|
202
|
+
requiredValue: '',
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
}),
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export const Password: Story = {
|
|
209
|
+
render: () => ({
|
|
210
|
+
components: { AppInputNew },
|
|
211
|
+
template: `
|
|
212
|
+
<AppInputNew v-model="password" label="Пароль" type="password" />
|
|
213
|
+
`,
|
|
214
|
+
data() {
|
|
215
|
+
return {
|
|
216
|
+
password: '',
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
}),
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export const WithAppendSlot: Story = {
|
|
223
|
+
render: () => ({
|
|
224
|
+
components: { AppInputNew },
|
|
225
|
+
template: `
|
|
226
|
+
<AppInputNew v-model="slotValue" label="С кастомным append">
|
|
227
|
+
<template #append>
|
|
228
|
+
<span style="background: #eef4ff; padding: 0 8px; border-radius: 4px; font-size: 14px; color: #3f8cff;">
|
|
229
|
+
RUB
|
|
230
|
+
</span>
|
|
231
|
+
</template>
|
|
232
|
+
</AppInputNew>
|
|
233
|
+
`,
|
|
234
|
+
data() {
|
|
235
|
+
return {
|
|
236
|
+
slotValue: '',
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
}),
|
|
240
|
+
}
|