@popsure/dirty-swan 0.55.3 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/cjs/index.d.ts +2 -2
  2. package/dist/cjs/index.js +2688 -882
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/lib/components/modal/fullScreenModal/index.d.ts +3 -0
  5. package/dist/cjs/lib/components/modal/index.d.ts +2 -1
  6. package/dist/cjs/lib/components/modal/index.stories.d.ts +4 -0
  7. package/dist/cjs/lib/hooks/useEscapeKey.d.ts +1 -0
  8. package/dist/cjs/lib/hooks/useFocusWithin.d.ts +1 -0
  9. package/dist/cjs/lib/index.d.ts +4 -2
  10. package/dist/esm/{Calendar-3239814b.js → Calendar-d39056f4.js} +9 -9
  11. package/dist/esm/{Calendar-3239814b.js.map → Calendar-d39056f4.js.map} +1 -1
  12. package/dist/esm/{TableSection-a1be2bd3.js → TableSection-24337bc7.js} +1 -1
  13. package/dist/esm/{TableSection-a1be2bd3.js.map → TableSection-24337bc7.js.map} +1 -1
  14. package/dist/esm/components/accordion/index.js +1 -1
  15. package/dist/esm/components/accordion/index.stories.js +1 -1
  16. package/dist/esm/components/autocompleteAddress/index.test.js +1 -1
  17. package/dist/esm/components/badge/index.test.js +1 -1
  18. package/dist/esm/components/button/index.js +4 -4
  19. package/dist/esm/components/button/index.js.map +1 -1
  20. package/dist/esm/components/button/index.test.js +1 -1
  21. package/dist/esm/components/comparisonTable/components/AccordionItem/AccordionItem.js +1 -1
  22. package/dist/esm/components/comparisonTable/components/AccordionItem/index.js +1 -1
  23. package/dist/esm/components/comparisonTable/components/Row/index.js +2 -2
  24. package/dist/esm/components/comparisonTable/components/Row/index.js.map +1 -1
  25. package/dist/esm/components/comparisonTable/components/TableButton/index.test.js +2 -2
  26. package/dist/esm/components/comparisonTable/components/TableRowHeader/index.test.js +2 -2
  27. package/dist/esm/components/comparisonTable/index.js +2 -2
  28. package/dist/esm/components/comparisonTable/index.stories.js +2 -2
  29. package/dist/esm/components/dateSelector/components/Calendar.js +1 -1
  30. package/dist/esm/components/dateSelector/index.js +1 -1
  31. package/dist/esm/components/dateSelector/index.stories.js +1 -1
  32. package/dist/esm/components/dateSelector/index.test.js +2 -2
  33. package/dist/esm/components/informationBox/index.test.js +1 -1
  34. package/dist/esm/components/input/autoSuggestInput/index.js +8 -998
  35. package/dist/esm/components/input/autoSuggestInput/index.js.map +1 -1
  36. package/dist/esm/components/input/autoSuggestInput/index.stories.js +1 -0
  37. package/dist/esm/components/input/autoSuggestInput/index.stories.js.map +1 -1
  38. package/dist/esm/components/input/autoSuggestMultiSelect/index.js +1 -0
  39. package/dist/esm/components/input/autoSuggestMultiSelect/index.js.map +1 -1
  40. package/dist/esm/components/input/autoSuggestMultiSelect/index.stories.js +1 -0
  41. package/dist/esm/components/input/autoSuggestMultiSelect/index.stories.js.map +1 -1
  42. package/dist/esm/components/input/checkbox/index.test.js +1 -1
  43. package/dist/esm/components/input/currency/index.test.js +1 -1
  44. package/dist/esm/components/input/index.js +2 -2
  45. package/dist/esm/components/input/index.js.map +1 -1
  46. package/dist/esm/components/input/radio/index.test.js +1 -1
  47. package/dist/esm/components/input/toggle/index.test.js +1 -1
  48. package/dist/esm/components/modal/bottomModal/index.js +2 -0
  49. package/dist/esm/components/modal/bottomModal/index.js.map +1 -1
  50. package/dist/esm/components/modal/bottomOrRegularModal/index.js +2 -0
  51. package/dist/esm/components/modal/bottomOrRegularModal/index.js.map +1 -1
  52. package/dist/esm/components/modal/fullScreenModal/index.js +33 -0
  53. package/dist/esm/components/modal/fullScreenModal/index.js.map +1 -0
  54. package/dist/esm/components/modal/genericModal/index.js +1751 -13
  55. package/dist/esm/components/modal/genericModal/index.js.map +1 -1
  56. package/dist/esm/components/modal/index.stories.js +20 -7
  57. package/dist/esm/components/modal/index.stories.js.map +1 -1
  58. package/dist/esm/components/modal/regularModal/index.js +2 -0
  59. package/dist/esm/components/modal/regularModal/index.js.map +1 -1
  60. package/dist/esm/components/multiDropzone/index.js +3 -3
  61. package/dist/esm/components/multiDropzone/index.js.map +1 -1
  62. package/dist/esm/components/multiDropzone/index.stories.js +1 -1
  63. package/dist/esm/components/multiDropzone/index.test.js +3 -3
  64. package/dist/esm/components/segmentedControl/index.test.js +1 -1
  65. package/dist/esm/components/signaturePad/index.js +2 -2
  66. package/dist/esm/components/signaturePad/index.js.map +1 -1
  67. package/dist/esm/components/spinner/index.test.js +1 -1
  68. package/dist/esm/components/table/Table.js +4 -2
  69. package/dist/esm/components/table/Table.js.map +1 -1
  70. package/dist/esm/components/table/Table.stories.js +4 -2
  71. package/dist/esm/components/table/Table.stories.js.map +1 -1
  72. package/dist/esm/components/table/Table.test.js +5 -3
  73. package/dist/esm/components/table/Table.test.js.map +1 -1
  74. package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.js +1 -1
  75. package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.stories.js +1 -1
  76. package/dist/esm/components/table/components/TableCell/TableCell.js +3 -3
  77. package/dist/esm/components/table/components/TableCell/TableCell.js.map +1 -1
  78. package/dist/esm/components/table/components/TableCell/TableCell.test.js +2 -2
  79. package/dist/esm/components/table/components/TableContents/TableContents.js +2 -2
  80. package/dist/esm/components/table/components/TableContents/TableContents.test.js +3 -3
  81. package/dist/esm/components/table/components/TableControls/TableControls.test.js +1 -1
  82. package/dist/esm/components/table/components/TableSection/TableSection.js +2 -2
  83. package/dist/esm/components/table/components/TableSection/TableSection.test.js +3 -3
  84. package/dist/esm/components/toast/index.js +1 -1
  85. package/dist/esm/components/toast/index.stories.js +1 -1
  86. package/dist/esm/components/toast/index.test.js +2 -2
  87. package/dist/esm/{customRender-d03c10b6.js → customRender-be47569b.js} +4 -4
  88. package/dist/esm/{customRender-d03c10b6.js.map → customRender-be47569b.js.map} +1 -1
  89. package/dist/esm/index-171a0108.js +997 -0
  90. package/dist/esm/index-171a0108.js.map +1 -0
  91. package/dist/esm/{index-3aa7e697.js → index-4b19aafb.js} +4 -4
  92. package/dist/esm/{index-3aa7e697.js.map → index-4b19aafb.js.map} +1 -1
  93. package/dist/esm/{index-6f567b0b.js → index-86558de6.js} +2 -2
  94. package/dist/esm/{index-6f567b0b.js.map → index-86558de6.js.map} +1 -1
  95. package/dist/esm/{index-3d286178.js → index-af1860d8.js} +3 -3
  96. package/dist/esm/{index-3d286178.js.map → index-af1860d8.js.map} +1 -1
  97. package/dist/esm/{index-a0ef2ab4.js → index-e27b50cf.js} +4 -4
  98. package/dist/esm/{index-a0ef2ab4.js.map → index-e27b50cf.js.map} +1 -1
  99. package/dist/esm/index.d.ts +2 -2
  100. package/dist/esm/index.js +36 -6
  101. package/dist/esm/index.js.map +1 -1
  102. package/dist/esm/lib/components/modal/fullScreenModal/index.d.ts +3 -0
  103. package/dist/esm/lib/components/modal/index.d.ts +2 -1
  104. package/dist/esm/lib/components/modal/index.stories.d.ts +4 -0
  105. package/dist/esm/lib/hooks/useEscapeKey.d.ts +1 -0
  106. package/dist/esm/lib/hooks/useFocusWithin.d.ts +1 -0
  107. package/dist/esm/lib/index.d.ts +4 -2
  108. package/dist/esm/util/testUtils/customRender.js +1 -1
  109. package/package.json +2 -1
  110. package/src/index.tsx +4 -1
  111. package/src/lib/components/modal/fullScreenModal/index.tsx +24 -0
  112. package/src/lib/components/modal/fullScreenModal/style.module.scss +49 -0
  113. package/src/lib/components/modal/genericModal/index.tsx +71 -78
  114. package/src/lib/components/modal/hooks/useOnClose.ts +10 -8
  115. package/src/lib/components/modal/index.stories.tsx +54 -6
  116. package/src/lib/components/modal/index.ts +2 -1
  117. package/src/lib/hooks/useEscapeKey.ts +18 -0
  118. package/src/lib/hooks/useFocusWithin.ts +22 -0
  119. package/src/lib/index.tsx +6 -0
