@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
@@ -1 +1 @@
1
- {"version":3,"file":"index-a0ef2ab4.js","sources":["../../node_modules/react-animate-height/dist/esm/index.js"],"sourcesContent":["var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\n// ------------------ Helpers\nfunction isNumber(n) {\n const number = parseFloat(n);\n return !isNaN(number) && isFinite(number);\n}\nfunction isPercentage(height) {\n // Percentage height\n return (typeof height === 'string' &&\n height[height.length - 1] === '%' &&\n isNumber(height.substring(0, height.length - 1)));\n}\nfunction hideContent(element, height) {\n // Check for element?.style is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n if (height === 0 && (element === null || element === void 0 ? void 0 : element.style)) {\n element.style.display = 'none';\n }\n}\nfunction showContent(element, height) {\n // Check for element?.style is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n if (height === 0 && (element === null || element === void 0 ? void 0 : element.style)) {\n element.style.display = '';\n }\n}\nconst ANIMATION_STATE_CLASSES = {\n animating: 'rah-animating',\n animatingUp: 'rah-animating--up',\n animatingDown: 'rah-animating--down',\n animatingToHeightZero: 'rah-animating--to-height-zero',\n animatingToHeightAuto: 'rah-animating--to-height-auto',\n animatingToHeightSpecific: 'rah-animating--to-height-specific',\n static: 'rah-static',\n staticHeightZero: 'rah-static--height-zero',\n staticHeightAuto: 'rah-static--height-auto',\n staticHeightSpecific: 'rah-static--height-specific',\n};\nfunction getStaticStateClasses(animationStateClasses, height) {\n return classNames({\n [animationStateClasses.static]: true,\n [animationStateClasses.staticHeightZero]: height === 0,\n [animationStateClasses.staticHeightSpecific]: height > 0,\n [animationStateClasses.staticHeightAuto]: height === 'auto',\n });\n}\nconst AnimateHeight = (_a) => {\n var { animateOpacity = false, animationStateClasses = {}, applyInlineTransitions = true, children, className = '', contentClassName, delay: userDelay = 0, duration: userDuration = 500, easing = 'ease', height, onHeightAnimationEnd, onHeightAnimationStart, style } = _a, props = __rest(_a, [\"animateOpacity\", \"animationStateClasses\", \"applyInlineTransitions\", \"children\", \"className\", \"contentClassName\", \"delay\", \"duration\", \"easing\", \"height\", \"onHeightAnimationEnd\", \"onHeightAnimationStart\", \"style\"]);\n // ------------------ Initialization\n const prevHeight = useRef(height);\n const contentElement = useRef(null);\n const animationClassesTimeoutID = useRef();\n const timeoutID = useRef();\n const stateClasses = useRef(Object.assign(Object.assign({}, ANIMATION_STATE_CLASSES), animationStateClasses));\n const isBrowser = typeof window !== 'undefined';\n const prefersReducedMotion = useRef(isBrowser && window.matchMedia\n ? window.matchMedia('(prefers-reduced-motion)').matches\n : false);\n const delay = prefersReducedMotion.current ? 0 : userDelay;\n const duration = prefersReducedMotion.current ? 0 : userDuration;\n let initHeight = height;\n let initOverflow = 'visible';\n if (typeof initHeight === 'number') {\n // Reset negative height to 0\n initHeight = height < 0 ? 0 : height;\n initOverflow = 'hidden';\n }\n else if (isPercentage(initHeight)) {\n // If value is string \"0%\" make sure we convert it to number 0\n initHeight = height === '0%' ? 0 : height;\n initOverflow = 'hidden';\n }\n const [currentHeight, setCurrentHeight] = useState(initHeight);\n const [overflow, setOverflow] = useState(initOverflow);\n const [useTransitions, setUseTransitions] = useState(false);\n const [animationStateClassNames, setAnimationStateClassNames] = useState(getStaticStateClasses(stateClasses.current, height));\n // ------------------ Did mount\n useEffect(() => {\n // Hide content if height is 0 (to prevent tabbing into it)\n hideContent(contentElement.current, currentHeight);\n // This should be explicitly run only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n // ------------------ Height update\n useEffect(() => {\n if (height !== prevHeight.current && contentElement.current) {\n showContent(contentElement.current, prevHeight.current);\n // Cache content height\n contentElement.current.style.overflow = 'hidden';\n const contentHeight = contentElement.current.offsetHeight;\n contentElement.current.style.overflow = '';\n // set total animation time\n const totalDuration = duration + delay;\n let newHeight;\n let timeoutHeight;\n let timeoutOverflow = 'hidden';\n let timeoutUseTransitions;\n const isCurrentHeightAuto = prevHeight.current === 'auto';\n if (typeof height === 'number') {\n // Reset negative height to 0\n newHeight = height < 0 ? 0 : height;\n timeoutHeight = newHeight;\n }\n else if (isPercentage(height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n newHeight = height === '0%' ? 0 : height;\n timeoutHeight = newHeight;\n }\n else {\n // If not, animate to content height\n // and then reset to auto\n newHeight = contentHeight; // TODO solve contentHeight = 0\n timeoutHeight = 'auto';\n timeoutOverflow = undefined;\n }\n if (isCurrentHeightAuto) {\n // This is the height to be animated to\n timeoutHeight = newHeight;\n // If previous height was 'auto'\n // set starting height explicitly to be able to use transition\n newHeight = contentHeight;\n }\n // Animation classes\n const newAnimationStateClassNames = classNames({\n [stateClasses.current.animating]: true,\n [stateClasses.current.animatingUp]: prevHeight.current === 'auto' || height < prevHeight.current,\n [stateClasses.current.animatingDown]: height === 'auto' || height > prevHeight.current,\n [stateClasses.current.animatingToHeightZero]: timeoutHeight === 0,\n [stateClasses.current.animatingToHeightAuto]: timeoutHeight === 'auto',\n [stateClasses.current.animatingToHeightSpecific]: timeoutHeight > 0,\n });\n // Animation classes to be put after animation is complete\n const timeoutAnimationStateClasses = getStaticStateClasses(stateClasses.current, timeoutHeight);\n // Set starting height and animating classes\n // When animating from 'auto' we first need to set fixed height\n // that change should be animated\n setCurrentHeight(newHeight);\n setOverflow('hidden');\n setUseTransitions(!isCurrentHeightAuto);\n setAnimationStateClassNames(newAnimationStateClassNames);\n // Clear timeouts\n clearTimeout(timeoutID.current);\n clearTimeout(animationClassesTimeoutID.current);\n if (isCurrentHeightAuto) {\n // When animating from 'auto' we use a short timeout to start animation\n // after setting fixed height above\n timeoutUseTransitions = true;\n // Short timeout to allow rendering of the initial animation state first\n timeoutID.current = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(timeoutUseTransitions);\n // ANIMATION STARTS, run a callback if it exists\n onHeightAnimationStart === null || onHeightAnimationStart === void 0 ? void 0 : onHeightAnimationStart(timeoutHeight);\n }, 50);\n // Set static classes and remove transitions when animation ends\n animationClassesTimeoutID.current = setTimeout(() => {\n setUseTransitions(false);\n setAnimationStateClassNames(timeoutAnimationStateClasses);\n // ANIMATION ENDS\n // Hide content if height is 0 (to prevent tabbing into it)\n hideContent(contentElement.current, timeoutHeight);\n // Run a callback if it exists\n onHeightAnimationEnd === null || onHeightAnimationEnd === void 0 ? void 0 : onHeightAnimationEnd(timeoutHeight);\n }, totalDuration);\n }\n else {\n // ANIMATION STARTS, run a callback if it exists\n onHeightAnimationStart === null || onHeightAnimationStart === void 0 ? void 0 : onHeightAnimationStart(newHeight);\n // Set end height, classes and remove transitions when animation is complete\n timeoutID.current = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(false);\n setAnimationStateClassNames(timeoutAnimationStateClasses);\n // ANIMATION ENDS\n // If height is auto, don't hide the content\n // (case when element is empty, therefore height is 0)\n if (height !== 'auto') {\n // Hide content if height is 0 (to prevent tabbing into it)\n hideContent(contentElement.current, newHeight); // TODO solve newHeight = 0\n }\n // Run a callback if it exists\n onHeightAnimationEnd === null || onHeightAnimationEnd === void 0 ? void 0 : onHeightAnimationEnd(newHeight);\n }, totalDuration);\n }\n }\n prevHeight.current = height;\n return () => {\n clearTimeout(timeoutID.current);\n clearTimeout(animationClassesTimeoutID.current);\n };\n // This should be explicitly run only on height change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height]);\n // ------------------ Render\n const componentStyle = Object.assign(Object.assign({}, style), { height: currentHeight, overflow: overflow || (style === null || style === void 0 ? void 0 : style.overflow) });\n if (useTransitions && applyInlineTransitions) {\n componentStyle.transition = `height ${duration}ms ${easing} ${delay}ms`;\n // Include transition passed through styles\n if (style === null || style === void 0 ? void 0 : style.transition) {\n componentStyle.transition = `${style.transition}, ${componentStyle.transition}`;\n }\n // Add webkit vendor prefix still used by opera, blackberry...\n componentStyle.WebkitTransition = componentStyle.transition;\n }\n const contentStyle = {};\n if (animateOpacity) {\n contentStyle.transition = `opacity ${duration}ms ${easing} ${delay}ms`;\n // Add webkit vendor prefix still used by opera, blackberry...\n contentStyle.WebkitTransition = contentStyle.transition;\n if (currentHeight === 0) {\n contentStyle.opacity = 0;\n }\n }\n // Check if user passed aria-hidden prop\n const hasAriaHiddenProp = typeof props['aria-hidden'] !== 'undefined';\n const ariaHidden = hasAriaHiddenProp ? props['aria-hidden'] : height === 0;\n return (React.createElement(\"div\", Object.assign({}, props, { \"aria-hidden\": ariaHidden, className: `${animationStateClassNames} ${className}`, style: componentStyle }),\n React.createElement(\"div\", { className: contentClassName, style: contentStyle, ref: contentElement }, children)));\n};\nexport default AnimateHeight;\n"],"names":["this","React"],"mappings":"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"}
1
+ {"version":3,"file":"index-e27b50cf.js","sources":["../../node_modules/react-animate-height/dist/esm/index.js"],"sourcesContent":["var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\n// ------------------ Helpers\nfunction isNumber(n) {\n const number = parseFloat(n);\n return !isNaN(number) && isFinite(number);\n}\nfunction isPercentage(height) {\n // Percentage height\n return (typeof height === 'string' &&\n height[height.length - 1] === '%' &&\n isNumber(height.substring(0, height.length - 1)));\n}\nfunction hideContent(element, height) {\n // Check for element?.style is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n if (height === 0 && (element === null || element === void 0 ? void 0 : element.style)) {\n element.style.display = 'none';\n }\n}\nfunction showContent(element, height) {\n // Check for element?.style is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n if (height === 0 && (element === null || element === void 0 ? void 0 : element.style)) {\n element.style.display = '';\n }\n}\nconst ANIMATION_STATE_CLASSES = {\n animating: 'rah-animating',\n animatingUp: 'rah-animating--up',\n animatingDown: 'rah-animating--down',\n animatingToHeightZero: 'rah-animating--to-height-zero',\n animatingToHeightAuto: 'rah-animating--to-height-auto',\n animatingToHeightSpecific: 'rah-animating--to-height-specific',\n static: 'rah-static',\n staticHeightZero: 'rah-static--height-zero',\n staticHeightAuto: 'rah-static--height-auto',\n staticHeightSpecific: 'rah-static--height-specific',\n};\nfunction getStaticStateClasses(animationStateClasses, height) {\n return classNames({\n [animationStateClasses.static]: true,\n [animationStateClasses.staticHeightZero]: height === 0,\n [animationStateClasses.staticHeightSpecific]: height > 0,\n [animationStateClasses.staticHeightAuto]: height === 'auto',\n });\n}\nconst AnimateHeight = (_a) => {\n var { animateOpacity = false, animationStateClasses = {}, applyInlineTransitions = true, children, className = '', contentClassName, delay: userDelay = 0, duration: userDuration = 500, easing = 'ease', height, onHeightAnimationEnd, onHeightAnimationStart, style } = _a, props = __rest(_a, [\"animateOpacity\", \"animationStateClasses\", \"applyInlineTransitions\", \"children\", \"className\", \"contentClassName\", \"delay\", \"duration\", \"easing\", \"height\", \"onHeightAnimationEnd\", \"onHeightAnimationStart\", \"style\"]);\n // ------------------ Initialization\n const prevHeight = useRef(height);\n const contentElement = useRef(null);\n const animationClassesTimeoutID = useRef();\n const timeoutID = useRef();\n const stateClasses = useRef(Object.assign(Object.assign({}, ANIMATION_STATE_CLASSES), animationStateClasses));\n const isBrowser = typeof window !== 'undefined';\n const prefersReducedMotion = useRef(isBrowser && window.matchMedia\n ? window.matchMedia('(prefers-reduced-motion)').matches\n : false);\n const delay = prefersReducedMotion.current ? 0 : userDelay;\n const duration = prefersReducedMotion.current ? 0 : userDuration;\n let initHeight = height;\n let initOverflow = 'visible';\n if (typeof initHeight === 'number') {\n // Reset negative height to 0\n initHeight = height < 0 ? 0 : height;\n initOverflow = 'hidden';\n }\n else if (isPercentage(initHeight)) {\n // If value is string \"0%\" make sure we convert it to number 0\n initHeight = height === '0%' ? 0 : height;\n initOverflow = 'hidden';\n }\n const [currentHeight, setCurrentHeight] = useState(initHeight);\n const [overflow, setOverflow] = useState(initOverflow);\n const [useTransitions, setUseTransitions] = useState(false);\n const [animationStateClassNames, setAnimationStateClassNames] = useState(getStaticStateClasses(stateClasses.current, height));\n // ------------------ Did mount\n useEffect(() => {\n // Hide content if height is 0 (to prevent tabbing into it)\n hideContent(contentElement.current, currentHeight);\n // This should be explicitly run only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n // ------------------ Height update\n useEffect(() => {\n if (height !== prevHeight.current && contentElement.current) {\n showContent(contentElement.current, prevHeight.current);\n // Cache content height\n contentElement.current.style.overflow = 'hidden';\n const contentHeight = contentElement.current.offsetHeight;\n contentElement.current.style.overflow = '';\n // set total animation time\n const totalDuration = duration + delay;\n let newHeight;\n let timeoutHeight;\n let timeoutOverflow = 'hidden';\n let timeoutUseTransitions;\n const isCurrentHeightAuto = prevHeight.current === 'auto';\n if (typeof height === 'number') {\n // Reset negative height to 0\n newHeight = height < 0 ? 0 : height;\n timeoutHeight = newHeight;\n }\n else if (isPercentage(height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n newHeight = height === '0%' ? 0 : height;\n timeoutHeight = newHeight;\n }\n else {\n // If not, animate to content height\n // and then reset to auto\n newHeight = contentHeight; // TODO solve contentHeight = 0\n timeoutHeight = 'auto';\n timeoutOverflow = undefined;\n }\n if (isCurrentHeightAuto) {\n // This is the height to be animated to\n timeoutHeight = newHeight;\n // If previous height was 'auto'\n // set starting height explicitly to be able to use transition\n newHeight = contentHeight;\n }\n // Animation classes\n const newAnimationStateClassNames = classNames({\n [stateClasses.current.animating]: true,\n [stateClasses.current.animatingUp]: prevHeight.current === 'auto' || height < prevHeight.current,\n [stateClasses.current.animatingDown]: height === 'auto' || height > prevHeight.current,\n [stateClasses.current.animatingToHeightZero]: timeoutHeight === 0,\n [stateClasses.current.animatingToHeightAuto]: timeoutHeight === 'auto',\n [stateClasses.current.animatingToHeightSpecific]: timeoutHeight > 0,\n });\n // Animation classes to be put after animation is complete\n const timeoutAnimationStateClasses = getStaticStateClasses(stateClasses.current, timeoutHeight);\n // Set starting height and animating classes\n // When animating from 'auto' we first need to set fixed height\n // that change should be animated\n setCurrentHeight(newHeight);\n setOverflow('hidden');\n setUseTransitions(!isCurrentHeightAuto);\n setAnimationStateClassNames(newAnimationStateClassNames);\n // Clear timeouts\n clearTimeout(timeoutID.current);\n clearTimeout(animationClassesTimeoutID.current);\n if (isCurrentHeightAuto) {\n // When animating from 'auto' we use a short timeout to start animation\n // after setting fixed height above\n timeoutUseTransitions = true;\n // Short timeout to allow rendering of the initial animation state first\n timeoutID.current = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(timeoutUseTransitions);\n // ANIMATION STARTS, run a callback if it exists\n onHeightAnimationStart === null || onHeightAnimationStart === void 0 ? void 0 : onHeightAnimationStart(timeoutHeight);\n }, 50);\n // Set static classes and remove transitions when animation ends\n animationClassesTimeoutID.current = setTimeout(() => {\n setUseTransitions(false);\n setAnimationStateClassNames(timeoutAnimationStateClasses);\n // ANIMATION ENDS\n // Hide content if height is 0 (to prevent tabbing into it)\n hideContent(contentElement.current, timeoutHeight);\n // Run a callback if it exists\n onHeightAnimationEnd === null || onHeightAnimationEnd === void 0 ? void 0 : onHeightAnimationEnd(timeoutHeight);\n }, totalDuration);\n }\n else {\n // ANIMATION STARTS, run a callback if it exists\n onHeightAnimationStart === null || onHeightAnimationStart === void 0 ? void 0 : onHeightAnimationStart(newHeight);\n // Set end height, classes and remove transitions when animation is complete\n timeoutID.current = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(false);\n setAnimationStateClassNames(timeoutAnimationStateClasses);\n // ANIMATION ENDS\n // If height is auto, don't hide the content\n // (case when element is empty, therefore height is 0)\n if (height !== 'auto') {\n // Hide content if height is 0 (to prevent tabbing into it)\n hideContent(contentElement.current, newHeight); // TODO solve newHeight = 0\n }\n // Run a callback if it exists\n onHeightAnimationEnd === null || onHeightAnimationEnd === void 0 ? void 0 : onHeightAnimationEnd(newHeight);\n }, totalDuration);\n }\n }\n prevHeight.current = height;\n return () => {\n clearTimeout(timeoutID.current);\n clearTimeout(animationClassesTimeoutID.current);\n };\n // This should be explicitly run only on height change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height]);\n // ------------------ Render\n const componentStyle = Object.assign(Object.assign({}, style), { height: currentHeight, overflow: overflow || (style === null || style === void 0 ? void 0 : style.overflow) });\n if (useTransitions && applyInlineTransitions) {\n componentStyle.transition = `height ${duration}ms ${easing} ${delay}ms`;\n // Include transition passed through styles\n if (style === null || style === void 0 ? void 0 : style.transition) {\n componentStyle.transition = `${style.transition}, ${componentStyle.transition}`;\n }\n // Add webkit vendor prefix still used by opera, blackberry...\n componentStyle.WebkitTransition = componentStyle.transition;\n }\n const contentStyle = {};\n if (animateOpacity) {\n contentStyle.transition = `opacity ${duration}ms ${easing} ${delay}ms`;\n // Add webkit vendor prefix still used by opera, blackberry...\n contentStyle.WebkitTransition = contentStyle.transition;\n if (currentHeight === 0) {\n contentStyle.opacity = 0;\n }\n }\n // Check if user passed aria-hidden prop\n const hasAriaHiddenProp = typeof props['aria-hidden'] !== 'undefined';\n const ariaHidden = hasAriaHiddenProp ? props['aria-hidden'] : height === 0;\n return (React.createElement(\"div\", Object.assign({}, props, { \"aria-hidden\": ariaHidden, className: `${animationStateClassNames} ${className}`, style: componentStyle }),\n React.createElement(\"div\", { className: contentClassName, style: contentStyle, ref: contentElement }, children)));\n};\nexport default AnimateHeight;\n"],"names":["this","React"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { Accordion, DateSelector, SignaturePad, AutocompleteAddress, Input, MultiDropzone, IbanInput, CurrencyInput, BottomModal, RegularModal, BottomOrRegularModal, InfoCard, CardButton, Card, Button, AutoSuggestMultiSelect, Chip, AutoSuggestInput, ComparisonTable, TableRating, TableTrueFalse, TableRowHeader, TableButton, TableInfoButton, SegmentedControl, DownloadButton, Checkbox, Radio, Link, InformationBox, Badge, images, illustrations, Spinner, Table, Toggle, Toaster, toast, } from './lib';
1
+ export { Accordion, DateSelector, SignaturePad, AutocompleteAddress, Input, MultiDropzone, IbanInput, CurrencyInput, BottomModal, RegularModal, BottomOrRegularModal, FullScreenModal, InfoCard, CardButton, Card, Button, AutoSuggestMultiSelect, Chip, AutoSuggestInput, ComparisonTable, TableRating, TableTrueFalse, TableRowHeader, TableButton, TableInfoButton, SegmentedControl, DownloadButton, Checkbox, Radio, Link, InformationBox, Badge, images, illustrations, Spinner, Table, Toggle, Toaster, toast, useEscapeKey, useFocusWithin, } from './lib';
2
2
  export * from './lib/components/icon';
3
- export type { AccordionProps, DownloadStatus, InformationBoxProps, InputProps, IllustrationKeys, FileType, MultiDropzoneProps, TableHeader, UploadedFile, UploadStatus, CardProps, IconWrapperProps, TableData, TableProps } from './lib';
3
+ export type { AccordionProps, DownloadStatus, InformationBoxProps, InputProps, IllustrationKeys, FileType, MultiDropzoneProps, TableHeader, UploadedFile, UploadStatus, CardProps, IconWrapperProps, TableData, TableProps, } from './lib';
package/dist/esm/index.js CHANGED
@@ -13,6 +13,7 @@ export { Radio } from './components/input/radio/index.js';
13
13
  export { BottomModal } from './components/modal/bottomModal/index.js';
14
14
  export { RegularModal } from './components/modal/regularModal/index.js';
15
15
  export { BottomOrRegularModal } from './components/modal/bottomOrRegularModal/index.js';
16
+ export { FullScreenModal } from './components/modal/fullScreenModal/index.js';
16
17
  export { InfoCard } from './components/cards/index.js';
17
18
  export { CardButton } from './components/cards/cardButton/index.js';
18
19
  export { Card } from './components/cards/card/index.js';
@@ -26,9 +27,10 @@ export { Link } from './components/link/index.js';
26
27
  export { i as illustrations, a as images } from './index-29e6f39e.js';
27
28
  export { Spinner } from './components/spinner/index.js';
28
29
  export { Toggle } from './components/input/toggle/index.js';
29
- export { a as Toaster, t as toast } from './index-3aa7e697.js';
30
+ export { a as Toaster, t as toast } from './index-4b19aafb.js';
30
31
  export { Accordion } from './components/accordion/index.js';
31
32
  export { Table } from './components/table/Table.js';
33
+ import { useCallback, useEffect } from 'react';
32
34
  export { default as Svg1Icon } from './components/icon/icons/1.js';
33
35
  export { default as Svg2Icon } from './components/icon/icons/2.js';
34
36
  export { default as Svg3Icon } from './components/icon/icons/3.js';
@@ -418,8 +420,7 @@ export { default as TableButton } from './components/comparisonTable/components/
418
420
  export { default as TableInfoButton } from './components/comparisonTable/components/TableInfoButton/index.js';
419
421
  import './tslib.es6-a39f91fc.js';
420
422
  import 'react/jsx-runtime';
421
- import 'react';
422
- import './Calendar-3239814b.js';
423
+ import './Calendar-d39056f4.js';
423
424
  import './_commonjsHelpers-4730bd53.js';
424
425
  import './style-inject.es-1f59c1d0.js';
425
426
  import './index-6ea95111.js';
@@ -427,10 +428,11 @@ import './components/icon/IconWrapper/IconWrapper.js';
427
428
  import './index-69a46657.js';
428
429
  import './index-5e72c3d4.js';
429
430
  import './index-dd80248b.js';
430
- import './index-a0ef2ab4.js';
431
+ import './index-e27b50cf.js';
431
432
  import './components/multiDropzone/UploadFileCell/index.js';
432
433
  import './components/modal/genericModal/index.js';
433
- import './index-3d286178.js';
434
+ import './index-171a0108.js';
435
+ import './index-af1860d8.js';
434
436
  import './components/comparisonTable/components/Chevron.js';
435
437
  import './components/comparisonTable/components/Row/index.js';
436
438
  import './components/comparisonTable/components/TableArrows/index.js';
@@ -445,10 +447,38 @@ import './components/table/components/TableCell/CTACell/CTACell.js';
445
447
  import './components/table/components/IconRenderer/IconRenderer.js';
446
448
  import './components/table/components/TableCell/CardCell/CardCell.js';
447
449
  import './components/table/components/TableCell/ButtonCell/ButtonCell.js';
448
- import './TableSection-a1be2bd3.js';
450
+ import './TableSection-24337bc7.js';
449
451
  import './components/table/components/TableContents/TableContents.js';
450
452
  import './components/table/components/TableContents/Collapsible.js';
451
453
  import './useTableNavigation-f929fbc9.js';
452
454
  import './components/table/components/TableControls/TableControls.js';
453
455
  import './useScrollSync-b2d28bed.js';
456
+
457
+ var useEscapeKey = function (callback) {
458
+ var handleOnEscape = useCallback(function (e) {
459
+ if (e.key === 'Escape') {
460
+ callback();
461
+ }
462
+ }, [callback]);
463
+ useEffect(function () {
464
+ window.addEventListener('keydown', handleOnEscape);
465
+ return function () { return window.removeEventListener('keydown', handleOnEscape); };
466
+ }, [handleOnEscape]);
467
+ };
468
+
469
+ var useFocusWithin = function (ref, callback) {
470
+ useEffect(function () {
471
+ var handleOnFocusIn = function () {
472
+ if (!ref) {
473
+ return;
474
+ }
475
+ var hasFocus = ref === null || ref === void 0 ? void 0 : ref.contains(document.activeElement);
476
+ callback(Boolean(hasFocus));
477
+ };
478
+ document.addEventListener('focusin', handleOnFocusIn);
479
+ return function () { return document === null || document === void 0 ? void 0 : document.removeEventListener('focusin', handleOnFocusIn); };
480
+ }, [callback, ref]);
481
+ };
482
+
483
+ export { useEscapeKey, useFocusWithin };
454
484
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/lib/hooks/useEscapeKey.ts","../../../src/lib/hooks/useFocusWithin.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\n\nexport const useEscapeKey = (callback: () => void) => {\n const handleOnEscape = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n callback();\n }\n },\n [callback]\n );\n\n useEffect(() => {\n window.addEventListener('keydown', handleOnEscape);\n\n return () => window.removeEventListener('keydown', handleOnEscape);\n }, [handleOnEscape]);\n};\n","import { useEffect } from 'react';\n\nexport const useFocusWithin = (\n ref: HTMLElement | null,\n callback: (isFocusWithin: boolean) => void\n) => {\n useEffect(() => {\n const handleOnFocusIn = () => {\n if (!ref) {\n return;\n }\n\n const hasFocus = ref?.contains(document.activeElement);\n\n callback(Boolean(hasFocus));\n };\n\n document.addEventListener('focusin', handleOnFocusIn);\n\n return () => document?.removeEventListener('focusin', handleOnFocusIn);\n }, [callback, ref]);\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEa,YAAY,GAAG,UAAC,QAAoB;IAC/C,IAAM,cAAc,GAAG,WAAW,CAChC,UAAC,CAAgB;QACf,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,QAAQ,EAAE,CAAC;SACZ;KACF,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,SAAS,CAAC;QACR,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEnD,OAAO,cAAM,OAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,GAAA,CAAC;KACpE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACvB;;ICfa,cAAc,GAAG,UAC5B,GAAuB,EACvB,QAA0C;IAE1C,SAAS,CAAC;QACR,IAAM,eAAe,GAAG;YACtB,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO;aACR;YAED,IAAM,QAAQ,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAEvD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7B,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAEtD,OAAO,cAAM,OAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,GAAA,CAAC;KACxE,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AACtB;;;;"}
@@ -0,0 +1,3 @@
1
+ import { Props } from "..";
2
+ declare const FullScreenModal: ({ className, ...rest }: Props) => JSX.Element;
3
+ export { FullScreenModal };
@@ -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
  export interface Props {
6
7
  title?: ReactNode;
@@ -13,4 +14,4 @@ export interface Props {
13
14
  size?: 'default' | 'large';
14
15
  footer?: ReactNode;
15
16
  }
16
- export { BottomModal, RegularModal, BottomOrRegularModal };
17
+ export { BottomModal, RegularModal, BottomOrRegularModal, FullScreenModal };
@@ -76,6 +76,10 @@ export declare const BottomModalStory: {
76
76
  ({ children, isOpen, onClose, title, }: Props): JSX.Element;
77
77
  storyName: string;
78
78
  };
79
+ export declare const FullScreenModalStory: {
80
+ ({ children, isOpen, onClose, title, }: Props): JSX.Element;
81
+ storyName: string;
82
+ };
79
83
  export declare const NonDismissibleModal: ({ children, isOpen, onClose, title, }: Props) => JSX.Element;
80
84
  export declare const ModalWithFooter: ({ children, isOpen, onClose, title, }: Props) => JSX.Element;
81
85
  export declare const ModalWithFooterAndScroll: ({ children, isOpen, onClose, title, }: Props) => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const useEscapeKey: (callback: () => void) => void;
@@ -0,0 +1 @@
1
+ export declare const useFocusWithin: (ref: HTMLElement | null, callback: (isFocusWithin: boolean) => void) => void;
@@ -10,7 +10,7 @@ import { CurrencyInput } from './components/input/currency';
10
10
  import { Badge } from './components/badge';
11
11
  import { Checkbox } from './components/input/checkbox';
12
12
  import { Radio } from './components/input/radio';
13
- import { BottomModal, RegularModal, BottomOrRegularModal } from './components/modal';
13
+ import { BottomModal, RegularModal, BottomOrRegularModal, FullScreenModal } from './components/modal';
14
14
  import { InfoCard, CardButton } from './components/cards';
15
15
  import { Card, CardProps } from './components/cards/card';
16
16
  import { Button } from './components/button';
@@ -27,7 +27,9 @@ import { Toaster, toast } from './components/toast';
27
27
  import { IconWrapperProps } from './components/icon/IconWrapper';
28
28
  import { Accordion, AccordionProps } from './components/accordion';
29
29
  import { Table, TableData, TableProps } from './components/table/Table';
30
+ import { useEscapeKey } from './hooks/useEscapeKey';
31
+ import { useFocusWithin } from './hooks/useFocusWithin';
30
32
  export * from './components/icon';
31
- export { Accordion, DateSelector, SignaturePad, AutocompleteAddress, Input, MultiDropzone, DownloadButton, IbanInput, BottomModal, RegularModal, BottomOrRegularModal, InfoCard, Card, CardButton, Button, CurrencyInput, AutoSuggestMultiSelect, Chip, AutoSuggestInput, ComparisonTable, TableRating, TableTrueFalse, TableRowHeader, TableButton, TableInfoButton, SegmentedControl, Checkbox, Radio, Link, InformationBox, Badge, images, illustrations, Spinner, Table, Toggle, Toaster, toast, };
33
+ export { Accordion, DateSelector, SignaturePad, AutocompleteAddress, Input, MultiDropzone, DownloadButton, IbanInput, BottomModal, RegularModal, BottomOrRegularModal, FullScreenModal, InfoCard, Card, CardButton, Button, CurrencyInput, AutoSuggestMultiSelect, Chip, AutoSuggestInput, ComparisonTable, TableRating, TableTrueFalse, TableRowHeader, TableButton, TableInfoButton, SegmentedControl, Checkbox, Radio, Link, InformationBox, Badge, images, illustrations, Spinner, Table, Toggle, Toaster, toast, useEscapeKey, useFocusWithin, };
32
34
  export type { AccordionProps, IllustrationKeys, InformationBoxProps, InputProps, FileType, MultiDropzoneProps, TableHeader, UploadedFile, UploadStatus, CardProps, IconWrapperProps, TableData, TableProps, };
33
35
  export type { DownloadStatus } from './models/download';
@@ -1,5 +1,5 @@
1
1
  import '../../tslib.es6-a39f91fc.js';
2
- export { c as customRender } from '../../customRender-d03c10b6.js';
2
+ export { c as customRender } from '../../customRender-be47569b.js';
3
3
  import 'react';
4
4
  import 'react-dom';
5
5
  import '../../_commonjsHelpers-4730bd53.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popsure/dirty-swan",
3
- "version": "0.55.3",
3
+ "version": "0.56.0",
4
4
  "author": "Vincent Audoire <vincent@getpopsure.com>",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -33,6 +33,7 @@
33
33
  "react-autosuggest": "^10.1.0",
34
34
  "react-day-picker": "^7.4.10",
35
35
  "react-dropzone": "^14.2.2",
36
+ "react-focus-lock": "^2.13.2",
36
37
  "react-hot-toast": "^2.4.1",
37
38
  "react-scroll-sync": "^0.11.2",
38
39
  "sass": "^1.35.1",
package/src/index.tsx CHANGED
@@ -13,6 +13,7 @@ export {
13
13
  BottomModal,
14
14
  RegularModal,
15
15
  BottomOrRegularModal,
16
+ FullScreenModal,
16
17
  InfoCard,
17
18
  CardButton,
18
19
  Card,
@@ -40,6 +41,8 @@ export {
40
41
  Toggle,
41
42
  Toaster,
42
43
  toast,
44
+ useEscapeKey,
45
+ useFocusWithin,
43
46
  } from './lib';
44
47
 
45
48
  export * from './lib/components/icon';
@@ -58,7 +61,7 @@ export type {
58
61
  CardProps,
59
62
  IconWrapperProps,
60
63
  TableData,
61
- TableProps
64
+ TableProps,
62
65
  } from './lib';
63
66
 
64
67
  ReactDOM.render(<App />, document.getElementById('root'));
@@ -0,0 +1,24 @@
1
+ import { Props } from "..";
2
+ import styles from "./style.module.scss";
3
+ import classNames from "classnames";
4
+ import { GenericModal } from "../genericModal";
5
+
6
+ const FullScreenModal = ({ className, ...rest }: Props) => (
7
+ <GenericModal
8
+ titleSize="small"
9
+ classNames={{
10
+ wrapper: "w100",
11
+ container: ({ isClosing }) => classNames(
12
+ "bg-white d-flex fd-column w100",
13
+ className,
14
+ styles.container, {
15
+ [styles.containerClose]: isClosing,
16
+ }
17
+ ),
18
+ body: styles.body,
19
+ }}
20
+ {...rest}
21
+ />
22
+ );
23
+
24
+ export { FullScreenModal };
@@ -0,0 +1,49 @@
1
+ @use '../../../scss/public/grid' as *;
2
+ @use '../../../scss/public/colors' as *;
3
+
4
+ @keyframes appear-in {
5
+ 0% {
6
+ opacity: 0;
7
+ visibility: hidden;
8
+ }
9
+ 100% {
10
+ opacity: 1;
11
+ visibility: visible;
12
+ }
13
+ }
14
+
15
+ @keyframes disappear-out {
16
+ 0% {
17
+ opacity: 1;
18
+ visibility: visible;
19
+ }
20
+ 100% {
21
+ opacity: 0;
22
+ visibility: hidden;
23
+ }
24
+ }
25
+ .container {
26
+ max-height: 100vh;
27
+ top: 0;
28
+ bottom: 0;
29
+ position: fixed;
30
+
31
+ animation-name: appear-in;
32
+ animation-duration: 0.4s;
33
+ animation-fill-mode: both;
34
+ animation-timing-function: ease-out;
35
+
36
+ &Close {
37
+ animation-name: disappear-out;
38
+ animation-duration: 0.4s;
39
+ animation-delay: 0s;
40
+ animation-fill-mode: both;
41
+ animation-timing-function: ease-out;
42
+ }
43
+ }
44
+
45
+ .body {
46
+ @include p-size-mobile {
47
+ padding-bottom: 48px;
48
+ }
49
+ }
@@ -6,6 +6,7 @@ import classNamesUtil from 'classnames';
6
6
  import { Button } from '../../button';
7
7
  import { XIcon } from '../../icon';
8
8
  import { useRef, useEffect } from 'react';
9
+ import FocusLock from 'react-focus-lock';
9
10
 
10
11
  interface GenericModalProps extends Props {
11
12
  classNames?: {
@@ -43,12 +44,12 @@ const InnerModal = ({
43
44
  }
44
45
  const handleOnScroll = () => {
45
46
  if (modalBodyRef.current) {
46
- onModalScroll(modalBodyRef.current.scrollTop, modalBodyRef.current)
47
+ onModalScroll(modalBodyRef.current.scrollTop, modalBodyRef.current);
47
48
  }
48
- }
49
-
49
+ };
50
+
50
51
  modalBodyRef.current.addEventListener('scroll', handleOnScroll);
51
-
52
+
52
53
  return () => {
53
54
  modalBodyRef.current?.removeEventListener('scroll', handleOnScroll);
54
55
  };
@@ -56,105 +57,97 @@ const InnerModal = ({
56
57
 
57
58
  return (
58
59
  <div
59
- className={classNamesUtil(
60
- classNames?.overlay,
61
- styles.overlay, {
62
- [styles.overlayClose]: isClosing,
63
- }
64
- )}
60
+ className={classNamesUtil(classNames?.overlay, styles.overlay, {
61
+ [styles.overlayClose]: isClosing,
62
+ })}
65
63
  onAnimationEnd={handleOnCloseAnimationEnded}
66
64
  onClick={handleOnOverlayClick}
67
65
  >
68
- <div
66
+ <div
69
67
  className={
70
- typeof classNames?.wrapper === 'string'
71
- ? classNames?.wrapper
68
+ typeof classNames?.wrapper === 'string'
69
+ ? classNames?.wrapper
72
70
  : classNames?.wrapper?.({ isClosing })
73
71
  }
74
72
  >
75
73
  <div
74
+ aria-modal="true"
75
+ role="dialog"
76
76
  className={
77
- typeof classNames?.container === 'string'
78
- ? classNames?.container
79
- : classNames?.container?.({ isClosing })
77
+ typeof classNames?.container === 'string'
78
+ ? classNames?.container
79
+ : classNames?.container?.({ isClosing })
80
80
  }
81
81
  onClick={handleContainerClick}
82
82
  >
83
+ <FocusLock returnFocus>
84
+ <div
85
+ className={classNamesUtil(
86
+ 'bg-white d-flex ai-center w100 px24 pt24 pb16',
87
+ styles.header,
88
+ {
89
+ 'jc-between': !!title,
90
+ 'jc-end': !title,
91
+ }
92
+ )}
93
+ >
94
+ {title && (
95
+ <div
96
+ className={classNamesUtil(
97
+ styles.title,
98
+ titleSize === 'small' ? 'p-h4' : 'p-h2'
99
+ )}
100
+ >
101
+ {title}
102
+ </div>
103
+ )}
83
104
 
84
- <div
85
- className={classNamesUtil(
86
- 'bg-white d-flex ai-center w100 px24 pt24 pb16',
87
- styles.header, {
88
- 'jc-between': !!title,
89
- 'jc-end': !title,
90
- }
91
- )}
92
- >
93
- {title && (
105
+ {dismissible && (
106
+ <Button
107
+ hideLabel
108
+ leftIcon={<XIcon color="grey-700" />}
109
+ onClick={handleOnClose}
110
+ type="button"
111
+ variant="textColor"
112
+ className={classNamesUtil(
113
+ classNames?.closeButton,
114
+ 'p0',
115
+ styles.closeButton
116
+ )}
117
+ >
118
+ Close modal
119
+ </Button>
120
+ )}
121
+ </div>
122
+
123
+ <div
124
+ className={classNamesUtil('w100', classNames?.body, styles.body)}
125
+ ref={modalBodyRef}
126
+ >
127
+ {children}
128
+ </div>
129
+
130
+ {footer && (
94
131
  <div
95
132
  className={classNamesUtil(
96
- styles.title,
97
- titleSize === 'small' ? 'p-h4' : 'p-h2'
133
+ classNames?.footer,
134
+ 'w100 bg-white',
135
+ styles.footer
98
136
  )}
99
137
  >
100
- {title}
138
+ <div className="p24 pt16">{footer}</div>
101
139
  </div>
102
140
  )}
103
-
104
- {dismissible && (
105
- <Button
106
- hideLabel
107
- leftIcon={<XIcon color="grey-700" />}
108
- onClick={handleOnClose}
109
- type="button"
110
- variant="textColor"
111
- className={classNamesUtil(
112
- classNames?.closeButton,
113
- 'p0',
114
- styles.closeButton
115
- )}
116
- >
117
- Close modal
118
- </Button>
119
- )}
120
- </div>
121
-
122
- <div
123
- className={classNamesUtil(
124
- 'w100',
125
- classNames?.body,
126
- styles.body
127
- )}
128
- ref={modalBodyRef}
129
- >
130
- {children}
131
- </div>
132
-
133
- {footer && (
134
- <div
135
- className={classNamesUtil(
136
- classNames?.footer,
137
- 'w100 bg-white',
138
- styles.footer
139
- )}
140
- >
141
- <div className="p24 pt16">
142
- {footer}
143
- </div>
144
- </div>
145
- )}
141
+ </FocusLock>
146
142
  </div>
147
143
  </div>
148
144
  </div>
149
145
  );
150
- }
146
+ };
151
147
 
152
148
  export const GenericModal = (props: GenericModalProps) => {
153
- const { isOpen, onClose, dismissible = true } = props;
154
- const {
155
- isVisible,
156
- ...rest
157
- } = useOnClose(onClose, isOpen, dismissible);
149
+ const { isOpen, onClose, dismissible = true } = props;
150
+ const { isVisible, ...rest } = useOnClose(onClose, isOpen, dismissible);
158
151
 
159
152
  if (!isVisible) {
160
153
  return null;
@@ -1,10 +1,12 @@
1
- import React, { useCallback, useEffect, useState } from 'react';
1
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
2
2
 
3
3
  export interface OnCloseReturn {
4
4
  isClosing: boolean;
5
5
  isVisible: boolean;
6
6
  handleOnCloseAnimationEnded: () => void;
7
- handleContainerClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
7
+ handleContainerClick: (
8
+ event: React.MouseEvent<HTMLDivElement, MouseEvent>
9
+ ) => void;
8
10
  handleOnClose: () => void;
9
11
  handleOnOverlayClick: () => void;
10
12
  }
@@ -39,9 +41,9 @@ const useOnClose = (
39
41
 
40
42
  const handleEscKey = useCallback(
41
43
  (e: KeyboardEvent) => {
42
- if (e.code !== 'Escape') return;
43
- if (!dismissable) return null;
44
- if (!isOpen) return null;
44
+ if (e.code !== 'Escape' || !dismissable || !isOpen) {
45
+ return null;
46
+ }
45
47
 
46
48
  handleOnClose();
47
49
  },
@@ -60,8 +62,8 @@ const useOnClose = (
60
62
  if (isOpen) {
61
63
  setIsVisible(true);
62
64
  }
63
-
64
- if (!isOpen && isVisible){
65
+
66
+ if (!isOpen && isVisible) {
65
67
  handleOnClose();
66
68
  }
67
69
 
@@ -84,7 +86,7 @@ const useOnClose = (
84
86
  handleContainerClick,
85
87
  handleOnCloseAnimationEnded,
86
88
  handleOnClose,
87
- handleOnOverlayClick
89
+ handleOnOverlayClick,
88
90
  };
89
91
  };
90
92