stargazer-ui 1.5.13 → 1.5.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 (372) hide show
  1. package/Bar/Bar.type.d.ts +6 -0
  2. package/Bar/index.js +2 -0
  3. package/Bar/index.js.map +1 -0
  4. package/Bar/package.json +1 -0
  5. package/Button/Button.js +15 -0
  6. package/Button/Button.js.map +1 -0
  7. package/{types/components/Button → Button}/Button.types.d.ts +1 -2
  8. package/Button/index.d.ts +3 -0
  9. package/Button/index.js +7 -0
  10. package/Button/index.js.map +1 -0
  11. package/Button/package.json +1 -0
  12. package/ButtonGroup/ButtonGroup.d.ts +4 -0
  13. package/ButtonGroup/ButtonGroup.js +11 -0
  14. package/ButtonGroup/ButtonGroup.js.map +1 -0
  15. package/ButtonGroup/ButtonGroup.types.d.ts +7 -0
  16. package/ButtonGroup/index.d.ts +3 -0
  17. package/ButtonGroup/index.js +7 -0
  18. package/ButtonGroup/index.js.map +1 -0
  19. package/ButtonGroup/package.json +1 -0
  20. package/{types/components/Card → Card}/Card.d.ts +12 -12
  21. package/Card/Card.js +42 -0
  22. package/Card/Card.js.map +1 -0
  23. package/{types/components/Card → Card}/Card.types.d.ts +3 -1
  24. package/Card/index.d.ts +3 -0
  25. package/Card/index.js +7 -0
  26. package/Card/index.js.map +1 -0
  27. package/Card/package.json +1 -0
  28. package/CloseButton/CloseButton.js +11 -0
  29. package/CloseButton/CloseButton.js.map +1 -0
  30. package/{types/components/CloseButton → CloseButton}/CloseButton.types.d.ts +1 -1
  31. package/CloseButton/index.d.ts +3 -0
  32. package/CloseButton/index.js +7 -0
  33. package/CloseButton/index.js.map +1 -0
  34. package/CloseButton/package.json +1 -0
  35. package/Dropdown/Dropdown.d.ts +135 -0
  36. package/Dropdown/Dropdown.js +377 -0
  37. package/Dropdown/Dropdown.js.map +1 -0
  38. package/{types/components/Dropdown → Dropdown}/Dropdown.types.d.ts +12 -11
  39. package/Dropdown/DropdownOld.d.ts +135 -0
  40. package/Dropdown/index.d.ts +4 -0
  41. package/Dropdown/index.js +8 -0
  42. package/Dropdown/index.js.map +1 -0
  43. package/Dropdown/package.json +1 -0
  44. package/FileUploadButton/FileUploadButton.d.ts +4 -0
  45. package/FileUploadButton/FileUploadButton.js +20 -0
  46. package/FileUploadButton/FileUploadButton.js.map +1 -0
  47. package/FileUploadButton/FileUploadButton.types.d.ts +7 -0
  48. package/FileUploadButton/index.d.ts +3 -0
  49. package/FileUploadButton/index.js +7 -0
  50. package/FileUploadButton/index.js.map +1 -0
  51. package/FileUploadButton/package.json +1 -0
  52. package/FloatingLabel/FloatingLabel.js +15 -0
  53. package/FloatingLabel/FloatingLabel.js.map +1 -0
  54. package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.types.d.ts +1 -1
  55. package/FloatingLabel/index.d.ts +3 -0
  56. package/FloatingLabel/index.js +7 -0
  57. package/FloatingLabel/index.js.map +1 -0
  58. package/FloatingLabel/package.json +1 -0
  59. package/Form/Form.d.ts +38 -0
  60. package/Form/Form.js +227 -0
  61. package/Form/Form.js.map +1 -0
  62. package/Form/Form.types.d.ts +159 -0
  63. package/Form/FormSelect.d.ts +14 -0
  64. package/Form/FormSelect.js +436 -0
  65. package/Form/FormSelect.js.map +1 -0
  66. package/Form/index.d.ts +4 -0
  67. package/Form/index.js +8 -0
  68. package/Form/index.js.map +1 -0
  69. package/Form/package.json +1 -0
  70. package/InputGroup/InputGroup.d.ts +7 -0
  71. package/InputGroup/InputGroup.js +31 -0
  72. package/InputGroup/InputGroup.js.map +1 -0
  73. package/InputGroup/InputGroup.types.d.ts +17 -0
  74. package/InputGroup/index.d.ts +4 -0
  75. package/InputGroup/index.js +7 -0
  76. package/InputGroup/index.js.map +1 -0
  77. package/InputGroup/package.json +1 -0
  78. package/List/List.d.ts +14 -0
  79. package/List/List.js +77 -0
  80. package/List/List.js.map +1 -0
  81. package/List/List.types.d.ts +28 -0
  82. package/List/index.d.ts +3 -0
  83. package/List/index.js +7 -0
  84. package/List/index.js.map +1 -0
  85. package/List/package.json +1 -0
  86. package/{types/components/Modal → Modal}/Modal.d.ts +19 -19
  87. package/Modal/Modal.js +157 -0
  88. package/Modal/Modal.js.map +1 -0
  89. package/{types/components/Modal → Modal}/Modal.types.d.ts +3 -2
  90. package/Modal/index.d.ts +3 -0
  91. package/Modal/index.js +7 -0
  92. package/Modal/index.js.map +1 -0
  93. package/Modal/package.json +1 -0
  94. package/{types/components/Nav → Nav}/Nav.d.ts +12 -12
  95. package/Nav/Nav.js +29 -0
  96. package/Nav/Nav.js.map +1 -0
  97. package/{types/components/Nav → Nav}/Nav.types.d.ts +1 -1
  98. package/Nav/index.d.ts +4 -0
  99. package/Nav/index.js +7 -0
  100. package/Nav/index.js.map +1 -0
  101. package/Nav/package.json +1 -0
  102. package/{types/components/NavBar → NavBar}/Navbar.d.ts +7 -8
  103. package/NavBar/Navbar.js +36 -0
  104. package/NavBar/Navbar.js.map +1 -0
  105. package/{types/components/NavBar → NavBar}/Navbar.types.d.ts +2 -1
  106. package/NavBar/index.d.ts +4 -0
  107. package/NavBar/index.js +8 -0
  108. package/NavBar/index.js.map +1 -0
  109. package/NavBar/package.json +1 -0
  110. package/NavDropdown/NavDropdown.d.ts +99 -0
  111. package/NavDropdown/NavDropdown.js +75 -0
  112. package/NavDropdown/NavDropdown.js.map +1 -0
  113. package/NavDropdown/index.d.ts +3 -0
  114. package/NavDropdown/index.js +7 -0
  115. package/NavDropdown/index.js.map +1 -0
  116. package/NavDropdown/package.json +1 -0
  117. package/Overlay/Overlay.d.ts +4 -0
  118. package/Overlay/Overlay.js +242 -0
  119. package/Overlay/Overlay.js.map +1 -0
  120. package/Overlay/Overlay.types.d.ts +22 -0
  121. package/{src/Overlay/index.ts → Overlay/index.d.ts} +3 -3
  122. package/Overlay/index.js +7 -0
  123. package/Overlay/index.js.map +1 -0
  124. package/Overlay/package.json +1 -0
  125. package/{types/components/Popout → Popout}/Popout.d.ts +6 -6
  126. package/Popout/Popout.js +111 -0
  127. package/Popout/Popout.js.map +1 -0
  128. package/{types/components/Popout → Popout}/Popout.types.d.ts +1 -1
  129. package/Popout/index.d.ts +3 -0
  130. package/Popout/index.js +7 -0
  131. package/Popout/index.js.map +1 -0
  132. package/Popout/package.json +1 -0
  133. package/Spinner/Spinner.js +11 -0
  134. package/Spinner/Spinner.js.map +1 -0
  135. package/Spinner/index.d.ts +3 -0
  136. package/Spinner/index.js +7 -0
  137. package/Spinner/index.js.map +1 -0
  138. package/Spinner/package.json +1 -0
  139. package/Table/Table.js +12 -0
  140. package/Table/Table.js.map +1 -0
  141. package/{types/components/Table → Table}/Table.types.d.ts +1 -1
  142. package/Table/index.d.ts +3 -0
  143. package/Table/index.js +7 -0
  144. package/Table/index.js.map +1 -0
  145. package/Table/package.json +1 -0
  146. package/Tabs/Tabs.js +162 -0
  147. package/Tabs/Tabs.js.map +1 -0
  148. package/{types/components/Tabs → Tabs}/Tabs.types.d.ts +12 -2
  149. package/Tabs/index.d.ts +3 -0
  150. package/Tabs/index.js +7 -0
  151. package/Tabs/index.js.map +1 -0
  152. package/Tabs/package.json +1 -0
  153. package/ToggleButton/ToggleButton.d.ts +4 -0
  154. package/ToggleButton/ToggleButton.js +18 -0
  155. package/ToggleButton/ToggleButton.js.map +1 -0
  156. package/ToggleButton/ToggleButton.types.d.ts +7 -0
  157. package/ToggleButton/index.d.ts +3 -0
  158. package/ToggleButton/index.js +7 -0
  159. package/ToggleButton/index.js.map +1 -0
  160. package/ToggleButton/package.json +1 -0
  161. package/{src/hooks/index.ts → hooks/index.d.ts} +6 -7
  162. package/hooks/index.js +7 -0
  163. package/hooks/index.js.map +1 -0
  164. package/hooks/package.json +1 -0
  165. package/hooks/useClassname.d.ts +2 -0
  166. package/hooks/useClassname.js +7 -0
  167. package/hooks/useClassname.js.map +1 -0
  168. package/hooks/useDraggable.d.ts +23 -0
  169. package/hooks/useDraggable.js +147 -0
  170. package/hooks/useDraggable.js.map +1 -0
  171. package/hooks/useKeepElementFocused.d.ts +2 -0
  172. package/hooks/useKeepElementFocused.js +37 -0
  173. package/hooks/useKeepElementFocused.js.map +1 -0
  174. package/hooks/useQueryParams.d.ts +2 -0
  175. package/hooks/useQueryParams.js +13 -0
  176. package/hooks/useQueryParams.js.map +1 -0
  177. package/hooks/useScreenSize.d.ts +5 -0
  178. package/hooks/useScreenSize.js +21 -0
  179. package/hooks/useScreenSize.js.map +1 -0
  180. package/index.d.ts +18 -0
  181. package/index.js +19 -0
  182. package/index.js.map +1 -0
  183. package/package.json +1 -79
  184. package/styles/stargazerui.css +6552 -0
  185. package/styles/stargazerui.css.map +1 -0
  186. package/{src/utils/BaseTypes.ts → utils/BaseTypes.d.ts} +25 -32
  187. package/utils/ContrastingColor.d.ts +1 -0
  188. package/utils/CreateSyntheticEvent.d.ts +2 -0
  189. package/utils/CreateSyntheticEvent.js +33 -0
  190. package/utils/CreateSyntheticEvent.js.map +1 -0
  191. package/utils/IsInputKey.d.ts +7 -0
  192. package/utils/IsInputKey.js +20 -0
  193. package/utils/IsInputKey.js.map +1 -0
  194. package/utils/MergeClassnames.d.ts +2 -0
  195. package/utils/MergeClassnames.js +7 -0
  196. package/utils/MergeClassnames.js.map +1 -0
  197. package/utils/MergeRefs.d.ts +1 -0
  198. package/utils/MergeRefs.js +16 -0
  199. package/utils/MergeRefs.js.map +1 -0
  200. package/.babelrc.json +0 -10
  201. package/.eslintrc.cjs +0 -18
  202. package/.gitattributes +0 -2
  203. package/LICENSE +0 -21
  204. package/dev/index.html +0 -12
  205. package/dev/index.jsx +0 -46
  206. package/dev/index.scss +0 -74
  207. package/dev/pages/ButtonPage.jsx +0 -44
  208. package/dev/pages/CardPage.jsx +0 -81
  209. package/dev/pages/DropdownPage.jsx +0 -32
  210. package/dev/pages/FormPage.jsx +0 -155
  211. package/dev/pages/ListPage.jsx +0 -52
  212. package/dev/pages/ModalPage.jsx +0 -38
  213. package/dev/pages/OverlayPage.jsx +0 -39
  214. package/dev/pages/components.jsx +0 -19
  215. package/dev/stargazerui.css +0 -3762
  216. package/dev/stargazerui.css.map +0 -1
  217. package/dev/test.jsx +0 -87
  218. package/rollup.config.js +0 -140
  219. package/scripts/writePackageJsons.js +0 -42
  220. package/src/Bar/Bar.tsx +0 -0
  221. package/src/Bar/Bar.type.ts +0 -9
  222. package/src/Bar/index.ts +0 -0
  223. package/src/Button/Button.tsx +0 -20
  224. package/src/Button/Button.types.ts +0 -8
  225. package/src/Button/index.ts +0 -3
  226. package/src/ButtonGroup/ButtonGroup.tsx +0 -14
  227. package/src/ButtonGroup/ButtonGroup.types.ts +0 -8
  228. package/src/ButtonGroup/index.ts +0 -3
  229. package/src/Card/Card.tsx +0 -70
  230. package/src/Card/Card.types.ts +0 -33
  231. package/src/Card/index.ts +0 -3
  232. package/src/CloseButton/CloseButton.tsx +0 -14
  233. package/src/CloseButton/CloseButton.types.ts +0 -6
  234. package/src/CloseButton/index.ts +0 -3
  235. package/src/Dropdown/Dropdown.tsx +0 -440
  236. package/src/Dropdown/Dropdown.types.ts +0 -60
  237. package/src/Dropdown/DropdownOld.tsx +0 -409
  238. package/src/Dropdown/index.ts +0 -4
  239. package/src/FileUploadButton/FileUploadButton.tsx +0 -27
  240. package/src/FileUploadButton/FileUploadButton.types.ts +0 -9
  241. package/src/FileUploadButton/index.ts +0 -3
  242. package/src/FloatingLabel/FloatingLabel.tsx +0 -22
  243. package/src/FloatingLabel/FloatingLabel.types.ts +0 -11
  244. package/src/FloatingLabel/index.ts +0 -3
  245. package/src/Form/Form.tsx +0 -398
  246. package/src/Form/Form.types.ts +0 -169
  247. package/src/Form/FormSelect.tsx +0 -527
  248. package/src/Form/index.ts +0 -4
  249. package/src/InputGroup/InputGroup.tsx +0 -46
  250. package/src/InputGroup/InputGroup.types.ts +0 -22
  251. package/src/InputGroup/index.ts +0 -4
  252. package/src/List/List.tsx +0 -112
  253. package/src/List/List.types.ts +0 -34
  254. package/src/List/index.ts +0 -4
  255. package/src/Modal/Modal.tsx +0 -229
  256. package/src/Modal/Modal.types.ts +0 -49
  257. package/src/Modal/index.ts +0 -4
  258. package/src/Nav/Nav.tsx +0 -43
  259. package/src/Nav/Nav.types.ts +0 -21
  260. package/src/Nav/index.ts +0 -4
  261. package/src/NavBar/Navbar.tsx +0 -57
  262. package/src/NavBar/Navbar.types.ts +0 -24
  263. package/src/NavBar/index.ts +0 -4
  264. package/src/NavDropdown/NavDropdown.tsx +0 -93
  265. package/src/NavDropdown/NavDropdown.types.ts +0 -6
  266. package/src/NavDropdown/index.ts +0 -3
  267. package/src/Overlay/Overlay.tsx +0 -309
  268. package/src/Overlay/Overlay.types.ts +0 -24
  269. package/src/Popout/Popout.tsx +0 -155
  270. package/src/Popout/Popout.types.ts +0 -42
  271. package/src/Popout/index.ts +0 -3
  272. package/src/Spinner/Spinner.tsx +0 -15
  273. package/src/Spinner/Spinner.types.ts +0 -7
  274. package/src/Spinner/index.ts +0 -3
  275. package/src/Table/Table.tsx +0 -16
  276. package/src/Table/Table.types.ts +0 -9
  277. package/src/Table/index.ts +0 -3
  278. package/src/Tabs/Tabs.tsx +0 -233
  279. package/src/Tabs/Tabs.types.ts +0 -52
  280. package/src/Tabs/index.ts +0 -3
  281. package/src/ToggleButton/ToggleButton.tsx +0 -21
  282. package/src/ToggleButton/ToggleButton.types.ts +0 -8
  283. package/src/ToggleButton/index.ts +0 -3
  284. package/src/assets/tooltip-pointer.svg +0 -3
  285. package/src/assets/warning.svg +0 -39
  286. package/src/hooks/useClassname.ts +0 -5
  287. package/src/hooks/useDraggable.ts +0 -186
  288. package/src/hooks/useKeepElementFocused.ts +0 -37
  289. package/src/hooks/useQueryParams.ts +0 -12
  290. package/src/hooks/useScreenSize.ts +0 -24
  291. package/src/index.ts +0 -21
  292. package/src/styles/_Card.scss +0 -166
  293. package/src/styles/_CloseButton.scss +0 -51
  294. package/src/styles/_CustomButton.scss +0 -134
  295. package/src/styles/_Dropdown.scss +0 -127
  296. package/src/styles/_FloatingLabel.scss +0 -56
  297. package/src/styles/_Forms.scss +0 -7
  298. package/src/styles/_Grid.scss +0 -178
  299. package/src/styles/_InputGroup.scss +0 -71
  300. package/src/styles/_List.scss +0 -62
  301. package/src/styles/_Modal.scss +0 -234
  302. package/src/styles/_ModalOld.scss +0 -242
  303. package/src/styles/_Nav.scss +0 -36
  304. package/src/styles/_NavBar.scss +0 -116
  305. package/src/styles/_NavDropdown.scss +0 -33
  306. package/src/styles/_OffCanvas.scss +0 -260
  307. package/src/styles/_OverLay.scss +0 -64
  308. package/src/styles/_Popout.scss +0 -75
  309. package/src/styles/_Spinner.scss +0 -19
  310. package/src/styles/_Table.scss +0 -34
  311. package/src/styles/_Tabs.scss +0 -129
  312. package/src/styles/_colors.scss +0 -510
  313. package/src/styles/_components.scss +0 -40
  314. package/src/styles/_functions.scss +0 -134
  315. package/src/styles/_mixins.scss +0 -26
  316. package/src/styles/_reset.scss +0 -237
  317. package/src/styles/_utilities.scss +0 -2480
  318. package/src/styles/_variables.scss +0 -164
  319. package/src/styles/forms/_FormCheck.scss +0 -270
  320. package/src/styles/forms/_FormControl.scss +0 -135
  321. package/src/styles/forms/_FormGroup.scss +0 -26
  322. package/src/styles/forms/_FormLabel.scss +0 -3
  323. package/src/styles/forms/_FormSelect.scss +0 -196
  324. package/src/styles/forms/_FormSlider.scss +0 -116
  325. package/src/styles/forms/_FormText.scss +0 -6
  326. package/src/utils/ContrastingColor.ts +0 -25
  327. package/src/utils/CreateSyntheticEvent.ts +0 -30
  328. package/src/utils/FileImportExport.js +0 -50
  329. package/src/utils/IsInputKey.ts +0 -18
  330. package/src/utils/MergeClassnames.ts +0 -5
  331. package/src/utils/MergeRefs.ts +0 -12
  332. package/src/vite-env.d.ts +0 -1
  333. package/tsconfig-build.json +0 -4
  334. package/tsconfig.json +0 -79
  335. package/tsconfig.node.json +0 -10
  336. package/types/BaseTypes.d.ts +0 -19
  337. package/types/components/Button/index.d.ts +0 -1
  338. package/types/components/Card/index.d.ts +0 -1
  339. package/types/components/CloseButton/index.d.ts +0 -1
  340. package/types/components/Dropdown/Dropdown.d.ts +0 -71
  341. package/types/components/Dropdown/index.d.ts +0 -1
  342. package/types/components/FloatingLabel/index.d.ts +0 -1
  343. package/types/components/Form/Form.d.ts +0 -17
  344. package/types/components/Form/Form.types.d.ts +0 -50
  345. package/types/components/Form/index.d.ts +0 -1
  346. package/types/components/InputGroup/InputGroup.d.ts +0 -6
  347. package/types/components/InputGroup/InputGroup.types.d.ts +0 -10
  348. package/types/components/InputGroup/index.d.ts +0 -1
  349. package/types/components/Modal/index.d.ts +0 -1
  350. package/types/components/Nav/index.d.ts +0 -1
  351. package/types/components/NavBar/index.d.ts +0 -1
  352. package/types/components/NavDropdown/NavDropdown.d.ts +0 -35
  353. package/types/components/NavDropdown/index.d.ts +0 -1
  354. package/types/components/Popout/index.d.ts +0 -1
  355. package/types/components/Spinner/index.d.ts +0 -1
  356. package/types/components/Table/index.d.ts +0 -1
  357. package/types/components/Tabs/index.d.ts +0 -1
  358. package/types/components/ToggleButton/ToggleButton.d.ts +0 -9
  359. package/types/components/ToggleButton/ToggleButton.types.d.ts +0 -0
  360. package/types/components/ToggleButton/index.d.ts +0 -1
  361. package/types/components/index.d.ts +0 -16
  362. package/types/index.d.ts +0 -1
  363. package/vite.config.js +0 -57
  364. package/vite.config.js.timestamp-1708777378490-e94428ceb2bf9.mjs +0 -42
  365. /package/{types/components/Button → Button}/Button.d.ts +0 -0
  366. /package/{types/components/CloseButton → CloseButton}/CloseButton.d.ts +0 -0
  367. /package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.d.ts +0 -0
  368. /package/{types/components/NavDropdown → NavDropdown}/NavDropdown.types.d.ts +0 -0
  369. /package/{types/components/Spinner → Spinner}/Spinner.d.ts +0 -0
  370. /package/{types/components/Spinner → Spinner}/Spinner.types.d.ts +0 -0
  371. /package/{types/components/Table → Table}/Table.d.ts +0 -0
  372. /package/{types/components/Tabs → Tabs}/Tabs.d.ts +0 -0
