@laerdal/life-react-components 6.0.0-dev.7.full → 6.0.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.
- package/README.md +1 -1
- package/dist/Accordion/__tests__/AccordionMenu.test.tsx +42 -0
- package/dist/Accordion/__tests__/ContentAccordion.test.tsx +150 -0
- package/dist/AuthPage/__tests__/AuthPage.test.tsx +27 -0
- package/dist/Banners/__tests__/Banner.test.tsx +47 -0
- package/dist/Banners/__tests__/OverviewBanner.test.tsx +20 -0
- package/dist/Breadcrumb/__tests__/Breadcrumb.test.tsx +78 -0
- package/dist/Button/DualFunctionButton.cjs +4 -4
- package/dist/Button/DualFunctionButton.cjs.map +1 -1
- package/dist/Button/DualFunctionButton.d.ts +2 -2
- package/dist/Button/DualFunctionButton.js +4 -4
- package/dist/Button/DualFunctionButton.js.map +1 -1
- package/dist/Button/{Button.cjs → TextButton.cjs} +179 -92
- package/dist/Button/TextButton.cjs.map +1 -0
- package/dist/Button/TextButton.d.ts +70 -0
- package/dist/Button/{Button.js → TextButton.js} +178 -91
- package/dist/Button/TextButton.js.map +1 -0
- package/dist/Button/__tests__/BackButton.test.tsx +32 -0
- package/dist/Button/__tests__/Button.test.tsx +45 -0
- package/dist/Button/__tests__/DualButton.test.tsx +119 -0
- package/dist/Button/__tests__/TextButton.test.tsx +45 -0
- package/dist/Button/index.cjs +11 -11
- package/dist/Button/index.cjs.map +1 -1
- package/dist/Button/index.d.ts +2 -2
- package/dist/Button/index.js +2 -2
- package/dist/Button/index.js.map +1 -1
- package/dist/Card/HorizontalCard/__tests__/HorizontalCard.test.tsx +71 -0
- package/dist/Card/VerticalCard/{Card.cjs → VerticalCard.cjs} +62 -26
- package/dist/Card/VerticalCard/VerticalCard.cjs.map +1 -0
- package/dist/Card/VerticalCard/VerticalCard.d.ts +25 -0
- package/dist/Card/VerticalCard/{Card.js → VerticalCard.js} +62 -26
- package/dist/Card/VerticalCard/VerticalCard.js.map +1 -0
- package/dist/Card/VerticalCard/{CardBottomSection.cjs → VerticalCardBottomSection.cjs} +45 -27
- package/dist/Card/VerticalCard/VerticalCardBottomSection.cjs.map +1 -0
- package/dist/Card/VerticalCard/VerticalCardBottomSection.d.ts +53 -0
- package/dist/Card/VerticalCard/{CardBottomSection.js → VerticalCardBottomSection.js} +45 -27
- package/dist/Card/VerticalCard/VerticalCardBottomSection.js.map +1 -0
- package/dist/Card/VerticalCard/{CardMiddleSection.cjs → VerticalCardMiddleSection.cjs} +46 -23
- package/dist/Card/VerticalCard/VerticalCardMiddleSection.cjs.map +1 -0
- package/dist/Card/VerticalCard/VerticalCardMiddleSection.d.ts +42 -0
- package/dist/Card/VerticalCard/{CardMiddleSection.js → VerticalCardMiddleSection.js} +45 -23
- package/dist/Card/VerticalCard/VerticalCardMiddleSection.js.map +1 -0
- package/dist/Card/VerticalCard/{CardTopSection.cjs → VerticalCardTopSection.cjs} +18 -16
- package/dist/Card/VerticalCard/VerticalCardTopSection.cjs.map +1 -0
- package/dist/Card/VerticalCard/{CardTopSection.d.ts → VerticalCardTopSection.d.ts} +8 -8
- package/dist/Card/VerticalCard/{CardTopSection.js → VerticalCardTopSection.js} +17 -15
- package/dist/Card/VerticalCard/VerticalCardTopSection.js.map +1 -0
- package/dist/Card/VerticalCard/__tests__/VerticalCard.test.tsx +124 -0
- package/dist/Card/VerticalCard/index.cjs +25 -25
- package/dist/Card/VerticalCard/index.cjs.map +1 -1
- package/dist/Card/VerticalCard/index.d.ts +7 -7
- package/dist/Card/VerticalCard/index.js +7 -7
- package/dist/Card/VerticalCard/index.js.map +1 -1
- package/dist/Chips/ActionChip.cjs +6 -0
- package/dist/Chips/ActionChip.cjs.map +1 -1
- package/dist/Chips/ActionChip.js +6 -0
- package/dist/Chips/ActionChip.js.map +1 -1
- package/dist/Chips/ChipStyles.cjs +210 -31
- package/dist/Chips/ChipStyles.cjs.map +1 -1
- package/dist/Chips/ChipStyles.js +210 -31
- package/dist/Chips/ChipStyles.js.map +1 -1
- package/dist/Chips/ChoiceChips.cjs +1 -1
- package/dist/Chips/ChoiceChips.cjs.map +1 -1
- package/dist/Chips/ChoiceChips.js +1 -1
- package/dist/Chips/ChoiceChips.js.map +1 -1
- package/dist/Chips/FilterChip.cjs +8 -1
- package/dist/Chips/FilterChip.cjs.map +1 -1
- package/dist/Chips/FilterChip.js +8 -1
- package/dist/Chips/FilterChip.js.map +1 -1
- package/dist/Chips/InputChip.cjs +14 -0
- package/dist/Chips/InputChip.cjs.map +1 -1
- package/dist/Chips/InputChip.js +14 -0
- package/dist/Chips/InputChip.js.map +1 -1
- package/dist/Chips/__tests__/ActionChip.test.tsx +94 -0
- package/dist/Chips/__tests__/ChoiceChips.test.tsx +79 -0
- package/dist/Chips/__tests__/FilterChip.test.tsx +95 -0
- package/dist/Chips/__tests__/InputChip.test.tsx +155 -0
- package/dist/ChipsInput/ChipInputField.cjs +8 -2
- package/dist/ChipsInput/ChipInputField.cjs.map +1 -1
- package/dist/ChipsInput/ChipInputField.js +8 -2
- package/dist/ChipsInput/ChipInputField.js.map +1 -1
- package/dist/ChipsInput/__tests__/ChipDropdownInput.test.tsx +100 -0
- package/dist/ChipsInput/__tests__/ChipInputFields.test.tsx +155 -0
- package/dist/Dropdown/DropdownContent.cjs +2 -2
- package/dist/Dropdown/DropdownContent.cjs.map +1 -1
- package/dist/Dropdown/DropdownContent.js +2 -2
- package/dist/Dropdown/DropdownContent.js.map +1 -1
- package/dist/Dropdown/__tests__/DropdownFilter.test.tsx +39 -0
- package/dist/Footer/Components/FooterTop.cjs +3 -0
- package/dist/Footer/Components/FooterTop.cjs.map +1 -1
- package/dist/Footer/Components/FooterTop.js +3 -0
- package/dist/Footer/Components/FooterTop.js.map +1 -1
- package/dist/Footer/__tests__/Footer.test.tsx +182 -0
- package/dist/GlobalNavigationBar/Logo.cjs +2 -1
- package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
- package/dist/GlobalNavigationBar/Logo.js +2 -1
- package/dist/GlobalNavigationBar/Logo.js.map +1 -1
- package/dist/GlobalNavigationBar/__tests__/Logo.test.tsx +39 -0
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +10 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js +10 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs +5 -4
- package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/RightSideNav.js +6 -5
- package/dist/GlobalNavigationBar/desktop/RightSideNav.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.cjs +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.js +2 -2
- package/dist/GlobalNavigationBar/desktop/UserMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/__tests__/DesktopActions.test.tsx +108 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/ExtendedMainMenu.test.tsx +28 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/MainMenu.test.tsx +55 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/RightSideNav.test.tsx +45 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/UserMenu.test.tsx +125 -0
- package/dist/GlobalNavigationBar/mobile/CommonStyles.cjs.map +1 -1
- package/dist/GlobalNavigationBar/mobile/CommonStyles.js.map +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.cjs +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.cjs.map +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.js +2 -2
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.js.map +1 -1
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenu.test.tsx +317 -0
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuContent.test.tsx +294 -0
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuHeader.test.tsx +195 -0
- package/dist/GlobalNavigationBar/types.cjs.map +1 -1
- package/dist/GlobalNavigationBar/types.d.ts +2 -2
- package/dist/GlobalNavigationBar/types.js.map +1 -1
- package/dist/HyperLink/HyperLink.cjs +18 -2
- package/dist/HyperLink/HyperLink.cjs.map +1 -1
- package/dist/HyperLink/HyperLink.d.ts +2 -0
- package/dist/HyperLink/HyperLink.js +18 -2
- package/dist/HyperLink/HyperLink.js.map +1 -1
- package/dist/HyperLink/styling.cjs +4 -0
- package/dist/HyperLink/styling.cjs.map +1 -1
- package/dist/HyperLink/styling.js +4 -0
- package/dist/HyperLink/styling.js.map +1 -1
- package/dist/InputFields/DatepickerField.cjs +21 -5
- package/dist/InputFields/DatepickerField.cjs.map +1 -1
- package/dist/InputFields/DatepickerField.d.ts +1 -1
- package/dist/InputFields/DatepickerField.js +21 -5
- package/dist/InputFields/DatepickerField.js.map +1 -1
- package/dist/InputFields/NumberField.cjs +4 -0
- package/dist/InputFields/NumberField.cjs.map +1 -1
- package/dist/InputFields/NumberField.js +4 -0
- package/dist/InputFields/NumberField.js.map +1 -1
- package/dist/InputFields/RadioButton.cjs +2 -2
- package/dist/InputFields/RadioButton.cjs.map +1 -1
- package/dist/InputFields/RadioButton.d.ts +4 -4
- package/dist/InputFields/RadioButton.js +2 -2
- package/dist/InputFields/RadioButton.js.map +1 -1
- package/dist/InputFields/__tests__/NumberField.test.tsx +67 -0
- package/dist/InputFields/__tests__/NumberInput.test.tsx +68 -0
- package/dist/InputFields/__tests__/QuickSearch.test.tsx +42 -0
- package/dist/InputFields/components/SearchBarInput.cjs +5 -0
- package/dist/InputFields/components/SearchBarInput.cjs.map +1 -1
- package/dist/InputFields/components/SearchBarInput.js +5 -0
- package/dist/InputFields/components/SearchBarInput.js.map +1 -1
- package/dist/LinearProgress/__tests__/LinearProgress.test.tsx +25 -0
- package/dist/List/__tests__/ListRow.test.tsx +18 -0
- package/dist/LoadingPage/__tests__/GlobalLoadingPage.test.tsx +23 -0
- package/dist/MiniProductCard/MiniProductCard.cjs +15 -1
- package/dist/MiniProductCard/MiniProductCard.cjs.map +1 -1
- package/dist/MiniProductCard/MiniProductCard.d.ts +1 -0
- package/dist/MiniProductCard/MiniProductCard.js +15 -1
- package/dist/MiniProductCard/MiniProductCard.js.map +1 -1
- package/dist/Modals/ModalContainer.cjs +102 -83
- package/dist/Modals/ModalContainer.cjs.map +1 -1
- package/dist/Modals/ModalContainer.d.ts +20 -1
- package/dist/Modals/ModalContainer.js +103 -84
- package/dist/Modals/ModalContainer.js.map +1 -1
- package/dist/Modals/ModalContent.cjs +7 -3
- package/dist/Modals/ModalContent.cjs.map +1 -1
- package/dist/Modals/ModalContent.js +8 -4
- package/dist/Modals/ModalContent.js.map +1 -1
- package/dist/Modals/ModalDialog.cjs +2 -2
- package/dist/Modals/ModalDialog.cjs.map +1 -1
- package/dist/Modals/ModalDialog.js +3 -3
- package/dist/Modals/ModalDialog.js.map +1 -1
- package/dist/Modals/ModalStyles.cjs +12 -0
- package/dist/Modals/ModalStyles.cjs.map +1 -1
- package/dist/Modals/ModalStyles.js +12 -0
- package/dist/Modals/ModalStyles.js.map +1 -1
- package/dist/Modals/ModalTypes.cjs.map +1 -1
- package/dist/Modals/ModalTypes.d.ts +3 -3
- package/dist/Modals/ModalTypes.js.map +1 -1
- package/dist/Modals/__tests__/Modal.test.tsx +169 -0
- package/dist/Modals/__tests__/ModalContainer.test.tsx +77 -0
- package/dist/Modals/__tests__/ModalContent.test.tsx +126 -0
- package/dist/NavItem/NavItem.cjs +7 -1
- package/dist/NavItem/NavItem.cjs.map +1 -1
- package/dist/NavItem/NavItem.js +7 -1
- package/dist/NavItem/NavItem.js.map +1 -1
- package/dist/NavItem/__tests__/NavItem.test.ts +6 -0
- package/dist/Navigation/NavigationProvider.cjs.map +1 -1
- package/dist/Navigation/NavigationProvider.d.ts +3 -0
- package/dist/Navigation/NavigationProvider.js.map +1 -1
- package/dist/NotificationDot/__tests__/NotificationDot.test.tsx +33 -0
- package/dist/Paginator/Paginator.cjs +18 -14
- package/dist/Paginator/Paginator.cjs.map +1 -1
- package/dist/Paginator/Paginator.d.ts +1 -5
- package/dist/Paginator/Paginator.js +18 -14
- package/dist/Paginator/Paginator.js.map +1 -1
- package/dist/Paginator/__tests__/Paginator.test.tsx +33 -0
- package/dist/Popover/Popover.cjs +1 -1
- package/dist/Popover/Popover.cjs.map +1 -1
- package/dist/Popover/Popover.js +2 -2
- package/dist/Popover/Popover.js.map +1 -1
- package/dist/Popover/__tests__/Popover.test.tsx +64 -0
- package/dist/ProfileButton/__tests__/ProfileButton.test.tsx +31 -0
- package/dist/QuizButton/__tests__/QuizButton.test.tsx +53 -0
- package/dist/SegmentControl/__tests__/SegmentControl.test.tsx +145 -0
- package/dist/SideMenu/SideMenuFooter.cjs +1 -1
- package/dist/SideMenu/SideMenuFooter.cjs.map +1 -1
- package/dist/SideMenu/SideMenuFooter.js +2 -2
- package/dist/SideMenu/SideMenuFooter.js.map +1 -1
- package/dist/SideMenu/__tests__/SideMenu.test.tsx +99 -0
- package/dist/SideMenu/types.cjs.map +1 -1
- package/dist/SideMenu/types.d.ts +2 -2
- package/dist/SideMenu/types.js.map +1 -1
- package/dist/Switcher/__tests__/SwitcherMenuItem.tsx +14 -0
- package/dist/Table/TableBody.cjs +1 -1
- package/dist/Table/TableBody.cjs.map +1 -1
- package/dist/Table/TableBody.js +2 -2
- package/dist/Table/TableBody.js.map +1 -1
- package/dist/Table/TableStyles.cjs +4 -1
- package/dist/Table/TableStyles.cjs.map +1 -1
- package/dist/Table/TableStyles.js +4 -1
- package/dist/Table/TableStyles.js.map +1 -1
- package/dist/Table/TableTypes.cjs.map +1 -1
- package/dist/Table/TableTypes.d.ts +2 -2
- package/dist/Table/TableTypes.js.map +1 -1
- package/dist/Table/__tests__/Table.test.tsx +499 -0
- package/dist/Tabs/VerticalTabs.cjs +1 -0
- package/dist/Tabs/VerticalTabs.cjs.map +1 -1
- package/dist/Tabs/VerticalTabs.js +1 -0
- package/dist/Tabs/VerticalTabs.js.map +1 -1
- package/dist/Tabs/__tests__/HorizontalTabs.test.tsx +95 -0
- package/dist/Tabs/__tests__/TabLink.test.tsx +40 -0
- package/dist/Tabs/__tests__/Tablist.test.tsx +37 -0
- package/dist/Tag/Tag.cjs +48 -12
- package/dist/Tag/Tag.cjs.map +1 -1
- package/dist/Tag/Tag.js +48 -12
- package/dist/Tag/Tag.js.map +1 -1
- package/dist/Tag/__tests__/Tag.test.tsx +86 -0
- package/dist/Tile/TileCommonItems.cjs +1 -1
- package/dist/Tile/TileCommonItems.cjs.map +1 -1
- package/dist/Tile/TileCommonItems.js +2 -2
- package/dist/Tile/TileCommonItems.js.map +1 -1
- package/dist/Tile/TileTypes.cjs.map +1 -1
- package/dist/Tile/TileTypes.d.ts +2 -2
- package/dist/Tile/TileTypes.js.map +1 -1
- package/dist/Toasters/Toast.cjs +1 -2
- package/dist/Toasters/Toast.cjs.map +1 -1
- package/dist/Toasters/Toast.js +2 -3
- package/dist/Toasters/Toast.js.map +1 -1
- package/dist/Toasters/__tests__/Toast.test.tsx +74 -0
- package/dist/Toggles/TogglerStyles.cjs +171 -15
- package/dist/Toggles/TogglerStyles.cjs.map +1 -1
- package/dist/Toggles/TogglerStyles.js +171 -15
- package/dist/Toggles/TogglerStyles.js.map +1 -1
- package/dist/Toggles/__tests__/ToggleButton.test.tsx +53 -0
- package/dist/Toggles/__tests__/ToggleSwitch.test.tsx +87 -0
- package/dist/Tooltips/__tests__/TooltipWrapper.test.tsx +16 -0
- package/dist/common/NavigationHelper.cjs +0 -28
- package/dist/common/NavigationHelper.cjs.map +1 -1
- package/dist/common/NavigationHelper.d.ts +0 -4
- package/dist/common/NavigationHelper.js +1 -22
- package/dist/common/NavigationHelper.js.map +1 -1
- package/dist/styles/colors.cjs +6 -0
- package/dist/styles/colors.cjs.map +1 -1
- package/dist/styles/colors.d.ts +6 -0
- package/dist/styles/colors.js +6 -0
- package/dist/styles/colors.js.map +1 -1
- package/dist/styles/design-tokens/dark/tokens.css +481 -0
- package/dist/styles/design-tokens/light/tokens.css +481 -0
- package/dist/styles/design-tokens/rqi_dark/tokens.css +481 -0
- package/dist/styles/design-tokens/rqi_light/tokens.css +481 -0
- package/dist/styles/global.cjs +4 -4
- package/dist/styles/global.cjs.map +1 -1
- package/dist/styles/global.js +4 -4
- package/dist/styles/global.js.map +1 -1
- package/dist/styles/react-datepicker.css +766 -0
- package/dist/styles/typography.cjs +4 -1
- package/dist/styles/typography.cjs.map +1 -1
- package/dist/styles/typography.js +4 -1
- package/dist/styles/typography.js.map +1 -1
- package/dist/test-utils.cjs +7 -1
- package/dist/test-utils.cjs.map +1 -1
- package/dist/test-utils.js +7 -1
- package/dist/test-utils.js.map +1 -1
- package/package.json +11 -6
- package/dist/Button/Button.cjs.map +0 -1
- package/dist/Button/Button.d.ts +0 -70
- package/dist/Button/Button.js.map +0 -1
- package/dist/Card/VerticalCard/Card.cjs.map +0 -1
- package/dist/Card/VerticalCard/Card.d.ts +0 -24
- package/dist/Card/VerticalCard/Card.js.map +0 -1
- package/dist/Card/VerticalCard/CardBottomSection.cjs.map +0 -1
- package/dist/Card/VerticalCard/CardBottomSection.d.ts +0 -49
- package/dist/Card/VerticalCard/CardBottomSection.js.map +0 -1
- package/dist/Card/VerticalCard/CardMiddleSection.cjs.map +0 -1
- package/dist/Card/VerticalCard/CardMiddleSection.d.ts +0 -37
- package/dist/Card/VerticalCard/CardMiddleSection.js.map +0 -1
- package/dist/Card/VerticalCard/CardTopSection.cjs.map +0 -1
- package/dist/Card/VerticalCard/CardTopSection.js.map +0 -1
- package/dist/GlobalNavigationBar/__tests__/GlobalNavigationBar.tests.d.ts +0 -1
- package/dist/GlobalNavigationBar/__tests__/Logo.tests.d.ts +0 -1
- package/dist/List/__tests__/ListRow.tests.d.ts +0 -1
- package/dist/Tabs/__tests__/TabLink.tests.d.ts +0 -1
- package/dist/Tabs/__tests__/Tablist.tests.d.ts +0 -2
- package/dist/common/Link.cjs +0 -45
- package/dist/common/Link.cjs.map +0 -1
- package/dist/common/Link.d.ts +0 -9
- package/dist/common/Link.js +0 -37
- package/dist/common/Link.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniProductCard.js","names":["React","styled","useTheme","BREAKPOINTS","COLORS","ComponentTextStyle","SystemIcons","ComponentMStyling","ComponentSStyling","StyledLink","jsx","_jsx","jsxs","_jsxs","ProductLink","props","_objectSpread","getColor","theme","MEDIUM","ProductThing","div","ProductImage","img","ProductName","h2","Regular","ProductType","span","ProductInnerWrapper","RightIconWrapper","MiniProductCard","_ref","url","product","target","$variant","href","children","image","src","name","type","ChevronRight","color","className","size","propTypes","_pt","string"],"sources":["../../src/MiniProductCard/MiniProductCard.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport styled, { useTheme } from 'styled-components';\r\nimport {BREAKPOINTS, COLORS, ComponentTextStyle} from '../styles';\r\nimport {SystemIcons} from '../icons';\r\nimport {Product} from '../types';\r\nimport {ComponentMStyling, ComponentSStyling} from '../styles';\r\nimport { StyledLink } from '../HyperLink/HyperLink';\r\n\r\nexport type MiniProductCardProps = {\r\n product: Product;\r\n url?: string;\r\n target?: string;\r\n};\r\nconst ProductLink = styled(props => <StyledLink {...props} />)`\r\n display: flex;\r\n flex: 1;\r\n margin: 10px 8px;\r\n color: ${props => COLORS.getColor('black', props.theme)};\r\n text-decoration: none;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n width: 305px;\r\n }\r\n`;\r\n\r\nconst ProductThing = styled.div`\r\n display: flex;\r\n flex: 1;\r\n flex-direction: row;\r\n border-radius: 8px;\r\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\r\n\r\n &:hover {\r\n background: ${props => COLORS.getColor('primary_20', props.theme)};\r\n\r\n .product-chevron-right-path {\r\n fill: ${props => COLORS.getColor('primary_600', props.theme)};\r\n }\r\n }\r\n &:active {\r\n background: ${props => COLORS.getColor('primary_100', props.theme)};\r\n\r\n .product-chevron-right-path {\r\n fill: ${props => COLORS.getColor('primary_600', props.theme)};\r\n }\r\n }\r\n`;\r\n\r\nconst ProductImage = styled.img`\r\n width: 95px;\r\n height: 75px;\r\n object-fit: fill;\r\n border-radius: 8px;\r\n`;\r\n\r\nconst ProductName = styled.h2`\r\n ${props => ComponentMStyling(ComponentTextStyle.Regular, COLORS.getColor('black', props.theme))}\r\n margin: 0;\r\n margin-top: 3px;\r\n`;\r\n\r\nconst ProductType = styled.span`\r\n ${props => ComponentSStyling(ComponentTextStyle.Regular, COLORS.getColor('black', props.theme))}\r\n margin: 0;\r\n`;\r\n\r\nconst ProductInnerWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 12px 18px;\r\n flex: 1;\r\n`;\r\n\r\nconst RightIconWrapper = styled.div`\r\n display: flex;\r\n justify-self: flex-start;\r\n align-items: center;\r\n padding-right: 12px;\r\n`;\r\n\r\nconst MiniProductCard: React.FunctionComponent<MiniProductCardProps> = ({ url, product, target = '_self' }: MiniProductCardProps) => {\r\n const theme = useTheme();\r\n return (\r\n <ProductLink $variant='styleless' href={url ?? ''} target={target}>\r\n <ProductThing>\r\n {product.image && <ProductImage src={product.image} />}\r\n <ProductInnerWrapper>\r\n <ProductName>{product.name}</ProductName>\r\n <ProductType>{product.type}</ProductType>\r\n </ProductInnerWrapper>\r\n <RightIconWrapper>\r\n <SystemIcons.ChevronRight color={COLORS.getColor('primary', theme)} className={'product-chevron-right'} size={'24px'} />\r\n </RightIconWrapper>\r\n </ProductThing>\r\n </ProductLink>\r\n );\r\n};\r\n\r\nexport default MiniProductCard;\r\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,MAAM,IAAIC,QAAQ,QAAQ,mBAAmB;AACpD,SAAQC,WAAW,EAAEC,MAAM,EAAEC,kBAAkB,QAAO,WAAW;AACjE,SAAQC,WAAW,QAAO,UAAU;AAEpC,SAAQC,iBAAiB,EAAEC,iBAAiB,QAAO,WAAW;AAC9D,SAASC,UAAU,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"file":"MiniProductCard.js","names":["React","styled","useTheme","BREAKPOINTS","COLORS","ComponentTextStyle","SystemIcons","ComponentMStyling","ComponentSStyling","StyledLink","useNavigation","jsx","_jsx","jsxs","_jsxs","ProductLink","props","_objectSpread","getColor","theme","MEDIUM","ProductThing","div","ProductImage","img","ProductName","h2","Regular","ProductType","span","ProductInnerWrapper","RightIconWrapper","MiniProductCard","_ref","url","external","product","target","navigate","onClick","e","preventDefault","$variant","href","children","image","src","name","type","ChevronRight","color","className","size","propTypes","_pt","string","bool"],"sources":["../../src/MiniProductCard/MiniProductCard.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport styled, { useTheme } from 'styled-components';\r\nimport {BREAKPOINTS, COLORS, ComponentTextStyle} from '../styles';\r\nimport {SystemIcons} from '../icons';\r\nimport {Product} from '../types';\r\nimport {ComponentMStyling, ComponentSStyling} from '../styles';\r\nimport { StyledLink } from '../HyperLink/HyperLink';\r\nimport { useNavigation } from '../Navigation';\r\n\r\nexport type MiniProductCardProps = {\r\n product: Product;\r\n url?: string;\r\n target?: string;\r\n external?: boolean;\r\n};\r\nconst ProductLink = styled(props => <StyledLink {...props} />)`\r\n display: flex;\r\n flex: 1;\r\n margin: 10px 8px;\r\n color: ${props => COLORS.getColor('black', props.theme)};\r\n text-decoration: none;\r\n\r\n ${BREAKPOINTS.MEDIUM} {\r\n width: 305px;\r\n }\r\n`;\r\n\r\nconst ProductThing = styled.div`\r\n display: flex;\r\n flex: 1;\r\n flex-direction: row;\r\n border-radius: 8px;\r\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\r\n\r\n &:hover {\r\n background: ${props => COLORS.getColor('primary_20', props.theme)};\r\n\r\n .product-chevron-right-path {\r\n fill: ${props => COLORS.getColor('primary_600', props.theme)};\r\n }\r\n }\r\n &:active {\r\n background: ${props => COLORS.getColor('primary_100', props.theme)};\r\n\r\n .product-chevron-right-path {\r\n fill: ${props => COLORS.getColor('primary_600', props.theme)};\r\n }\r\n }\r\n`;\r\n\r\nconst ProductImage = styled.img`\r\n width: 95px;\r\n height: 75px;\r\n object-fit: fill;\r\n border-radius: 8px;\r\n`;\r\n\r\nconst ProductName = styled.h2`\r\n ${props => ComponentMStyling(ComponentTextStyle.Regular, COLORS.getColor('black', props.theme))}\r\n margin: 0;\r\n margin-top: 3px;\r\n`;\r\n\r\nconst ProductType = styled.span`\r\n ${props => ComponentSStyling(ComponentTextStyle.Regular, COLORS.getColor('black', props.theme))}\r\n margin: 0;\r\n`;\r\n\r\nconst ProductInnerWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 12px 18px;\r\n flex: 1;\r\n`;\r\n\r\nconst RightIconWrapper = styled.div`\r\n display: flex;\r\n justify-self: flex-start;\r\n align-items: center;\r\n padding-right: 12px;\r\n`;\r\n\r\nconst MiniProductCard: React.FunctionComponent<MiniProductCardProps> = ({ url, external, product, target = '_self' }: MiniProductCardProps) => {\r\n const theme = useTheme();\r\n const { navigate } = useNavigation();\r\n const onClick = (e: any) => {\r\n if (external) {\r\n return;\r\n }\r\n e?.preventDefault();\r\n navigate && navigate(url ?? '', false);\r\n };\r\n return (\r\n <ProductLink onClick={onClick} $variant='styleless' href={url ?? ''} target={target}>\r\n <ProductThing>\r\n {product.image && <ProductImage src={product.image} />}\r\n <ProductInnerWrapper>\r\n <ProductName>{product.name}</ProductName>\r\n <ProductType>{product.type}</ProductType>\r\n </ProductInnerWrapper>\r\n <RightIconWrapper>\r\n <SystemIcons.ChevronRight color={COLORS.getColor('primary', theme)} className={'product-chevron-right'} size={'24px'} />\r\n </RightIconWrapper>\r\n </ProductThing>\r\n </ProductLink>\r\n );\r\n};\r\n\r\nexport default MiniProductCard;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _reactModal = _interopRequireDefault(require("react-modal"));
|
|
12
12
|
var _styles = require("../styles");
|
|
13
|
+
var _styledComponents = require("styled-components");
|
|
13
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -79,26 +80,102 @@ const modalTransitions = `
|
|
|
79
80
|
transition: transform 120ms ease-in-out, opacity 120ms cubic-bezier(0.55, 0.05, 0.67, 0.19);
|
|
80
81
|
}
|
|
81
82
|
`;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
83
|
+
class ModalContainer extends React.Component {
|
|
84
|
+
componentDidMount() {
|
|
85
|
+
if (_reactModal.default.defaultStyles.overlay) {
|
|
86
|
+
_reactModal.default.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
//append style node to override modal transition classes
|
|
90
|
+
if (!document.querySelector('[modal-custom-styling="active"]')) {
|
|
91
|
+
const head = document.head || document.getElementsByTagName('head')[0];
|
|
92
|
+
const style = document.createElement('style');
|
|
93
|
+
style.setAttribute('modal-custom-styling', 'active');
|
|
94
|
+
head.appendChild(style);
|
|
95
|
+
style.appendChild(document.createTextNode(modalTransitions));
|
|
96
|
+
}
|
|
97
|
+
if (this.props.showModal) {
|
|
98
|
+
this.preventScroll(window.scrollY);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
getSnapshotBeforeUpdate(prevProps, prevState) {
|
|
102
|
+
return {
|
|
103
|
+
scroll: window.scrollY
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
107
|
+
if (this.props.showModal && !prevProps.showModal) {
|
|
108
|
+
this.preventScroll(snapshot.scroll);
|
|
109
|
+
}
|
|
110
|
+
if (!this.props.showModal && prevProps.showModal) {
|
|
111
|
+
this.resetScroll();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
componentWillUnmount() {
|
|
115
|
+
if (this.props.showModal) {
|
|
116
|
+
this.resetScroll();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
render() {
|
|
120
|
+
const {
|
|
121
|
+
id,
|
|
122
|
+
showModal,
|
|
123
|
+
closeModal,
|
|
124
|
+
children,
|
|
125
|
+
height = 'auto',
|
|
126
|
+
width = 'auto',
|
|
127
|
+
overflow = 'visible',
|
|
128
|
+
padding,
|
|
129
|
+
minWidth = '',
|
|
130
|
+
maxWidth = '',
|
|
131
|
+
zIndex = parseInt(_styles.Z_INDEXES.modal),
|
|
132
|
+
shouldCloseOnOverlayClick = true
|
|
133
|
+
} = this.props;
|
|
134
|
+
|
|
135
|
+
// should be at least z-index of modal and below z-index of toast
|
|
136
|
+
const zIndexValue = Math.min(Math.max(zIndex, +_styles.Z_INDEXES.modal), +_styles.Z_INDEXES.toast - 1);
|
|
137
|
+
const stylesConfiguration = Object.assign(_objectSpread({}, ModalContainerStyles.content), {
|
|
138
|
+
height,
|
|
139
|
+
width,
|
|
140
|
+
padding,
|
|
141
|
+
overflow,
|
|
142
|
+
minWidth,
|
|
143
|
+
maxWidth,
|
|
144
|
+
zIndex: zIndexValue,
|
|
145
|
+
background: _styles.COLORS.generateToken({
|
|
146
|
+
componentType: 'bg-surface',
|
|
147
|
+
defaultVariant: 'default'
|
|
148
|
+
}, this.context.theme)
|
|
149
|
+
});
|
|
150
|
+
const styles = {
|
|
151
|
+
content: stylesConfiguration
|
|
152
|
+
};
|
|
153
|
+
_reactModal.default.setAppElement('body');
|
|
154
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactModal.default, {
|
|
155
|
+
id: id,
|
|
156
|
+
isOpen: showModal,
|
|
157
|
+
closeTimeoutMS: 120,
|
|
158
|
+
onRequestClose: () => closeModal(),
|
|
159
|
+
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
160
|
+
style: styles,
|
|
161
|
+
children: children
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
preventScroll(offset) {
|
|
165
|
+
if (!ModalContainer.openInstances) {
|
|
166
|
+
this.setState({
|
|
167
|
+
scroll: offset
|
|
168
|
+
});
|
|
93
169
|
document.body.style.position = 'fixed';
|
|
94
170
|
document.body.style.left = `0px`;
|
|
95
171
|
document.body.style.right = `0px`;
|
|
96
172
|
document.body.style.top = `-${offset}px`;
|
|
97
173
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
174
|
+
ModalContainer.openInstances++;
|
|
175
|
+
}
|
|
176
|
+
resetScroll() {
|
|
177
|
+
ModalContainer.openInstances--;
|
|
178
|
+
if (!ModalContainer.openInstances) {
|
|
102
179
|
//@ts-ignore
|
|
103
180
|
document.body.style.position = null;
|
|
104
181
|
//@ts-ignore
|
|
@@ -107,74 +184,14 @@ const ModalContainer = props => {
|
|
|
107
184
|
document.body.style.top = null;
|
|
108
185
|
//@ts-ignore
|
|
109
186
|
document.body.style.right = null;
|
|
110
|
-
scroll && window.scrollTo(0, scroll);
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
React.useEffect(() => {
|
|
115
|
-
window && setScroll(window.scrollY);
|
|
116
|
-
});
|
|
117
|
-
React.useEffect(() => {
|
|
118
|
-
//modal was opened
|
|
119
|
-
window && !props.showModal && wasOpened && resetScroll();
|
|
120
|
-
//modal was closed
|
|
121
|
-
window && props.showModal && preventScroll(window.scrollY);
|
|
122
|
-
}, [props.showModal]);
|
|
123
|
-
React.useEffect(() => {
|
|
124
|
-
if (_reactModal.default.defaultStyles.overlay) {
|
|
125
|
-
_reactModal.default.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
//append style node to override modal transition classes
|
|
129
|
-
if (document && !document.querySelector('[modal-custom-styling="active"]')) {
|
|
130
|
-
const head = document.head || document.getElementsByTagName('head')[0];
|
|
131
|
-
const style = document.createElement('style');
|
|
132
|
-
style.setAttribute('modal-custom-styling', 'active');
|
|
133
|
-
head.appendChild(style);
|
|
134
|
-
style.appendChild(document.createTextNode(modalTransitions));
|
|
187
|
+
this.state.scroll && window.scrollTo(0, this.state.scroll);
|
|
188
|
+
this.setState({
|
|
189
|
+
scroll: 0
|
|
190
|
+
});
|
|
135
191
|
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
showModal,
|
|
140
|
-
closeModal,
|
|
141
|
-
children,
|
|
142
|
-
height = 'auto',
|
|
143
|
-
width = 'auto',
|
|
144
|
-
overflow = 'visible',
|
|
145
|
-
padding,
|
|
146
|
-
minWidth = '',
|
|
147
|
-
maxWidth = '',
|
|
148
|
-
zIndex = parseInt(_styles.Z_INDEXES.modal),
|
|
149
|
-
shouldCloseOnOverlayClick = true
|
|
150
|
-
} = props;
|
|
151
|
-
|
|
152
|
-
// should be at least z-index of modal and below z-index of toast
|
|
153
|
-
const zIndexValue = Math.min(Math.max(zIndex, +_styles.Z_INDEXES.modal), +_styles.Z_INDEXES.toast - 1);
|
|
154
|
-
const stylesConfiguration = Object.assign(_objectSpread({}, ModalContainerStyles.content), {
|
|
155
|
-
height,
|
|
156
|
-
width,
|
|
157
|
-
padding,
|
|
158
|
-
overflow,
|
|
159
|
-
minWidth,
|
|
160
|
-
maxWidth,
|
|
161
|
-
zIndex: zIndexValue
|
|
162
|
-
});
|
|
163
|
-
const styles = {
|
|
164
|
-
content: stylesConfiguration
|
|
165
|
-
};
|
|
166
|
-
_reactModal.default.setAppElement('body');
|
|
167
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactModal.default, {
|
|
168
|
-
id: id,
|
|
169
|
-
isOpen: showModal,
|
|
170
|
-
closeTimeoutMS: 120,
|
|
171
|
-
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
172
|
-
onRequestClose: () => closeModal(),
|
|
173
|
-
style: styles,
|
|
174
|
-
children: children
|
|
175
|
-
});
|
|
176
|
-
};
|
|
177
|
-
ModalContainer.propTypes = {
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
(0, _defineProperty2.default)(ModalContainer, "propTypes", {
|
|
178
195
|
id: _propTypes.default.string,
|
|
179
196
|
showModal: _propTypes.default.bool.isRequired,
|
|
180
197
|
closeModal: _propTypes.default.func.isRequired,
|
|
@@ -187,6 +204,8 @@ ModalContainer.propTypes = {
|
|
|
187
204
|
maxWidth: _propTypes.default.string,
|
|
188
205
|
zIndex: _propTypes.default.number,
|
|
189
206
|
shouldCloseOnOverlayClick: _propTypes.default.bool
|
|
190
|
-
};
|
|
207
|
+
});
|
|
208
|
+
(0, _defineProperty2.default)(ModalContainer, "openInstances", 0);
|
|
209
|
+
(0, _defineProperty2.default)(ModalContainer, "contextType", _styledComponents.ThemeContext);
|
|
191
210
|
var _default = exports.default = ModalContainer;
|
|
192
211
|
//# sourceMappingURL=ModalContainer.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalContainer.cjs","names":["React","_interopRequireWildcard","require","_reactModal","_interopRequireDefault","_styles","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","ModalContainerStyles","content","top","left","right","bottom","marginRight","width","height","borderRadius","boxSizing","margin","overflow","boxShadow","BOXSHADOWS","BOXSHADOW_L3","modalTransitions","Z_INDEXES","backdrop","modal","Counter","openInstances","ModalContainer","props","scroll","setScroll","useState","wasOpened","setWasOpened","preventScroll","offset","document","body","style","position","resetScroll","window","scrollTo","useEffect","scrollY","showModal","ReactModal","defaultStyles","overlay","backgroundColor","querySelector","head","getElementsByTagName","createElement","setAttribute","appendChild","createTextNode","id","closeModal","children","padding","minWidth","maxWidth","zIndex","parseInt","shouldCloseOnOverlayClick","zIndexValue","Math","min","max","toast","stylesConfiguration","assign","styles","setAppElement","jsx","isOpen","closeTimeoutMS","onRequestClose","propTypes","_propTypes","string","bool","isRequired","func","any","number","_default","exports"],"sources":["../../src/Modals/ModalContainer.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport {BOXSHADOWS} from '../styles';\r\nimport {Z_INDEXES} from '../styles';\r\nimport styled, {keyframes} from 'styled-components';\r\n\r\nconst ModalContainerStyles = {\r\n content: {\r\n top: 'auto',\r\n left: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n width: '640px',\r\n height: '320px',\r\n borderRadius: '8px',\r\n boxSizing: 'border-box' as any,\r\n margin: 0,\r\n overflow: 'auto',\r\n boxShadow: BOXSHADOWS.BOXSHADOW_L3,\r\n },\r\n};\r\n\r\n//override modal classes to define the animations\r\nconst modalTransitions = `\r\n\r\n@keyframes modalOpenAnimation {\r\n from{\r\n transform: scale(1.1, 1.1);\r\n }\r\n to {\r\n transform: scale(1, 1);\r\n }\r\n}\r\n\r\n.ReactModal__Overlay {\r\n opacity: 0;\r\n z-index: ${Z_INDEXES.backdrop};\r\n display:flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.ReactModal__Overlay--after-open {\r\n opacity: 1;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content{\r\n z-index: ${Z_INDEXES.modal};\r\n opacity:0;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content--after-open{\r\n opacity: 1;\r\n animation: modalOpenAnimation 150ms ease-in-out;\r\n}\r\n\r\n.ReactModal__Overlay--before-close {\r\n opacity: 0;\r\n transition: opacity 120ms linear;\r\n}\r\n\r\n.ReactModal__Content--before-close{\r\n opacity: 0;\r\n transform: scale(1.1, 1.1);\r\n transition: transform 120ms ease-in-out, opacity 120ms cubic-bezier(0.55, 0.05, 0.67, 0.19);\r\n}\r\n`;\r\n\r\n\r\ntype ModalContainerProps = {\r\n id?: string;\r\n showModal: boolean;\r\n closeModal: () => void;\r\n children: any;\r\n height?: any;\r\n width?: any;\r\n overflow?: string;\r\n padding?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n zIndex?: number;\r\n shouldCloseOnOverlayClick?: boolean;\r\n};\r\n\r\nconst Counter = { openInstances : 0};\r\nconst ModalContainer: React.FC<ModalContainerProps> = (props: ModalContainerProps) => {\r\n\r\n const [scroll, setScroll] = React.useState<number>();\r\n const [wasOpened, setWasOpened] = React.useState<boolean>(false);\r\n \r\n const preventScroll = (offset: number) => {\r\n Counter.openInstances++;\r\n setWasOpened(true);\r\n if (document) {\r\n setScroll(offset);\r\n document.body.style.position = 'fixed';\r\n document.body.style.left = `0px`;\r\n document.body.style.right = `0px`;\r\n document.body.style.top = `-${offset}px`;\r\n }\r\n }\r\n\r\n const resetScroll = () => {\r\n Counter.openInstances--;\r\n if (!Counter.openInstances && document) {\r\n //@ts-ignore\r\n document.body.style.position = null;\r\n //@ts-ignore\r\n document.body.style.left = null;\r\n //@ts-ignore\r\n document.body.style.top = null;\r\n //@ts-ignore\r\n document.body.style.right = null;\r\n scroll && window.scrollTo(0, scroll);\r\n setScroll(0);\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n window && setScroll(window.scrollY);\r\n });\r\n\r\n React.useEffect(() => {\r\n //modal was opened\r\n window && !props.showModal && wasOpened && resetScroll();\r\n //modal was closed\r\n window && props.showModal && preventScroll(window.scrollY);\r\n }, [props.showModal]);\r\n\r\n\r\n React.useEffect(() => {\r\n if (ReactModal.defaultStyles.overlay) {\r\n ReactModal.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';\r\n }\r\n\r\n //append style node to override modal transition classes\r\n if (document && !document.querySelector('[modal-custom-styling=\"active\"]')) {\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n const style = document.createElement('style');\r\n style.setAttribute('modal-custom-styling', 'active');\r\n head.appendChild(style);\r\n style.appendChild(document.createTextNode(modalTransitions));\r\n }\r\n \r\n }, []);\r\n\r\n const {\r\n id,\r\n showModal,\r\n closeModal,\r\n children,\r\n height = 'auto',\r\n width = 'auto',\r\n overflow = 'visible',\r\n padding,\r\n minWidth = '',\r\n maxWidth = '',\r\n zIndex = parseInt(Z_INDEXES.modal),\r\n shouldCloseOnOverlayClick = true\r\n } = props;\r\n\r\n // should be at least z-index of modal and below z-index of toast\r\n const zIndexValue = Math.min(Math.max(zIndex, +Z_INDEXES.modal), +Z_INDEXES.toast - 1);\r\n const stylesConfiguration = Object.assign({...ModalContainerStyles.content}, {\r\n height,\r\n width,\r\n padding,\r\n overflow,\r\n minWidth,\r\n maxWidth,\r\n zIndex: zIndexValue\r\n });\r\n const styles = {content: stylesConfiguration};\r\n ReactModal.setAppElement('body');\r\n return (\r\n <ReactModal id={id}\r\n isOpen={showModal}\r\n closeTimeoutMS={120}\r\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\r\n onRequestClose={() => closeModal()}\r\n style={styles}>\r\n {children}\r\n </ReactModal>\r\n );\r\n}\r\n\r\nexport default ModalContainer;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ModalContainer.cjs","names":["React","_interopRequireWildcard","require","_reactModal","_interopRequireDefault","_styles","_styledComponents","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","ModalContainerStyles","content","top","left","right","bottom","marginRight","width","height","borderRadius","boxSizing","margin","overflow","boxShadow","BOXSHADOWS","BOXSHADOW_L3","modalTransitions","Z_INDEXES","backdrop","modal","ModalContainer","Component","componentDidMount","ReactModal","defaultStyles","overlay","backgroundColor","document","querySelector","head","getElementsByTagName","style","createElement","setAttribute","appendChild","createTextNode","props","showModal","preventScroll","window","scrollY","getSnapshotBeforeUpdate","prevProps","prevState","scroll","componentDidUpdate","snapshot","resetScroll","componentWillUnmount","render","id","closeModal","children","padding","minWidth","maxWidth","zIndex","parseInt","shouldCloseOnOverlayClick","zIndexValue","Math","min","max","toast","stylesConfiguration","assign","background","COLORS","generateToken","componentType","defaultVariant","context","theme","styles","setAppElement","jsx","isOpen","closeTimeoutMS","onRequestClose","offset","openInstances","setState","body","position","state","scrollTo","_propTypes","string","bool","isRequired","func","any","number","ThemeContext","_default","exports"],"sources":["../../src/Modals/ModalContainer.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport {BOXSHADOWS, COLORS} from '../styles';\r\nimport {Z_INDEXES} from '../styles';\r\nimport styled, {keyframes, ThemeContext} from 'styled-components';\r\n\r\nconst ModalContainerStyles = {\r\n content: {\r\n top: 'auto',\r\n left: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n width: '640px',\r\n height: '320px',\r\n borderRadius: '8px',\r\n boxSizing: 'border-box' as any,\r\n margin: 0,\r\n overflow: 'auto',\r\n boxShadow: BOXSHADOWS.BOXSHADOW_L3,\r\n },\r\n};\r\n\r\n//override modal classes to define the animations\r\nconst modalTransitions = `\r\n\r\n@keyframes modalOpenAnimation {\r\n from{\r\n transform: scale(1.1, 1.1);\r\n }\r\n to {\r\n transform: scale(1, 1);\r\n }\r\n}\r\n\r\n.ReactModal__Overlay {\r\n opacity: 0;\r\n z-index: ${Z_INDEXES.backdrop};\r\n display:flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.ReactModal__Overlay--after-open {\r\n opacity: 1;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content{\r\n z-index: ${Z_INDEXES.modal};\r\n opacity:0;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content--after-open{\r\n opacity: 1;\r\n animation: modalOpenAnimation 150ms ease-in-out;\r\n}\r\n\r\n.ReactModal__Overlay--before-close {\r\n opacity: 0;\r\n transition: opacity 120ms linear;\r\n}\r\n\r\n.ReactModal__Content--before-close{\r\n opacity: 0;\r\n transform: scale(1.1, 1.1);\r\n transition: transform 120ms ease-in-out, opacity 120ms cubic-bezier(0.55, 0.05, 0.67, 0.19);\r\n}\r\n`;\r\n\r\n\r\ntype ModalContainerProps = {\r\n id?: string;\r\n showModal: boolean;\r\n closeModal: () => void;\r\n children: any;\r\n height?: any;\r\n width?: any;\r\n overflow?: string;\r\n padding?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n zIndex?: number;\r\n shouldCloseOnOverlayClick?: boolean;\r\n};\r\n\r\ntype ModalContainerState = {\r\n scroll: number;\r\n};\r\n\r\nclass ModalContainer extends React.Component<ModalContainerProps, ModalContainerState> {\r\n private static openInstances = 0;\r\n\r\n static contextType = ThemeContext;\r\n declare context: React.ContextType<typeof ThemeContext>;\r\n\r\n componentDidMount() {\r\n if (ReactModal.defaultStyles.overlay) {\r\n ReactModal.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';\r\n }\r\n\r\n //append style node to override modal transition classes\r\n if (!document.querySelector('[modal-custom-styling=\"active\"]')) {\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n const style = document.createElement('style');\r\n style.setAttribute('modal-custom-styling', 'active');\r\n head.appendChild(style);\r\n style.appendChild(document.createTextNode(modalTransitions));\r\n }\r\n\r\n if (this.props.showModal) {\r\n this.preventScroll(window.scrollY);\r\n }\r\n }\r\n\r\n getSnapshotBeforeUpdate(prevProps: Readonly<ModalContainerProps>, prevState: Readonly<ModalContainerState>): { scroll: number } {\r\n return {scroll: window.scrollY};\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ModalContainerProps>, prevState: Readonly<ModalContainerState>, snapshot?: { scroll: number }) {\r\n if (this.props.showModal && !prevProps.showModal) {\r\n this.preventScroll(snapshot!.scroll);\r\n }\r\n if (!this.props.showModal && prevProps.showModal) {\r\n this.resetScroll();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.props.showModal) {\r\n this.resetScroll();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n id,\r\n showModal,\r\n closeModal,\r\n children,\r\n height = 'auto',\r\n width = 'auto',\r\n overflow = 'visible',\r\n padding,\r\n minWidth = '',\r\n maxWidth = '',\r\n zIndex = parseInt(Z_INDEXES.modal),\r\n shouldCloseOnOverlayClick = true\r\n } = this.props;\r\n\r\n // should be at least z-index of modal and below z-index of toast\r\n const zIndexValue = Math.min(Math.max(zIndex, +Z_INDEXES.modal), +Z_INDEXES.toast - 1);\r\n const stylesConfiguration = Object.assign({...ModalContainerStyles.content}, {\r\n height,\r\n width,\r\n padding,\r\n overflow,\r\n minWidth,\r\n maxWidth,\r\n zIndex: zIndexValue,\r\n background: COLORS.generateToken({componentType:'bg-surface', defaultVariant:'default'}, this.context!.theme)\r\n });\r\n const styles = {content: stylesConfiguration};\r\n\r\n ReactModal.setAppElement('body');\r\n return (\r\n <ReactModal id={id}\r\n isOpen={showModal}\r\n closeTimeoutMS={120}\r\n onRequestClose={() => closeModal()}\r\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\r\n style={styles}>\r\n {children}\r\n </ReactModal>\r\n );\r\n }\r\n\r\n private preventScroll(offset: number) {\r\n if (!ModalContainer.openInstances) {\r\n this.setState({scroll: offset});\r\n document.body.style.position = 'fixed';\r\n document.body.style.left = `0px`;\r\n document.body.style.right = `0px`;\r\n document.body.style.top = `-${offset}px`;\r\n }\r\n ModalContainer.openInstances++\r\n }\r\n\r\n private resetScroll() {\r\n ModalContainer.openInstances--;\r\n if (!ModalContainer.openInstances) {\r\n //@ts-ignore\r\n document.body.style.position = null;\r\n //@ts-ignore\r\n document.body.style.left = null;\r\n //@ts-ignore\r\n document.body.style.top = null;\r\n //@ts-ignore\r\n document.body.style.right = null;\r\n this.state.scroll && window.scrollTo(0, this.state.scroll);\r\n this.setState({scroll: 0});\r\n }\r\n }\r\n}\r\n\r\nexport default ModalContainer;"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { ThemeContext } from 'styled-components';
|
|
2
3
|
type ModalContainerProps = {
|
|
3
4
|
id?: string;
|
|
4
5
|
showModal: boolean;
|
|
@@ -13,5 +14,23 @@ type ModalContainerProps = {
|
|
|
13
14
|
zIndex?: number;
|
|
14
15
|
shouldCloseOnOverlayClick?: boolean;
|
|
15
16
|
};
|
|
16
|
-
|
|
17
|
+
type ModalContainerState = {
|
|
18
|
+
scroll: number;
|
|
19
|
+
};
|
|
20
|
+
declare class ModalContainer extends React.Component<ModalContainerProps, ModalContainerState> {
|
|
21
|
+
private static openInstances;
|
|
22
|
+
static contextType: React.Context<import("styled-components").DefaultTheme | undefined>;
|
|
23
|
+
context: React.ContextType<typeof ThemeContext>;
|
|
24
|
+
componentDidMount(): void;
|
|
25
|
+
getSnapshotBeforeUpdate(prevProps: Readonly<ModalContainerProps>, prevState: Readonly<ModalContainerState>): {
|
|
26
|
+
scroll: number;
|
|
27
|
+
};
|
|
28
|
+
componentDidUpdate(prevProps: Readonly<ModalContainerProps>, prevState: Readonly<ModalContainerState>, snapshot?: {
|
|
29
|
+
scroll: number;
|
|
30
|
+
}): void;
|
|
31
|
+
componentWillUnmount(): void;
|
|
32
|
+
render(): React.JSX.Element;
|
|
33
|
+
private preventScroll;
|
|
34
|
+
private resetScroll;
|
|
35
|
+
}
|
|
17
36
|
export default ModalContainer;
|
|
@@ -4,8 +4,9 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
4
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import ReactModal from 'react-modal';
|
|
7
|
-
import { BOXSHADOWS } from '../styles';
|
|
7
|
+
import { BOXSHADOWS, COLORS } from '../styles';
|
|
8
8
|
import { Z_INDEXES } from '../styles';
|
|
9
|
+
import { ThemeContext } from 'styled-components';
|
|
9
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
11
|
const ModalContainerStyles = {
|
|
11
12
|
content: {
|
|
@@ -71,26 +72,102 @@ const modalTransitions = `
|
|
|
71
72
|
transition: transform 120ms ease-in-out, opacity 120ms cubic-bezier(0.55, 0.05, 0.67, 0.19);
|
|
72
73
|
}
|
|
73
74
|
`;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
75
|
+
class ModalContainer extends React.Component {
|
|
76
|
+
componentDidMount() {
|
|
77
|
+
if (ReactModal.defaultStyles.overlay) {
|
|
78
|
+
ReactModal.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//append style node to override modal transition classes
|
|
82
|
+
if (!document.querySelector('[modal-custom-styling="active"]')) {
|
|
83
|
+
const head = document.head || document.getElementsByTagName('head')[0];
|
|
84
|
+
const style = document.createElement('style');
|
|
85
|
+
style.setAttribute('modal-custom-styling', 'active');
|
|
86
|
+
head.appendChild(style);
|
|
87
|
+
style.appendChild(document.createTextNode(modalTransitions));
|
|
88
|
+
}
|
|
89
|
+
if (this.props.showModal) {
|
|
90
|
+
this.preventScroll(window.scrollY);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
getSnapshotBeforeUpdate(prevProps, prevState) {
|
|
94
|
+
return {
|
|
95
|
+
scroll: window.scrollY
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
99
|
+
if (this.props.showModal && !prevProps.showModal) {
|
|
100
|
+
this.preventScroll(snapshot.scroll);
|
|
101
|
+
}
|
|
102
|
+
if (!this.props.showModal && prevProps.showModal) {
|
|
103
|
+
this.resetScroll();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
componentWillUnmount() {
|
|
107
|
+
if (this.props.showModal) {
|
|
108
|
+
this.resetScroll();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
render() {
|
|
112
|
+
const {
|
|
113
|
+
id,
|
|
114
|
+
showModal,
|
|
115
|
+
closeModal,
|
|
116
|
+
children,
|
|
117
|
+
height = 'auto',
|
|
118
|
+
width = 'auto',
|
|
119
|
+
overflow = 'visible',
|
|
120
|
+
padding,
|
|
121
|
+
minWidth = '',
|
|
122
|
+
maxWidth = '',
|
|
123
|
+
zIndex = parseInt(Z_INDEXES.modal),
|
|
124
|
+
shouldCloseOnOverlayClick = true
|
|
125
|
+
} = this.props;
|
|
126
|
+
|
|
127
|
+
// should be at least z-index of modal and below z-index of toast
|
|
128
|
+
const zIndexValue = Math.min(Math.max(zIndex, +Z_INDEXES.modal), +Z_INDEXES.toast - 1);
|
|
129
|
+
const stylesConfiguration = Object.assign(_objectSpread({}, ModalContainerStyles.content), {
|
|
130
|
+
height,
|
|
131
|
+
width,
|
|
132
|
+
padding,
|
|
133
|
+
overflow,
|
|
134
|
+
minWidth,
|
|
135
|
+
maxWidth,
|
|
136
|
+
zIndex: zIndexValue,
|
|
137
|
+
background: COLORS.generateToken({
|
|
138
|
+
componentType: 'bg-surface',
|
|
139
|
+
defaultVariant: 'default'
|
|
140
|
+
}, this.context.theme)
|
|
141
|
+
});
|
|
142
|
+
const styles = {
|
|
143
|
+
content: stylesConfiguration
|
|
144
|
+
};
|
|
145
|
+
ReactModal.setAppElement('body');
|
|
146
|
+
return /*#__PURE__*/_jsx(ReactModal, {
|
|
147
|
+
id: id,
|
|
148
|
+
isOpen: showModal,
|
|
149
|
+
closeTimeoutMS: 120,
|
|
150
|
+
onRequestClose: () => closeModal(),
|
|
151
|
+
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
152
|
+
style: styles,
|
|
153
|
+
children: children
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
preventScroll(offset) {
|
|
157
|
+
if (!ModalContainer.openInstances) {
|
|
158
|
+
this.setState({
|
|
159
|
+
scroll: offset
|
|
160
|
+
});
|
|
85
161
|
document.body.style.position = 'fixed';
|
|
86
162
|
document.body.style.left = `0px`;
|
|
87
163
|
document.body.style.right = `0px`;
|
|
88
164
|
document.body.style.top = `-${offset}px`;
|
|
89
165
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
166
|
+
ModalContainer.openInstances++;
|
|
167
|
+
}
|
|
168
|
+
resetScroll() {
|
|
169
|
+
ModalContainer.openInstances--;
|
|
170
|
+
if (!ModalContainer.openInstances) {
|
|
94
171
|
//@ts-ignore
|
|
95
172
|
document.body.style.position = null;
|
|
96
173
|
//@ts-ignore
|
|
@@ -99,74 +176,14 @@ const ModalContainer = props => {
|
|
|
99
176
|
document.body.style.top = null;
|
|
100
177
|
//@ts-ignore
|
|
101
178
|
document.body.style.right = null;
|
|
102
|
-
scroll && window.scrollTo(0, scroll);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
React.useEffect(() => {
|
|
107
|
-
window && setScroll(window.scrollY);
|
|
108
|
-
});
|
|
109
|
-
React.useEffect(() => {
|
|
110
|
-
//modal was opened
|
|
111
|
-
window && !props.showModal && wasOpened && resetScroll();
|
|
112
|
-
//modal was closed
|
|
113
|
-
window && props.showModal && preventScroll(window.scrollY);
|
|
114
|
-
}, [props.showModal]);
|
|
115
|
-
React.useEffect(() => {
|
|
116
|
-
if (ReactModal.defaultStyles.overlay) {
|
|
117
|
-
ReactModal.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';
|
|
179
|
+
this.state.scroll && window.scrollTo(0, this.state.scroll);
|
|
180
|
+
this.setState({
|
|
181
|
+
scroll: 0
|
|
182
|
+
});
|
|
118
183
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const head = document.head || document.getElementsByTagName('head')[0];
|
|
123
|
-
const style = document.createElement('style');
|
|
124
|
-
style.setAttribute('modal-custom-styling', 'active');
|
|
125
|
-
head.appendChild(style);
|
|
126
|
-
style.appendChild(document.createTextNode(modalTransitions));
|
|
127
|
-
}
|
|
128
|
-
}, []);
|
|
129
|
-
const {
|
|
130
|
-
id,
|
|
131
|
-
showModal,
|
|
132
|
-
closeModal,
|
|
133
|
-
children,
|
|
134
|
-
height = 'auto',
|
|
135
|
-
width = 'auto',
|
|
136
|
-
overflow = 'visible',
|
|
137
|
-
padding,
|
|
138
|
-
minWidth = '',
|
|
139
|
-
maxWidth = '',
|
|
140
|
-
zIndex = parseInt(Z_INDEXES.modal),
|
|
141
|
-
shouldCloseOnOverlayClick = true
|
|
142
|
-
} = props;
|
|
143
|
-
|
|
144
|
-
// should be at least z-index of modal and below z-index of toast
|
|
145
|
-
const zIndexValue = Math.min(Math.max(zIndex, +Z_INDEXES.modal), +Z_INDEXES.toast - 1);
|
|
146
|
-
const stylesConfiguration = Object.assign(_objectSpread({}, ModalContainerStyles.content), {
|
|
147
|
-
height,
|
|
148
|
-
width,
|
|
149
|
-
padding,
|
|
150
|
-
overflow,
|
|
151
|
-
minWidth,
|
|
152
|
-
maxWidth,
|
|
153
|
-
zIndex: zIndexValue
|
|
154
|
-
});
|
|
155
|
-
const styles = {
|
|
156
|
-
content: stylesConfiguration
|
|
157
|
-
};
|
|
158
|
-
ReactModal.setAppElement('body');
|
|
159
|
-
return /*#__PURE__*/_jsx(ReactModal, {
|
|
160
|
-
id: id,
|
|
161
|
-
isOpen: showModal,
|
|
162
|
-
closeTimeoutMS: 120,
|
|
163
|
-
shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
|
|
164
|
-
onRequestClose: () => closeModal(),
|
|
165
|
-
style: styles,
|
|
166
|
-
children: children
|
|
167
|
-
});
|
|
168
|
-
};
|
|
169
|
-
ModalContainer.propTypes = {
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
_defineProperty(ModalContainer, "propTypes", {
|
|
170
187
|
id: _pt.string,
|
|
171
188
|
showModal: _pt.bool.isRequired,
|
|
172
189
|
closeModal: _pt.func.isRequired,
|
|
@@ -179,6 +196,8 @@ ModalContainer.propTypes = {
|
|
|
179
196
|
maxWidth: _pt.string,
|
|
180
197
|
zIndex: _pt.number,
|
|
181
198
|
shouldCloseOnOverlayClick: _pt.bool
|
|
182
|
-
};
|
|
199
|
+
});
|
|
200
|
+
_defineProperty(ModalContainer, "openInstances", 0);
|
|
201
|
+
_defineProperty(ModalContainer, "contextType", ThemeContext);
|
|
183
202
|
export default ModalContainer;
|
|
184
203
|
//# sourceMappingURL=ModalContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalContainer.js","names":["React","ReactModal","BOXSHADOWS","Z_INDEXES","jsx","_jsx","ModalContainerStyles","content","top","left","right","bottom","marginRight","width","height","borderRadius","boxSizing","margin","overflow","boxShadow","BOXSHADOW_L3","modalTransitions","backdrop","modal","Counter","openInstances","ModalContainer","props","scroll","setScroll","useState","wasOpened","setWasOpened","preventScroll","offset","document","body","style","position","resetScroll","window","scrollTo","useEffect","scrollY","showModal","defaultStyles","overlay","backgroundColor","querySelector","head","getElementsByTagName","createElement","setAttribute","appendChild","createTextNode","id","closeModal","children","padding","minWidth","maxWidth","zIndex","parseInt","shouldCloseOnOverlayClick","zIndexValue","Math","min","max","toast","stylesConfiguration","Object","assign","_objectSpread","styles","setAppElement","isOpen","closeTimeoutMS","onRequestClose","propTypes","_pt","string","bool","isRequired","func","any","number"],"sources":["../../src/Modals/ModalContainer.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport {BOXSHADOWS} from '../styles';\r\nimport {Z_INDEXES} from '../styles';\r\nimport styled, {keyframes} from 'styled-components';\r\n\r\nconst ModalContainerStyles = {\r\n content: {\r\n top: 'auto',\r\n left: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n width: '640px',\r\n height: '320px',\r\n borderRadius: '8px',\r\n boxSizing: 'border-box' as any,\r\n margin: 0,\r\n overflow: 'auto',\r\n boxShadow: BOXSHADOWS.BOXSHADOW_L3,\r\n },\r\n};\r\n\r\n//override modal classes to define the animations\r\nconst modalTransitions = `\r\n\r\n@keyframes modalOpenAnimation {\r\n from{\r\n transform: scale(1.1, 1.1);\r\n }\r\n to {\r\n transform: scale(1, 1);\r\n }\r\n}\r\n\r\n.ReactModal__Overlay {\r\n opacity: 0;\r\n z-index: ${Z_INDEXES.backdrop};\r\n display:flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.ReactModal__Overlay--after-open {\r\n opacity: 1;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content{\r\n z-index: ${Z_INDEXES.modal};\r\n opacity:0;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content--after-open{\r\n opacity: 1;\r\n animation: modalOpenAnimation 150ms ease-in-out;\r\n}\r\n\r\n.ReactModal__Overlay--before-close {\r\n opacity: 0;\r\n transition: opacity 120ms linear;\r\n}\r\n\r\n.ReactModal__Content--before-close{\r\n opacity: 0;\r\n transform: scale(1.1, 1.1);\r\n transition: transform 120ms ease-in-out, opacity 120ms cubic-bezier(0.55, 0.05, 0.67, 0.19);\r\n}\r\n`;\r\n\r\n\r\ntype ModalContainerProps = {\r\n id?: string;\r\n showModal: boolean;\r\n closeModal: () => void;\r\n children: any;\r\n height?: any;\r\n width?: any;\r\n overflow?: string;\r\n padding?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n zIndex?: number;\r\n shouldCloseOnOverlayClick?: boolean;\r\n};\r\n\r\nconst Counter = { openInstances : 0};\r\nconst ModalContainer: React.FC<ModalContainerProps> = (props: ModalContainerProps) => {\r\n\r\n const [scroll, setScroll] = React.useState<number>();\r\n const [wasOpened, setWasOpened] = React.useState<boolean>(false);\r\n \r\n const preventScroll = (offset: number) => {\r\n Counter.openInstances++;\r\n setWasOpened(true);\r\n if (document) {\r\n setScroll(offset);\r\n document.body.style.position = 'fixed';\r\n document.body.style.left = `0px`;\r\n document.body.style.right = `0px`;\r\n document.body.style.top = `-${offset}px`;\r\n }\r\n }\r\n\r\n const resetScroll = () => {\r\n Counter.openInstances--;\r\n if (!Counter.openInstances && document) {\r\n //@ts-ignore\r\n document.body.style.position = null;\r\n //@ts-ignore\r\n document.body.style.left = null;\r\n //@ts-ignore\r\n document.body.style.top = null;\r\n //@ts-ignore\r\n document.body.style.right = null;\r\n scroll && window.scrollTo(0, scroll);\r\n setScroll(0);\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n window && setScroll(window.scrollY);\r\n });\r\n\r\n React.useEffect(() => {\r\n //modal was opened\r\n window && !props.showModal && wasOpened && resetScroll();\r\n //modal was closed\r\n window && props.showModal && preventScroll(window.scrollY);\r\n }, [props.showModal]);\r\n\r\n\r\n React.useEffect(() => {\r\n if (ReactModal.defaultStyles.overlay) {\r\n ReactModal.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';\r\n }\r\n\r\n //append style node to override modal transition classes\r\n if (document && !document.querySelector('[modal-custom-styling=\"active\"]')) {\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n const style = document.createElement('style');\r\n style.setAttribute('modal-custom-styling', 'active');\r\n head.appendChild(style);\r\n style.appendChild(document.createTextNode(modalTransitions));\r\n }\r\n \r\n }, []);\r\n\r\n const {\r\n id,\r\n showModal,\r\n closeModal,\r\n children,\r\n height = 'auto',\r\n width = 'auto',\r\n overflow = 'visible',\r\n padding,\r\n minWidth = '',\r\n maxWidth = '',\r\n zIndex = parseInt(Z_INDEXES.modal),\r\n shouldCloseOnOverlayClick = true\r\n } = props;\r\n\r\n // should be at least z-index of modal and below z-index of toast\r\n const zIndexValue = Math.min(Math.max(zIndex, +Z_INDEXES.modal), +Z_INDEXES.toast - 1);\r\n const stylesConfiguration = Object.assign({...ModalContainerStyles.content}, {\r\n height,\r\n width,\r\n padding,\r\n overflow,\r\n minWidth,\r\n maxWidth,\r\n zIndex: zIndexValue\r\n });\r\n const styles = {content: stylesConfiguration};\r\n ReactModal.setAppElement('body');\r\n return (\r\n <ReactModal id={id}\r\n isOpen={showModal}\r\n closeTimeoutMS={120}\r\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\r\n onRequestClose={() => closeModal()}\r\n style={styles}>\r\n {children}\r\n </ReactModal>\r\n );\r\n}\r\n\r\nexport default ModalContainer;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ModalContainer.js","names":["React","ReactModal","BOXSHADOWS","COLORS","Z_INDEXES","ThemeContext","jsx","_jsx","ModalContainerStyles","content","top","left","right","bottom","marginRight","width","height","borderRadius","boxSizing","margin","overflow","boxShadow","BOXSHADOW_L3","modalTransitions","backdrop","modal","ModalContainer","Component","componentDidMount","defaultStyles","overlay","backgroundColor","document","querySelector","head","getElementsByTagName","style","createElement","setAttribute","appendChild","createTextNode","props","showModal","preventScroll","window","scrollY","getSnapshotBeforeUpdate","prevProps","prevState","scroll","componentDidUpdate","snapshot","resetScroll","componentWillUnmount","render","id","closeModal","children","padding","minWidth","maxWidth","zIndex","parseInt","shouldCloseOnOverlayClick","zIndexValue","Math","min","max","toast","stylesConfiguration","Object","assign","_objectSpread","background","generateToken","componentType","defaultVariant","context","theme","styles","setAppElement","isOpen","closeTimeoutMS","onRequestClose","offset","openInstances","setState","body","position","state","scrollTo","_defineProperty","_pt","string","bool","isRequired","func","any","number"],"sources":["../../src/Modals/ModalContainer.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport {BOXSHADOWS, COLORS} from '../styles';\r\nimport {Z_INDEXES} from '../styles';\r\nimport styled, {keyframes, ThemeContext} from 'styled-components';\r\n\r\nconst ModalContainerStyles = {\r\n content: {\r\n top: 'auto',\r\n left: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n width: '640px',\r\n height: '320px',\r\n borderRadius: '8px',\r\n boxSizing: 'border-box' as any,\r\n margin: 0,\r\n overflow: 'auto',\r\n boxShadow: BOXSHADOWS.BOXSHADOW_L3,\r\n },\r\n};\r\n\r\n//override modal classes to define the animations\r\nconst modalTransitions = `\r\n\r\n@keyframes modalOpenAnimation {\r\n from{\r\n transform: scale(1.1, 1.1);\r\n }\r\n to {\r\n transform: scale(1, 1);\r\n }\r\n}\r\n\r\n.ReactModal__Overlay {\r\n opacity: 0;\r\n z-index: ${Z_INDEXES.backdrop};\r\n display:flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.ReactModal__Overlay--after-open {\r\n opacity: 1;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content{\r\n z-index: ${Z_INDEXES.modal};\r\n opacity:0;\r\n transition: opacity 150ms cubic-bezier(0.22, 0.61, 0.35, 1);\r\n}\r\n\r\n.ReactModal__Content--after-open{\r\n opacity: 1;\r\n animation: modalOpenAnimation 150ms ease-in-out;\r\n}\r\n\r\n.ReactModal__Overlay--before-close {\r\n opacity: 0;\r\n transition: opacity 120ms linear;\r\n}\r\n\r\n.ReactModal__Content--before-close{\r\n opacity: 0;\r\n transform: scale(1.1, 1.1);\r\n transition: transform 120ms ease-in-out, opacity 120ms cubic-bezier(0.55, 0.05, 0.67, 0.19);\r\n}\r\n`;\r\n\r\n\r\ntype ModalContainerProps = {\r\n id?: string;\r\n showModal: boolean;\r\n closeModal: () => void;\r\n children: any;\r\n height?: any;\r\n width?: any;\r\n overflow?: string;\r\n padding?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n zIndex?: number;\r\n shouldCloseOnOverlayClick?: boolean;\r\n};\r\n\r\ntype ModalContainerState = {\r\n scroll: number;\r\n};\r\n\r\nclass ModalContainer extends React.Component<ModalContainerProps, ModalContainerState> {\r\n private static openInstances = 0;\r\n\r\n static contextType = ThemeContext;\r\n declare context: React.ContextType<typeof ThemeContext>;\r\n\r\n componentDidMount() {\r\n if (ReactModal.defaultStyles.overlay) {\r\n ReactModal.defaultStyles.overlay.backgroundColor = 'rgba(0,0,0,0.5)';\r\n }\r\n\r\n //append style node to override modal transition classes\r\n if (!document.querySelector('[modal-custom-styling=\"active\"]')) {\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n const style = document.createElement('style');\r\n style.setAttribute('modal-custom-styling', 'active');\r\n head.appendChild(style);\r\n style.appendChild(document.createTextNode(modalTransitions));\r\n }\r\n\r\n if (this.props.showModal) {\r\n this.preventScroll(window.scrollY);\r\n }\r\n }\r\n\r\n getSnapshotBeforeUpdate(prevProps: Readonly<ModalContainerProps>, prevState: Readonly<ModalContainerState>): { scroll: number } {\r\n return {scroll: window.scrollY};\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ModalContainerProps>, prevState: Readonly<ModalContainerState>, snapshot?: { scroll: number }) {\r\n if (this.props.showModal && !prevProps.showModal) {\r\n this.preventScroll(snapshot!.scroll);\r\n }\r\n if (!this.props.showModal && prevProps.showModal) {\r\n this.resetScroll();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.props.showModal) {\r\n this.resetScroll();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n id,\r\n showModal,\r\n closeModal,\r\n children,\r\n height = 'auto',\r\n width = 'auto',\r\n overflow = 'visible',\r\n padding,\r\n minWidth = '',\r\n maxWidth = '',\r\n zIndex = parseInt(Z_INDEXES.modal),\r\n shouldCloseOnOverlayClick = true\r\n } = this.props;\r\n\r\n // should be at least z-index of modal and below z-index of toast\r\n const zIndexValue = Math.min(Math.max(zIndex, +Z_INDEXES.modal), +Z_INDEXES.toast - 1);\r\n const stylesConfiguration = Object.assign({...ModalContainerStyles.content}, {\r\n height,\r\n width,\r\n padding,\r\n overflow,\r\n minWidth,\r\n maxWidth,\r\n zIndex: zIndexValue,\r\n background: COLORS.generateToken({componentType:'bg-surface', defaultVariant:'default'}, this.context!.theme)\r\n });\r\n const styles = {content: stylesConfiguration};\r\n\r\n ReactModal.setAppElement('body');\r\n return (\r\n <ReactModal id={id}\r\n isOpen={showModal}\r\n closeTimeoutMS={120}\r\n onRequestClose={() => closeModal()}\r\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\r\n style={styles}>\r\n {children}\r\n </ReactModal>\r\n );\r\n }\r\n\r\n private preventScroll(offset: number) {\r\n if (!ModalContainer.openInstances) {\r\n this.setState({scroll: offset});\r\n document.body.style.position = 'fixed';\r\n document.body.style.left = `0px`;\r\n document.body.style.right = `0px`;\r\n document.body.style.top = `-${offset}px`;\r\n }\r\n ModalContainer.openInstances++\r\n }\r\n\r\n private resetScroll() {\r\n ModalContainer.openInstances--;\r\n if (!ModalContainer.openInstances) {\r\n //@ts-ignore\r\n document.body.style.position = null;\r\n //@ts-ignore\r\n document.body.style.left = null;\r\n //@ts-ignore\r\n document.body.style.top = null;\r\n //@ts-ignore\r\n document.body.style.right = null;\r\n this.state.scroll && window.scrollTo(0, this.state.scroll);\r\n this.setState({scroll: 0});\r\n }\r\n }\r\n}\r\n\r\nexport default ModalContainer;"],"mappings":"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","ignoreList":[]}
|