@quen-ui/components 0.0.14

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 (337) hide show
  1. package/README.md +43 -0
  2. package/dist/Alert/Alert.cjs.js +54 -0
  3. package/dist/Alert/Alert.d.ts +4 -0
  4. package/dist/Alert/Alert.es.js +55 -0
  5. package/dist/Alert/index.d.ts +2 -0
  6. package/dist/Alert/styles.cjs.js +90 -0
  7. package/dist/Alert/styles.d.ts +10 -0
  8. package/dist/Alert/styles.es.js +90 -0
  9. package/dist/Alert/types.d.ts +25 -0
  10. package/dist/Avatar/Avatar.cjs.js +65 -0
  11. package/dist/Avatar/Avatar.d.ts +4 -0
  12. package/dist/Avatar/Avatar.es.js +66 -0
  13. package/dist/Avatar/AvatarIcon.svg.cjs.js +21 -0
  14. package/dist/Avatar/AvatarIcon.svg.es.js +5 -0
  15. package/dist/Avatar/helpers.cjs.js +18 -0
  16. package/dist/Avatar/helpers.d.ts +1 -0
  17. package/dist/Avatar/helpers.es.js +18 -0
  18. package/dist/Avatar/index.d.ts +2 -0
  19. package/dist/Avatar/styles.cjs.js +31 -0
  20. package/dist/Avatar/styles.d.ts +9 -0
  21. package/dist/Avatar/styles.es.js +31 -0
  22. package/dist/Avatar/types.d.ts +31 -0
  23. package/dist/Badge/Badge.cjs.js +53 -0
  24. package/dist/Badge/Badge.d.ts +4 -0
  25. package/dist/Badge/Badge.es.js +54 -0
  26. package/dist/Badge/index.d.ts +3 -0
  27. package/dist/Badge/styles.cjs.js +70 -0
  28. package/dist/Badge/styles.d.ts +7 -0
  29. package/dist/Badge/styles.es.js +70 -0
  30. package/dist/Badge/types.cjs.js +10 -0
  31. package/dist/Badge/types.d.ts +22 -0
  32. package/dist/Badge/types.es.js +10 -0
  33. package/dist/Breadcrumbs/BreadcrumbItem.cjs.js +42 -0
  34. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +4 -0
  35. package/dist/Breadcrumbs/BreadcrumbItem.es.js +43 -0
  36. package/dist/Breadcrumbs/Breadcrumbs.cjs.js +48 -0
  37. package/dist/Breadcrumbs/Breadcrumbs.d.ts +4 -0
  38. package/dist/Breadcrumbs/Breadcrumbs.es.js +49 -0
  39. package/dist/Breadcrumbs/helpers.cjs.js +18 -0
  40. package/dist/Breadcrumbs/helpers.d.ts +16 -0
  41. package/dist/Breadcrumbs/helpers.es.js +18 -0
  42. package/dist/Breadcrumbs/index.d.ts +2 -0
  43. package/dist/Breadcrumbs/styles.cjs.js +50 -0
  44. package/dist/Breadcrumbs/styles.d.ts +4 -0
  45. package/dist/Breadcrumbs/styles.es.js +50 -0
  46. package/dist/Breadcrumbs/types.d.ts +56 -0
  47. package/dist/Button/Button.cjs.js +66 -0
  48. package/dist/Button/Button.d.ts +4 -0
  49. package/dist/Button/Button.es.js +67 -0
  50. package/dist/Button/index.d.ts +2 -0
  51. package/dist/Button/styles.cjs.js +177 -0
  52. package/dist/Button/styles.d.ts +7 -0
  53. package/dist/Button/styles.es.js +177 -0
  54. package/dist/Button/types.d.ts +38 -0
  55. package/dist/Card/Card.cjs.js +38 -0
  56. package/dist/Card/Card.d.ts +3 -0
  57. package/dist/Card/Card.es.js +39 -0
  58. package/dist/Card/index.d.ts +2 -0
  59. package/dist/Card/styles.cjs.js +55 -0
  60. package/dist/Card/styles.d.ts +11 -0
  61. package/dist/Card/styles.es.js +55 -0
  62. package/dist/Card/types.d.ts +26 -0
  63. package/dist/Checkbox/Checkbox.cjs.js +39 -0
  64. package/dist/Checkbox/Checkbox.d.ts +4 -0
  65. package/dist/Checkbox/Checkbox.es.js +40 -0
  66. package/dist/Checkbox/CheckboxGroup.cjs.js +82 -0
  67. package/dist/Checkbox/CheckboxGroup.d.ts +4 -0
  68. package/dist/Checkbox/CheckboxGroup.es.js +83 -0
  69. package/dist/Checkbox/helpers.cjs.js +14 -0
  70. package/dist/Checkbox/helpers.d.ts +18 -0
  71. package/dist/Checkbox/helpers.es.js +14 -0
  72. package/dist/Checkbox/index.cjs.js +7 -0
  73. package/dist/Checkbox/index.d.ts +8 -0
  74. package/dist/Checkbox/index.es.js +7 -0
  75. package/dist/Checkbox/styles.cjs.js +147 -0
  76. package/dist/Checkbox/styles.d.ts +13 -0
  77. package/dist/Checkbox/styles.es.js +147 -0
  78. package/dist/Checkbox/types.d.ts +67 -0
  79. package/dist/Divider/Divider.cjs.js +27 -0
  80. package/dist/Divider/Divider.d.ts +4 -0
  81. package/dist/Divider/Divider.es.js +28 -0
  82. package/dist/Divider/index.d.ts +2 -0
  83. package/dist/Divider/styles.cjs.js +121 -0
  84. package/dist/Divider/styles.d.ts +3 -0
  85. package/dist/Divider/styles.es.js +121 -0
  86. package/dist/Divider/types.d.ts +17 -0
  87. package/dist/Drawer/Drawer.cjs.js +67 -0
  88. package/dist/Drawer/Drawer.d.ts +4 -0
  89. package/dist/Drawer/Drawer.es.js +68 -0
  90. package/dist/Drawer/index.d.ts +2 -0
  91. package/dist/Drawer/styles.cjs.js +85 -0
  92. package/dist/Drawer/styles.d.ts +18 -0
  93. package/dist/Drawer/styles.es.js +85 -0
  94. package/dist/Drawer/types.d.ts +24 -0
  95. package/dist/Dropdown/Dropdown.cjs.js +65 -0
  96. package/dist/Dropdown/Dropdown.d.ts +4 -0
  97. package/dist/Dropdown/Dropdown.es.js +66 -0
  98. package/dist/Dropdown/DropdownItem.cjs.js +32 -0
  99. package/dist/Dropdown/DropdownItem.d.ts +4 -0
  100. package/dist/Dropdown/DropdownItem.es.js +33 -0
  101. package/dist/Dropdown/DropdownList.cjs.js +85 -0
  102. package/dist/Dropdown/DropdownList.d.ts +6 -0
  103. package/dist/Dropdown/DropdownList.es.js +86 -0
  104. package/dist/Dropdown/DropdownPortal.cjs.js +41 -0
  105. package/dist/Dropdown/DropdownPortal.d.ts +4 -0
  106. package/dist/Dropdown/DropdownPortal.es.js +42 -0
  107. package/dist/Dropdown/helpers.cjs.js +112 -0
  108. package/dist/Dropdown/helpers.d.ts +35 -0
  109. package/dist/Dropdown/helpers.es.js +112 -0
  110. package/dist/Dropdown/index.d.ts +2 -0
  111. package/dist/Dropdown/styles.cjs.js +150 -0
  112. package/dist/Dropdown/styles.d.ts +33 -0
  113. package/dist/Dropdown/styles.es.js +150 -0
  114. package/dist/Dropdown/types.d.ts +81 -0
  115. package/dist/Flex/Flex.cjs.js +10 -0
  116. package/dist/Flex/Flex.d.ts +4 -0
  117. package/dist/Flex/Flex.es.js +11 -0
  118. package/dist/Flex/index.d.ts +2 -0
  119. package/dist/Flex/styles.cjs.js +32 -0
  120. package/dist/Flex/styles.d.ts +2 -0
  121. package/dist/Flex/styles.es.js +32 -0
  122. package/dist/Flex/types.d.ts +23 -0
  123. package/dist/Image/Image.cjs.js +79 -0
  124. package/dist/Image/Image.d.ts +4 -0
  125. package/dist/Image/Image.es.js +80 -0
  126. package/dist/Image/index.d.ts +2 -0
  127. package/dist/Image/styles.cjs.js +87 -0
  128. package/dist/Image/styles.d.ts +13 -0
  129. package/dist/Image/styles.es.js +87 -0
  130. package/dist/Image/types.d.ts +20 -0
  131. package/dist/InputNumber/InputNumber.cjs.js +145 -0
  132. package/dist/InputNumber/InputNumber.d.ts +4 -0
  133. package/dist/InputNumber/InputNumber.es.js +146 -0
  134. package/dist/InputNumber/index.d.ts +2 -0
  135. package/dist/InputNumber/styles.cjs.js +136 -0
  136. package/dist/InputNumber/styles.d.ts +21 -0
  137. package/dist/InputNumber/styles.es.js +136 -0
  138. package/dist/InputNumber/types.d.ts +61 -0
  139. package/dist/Layout/Content.cjs.js +7 -0
  140. package/dist/Layout/Content.d.ts +4 -0
  141. package/dist/Layout/Content.es.js +8 -0
  142. package/dist/Layout/Footer.cjs.js +7 -0
  143. package/dist/Layout/Footer.d.ts +4 -0
  144. package/dist/Layout/Footer.es.js +8 -0
  145. package/dist/Layout/Header.cjs.js +47 -0
  146. package/dist/Layout/Header.d.ts +4 -0
  147. package/dist/Layout/Header.es.js +48 -0
  148. package/dist/Layout/Layout.cjs.js +49 -0
  149. package/dist/Layout/Layout.d.ts +5 -0
  150. package/dist/Layout/Layout.es.js +49 -0
  151. package/dist/Layout/Sidebar.cjs.js +57 -0
  152. package/dist/Layout/Sidebar.d.ts +4 -0
  153. package/dist/Layout/Sidebar.es.js +58 -0
  154. package/dist/Layout/index.cjs.js +13 -0
  155. package/dist/Layout/index.d.ts +14 -0
  156. package/dist/Layout/index.es.js +13 -0
  157. package/dist/Layout/styles.cjs.js +150 -0
  158. package/dist/Layout/styles.d.ts +32 -0
  159. package/dist/Layout/styles.es.js +150 -0
  160. package/dist/Layout/types.d.ts +75 -0
  161. package/dist/Loader/Loader.cjs.js +34 -0
  162. package/dist/Loader/Loader.d.ts +4 -0
  163. package/dist/Loader/Loader.es.js +35 -0
  164. package/dist/Loader/index.d.ts +2 -0
  165. package/dist/Loader/loaders/Bars.cjs.js +12 -0
  166. package/dist/Loader/loaders/Bars.d.ts +6 -0
  167. package/dist/Loader/loaders/Bars.es.js +13 -0
  168. package/dist/Loader/loaders/Dots.cjs.js +12 -0
  169. package/dist/Loader/loaders/Dots.d.ts +6 -0
  170. package/dist/Loader/loaders/Dots.es.js +13 -0
  171. package/dist/Loader/loaders/Oval.cjs.js +8 -0
  172. package/dist/Loader/loaders/Oval.d.ts +6 -0
  173. package/dist/Loader/loaders/Oval.es.js +9 -0
  174. package/dist/Loader/styles.cjs.js +95 -0
  175. package/dist/Loader/styles.d.ts +9 -0
  176. package/dist/Loader/styles.es.js +95 -0
  177. package/dist/Loader/types.d.ts +11 -0
  178. package/dist/Modal/Modal.cjs.js +67 -0
  179. package/dist/Modal/Modal.d.ts +4 -0
  180. package/dist/Modal/Modal.es.js +68 -0
  181. package/dist/Modal/index.d.ts +2 -0
  182. package/dist/Modal/styles.cjs.js +52 -0
  183. package/dist/Modal/styles.d.ts +14 -0
  184. package/dist/Modal/styles.es.js +52 -0
  185. package/dist/Modal/types.d.ts +31 -0
  186. package/dist/Notification/Notification.cjs.js +73 -0
  187. package/dist/Notification/Notification.d.ts +4 -0
  188. package/dist/Notification/Notification.es.js +74 -0
  189. package/dist/Notification/NotificationInstance.cjs.js +244 -0
  190. package/dist/Notification/NotificationInstance.d.ts +8 -0
  191. package/dist/Notification/NotificationInstance.es.js +244 -0
  192. package/dist/Notification/NotificationsStore.cjs.js +30 -0
  193. package/dist/Notification/NotificationsStore.d.ts +13 -0
  194. package/dist/Notification/NotificationsStore.es.js +31 -0
  195. package/dist/Notification/index.d.ts +3 -0
  196. package/dist/Notification/styles.cjs.js +90 -0
  197. package/dist/Notification/styles.d.ts +8 -0
  198. package/dist/Notification/styles.es.js +90 -0
  199. package/dist/Notification/types.cjs.js +9 -0
  200. package/dist/Notification/types.d.ts +41 -0
  201. package/dist/Notification/types.es.js +9 -0
  202. package/dist/Progress/Progress.cjs.js +43 -0
  203. package/dist/Progress/Progress.d.ts +4 -0
  204. package/dist/Progress/Progress.es.js +44 -0
  205. package/dist/Progress/index.d.ts +2 -0
  206. package/dist/Progress/styles.cjs.js +82 -0
  207. package/dist/Progress/styles.d.ts +13 -0
  208. package/dist/Progress/styles.es.js +82 -0
  209. package/dist/Progress/types.d.ts +20 -0
  210. package/dist/RadioButton/RadioButton.cjs.js +45 -0
  211. package/dist/RadioButton/RadioButton.d.ts +4 -0
  212. package/dist/RadioButton/RadioButton.es.js +46 -0
  213. package/dist/RadioButton/RadioButtonGroup.cjs.js +68 -0
  214. package/dist/RadioButton/RadioButtonGroup.d.ts +4 -0
  215. package/dist/RadioButton/RadioButtonGroup.es.js +69 -0
  216. package/dist/RadioButton/helpers.cjs.js +14 -0
  217. package/dist/RadioButton/helpers.d.ts +18 -0
  218. package/dist/RadioButton/helpers.es.js +14 -0
  219. package/dist/RadioButton/index.cjs.js +7 -0
  220. package/dist/RadioButton/index.d.ts +8 -0
  221. package/dist/RadioButton/index.es.js +7 -0
  222. package/dist/RadioButton/styles.cjs.js +84 -0
  223. package/dist/RadioButton/styles.d.ts +12 -0
  224. package/dist/RadioButton/styles.es.js +84 -0
  225. package/dist/RadioButton/types.d.ts +65 -0
  226. package/dist/Select/Select.cjs.js +114 -0
  227. package/dist/Select/Select.d.ts +4 -0
  228. package/dist/Select/Select.es.js +115 -0
  229. package/dist/Select/helpers.cjs.js +16 -0
  230. package/dist/Select/helpers.d.ts +138 -0
  231. package/dist/Select/helpers.es.js +16 -0
  232. package/dist/Select/index.d.ts +2 -0
  233. package/dist/Select/styles.cjs.js +415 -0
  234. package/dist/Select/styles.d.ts +9 -0
  235. package/dist/Select/styles.es.js +415 -0
  236. package/dist/Select/types.d.ts +116 -0
  237. package/dist/Select/useSelect.cjs.js +72 -0
  238. package/dist/Select/useSelect.d.ts +150 -0
  239. package/dist/Select/useSelect.es.js +72 -0
  240. package/dist/Switch/Switch.cjs.js +53 -0
  241. package/dist/Switch/Switch.d.ts +4 -0
  242. package/dist/Switch/Switch.es.js +54 -0
  243. package/dist/Switch/index.d.ts +2 -0
  244. package/dist/Switch/styles.cjs.js +78 -0
  245. package/dist/Switch/styles.d.ts +7 -0
  246. package/dist/Switch/styles.es.js +78 -0
  247. package/dist/Switch/types.d.ts +25 -0
  248. package/dist/Tabs/Tab.cjs.js +42 -0
  249. package/dist/Tabs/Tab.d.ts +4 -0
  250. package/dist/Tabs/Tab.es.js +43 -0
  251. package/dist/Tabs/TabPanel.cjs.js +14 -0
  252. package/dist/Tabs/TabPanel.d.ts +4 -0
  253. package/dist/Tabs/TabPanel.es.js +15 -0
  254. package/dist/Tabs/Tabs.cjs.js +21 -0
  255. package/dist/Tabs/Tabs.d.ts +5 -0
  256. package/dist/Tabs/Tabs.es.js +21 -0
  257. package/dist/Tabs/TabsList.cjs.js +12 -0
  258. package/dist/Tabs/TabsList.d.ts +4 -0
  259. package/dist/Tabs/TabsList.es.js +13 -0
  260. package/dist/Tabs/index.cjs.js +10 -0
  261. package/dist/Tabs/index.d.ts +12 -0
  262. package/dist/Tabs/index.es.js +11 -0
  263. package/dist/Tabs/styles.cjs.js +74 -0
  264. package/dist/Tabs/styles.d.ts +9 -0
  265. package/dist/Tabs/styles.es.js +74 -0
  266. package/dist/Tabs/types.d.ts +51 -0
  267. package/dist/Tag/Tag.cjs.js +39 -0
  268. package/dist/Tag/Tag.d.ts +4 -0
  269. package/dist/Tag/Tag.es.js +40 -0
  270. package/dist/Tag/index.d.ts +2 -0
  271. package/dist/Tag/styles.cjs.js +51 -0
  272. package/dist/Tag/styles.d.ts +6 -0
  273. package/dist/Tag/styles.es.js +51 -0
  274. package/dist/Tag/types.d.ts +18 -0
  275. package/dist/TextField/TextField.cjs.js +100 -0
  276. package/dist/TextField/TextField.d.ts +4 -0
  277. package/dist/TextField/TextField.es.js +101 -0
  278. package/dist/TextField/index.d.ts +2 -0
  279. package/dist/TextField/styles.cjs.js +65 -0
  280. package/dist/TextField/styles.d.ts +9 -0
  281. package/dist/TextField/styles.es.js +65 -0
  282. package/dist/TextField/types.d.ts +41 -0
  283. package/dist/Textarea/Textarea.cjs.js +103 -0
  284. package/dist/Textarea/Textarea.d.ts +4 -0
  285. package/dist/Textarea/Textarea.es.js +104 -0
  286. package/dist/Textarea/index.d.ts +2 -0
  287. package/dist/Textarea/styles.cjs.js +80 -0
  288. package/dist/Textarea/styles.d.ts +9 -0
  289. package/dist/Textarea/styles.es.js +80 -0
  290. package/dist/Textarea/types.d.ts +47 -0
  291. package/dist/Tooltip/Tooltip.cjs.js +69 -0
  292. package/dist/Tooltip/Tooltip.d.ts +4 -0
  293. package/dist/Tooltip/Tooltip.es.js +70 -0
  294. package/dist/Tooltip/index.d.ts +2 -0
  295. package/dist/Tooltip/styles.cjs.js +232 -0
  296. package/dist/Tooltip/styles.d.ts +13 -0
  297. package/dist/Tooltip/styles.es.js +232 -0
  298. package/dist/Tooltip/types.d.ts +22 -0
  299. package/dist/assets/icon-arrow-bottom.svg.cjs.js +21 -0
  300. package/dist/assets/icon-arrow-bottom.svg.es.js +5 -0
  301. package/dist/assets/icon-close.svg.cjs.js +21 -0
  302. package/dist/assets/icon-close.svg.es.js +5 -0
  303. package/dist/assets/icon-error.svg.cjs.js +21 -0
  304. package/dist/assets/icon-error.svg.es.js +5 -0
  305. package/dist/assets/icon-info.svg.cjs.js +21 -0
  306. package/dist/assets/icon-info.svg.es.js +5 -0
  307. package/dist/assets/icon-lines.svg.cjs.js +21 -0
  308. package/dist/assets/icon-lines.svg.es.js +5 -0
  309. package/dist/assets/icon-success.svg.cjs.js +21 -0
  310. package/dist/assets/icon-success.svg.es.js +5 -0
  311. package/dist/assets/icon-warning.svg.cjs.js +21 -0
  312. package/dist/assets/icon-warning.svg.es.js +5 -0
  313. package/dist/constants/index.d.ts +1 -0
  314. package/dist/index.cjs.js +63 -0
  315. package/dist/index.d.ts +50 -0
  316. package/dist/index.es.js +63 -0
  317. package/dist/types/propsWithAttributes.d.ts +2 -0
  318. package/dist/types/size.d.ts +2 -0
  319. package/dist/typography/Text/Text.cjs.js +31 -0
  320. package/dist/typography/Text/Text.d.ts +4 -0
  321. package/dist/typography/Text/Text.es.js +32 -0
  322. package/dist/typography/Text/__stories__/Text.stories.d.ts +9 -0
  323. package/dist/typography/Text/index.d.ts +2 -0
  324. package/dist/typography/Text/styles.cjs.js +69 -0
  325. package/dist/typography/Text/styles.d.ts +2 -0
  326. package/dist/typography/Text/styles.es.js +69 -0
  327. package/dist/typography/Text/types.d.ts +22 -0
  328. package/dist/typography/Title/Title.cjs.js +26 -0
  329. package/dist/typography/Title/Title.d.ts +4 -0
  330. package/dist/typography/Title/Title.es.js +27 -0
  331. package/dist/typography/Title/__stories__/Title.stories.d.ts +9 -0
  332. package/dist/typography/Title/index.d.ts +2 -0
  333. package/dist/typography/Title/styles.cjs.js +75 -0
  334. package/dist/typography/Title/styles.d.ts +2 -0
  335. package/dist/typography/Title/styles.es.js +75 -0
  336. package/dist/typography/Title/types.d.ts +22 -0
  337. package/package.json +71 -0
