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

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 (193) 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/components/input/index.d.ts +2 -1
  6. package/dist/ui-core.cjs.development.js +5 -3
  7. package/dist/ui-core.cjs.development.js.map +1 -1
  8. package/dist/ui-core.cjs.production.min.js +1 -1
  9. package/dist/ui-core.cjs.production.min.js.map +1 -1
  10. package/dist/ui-core.esm.js +5 -3
  11. package/dist/ui-core.esm.js.map +1 -1
  12. package/package.json +118 -118
  13. package/src/components/banner/Banner.stories.tsx +100 -100
  14. package/src/components/banner/index.tsx +73 -73
  15. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +66 -66
  16. package/src/components/breadcrumbs/components/icon/index.tsx +38 -38
  17. package/src/components/breadcrumbs/components/label/index.tsx +20 -20
  18. package/src/components/breadcrumbs/index.tsx +48 -48
  19. package/src/components/button/Button.stories.tsx +140 -140
  20. package/src/components/button/google/GoogleButton.stories.tsx +23 -23
  21. package/src/components/button/google/index.tsx +29 -29
  22. package/src/components/button/index.tsx +51 -51
  23. package/src/components/button/microsoft/MicrosoftButton.stories.tsx +25 -25
  24. package/src/components/button/microsoft/index.tsx +29 -29
  25. package/src/components/button/spinner/SpinnerButton.stories.tsx +60 -60
  26. package/src/components/button/spinner/index.tsx +36 -36
  27. package/src/components/card/Card.stories.tsx +56 -56
  28. package/src/components/card/index.tsx +78 -78
  29. package/src/components/form/Form.stories.tsx +62 -62
  30. package/src/components/form/FormTypes.ts +20 -20
  31. package/src/components/form/hooks/useFormHandler.tsx +74 -74
  32. package/src/components/form/index.tsx +25 -25
  33. package/src/components/form/section/FormSection.stories.tsx +109 -109
  34. package/src/components/form/section/index.tsx +87 -87
  35. package/src/components/form/utils/formErrors.ts +34 -34
  36. package/src/components/icons/checkmark/checkmark.svg +3 -3
  37. package/src/components/icons/checkmark/index.tsx +13 -13
  38. package/src/components/icons/chevron/down/chevron-down.svg +3 -3
  39. package/src/components/icons/chevron/down/index.tsx +14 -14
  40. package/src/components/icons/chevron/right/chevron-right.svg +3 -3
  41. package/src/components/icons/chevron/right/index.tsx +13 -13
  42. package/src/components/icons/clock/clock.svg +3 -3
  43. package/src/components/icons/clock/index.tsx +13 -13
  44. package/src/components/icons/close/close.svg +3 -3
  45. package/src/components/icons/close/index.tsx +21 -21
  46. package/src/components/icons/dropdown/dropdown.svg +3 -3
  47. package/src/components/icons/dropdown/index.tsx +16 -16
  48. package/src/components/icons/error/error.svg +3 -3
  49. package/src/components/icons/error/index.tsx +13 -13
  50. package/src/components/icons/file/fill/file-fill.svg +4 -4
  51. package/src/components/icons/file/fill/index.tsx +13 -13
  52. package/src/components/icons/file/outline/file-outline.svg +3 -3
  53. package/src/components/icons/file/outline/index.tsx +13 -13
  54. package/src/components/icons/folder/add/fill/folder-add-fill.svg +3 -3
  55. package/src/components/icons/folder/add/fill/index.tsx +13 -13
  56. package/src/components/icons/folder/add/outline/folder-add-outline.svg +3 -3
  57. package/src/components/icons/folder/add/outline/index.tsx +15 -15
  58. package/src/components/icons/folder/fill/folder-fill-gradient.svg +33 -33
  59. package/src/components/icons/folder/fill/folder-fill.svg +4 -4
  60. package/src/components/icons/folder/fill/index.tsx +21 -21
  61. package/src/components/icons/folder/outline/folder-outline.svg +3 -3
  62. package/src/components/icons/folder/outline/index.tsx +13 -13
  63. package/src/components/icons/gear/GearIcon.tsx +36 -36
  64. package/src/components/icons/google/drive/index.tsx +13 -13
  65. package/src/components/icons/google/google.svg +13 -13
  66. package/src/components/icons/google/index.tsx +13 -13
  67. package/src/components/icons/group/group.svg +3 -3
  68. package/src/components/icons/group/index.tsx +13 -13
  69. package/src/components/icons/home/home.svg +3 -3
  70. package/src/components/icons/home/index.tsx +13 -13
  71. package/src/components/icons/image/image.svg +3 -3
  72. package/src/components/icons/image/index.tsx +13 -13
  73. package/src/components/icons/index.tsx +101 -101
  74. package/src/components/icons/link/index.tsx +13 -13
  75. package/src/components/icons/link/link.svg +4 -4
  76. package/src/components/icons/menu/index.tsx +13 -13
  77. package/src/components/icons/menu/menu.svg +3 -3
  78. package/src/components/icons/microsoft/index.tsx +13 -13
  79. package/src/components/icons/microsoft/microsoft.svg +9 -9
  80. package/src/components/icons/microsoft/onedrive/index.tsx +16 -16
  81. package/src/components/icons/neutral/index.tsx +14 -14
  82. package/src/components/icons/neutral/neutral.svg +3 -3
  83. package/src/components/icons/page/index.tsx +13 -13
  84. package/src/components/icons/page/page.svg +3 -3
  85. package/src/components/icons/positive/index.tsx +13 -13
  86. package/src/components/icons/positive/positive.svg +3 -3
  87. package/src/components/icons/question/index.tsx +13 -13
  88. package/src/components/icons/question/question.svg +3 -3
  89. package/src/components/icons/search/index.tsx +13 -13
  90. package/src/components/icons/search/search.svg +3 -3
  91. package/src/components/icons/services/index.tsx +13 -13
  92. package/src/components/icons/services/services.svg +3 -3
  93. package/src/components/icons/settings/index.tsx +14 -14
  94. package/src/components/icons/settings/settings.svg +6 -6
  95. package/src/components/icons/table/fill/index.tsx +13 -13
  96. package/src/components/icons/table/fill/table-fill.svg +3 -3
  97. package/src/components/icons/table/outline/index.tsx +13 -13
  98. package/src/components/icons/table/outline/table-outline.svg +3 -3
  99. package/src/components/icons/task/index.tsx +10 -10
  100. package/src/components/icons/task/task.svg +11 -11
  101. package/src/components/icons/trash/index.tsx +13 -13
  102. package/src/components/icons/trash/trash.svg +3 -3
  103. package/src/components/icons/vault/index.tsx +14 -14
  104. package/src/components/icons/video/index.tsx +13 -13
  105. package/src/components/icons/video/video.svg +3 -3
  106. package/src/components/icons/warning/index.tsx +13 -13
  107. package/src/components/icons/warning/warning.svg +3 -3
  108. package/src/components/icons/workspace/index.tsx +14 -14
  109. package/src/components/input/Input.stories.tsx +287 -287
  110. package/src/components/input/InputTypes.ts +77 -77
  111. package/src/components/input/StackedCheckbox/StackedCheckbox.tsx +44 -44
  112. package/src/components/input/StackedInput/StackedInput.tsx +60 -60
  113. package/src/components/input/StackedMultiSelect/index.tsx +349 -349
  114. package/src/components/input/StackedPilledInput/index.tsx +375 -386
  115. package/src/components/input/StackedRadio/StackedRadioGroup.tsx +38 -38
  116. package/src/components/input/StackedSelect/index.tsx +232 -232
  117. package/src/components/input/StackedSwitch/index.tsx +33 -33
  118. package/src/components/input/StackedTextarea/StackedTextarea.tsx +55 -55
  119. package/src/components/input/components/dropdown/index.tsx +111 -111
  120. package/src/components/input/components/label/index.tsx +35 -35
  121. package/src/components/input/components/token/Token.stories.tsx +25 -25
  122. package/src/components/input/components/token/index.tsx +45 -45
  123. package/src/components/input/index.tsx +301 -298
  124. package/src/components/layout/BorderedBox/index.tsx +30 -30
  125. package/src/components/layout/Layout.stories.tsx +40 -40
  126. package/src/components/layout/index.tsx +100 -100
  127. package/src/components/link/Link.stories.tsx +23 -23
  128. package/src/components/link/index.tsx +34 -34
  129. package/src/components/loading/LoadingIndicator.stories.tsx +45 -45
  130. package/src/components/loading/index.tsx +45 -45
  131. package/src/components/modal/Modal.stories.tsx +36 -36
  132. package/src/components/modal/components/action/index.tsx +37 -37
  133. package/src/components/modal/index.tsx +41 -41
  134. package/src/components/navigation/NavigationMenu.stories.tsx +85 -85
  135. package/src/components/navigation/components/header/index.tsx +27 -27
  136. package/src/components/navigation/components/items/index.tsx +76 -76
  137. package/src/components/navigation/index.tsx +87 -87
  138. package/src/components/select/index.tsx +140 -140
  139. package/src/components/table/Table.stories.tsx +63 -63
  140. package/src/components/table/TableTypes.ts +15 -15
  141. package/src/components/table/components/loading/index.tsx +45 -45
  142. package/src/components/table/components/text/index.tsx +23 -23
  143. package/src/components/table/empty/index.tsx +47 -47
  144. package/src/components/table/index.tsx +84 -84
  145. package/src/components/table/utils/generateTableColumns.ts +9 -9
  146. package/src/components/tabs/TabsWrapper.stories.tsx +85 -85
  147. package/src/components/tabs/index.tsx +39 -39
  148. package/src/components/text/Text.stories.tsx +59 -59
  149. package/src/components/text/index.tsx +16 -16
  150. package/src/components/toast/Toast.stories.tsx +52 -52
  151. package/src/components/toast/index.tsx +78 -78
  152. package/src/components/toolbar/Toolbar.stories.tsx +59 -59
  153. package/src/components/toolbar/components/actions/add/index.tsx +18 -18
  154. package/src/components/toolbar/components/actions/search/index.tsx +38 -38
  155. package/src/components/toolbar/components/actions/sort/index.tsx +49 -49
  156. package/src/components/toolbar/components/breadcrumbs/index.tsx +63 -63
  157. package/src/components/toolbar/components/breadcrumbs/item/index.tsx +72 -72
  158. package/src/components/toolbar/components/dropdown/index.tsx +107 -107
  159. package/src/components/toolbar/components/navigation/components/button/left/index.tsx +28 -28
  160. package/src/components/toolbar/components/navigation/components/button/left/left-arrow.svg +3 -3
  161. package/src/components/toolbar/components/navigation/components/button/right/index.tsx +27 -27
  162. package/src/components/toolbar/components/navigation/components/button/right/right-arrow.svg +3 -3
  163. package/src/components/toolbar/components/navigation/index.tsx +36 -36
  164. package/src/components/toolbar/index.tsx +55 -55
  165. package/src/hooks/useDeepEffect.tsx +22 -22
  166. package/src/hooks/useDidMountEffect.tsx +13 -13
  167. package/src/hooks/useOnOutsideClick.tsx +31 -31
  168. package/src/hooks/useToast.tsx +16 -16
  169. package/src/index.tsx +78 -78
  170. package/src/theme/components/alert.ts +60 -60
  171. package/src/theme/components/badge.ts +59 -59
  172. package/src/theme/components/button.ts +163 -163
  173. package/src/theme/components/checkbox.ts +28 -28
  174. package/src/theme/components/code.ts +16 -16
  175. package/src/theme/components/form-error.ts +31 -31
  176. package/src/theme/components/form-label.ts +17 -17
  177. package/src/theme/components/form.ts +29 -29
  178. package/src/theme/components/input.ts +65 -65
  179. package/src/theme/components/link.ts +118 -118
  180. package/src/theme/components/modal.ts +45 -45
  181. package/src/theme/components/select.ts +36 -36
  182. package/src/theme/components/switch.ts +89 -89
  183. package/src/theme/components/table.ts +42 -42
  184. package/src/theme/components/tabs.ts +255 -255
  185. package/src/theme/components/text.ts +93 -93
  186. package/src/theme/components/textarea.ts +42 -42
  187. package/src/theme/customXQChakraTheme.ts +54 -54
  188. package/src/theme/foundations/breakpoints.ts +18 -18
  189. package/src/theme/foundations/colors.ts +165 -165
  190. package/src/theme/foundations/shadows.ts +23 -23
  191. package/src/theme/foundations/typography.ts +62 -62
  192. package/src/theme/provider/index.tsx +21 -21
  193. 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';