react-miui 0.34.0 → 0.35.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.
Files changed (284) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/CHANGELOG.md +13 -0
  3. package/dist/components/form/index.d.ts +1 -0
  4. package/dist/components/form/index.d.ts.map +1 -1
  5. package/dist/components/form/index.js +1 -0
  6. package/dist/components/form/index.js.map +1 -1
  7. package/dist/components/form/input/Input.d.ts.map +1 -1
  8. package/dist/components/form/input/Input.js +9 -5
  9. package/dist/components/form/input/Input.js.map +1 -1
  10. package/dist/components/form/timepicker/TimePicker.css.d.ts +99 -0
  11. package/dist/components/form/timepicker/TimePicker.css.d.ts.map +1 -0
  12. package/dist/components/form/timepicker/TimePicker.css.js +116 -0
  13. package/dist/components/form/timepicker/TimePicker.css.js.map +1 -0
  14. package/dist/components/form/timepicker/TimePicker.d.ts +22 -0
  15. package/dist/components/form/timepicker/TimePicker.d.ts.map +1 -0
  16. package/dist/components/form/timepicker/TimePicker.js +141 -0
  17. package/dist/components/form/timepicker/TimePicker.js.map +1 -0
  18. package/dist/components/form/timepicker/TimePicker.styled.d.ts +936 -0
  19. package/dist/components/form/timepicker/TimePicker.styled.d.ts.map +1 -0
  20. package/dist/components/form/timepicker/TimePicker.styled.js +29 -0
  21. package/dist/components/form/timepicker/TimePicker.styled.js.map +1 -0
  22. package/dist/components/form/timepicker/TimePickerModal.d.ts +17 -0
  23. package/dist/components/form/timepicker/TimePickerModal.d.ts.map +1 -0
  24. package/dist/components/form/timepicker/TimePickerModal.js +92 -0
  25. package/dist/components/form/timepicker/TimePickerModal.js.map +1 -0
  26. package/dist/components/form/timepicker/Wheel.d.ts +12 -0
  27. package/dist/components/form/timepicker/Wheel.d.ts.map +1 -0
  28. package/dist/components/form/timepicker/Wheel.js +187 -0
  29. package/dist/components/form/timepicker/Wheel.js.map +1 -0
  30. package/dist/components/form/timepicker/utils.d.ts +4 -0
  31. package/dist/components/form/timepicker/utils.d.ts.map +1 -0
  32. package/dist/components/form/timepicker/utils.js +62 -0
  33. package/dist/components/form/timepicker/utils.js.map +1 -0
  34. package/dist/components/icons/Clock.d.ts +7 -0
  35. package/dist/components/icons/Clock.d.ts.map +1 -0
  36. package/dist/components/icons/Clock.js +45 -0
  37. package/dist/components/icons/Clock.js.map +1 -0
  38. package/dist/components/icons/Icon.d.ts +2 -1
  39. package/dist/components/icons/Icon.d.ts.map +1 -1
  40. package/dist/components/icons/Icon.js +3 -0
  41. package/dist/components/icons/Icon.js.map +1 -1
  42. package/dist/components/ui/modal/Modal.d.ts +1 -2
  43. package/dist/components/ui/modal/Modal.d.ts.map +1 -1
  44. package/dist/components/ui/modal/Modal.js +114 -42
  45. package/dist/components/ui/modal/Modal.js.map +1 -1
  46. package/dist/components/ui/modal/Modal.styled.d.ts +1 -1
  47. package/dist/components/ui/modal/Modal.styled.d.ts.map +1 -1
  48. package/dist/components/ui/modal/Modal.styled.js +40 -25
  49. package/dist/components/ui/modal/Modal.styled.js.map +1 -1
  50. package/dist/theme.css-global.d.ts.map +1 -1
  51. package/dist/theme.css-global.js +0 -1
  52. package/dist/theme.css-global.js.map +1 -1
  53. package/dist/utils/index.d.ts +1 -0
  54. package/dist/utils/index.d.ts.map +1 -1
  55. package/dist/utils/index.js +1 -0
  56. package/dist/utils/index.js.map +1 -1
  57. package/dist/utils/useNativeValidity.d.ts +11 -0
  58. package/dist/utils/useNativeValidity.d.ts.map +1 -0
  59. package/dist/utils/useNativeValidity.js +32 -0
  60. package/dist/utils/useNativeValidity.js.map +1 -0
  61. package/docs/assets/navigation.js +1 -1
  62. package/docs/assets/search.js +1 -1
  63. package/docs/classes/index.Pop.html +7 -7
  64. package/docs/documents/Test.html +2 -2
  65. package/docs/enums/index.ICON.html +3 -2
  66. package/docs/functions/index.Action.html +3 -3
  67. package/docs/functions/index.Button.html +3 -3
  68. package/docs/functions/index.Card.html +2 -2
  69. package/docs/functions/index.Checkbox.html +3 -3
  70. package/docs/functions/index.Choice.html +2 -2
  71. package/docs/functions/index.ColorPicker.html +3 -3
  72. package/docs/functions/index.CoveringLoader.html +3 -3
  73. package/docs/functions/index.DirectionPad.html +2 -2
  74. package/docs/functions/index.Drawer.html +2 -2
  75. package/docs/functions/index.EqualActions.html +2 -2
  76. package/docs/functions/index.FullLoader.html +3 -3
  77. package/docs/functions/index.Gap.html +2 -2
  78. package/docs/functions/index.HandleEsc.html +3 -3
  79. package/docs/functions/index.Header.html +3 -3
  80. package/docs/functions/index.HeaderIconAction.html +3 -3
  81. package/docs/functions/index.Icon-1.html +2 -2
  82. package/docs/functions/index.If.html +3 -3
  83. package/docs/functions/index.Input.html +1 -1
  84. package/docs/functions/index.KeyValue.html +2 -2
  85. package/docs/functions/index.Label.html +2 -2
  86. package/docs/functions/index.Line.html +3 -3
  87. package/docs/functions/index.List.html +2 -2
  88. package/docs/functions/index.Loader.html +3 -3
  89. package/docs/functions/index.Loading.html +3 -3
  90. package/docs/functions/index.Message.html +3 -3
  91. package/docs/functions/index.Modal.html +2 -2
  92. package/docs/functions/index.ModalButtons.html +3 -3
  93. package/docs/functions/index.PopLoader.html +3 -3
  94. package/docs/functions/index.PopOption.html +2 -2
  95. package/docs/functions/index.Progress.html +2 -2
  96. package/docs/functions/index.SearchContainer.html +2 -2
  97. package/docs/functions/index.Section.html +4 -4
  98. package/docs/functions/index.Select.html +2 -2
  99. package/docs/functions/index.Selector.html +2 -2
  100. package/docs/functions/index.Spacer.html +2 -2
  101. package/docs/functions/index.Stats.html +2 -2
  102. package/docs/functions/index.StickyHeader.html +4 -4
  103. package/docs/functions/index.Table.html +2 -2
  104. package/docs/functions/index.TextArea.html +2 -2
  105. package/docs/functions/index.TimePicker.html +10 -0
  106. package/docs/functions/index.ToasterProvider.html +3 -3
  107. package/docs/functions/index.Toggle.html +3 -3
  108. package/docs/functions/index.ToolButton.html +3 -3
  109. package/docs/functions/index.Tooltip.html +3 -3
  110. package/docs/functions/index.TooltipProvider.html +2 -2
  111. package/docs/functions/index.borderPxToRem.html +1 -1
  112. package/docs/functions/index.createTheme.html +1 -1
  113. package/docs/functions/index.css.html +1 -1
  114. package/docs/functions/index.dimensionsPxToRem.html +1 -1
  115. package/docs/functions/index.fontPxToRem.html +1 -1
  116. package/docs/functions/index.getCssText.html +1 -1
  117. package/docs/functions/index.globalCss.html +2 -2
  118. package/docs/functions/index.injectGlobalStyles.html +1 -1
  119. package/docs/functions/index.keyframes.html +1 -1
  120. package/docs/functions/index.pxToRem.html +1 -1
  121. package/docs/functions/index.styled.html +1 -1
  122. package/docs/functions/index.toast.html +2 -2
  123. package/docs/functions/index.useToaster.html +1 -1
  124. package/docs/index.html +2 -2
  125. package/docs/interfaces/index.IconProps.html +2 -2
  126. package/docs/interfaces/index.InputCustomProps.html +3 -3
  127. package/docs/interfaces/index.LoaderProps.html +6 -6
  128. package/docs/interfaces/index.StickyHeaderProps.html +4 -4
  129. package/docs/interfaces/index.ToasterProviderProps.html +3 -3
  130. package/docs/interfaces/index.TooltipProps.html +14 -14
  131. package/docs/interfaces/index.TooltipProviderProps.html +5 -5
  132. package/docs/modules/index.html +1 -1
  133. package/docs/modules.html +1 -1
  134. package/docs/types/index.ActionProps.html +1 -1
  135. package/docs/types/index.CardProps.html +1 -1
  136. package/docs/types/index.CheckboxProps.html +2 -2
  137. package/docs/types/index.ChoiceProps.html +1 -1
  138. package/docs/types/index.ColorPickerProps.html +1 -1
  139. package/docs/types/index.DirectionPadProps.html +1 -1
  140. package/docs/types/index.DrawerFrom.html +1 -1
  141. package/docs/types/index.DrawerProps.html +2 -2
  142. package/docs/types/index.EqualActionsProps.html +1 -1
  143. package/docs/types/index.HeaderProps.html +1 -1
  144. package/docs/types/index.InputProps.html +1 -1
  145. package/docs/types/index.KeyValueProps.html +1 -1
  146. package/docs/types/index.LabelProps.html +1 -1
  147. package/docs/types/index.OverwriteProps.html +1 -1
  148. package/docs/types/index.ProgressProps.html +2 -2
  149. package/docs/types/index.SelectProps.html +1 -1
  150. package/docs/types/index.SelectorProps.html +1 -1
  151. package/docs/types/index.Stat.html +1 -1
  152. package/docs/types/index.StatsProps.html +1 -1
  153. package/docs/types/index.TextAreaProps.html +1 -1
  154. package/docs/types/index.ThemeCSS.html +1 -1
  155. package/docs/types/index.TimePickerProps.html +1 -0
  156. package/docs/types/index.ToggleProps.html +2 -2
  157. package/docs/variables/index.ActionBadgeSelector.html +1 -1
  158. package/docs/variables/index.ActionCircleSelector.html +1 -1
  159. package/docs/variables/index.CheckboxCheckmarkWrapperSelector.html +1 -1
  160. package/docs/variables/index.CheckboxTextLabelSelector.html +1 -1
  161. package/docs/variables/index.ChoiceItemSelector.html +1 -1
  162. package/docs/variables/index.ColorPickerColorDisplaySelector.html +1 -1
  163. package/docs/variables/index.DirectionPadButtonDotSelector.html +1 -1
  164. package/docs/variables/index.DirectionPadButtonSelector.html +1 -1
  165. package/docs/variables/index.DirectionPadLineSelector.html +1 -1
  166. package/docs/variables/index.DirectionPadMiddleSelector.html +1 -1
  167. package/docs/variables/index.DrawerContentSelector.html +1 -1
  168. package/docs/variables/index.HeaderAfterSelector.html +1 -1
  169. package/docs/variables/index.HeaderBeforeSelector.html +1 -1
  170. package/docs/variables/index.HeaderContentsSelector.html +1 -1
  171. package/docs/variables/index.HeaderIconActionIconSelector.html +1 -1
  172. package/docs/variables/index.InputContainerSelector.html +1 -1
  173. package/docs/variables/index.InputInputSelector.html +1 -1
  174. package/docs/variables/index.InputLabelSelector.html +1 -1
  175. package/docs/variables/index.InputPrefixSelector.html +1 -1
  176. package/docs/variables/index.InputSuffixSelector.html +1 -1
  177. package/docs/variables/index.KeyValueIconSelector.html +1 -1
  178. package/docs/variables/index.KeyValueItemSelector.html +1 -1
  179. package/docs/variables/index.KeyValueKeySelector.html +1 -1
  180. package/docs/variables/index.KeyValuePairSelector.html +1 -1
  181. package/docs/variables/index.KeyValueValueSelector.html +1 -1
  182. package/docs/variables/index.LabelTextSelector.html +1 -1
  183. package/docs/variables/index.ListItemInnerContainerClassNameSelector.html +1 -1
  184. package/docs/variables/index.ModalContainerSelector.html +1 -1
  185. package/docs/variables/index.ModalRemovePaddingSelector.html +1 -1
  186. package/docs/variables/index.ModalTitleSelector.html +1 -1
  187. package/docs/variables/index.PopListSelector.html +1 -1
  188. package/docs/variables/index.PopOptionButtonSelector.html +1 -1
  189. package/docs/variables/index.PopOptionIconSelector.html +1 -1
  190. package/docs/variables/index.PopOverlaySelector.html +1 -1
  191. package/docs/variables/index.ProgressBackgroundSelector.html +1 -1
  192. package/docs/variables/index.ProgressValueSelector.html +1 -1
  193. package/docs/variables/index.SelectorItemSelector.html +1 -1
  194. package/docs/variables/index.StatsItemSelector.html +1 -1
  195. package/docs/variables/index.StatsLabelSelector.html +1 -1
  196. package/docs/variables/index.StatsSeparatorSelector.html +1 -1
  197. package/docs/variables/index.StatsValueSelector.html +1 -1
  198. package/docs/variables/index.TextAreaLabelSelector.html +1 -1
  199. package/docs/variables/index.TextAreaTextAreaSelector.html +1 -1
  200. package/docs/variables/index.TextAreaWrapperSelector.html +1 -1
  201. package/docs/variables/index.ToggleStyledToggleSelector.html +1 -1
  202. package/docs/variables/index.TooltipContentSelector.html +1 -1
  203. package/docs/variables/index.config.html +1 -1
  204. package/docs/variables/index.cssReset.html +2 -2
  205. package/docs/variables/index.darkTheme.html +1 -1
  206. package/docs/variables/index.miuiScrollbars.html +1 -1
  207. package/docs/variables/index.theme.html +1 -1
  208. package/esm/components/form/index.d.ts +1 -0
  209. package/esm/components/form/index.d.ts.map +1 -1
  210. package/esm/components/form/index.js +1 -0
  211. package/esm/components/form/index.js.map +1 -1
  212. package/esm/components/form/input/Input.d.ts.map +1 -1
  213. package/esm/components/form/input/Input.js +9 -5
  214. package/esm/components/form/input/Input.js.map +1 -1
  215. package/esm/components/form/timepicker/TimePicker.css.d.ts +99 -0
  216. package/esm/components/form/timepicker/TimePicker.css.d.ts.map +1 -0
  217. package/esm/components/form/timepicker/TimePicker.css.js +102 -0
  218. package/esm/components/form/timepicker/TimePicker.css.js.map +1 -0
  219. package/esm/components/form/timepicker/TimePicker.d.ts +22 -0
  220. package/esm/components/form/timepicker/TimePicker.d.ts.map +1 -0
  221. package/esm/components/form/timepicker/TimePicker.js +93 -0
  222. package/esm/components/form/timepicker/TimePicker.js.map +1 -0
  223. package/esm/components/form/timepicker/TimePicker.styled.d.ts +936 -0
  224. package/esm/components/form/timepicker/TimePicker.styled.d.ts.map +1 -0
  225. package/esm/components/form/timepicker/TimePicker.styled.js +20 -0
  226. package/esm/components/form/timepicker/TimePicker.styled.js.map +1 -0
  227. package/esm/components/form/timepicker/TimePickerModal.d.ts +17 -0
  228. package/esm/components/form/timepicker/TimePickerModal.d.ts.map +1 -0
  229. package/esm/components/form/timepicker/TimePickerModal.js +56 -0
  230. package/esm/components/form/timepicker/TimePickerModal.js.map +1 -0
  231. package/esm/components/form/timepicker/Wheel.d.ts +12 -0
  232. package/esm/components/form/timepicker/Wheel.d.ts.map +1 -0
  233. package/esm/components/form/timepicker/Wheel.js +151 -0
  234. package/esm/components/form/timepicker/Wheel.js.map +1 -0
  235. package/esm/components/form/timepicker/utils.d.ts +4 -0
  236. package/esm/components/form/timepicker/utils.d.ts.map +1 -0
  237. package/esm/components/form/timepicker/utils.js +58 -0
  238. package/esm/components/form/timepicker/utils.js.map +1 -0
  239. package/esm/components/icons/Clock.d.ts +7 -0
  240. package/esm/components/icons/Clock.d.ts.map +1 -0
  241. package/esm/components/icons/Clock.js +9 -0
  242. package/esm/components/icons/Clock.js.map +1 -0
  243. package/esm/components/icons/Icon.d.ts +2 -1
  244. package/esm/components/icons/Icon.d.ts.map +1 -1
  245. package/esm/components/icons/Icon.js +3 -0
  246. package/esm/components/icons/Icon.js.map +1 -1
  247. package/esm/components/ui/modal/Modal.d.ts +1 -2
  248. package/esm/components/ui/modal/Modal.d.ts.map +1 -1
  249. package/esm/components/ui/modal/Modal.js +103 -43
  250. package/esm/components/ui/modal/Modal.js.map +1 -1
  251. package/esm/components/ui/modal/Modal.styled.d.ts +1 -1
  252. package/esm/components/ui/modal/Modal.styled.d.ts.map +1 -1
  253. package/esm/components/ui/modal/Modal.styled.js +40 -25
  254. package/esm/components/ui/modal/Modal.styled.js.map +1 -1
  255. package/esm/theme.css-global.d.ts.map +1 -1
  256. package/esm/theme.css-global.js +0 -1
  257. package/esm/theme.css-global.js.map +1 -1
  258. package/esm/utils/index.d.ts +1 -0
  259. package/esm/utils/index.d.ts.map +1 -1
  260. package/esm/utils/index.js +1 -0
  261. package/esm/utils/index.js.map +1 -1
  262. package/esm/utils/useNativeValidity.d.ts +11 -0
  263. package/esm/utils/useNativeValidity.d.ts.map +1 -0
  264. package/esm/utils/useNativeValidity.js +29 -0
  265. package/esm/utils/useNativeValidity.js.map +1 -0
  266. package/package.json +1 -1
  267. package/src/components/form/index.ts +1 -0
  268. package/src/components/form/input/Input.stories.tsx +47 -1
  269. package/src/components/form/input/Input.tsx +11 -5
  270. package/src/components/form/timepicker/TimePicker.css.ts +132 -0
  271. package/src/components/form/timepicker/TimePicker.stories.tsx +107 -0
  272. package/src/components/form/timepicker/TimePicker.styled.ts +52 -0
  273. package/src/components/form/timepicker/TimePicker.tsx +229 -0
  274. package/src/components/form/timepicker/TimePickerModal.tsx +131 -0
  275. package/src/components/form/timepicker/Wheel.tsx +201 -0
  276. package/src/components/form/timepicker/utils.ts +66 -0
  277. package/src/components/icons/Clock.tsx +38 -0
  278. package/src/components/icons/Icon.tsx +3 -0
  279. package/src/components/ui/modal/Modal.stories.tsx +43 -7
  280. package/src/components/ui/modal/Modal.styled.ts +46 -25
  281. package/src/components/ui/modal/Modal.tsx +135 -52
  282. package/src/theme.css-global.ts +0 -1
  283. package/src/utils/index.ts +1 -0
  284. package/src/utils/useNativeValidity.ts +57 -0