@@ -0,0 +1,68 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from "react";
3
+ import { createPortal } from "react-dom";
4
+ import { useTransitionState } from "react-transition-state";
5
+ import { useOnClickOutside } from "@quen-ui/hooks";
6
+ import { DrawerWrapper, DrawerStyled, DrawerTitleWrapper } from "./styles.es.js";
7
+ import Divider from "../Divider/Divider.es.js";
8
+ import Title from "../typography/Title/Title.es.js";
9
+ import Button from "../Button/Button.es.js";
10
+ import SvgIconClose from "../assets/icon-close.svg.es.js";
11
+ const Drawer = ({
12
+ open,
13
+ children,
14
+ position = "left",
15
+ size = "m",
16
+ zIndex,
17
+ noCloseOnClickOutside = false,
18
+ onClose,
19
+ title,
20
+ className,
21
+ closeIcon
22
+ }) => {
23
+ const [container, setContainer] = useState(null);
24
+ const [state, toggle] = useTransitionState({
25
+ timeout: 500,
26
+ unmountOnExit: true,
27
+ initialEntered: open
28
+ });
29
+ const refWrapper = useRef(null);
30
+ useOnClickOutside(refWrapper, () => !noCloseOnClickOutside && (onClose == null ? void 0 : onClose()));
31
+ useEffect(() => {
32
+ toggle(open);
33
+ }, [open]);
34
+ useEffect(() => {
35
+ const container2 = document.getElementsByTagName("body").item(0);
36
+ setContainer(container2);
37
+ }, []);
38
+ if (state.isEnter && container) {
39
+ return createPortal(
40
+ /* @__PURE__ */ jsx(DrawerWrapper, { zIndex, children: /* @__PURE__ */ jsxs(
41
+ DrawerStyled,
42
+ {
43
+ role: "dialog",
44
+ size,
45
+ position,
46
+ ref: refWrapper,
47
+ status: state.status,
48
+ className,
49
+ children: [
50
+ title && /* @__PURE__ */ jsxs(Fragment, { children: [
51
+ /* @__PURE__ */ jsxs(DrawerTitleWrapper, { children: [
52
+ /* @__PURE__ */ jsx(Title, { size: "s", children: title }),
53
+ /* @__PURE__ */ jsx(Button, { view: "icon", size: "xs", onClick: onClose, children: closeIcon || /* @__PURE__ */ jsx(SvgIconClose, {}) })
54
+ ] }),
55
+ /* @__PURE__ */ jsx(Divider, { direction: "horizontal" })
56
+ ] }),
57
+ /* @__PURE__ */ jsx("div", { className: "quen-ui-drawer--content", children })
58
+ ]
59
+ }
60
+ ) }),
61
+ container
62
+ );
63
+ }
64
+ return null;
65
+ };
66
+ export {
67
+ Drawer as default
68
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Drawer } from './Drawer';
2
+ export type { IDrawerProps } from './types';
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const styled = require("styled-components");
4
+ const polished = require("polished");
5
+ const DrawerWrapper = styled.div`
6
+ position: fixed;
7
+ top: 0;
8
+ left: 0;
9
+ right: 0;
10
+ bottom: 0;
11
+ z-index: ${({ zIndex }) => zIndex || 1e3};
12
+ background: ${({ theme }) => polished.rgba(theme.colors.grayViolet[2], 0.7)};
13
+ `;
14
+ const sizes = {
15
+ xs: "240px",
16
+ s: "320px",
17
+ m: "360px",
18
+ l: "500px",
19
+ full: "100%"
20
+ };
21
+ const getPosition = (position, size) => {
22
+ switch (position) {
23
+ case "left":
24
+ return styled.css`
25
+ bottom: 0;
26
+ top: 0;
27
+ left: 0;
28
+ width: ${sizes[size]};
29
+ `;
30
+ case "right":
31
+ return styled.css`
32
+ bottom: 0;
33
+ top: 0;
34
+ right: 0;
35
+ width: ${sizes[size]};
36
+ `;
37
+ case "top":
38
+ return styled.css`
39
+ top: 0;
40
+ left: 0;
41
+ right: 0;
42
+ height: ${sizes[size]};
43
+ `;
44
+ case "bottom":
45
+ return styled.css`
46
+ bottom: 0;
47
+ left: 0;
48
+ right: 0;
49
+ height: ${sizes[size]};
50
+ `;
51
+ default:
52
+ return null;
53
+ }
54
+ };
55
+ const DrawerStyled = styled.div`
56
+ ${({ size, position }) => getPosition(position, size)};
57
+ max-width: 100%;
58
+ max-height: 100vh;
59
+ position: fixed;
60
+ outline: 0;
61
+ background: ${({ theme }) => theme.colors.grayViolet[2]};
62
+
63
+ ${({ status }) => (status === "preEnter" || status === "exiting") && ` opacity: 0;
64
+ transform: scale(0.5);
65
+ `};
66
+
67
+ display: flex;
68
+ flex-direction: column;
69
+ gap: ${({ theme }) => theme.space.xs};
70
+
71
+ .quen-ui-drawer--content {
72
+ padding: 0.5rem;
73
+ overflow: auto;
74
+ }
75
+ `;
76
+ const DrawerTitleWrapper = styled.div`
77
+ padding: 0.5rem;
78
+ display: flex;
79
+ justify-content: space-between;
80
+ align-items: center;
81
+ `;
82
+ exports.DrawerStyled = DrawerStyled;
83
+ exports.DrawerTitleWrapper = DrawerTitleWrapper;
84
+ exports.DrawerWrapper = DrawerWrapper;
85
+ exports.sizes = sizes;
@@ -0,0 +1,18 @@
1
+ import { TransitionStatus } from 'react-transition-state';
2
+ import { IDrawerProps } from './types';
3
+ export declare const DrawerWrapper: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
4
+ zIndex?: number;
5
+ }>> & string;
6
+ export declare const sizes: {
7
+ xs: string;
8
+ s: string;
9
+ m: string;
10
+ l: string;
11
+ full: string;
12
+ };
13
+ export declare const DrawerStyled: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
14
+ size: Required<IDrawerProps>["size"];
15
+ position: IDrawerProps["position"];
16
+ status: TransitionStatus;
17
+ }>> & string;
18
+ export declare const DrawerTitleWrapper: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -0,0 +1,85 @@
1
+ import styled, { css } from "styled-components";
2
+ import { rgba } from "polished";
3
+ const DrawerWrapper = styled.div`
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ right: 0;
8
+ bottom: 0;
9
+ z-index: ${({ zIndex }) => zIndex || 1e3};
10
+ background: ${({ theme }) => rgba(theme.colors.grayViolet[2], 0.7)};
11
+ `;
12
+ const sizes = {
13
+ xs: "240px",
14
+ s: "320px",
15
+ m: "360px",
16
+ l: "500px",
17
+ full: "100%"
18
+ };
19
+ const getPosition = (position, size) => {
20
+ switch (position) {
21
+ case "left":
22
+ return css`
23
+ bottom: 0;
24
+ top: 0;
25
+ left: 0;
26
+ width: ${sizes[size]};
27
+ `;
28
+ case "right":
29
+ return css`
30
+ bottom: 0;
31
+ top: 0;
32
+ right: 0;
33
+ width: ${sizes[size]};
34
+ `;
35
+ case "top":
36
+ return css`
37
+ top: 0;
38
+ left: 0;
39
+ right: 0;
40
+ height: ${sizes[size]};
41
+ `;
42
+ case "bottom":
43
+ return css`
44
+ bottom: 0;
45
+ left: 0;
46
+ right: 0;
47
+ height: ${sizes[size]};
48
+ `;
49
+ default:
50
+ return null;
51
+ }
52
+ };
53
+ const DrawerStyled = styled.div`
54
+ ${({ size, position }) => getPosition(position, size)};
55
+ max-width: 100%;
56
+ max-height: 100vh;
57
+ position: fixed;
58
+ outline: 0;
59
+ background: ${({ theme }) => theme.colors.grayViolet[2]};
60
+
61
+ ${({ status }) => (status === "preEnter" || status === "exiting") && ` opacity: 0;
62
+ transform: scale(0.5);
63
+ `};
64
+
65
+ display: flex;
66
+ flex-direction: column;
67
+ gap: ${({ theme }) => theme.space.xs};
68
+
69
+ .quen-ui-drawer--content {
70
+ padding: 0.5rem;
71
+ overflow: auto;
72
+ }
73
+ `;
74
+ const DrawerTitleWrapper = styled.div`
75
+ padding: 0.5rem;
76
+ display: flex;
77
+ justify-content: space-between;
78
+ align-items: center;
79
+ `;
80
+ export {
81
+ DrawerStyled,
82
+ DrawerTitleWrapper,
83
+ DrawerWrapper,
84
+ sizes
85
+ };
@@ -0,0 +1,24 @@
1
+ import { default as React } from 'react';
2
+ import { TQuenSize } from '../types/size';
3
+ export interface IDrawerProps {
4
+ /** Controls visibility (true = visible) */
5
+ open: boolean;
6
+ /** Callback when closing */
7
+ onClose: () => void;
8
+ /** Header content (supports JSX) */
9
+ title?: React.ReactNode;
10
+ /** Custom CSS class */
11
+ className?: string;
12
+ /** Custom close button */
13
+ closeIcon?: React.ReactNode;
14
+ /** Controls drawer dimensions */
15
+ size?: TQuenSize | "full";
16
+ /** Controls stacking order */
17
+ zIndex?: number;
18
+ /** Slide-in direction */
19
+ position?: "left" | "right" | "top" | "bottom";
20
+ /** Main content */
21
+ children?: React.ReactNode;
22
+ /** Disables closing when clicking outside */
23
+ noCloseOnClickOutside?: boolean;
24
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const React = require("react");
4
+ const reactDom = require("react-dom");
5
+ const reactTransitionState = require("react-transition-state");
6
+ const styles = require("./styles.cjs.js");
7
+ const DropdownPortal = require("./DropdownPortal.cjs.js");
8
+ const helpers = require("./helpers.cjs.js");
9
+ const Dropdown = ({
10
+ disabled,
11
+ open,
12
+ direction = "bottom",
13
+ width,
14
+ anchorRef,
15
+ ...props
16
+ }) => {
17
+ const [anchorRect, setAnchorRect] = React.useState(helpers.DEFAULT_RECT_ELEMENT);
18
+ const [containerDropdown, setContainerDropdown] = React.useState(null);
19
+ const [state, toggle] = reactTransitionState.useTransitionState({
20
+ timeout: 500,
21
+ unmountOnExit: true,
22
+ initialEntered: open
23
+ });
24
+ const calculateAnchorRect = () => {
25
+ if (anchorRef && anchorRef.current) {
26
+ setAnchorRect(helpers.calculateRectElement(anchorRef.current));
27
+ }
28
+ };
29
+ React.useEffect(() => {
30
+ window.addEventListener("resize", calculateAnchorRect);
31
+ window.addEventListener("scroll", calculateAnchorRect, true);
32
+ return () => {
33
+ window.removeEventListener("resize", calculateAnchorRect);
34
+ window.addEventListener("scroll", calculateAnchorRect, true);
35
+ };
36
+ }, [anchorRect]);
37
+ React.useEffect(() => {
38
+ toggle(open);
39
+ }, [open]);
40
+ React.useLayoutEffect(() => {
41
+ calculateAnchorRect();
42
+ }, [state]);
43
+ React.useEffect(() => {
44
+ const container = document.getElementsByTagName("body").item(0);
45
+ setContainerDropdown(container);
46
+ }, []);
47
+ if (disabled) {
48
+ return null;
49
+ }
50
+ return /* @__PURE__ */ jsxRuntime.jsx(styles.DropdownWrapper, { children: state.isEnter && containerDropdown && reactDom.createPortal(
51
+ /* @__PURE__ */ jsxRuntime.jsx(
52
+ DropdownPortal,
53
+ {
54
+ ...props,
55
+ direction,
56
+ transitionStatus: state.status,
57
+ anchorRef,
58
+ anchorRect,
59
+ width: width || "max-content"
60
+ }
61
+ ),
62
+ containerDropdown
63
+ ) });
64
+ };
65
+ module.exports = Dropdown;
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+ import { IDropdownProps } from './types';
3
+ declare const Dropdown: <ITEM>({ disabled, open, direction, width, anchorRef, ...props }: IDropdownProps<ITEM>) => React.ReactNode;
4
+ export default Dropdown;
@@ -0,0 +1,66 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useLayoutEffect } from "react";
3
+ import { createPortal } from "react-dom";
4
+ import { useTransitionState } from "react-transition-state";
5
+ import { DropdownWrapper } from "./styles.es.js";
6
+ import DropdownPortal from "./DropdownPortal.es.js";
7
+ import { DEFAULT_RECT_ELEMENT, calculateRectElement } from "./helpers.es.js";
8
+ const Dropdown = ({
9
+ disabled,
10
+ open,
11
+ direction = "bottom",
12
+ width,
13
+ anchorRef,
14
+ ...props
15
+ }) => {
16
+ const [anchorRect, setAnchorRect] = useState(DEFAULT_RECT_ELEMENT);
17
+ const [containerDropdown, setContainerDropdown] = useState(null);
18
+ const [state, toggle] = useTransitionState({
19
+ timeout: 500,
20
+ unmountOnExit: true,
21
+ initialEntered: open
22
+ });
23
+ const calculateAnchorRect = () => {
24
+ if (anchorRef && anchorRef.current) {
25
+ setAnchorRect(calculateRectElement(anchorRef.current));
26
+ }
27
+ };
28
+ useEffect(() => {
29
+ window.addEventListener("resize", calculateAnchorRect);
30
+ window.addEventListener("scroll", calculateAnchorRect, true);
31
+ return () => {
32
+ window.removeEventListener("resize", calculateAnchorRect);
33
+ window.addEventListener("scroll", calculateAnchorRect, true);
34
+ };
35
+ }, [anchorRect]);
36
+ useEffect(() => {
37
+ toggle(open);
38
+ }, [open]);
39
+ useLayoutEffect(() => {
40
+ calculateAnchorRect();
41
+ }, [state]);
42
+ useEffect(() => {
43
+ const container = document.getElementsByTagName("body").item(0);
44
+ setContainerDropdown(container);
45
+ }, []);
46
+ if (disabled) {
47
+ return null;
48
+ }
49
+ return /* @__PURE__ */ jsx(DropdownWrapper, { children: state.isEnter && containerDropdown && createPortal(
50
+ /* @__PURE__ */ jsx(
51
+ DropdownPortal,
52
+ {
53
+ ...props,
54
+ direction,
55
+ transitionStatus: state.status,
56
+ anchorRef,
57
+ anchorRect,
58
+ width: width || "max-content"
59
+ }
60
+ ),
61
+ containerDropdown
62
+ ) });
63
+ };
64
+ export {
65
+ Dropdown as default
66
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const styles = require("./styles.cjs.js");
4
+ const DropdownItem = ({
5
+ getItemDisabled,
6
+ getItemOnClick,
7
+ getItemLabel,
8
+ onItemClick,
9
+ item,
10
+ getItemLeftContent,
11
+ size
12
+ }) => {
13
+ const handleClick = (event) => {
14
+ var _a;
15
+ event.preventDefault();
16
+ (_a = getItemOnClick == null ? void 0 : getItemOnClick(item)) == null ? void 0 : _a(item, event);
17
+ onItemClick == null ? void 0 : onItemClick(item, event);
18
+ };
19
+ return /* @__PURE__ */ jsxRuntime.jsxs(
20
+ styles.DropdownItemStyled,
21
+ {
22
+ size,
23
+ isDisabled: getItemDisabled == null ? void 0 : getItemDisabled(item),
24
+ onClick: handleClick,
25
+ children: [
26
+ getItemLeftContent == null ? void 0 : getItemLeftContent(item),
27
+ getItemLabel(item)
28
+ ]
29
+ }
30
+ );
31
+ };
32
+ module.exports = DropdownItem;
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+ import { TDropdownItemProps } from './types';
3
+ declare const DropdownItem: <ITEM>({ getItemDisabled, getItemOnClick, getItemLabel, onItemClick, item, getItemLeftContent, size }: TDropdownItemProps<ITEM>) => React.ReactElement;
4
+ export default DropdownItem;
@@ -0,0 +1,33 @@
1
+ import { jsxs } from "react/jsx-runtime";
2
+ import { DropdownItemStyled } from "./styles.es.js";
3
+ const DropdownItem = ({
4
+ getItemDisabled,
5
+ getItemOnClick,
6
+ getItemLabel,
7
+ onItemClick,
8
+ item,
9
+ getItemLeftContent,
10
+ size
11
+ }) => {
12
+ const handleClick = (event) => {
13
+ var _a;
14
+ event.preventDefault();
15
+ (_a = getItemOnClick == null ? void 0 : getItemOnClick(item)) == null ? void 0 : _a(item, event);
16
+ onItemClick == null ? void 0 : onItemClick(item, event);
17
+ };
18
+ return /* @__PURE__ */ jsxs(
19
+ DropdownItemStyled,
20
+ {
21
+ size,
22
+ isDisabled: getItemDisabled == null ? void 0 : getItemDisabled(item),
23
+ onClick: handleClick,
24
+ children: [
25
+ getItemLeftContent == null ? void 0 : getItemLeftContent(item),
26
+ getItemLabel(item)
27
+ ]
28
+ }
29
+ );
30
+ };
31
+ export {
32
+ DropdownItem as default
33
+ };
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const React = require("react");
4
+ const hooks = require("@quen-ui/hooks");
5
+ const Divider = require("../Divider/Divider.cjs.js");
6
+ const styles = require("./styles.cjs.js");
7
+ const helpers = require("./helpers.cjs.js");
8
+ const DropdownItem = require("./DropdownItem.cjs.js");
9
+ const DropdownList = (props, ref) => {
10
+ const {
11
+ items = [],
12
+ sortGroup,
13
+ content,
14
+ getItemGroupId,
15
+ direction = "bottom",
16
+ className,
17
+ width,
18
+ size = "m",
19
+ getItemLabel,
20
+ getItemDisabled,
21
+ getItemKey,
22
+ getItemLeftContent,
23
+ getItemOnClick,
24
+ ...otherProps
25
+ } = helpers.withDefaultGetters(props);
26
+ hooks.useOnClickOutside(ref, otherProps.onClickOutside);
27
+ const groups = React.useMemo(() => {
28
+ const _groups = items.reduce(
29
+ (result, x) => {
30
+ if (getItemGroupId(x)) {
31
+ const index = result.length && result[0].length && result.findIndex(
32
+ (r) => getItemGroupId(r[0]) === getItemGroupId(x)
33
+ );
34
+ if (index !== -1) {
35
+ result[index].push(x);
36
+ } else {
37
+ result.push([]);
38
+ result[result.length - 1].push(x);
39
+ }
40
+ } else {
41
+ result[0].push(x);
42
+ }
43
+ return result;
44
+ },
45
+ [[]]
46
+ );
47
+ return sortGroup ? _groups.sort(
48
+ (items1, items2) => sortGroup(
49
+ getItemGroupId(items1[0]) || "1",
50
+ getItemGroupId(items2[0]) || "-1"
51
+ )
52
+ ) : _groups;
53
+ }, [items]);
54
+ if (items.length === 0 && !content) {
55
+ return null;
56
+ }
57
+ return /* @__PURE__ */ jsxRuntime.jsx(
58
+ styles.DropdownListWrapper,
59
+ {
60
+ ref,
61
+ direction,
62
+ className,
63
+ width,
64
+ ...otherProps,
65
+ children: content ? content : groups.map((groupItems, index) => /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
66
+ /* @__PURE__ */ jsxRuntime.jsx(styles.DropdownItemsWrapper, { children: groupItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
67
+ DropdownItem,
68
+ {
69
+ item,
70
+ size,
71
+ getItemLabel,
72
+ getItemDisabled,
73
+ getItemLeftContent,
74
+ getItemOnClick,
75
+ onItemClick: otherProps.onItemClick
76
+ },
77
+ getItemKey == null ? void 0 : getItemKey(item)
78
+ )) }),
79
+ index !== groups.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Divider, { direction: "horizontal" })
80
+ ] }, getItemGroupId == null ? void 0 : getItemGroupId(groupItems[0])))
81
+ }
82
+ );
83
+ };
84
+ const DropdownList$1 = React.forwardRef(DropdownList);
85
+ module.exports = DropdownList$1;
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ declare const _default: React.ForwardRefExoticComponent<Omit<import('./types').IDropdownProps<unknown>, "children" | "height"> & {
3
+ top?: number;
4
+ left?: number;
5
+ } & React.RefAttributes<HTMLDivElement>>;
6
+ export default _default;
@@ -0,0 +1,86 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import React__default, { forwardRef, useMemo } from "react";
3
+ import { useOnClickOutside } from "@quen-ui/hooks";
4
+ import Divider from "../Divider/Divider.es.js";
5
+ import { DropdownListWrapper, DropdownItemsWrapper } from "./styles.es.js";
6
+ import { withDefaultGetters } from "./helpers.es.js";
7
+ import DropdownItem from "./DropdownItem.es.js";
8
+ const DropdownList = (props, ref) => {
9
+ const {
10
+ items = [],
11
+ sortGroup,
12
+ content,
13
+ getItemGroupId,
14
+ direction = "bottom",
15
+ className,
16
+ width,
17
+ size = "m",
18
+ getItemLabel,
19
+ getItemDisabled,
20
+ getItemKey,
21
+ getItemLeftContent,
22
+ getItemOnClick,
23
+ ...otherProps
24
+ } = withDefaultGetters(props);
25
+ useOnClickOutside(ref, otherProps.onClickOutside);
26
+ const groups = useMemo(() => {
27
+ const _groups = items.reduce(
28
+ (result, x) => {
29
+ if (getItemGroupId(x)) {
30
+ const index = result.length && result[0].length && result.findIndex(
31
+ (r) => getItemGroupId(r[0]) === getItemGroupId(x)
32
+ );
33
+ if (index !== -1) {
34
+ result[index].push(x);
35
+ } else {
36
+ result.push([]);
37
+ result[result.length - 1].push(x);
38
+ }
39
+ } else {
40
+ result[0].push(x);
41
+ }
42
+ return result;
43
+ },
44
+ [[]]
45
+ );
46
+ return sortGroup ? _groups.sort(
47
+ (items1, items2) => sortGroup(
48
+ getItemGroupId(items1[0]) || "1",
49
+ getItemGroupId(items2[0]) || "-1"
50
+ )
51
+ ) : _groups;
52
+ }, [items]);
53
+ if (items.length === 0 && !content) {
54
+ return null;
55
+ }
56
+ return /* @__PURE__ */ jsx(
57
+ DropdownListWrapper,
58
+ {
59
+ ref,
60
+ direction,
61
+ className,
62
+ width,
63
+ ...otherProps,
64
+ children: content ? content : groups.map((groupItems, index) => /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
65
+ /* @__PURE__ */ jsx(DropdownItemsWrapper, { children: groupItems.map((item) => /* @__PURE__ */ jsx(
66
+ DropdownItem,
67
+ {
68
+ item,
69
+ size,
70
+ getItemLabel,
71
+ getItemDisabled,
72
+ getItemLeftContent,
73
+ getItemOnClick,
74
+ onItemClick: otherProps.onItemClick
75
+ },
76
+ getItemKey == null ? void 0 : getItemKey(item)
77
+ )) }),
78
+ index !== groups.length - 1 && /* @__PURE__ */ jsx(Divider, { direction: "horizontal" })
79
+ ] }, getItemGroupId == null ? void 0 : getItemGroupId(groupItems[0])))
80
+ }
81
+ );
82
+ };
83
+ const DropdownList$1 = forwardRef(DropdownList);
84
+ export {
85
+ DropdownList$1 as default
86
+ };