@@ -2,6 +2,7 @@
2
2
  import { useState } from 'react';
3
3
  import { BottomModal, BottomOrRegularModal, Props, RegularModal } from '.';
4
4
  import { Button } from '../button';
5
+ import { FullScreenModal } from './fullScreenModal';
5
6
 
6
7
  const story = {
7
8
  title: 'JSX/Modals',
@@ -88,7 +89,7 @@ export const BottomOrRegularModalStory = ({
88
89
  return (
89
90
  <>
90
91
  <button
91
- className="p-btn--primary wmn2"
92
+ className="d-flex p-btn--primary wmn2"
92
93
  onClick={() => setDisplay(true)}
93
94
  >
94
95
  Click to open modal
@@ -140,7 +141,7 @@ export const RegularModalStory = ({
140
141
  Want to use either Regular Modal or Bottom Modal based on the screen width? You can use Bottom or Regular modal.
141
142
 
142
143
  <button
143
- className="p-btn--primary wmn2 mt24"
144
+ className="d-flex p-btn--primary wmn2 mt24"
144
145
  onClick={() => setDisplay(true)}
145
146
  >
146
147
  Click to open modal
@@ -188,7 +189,7 @@ export const BottomModalStory = ({
188
189
  Want to use either Regular Modal or Bottom Modal based on the screen width? You can use Bottom or Regular modal.
189
190
 
190
191
  <button
191
- className="p-btn--primary wmn2 mt24"
192
+ className="d-flex p-btn--primary wmn2 mt24"
192
193
  onClick={() => setDisplay(true)}
193
194
  >
194
195
  Click to open modal
@@ -217,6 +218,53 @@ export const BottomModalStory = ({
217
218
 
218
219
  BottomModalStory.storyName = 'BottomModal';
219
220
 
221
+ export const FullScreenModalStory = ({
222
+ children,
223
+ isOpen,
224
+ onClose,
225
+ title,
226
+ }: Props) => {
227
+ const [display, setDisplay] = useState(isOpen);
228
+ const handleOnClose = () => {
229
+ onClose();
230
+ setDisplay(false);
231
+ };
232
+
233
+ return (
234
+ <>
235
+ Full screen modals are primary meant to be used as blocker screens. The modal will cover the entire screen and the user will be able to dismiss them using the top left "X" icon.
236
+
237
+ <button
238
+ className="d-flex p-btn--primary wmn2 mt24"
239
+ onClick={() => setDisplay(true)}
240
+ >
241
+ Click to open modal
242
+ </button>
243
+
244
+ <FullScreenModal
245
+ title={title}
246
+ isOpen={display}
247
+ onClose={handleOnClose}
248
+ >
249
+ <div style={{ padding: '0 24px 24px 24px' }}>
250
+ <div>
251
+ {children}
252
+ </div>
253
+
254
+ <button
255
+ className="p-btn--primary mt24 wmn3"
256
+ onClick={() => setDisplay(false)}
257
+ >
258
+ Continue
259
+ </button>
260
+ </div>
261
+ </FullScreenModal>
262
+ </>
263
+ );
264
+ }
265
+
266
+ FullScreenModalStory.storyName = 'FullScreenModal';
267
+
220
268
  export const NonDismissibleModal = ({
221
269
  children,
222
270
  isOpen,
@@ -237,7 +285,7 @@ export const NonDismissibleModal = ({
237
285
  <strong>Warning:</strong> a modal with the dismissible prop can only be closed by changing the isOpen prop to false.
238
286
 
239
287
  <button
240
- className="p-btn--primary wmn2 mt24"
288
+ className="d-flex p-btn--primary wmn2 mt24"
241
289
  onClick={() => setDisplay(true)}
242
290
  >
243
291
  Click to open modal
@@ -280,7 +328,7 @@ export const ModalWithFooter = ({
280
328
  return (
281
329
  <>
282
330
  <button
283
- className="p-btn--primary wmn2"
331
+ className="d-flex p-btn--primary wmn2"
284
332
  onClick={() => setDisplay(true)}
285
333
  >
286
334
  Click to open modal
@@ -326,7 +374,7 @@ export const ModalWithFooterAndScroll = ({
326
374
  return (
327
375
  <>
328
376
  <button
329
- className="p-btn--primary wmn2"
377
+ className="d-flex p-btn--primary wmn2"
330
378
  onClick={() => setDisplay(true)}
331
379
  >
332
380
  Click to open modal
@@ -1,6 +1,7 @@
1
1
  import { BottomModal } from './bottomModal';
2
2
  import { RegularModal } from './regularModal';
3
3
  import { BottomOrRegularModal } from './bottomOrRegularModal';
4
+ import { FullScreenModal } from './fullScreenModal';
4
5
  import { ReactNode } from 'react';
5
6
 
6
7
  export interface Props {
@@ -15,4 +16,4 @@ export interface Props {
15
16
  footer?: ReactNode;
16
17
  }
17
18
 
18
- export { BottomModal, RegularModal, BottomOrRegularModal };
19
+ export { BottomModal, RegularModal, BottomOrRegularModal, FullScreenModal };
@@ -0,0 +1,18 @@
1
+ import { useCallback, useEffect } from 'react';
2
+
3
+ export const useEscapeKey = (callback: () => void) => {
4
+ const handleOnEscape = useCallback(
5
+ (e: KeyboardEvent) => {
6
+ if (e.key === 'Escape') {
7
+ callback();
8
+ }
9
+ },
10
+ [callback]
11
+ );
12
+
13
+ useEffect(() => {
14
+ window.addEventListener('keydown', handleOnEscape);
15
+
16
+ return () => window.removeEventListener('keydown', handleOnEscape);
17
+ }, [handleOnEscape]);
18
+ };
@@ -0,0 +1,22 @@
1
+ import { useEffect } from 'react';
2
+
3
+ export const useFocusWithin = (
4
+ ref: HTMLElement | null,
5
+ callback: (isFocusWithin: boolean) => void
6
+ ) => {
7
+ useEffect(() => {
8
+ const handleOnFocusIn = () => {
9
+ if (!ref) {
10
+ return;
11
+ }
12
+
13
+ const hasFocus = ref?.contains(document.activeElement);
14
+
15
+ callback(Boolean(hasFocus));
16
+ };
17
+
18
+ document.addEventListener('focusin', handleOnFocusIn);
19
+
20
+ return () => document?.removeEventListener('focusin', handleOnFocusIn);
21
+ }, [callback, ref]);
22
+ };
package/src/lib/index.tsx CHANGED
@@ -23,6 +23,7 @@ import {
23
23
  BottomModal,
24
24
  RegularModal,
25
25
  BottomOrRegularModal,
26
+ FullScreenModal,
26
27
  } from './components/modal';
27
28
  import { InfoCard, CardButton } from './components/cards';
28
29
  import { Card, CardProps } from './components/cards/card';
@@ -48,6 +49,8 @@ import { Toaster, toast } from './components/toast';
48
49
  import { IconWrapperProps } from './components/icon/IconWrapper';
49
50
  import { Accordion, AccordionProps } from './components/accordion';
50
51
  import { Table, TableData, TableProps } from './components/table/Table';
52
+ import { useEscapeKey } from './hooks/useEscapeKey';
53
+ import { useFocusWithin } from './hooks/useFocusWithin';
51
54
 
52
55
  export * from './components/icon';
53
56
 
@@ -63,6 +66,7 @@ export {
63
66
  BottomModal,
64
67
  RegularModal,
65
68
  BottomOrRegularModal,
69
+ FullScreenModal,
66
70
  InfoCard,
67
71
  Card,
68
72
  CardButton,
@@ -90,6 +94,8 @@ export {
90
94
  Toggle,
91
95
  Toaster,
92
96
  toast,
97
+ useEscapeKey,
98
+ useFocusWithin,
93
99
  };
94
100
 
95
101
  export type {