@xqmsg/ui-core 0.23.1-rc.1 → 0.23.1-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/CHANGELOG.md +456 -0
  2. package/LICENSE +20 -20
  3. package/README.md +40 -40
  4. package/dist/{89793640b494d7ea.svg → 78c9d6fd7766410f.svg} +9 -9
  5. package/dist/ui-core.cjs.development.js +1 -1
  6. package/dist/ui-core.cjs.development.js.map +1 -1
  7. package/dist/ui-core.cjs.production.min.js +1 -1
  8. package/dist/ui-core.cjs.production.min.js.map +1 -1
  9. package/dist/ui-core.esm.js +1 -1
  10. package/dist/ui-core.esm.js.map +1 -1
  11. package/package.json +118 -118
  12. package/src/components/banner/Banner.stories.tsx +100 -100
  13. package/src/components/banner/index.tsx +73 -73
  14. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +66 -66
  15. package/src/components/breadcrumbs/components/icon/index.tsx +38 -38
  16. package/src/components/breadcrumbs/components/label/index.tsx +20 -20
  17. package/src/components/breadcrumbs/index.tsx +48 -48
  18. package/src/components/button/Button.stories.tsx +140 -140
  19. package/src/components/button/google/GoogleButton.stories.tsx +23 -23
  20. package/src/components/button/google/index.tsx +29 -29
  21. package/src/components/button/index.tsx +51 -51
  22. package/src/components/button/microsoft/MicrosoftButton.stories.tsx +25 -25
  23. package/src/components/button/microsoft/index.tsx +29 -29
  24. package/src/components/button/spinner/SpinnerButton.stories.tsx +60 -60
  25. package/src/components/button/spinner/index.tsx +36 -36
  26. package/src/components/card/Card.stories.tsx +56 -56
  27. package/src/components/card/index.tsx +78 -78
  28. package/src/components/form/Form.stories.tsx +62 -62
  29. package/src/components/form/FormTypes.ts +20 -20
  30. package/src/components/form/hooks/useFormHandler.tsx +74 -74
  31. package/src/components/form/index.tsx +25 -25
  32. package/src/components/form/section/FormSection.stories.tsx +109 -109
  33. package/src/components/form/section/index.tsx +87 -87
  34. package/src/components/form/utils/formErrors.ts +34 -34
  35. package/src/components/icons/checkmark/checkmark.svg +3 -3
  36. package/src/components/icons/checkmark/index.tsx +13 -13
  37. package/src/components/icons/chevron/down/chevron-down.svg +3 -3
  38. package/src/components/icons/chevron/down/index.tsx +14 -14
  39. package/src/components/icons/chevron/right/chevron-right.svg +3 -3
  40. package/src/components/icons/chevron/right/index.tsx +13 -13
  41. package/src/components/icons/clock/clock.svg +3 -3
  42. package/src/components/icons/clock/index.tsx +13 -13
  43. package/src/components/icons/close/close.svg +3 -3
  44. package/src/components/icons/close/index.tsx +21 -21
  45. package/src/components/icons/dropdown/dropdown.svg +3 -3
  46. package/src/components/icons/dropdown/index.tsx +16 -16
  47. package/src/components/icons/error/error.svg +3 -3
  48. package/src/components/icons/error/index.tsx +13 -13
  49. package/src/components/icons/file/fill/file-fill.svg +4 -4
  50. package/src/components/icons/file/fill/index.tsx +13 -13
  51. package/src/components/icons/file/outline/file-outline.svg +3 -3
  52. package/src/components/icons/file/outline/index.tsx +13 -13
  53. package/src/components/icons/folder/add/fill/folder-add-fill.svg +3 -3
  54. package/src/components/icons/folder/add/fill/index.tsx +13 -13
  55. package/src/components/icons/folder/add/outline/folder-add-outline.svg +3 -3
  56. package/src/components/icons/folder/add/outline/index.tsx +15 -15
  57. package/src/components/icons/folder/fill/folder-fill-gradient.svg +33 -33
  58. package/src/components/icons/folder/fill/folder-fill.svg +4 -4
  59. package/src/components/icons/folder/fill/index.tsx +21 -21
  60. package/src/components/icons/folder/outline/folder-outline.svg +3 -3
  61. package/src/components/icons/folder/outline/index.tsx +13 -13
  62. package/src/components/icons/gear/GearIcon.tsx +36 -36
  63. package/src/components/icons/google/drive/index.tsx +13 -13
  64. package/src/components/icons/google/google.svg +13 -13
  65. package/src/components/icons/google/index.tsx +13 -13
  66. package/src/components/icons/group/group.svg +3 -3
  67. package/src/components/icons/group/index.tsx +13 -13
  68. package/src/components/icons/home/home.svg +3 -3
  69. package/src/components/icons/home/index.tsx +13 -13
  70. package/src/components/icons/image/image.svg +3 -3
  71. package/src/components/icons/image/index.tsx +13 -13
  72. package/src/components/icons/index.tsx +101 -101
  73. package/src/components/icons/link/index.tsx +13 -13
  74. package/src/components/icons/link/link.svg +4 -4
  75. package/src/components/icons/menu/index.tsx +13 -13
  76. package/src/components/icons/menu/menu.svg +3 -3
  77. package/src/components/icons/microsoft/index.tsx +13 -13
  78. package/src/components/icons/microsoft/microsoft.svg +9 -9
  79. package/src/components/icons/microsoft/onedrive/index.tsx +16 -16
  80. package/src/components/icons/neutral/index.tsx +14 -14
  81. package/src/components/icons/neutral/neutral.svg +3 -3
  82. package/src/components/icons/page/index.tsx +13 -13
  83. package/src/components/icons/page/page.svg +3 -3
  84. package/src/components/icons/positive/index.tsx +13 -13
  85. package/src/components/icons/positive/positive.svg +3 -3
  86. package/src/components/icons/question/index.tsx +13 -13
  87. package/src/components/icons/question/question.svg +3 -3
  88. package/src/components/icons/search/index.tsx +13 -13
  89. package/src/components/icons/search/search.svg +3 -3
  90. package/src/components/icons/services/index.tsx +13 -13
  91. package/src/components/icons/services/services.svg +3 -3
  92. package/src/components/icons/settings/index.tsx +14 -14
  93. package/src/components/icons/settings/settings.svg +6 -6
  94. package/src/components/icons/table/fill/index.tsx +13 -13
  95. package/src/components/icons/table/fill/table-fill.svg +3 -3
  96. package/src/components/icons/table/outline/index.tsx +13 -13
  97. package/src/components/icons/table/outline/table-outline.svg +3 -3
  98. package/src/components/icons/task/index.tsx +10 -10
  99. package/src/components/icons/task/task.svg +11 -11
  100. package/src/components/icons/trash/index.tsx +13 -13
  101. package/src/components/icons/trash/trash.svg +3 -3
  102. package/src/components/icons/vault/index.tsx +14 -14
  103. package/src/components/icons/video/index.tsx +13 -13
  104. package/src/components/icons/video/video.svg +3 -3
  105. package/src/components/icons/warning/index.tsx +13 -13
  106. package/src/components/icons/warning/warning.svg +3 -3
  107. package/src/components/icons/workspace/index.tsx +14 -14
  108. package/src/components/input/Input.stories.tsx +287 -287
  109. package/src/components/input/InputTypes.ts +77 -77
  110. package/src/components/input/StackedCheckbox/StackedCheckbox.tsx +44 -44
  111. package/src/components/input/StackedInput/StackedInput.tsx +60 -60
  112. package/src/components/input/StackedMultiSelect/index.tsx +349 -349
  113. package/src/components/input/StackedPilledInput/index.tsx +386 -386
  114. package/src/components/input/StackedRadio/StackedRadioGroup.tsx +38 -38
  115. package/src/components/input/StackedSelect/index.tsx +232 -232
  116. package/src/components/input/StackedSwitch/index.tsx +33 -33
  117. package/src/components/input/StackedTextarea/StackedTextarea.tsx +55 -55
  118. package/src/components/input/components/dropdown/index.tsx +111 -111
  119. package/src/components/input/components/label/index.tsx +35 -35
  120. package/src/components/input/components/token/Token.stories.tsx +25 -25
  121. package/src/components/input/components/token/index.tsx +45 -45
  122. package/src/components/input/index.tsx +298 -298
  123. package/src/components/layout/BorderedBox/index.tsx +30 -30
  124. package/src/components/layout/Layout.stories.tsx +40 -40
  125. package/src/components/layout/index.tsx +100 -100
  126. package/src/components/link/Link.stories.tsx +23 -23
  127. package/src/components/link/index.tsx +34 -34
  128. package/src/components/loading/LoadingIndicator.stories.tsx +45 -45
  129. package/src/components/loading/index.tsx +45 -45
  130. package/src/components/modal/Modal.stories.tsx +36 -36
  131. package/src/components/modal/components/action/index.tsx +37 -37
  132. package/src/components/modal/index.tsx +41 -41
  133. package/src/components/navigation/NavigationMenu.stories.tsx +85 -85
  134. package/src/components/navigation/components/header/index.tsx +27 -27
  135. package/src/components/navigation/components/items/index.tsx +76 -76
  136. package/src/components/navigation/index.tsx +87 -87
  137. package/src/components/select/index.tsx +140 -140
  138. package/src/components/table/Table.stories.tsx +63 -63
  139. package/src/components/table/TableTypes.ts +15 -15
  140. package/src/components/table/components/loading/index.tsx +45 -45
  141. package/src/components/table/components/text/index.tsx +23 -23
  142. package/src/components/table/empty/index.tsx +47 -47
  143. package/src/components/table/index.tsx +84 -84
  144. package/src/components/table/utils/generateTableColumns.ts +9 -9
  145. package/src/components/tabs/TabsWrapper.stories.tsx +85 -85
  146. package/src/components/tabs/index.tsx +39 -39
  147. package/src/components/text/Text.stories.tsx +59 -59
  148. package/src/components/text/index.tsx +16 -16
  149. package/src/components/toast/Toast.stories.tsx +52 -52
  150. package/src/components/toast/index.tsx +78 -78
  151. package/src/components/toolbar/Toolbar.stories.tsx +59 -59
  152. package/src/components/toolbar/components/actions/add/index.tsx +18 -18
  153. package/src/components/toolbar/components/actions/search/index.tsx +38 -38
  154. package/src/components/toolbar/components/actions/sort/index.tsx +49 -49
  155. package/src/components/toolbar/components/breadcrumbs/index.tsx +63 -63
  156. package/src/components/toolbar/components/breadcrumbs/item/index.tsx +72 -72
  157. package/src/components/toolbar/components/dropdown/index.tsx +107 -107
  158. package/src/components/toolbar/components/navigation/components/button/left/index.tsx +28 -28
  159. package/src/components/toolbar/components/navigation/components/button/left/left-arrow.svg +3 -3
  160. package/src/components/toolbar/components/navigation/components/button/right/index.tsx +27 -27
  161. package/src/components/toolbar/components/navigation/components/button/right/right-arrow.svg +3 -3
  162. package/src/components/toolbar/components/navigation/index.tsx +36 -36
  163. package/src/components/toolbar/index.tsx +55 -55
  164. package/src/hooks/useDeepEffect.tsx +22 -22
  165. package/src/hooks/useDidMountEffect.tsx +13 -13
  166. package/src/hooks/useOnOutsideClick.tsx +31 -31
  167. package/src/hooks/useToast.tsx +16 -16
  168. package/src/index.tsx +78 -78
  169. package/src/theme/components/alert.ts +60 -60
  170. package/src/theme/components/badge.ts +59 -59
  171. package/src/theme/components/button.ts +163 -163
  172. package/src/theme/components/checkbox.ts +28 -28
  173. package/src/theme/components/code.ts +16 -16
  174. package/src/theme/components/form-error.ts +31 -31
  175. package/src/theme/components/form-label.ts +17 -17
  176. package/src/theme/components/form.ts +29 -29
  177. package/src/theme/components/input.ts +65 -65
  178. package/src/theme/components/link.ts +118 -118
  179. package/src/theme/components/modal.ts +45 -45
  180. package/src/theme/components/select.ts +36 -36
  181. package/src/theme/components/switch.ts +89 -89
  182. package/src/theme/components/table.ts +42 -42
  183. package/src/theme/components/tabs.ts +255 -255
  184. package/src/theme/components/text.ts +93 -93
  185. package/src/theme/components/textarea.ts +42 -42
  186. package/src/theme/customXQChakraTheme.ts +54 -54
  187. package/src/theme/foundations/breakpoints.ts +18 -18
  188. package/src/theme/foundations/colors.ts +165 -165
  189. package/src/theme/foundations/shadows.ts +23 -23
  190. package/src/theme/foundations/typography.ts +62 -62
  191. package/src/theme/provider/index.tsx +21 -21
  192. package/src/theme/styles.ts +19 -19
