urfu-ui-kit-react 1.9.0 → 1.10.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/README.md +82 -218
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.types.d.ts +10 -1
- package/dist/components/Calendar/Calendar.types.d.ts.map +1 -1
- package/dist/components/Calendar/MaskedDateInput.d.ts +18 -0
- package/dist/components/Calendar/MaskedDateInput.d.ts.map +1 -0
- package/dist/components/Calendar/dateMask.d.ts +8 -0
- package/dist/components/Calendar/dateMask.d.ts.map +1 -0
- package/dist/components/InputTime/InputTime.d.ts +5 -1
- package/dist/components/InputTime/InputTime.d.ts.map +1 -1
- package/dist/components/InputTime/InputTime.types.d.ts +10 -1
- package/dist/components/InputTime/InputTime.types.d.ts.map +1 -1
- package/dist/components/Status/Status.d.ts +1 -1
- package/dist/style-no-fonts.css +1 -1
- package/dist/style.css +1 -1
- package/dist/urfu-ui-kit-react.js +5481 -6125
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -1,275 +1,139 @@
|
|
|
1
1
|
# UrFU UI-Kit React
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Публичная библиотека React-компонентов (v1.9.0) для экосистемы UrFU.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Стек:** React 18, TypeScript, Vite, LESS, Storybook, VitePress.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🚀 Для пользователей библиотеки
|
|
10
|
+
|
|
11
|
+
### Установка
|
|
6
12
|
|
|
7
13
|
```bash
|
|
8
14
|
npm install urfu-ui-kit-react
|
|
9
15
|
```
|
|
10
16
|
|
|
11
|
-
## 🚀 Быстрый старт
|
|
12
|
-
|
|
13
17
|
### Базовая настройка
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
Импортируйте стили в корень приложения:
|
|
16
20
|
|
|
17
21
|
```javascript
|
|
18
22
|
import "urfu-ui-kit-react/dist/style.css"
|
|
19
23
|
```
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
**Важно:** Библиотека по умолчанию имеет шрифт Montserrat и полосу прокрутки, адаптивную под разные разрешения экрана. Они объявлены глобально и применяются в проекте посредством импорта библиотеки. А также стили глобально применены для тегов `h1-h6`.
|
|
25
|
+
### Использование компонента
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Импорт компонентов осуществляется по имени:
|
|
27
|
+
```jsx
|
|
28
|
+
import { Button, InputText, Select } from "urfu-ui-kit-react";
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
export function App() {
|
|
31
|
+
return (
|
|
32
|
+
<>
|
|
33
|
+
<Button>Кнопка</Button>
|
|
34
|
+
<InputText title="Имя" />
|
|
35
|
+
<Select
|
|
36
|
+
title="Выбор"
|
|
37
|
+
options={[
|
|
38
|
+
{ value: '1', label: 'Опция 1' },
|
|
39
|
+
{ value: '2', label: 'Опция 2' }
|
|
40
|
+
]}
|
|
41
|
+
/>
|
|
42
|
+
</>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
39
45
|
```
|
|
40
46
|
|
|
41
|
-
|
|
47
|
+
Полная документация всех компонентов: [https://uikit.my1.urfu.ru](https://uikit.my1.urfu.ru)
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- **InputText** — текстовое поле ввода
|
|
46
|
-
- **InputNumber** — поле ввода чисел
|
|
47
|
-
- **InputFile** — загрузка файлов
|
|
48
|
-
- **InputExpandTextarea** — расширяемое текстовое поле
|
|
49
|
-
- **Textarea** — многострочное текстовое поле
|
|
50
|
-
- **Select** — выпадающий список
|
|
51
|
-
- **SearchSelect** — поисковый выпадающий список; опционально **`isClearable`** (сброс выбора, крестик в стиле Multiselect) и controlled-строка поиска (`inputValue` / `onInputValueChange`) — см. [документацию](docs/components/search-select.md)
|
|
52
|
-
- **Multiselect** — множественный выбор
|
|
53
|
-
- **Checkbox** — чекбокс
|
|
54
|
-
- **Radio** — радиокнопка
|
|
55
|
-
- **Search** — поле поиска
|
|
56
|
-
- **Calendar** — календарь для выбора даты
|
|
57
|
-
|
|
58
|
-
### Навигация и структура
|
|
59
|
-
|
|
60
|
-
- **Menu** — боковое меню навигации
|
|
61
|
-
- **Tabs** — вкладки
|
|
62
|
-
- **Accordion** — аккордеон
|
|
63
|
-
- **TreeView** — древовидное представление данных
|
|
64
|
-
|
|
65
|
-
### Отображение данных
|
|
66
|
-
|
|
67
|
-
- **Table** — таблица с поддержкой сортировки, фильтрации и виртуализации
|
|
68
|
-
- **Filter** — таблица с расширенными возможностями фильтрации
|
|
69
|
-
- **Status** — индикатор статуса
|
|
70
|
-
- **Icon** — иконки
|
|
71
|
-
- **Message** — сообщения (информация, предупреждение, ошибка, успех)
|
|
72
|
-
- **Preloader** — индикатор загрузки
|
|
49
|
+
---
|
|
73
50
|
|
|
74
|
-
|
|
51
|
+
## 👨💻 Для разработчиков библиотеки
|
|
75
52
|
|
|
76
|
-
|
|
77
|
-
- **Modal** — модальное окно
|
|
78
|
-
- **Tooltip** — всплывающая подсказка
|
|
79
|
-
- **NotificationProvider** и **useNotification** — система уведомлений
|
|
53
|
+
### Первичная настройка
|
|
80
54
|
|
|
81
|
-
|
|
55
|
+
```bash
|
|
56
|
+
# Установить зависимости
|
|
57
|
+
npm install
|
|
82
58
|
|
|
83
|
-
|
|
59
|
+
# Запустить Storybook (примеры компонентов)
|
|
60
|
+
npm run sb
|
|
84
61
|
|
|
85
|
-
|
|
62
|
+
# Запустить VitePress (документация)
|
|
63
|
+
npm run vp
|
|
86
64
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
function App() {
|
|
91
|
-
return (
|
|
92
|
-
<NotificationProvider>
|
|
93
|
-
{/* Ваше приложение */}
|
|
94
|
-
</NotificationProvider>
|
|
95
|
-
);
|
|
96
|
-
}
|
|
65
|
+
# Запустить оба одновременно
|
|
66
|
+
npm run docs
|
|
67
|
+
```
|
|
97
68
|
|
|
98
|
-
|
|
99
|
-
function MyComponent() {
|
|
100
|
-
const { showNotification } = useNotification();
|
|
101
|
-
|
|
102
|
-
const handleClick = () => {
|
|
103
|
-
showNotification('success', 'Операция выполнена успешно!');
|
|
104
|
-
};
|
|
69
|
+
### Разработка
|
|
105
70
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
71
|
+
```bash
|
|
72
|
+
# Собрать библиотеку
|
|
73
|
+
npm run build
|
|
109
74
|
|
|
110
|
-
|
|
75
|
+
# Запустить линтер
|
|
76
|
+
npm run lint
|
|
111
77
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
InputText,
|
|
115
|
-
Select,
|
|
116
|
-
Checkbox,
|
|
117
|
-
Radio,
|
|
118
|
-
Button
|
|
119
|
-
} from 'urfu-ui-kit-react';
|
|
120
|
-
|
|
121
|
-
function MyForm() {
|
|
122
|
-
return (
|
|
123
|
-
<form>
|
|
124
|
-
<InputText
|
|
125
|
-
title="Имя"
|
|
126
|
-
required
|
|
127
|
-
/>
|
|
128
|
-
<Select
|
|
129
|
-
title="Выберите опцию"
|
|
130
|
-
options={[
|
|
131
|
-
{ value: '1', label: 'Опция 1' },
|
|
132
|
-
{ value: '2', label: 'Опция 2' }
|
|
133
|
-
]}
|
|
134
|
-
/>
|
|
135
|
-
<Checkbox
|
|
136
|
-
title="Согласие"
|
|
137
|
-
required
|
|
138
|
-
/>
|
|
139
|
-
<Radio
|
|
140
|
-
title="Выберите вариант"
|
|
141
|
-
options={[
|
|
142
|
-
{ value: '1', label: 'Вариант 1' },
|
|
143
|
-
{ value: '2', label: 'Вариант 2' }
|
|
144
|
-
]}
|
|
145
|
-
/>
|
|
146
|
-
<Button type="submit">Отправить</Button>
|
|
147
|
-
</form>
|
|
148
|
-
);
|
|
149
|
-
}
|
|
78
|
+
# Собрать VitePress документацию
|
|
79
|
+
npm run vpb
|
|
150
80
|
```
|
|
151
81
|
|
|
152
|
-
###
|
|
82
|
+
### Версионирование и публикация
|
|
153
83
|
|
|
154
|
-
|
|
155
|
-
|
|
84
|
+
1. Обновить версию в `package.json`
|
|
85
|
+
2. Добавить запись в `docs/versioning.md`
|
|
86
|
+
3. Обновить документацию затронутых компонентов
|
|
87
|
+
4. Запустить линтер и сборку
|
|
88
|
+
5. Опубликовать:
|
|
156
89
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
<>
|
|
160
|
-
<Menu
|
|
161
|
-
menuData={[
|
|
162
|
-
{ title: 'Главная', id: 'home' },
|
|
163
|
-
{ title: 'Раздел', id: 'section' }
|
|
164
|
-
]}
|
|
165
|
-
/>
|
|
166
|
-
<Tabs
|
|
167
|
-
tabs={[
|
|
168
|
-
{ title: 'Вкладка 1', id: 'tab1' },
|
|
169
|
-
{ title: 'Вкладка 2', id: 'tab2' }
|
|
170
|
-
]}
|
|
171
|
-
/>
|
|
172
|
-
</>
|
|
173
|
-
);
|
|
174
|
-
}
|
|
90
|
+
```bash
|
|
91
|
+
npm run pub
|
|
175
92
|
```
|
|
176
93
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
```jsx
|
|
180
|
-
import { Modal, Button } from 'urfu-ui-kit-react';
|
|
181
|
-
import { useState } from 'react';
|
|
182
|
-
|
|
183
|
-
function MyModal() {
|
|
184
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
94
|
+
**Важно:** это публичная библиотека; все изменения API ломают потребителей (meetings, youth-science, kpis-npr). Избегайте breaking changes без координации.
|
|
185
95
|
|
|
186
|
-
|
|
187
|
-
<>
|
|
188
|
-
<Button onClick={() => setIsOpen(true)}>
|
|
189
|
-
Открыть модальное окно
|
|
190
|
-
</Button>
|
|
191
|
-
<Modal
|
|
192
|
-
isOpen={isOpen}
|
|
193
|
-
onClose={() => setIsOpen(false)}
|
|
194
|
-
title="Заголовок"
|
|
195
|
-
>
|
|
196
|
-
Содержимое модального окна
|
|
197
|
-
</Modal>
|
|
198
|
-
</>
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
```
|
|
96
|
+
---
|
|
202
97
|
|
|
203
|
-
|
|
98
|
+
## 📚 Компоненты
|
|
204
99
|
|
|
205
|
-
|
|
206
|
-
import { Table } from 'urfu-ui-kit-react';
|
|
100
|
+
### Форма и ввод
|
|
207
101
|
|
|
208
|
-
|
|
209
|
-
const columns = [
|
|
210
|
-
{ key: 'name', title: 'Имя' },
|
|
211
|
-
{ key: 'age', title: 'Возраст' },
|
|
212
|
-
{ key: 'city', title: 'Город' }
|
|
213
|
-
];
|
|
102
|
+
InputText, InputNumber, InputFile, InputExpandTextarea, Textarea, Select, SearchSelect, Multiselect, Checkbox, Radio, Search, Calendar, InputTime
|
|
214
103
|
|
|
215
|
-
|
|
216
|
-
{ name: 'Иван', age: 25, city: 'Екатеринбург' },
|
|
217
|
-
{ name: 'Мария', age: 30, city: 'Москва' }
|
|
218
|
-
];
|
|
104
|
+
### Навигация
|
|
219
105
|
|
|
220
|
-
|
|
221
|
-
<Table
|
|
222
|
-
columns={columns}
|
|
223
|
-
data={data}
|
|
224
|
-
sortable
|
|
225
|
-
/>
|
|
226
|
-
);
|
|
227
|
-
}
|
|
228
|
-
```
|
|
106
|
+
Menu, Tabs, Accordion, BreadCrumbs, TreeView
|
|
229
107
|
|
|
230
|
-
|
|
108
|
+
### Отображение
|
|
231
109
|
|
|
232
|
-
|
|
110
|
+
Table, Status, Icon, Message, Preloader, Card, StickyActionBar
|
|
233
111
|
|
|
234
|
-
|
|
235
|
-
npm run sb
|
|
236
|
-
```
|
|
112
|
+
### Взаимодействие
|
|
237
113
|
|
|
238
|
-
|
|
114
|
+
Button, Modal, Tooltip, Notification, Switch
|
|
239
115
|
|
|
240
|
-
|
|
116
|
+
---
|
|
241
117
|
|
|
242
|
-
|
|
243
|
-
- **Адаптивность** — все компоненты адаптированы под разные разрешения экрана
|
|
244
|
-
- **Виртуализация** — поддержка виртуализации для больших списков и таблиц
|
|
245
|
-
- **Доступность** — компоненты разработаны с учетом принципов доступности
|
|
246
|
-
- **Кастомизация** — гибкая настройка компонентов через пропсы
|
|
118
|
+
## 📋 Требования
|
|
247
119
|
|
|
248
|
-
|
|
120
|
+
- React ^18.0.0
|
|
121
|
+
- React DOM ^18.0.0
|
|
122
|
+
- TypeScript ^5.2
|
|
249
123
|
|
|
250
|
-
|
|
251
|
-
- React DOM ^18.3.1
|
|
124
|
+
---
|
|
252
125
|
|
|
253
126
|
## 📝 История версий
|
|
254
127
|
|
|
255
|
-
|
|
128
|
+
**v1.9.0** (2026-05-25)
|
|
129
|
+
|
|
130
|
+
- Pagination: исправлено выравнивание на десктопе и мобильных устройствах
|
|
256
131
|
|
|
257
|
-
|
|
258
|
-
- Table: добавлен проп `fixedLayout` — устанавливает `table-layout: fixed`, предотвращает скачки колонок при пагинации
|
|
259
|
-
- **v1.8.6** — Calendar: проп `disabled` теперь визуально отображает неактивное состояние (серый текст, светло-серый фон, скрытый бордер)
|
|
260
|
-
- **v1.8.5** — добавлен компонент Switch
|
|
261
|
-
- **v1.8.1** — добавлена поддержка Tooltip с различными позициями (слева, снизу, сверху)
|
|
262
|
-
- Улучшена работа с календарем и фильтрацией таблиц
|
|
263
|
-
- Добавлена виртуализация для таблиц и селектов
|
|
264
|
-
- Расширены возможности Filter
|
|
265
|
-
- Добавлен компонент TreeView с поиском
|
|
266
|
-
- Улучшена система уведомлений
|
|
267
|
-
- Множество исправлений и оптимизаций
|
|
132
|
+
**v1.8.7** и ранее — см. [docs/versioning.md](./docs/versioning.md)
|
|
268
133
|
|
|
269
|
-
|
|
134
|
+
---
|
|
270
135
|
|
|
271
|
-
|
|
136
|
+
## 🤝 Вопросы и обратная связь
|
|
272
137
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
3. Поделитесь своими вопросами, замечаниями и рекомендациями: [Форма обратной связи](https://lk-form.my1.urfu.ru/uikit-feedback/submit)
|
|
138
|
+
- Документация: [https://uikit.my1.urfu.ru](https://uikit.my1.urfu.ru)
|
|
139
|
+
- Форма обратной связи: [https://lk-form.my1.urfu.ru/uikit-feedback/submit](https://lk-form.my1.urfu.ru/uikit-feedback/submit)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAGpE,OAAO,4CAA4C,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAStD,OAAO,iBAAiB,CAAC;AAazB,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,SAAI;;EAQvD;AAiBD,eAAO,MAAM,KAAK,UAEjB,CAAC;AA2GF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA4QjD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CSSProperties } from 'react';
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
2
|
export type CalendarProperties = Partial<{
|
|
3
3
|
title: string;
|
|
4
4
|
selected: any;
|
|
@@ -25,5 +25,14 @@ export type CalendarProperties = Partial<{
|
|
|
25
25
|
columnGap: string | number;
|
|
26
26
|
styleInputContainer: CSSProperties;
|
|
27
27
|
styleTitle: CSSProperties;
|
|
28
|
+
/** Включает редактирование даты колесом мыши, стрелками ↑↓ и переход по Enter.
|
|
29
|
+
* По умолчанию выключено — поле работает как обычный masked-input (только ввод). */
|
|
30
|
+
wheelEdit: boolean;
|
|
31
|
+
/** Показывать подсказку-тултип при фокусе. По умолчанию выключено. */
|
|
32
|
+
showHint: boolean;
|
|
33
|
+
/** Текст подсказки. По умолчанию — про колесо мыши и стрелки ↑↓. */
|
|
34
|
+
hintText: ReactNode;
|
|
35
|
+
/** Максимальная ширина тултипа подсказки. */
|
|
36
|
+
tooltipMaxWidth: string | number;
|
|
28
37
|
}>;
|
|
29
38
|
//# sourceMappingURL=Calendar.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.types.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar/Calendar.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Calendar.types.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar/Calendar.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;IACjB,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,mBAAmB,EAAE,aAAa,CAAC;IACnC,UAAU,EAAE,aAAa,CAAC;IAC1B;yFACqF;IACrF,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type InputHTMLAttributes } from "react";
|
|
2
|
+
type ExtraDateProps = {
|
|
3
|
+
/** Вызывается при изменении значения колесом/стрелками с распарсенной датой (байпас react-datepicker roundtrip). */
|
|
4
|
+
onWheelDate?: (date: Date) => void;
|
|
5
|
+
/** Вызывается при изменении значения колесом/стрелками чтобы открыть попап календаря. */
|
|
6
|
+
onOpenCalendar?: () => void;
|
|
7
|
+
/** Уведомляет родителя об изменении фокуса инпута (для тултипа). */
|
|
8
|
+
onFocusChange?: (focused: boolean) => void;
|
|
9
|
+
/** Разрешает оставить поле пустым. Если false — на blur неполное/пустое значение
|
|
10
|
+
* восстанавливается к последней полной введённой дате. */
|
|
11
|
+
isClearable?: boolean;
|
|
12
|
+
/** Включает редактирование сегментов колесом мыши, стрелками ↑↓ и переход по Enter.
|
|
13
|
+
* По умолчанию выключено — поле работает как обычный masked-input (только ввод). */
|
|
14
|
+
wheelEdit?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare const MaskedDateInput: import("react").ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & ExtraDateProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=MaskedDateInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaskedDateInput.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar/MaskedDateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,mBAAmB,EACzB,MAAM,OAAO,CAAC;AAUf,KAAK,cAAc,GAAG;IACpB,oHAAoH;IACpH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,oEAAoE;IACpE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C;+DAC2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;yFACqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAIF,eAAO,MAAM,eAAe,qJAgR1B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const parseDateString: (value: string) => Date | null;
|
|
2
|
+
export type DateSegment = "day" | "month" | "year";
|
|
3
|
+
export declare const getSegmentRange: (segment: DateSegment) => [number, number];
|
|
4
|
+
export declare const getSegmentAtCaret: (caret: number) => DateSegment;
|
|
5
|
+
export declare const incrementDateSegment: (value: string, segment: DateSegment, delta: number) => string;
|
|
6
|
+
export declare const normalizeSegment: (segment: string, max: number) => string;
|
|
7
|
+
export declare const maskDateValue: (raw: string) => string;
|
|
8
|
+
//# sourceMappingURL=dateMask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateMask.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar/dateMask.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,IAAI,GAAG,IAMtD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAGnD,eAAO,MAAM,eAAe,GAAI,SAAS,WAAW,KAAG,CAAC,MAAM,EAAE,MAAM,CAIrE,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,WAIjD,CAAC;AAwBF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EACb,SAAS,WAAW,EACpB,OAAO,MAAM,KACZ,MAkBF,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,MAU/D,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MAU3C,CAAC"}
|
|
@@ -3,11 +3,12 @@ import 'urfu-ui-kit-vanilla/src/main.css';
|
|
|
3
3
|
import './InputTime.less';
|
|
4
4
|
import type { InputTimeProperties } from './InputTime.types';
|
|
5
5
|
export declare const InputTime: {
|
|
6
|
-
({ title, placeholder, defaultValue, value, id, name, onChange, required, disabled, lineUp, rowGap, columnGap, styleInputContainer, styleTitle, styleInput, tooltipMaxWidth, className, validationText, validationOn, validationOnWithoutText, absoluteValidationText, }: InputTimeProperties): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
({ title, placeholder, defaultValue, value, id, name, onChange, required, disabled, isClearable, lineUp, rowGap, columnGap, styleInputContainer, styleTitle, styleInput, tooltipMaxWidth, wheelEdit, showHint, hintText, className, validationText, validationOn, validationOnWithoutText, absoluteValidationText, }: InputTimeProperties): import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
propTypes: {
|
|
8
8
|
title: PropTypes.Requireable<string>;
|
|
9
9
|
required: PropTypes.Requireable<boolean>;
|
|
10
10
|
disabled: PropTypes.Requireable<boolean>;
|
|
11
|
+
isClearable: PropTypes.Requireable<boolean>;
|
|
11
12
|
lineUp: PropTypes.Requireable<boolean>;
|
|
12
13
|
rowGap: PropTypes.Requireable<NonNullable<string | number>>;
|
|
13
14
|
columnGap: PropTypes.Requireable<NonNullable<string | number>>;
|
|
@@ -15,6 +16,9 @@ export declare const InputTime: {
|
|
|
15
16
|
styleTitle: PropTypes.Requireable<object>;
|
|
16
17
|
styleInput: PropTypes.Requireable<object>;
|
|
17
18
|
tooltipMaxWidth: PropTypes.Requireable<NonNullable<string | number>>;
|
|
19
|
+
wheelEdit: PropTypes.Requireable<boolean>;
|
|
20
|
+
showHint: PropTypes.Requireable<boolean>;
|
|
21
|
+
hintText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
18
22
|
className: PropTypes.Requireable<string>;
|
|
19
23
|
id: PropTypes.Requireable<string>;
|
|
20
24
|
name: PropTypes.Requireable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputTime.d.ts","sourceRoot":"","sources":["../../../src/components/InputTime/InputTime.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,eAAO,MAAM,SAAS;
|
|
1
|
+
{"version":3,"file":"InputTime.d.ts","sourceRoot":"","sources":["../../../src/components/InputTime/InputTime.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,eAAO,MAAM,SAAS;0TA0BnB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;CAulBrB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CSSProperties } from 'react';
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
2
|
export type InputTimeProperties = Partial<{
|
|
3
3
|
title: string;
|
|
4
4
|
placeholder: string;
|
|
@@ -9,6 +9,9 @@ export type InputTimeProperties = Partial<{
|
|
|
9
9
|
onChange: React.ChangeEventHandler<HTMLInputElement>;
|
|
10
10
|
required: boolean;
|
|
11
11
|
disabled: boolean;
|
|
12
|
+
/** Разрешает оставить поле пустым. Если false — на blur неполное/пустое значение
|
|
13
|
+
* восстанавливается к последнему полному введённому времени. */
|
|
14
|
+
isClearable: boolean;
|
|
12
15
|
lineUp: boolean;
|
|
13
16
|
rowGap: string | number;
|
|
14
17
|
columnGap: string | number;
|
|
@@ -16,6 +19,12 @@ export type InputTimeProperties = Partial<{
|
|
|
16
19
|
styleTitle: CSSProperties;
|
|
17
20
|
styleInput: CSSProperties;
|
|
18
21
|
tooltipMaxWidth: string | number;
|
|
22
|
+
/** Включает изменение времени колесом мыши и стрелками ↑↓. По умолчанию выключено. */
|
|
23
|
+
wheelEdit: boolean;
|
|
24
|
+
/** Показывать подсказку-тултип при фокусе. По умолчанию выключено. */
|
|
25
|
+
showHint: boolean;
|
|
26
|
+
/** Текст подсказки. По умолчанию — про колесо мыши, стрелки ↑↓ и Enter. */
|
|
27
|
+
hintText: ReactNode;
|
|
19
28
|
className: string;
|
|
20
29
|
validationText: string;
|
|
21
30
|
validationOn: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputTime.types.d.ts","sourceRoot":"","sources":["../../../src/components/InputTime/InputTime.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"InputTime.types.d.ts","sourceRoot":"","sources":["../../../src/components/InputTime/InputTime.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB;qEACiE;IACjE,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,mBAAmB,EAAE,aAAa,CAAC;IACnC,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,sFAAsF;IACtF,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { StatusProperties } from './Status.types';
|
|
|
4
4
|
export declare const Status: {
|
|
5
5
|
({ size, variant, children, className, id, props }: StatusProperties): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
propTypes: {
|
|
7
|
-
children: PropTypes.Requireable<
|
|
7
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
8
8
|
variant: PropTypes.Requireable<string>;
|
|
9
9
|
size: PropTypes.Requireable<string>;
|
|
10
10
|
className: PropTypes.Requireable<string>;
|