@@ -1,49 +1,100 @@
1
- import React, { forwardRef, useCallback, useEffect, useRef, useState } from "react";
1
+ import React, { forwardRef, useCallback, useEffect, useId, useRef, useState } from "react";
2
2
  import { createPortal } from "react-dom";
3
3
  import { useForwardedRef } from "@bedrock-layout/use-forwarded-ref";
4
4
  import { fnWithProps } from "../../../types/fnWithProps.js";
5
+ import { HandleEsc } from "../../utils/HandleEsc.js";
5
6
  import { ContainerStyled, NEGATIVE_PADDING, OverlayStyled, RemovePadding, TitleStyled } from "./Modal.styled.js";
6
- const ModalBase = forwardRef(({ children, onClose, isOpen, title, className, onOverlayClick = "close", closeOnEsc = true, portal = true, position, full, }, ref) => {
7
+ const FOCUSABLE_SELECTOR = [
8
+ "a[href]",
9
+ "button:not([disabled])",
10
+ "input:not([disabled])",
11
+ "select:not([disabled])",
12
+ "textarea:not([disabled])",
13
+ "[tabindex]:not([tabindex=\"-1\"])",
14
+ ].join(",");
15
+ const prefersReducedMotion = () => {
16
+ if (typeof window === "undefined") {
17
+ return false;
18
+ }
19
+ return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
20
+ };
21
+ const ModalBase = forwardRef(({ children, onClose, isOpen, title, className, onOverlayClick = "close", closeOnEsc = true, portal = true, position, full, ...rest }, ref) => {
7
22
  const [isClosing, setIsClosing] = useState(false);
8
23
  const [isRendered, setIsRendered] = useState(false);
9
24
  const overlayRef = useRef(null);
10
25
  const containerRef = useForwardedRef(ref);
26
+ const previouslyFocusedRef = useRef(null);
27
+ const titleId = useId();
11
28
  useEffect(() => {
12
- if (!isOpen || !closeOnEsc) {
29
+ if (isOpen) {
30
+ setIsRendered(true);
31
+ setIsClosing(false);
13
32
  return;
14
33
  }
15
- const onKeyDown = (e) => {
16
- if (e.key === "Escape") {
17
- onClose();
18
- }
19
- };
20
- document.addEventListener("keydown", onKeyDown);
21
- return () => {
22
- document.removeEventListener("keydown", onKeyDown);
23
- };
24
- }, [isOpen, closeOnEsc, onClose]);
25
- useEffect(() => {
26
- if (!isOpen) {
27
- setIsClosing(true);
34
+ if (prefersReducedMotion()) {
35
+ setIsRendered(false);
36
+ setIsClosing(false);
28
37
  return;
29
38
  }
30
- setIsRendered(true);
31
- setIsClosing(false);
39
+ setIsClosing(true);
32
40
  }, [isOpen]);
33
41
  useEffect(() => {
34
42
  if (!isClosing) {
35
43
  return;
36
44
  }
37
- if (!overlayRef.current || !containerRef.current) {
45
+ const overlay = overlayRef.current;
46
+ const container = containerRef.current;
47
+ if (!overlay || !container) {
38
48
  return;
39
49
  }
40
- overlayRef.current.style.animation = "none";
41
- containerRef.current.style.animation = "none";
42
- overlayRef.current.offsetHeight;
43
- overlayRef.current.style.removeProperty("animation");
44
- containerRef.current.style.removeProperty("animation");
50
+ overlay.style.animation = "none";
51
+ container.style.animation = "none";
52
+ overlay.offsetHeight;
53
+ overlay.style.removeProperty("animation");
54
+ container.style.removeProperty("animation");
45
55
  }, [isClosing, containerRef]);
46
- const titleElem = title ? React.createElement(TitleStyled, null, title) : null;
56
+ useEffect(() => {
57
+ var _a;
58
+ if (!isOpen || !isRendered) {
59
+ return;
60
+ }
61
+ const container = containerRef.current;
62
+ const overlay = overlayRef.current;
63
+ if (!container || !overlay) {
64
+ return;
65
+ }
66
+ previouslyFocusedRef.current = document.activeElement instanceof HTMLElement
67
+ ? document.activeElement
68
+ : null;
69
+ const focusables = container.querySelectorAll(FOCUSABLE_SELECTOR);
70
+ ((_a = focusables[0]) !== null && _a !== void 0 ? _a : container).focus();
71
+ const inerted = [];
72
+ let cursor = overlay;
73
+ while (cursor !== document.body) {
74
+ const parentEl = cursor.parentElement;
75
+ if (!parentEl) {
76
+ break;
77
+ }
78
+ for (const child of Array.from(parentEl.children)) {
79
+ if (child === cursor || !(child instanceof HTMLElement)) {
80
+ continue;
81
+ }
82
+ if (!child.hasAttribute("inert")) {
83
+ child.setAttribute("inert", "");
84
+ inerted.push(child);
85
+ }
86
+ }
87
+ cursor = parentEl;
88
+ }
89
+ return () => {
90
+ var _a;
91
+ inerted.forEach((el) => {
92
+ el.removeAttribute("inert");
93
+ });
94
+ (_a = previouslyFocusedRef.current) === null || _a === void 0 ? void 0 : _a.focus();
95
+ };
96
+ }, [isOpen, isRendered, containerRef]);
97
+ const titleElem = title ? React.createElement(TitleStyled, { id: titleId }, title) : null;
47
98
  const handleOverlayClick = useCallback((e) => {
48
99
  if (e.target !== e.currentTarget) {
49
100
  return;
@@ -51,11 +102,14 @@ const ModalBase = forwardRef(({ children, onClose, isOpen, title, className, onO
51
102
  if (onOverlayClick === "close") {
52
103
  onClose();
53
104
  }
54
- if (typeof onOverlayClick === "function") {
105
+ else if (typeof onOverlayClick === "function") {
55
106
  onOverlayClick();
56
107
  }
57
108
  }, [onOverlayClick, onClose]);
58
- const handleAnimationEnd = useCallback(() => {
109
+ const handleAnimationEnd = useCallback((e) => {
110
+ if (e.target !== e.currentTarget) {
111
+ return;
112
+ }
59
113
  if (isOpen) {
60
114
  return;
61
115
  }
@@ -65,31 +119,37 @@ const ModalBase = forwardRef(({ children, onClose, isOpen, title, className, onO
65
119
  return null;
66
120
  }
67
121
  const overlayVariants = {};
68
- isClosing && (overlayVariants.isClosing = true);
69
- position != null && (overlayVariants.position = position);
122
+ if (isClosing) {
123
+ overlayVariants.isClosing = true;
124
+ }
125
+ if (position != null) {
126
+ overlayVariants.position = position;
127
+ }
70
128
  const containerVariants = {};
71
- isClosing && (containerVariants.isClosing = true);
72
- full != null && (containerVariants.full = full);
129
+ if (isClosing) {
130
+ containerVariants.isClosing = true;
131
+ }
132
+ if (full != null) {
133
+ containerVariants.full = full;
134
+ }
73
135
  const childrenCount = React.Children.count(children);
74
136
  const chld = React.Children.map(children, (child, index) => {
75
137
  var _a;
76
- if (React.isValidElement(child)) {
77
- if (child.type === RemovePadding) {
78
- const css = (_a = child.props.css) !== null && _a !== void 0 ? _a : {};
79
- if (index === 0 && titleElem == null) {
80
- css.marginTop = NEGATIVE_PADDING;
81
- }
82
- if (index === childrenCount - 1) {
83
- css.marginBottom = NEGATIVE_PADDING;
84
- }
85
- return React.cloneElement(child, { css });
138
+ if (React.isValidElement(child) && child.type === RemovePadding) {
139
+ const css = { ...((_a = child.props.css) !== null && _a !== void 0 ? _a : {}) };
140
+ if (index === 0 && titleElem == null) {
141
+ css.marginTop = NEGATIVE_PADDING;
142
+ }
143
+ if (index === childrenCount - 1) {
144
+ css.marginBottom = NEGATIVE_PADDING;
86
145
  }
87
- return child;
146
+ return React.cloneElement(child, { css });
88
147
  }
89
148
  return child;
90
149
  });
91
150
  const tree = (React.createElement(OverlayStyled, { ...overlayVariants, onClick: handleOverlayClick, ref: overlayRef, onAnimationEnd: handleAnimationEnd },
92
- React.createElement(ContainerStyled, { className: className, ...containerVariants, ref: containerRef },
151
+ closeOnEsc ? React.createElement(HandleEsc, { onPress: onClose }) : null,
152
+ React.createElement(ContainerStyled, { role: "dialog", "aria-modal": true, "aria-labelledby": titleElem ? titleId : undefined, tabIndex: -1, className: className, ...containerVariants, ref: containerRef, ...rest },
93
153
  titleElem,
94
154
  chld)));
95
155
  if (portal) {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../../src/components/ui/modal/Modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../../src/components/ui/modal/Modal.tsx"],"names":[],"mappings":"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"}
@@ -260,7 +260,7 @@ declare const ContainerStyled: import("../../../../node_modules/@stitches/react/
260
260
  height: string | number;
261
261
  };
262
262
  }>>;
263
- declare const TitleStyled: import("../../../../node_modules/@stitches/react/types/styled-component").StyledComponent<"div", {}, {}, import("../../../../node_modules/@stitches/react/types/css-util").CSS<{}, {
263
+ declare const TitleStyled: import("../../../../node_modules/@stitches/react/types/styled-component").StyledComponent<"h2", {}, {}, import("../../../../node_modules/@stitches/react/types/css-util").CSS<{}, {
264
264
  colors: {
265
265
  background: "white";
266
266
  mainColor: "#008ad2";
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.styled.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/modal/Modal.styled.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB,QAAe,CAAC;AAWtC,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BjB,CAAC;AAaH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEjB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BnB,CAAC;AAEH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKf,CAAC;AAEH,OAAO,EACH,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EAEX,gBAAgB,GACnB,CAAC"}
1
+ {"version":3,"file":"Modal.styled.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/modal/Modal.styled.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB,QAAe,CAAC;AAWtC,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCjB,CAAC;AAaH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEjB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCnB,CAAC;AAEH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAMf,CAAC;AAEH,OAAO,EACH,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EAEX,gBAAgB,GACnB,CAAC"}
@@ -10,19 +10,23 @@ const overlay = keyframes({
10
10
  },
11
11
  });
12
12
  const OverlayStyled = styled("div", {
13
- position: "fixed",
14
- zIndex: 4,
15
- top: 0,
16
- bottom: 0,
17
- left: 0,
18
- right: 0,
19
- display: "flex",
20
- alignItems: "center",
21
- justifyContent: "center",
22
- animation: `${overlay.toString()} 300ms`,
23
- animationFillMode: "forwards",
24
- backdropFilter: "blur(5px)",
25
- variants: {
13
+ "position": "fixed",
14
+ "zIndex": 4,
15
+ "top": 0,
16
+ "bottom": 0,
17
+ "left": 0,
18
+ "right": 0,
19
+ "display": "flex",
20
+ "alignItems": "center",
21
+ "justifyContent": "center",
22
+ "animation": `${overlay.toString()} 300ms`,
23
+ "animationFillMode": "forwards",
24
+ "backdropFilter": "blur(5px)",
25
+ "@media (prefers-reduced-motion: reduce)": {
26
+ animation: "none",
27
+ background: "rgba($background, 0.3)",
28
+ },
29
+ "variants": {
26
30
  position: {
27
31
  bottom: {
28
32
  alignItems: "flex-end",
@@ -50,17 +54,27 @@ const RemovePadding = styled("div", {
50
54
  mx: NEGATIVE_PADDING,
51
55
  });
52
56
  const ContainerStyled = styled("div", {
53
- background: "$modalBg",
54
- borderRadius: dimensionsPxToRem(12),
55
- maxWidth: pxToRem(333),
56
- maxHeight: "100%",
57
- width: "calc(100% - 30px)",
58
- padding: PADDING,
59
- position: "relative",
60
- boxSizing: "border-box",
61
- animation: `${container.toString()} 300ms`,
62
- animationFillMode: "forwards",
63
- variants: {
57
+ "background": "$modalBg",
58
+ "borderRadius": dimensionsPxToRem(12),
59
+ "maxWidth": pxToRem(333),
60
+ "maxHeight": "100%",
61
+ "width": "calc(100% - 30px)",
62
+ "padding": PADDING,
63
+ "position": "relative",
64
+ "boxSizing": "border-box",
65
+ "overflowY": "auto",
66
+ "overscrollBehavior": "contain",
67
+ "animation": `${container.toString()} 300ms`,
68
+ "animationFillMode": "forwards",
69
+ "&:focus": {
70
+ outline: "none",
71
+ },
72
+ "@media (prefers-reduced-motion: reduce)": {
73
+ animation: "none",
74
+ opacity: 1,
75
+ transform: "none",
76
+ },
77
+ "variants": {
64
78
  full: {
65
79
  true: {
66
80
  width: "calc(100vw - 30px)",
@@ -74,11 +88,12 @@ const ContainerStyled = styled("div", {
74
88
  },
75
89
  },
76
90
  });
77
- const TitleStyled = styled("div", {
91
+ const TitleStyled = styled("h2", {
78
92
  fontSize: fontPxToRem(40),
79
93
  textAlign: "center",
80
94
  color: "$text3",
81
95
  margin: `${dimensionsPxToRem(90)} 0`,
96
+ fontWeight: "inherit",
82
97
  });
83
98
  export { OverlayStyled, RemovePadding, ContainerStyled, TitleStyled, NEGATIVE_PADDING, };
84
99
  //# sourceMappingURL=Modal.styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.styled.js","sourceRoot":"","sources":["../../../../src/components/ui/modal/Modal.styled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE5F,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAEtC,MAAM,OAAO,GAAG,SAAS,CAAC;IACtB,IAAI,EAAE;QACF,UAAU,EAAE,sBAAsB;KACrC;IACD,EAAE,EAAE;QACA,UAAU,EAAE,wBAAwB;KACvC;CACJ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE;IAChC,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ;IACxC,iBAAiB,EAAE,UAAU;IAC7B,cAAc,EAAE,WAAW;IAE3B,QAAQ,EAAE;QACN,QAAQ,EAAE;YACN,MAAM,EAAE;gBACJ,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,iBAAiB,CAAC,EAAE,CAAC;aACvC;SACJ;QACD,SAAS,EAAE;YACP,IAAI,EAAE;gBACF,kBAAkB,EAAE,SAAS;aAChC;SACJ;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE;QACF,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,CAAC;KACb;IACD,EAAE,EAAE;QACA,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,CAAC;KACb;CACJ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE;IAChC,EAAE,EAAE,gBAAgB;CACvB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE;IAClC,UAAU,EAAE,UAAU;IACtB,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC;IACtB,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAC1C,iBAAiB,EAAE,UAAU;IAE7B,QAAQ,EAAE;QAEN,IAAI,EAAE;YACF,IAAI,EAAE;gBACF,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC;aACpC;SACJ;QACD,SAAS,EAAE;YACP,IAAI,EAAE;gBACF,kBAAkB,EAAE,SAAS;aAChC;SACJ;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE;IAC9B,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;IACzB,SAAS,EAAE,QAAQ;IACnB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI;CACvC,CAAC,CAAC;AAEH,OAAO,EACH,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EAEX,gBAAgB,GACnB,CAAC"}
1
+ {"version":3,"file":"Modal.styled.js","sourceRoot":"","sources":["../../../../src/components/ui/modal/Modal.styled.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.css-global.d.ts","sourceRoot":"","sources":["../src/theme.css-global.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,kBAAkB,cAYtB,CAAC;AAEH,OAAO,EACH,kBAAkB,GACrB,CAAC"}
1
+ {"version":3,"file":"theme.css-global.d.ts","sourceRoot":"","sources":["../src/theme.css-global.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,kBAAkB,cAWtB,CAAC;AAEH,OAAO,EACH,kBAAkB,GACrB,CAAC"}
@@ -6,7 +6,6 @@ const injectGlobalStyles = globalCss({
6
6
  "*:focus-visible:focus-visible": {
7
7
  outline: "none !important",
8
8
  borderColor: "$focusColor",
9
- backgroundColor: "var(--focus-bg-set)",
10
9
  },
11
10
  "body": {
12
11
  color: "$text",
@@ -1 +1 @@
1
- {"version":3,"file":"theme.css-global.js","sourceRoot":"","sources":["../src/theme.css-global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,kBAAkB,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE;QACP,OAAO,EAAE,iBAAiB;KAC7B;IACD,+BAA+B,EAAE;QAC7B,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,aAAa;QAC1B,eAAe,EAAE,qBAAqB;KACzC;IACD,MAAM,EAAE;QACJ,KAAK,EAAE,OAAO;KACjB;CACJ,CAAC,CAAC;AAEH,OAAO,EACH,kBAAkB,GACrB,CAAC"}
1
+ {"version":3,"file":"theme.css-global.js","sourceRoot":"","sources":["../src/theme.css-global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,kBAAkB,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE;QACP,OAAO,EAAE,iBAAiB;KAC7B;IACD,+BAA+B,EAAE;QAC7B,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,aAAa;KAC7B;IACD,MAAM,EAAE;QACJ,KAAK,EAAE,OAAO;KACjB;CACJ,CAAC,CAAC;AAEH,OAAO,EACH,kBAAkB,GACrB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from "./toObjectValue";
2
2
  export * from "./useKeyPress";
3
+ export * from "./useNativeValidity";
3
4
  export * from "./useTailSpin";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from "./toObjectValue.js";
2
2
  export * from "./useKeyPress.js";
3
+ export * from "./useNativeValidity.js";
3
4
  export * from "./useTailSpin.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type React from "react";
2
+ interface UseNativeValidityResult {
3
+ finalError: boolean;
4
+ onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
5
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
6
+ onInvalid: () => void;
7
+ revalidate: (input: HTMLInputElement | null) => void;
8
+ }
9
+ declare const useNativeValidity: (error: boolean | undefined) => UseNativeValidityResult;
10
+ export { useNativeValidity };
11
+ //# sourceMappingURL=useNativeValidity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNativeValidity.d.ts","sourceRoot":"","sources":["../../src/utils/useNativeValidity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,UAAU,uBAAuB;IAE7B,UAAU,EAAE,OAAO,CAAC;IAEpB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAExD,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAE3D,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB,UAAU,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;CACxD;AASD,QAAA,MAAM,iBAAiB,GAAI,OAAO,OAAO,GAAG,SAAS,KAAG,uBA8BvD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { useCallback, useState } from "react";
2
+ const useNativeValidity = (error) => {
3
+ const [nativeInvalid, setNativeInvalid] = useState(false);
4
+ const onBlur = useCallback((e) => {
5
+ setNativeInvalid(!e.currentTarget.checkValidity());
6
+ }, []);
7
+ const onChange = useCallback((e) => {
8
+ if (e.currentTarget.checkValidity()) {
9
+ setNativeInvalid(false);
10
+ }
11
+ }, []);
12
+ const onInvalid = useCallback(() => {
13
+ setNativeInvalid(true);
14
+ }, []);
15
+ const revalidate = useCallback((input) => {
16
+ if (input === null || input === void 0 ? void 0 : input.checkValidity()) {
17
+ setNativeInvalid(false);
18
+ }
19
+ }, []);
20
+ return {
21
+ finalError: Boolean(error) || nativeInvalid,
22
+ onBlur,
23
+ onChange,
24
+ onInvalid,
25
+ revalidate,
26
+ };
27
+ };
28
+ export { useNativeValidity };
29
+ //# sourceMappingURL=useNativeValidity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNativeValidity.js","sourceRoot":"","sources":["../../src/utils/useNativeValidity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAwB9C,MAAM,iBAAiB,GAAG,CAAC,KAA0B,EAA2B,EAAE;IAC9E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAqC,EAAE,EAAE;QACjE,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAsC,EAAE,EAAE;QACpE,IAAI,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;YAClC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,KAA8B,EAAE,EAAE;QAC9D,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,EAAE,EAAE,CAAC;YACzB,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,aAAa;QAC3C,MAAM;QACN,QAAQ;QACR,SAAS;QACT,UAAU;KACb,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-miui",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "author": "Jacek Nowacki",
5
5
  "license": "MIT",
6
6
  "exports": {
@@ -1 +1,2 @@
1
1
  export * from "./input/Input";
2
+ export * from "./timepicker/TimePicker";
@@ -103,8 +103,54 @@ const InputRef: Story = {
103
103
  },
104
104
  };
105
105
 
106
+ const Validation: Story = {
107
+ render: () => {
108
+ const [submitted, setSubmitted] = React.useState<Record<string, string> | null>(null);
109
+ return (
110
+ <form
111
+ onSubmit={(e) => {
112
+ e.preventDefault();
113
+ const data = new FormData(e.currentTarget);
114
+ const result: Record<string, string> = {};
115
+ data.forEach((v, k) => {
116
+ if (typeof v === "string") {
117
+ result[k] = v;
118
+ }
119
+ });
120
+ setSubmitted(result);
121
+ }}
122
+ >
123
+ <Gap>
124
+ <div>
125
+ {"Every input reads native validity (pattern / required / type)."
126
+ + " Type something, blur the field or hit Submit — invalid fields turn red on their own."}
127
+ </div>
128
+ <Input name={"email"} label={"Email"} type={"email"} required={true} />
129
+ <Input name={"required"} label={"Required text"} required={true} />
130
+ <Input
131
+ name={"digits"}
132
+ label={"4 digits only"}
133
+ pattern={"\\d{4}"}
134
+ placeholder={"1234"}
135
+ />
136
+ <Input
137
+ name={"short"}
138
+ label={"Min 5 characters"}
139
+ minLength={5}
140
+ defaultValue={"abc"}
141
+ />
142
+ <Button type={"submit"}>{"Submit"}</Button>
143
+ {submitted
144
+ ? <div>{"Submitted: " + JSON.stringify(submitted)}</div>
145
+ : null}
146
+ </Gap>
147
+ </form>
148
+ );
149
+ },
150
+ };
151
+
106
152
  export {
107
- Primary, Mixed, WithLabel, FloatingLabel, InputRef,
153
+ Primary, Mixed, WithLabel, FloatingLabel, InputRef, Validation,
108
154
  };
109
155
 
110
156
  export default meta;
@@ -2,6 +2,7 @@ import React, { useCallback, useId, useRef, useState } from "react";
2
2
 
3
3
  import type { ObjectValue, Value } from "../../../types/form";
4
4
 
5
+ import { useNativeValidity } from "../../../utils";
5
6
  import { Suggestions } from "../Suggestions";
6
7
  import {
7
8
  StyledInput,
@@ -53,6 +54,8 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
53
54
  const isControlled = props.value !== undefined;
54
55
  const hasValue = isControlled ? Boolean(props.value) : internalHasValue;
55
56
 
57
+ const validity = useNativeValidity(error);
58
+
56
59
  const suggestionsId = useId();
57
60
  const generatedInputId = useId();
58
61
  const inputId = id ?? (label ? generatedInputId : undefined);
@@ -65,8 +68,9 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
65
68
 
66
69
  const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {
67
70
  setFocused(false);
71
+ validity.onBlur(e);
68
72
  onBlur?.(e);
69
- }, [onBlur]);
73
+ }, [onBlur, validity]);
70
74
 
71
75
  const handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = useCallback((e) => {
72
76
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
@@ -80,6 +84,7 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
80
84
  if (!isControlled) {
81
85
  setInternalHasValue(Boolean(e.currentTarget.value));
82
86
  }
87
+ validity.onChange(e);
83
88
  if (!suggestions) {
84
89
  onChange?.(e);
85
90
  return;
@@ -96,7 +101,7 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
96
101
  }
97
102
  infoRef.current.picked = false;
98
103
  onChange?.(e);
99
- }, [isControlled, suggestions, onChange, onSuggestionMatch]);
104
+ }, [isControlled, suggestions, onChange, onSuggestionMatch, validity]);
100
105
 
101
106
  const prefixElem = prefix ? <StyledPrefix>{prefix}</StyledPrefix> : null;
102
107
  const suffixElem = suffix ? <StyledSuffix>{suffix}</StyledSuffix> : null;
@@ -115,7 +120,7 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
115
120
  <StyledLabel
116
121
  htmlFor={inputId}
117
122
  floating={floating}
118
- error={Boolean(error)}
123
+ error={validity.finalError}
119
124
  >
120
125
  {label}
121
126
  </StyledLabel>
@@ -128,7 +133,7 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
128
133
  focused={focused}
129
134
  disabled={Boolean(props.disabled)}
130
135
  readOnly={Boolean(props.readOnly)}
131
- error={Boolean(error)}
136
+ error={validity.finalError}
132
137
  >
133
138
  {prefixElem}
134
139
  <StyledInputContainer>
@@ -143,7 +148,8 @@ const InputInner = <T extends string>({ // eslint-disable-line max-lines-per-fun
143
148
  onKeyDown={handleKeyDown}
144
149
  onFocus={handleFocus}
145
150
  onBlur={handleBlur}
146
- data-error={Boolean(error)}
151
+ onInvalid={validity.onInvalid}
152
+ data-error={validity.finalError}
147
153
  />
148
154
  <Suggestions id={suggestionsId} suggestions={suggestions} />
149
155
  </StyledInputContainer>