@@ -1,27 +1,27 @@
1
- import React from 'react';
2
- import { Box } from '@chakra-ui/react';
3
- import { ReactComponent as RightArrow } from './right-arrow.svg';
4
-
5
- export interface RightArrowButtonProps {
6
- onClick: () => void;
7
- disabled: boolean;
8
- }
9
-
10
- /**
11
- * A functional React component utilized to render the `RightArrowButton` component
12
- */
13
- export const RightArrowButton: React.FC<RightArrowButtonProps> = ({
14
- onClick,
15
- disabled,
16
- }) => {
17
- return (
18
- <Box
19
- onClick={() => {
20
- if (!disabled) return onClick();
21
- }}
22
- cursor={disabled ? 'not-allowed' : 'pointer'}
23
- >
24
- <RightArrow stroke={disabled ? '#3C3C43' : 'black'} />
25
- </Box>
26
- );
27
- };
1
+ import React from 'react';
2
+ import { Box } from '@chakra-ui/react';
3
+ import { ReactComponent as RightArrow } from './right-arrow.svg';
4
+
5
+ export interface RightArrowButtonProps {
6
+ onClick: () => void;
7
+ disabled: boolean;
8
+ }
9
+
10
+ /**
11
+ * A functional React component utilized to render the `RightArrowButton` component
12
+ */
13
+ export const RightArrowButton: React.FC<RightArrowButtonProps> = ({
14
+ onClick,
15
+ disabled,
16
+ }) => {
17
+ return (
18
+ <Box
19
+ onClick={() => {
20
+ if (!disabled) return onClick();
21
+ }}
22
+ cursor={disabled ? 'not-allowed' : 'pointer'}
23
+ >
24
+ <RightArrow stroke={disabled ? '#3C3C43' : 'black'} />
25
+ </Box>
26
+ );
27
+ };
@@ -1,3 +1,3 @@
1
- <svg width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M0.875 0.75L7.125 7L0.874999 13.25" stroke="current" stroke-opacity="0.6" stroke-linecap="round" stroke-linejoin="round"/>
3
- </svg>
1
+ <svg width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0.875 0.75L7.125 7L0.874999 13.25" stroke="current" stroke-opacity="0.6" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -1,36 +1,36 @@
1
- import React from 'react';
2
- import { Box, Flex } from '@chakra-ui/react';
3
- import { LeftArrowButton } from './components/button/left';
4
- import { RightArrowButton } from './components/button/right';
5
-
6
- export interface NavigationButtonsProps {
7
- onBackClick?: () => void;
8
- onForwardClick?: () => void;
9
- backButtonDisabled?: boolean;
10
- forwardButtonDisabled?: boolean;
11
- }
12
-
13
- /**
14
- * A functional React component utilized to render the `NavigationButtons` component
15
- */
16
- export const NavigationButtons: React.FC<NavigationButtonsProps> = ({
17
- onBackClick,
18
- onForwardClick,
19
- backButtonDisabled,
20
- forwardButtonDisabled,
21
- }) => {
22
- return (
23
- <Flex width="fit-content" alignItems="center" mr="24px">
24
- <Box transform="scaleX(-1)" mr="16px">
25
- <LeftArrowButton
26
- onClick={() => onBackClick && onBackClick()}
27
- disabled={backButtonDisabled || false}
28
- />
29
- </Box>
30
- <RightArrowButton
31
- onClick={() => onForwardClick && onForwardClick()}
32
- disabled={forwardButtonDisabled || false}
33
- />
34
- </Flex>
35
- );
36
- };
1
+ import React from 'react';
2
+ import { Box, Flex } from '@chakra-ui/react';
3
+ import { LeftArrowButton } from './components/button/left';
4
+ import { RightArrowButton } from './components/button/right';
5
+
6
+ export interface NavigationButtonsProps {
7
+ onBackClick?: () => void;
8
+ onForwardClick?: () => void;
9
+ backButtonDisabled?: boolean;
10
+ forwardButtonDisabled?: boolean;
11
+ }
12
+
13
+ /**
14
+ * A functional React component utilized to render the `NavigationButtons` component
15
+ */
16
+ export const NavigationButtons: React.FC<NavigationButtonsProps> = ({
17
+ onBackClick,
18
+ onForwardClick,
19
+ backButtonDisabled,
20
+ forwardButtonDisabled,
21
+ }) => {
22
+ return (
23
+ <Flex width="fit-content" alignItems="center" mr="24px">
24
+ <Box transform="scaleX(-1)" mr="16px">
25
+ <LeftArrowButton
26
+ onClick={() => onBackClick && onBackClick()}
27
+ disabled={backButtonDisabled || false}
28
+ />
29
+ </Box>
30
+ <RightArrowButton
31
+ onClick={() => onForwardClick && onForwardClick()}
32
+ disabled={forwardButtonDisabled || false}
33
+ />
34
+ </Flex>
35
+ );
36
+ };
@@ -1,55 +1,55 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import { Flex } from '@chakra-ui/react';
3
- import { ToolbarBreadcrumbs } from './components/breadcrumbs';
4
- import { NavigationButtons } from './components/navigation';
5
-
6
- export type ToolbarLabelAndHandler = { label: string; handler: () => void };
7
-
8
- export interface ToolbarProps extends PropsWithChildren {
9
- pageList: ToolbarLabelAndHandler[];
10
- currentPage: string;
11
- onBackClick?: () => void;
12
- onForwardClick?: () => void;
13
- backButtonDisabled?: boolean;
14
- forwardButtonDisabled?: boolean;
15
- }
16
-
17
- /**
18
- * A functional React component utilized to render the `Toolbar` component
19
- */
20
- export const Toolbar: React.FC<ToolbarProps> = ({
21
- children,
22
- pageList,
23
- forwardButtonDisabled,
24
- backButtonDisabled,
25
- currentPage,
26
- onBackClick,
27
- onForwardClick,
28
- }) => {
29
- const hasNav = !!onBackClick && !!onForwardClick;
30
-
31
- return (
32
- <Flex flexDirection="column" borderBottom="0.5px solid #3C3C432E">
33
- <Flex
34
- height="52px"
35
- px="32px"
36
- alignItems="center"
37
- justifyContent="space-between"
38
- background="white"
39
- >
40
- <Flex>
41
- {hasNav && (
42
- <NavigationButtons
43
- onBackClick={onBackClick}
44
- onForwardClick={onForwardClick}
45
- backButtonDisabled={backButtonDisabled}
46
- forwardButtonDisabled={forwardButtonDisabled}
47
- />
48
- )}
49
- <ToolbarBreadcrumbs pageList={pageList} currentPage={currentPage} />
50
- </Flex>
51
- <Flex alignItems="center">{children} </Flex>
52
- </Flex>
53
- </Flex>
54
- );
55
- };
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { Flex } from '@chakra-ui/react';
3
+ import { ToolbarBreadcrumbs } from './components/breadcrumbs';
4
+ import { NavigationButtons } from './components/navigation';
5
+
6
+ export type ToolbarLabelAndHandler = { label: string; handler: () => void };
7
+
8
+ export interface ToolbarProps extends PropsWithChildren {
9
+ pageList: ToolbarLabelAndHandler[];
10
+ currentPage: string;
11
+ onBackClick?: () => void;
12
+ onForwardClick?: () => void;
13
+ backButtonDisabled?: boolean;
14
+ forwardButtonDisabled?: boolean;
15
+ }
16
+
17
+ /**
18
+ * A functional React component utilized to render the `Toolbar` component
19
+ */
20
+ export const Toolbar: React.FC<ToolbarProps> = ({
21
+ children,
22
+ pageList,
23
+ forwardButtonDisabled,
24
+ backButtonDisabled,
25
+ currentPage,
26
+ onBackClick,
27
+ onForwardClick,
28
+ }) => {
29
+ const hasNav = !!onBackClick && !!onForwardClick;
30
+
31
+ return (
32
+ <Flex flexDirection="column" borderBottom="0.5px solid #3C3C432E">
33
+ <Flex
34
+ height="52px"
35
+ px="32px"
36
+ alignItems="center"
37
+ justifyContent="space-between"
38
+ background="white"
39
+ >
40
+ <Flex>
41
+ {hasNav && (
42
+ <NavigationButtons
43
+ onBackClick={onBackClick}
44
+ onForwardClick={onForwardClick}
45
+ backButtonDisabled={backButtonDisabled}
46
+ forwardButtonDisabled={forwardButtonDisabled}
47
+ />
48
+ )}
49
+ <ToolbarBreadcrumbs pageList={pageList} currentPage={currentPage} />
50
+ </Flex>
51
+ <Flex alignItems="center">{children} </Flex>
52
+ </Flex>
53
+ </Flex>
54
+ );
55
+ };
@@ -1,22 +1,22 @@
1
- import { DependencyList, EffectCallback, useEffect, useRef } from 'react';
2
- import isEqual from 'lodash/isEqual';
3
-
4
- /**
5
- * Same as useEffect but does a deep comparison
6
- */
7
- export default function useDeepEffect(
8
- func: EffectCallback,
9
- dependencies: DependencyList
10
- ) {
11
- const dependenciesRef = useRef(dependencies);
12
-
13
- useEffect(() => {
14
- if (!isEqual(dependenciesRef.current, dependencies)) {
15
- // Execute the function
16
- func();
17
-
18
- // Update the dependencies
19
- dependenciesRef.current = dependencies;
20
- }
21
- }, [func, dependencies]);
22
- }
1
+ import { DependencyList, EffectCallback, useEffect, useRef } from 'react';
2
+ import isEqual from 'lodash/isEqual';
3
+
4
+ /**
5
+ * Same as useEffect but does a deep comparison
6
+ */
7
+ export default function useDeepEffect(
8
+ func: EffectCallback,
9
+ dependencies: DependencyList
10
+ ) {
11
+ const dependenciesRef = useRef(dependencies);
12
+
13
+ useEffect(() => {
14
+ if (!isEqual(dependenciesRef.current, dependencies)) {
15
+ // Execute the function
16
+ func();
17
+
18
+ // Update the dependencies
19
+ dependenciesRef.current = dependencies;
20
+ }
21
+ }, [func, dependencies]);
22
+ }
@@ -1,13 +1,13 @@
1
- import { useEffect, useRef } from 'react';
2
-
3
- const useDidMountEffect = (func: () => void, deps: unknown[]) => {
4
- const didMount = useRef(false);
5
-
6
- useEffect(() => {
7
- if (didMount.current) func();
8
- else didMount.current = true;
9
- // eslint-disable-next-line
10
- }, deps);
11
- };
12
-
13
- export default useDidMountEffect;
1
+ import { useEffect, useRef } from 'react';
2
+
3
+ const useDidMountEffect = (func: () => void, deps: unknown[]) => {
4
+ const didMount = useRef(false);
5
+
6
+ useEffect(() => {
7
+ if (didMount.current) func();
8
+ else didMount.current = true;
9
+ // eslint-disable-next-line
10
+ }, deps);
11
+ };
12
+
13
+ export default useDidMountEffect;
@@ -1,31 +1,31 @@
1
- import { RefObject, useEffect } from 'react';
2
-
3
- export function useOnClickOutside(ref: RefObject<any>, handler: () => void) {
4
- useEffect(
5
- () => {
6
- const listener: EventListener = event => {
7
- // Do nothing if clicking ref's element or descendent elements
8
- if (!ref.current || ref.current.contains(event.target)) {
9
- return;
10
- }
11
-
12
- handler();
13
- };
14
-
15
- document.addEventListener('mousedown', listener);
16
- document.addEventListener('touchstart', listener);
17
-
18
- return () => {
19
- document.removeEventListener('mousedown', listener);
20
- document.removeEventListener('touchstart', listener);
21
- };
22
- },
23
- // Add ref and handler to effect dependencies
24
- // It's worth noting that because passed in handler is a new ...
25
- // ... function on every render that will cause this effect ...
26
- // ... callback/cleanup to run every render. It's not a big deal ...
27
- // ... but to optimize you can wrap handler in useCallback before ...
28
- // ... passing it into this hook.
29
- [ref, handler]
30
- );
31
- }
1
+ import { RefObject, useEffect } from 'react';
2
+
3
+ export function useOnClickOutside(ref: RefObject<any>, handler: () => void) {
4
+ useEffect(
5
+ () => {
6
+ const listener: EventListener = event => {
7
+ // Do nothing if clicking ref's element or descendent elements
8
+ if (!ref.current || ref.current.contains(event.target)) {
9
+ return;
10
+ }
11
+
12
+ handler();
13
+ };
14
+
15
+ document.addEventListener('mousedown', listener);
16
+ document.addEventListener('touchstart', listener);
17
+
18
+ return () => {
19
+ document.removeEventListener('mousedown', listener);
20
+ document.removeEventListener('touchstart', listener);
21
+ };
22
+ },
23
+ // Add ref and handler to effect dependencies
24
+ // It's worth noting that because passed in handler is a new ...
25
+ // ... function on every render that will cause this effect ...
26
+ // ... callback/cleanup to run every render. It's not a big deal ...
27
+ // ... but to optimize you can wrap handler in useCallback before ...
28
+ // ... passing it into this hook.
29
+ [ref, handler]
30
+ );
31
+ }
@@ -1,16 +1,16 @@
1
- import { ToastPosition, useToast as useChakraToast } from '@chakra-ui/react';
2
- import React, { useCallback } from 'react';
3
- import { Toast, ToastProps } from '../components/toast';
4
-
5
- export const useToast = () => {
6
- const toast = useChakraToast();
7
-
8
- return useCallback(
9
- (props: ToastProps & { position: ToastPosition }) =>
10
- toast({
11
- position: props.position,
12
- render: () => <Toast {...props} />,
13
- }),
14
- [toast]
15
- );
16
- };
1
+ import { ToastPosition, useToast as useChakraToast } from '@chakra-ui/react';
2
+ import React, { useCallback } from 'react';
3
+ import { Toast, ToastProps } from '../components/toast';
4
+
5
+ export const useToast = () => {
6
+ const toast = useChakraToast();
7
+
8
+ return useCallback(
9
+ (props: ToastProps & { position: ToastPosition }) =>
10
+ toast({
11
+ position: props.position,
12
+ render: () => <Toast {...props} />,
13
+ }),
14
+ [toast]
15
+ );
16
+ };
package/src/index.tsx CHANGED
@@ -1,78 +1,78 @@
1
- // Components
2
- // Action Row
3
- export * from './components/modal/components/action';
4
-
5
- // Banner
6
- export * from './components/banner';
7
-
8
- // Breadcrumbs
9
- export * from './components/breadcrumbs';
10
-
11
- // Button
12
- export * from './components/button';
13
-
14
- // Card
15
- export * from './components/card';
16
-
17
- // Google Button
18
- export * from './components/button/google';
19
-
20
- // Microsoft Button
21
- export * from './components/button/microsoft';
22
-
23
- // Loading Spinner
24
- export * from './components/button/spinner';
25
-
26
- // Form
27
- export * from './components/form';
28
-
29
- // Form Section
30
- export * from './components/form/section';
31
-
32
- // Icons
33
- export * from './components/icons';
34
-
35
- // Input
36
- export * from './components/input';
37
-
38
- // Select
39
- export { SelectNative } from './components/select';
40
-
41
- // Layout
42
- export * from './components/layout';
43
-
44
- // Link
45
- export { Link } from './components/link';
46
-
47
- // Loading
48
- export * from './components/loading';
49
-
50
- // Modal
51
- export * from './components/modal';
52
-
53
- // Navigation Menu
54
- export * from './components/navigation';
55
-
56
- // Table
57
- export * from './components/table';
58
-
59
- // Table Nav
60
- export * from './components/tabs';
61
-
62
- // Text
63
- export * from './components/text';
64
-
65
- // Theme Provider
66
- export * from './theme/provider';
67
-
68
- // Toolbar
69
- export * from './components/toolbar';
70
-
71
- // Hooks
72
- export * from './hooks/useToast';
73
-
74
- //Utils
75
- export * from './components/form/utils/formErrors';
76
-
77
- // Colors
78
- export * from './theme/foundations/colors';
1
+ // Components
2
+ // Action Row
3
+ export * from './components/modal/components/action';
4
+
5
+ // Banner
6
+ export * from './components/banner';
7
+
8
+ // Breadcrumbs
9
+ export * from './components/breadcrumbs';
10
+
11
+ // Button
12
+ export * from './components/button';
13
+
14
+ // Card
15
+ export * from './components/card';
16
+
17
+ // Google Button
18
+ export * from './components/button/google';
19
+
20
+ // Microsoft Button
21
+ export * from './components/button/microsoft';
22
+
23
+ // Loading Spinner
24
+ export * from './components/button/spinner';
25
+
26
+ // Form
27
+ export * from './components/form';
28
+
29
+ // Form Section
30
+ export * from './components/form/section';
31
+
32
+ // Icons
33
+ export * from './components/icons';
34
+
35
+ // Input
36
+ export * from './components/input';
37
+
38
+ // Select
39
+ export { SelectNative } from './components/select';
40
+
41
+ // Layout
42
+ export * from './components/layout';
43
+
44
+ // Link
45
+ export { Link } from './components/link';
46
+
47
+ // Loading
48
+ export * from './components/loading';
49
+
50
+ // Modal
51
+ export * from './components/modal';
52
+
53
+ // Navigation Menu
54
+ export * from './components/navigation';
55
+
56
+ // Table
57
+ export * from './components/table';
58
+
59
+ // Table Nav
60
+ export * from './components/tabs';
61
+
62
+ // Text
63
+ export * from './components/text';
64
+
65
+ // Theme Provider
66
+ export * from './theme/provider';
67
+
68
+ // Toolbar
69
+ export * from './components/toolbar';
70
+
71
+ // Hooks
72
+ export * from './hooks/useToast';
73
+
74
+ //Utils
75
+ export * from './components/form/utils/formErrors';
76
+
77
+ // Colors
78
+ export * from './theme/foundations/colors';