Skip to content

Commit 8ccd8f0

Browse files
committed
feat: update test for input-select, add specification for select.
1 parent 099bbe0 commit 8ccd8f0

File tree

6 files changed

+348
-153
lines changed

6 files changed

+348
-153
lines changed

docs/ru/inputs/input-checkbox.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const values = useFormValues(form);
2525

2626
- Тип [FormFieldOptions](./../fields/form-field-options).
2727

28-
28+
Набор возможных значений поля.
2929
____
3030

3131
Так же все параметры, общие для всех `FormField`. Информацию о них можно посмотреть на [этой странице](./form-field.md#params).

docs/ru/inputs/input-radio.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const values = useFormValues(form);
2626

2727
- Тип [FormFieldOptions](./../fields/form-field-options).
2828

29+
Набор возможных значений поля.
2930
____
3031

3132
Так же все параметры, общие для всех `FormField`. Информацию о них можно посмотреть

docs/ru/inputs/input-select.md

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
2+
3+
<script setup>
4+
import {FormField, Form, useFormValues} from '../../../src';
5+
6+
const form = new Form();
7+
const companies = {
8+
'a': "Apple",
9+
'h': "Huawei",
10+
's': "Samsung"
11+
};
12+
const colors = {
13+
white: 'Белый',
14+
black: 'Черный',
15+
red: 'Красный',
16+
yellow: 'Желтый',
17+
orange: 'Оранжевый',
18+
green: 'Зеленый',
19+
blue: 'Синий',
20+
purple: 'Фиолетовый',
21+
pink: 'Розовый',
22+
brown: 'Коричневый',
23+
grey: 'Серый',
24+
};
25+
const values = useFormValues(form);
26+
27+
</script>
28+
29+
30+
# Поле select
31+
32+
Поле используется для выбора единственного значений из предоставленного набора.
33+
34+
- Ключевое слово `select`.
35+
- WhatWG [Спецификация](https://html.spec.whatwg.org/multipage/input.html#select-button-state-(type=select)).
36+
37+
## Параметры
38+
39+
40+
### options <Badge type = "tip">Обязательный</Badge>
41+
42+
- Тип [FormFieldOptions](./../fields/form-field-options).
43+
44+
Набор возможных значений поля.
45+
46+
### hiddenValues <Badge type = "info">Необязательный</Badge>
47+
48+
- Тип `any[]`
49+
50+
Если данный массив указан, то в выборке будут отсутствовать элементы указанные в `hiddenValues`.
51+
52+
### placeholder <Badge type = "info">Необязательный</Badge>
53+
- Тип `string`
54+
55+
В случае, если значение не выбрано - показывается текстовая метка.
56+
____
57+
58+
Так же все параметры, общие для всех `FormField`. Информацию о них можно посмотреть
59+
на [этой странице](./form-field.md#params).
60+
61+
## Значение
62+
63+
При нажатии или выборе соответствующего `select` элемента, значение будет установлено в
64+
соответствии со значением в поле `value` из переданных `options`.
65+
66+
## Спецификация
67+
68+
- Объект доступен для доступа через `Tab` и `Shift + Tab`.
69+
- Перемещение по объекту возможна используя `ArrowDown` и `ArrowUp`. Перемещение таким способом
70+
изменяет значение поля.
71+
- Выбор элемента возможен по щелчку на соответствующий элемент.
72+
- **Нельзя** выбрать элемент используя `Enter` или `Space`.
73+
- Использование `Enter` или `Space` раскрывает или закрывает выпадающий список.
74+
- Для длинного списка показывается дополнительный контроллер поиска.
75+
- Блокировка полей отменяет навигацию используя `Tab`. Также происходит изменение стилистики `select`.
76+
- При неудачной валидации поле должно изменить стилистику `select`.
77+
78+
## Пример
79+
80+
Для подключения виджета необходимо указать `type` и `options`:
81+
82+
::: code-group
83+
84+
```html
85+
<form-field :options = "companies" type = "select"/>
86+
```
87+
```ts
88+
import {FormField} from "jenesius-vue-form";
89+
90+
const companies = {
91+
'a': "Apple",
92+
'h': "Huawei",
93+
's': "Samsung"
94+
};
95+
const colors = {
96+
white: 'Белый',
97+
black: 'Черный',
98+
red: 'Красный',
99+
yellow: 'Желтый',
100+
orange: 'Оранжевый',
101+
green: 'Зеленый',
102+
blue: 'Синий',
103+
purple: 'Фиолетовый',
104+
pink: 'Розовый',
105+
brown: 'Коричневый',
106+
grey: 'Серый',
107+
};
108+
```
109+
110+
:::
111+
112+
Поле по умолчанию:
113+
<FormField :options = "companies" type = "select" name = "company" label = "Выбери одну из" />
114+
115+
____
116+
117+
В заблокированном состоянии:
118+
<FormField :options = "companies" type = "select" name = "company" disabled label = "Заблокированное" />
119+
120+
____
121+
122+
Поле не прошло валидацию:
123+
<FormField :errors = "['Seleact this fields']" :options = "companies" type = "select" name = "company" label = "С ошибкой" />
124+
125+
____
126+
127+
Поле с большим количеством `options`. Должен отображаться контроллер поиска:
128+
<FormField :options = "colors" type = "select" name = "color" label = "Большое число цветов" />
129+
130+
____
131+
132+
Использование `hiddenValues` и установка значения `['blue', 'purple', 'pink', 'brown', 'grey']`:
133+
<FormField :options = "colors" hiddenValues = "['blue', 'purple', 'pink', 'brown', 'grey']" type = "select" name = "color" label = "Большое число цветов" />
134+
135+
136+
----
137+
Текущее состояние формы:
138+
```ts-vue
139+
{{values}}
140+
```

src/widgets/inputs/input-select/input-select.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
'input-select_error': errors.length,
88
'input-select_active': isActive
99
}"
10-
:tabindex="!disabled? 0 : null"
10+
:tabindex="!disabled ? 0 : 'none'"
1111

1212
@focusout = "deactivate()"
1313
@keyup.enter="setActive()"
14+
@keyup.space="setActive()"
1415
@keydown.down.prevent = "handleMove(1)"
1516
@keydown.up.prevent = "handleMove(-1)"
1617
ref="refInputSelect"

tests/integrations/input-select.spec.ts

Lines changed: 0 additions & 151 deletions
This file was deleted.

0 commit comments

Comments
 (0)