@@ -1,93 +0,0 @@
1
- import React, { forwardRef, useCallback, useMemo, useState } from "react";
2
-
3
- import { NavDropdownType } from "./NavDropdown.types";
4
-
5
- import Dropdown, { DropdownContextProvider } from "../Dropdown/Dropdown";
6
-
7
- const getDropdownMenuPlacement = (alignEnd: boolean, dropDirection: string, isRTL:boolean = false) => {
8
- const topStart = isRTL ? 'top-end' : 'top-start';
9
- const topEnd = isRTL ? 'top-start' : 'top-end';
10
- const bottomStart = isRTL ? 'bottom-end' : 'bottom-start';
11
- const bottomEnd = isRTL ? 'bottom-start' : 'bottom-end';
12
- const leftStart = isRTL ? 'right-start' : 'left-start';
13
- const leftEnd = isRTL ? 'right-end' : 'left-end';
14
- const rightStart = isRTL ? 'left-start' : 'right-start';
15
- const rightEnd = isRTL ? 'left-end' : 'right-end';
16
- let placement = alignEnd ? bottomEnd : bottomStart;
17
- if (dropDirection === 'up')
18
- {
19
- placement = alignEnd ? topEnd : topStart
20
- }
21
- else if (dropDirection === 'end') {
22
- placement = alignEnd ? rightEnd : rightStart
23
- } else if (dropDirection === 'start') {
24
- placement = alignEnd ? leftEnd : leftStart
25
- } else if (dropDirection === 'down-centered') {
26
- placement = 'bottom'
27
- } else if (dropDirection === 'up-centered') {
28
- placement = 'top'
29
- }
30
- return placement;
31
- }
32
-
33
- const NavDropdown = forwardRef<HTMLDivElement, NavDropdownType>((
34
- {
35
- children, className, onSelect, onToggle, controlId, toggleProps, title, menuProps,
36
- drop="down", align="start", autoClose=true, show="default", ...restProps
37
- }, ref) => {
38
- const [showInternal, setShowInternal] = useState<boolean>(show === "default" ? false : show as boolean)
39
-
40
- // this is an object like {index: string} because we need it to rerender even if the case is the same
41
- // aka we use a "next/previous" case to navigate through the dropdown menu so need to rerender consecutive "next" cases
42
- const [activeDescendant, setActiveDescendant] = useState({case:""})
43
-
44
- const internalOnToggle = useCallback((event: MouseEvent) => {
45
- event.stopPropagation()
46
- setShowInternal(prev => !prev)
47
- }, [])
48
-
49
- const alignEnd = align === "end"
50
- const placement = getDropdownMenuPlacement(alignEnd, drop )
51
-
52
- const controlIdcomputed = controlId
53
- const contextValue = useMemo(() => ({
54
- align,
55
- drop,
56
- showInternal: show != "default" && onToggle ? show as boolean : showInternal,
57
- handleToggle: show != "default" && onToggle ? onToggle : internalOnToggle,
58
- placement,
59
- directionClasses: {
60
- down: "dropdown",
61
- 'down-centered': `dropdown-center`,
62
- up: 'dropup',
63
- 'up-centered': 'dropup-center dropup',
64
- end: 'dropend',
65
- start: 'dropstart'
66
- },
67
- controlId: controlIdcomputed,
68
- activeDescendant,
69
- setActiveDescendant,
70
- navDropdown: false
71
- }), [align, drop, show, showInternal, onToggle, internalOnToggle, placement, controlId, activeDescendant, setActiveDescendant])
72
-
73
- return (
74
- <div ref={ref} id={controlId+"-wrapper"} className={`sg-dropdown${className? " "+className:""} sg-nav-item`} {...restProps} >
75
- <DropdownContextProvider value={contextValue}>
76
- <Dropdown.Toggle navDropdown={true} {...toggleProps}>
77
- {title}
78
- </Dropdown.Toggle>
79
- <Dropdown.Menu {...menuProps}>
80
- {children}
81
- </Dropdown.Menu>
82
- </DropdownContextProvider>
83
- </div>
84
- )
85
- })
86
- NavDropdown.displayName = "NavDropdown"
87
-
88
- export default Object.assign(NavDropdown, {
89
- Toggle: Dropdown.Toggle,
90
- Menu: Dropdown.Menu,
91
- Item: Dropdown.Item,
92
- Divider: Dropdown.Divider
93
- })
@@ -1,6 +0,0 @@
1
- import { DropdownType } from "../Dropdown/Dropdown.types"
2
-
3
- export type NavDropdownType = {
4
- toggleProps?: any,
5
- menuProps?:any
6
- } & DropdownType
@@ -1,3 +0,0 @@
1
- import NavDropdown from "./NavDropdown"
2
- export default NavDropdown
3
- export type { NavDropdownType } from "./NavDropdown.types"
@@ -1,309 +0,0 @@
1
- import React, { useEffect, useRef, useState, cloneElement, forwardRef, ReactNode, useLayoutEffect, ReactElement } from "react";
2
- import { createPortal } from "react-dom";
3
- import { OverlayType, PositionObject } from "./Overlay.types";
4
-
5
- import mergeRefs from "../utils/MergeRefs";
6
- import mergeClassnames from "../utils/MergeClassnames";
7
-
8
-
9
- const setPosition = (referenceElement:any, overlayElement:any, position:string, arrowElement: any, isArrow: boolean=false, boundaryCorrection: PositionObject = {top:0, left:0, bottom: 0, right: 0}) => {
10
- if(!overlayElement.current) return {top:0, left:0}
11
- const refCurrent = referenceElement.current as HTMLElement
12
- const overlayCurrent = overlayElement.current as HTMLElement
13
- const arrowCurrent = arrowElement.current as HTMLElement
14
-
15
- const refTop = refCurrent.getBoundingClientRect().top
16
- const refHeight = refCurrent.offsetHeight
17
- const refLeft = refCurrent.getBoundingClientRect().left
18
- const refWidth = refCurrent.offsetWidth
19
-
20
- const overlayHeight = overlayCurrent.getBoundingClientRect().height
21
- const overlayWidth = overlayCurrent.getBoundingClientRect().width
22
-
23
- const arrowHeight = arrowCurrent.getBoundingClientRect().height
24
- const arrowWidth = arrowCurrent.getBoundingClientRect().width
25
- //console.log(refTop, arrowHeight, arrowWidth)
26
-
27
- const overlayBorderWidth = parseFloat(getComputedStyle(overlayCurrent).borderWidth.split("px")[0])
28
- const arrowOffsetHeight = isArrow ? arrowHeight/2 : arrowHeight - overlayBorderWidth
29
- const arrowOffsetWidth = isArrow ? arrowWidth/2 : arrowWidth - overlayBorderWidth
30
-
31
- const correctPosition = (position:string, offset:number, boundary:number) => {
32
- const positionKey = position as keyof typeof tempPos
33
- if(overlayCurrent.getBoundingClientRect()[positionKey]<= boundary) {
34
- return offset
35
- }
36
- else {
37
- return tempPos[positionKey]
38
- }
39
- }
40
-
41
- let tempPos: PositionObject
42
- switch(position) {
43
- case "top":
44
- tempPos = {
45
- top: refTop - overlayHeight - arrowOffsetHeight,
46
- left: refLeft + refWidth/2 - (isArrow ? arrowOffsetWidth/2 : overlayWidth/2)
47
- }
48
- //tempPos.right = correctPosition("right", 12, 0)
49
- //tempPos.left = correctPosition("left", 0, 0)
50
- return tempPos
51
- case "right":
52
- tempPos = {
53
- top: refTop + refHeight/2 - overlayHeight/2,
54
- left: refLeft + refWidth + arrowOffsetWidth
55
- }
56
- //tempPos.bottom = correctPosition("bottom", window.scrollY + window.innerHeight, 0)
57
- //tempPos.top = correctPosition("top", window.scrollY, 48)
58
- return tempPos
59
- case "bottom":
60
- tempPos = {
61
- top: refTop + refHeight + arrowOffsetHeight,
62
- left: refLeft + refWidth/2 - overlayWidth/2
63
- }
64
- //tempPos.right = correctPosition("right", 12, 0)
65
- //tempPos.left = correctPosition("left", 0, 0)
66
- return tempPos
67
- case "left":
68
- tempPos = {
69
- top: refTop + refHeight/2 - overlayHeight/2,
70
- left: refLeft - overlayWidth - arrowOffsetWidth
71
- }
72
- //tempPos.bottom = correctPosition("bottom", window.scrollY + window.innerHeight, 0)
73
- //tempPos.top = correctPosition("top", window.scrollY, 48)
74
- return tempPos
75
- default:
76
- //this is just top
77
- return { top: refTop - overlayHeight - arrowHeight, left: refLeft + refWidth/2 - overlayWidth/2 }
78
- }
79
- }
80
-
81
- const updateAutoPosition = (autoPositionRef:any, positionRef:any, overlayRef:any, arrowRef:any) => {
82
- let topDistance = positionRef.current.getBoundingClientRect().top
83
- let bottomDistance = window.innerHeight - positionRef.current.getBoundingClientRect().bottom
84
- let leftDistance = positionRef.current.getBoundingClientRect().left
85
- let rightDistance = window.innerWidth - positionRef.current.getBoundingClientRect().right
86
-
87
- let totalOverlayWidth = overlayRef.current.clientWidth + arrowRef.current.clientWidth + 48
88
- let totalOverlayHeight = overlayRef.current.clientHeight + arrowRef.current.clientHeight + 48
89
- //console.log(autoPositionRef.current, positionRef.current, overlayRef.current, arrowRef.current)
90
-
91
- if(topDistance >= totalOverlayHeight) {
92
- return "top"
93
- } else if(topDistance >= totalOverlayHeight/2) {
94
- return rightDistance >= totalOverlayWidth ? "right" : "left"
95
- } else if(bottomDistance >= totalOverlayHeight) {
96
- return "bottom"
97
- } else {
98
- return autoPositionRef.current
99
- }
100
- }
101
-
102
- const Overlay = forwardRef<HTMLDivElement, OverlayType>( ({
103
- children, overlay, tooltip, show=false, onToggle,
104
- position="auto", trigger="click", defaultShow=false,
105
- tooltipClassname, tooltipStyle, arrowClassname, arrowStyle}, ref
106
- ) => {
107
- if(Array.isArray(children)) {
108
- throw new Error(
109
- "Overlay can only wrap a single element, either introduce a wrapper or remove all but one trigger element!"
110
- )
111
- }
112
-
113
- const positionRef = useRef<typeof children | null>(null)
114
- const overlayRef = useRef<HTMLDivElement | null>(null)
115
- const arrowRef = useRef<HTMLDivElement>(null)
116
- const [arrowPosition, setArrowPosition] = useState<PositionObject>({top:0, left:0})
117
- const [overlayPosition, setOverlayPosition] = useState<PositionObject>({top:0, left:0})
118
- const [internalShow, setInternalShow] = useState(defaultShow)
119
- const internalShowRef = useRef(internalShow)
120
- const setInternalShowRef = (updatedValue: boolean) => {
121
- internalShowRef.current = updatedValue
122
- setInternalShow(updatedValue)
123
- }
124
- if(show && show != internalShow) {
125
- console.log("show")
126
- setInternalShowRef(show)
127
- }
128
-
129
- //const positionsList = ["top", "right", "bottom", "left"]
130
- const [autoPosition, setAutoPosition] = useState(position === "auto" ? "top" : position)
131
- const autoPositionRef = useRef(autoPosition)
132
- const setAutoPositionRef = (updatedValue: any) => {
133
- autoPositionRef.current = updatedValue
134
- setAutoPosition(updatedValue)
135
- }
136
-
137
- const [isHovering, setIsHovering] = useState(false)
138
- const [isFocused, setIsFocused] = useState(false)
139
- const [firstClick, setFirstClick] = useState(true)
140
- const triggerArray = Array.isArray(trigger) ? trigger : [trigger]
141
-
142
- const positionSetter = (positionRef:any , overlayRef: any, arrowRef: any) => {
143
- setOverlayPosition( setPosition(positionRef, overlayRef, autoPositionRef.current, arrowRef) )
144
- setArrowPosition( setPosition(positionRef, arrowRef, autoPositionRef.current, arrowRef, true) )
145
- }
146
- const handleScroll = () => {
147
- if(internalShowRef.current) {
148
- positionSetter(positionRef, overlayRef, arrowRef)
149
- }
150
- if(internalShowRef.current && position === "auto") {
151
- let updatedPosition = updateAutoPosition(autoPositionRef, positionRef, overlayRef, arrowRef)
152
- setAutoPositionRef(updatedPosition)
153
- }
154
- }
155
- const resizeHandler = () => {
156
- if(internalShowRef.current) {
157
- positionSetter(positionRef, overlayRef, arrowRef)
158
- }
159
- if(!internalShowRef.current && position === "auto") {
160
- //setAutoPosition(detectAutoPostition(overlayRef, autoPositionRef))
161
- }
162
- }
163
- const { onClick, onHover, onFocus, onBlur, onMouseOver, onMouseLeave} = (children as ReactElement)!.props
164
- //console.log(children)
165
- /* Event handler funtions */
166
- const handleClick = (event: MouseEvent) => {
167
-
168
- if(isFocused && firstClick) {
169
- //this is needed in case both "focus" and "click" are triggers, otherwise there's weird behaviour
170
- setFirstClick(false)
171
- return
172
- }
173
- setInternalShowRef(!internalShow)
174
- if(onToggle) {
175
- onToggle(!internalShow)
176
- }
177
- if(onClick) {
178
- onClick(event)
179
- }
180
- }
181
- const handleHover = (event: MouseEvent) => {
182
- setInternalShowRef(true)
183
- if(!isHovering) {
184
- setIsHovering(true)
185
- if(onToggle) {
186
- onToggle(true)
187
- }
188
- }
189
- if(onHover) {
190
- onHover(event)
191
- }
192
- }
193
- const handleFocus = (event: MouseEvent) => {
194
- //console.log("focus")
195
- setInternalShowRef(true)
196
- setIsFocused(true)
197
- if(onToggle) {
198
- onToggle(true)
199
- }
200
- if(onFocus) {
201
- onFocus(event)
202
- }
203
- }
204
- const handleBlur = (event: MouseEvent) => {
205
- //console.log("blur")
206
- if(isHovering) {
207
- setIsHovering(false)
208
- } else if(isFocused) {
209
- setIsFocused(false)
210
- setFirstClick(true)
211
- }
212
- setInternalShowRef(false)
213
- if(onToggle) {
214
- onToggle(false)
215
- }
216
- if(onBlur) {
217
- onBlur(event)
218
- }
219
- }
220
- useLayoutEffect(() => {
221
- if(overlayRef.current && arrowRef.current) {
222
- positionSetter(positionRef, overlayRef, arrowRef)
223
- }
224
- }, [])
225
-
226
- useEffect(() => {
227
- if(overlayRef.current && arrowRef.current) {
228
- positionSetter(positionRef, overlayRef, arrowRef)
229
- }
230
- //setInternalShowRef(show)
231
- },[internalShow, overlayRef, positionRef, autoPosition])
232
-
233
-
234
- useEffect(() => {
235
- window.addEventListener("scroll", handleScroll, true)
236
- window.addEventListener("resize", resizeHandler, true)
237
- return function cleanup() {
238
- window.removeEventListener("scroll", handleScroll, true)
239
- window.removeEventListener("resize", resizeHandler, true)
240
- }
241
- }, [])
242
-
243
- const checkRefPositionStyle = (positionRef: any) => {
244
- let elementComputedPositionStyle = getComputedStyle(positionRef.current)["position"]
245
- if(elementComputedPositionStyle === "fixed") {
246
- return "fixed"
247
- } else if(elementComputedPositionStyle === "sticky") {
248
- return "sticky"
249
- } else {
250
- return "absolute"
251
- }
252
- }
253
- const tooltipClassnames = mergeClassnames("sg-overlay-wrapper", "sg-tooltip-wrapper", tooltipClassname)
254
- const arrowClassnames = mergeClassnames(
255
- "sg-overlay-arrow",
256
- autoPosition ? " overlay-position-"+autoPosition : "",
257
- tooltip ? "sg-tooltip-arrow":"",
258
- arrowClassname
259
- )
260
-
261
- return (
262
- <>
263
- {
264
- cloneElement(children as any, {
265
- ref: mergeRefs([positionRef, (children as any).ref]),
266
- onClick: triggerArray.find(trigger => trigger === "click") ? handleClick : onClick,
267
- onMouseOver: triggerArray.find(trigger => trigger === "hover") ? handleHover : onMouseOver,
268
- onMouseLeave: triggerArray.find(trigger => trigger === "hover") ? handleBlur : onMouseLeave,
269
- onFocus: triggerArray.find(trigger => trigger === "focus") ? handleFocus : onFocus,
270
- onBlur: triggerArray.find(trigger => trigger === "focus") ? handleBlur : onBlur,
271
- })
272
- }
273
- {internalShow ? createPortal(
274
- <>
275
- {overlay ?
276
- <>
277
- <div className="sg-overlay-wrapper"
278
- ref={mergeRefs([ref,overlayRef])}
279
- style={{ position:checkRefPositionStyle(positionRef), top:overlayPosition!.top, left:overlayPosition!.left }}
280
- >{overlay}</div>
281
- <div
282
- ref={arrowRef} aria-hidden
283
- className={arrowClassnames}
284
- style={{...arrowStyle, position:checkRefPositionStyle(positionRef), top:arrowPosition!.top, left:arrowPosition!.left,}}>
285
- </div>
286
- </>
287
- : null}
288
- {tooltip ?
289
- <>
290
- <div className={tooltipClassnames}
291
- ref={mergeRefs([ref,overlayRef])}
292
- style={{...tooltipStyle, position:checkRefPositionStyle(positionRef), top:overlayPosition!.top, left:overlayPosition!.left }}
293
- >{tooltip}</div>
294
- <div
295
- ref={arrowRef} aria-hidden
296
- className={arrowClassnames}
297
- style={{...arrowStyle, position:checkRefPositionStyle(positionRef), top:arrowPosition!.top, left:arrowPosition!.left,}}>
298
- </div>
299
- </>
300
- :
301
- null}
302
- </>
303
- , document.body) : null}
304
- </>
305
- )
306
- })
307
- Overlay.displayName = "Overlay"
308
-
309
- export default Overlay
@@ -1,24 +0,0 @@
1
- import { ReactNode, CSSProperties } from "react"
2
- import { BaseDivType } from "../utils/BaseTypes"
3
-
4
- export type OverlayType = {
5
- children: ReactNode,
6
- overlay?: React.JSX.Element,
7
- tooltip?: React.JSX.Element | string,
8
- show?: boolean,
9
- onToggle?: Function,
10
- position?: "auto" | "top" | "bottom" | "right" | "left",
11
- trigger?: string | string[],
12
- defaultShow?: boolean,
13
- tooltipClassname?: string,
14
- tooltipStyle?: CSSProperties,
15
- arrowClassname?: string,
16
- arrowStyle?: CSSProperties
17
- } & BaseDivType
18
-
19
- export type PositionObject = {
20
- top?: number,
21
- bottom?: number,
22
- left?: number,
23
- right?:number
24
- }
@@ -1,155 +0,0 @@
1
- import { createPortal } from "react-dom";
2
- import React, { forwardRef, useEffect, useRef, useState } from "react";
3
-
4
- import mergeRefs from "../utils/MergeRefs";
5
-
6
- import { PopoutType, PopoutBodyType, PopoutFooterType, PopoutHeaderType, PopoutTextType, PopoutTitleType } from "./Popout.types";
7
- /*
8
- export const useEventListener = (eventType: keyof HTMLElementEventMap, callback: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions | undefined, customOptions: {element: HTMLElement}) => {
9
- const element = customOptions ? customOptions.element : document.body
10
- useEffect(() => {
11
- if(element) {
12
- element.addEventListener(eventType, callback, options)
13
- return function cleanup() {
14
- element.removeEventListener(eventType, callback, options)
15
- }
16
- }
17
- }, [callback, element])
18
- }
19
- */
20
-
21
- const Popout = forwardRef<HTMLDialogElement, PopoutType>(({children, initialPosition={top:0, left:0}, id, resize=false, move=false, className, style, ...restProps}, ref) => {
22
- const [coordinates, setCoordinates] = useState<{ top?: number, bottom?: number, right?: number, left?: number, offSetTop:number, offSetLeft:number }>({offSetTop:0, offSetLeft:0, ...initialPosition})
23
- const resizeComputed = resize ? "true":"false"
24
- const moveComputed = move ? "true":"false"
25
-
26
- const passedRef = useRef(ref)
27
- const popupRef = useRef<HTMLDialogElement>(null)
28
- const [ isMouseDown, setIsMouseDown ] = useState<boolean>(false)
29
- const isMouseDownRef = useRef(isMouseDown)
30
- useEffect(() => {
31
- isMouseDownRef.current = isMouseDown
32
- }, [isMouseDown])
33
-
34
- const onMouseDown = (event: React.PointerEvent<HTMLDialogElement>) => {
35
- const eventTarget = event.target as HTMLElement
36
- if(move && eventTarget.className.includes("sg-popout-title") || eventTarget.className.includes("sg-popout-header")) {
37
- const { top, left} = popupRef.current!.getBoundingClientRect();
38
- setCoordinates(prev => ({
39
- ...prev,
40
- offSetTop:event.clientY - top,
41
- offSetLeft:event.clientX - left
42
- }))
43
- popupRef.current!.style.setProperty("user-select", "none")
44
- popupRef.current!.setPointerCapture(event.pointerId)//event.pointerId)//"moveable-popup-"+id);
45
- setIsMouseDown(true)
46
- }
47
- }
48
- const onMouseUp = () => {
49
- if(move) {
50
- popupRef.current!.style.removeProperty("user-select")
51
- setIsMouseDown(false)
52
- }
53
- }
54
- const onMouseMove = (event: React.PointerEvent<HTMLDialogElement>) => {
55
- if( move && isMouseDownRef.current && popupRef.current ) {
56
- const isTopOver = event.clientY - coordinates.offSetTop < 0
57
- const isBottomOver = window.innerHeight - (event.clientY - coordinates.offSetTop + popupRef.current.offsetHeight) < 0
58
- const isLeftOver = event.clientX - coordinates.offSetLeft < 0
59
- const isRightOver = window.innerWidth - (event.clientX - coordinates.offSetLeft + popupRef.current.offsetWidth) < 0
60
-
61
- let topCoordinate = isTopOver ? 0 : event.clientY - coordinates.offSetTop
62
- topCoordinate = isBottomOver ? window.innerHeight - popupRef.current.offsetHeight : topCoordinate
63
-
64
- let leftCoordinate = isLeftOver ? 0 : event.clientX - coordinates.offSetLeft
65
- leftCoordinate = isRightOver ? window.innerWidth - popupRef.current.offsetWidth : leftCoordinate
66
-
67
- //console.log(event.clientX - coordinates.offSetLeft, event.clientY - coordinates.offSetTop)
68
- setCoordinates(prev => ({
69
- ...prev,
70
- top:topCoordinate,
71
- left:leftCoordinate
72
- }))
73
- }
74
- }
75
-
76
- useEffect(() => {
77
- document.body.addEventListener("pointerup", () => onMouseUp(), true)
78
- return function cleanup() {
79
- document.body.removeEventListener("pointerup", () => onMouseUp(), true)
80
- }
81
- }, [])
82
- return (
83
- createPortal(
84
- <dialog data-resize={resizeComputed} data-move={moveComputed} data-passedref={passedRef}
85
- ref={mergeRefs([ref,popupRef])} id={id} className={`sg-moveable-popout${className ? " "+className : ""}`}
86
- style={{...style, top:coordinates.top, left:coordinates.left, bottom:coordinates.bottom, right:coordinates.right}}
87
- onPointerDown={onMouseDown} onPointerMove={(event) => onMouseMove(event)} {...restProps}
88
- >
89
- {children}
90
- </dialog>
91
- , document.body
92
- )
93
- )
94
- })
95
- Popout.displayName = "Popout"
96
-
97
- const Header = forwardRef<HTMLDivElement | HTMLSpanElement | HTMLHeadingElement, PopoutHeaderType>(
98
- ({ children, className, as = "div", ...restProps}, ref) =>
99
- {
100
- let validAs = ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"]
101
- let Component = validAs.find(valid => valid === as) ? as : "div"
102
- return (
103
- <Component ref={ref} className={`sg-popout-header ${className}`} {...restProps}>
104
- {children}
105
- </Component>
106
- )
107
- })
108
- Header.displayName = "PopoutHeader"
109
-
110
- const Title = forwardRef<HTMLHeadingElement, PopoutTitleType>( ({as="h4", className, children, ...restProps}, ref) => {
111
- let validAs = ["h1", "h2", "h3", "h4", "h5", "h6"]
112
- let Component = validAs.find(valid => valid === as) ? as : "h5"
113
- return (
114
- <Component ref={ref} className={`sg-popout-title ${className}`} {...restProps}>
115
- {children}
116
- </Component>
117
- )
118
- })
119
- Title.displayName = "PopoutTitle"
120
-
121
- const Body = forwardRef<HTMLDivElement, PopoutBodyType>( ({children, className, ...restProps}, ref) => {
122
- return (
123
- <div ref={ref} className={`sg-popout-body ${className}`} {...restProps}>
124
- {children}
125
- </div>
126
- )
127
- })
128
- Body.displayName = "PopoutBody"
129
-
130
- const Text = forwardRef<HTMLParagraphElement, PopoutTextType>( ({children, className, ...restProps}, ref) => {
131
- return (
132
- <p ref={ref} className={`sg-popout-text ${className}`} {...restProps}>
133
- {children}
134
- </p>
135
- )
136
- })
137
- Text.displayName = "PopoutText"
138
-
139
- const Footer = forwardRef<HTMLDivElement, PopoutFooterType>( ({children, className, ...restProps}, ref) => {
140
- return (
141
- <div ref={ref} className={`sg-popout-footer ${className}`} {...restProps}>
142
- {children}
143
- </div>
144
- )
145
- })
146
- Footer.displayName = "PopoutFooter"
147
-
148
- export default Object.assign(Popout, {
149
- Header: Header,
150
- Title: Title,
151
- Body: Body,
152
- Text: Text,
153
- Footer: Footer
154
- })
155
-
@@ -1,42 +0,0 @@
1
- import { ReactNode } from "react"
2
- import { BaseDialogType, BaseDivType, BaseHeadingType, BaseParagraphType, BaseSpanType } from "../utils/BaseTypes"
3
-
4
- export type PopoutType = {
5
- children: ReactNode,
6
- initialPosition?: {
7
- top?: number,
8
- bottom?: number,
9
- right?: number,
10
- left?: number
11
- },
12
- id?: string,
13
- resize?: boolean,
14
- move?: boolean,
15
- } & BaseDialogType
16
-
17
- export type PopoutHeaderType = {
18
- children: ReactNode,
19
- className?: string,
20
- as?: React.ElementType
21
- } & (BaseDivType | BaseHeadingType | BaseSpanType)
22
-
23
- export type PopoutTitleType = {
24
- children: ReactNode,
25
- className?: string,
26
- as?: React.ElementType
27
- } & BaseHeadingType
28
-
29
- export type PopoutBodyType = {
30
- children: ReactNode,
31
- className?: string,
32
- } & BaseDivType
33
-
34
- export type PopoutTextType = {
35
- children: ReactNode,
36
- className?: string,
37
- } & BaseParagraphType
38
-
39
- export type PopoutFooterType = {
40
- children: ReactNode,
41
- className?: string,
42
- } & BaseDivType
@@ -1,3 +0,0 @@
1
- import Popout from "./Popout"
2
- export default Popout
3
- export type {PopoutBodyType, PopoutFooterType, PopoutHeaderType, PopoutTextType, PopoutTitleType, PopoutType} from "./Popout.types"
@@ -1,15 +0,0 @@
1
- import React, { forwardRef } from "react";
2
-
3
- import { SpinnerType } from "./Spinner.types";
4
-
5
- const Spinner = forwardRef<HTMLDivElement, SpinnerType>( ({size="1em", color="white", label, className, controlId, ...restProps}, ref) => {
6
- return (
7
- <>
8
- <div aria-labelledby={controlId} role="status" ref={ref} className={`sg-spinner${className ? " "+className : ""}`} style={{width:size, height:size, borderColor:color}} {...restProps}></div>
9
- <label id={controlId} className="sg-visually-hidden">{label}</label>
10
- </>
11
- )
12
- })
13
- Spinner.displayName = "Spinner"
14
-
15
- export default Spinner
@@ -1,7 +0,0 @@
1
- export type SpinnerType = {
2
- label: string,
3
- size?: string,
4
- color?: string,
5
- className?: string,
6
- controlId?: string,
7
- }
@@ -1,3 +0,0 @@
1
- import Spinner from "./Spinner"
2
- export default Spinner
3
- export type { SpinnerType } from "./Spinner.types"