@skbkontur/react-ui 5.3.1 → 5.3.2

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.
Files changed (135) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +1 -6
  3. package/cjs/components/Autocomplete/Autocomplete.md +0 -113
  4. package/cjs/components/Button/Button.md +0 -261
  5. package/cjs/components/Calendar/Calendar.md +0 -276
  6. package/cjs/components/Calendar/CalendarDay.md +0 -70
  7. package/cjs/components/Center/Center.md +0 -26
  8. package/cjs/components/Checkbox/Checkbox.md +0 -171
  9. package/cjs/components/ComboBox/ComboBox.md +0 -574
  10. package/cjs/components/CurrencyInput/CurrencyInput.md +0 -39
  11. package/cjs/components/CurrencyLabel/CurrencyLabel.md +0 -29
  12. package/cjs/components/DateInput/DateInput.md +0 -111
  13. package/cjs/components/DatePicker/DatePicker.md +0 -368
  14. package/cjs/components/Dropdown/Dropdown.md +0 -45
  15. package/cjs/components/DropdownMenu/DropdownMenu.md +0 -290
  16. package/cjs/components/FileUploader/FileUploader.md +0 -131
  17. package/cjs/components/FxInput/FxInput.md +0 -31
  18. package/cjs/components/Gapped/Gapped.md +0 -44
  19. package/cjs/components/GlobalLoader/GlobalLoader.md +0 -97
  20. package/cjs/components/Group/Group.md +0 -19
  21. package/cjs/components/Hint/Hint.md +0 -86
  22. package/cjs/components/Input/Input.md +0 -86
  23. package/cjs/components/Kebab/Kebab.md +0 -306
  24. package/cjs/components/Link/Link.md +0 -182
  25. package/cjs/components/Loader/Loader.md +0 -33
  26. package/cjs/components/MaskedInput/MaskedInput.md +0 -114
  27. package/cjs/components/MenuFooter/MenuFooter.md +0 -27
  28. package/cjs/components/MenuHeader/MenuHeader.md +0 -35
  29. package/cjs/components/MenuItem/MenuItem.md +0 -139
  30. package/cjs/components/MenuSeparator/MenuSeparator.md +0 -14
  31. package/cjs/components/MiniModal/MiniModal.md +0 -231
  32. package/cjs/components/Modal/Modal.md +0 -56
  33. package/cjs/components/Paging/Paging.md +0 -57
  34. package/cjs/components/PasswordInput/PasswordInput.md +0 -29
  35. package/cjs/components/Radio/Radio.md +0 -57
  36. package/cjs/components/RadioGroup/RadioGroup.md +0 -44
  37. package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
  38. package/cjs/components/ScrollContainer/ScrollContainer.md +0 -224
  39. package/cjs/components/Select/Select.md +0 -113
  40. package/cjs/components/SidePage/SidePage.md +0 -65
  41. package/cjs/components/SingleToast/SingleToast.md +0 -36
  42. package/cjs/components/Spinner/Spinner.md +0 -36
  43. package/cjs/components/Sticky/Sticky.md +0 -28
  44. package/cjs/components/Switcher/Switcher.md +0 -111
  45. package/cjs/components/Tabs/Tab.md +0 -73
  46. package/cjs/components/Tabs/Tabs.md +0 -54
  47. package/cjs/components/Textarea/Textarea.md +0 -58
  48. package/cjs/components/Toast/Toast.md +0 -69
  49. package/cjs/components/Toggle/Toggle.md +0 -110
  50. package/cjs/components/Token/Token.md +0 -48
  51. package/cjs/components/TokenInput/TokenInput.md +0 -277
  52. package/cjs/components/Tooltip/Tooltip.md +0 -322
  53. package/cjs/components/TooltipMenu/TooltipMenu.md +0 -241
  54. package/cjs/internal/DataTids/DATATIDS.md +0 -12
  55. package/cjs/internal/DataTids/DataTids.d.ts +0 -12
  56. package/cjs/internal/DataTids/DataTids.js +0 -50
  57. package/cjs/internal/DataTids/DataTids.js.map +0 -1
  58. package/cjs/internal/DataTids/DataTids.styles.d.ts +0 -7
  59. package/cjs/internal/DataTids/DataTids.styles.js +0 -42
  60. package/cjs/internal/DataTids/DataTids.styles.js.map +0 -1
  61. package/cjs/internal/DataTids/componentsDataTids.d.ts +0 -5
  62. package/cjs/internal/DataTids/componentsDataTids.js +0 -15
  63. package/cjs/internal/DataTids/componentsDataTids.js.map +0 -1
  64. package/cjs/internal/ThemePlayground/Playground.md +0 -7
  65. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
  66. package/cjs/lib/locale/LOCALECONTEXT.md +0 -222
  67. package/cjs/lib/theming/ThemeContext.md +0 -265
  68. package/components/Autocomplete/Autocomplete.md +0 -113
  69. package/components/Button/Button.md +0 -261
  70. package/components/Calendar/Calendar.md +0 -276
  71. package/components/Calendar/CalendarDay.md +0 -70
  72. package/components/Center/Center.md +0 -26
  73. package/components/Checkbox/Checkbox.md +0 -171
  74. package/components/ComboBox/ComboBox.md +0 -574
  75. package/components/CurrencyInput/CurrencyInput.md +0 -39
  76. package/components/CurrencyLabel/CurrencyLabel.md +0 -29
  77. package/components/DateInput/DateInput.md +0 -111
  78. package/components/DatePicker/DatePicker.md +0 -368
  79. package/components/Dropdown/Dropdown.md +0 -45
  80. package/components/DropdownMenu/DropdownMenu.md +0 -290
  81. package/components/FileUploader/FileUploader.md +0 -131
  82. package/components/FxInput/FxInput.md +0 -31
  83. package/components/Gapped/Gapped.md +0 -44
  84. package/components/GlobalLoader/GlobalLoader.md +0 -97
  85. package/components/Group/Group.md +0 -19
  86. package/components/Hint/Hint.md +0 -86
  87. package/components/Input/Input.md +0 -86
  88. package/components/Kebab/Kebab.md +0 -306
  89. package/components/Link/Link.md +0 -182
  90. package/components/Loader/Loader.md +0 -33
  91. package/components/MaskedInput/MaskedInput.md +0 -114
  92. package/components/MenuFooter/MenuFooter.md +0 -27
  93. package/components/MenuHeader/MenuHeader.md +0 -35
  94. package/components/MenuItem/MenuItem.md +0 -139
  95. package/components/MenuSeparator/MenuSeparator.md +0 -14
  96. package/components/MiniModal/MiniModal.md +0 -231
  97. package/components/Modal/Modal.md +0 -56
  98. package/components/Paging/Paging.md +0 -57
  99. package/components/PasswordInput/PasswordInput.md +0 -29
  100. package/components/Radio/Radio.md +0 -57
  101. package/components/RadioGroup/RadioGroup.md +0 -44
  102. package/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
  103. package/components/ScrollContainer/ScrollContainer.md +0 -224
  104. package/components/Select/Select.md +0 -113
  105. package/components/SidePage/SidePage.md +0 -65
  106. package/components/SingleToast/SingleToast.md +0 -36
  107. package/components/Spinner/Spinner.md +0 -36
  108. package/components/Sticky/Sticky.md +0 -28
  109. package/components/Switcher/Switcher.md +0 -111
  110. package/components/Tabs/Tab.md +0 -73
  111. package/components/Tabs/Tabs.md +0 -54
  112. package/components/Textarea/Textarea.md +0 -58
  113. package/components/Toast/Toast.md +0 -69
  114. package/components/Toggle/Toggle.md +0 -110
  115. package/components/Token/Token.md +0 -48
  116. package/components/TokenInput/TokenInput.md +0 -277
  117. package/components/Tooltip/Tooltip.md +0 -322
  118. package/components/TooltipMenu/TooltipMenu.md +0 -241
  119. package/internal/DataTids/DATATIDS.md +0 -12
  120. package/internal/DataTids/DataTids/DataTids.js +0 -69
  121. package/internal/DataTids/DataTids/DataTids.js.map +0 -1
  122. package/internal/DataTids/DataTids/package.json +0 -6
  123. package/internal/DataTids/DataTids.d.ts +0 -12
  124. package/internal/DataTids/DataTids.styles/DataTids.styles.js +0 -20
  125. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +0 -1
  126. package/internal/DataTids/DataTids.styles/package.json +0 -6
  127. package/internal/DataTids/DataTids.styles.d.ts +0 -7
  128. package/internal/DataTids/componentsDataTids/componentsDataTids.js +0 -12
  129. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +0 -1
  130. package/internal/DataTids/componentsDataTids/package.json +0 -6
  131. package/internal/DataTids/componentsDataTids.d.ts +0 -5
  132. package/internal/ThemePlayground/Playground.md +0 -7
  133. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
  134. package/lib/locale/LOCALECONTEXT.md +0 -222
  135. package/lib/theming/ThemeContext.md +0 -265
@@ -1,114 +0,0 @@
1
- ### Проп `mask`
2
-
3
- Паттерн ввода. Пример с номером телефона.
4
-
5
- ```jsx harmony
6
- const [value, setValue] = React.useState('');
7
-
8
- <>
9
- <span>value: "{value}"</span>
10
- <br />
11
- <br />
12
- <MaskedInput
13
- mask="+7 (999) 999-99-99"
14
- placeholder="Номер телефона"
15
- value={value}
16
- onValueChange={setValue}
17
- />
18
- </>
19
- ```
20
-
21
- ### Проп `alwaysShowMask`
22
-
23
- Показывает маску всегда.
24
-
25
- ```jsx harmony
26
- <MaskedInput mask="+7 (999) 999-99-99" alwaysShowMask />
27
- ```
28
-
29
- ### Проп `maskChar`
30
-
31
- Символом маски может быть любой символ.
32
-
33
- ```jsx harmony
34
- const [value, setValue] = React.useState('');
35
-
36
- <>
37
- <span>value: "{value}"</span>
38
- <br />
39
- <br />
40
- <MaskedInput
41
- mask="9999 9999 9999 9999"
42
- maskChar="X"
43
- placeholder="Номер карты"
44
- alwaysShowMask
45
- value={value}
46
- onValueChange={setValue}
47
- />
48
- </>
49
- ```
50
-
51
- ### Проп `formatChars`
52
-
53
- При необходимости можно настроить собственный словарь.
54
-
55
- ```jsx harmony
56
- const [value, setValue] = React.useState('');
57
-
58
- <MaskedInput
59
- mask="Hh:Mm:Ss"
60
- alwaysShowMask
61
- formatChars={{
62
- H: '[0-2]',
63
- h: value.startsWith('2') ? '[0-3]' : '[0-9]',
64
- M: '[0-5]',
65
- m: '[0-9]',
66
- S: '[0-5]',
67
- s: '[0-9]',
68
- }}
69
- value={value}
70
- onValueChange={setValue}
71
- />
72
- ```
73
-
74
- ### Проп `unmask`
75
-
76
- Можно сразу получать очищенный value, содержащий только введённый пользователем символы.
77
-
78
- ```jsx harmony
79
- const [value, setValue] = React.useState('');
80
-
81
- <>
82
- <span>value: "{value}"</span>
83
- <br />
84
- <br />
85
- <MaskedInput
86
- mask="+7 (999) 999-99-99"
87
- unmask
88
- alwaysShowMask
89
- value={value}
90
- onValueChange={setValue}
91
- />
92
- </>
93
- ```
94
-
95
- ### Проп `unmask` с фигурными скобками
96
-
97
- Если обернуть фиксированные символы в фигурные скобки, то они попадут в `value` при `unmask = true`.
98
-
99
- ```jsx harmony
100
- const [value, setValue] = React.useState('');
101
-
102
- <>
103
- <span>value: "{value}"</span>
104
- <br />
105
- <br />
106
- <MaskedInput
107
- mask="+{7} (999) 999-99-99"
108
- unmask
109
- alwaysShowMask
110
- value={value}
111
- onValueChange={setValue}
112
- />
113
- </>
114
- ```
@@ -1,27 +0,0 @@
1
- ### Базовый пример меню с заголовками
2
-
3
- ```jsx harmony
4
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
5
-
6
- <DropdownMenu
7
- menuMaxHeight="10rem"
8
- caption={<Button use="primary">Сотрудники компании</Button>}
9
- >
10
- <MenuItem>Вася</MenuItem>
11
- <MenuItem>Петя</MenuItem>
12
- <MenuItem>Маша</MenuItem>
13
- <MenuFooter>Всего 3 человека</MenuFooter>
14
- </DropdownMenu>
15
- ```
16
-
17
- ### Размер
18
-
19
- ```jsx harmony
20
- import { Gapped } from '@skbkontur/react-ui';
21
-
22
- <Gapped vertical>
23
- <MenuFooter size={'small'}>Маленький</MenuFooter>
24
- <MenuFooter size={'medium'}>Средний</MenuFooter>
25
- <MenuFooter size={'large'}>Большой</MenuFooter>
26
- </Gapped>
27
- ```
@@ -1,35 +0,0 @@
1
- ### Базовый пример меню с заголовками
2
-
3
- ```jsx harmony
4
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
5
-
6
- <DropdownMenu
7
- menuMaxHeight="10rem"
8
- caption={<Button use="primary">Сотрудники компании</Button>}
9
- >
10
- <MenuHeader>Разработчики</MenuHeader>
11
- <MenuItem>Вася</MenuItem>
12
- <MenuItem>Петя</MenuItem>
13
- <MenuItem>Маша</MenuItem>
14
- <MenuHeader>Дизайнеры</MenuHeader>
15
- <MenuItem>Галя</MenuItem>
16
- <MenuItem>Гриша</MenuItem>
17
- <MenuItem>Гена</MenuItem>
18
- <MenuHeader>Продакты</MenuHeader>
19
- <MenuItem>Валя</MenuItem>
20
- <MenuItem>Аля</MenuItem>
21
- <MenuItem>Артём</MenuItem>
22
- </DropdownMenu>
23
- ```
24
-
25
- ### Размер
26
-
27
- ```jsx harmony
28
- import { Gapped } from '@skbkontur/react-ui';
29
-
30
- <Gapped vertical>
31
- <MenuHeader size={'small'}>Маленький</MenuHeader>
32
- <MenuHeader size={'medium'}>Средний</MenuHeader>
33
- <MenuHeader size={'large'}>Большой</MenuHeader>
34
- </Gapped>
35
- ```
@@ -1,139 +0,0 @@
1
- ### Меню с базовыми элементами меню
2
-
3
- ```jsx harmony
4
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
5
-
6
- <DropdownMenu
7
- caption={<Button use="primary">Открыть меню с базовыми элементами меню</Button>}
8
- >
9
- <MenuItem>Базовый элемент меню</MenuItem>
10
- <MenuItem>Ещё один базовый элемент меню</MenuItem>
11
- <MenuItem>И ещё один</MenuItem>
12
- </DropdownMenu>
13
- ```
14
-
15
- ### Disabled
16
-
17
- ```jsx harmony
18
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
19
-
20
- <DropdownMenu
21
- caption={<Button use="primary">Открыть меню с базовыми и заблокированными элементами</Button>}
22
- >
23
- <MenuItem>Это базовый элемент меню</MenuItem>
24
- <MenuItem disabled>А это заблокированный</MenuItem>
25
- <MenuItem>А это снова базовый</MenuItem>
26
- <MenuItem disabled>И снова заблокированный</MenuItem>
27
- <MenuItem disabled>И вот ещё один заблокированный</MenuItem>
28
- </DropdownMenu>
29
- ```
30
-
31
- ### Запрет выделения
32
- В пункты меню можно передать проп `isNotSelectable`, чтобы запретить выделение и выбор этого пункта меню
33
-
34
- ```jsx harmony
35
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
36
-
37
- <DropdownMenu
38
- caption={<Button use="primary">Открыть меню с базовыми и отключёнными элементами</Button>}
39
- >
40
- <MenuItem>Это базовый элемент меню</MenuItem>
41
- <MenuItem isNotSelectable>А это отключённый</MenuItem>
42
- <MenuItem>А это снова базовый</MenuItem>
43
- <MenuItem isNotSelectable>И снова отключённый</MenuItem>
44
- <MenuItem isNotSelectable>И вот ещё один отключённый</MenuItem>
45
- </DropdownMenu>
46
- ```
47
-
48
- ### Описание элементов
49
-
50
- ```jsx harmony
51
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
52
-
53
- <DropdownMenu
54
- caption={<Button use="primary">Открыть меню с причастными к Pied Piper</Button>}
55
- >
56
- <MenuItem comment="Системный инженер">Bertram Gilfoyle</MenuItem>
57
- <MenuItem comment="Hooli CEO">Gavin Belson</MenuItem>
58
- <MenuItem comment="Java-разработчик">Dinesh Chugtai</MenuItem>
59
- <MenuItem comment="Основатель Pied Piper">Richard Hendricks</MenuItem>
60
- <MenuItem comment="Владелец инкубатора">Erlich Bachman</MenuItem>
61
- </DropdownMenu>
62
- ```
63
-
64
- ### Иконки в элементах
65
-
66
- ```jsx harmony
67
- import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
68
- import { TechPhoneSmartIcon16Regular } from '@skbkontur/icons/icons/TechPhoneSmartIcon/TechPhoneSmartIcon16Regular';
69
- import { CheckAIcon16Regular } from '@skbkontur/icons/icons/CheckAIcon/CheckAIcon16Regular';
70
- import { HandThumbDownIcon16Regular } from '@skbkontur/icons/icons/HandThumbDownIcon/HandThumbDownIcon16Regular';
71
-
72
-
73
- <DropdownMenu
74
- caption={<Button use="primary">Открыть меню с иконками</Button>}
75
- >
76
- <MenuItem icon={<CheckAIcon16Regular />}>Базовый элемент меню c иконкой</MenuItem>
77
- <MenuItem
78
- disabled
79
- icon={<HandThumbDownIcon16Regular />}
80
- >
81
- Отключённый элемент меню с иконкой
82
- </MenuItem>
83
- <MenuItem
84
- icon={<TechPhoneSmartIcon16Regular />}
85
- comment="А слева вы можете видеть икону 21-го века"
86
- >
87
- Элемент меню с описанием и иконкой
88
- </MenuItem>
89
- </DropdownMenu>
90
- ```
91
-
92
- ### Проп href
93
-
94
- В элементы меню можно передавать проп `href`, чтобы превратить их в ссылку. Лучше выделять такие элементы иконками.
95
-
96
- ```jsx harmony
97
- import { Button, MenuItem, DropdownMenu, MenuSeparator } from '@skbkontur/react-ui';
98
- import { ArrowUiCornerOutUpRightIcon } from '@skbkontur/icons/icons/ArrowUiCornerOutUpRightIcon';
99
-
100
- <DropdownMenu
101
- caption={<Button use="primary">Открыть меню с ссылками</Button>}
102
- >
103
- <MenuItem
104
- href="http://tech.skbkontur.ru/react-ui/"
105
- target="_blank"
106
- rel="noopener noreferrer"
107
- >
108
- Начало документации
109
- </MenuItem>
110
- <MenuItem
111
- href="https://github.com/skbkontur/retail-ui/graphs/contributors"
112
- target="_blank"
113
- rel="noopener noreferrer"
114
- >
115
- Список прекрасных людей
116
- </MenuItem>
117
- <MenuSeparator />
118
- <MenuItem
119
- icon={< ArrowUiCornerOutUpRightIcon />}
120
- href="https://guides.kontur.ru/"
121
- target="_blank"
122
- rel="noopener noreferrer"
123
- >
124
- Подробнее в Контур Гайдах
125
- </MenuItem>
126
- </DropdownMenu>
127
- ```
128
-
129
- ### Размер
130
-
131
- ```jsx harmony
132
- import { Gapped } from '@skbkontur/react-ui';
133
-
134
- <Gapped vertical>
135
- <MenuItem size={'small'}>Маленький</MenuItem>
136
- <MenuItem size={'medium'}>Средний</MenuItem>
137
- <MenuItem size={'large'}>Большой</MenuItem>
138
- </Gapped>
139
- ```
@@ -1,14 +0,0 @@
1
- ### Меню с разделителями
2
-
3
- ```jsx harmony
4
- import { Button, MenuHeader, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
5
-
6
- <DropdownMenu caption={<Button use="primary">Открыть меню с разделителями</Button>}>
7
- <MenuItem>У меня есть разделитель</MenuItem>
8
- <MenuSeparator />
9
- <MenuItem>У меня тоже!</MenuItem>
10
- <MenuSeparator />
11
- <MenuItem>А у меня нет :(</MenuItem>
12
- <MenuItem>Как и у меня :(</MenuItem>
13
- </DropdownMenu>;
14
- ```
@@ -1,231 +0,0 @@
1
- Этот компонент обёртка над [Modal](#/Components/Modal/Modal).
2
-
3
- `MiniModal` — модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий.
4
- Закрытие окна по клику на фон или "крестик" не рекомендуется, т.к. у этих действий нет однозначного описания в
5
- отличие от кнопок с названиями, наподобие "Сохранить", "Подтвердить" и т.п.
6
-
7
- 👉 По макету предполагается, что все кнопки должны быть среднего размера `size = medium`.
8
-
9
- ### Уведомление
10
-
11
- Самый простой вариант использования:
12
-
13
- ```jsx harmony
14
- import { MiniModal, Button, Gapped } from '@skbkontur/react-ui';
15
- import { MoneyTypeCoinsIcon } from '@skbkontur/icons/MoneyTypeCoinsIcon';
16
-
17
- const PayNotifice = () => {
18
-
19
- const [isOpened, setIsOpened] = React.useState(false);
20
-
21
- const open = () => setIsOpened(true);
22
- const close = () => setIsOpened(false);
23
-
24
- return (
25
- <>
26
- {isOpened && (
27
- <MiniModal>
28
- <MiniModal.Header>
29
- Простое уведомление
30
- </MiniModal.Header>
31
- <MiniModal.Body>
32
- Это простое, но достаточное важное уведомление, чтобы его показать в МиниМодалке
33
- </MiniModal.Body>
34
- <MiniModal.Footer>
35
- <Button size="medium" use="primary" onClick={close}>Понятно</Button>
36
- </MiniModal.Footer>
37
- </MiniModal>
38
- )}
39
- <Button use="pay" onClick={open} icon={<MoneyTypeCoinsIcon/>}>Оплата</Button>
40
- </>
41
- );
42
- }
43
-
44
- <PayNotifice />
45
- ```
46
-
47
- ### Подтверждение
48
-
49
- Иногда от пользователя требуется выбрать одно из доступных действий.
50
-
51
- Например, подтвердить важное действие или отклонить его:
52
-
53
- ```jsx harmony
54
- import { MiniModal, Button, Gapped, ThemeContext } from '@skbkontur/react-ui';
55
- import { TrashCanIcon } from '@skbkontur/icons/TrashCanIcon';
56
-
57
- const ConfirmDelete = ({ name, handleDelete }) => {
58
- const theme = React.useContext(ThemeContext);
59
-
60
- const [isOpened, setIsOpened] = React.useState(false);
61
-
62
- const open = () => setIsOpened(true);
63
- const close = () => setIsOpened(false);
64
-
65
- const mainAction = () => {
66
- handleDelete();
67
- close();
68
- };
69
-
70
- return (
71
- <>
72
- {isOpened && (
73
- <MiniModal>
74
- <MiniModal.Header icon={<TrashCanIcon size={64} color={theme.btnDangerBg}/>}>
75
- Удалить "{name}"?
76
- </MiniModal.Header>
77
- <MiniModal.Footer direction="column">
78
- <Button use="danger" size="medium" onClick={mainAction}>Удалить</Button>
79
- <Button size="medium" onClick={close}>Отменить</Button>
80
- </MiniModal.Footer>
81
- </MiniModal>
82
- )}
83
- <Button onClick={open} icon={<TrashCanIcon weight="light"/>}/>
84
- </>
85
- );
86
- }
87
-
88
- const list = ['Отчёт № 111', 'Отчёт № 222', 'Отчёт № 333'];
89
-
90
- <Gapped vertical>
91
- {list.map((name) => (
92
- <Gapped key={name}>
93
- <div style={{ width: 200, borderBottom: 'dashed 1px' }}>
94
- {name}
95
- </div>
96
- <span>
97
- <ConfirmDelete name={name} handleDelete={() => alert(`${name} удалён`)}/>
98
- </span>
99
- </Gapped>
100
- ))}
101
- </Gapped>
102
- ```
103
-
104
- ### Синглтон
105
-
106
- Одно и то же диалоговое окно может вызываться в разных частях приложения.
107
-
108
- В таком случае стоит реализовать паттерн синглтона:
109
-
110
- ```jsx harmony
111
- import { MiniModal, Button, Gapped } from '@skbkontur/react-ui';
112
- import { NotificationBellAlarmIcon16Solid } from '@skbkontur/icons/NotificationBellAlarmIcon16Solid';
113
- import { NotificationBellAlarmIcon64Regular } from '@skbkontur/icons/NotificationBellAlarmIcon64Regular';
114
-
115
- const EnableNotification = React.forwardRef(({ setStatus }, ref) => {
116
- const [isOpened, setIsOpened] = React.useState(false);
117
-
118
- const open = () => setIsOpened(true);
119
- const close = () => setIsOpened(false);
120
-
121
- const handleAllowAll = () => {
122
- setStatus('Разрешить все');
123
- close();
124
- };
125
- const handleAllowBasic = () => {
126
- setStatus('Разрешить только основные');
127
- close();
128
- };
129
- const handleDenyAll = () => {
130
- setStatus('Запретить');
131
- close();
132
- };
133
-
134
- React.useImperativeHandle(ref, () => ({ open, close }), []);
135
-
136
- return isOpened && (
137
- <MiniModal>
138
- <MiniModal.Header icon={<NotificationBellAlarmIcon64Regular/>}>
139
- Разрешить уведомления?
140
- </MiniModal.Header>
141
- <MiniModal.Footer direction="column">
142
- <Button use="primary" size="medium" onClick={handleAllowAll}>Разрешить все</Button>
143
- <Button size="medium" onClick={handleAllowBasic}>Разрешить только основные</Button>
144
- <MiniModal.Indent/>
145
- <Button size="medium" onClick={handleDenyAll}>Запретить</Button>
146
- </MiniModal.Footer>
147
- </MiniModal>
148
- );
149
- });
150
-
151
- const [status, setStatus] = React.useState('-не выбрано-');
152
-
153
- const NotificationEnableRef = React.useRef(null);
154
-
155
- const NotificationEnableOpen = () => NotificationEnableRef.current && NotificationEnableRef.current.open();
156
-
157
- <>
158
- <EnableNotification ref={NotificationEnableRef} setStatus={setStatus}/>
159
- <Gapped vertical>
160
- <span>
161
- <NotificationBellAlarmIcon16Solid/> Статус уведомлений: {status}
162
- </span>
163
- <Button use="text" theme={{ btnTextBg: '#D6D6D6' }} onClick={NotificationEnableOpen}>Разрешить уведомления?</Button>
164
- <Button use="text" theme={{ btnTextBg: '#E6E6E6' }} onClick={NotificationEnableOpen}>Разрешить уведомления?</Button>
165
- <Button use="text" theme={{ btnTextBg: '#F0F0F0' }} onClick={NotificationEnableOpen}>Разрешить уведомления?</Button>
166
- </Gapped>
167
- </>
168
- ```
169
-
170
- ### Ожидание
171
-
172
- Некоторые действия для корректного исполнения требуют блокировки других действий пользователя.
173
-
174
- В таких случаях можно, например, использовать проп `loading` для `Button`, и не позволять закрыть окно до конца исполнения:
175
-
176
- ```jsx harmony
177
- import { Button, Gapped } from '@skbkontur/react-ui';
178
-
179
- const WaitingUpdate = ({ handleUpdate, setLastUpdated }) => {
180
-
181
- const [isLoading, setIsLoading] = React.useState(false);
182
- const [isOpened, setIsOpened] = React.useState(false);
183
-
184
- const open = () => setIsOpened(true);
185
- const close = () => setIsOpened(false);
186
-
187
- const handleMainClick = () => {
188
- setIsLoading(true);
189
- handleUpdate()
190
- .then(() => {
191
- setIsLoading(false);
192
- setIsOpened(false);
193
- setLastUpdated(new Date());
194
- });
195
- };
196
-
197
- return (
198
- <>
199
- {isOpened && (
200
- <MiniModal>
201
- <MiniModal.Header>
202
- Обновить?
203
- </MiniModal.Header>
204
- <MiniModal.Body>
205
- После вашего подтверждения другие действия на странице будут заблокированы на несколько секунд.
206
- </MiniModal.Body>
207
- <MiniModal.Footer>
208
- <Button use="success" size="medium" onClick={handleMainClick} loading={isLoading}>Обновить</Button>
209
- <Button size="medium" onClick={close} disabled={isLoading}>Отменить</Button>
210
- </MiniModal.Footer>
211
-
212
- </MiniModal>
213
- )}
214
- <Button onClick={open} use="success">Обновить</Button>
215
- </>
216
- );
217
- }
218
-
219
- const dateTimeFormat = new Intl.DateTimeFormat('nu', { hour: '2-digit', minute: '2-digit', second: '2-digit' });
220
-
221
- const [lastUpdated, setLastUpdated] = React.useState(new Date());
222
-
223
- const handleUpdate = () => new Promise((resolve) => setTimeout(resolve, 1500));
224
-
225
- <Gapped>
226
- <WaitingUpdate handleUpdate={handleUpdate} setLastUpdated={setLastUpdated} />
227
- <span>
228
- Последнее обновление: {dateTimeFormat.format(lastUpdated)}
229
- </span>
230
- </Gapped>
231
- ```
@@ -1,56 +0,0 @@
1
- ### Базовый пример
2
-
3
- ```jsx harmony
4
- import { Button, Toggle } from '@skbkontur/react-ui';
5
-
6
- const [opened, setOpened] = React.useState(false);
7
- const [panel, setPanel] = React.useState(false);
8
-
9
- function renderModal() {
10
- return (
11
- <Modal onClose={close}>
12
- <Modal.Header>Title</Modal.Header>
13
- <Modal.Body>
14
- <p>Use rxjs operators with react hooks</p>
15
-
16
- <div>
17
- <Toggle checked={panel} onValueChange={setPanel} /> Panel{' '}
18
- {panel ? 'enabled' : 'disabled'}
19
- </div>
20
- </Modal.Body>
21
- <Modal.Footer panel={panel}>
22
- <Button onClick={close}>Close</Button>
23
- </Modal.Footer>
24
- </Modal>
25
- );
26
- }
27
-
28
- function open() {
29
- setOpened(true);
30
- }
31
-
32
- function close() {
33
- setOpened(false);
34
- }
35
-
36
- <div>
37
- {opened && renderModal()}
38
- <Button onClick={open}>Open</Button>
39
- </div>;
40
- ```
41
-
42
- ### Локали по умолчанию
43
-
44
- ```typescript static
45
- interface ModalLocale {
46
- closeButtonAriaLabel: string;
47
- }
48
-
49
- const ru_RU = {
50
- closeButtonAriaLabel: 'Закрыть модальное окно'
51
- }
52
-
53
- const en_GB = {
54
- closeButtonAriaLabel: 'Close modal window'
55
- }
56
- ```
@@ -1,57 +0,0 @@
1
- Управление с клавиатуры работает в двух вариантах:
2
-
3
- - **useGlobalListener === true** слушатель keydown событий на document, если на стринице несколько компонентов Paging,
4
- обработчик будет срабатывать на каждом
5
- - **useGlobalListener === false** обработка нажатия клавиш будет работать только когда компонент в фокусе.
6
-
7
- Навигационные подсказки появляются когда доступно управление с клавиатуры и `withoutNavigationHint != true`
8
-
9
- ### Базовый пример
10
- ```jsx harmony
11
- class Paginator3000 extends React.Component {
12
- constructor() {
13
- super();
14
- this.state = { active: 1 };
15
- this._handlePageChange = this._handlePageChange.bind(this);
16
- }
17
-
18
- render() {
19
- return <Paging activePage={this.state.active} onPageChange={this._handlePageChange} pagesCount={12} />;
20
- }
21
-
22
- _handlePageChange(pageNumber) {
23
- this.setState({ active: pageNumber });
24
- }
25
- }
26
-
27
- <Paginator3000 />;
28
- ```
29
-
30
- ### Пейджинг в отключенном состоянии
31
-
32
- ```jsx
33
- const [activePage, setActivePage] = React.useState(3);
34
-
35
- <Paging
36
- disabled
37
- onPageChange={(activePage) => setActivePage(activePage)}
38
- activePage={activePage}
39
- pagesCount={8}
40
- />
41
- ```
42
-
43
- ### Локали по умолчанию
44
-
45
- ```typescript static
46
- interface PagingLocale {
47
- forward?: string;
48
- }
49
-
50
- const ru_RU = {
51
- forward: 'Дальше',
52
- };
53
-
54
- const en_GB = {
55
- forward: 'Forward',
56
- };
57
- ```