UNPKG

@retailmenot/anchor

Version:

A React UI Library by RetailMeNot

330 lines (299 loc) 12 kB
import { a as _taggedTemplateLiteral, f as _classCallCheck, h as _inherits, i as _createSuper } from './anchor-chunk-7b9d8557.js'; import { a as __rest } from './anchor-chunk-27f34e54.js'; import StyledReactModal__default, { BaseModalBackground, ModalProvider } from 'styled-react-modal'; import { forwardRef, createElement, useContext, useState, Children, Fragment, useEffect, useRef, createRef, Component, cloneElement, useReducer, PureComponent, isValidElement, createContext, useImperativeHandle } from 'react'; import classNames from 'classnames'; import styled, { css } from '@xstyled/styled-components'; import { space, th } from '@xstyled/system'; import './addevent.js'; import './anchor-chunk-25c07228.js'; import './arrowback.js'; import './arrowforward.js'; import './avataricon.js'; import './avataroutline.js'; import './barcode.js'; import './bulletlist.js'; import './calendar.js'; import './camera.js'; import './cart.js'; import './cashback.js'; import './cells.js'; import './chat.js'; import './check.js'; import './checksmall.js'; import './chevrondown.js'; import './chevrondownsmall.js'; import './chevronleft.js'; import './chevronleftsmall.js'; import './chevronright.js'; import './chevronrightsmall.js'; import './chevronup.js'; import './chevronupsmall.js'; import './clock.js'; import { Close } from './close.js'; import './closesmall.js'; import './commentmore.js'; import './creditcard.js'; import './crosshairs.js'; import './cut.js'; import './disabled.js'; import './dislike.js'; import './download.js'; import './ellipses.js'; import './ellipsesvertical.js'; import './envelope.js'; import './envelopeopen.js'; import './error.js'; import './expand.js'; import './gear.js'; import './giftcard.js'; import './hamburger.js'; import './heart.js'; import './heartoutline.js'; import './home.js'; import './info.js'; import './infooutline.js'; import './laptop.js'; import './lightning.js'; import './like.js'; import './listicon.js'; import './lock.js'; import './map.js'; import './marker.js'; import './markeroutline.js'; import './mobile.js'; import './news.js'; import './pencil.js'; import './play.js'; import './plus.js'; import './plussmall.js'; import './print.js'; import './question.js'; import './questionoutline.js'; import './refresh.js'; import './retailmenotlogo.js'; import './sadface.js'; import './search.js'; import './share.js'; import './sliders.js'; import './star.js'; import './starhalf.js'; import './staroutline.js'; import './success.js'; import './successoutline.js'; import './tag.js'; import './upload.js'; import './tagadd.js'; import { a as Typography } from './anchor-chunk-5b0bbe0b.js'; import './anchor-chunk-cd7ef49a.js'; import { a as Button } from './anchor-chunk-e1ca097b.js'; import './anchor-chunk-20e4020f.js'; import 'polished'; function _templateObject() { var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n width: 100%;\n\n order: 0;\n flex-grow: 1;\n ", "\n"]); _templateObject = function _templateObject() { return data; }; return data; } var StyledContent = styled.div(_templateObject(), space); var ModalContent = function ModalContent(_ref) { var children = _ref.children, className = _ref.className; return createElement(StyledContent, { className: classNames('anchor-modal-content', className) }, children); }; function _templateObject$1() { var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n min-height: 4rem;\n padding: 1.25rem 4.75rem 1.25rem 2rem;\n width: 100%;\n border-radius: modal modal 0 0;\n margin-bottom: 1rem;\n\n display: flex;\n order: -1;\n\n ", ";\n\n // If the header exists, remove the Content's padding.\n // We're preferring this selector to using Modal :first-child\n // in case there is a close button placed before it, and using a\n // double selector to ensure it takes precedence.\n & ~ ", "", " {\n padding-top: 0;\n }\n\n ", "\n"]); _templateObject$1 = function _templateObject() { return data; }; return data; } var StyledHeader = styled('div')(_templateObject$1(), function (_ref) { var _ref$color = _ref.color, color = _ref$color === void 0 ? 'text.light' : _ref$color, _ref$background = _ref.background, background = _ref$background === void 0 ? 'white' : _ref$background; return css({ color: color, backgroundColor: background }); }, StyledContent, StyledContent, space); var ModalHeader = function ModalHeader(_a) { var children = _a.children, className = _a.className, title = _a.title, props = __rest(_a, ["children", "className", "title"]); return createElement(StyledHeader, Object.assign({ className: classNames('anchor-modal-header', className) }, props), title && createElement(Typography, { scale: 20, weight: "bold" }, title), children); }; function _templateObject2() { var data = _taggedTemplateLiteral(["\n && {\n padding: ", ";\n }\n "]); _templateObject2 = function _templateObject2() { return data; }; return data; } function _templateObject$2() { var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n width: 100%;\n border-radius: 0 0 modal modal;\n margin-top: auto;\n ", ";\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n order: 1;\n justify-self: flex-end;\n\n background: ", ";\n\n ", "\n"]); _templateObject$2 = function _templateObject() { return data; }; return data; } var StyledFooter = styled('div')(_templateObject$2(), function (_ref) { var padding = _ref.padding; return padding && css(_templateObject2(), padding); }, function (_ref2) { var _ref2$background = _ref2.background, background = _ref2$background === void 0 ? 'transparent' : _ref2$background; return background; }, space); var ModalFooter = function ModalFooter(_a) { var children = _a.children, className = _a.className, props = __rest(_a, ["children", "className"]); return createElement(StyledFooter, Object.assign({ className: classNames('anchor-modal-footer', className) }, props), children); }; function _templateObject$3() { var data = _taggedTemplateLiteral(["\n position: absolute;\n height: 3rem;\n width: 3rem;\n margin: 0.5rem;\n top: 0;\n ", "\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n cursor: pointer;\n"]); _templateObject$3 = function _templateObject() { return data; }; return data; } var StyledClose = styled('div')(_templateObject$3(), function (_ref) { var align = _ref.align; return align === 'left' ? 'left: 0;' : 'right: 0;'; }); var ModalClose = function ModalClose(_a) { var className = _a.className, _a$align = _a.align, align = _a$align === void 0 ? 'right' : _a$align, props = __rest(_a, ["className", "align"]); return createElement(StyledClose, { className: classNames('anchor-modal-close', className), align: align }, createElement(Button, Object.assign({ prefix: createElement(Close, null), variant: "minimal", circular: true }, props))); }; function _templateObject2$1() { var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n overflow-y: auto;\n padding: ", ";\n background-color: ", ";\n"]); _templateObject2$1 = function _templateObject2() { return data; }; return data; } function _templateObject$4() { var data = _taggedTemplateLiteral(["\n position: relative;\n width: ", ";\n height: ", ";\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-between;\n\n ", ";\n box-shadow: ", ";\n\n overflow: hidden;\n\n // The Modal Content component only gets its bottom padding if\n // its the last-child of the modal. Furthermore, if the Modal Header\n // comes before it, then the Content loses its top padding\n // (see Modal Header styles). The goal is that we have full padding\n // in isolation, but lose the top or bottom padding if the Header or\n // Footer (respectively) are also used.\n ", " {\n padding: ", ";\n &:last-child {\n padding-bottom: ", ";\n }\n }\n ", " {\n padding-left: ", "rem;\n }\n ", " {\n padding: ", ";\n min-height: ", "rem;\n }\n ", "\n"]); _templateObject$4 = function _templateObject() { return data; }; return data; } var Sizes = { lg: { width: 50, contentPadding: 2.5, footerHeight: 6.5 }, sm: { width: 25, contentPadding: 2, footerHeight: 5.5 } }; var defaultSize = 'lg'; var StyledModal = StyledReactModal__default.styled(_templateObject$4(), function (_ref) { var width = _ref.width, _ref$size = _ref.size, size = _ref$size === void 0 ? defaultSize : _ref$size; return width || "".concat(Sizes[size].width, "rem"); }, function (_ref2) { var _ref2$height = _ref2.height, height = _ref2$height === void 0 ? '42.375rem' : _ref2$height; return height; }, function (_ref3) { var _ref3$background = _ref3.background, background = _ref3$background === void 0 ? 'white' : _ref3$background, color = _ref3.color; return css({ background: th.color(background), color: color, borderRadius: 'modal' }); }, function (_ref4) { var _ref4$shadow = _ref4.shadow, shadow = _ref4$shadow === void 0 ? '0 0.375rem 0.5rem 0.25rem rgba(0,0,0,0.13)' : _ref4$shadow; return shadow; }, StyledContent, function (_ref5) { var _ref5$size = _ref5.size, size = _ref5$size === void 0 ? defaultSize : _ref5$size; return "4rem ".concat(Sizes[size].contentPadding, "rem 0 ").concat(Sizes[size].contentPadding, "rem"); }, function (_ref6) { var _ref6$size = _ref6.size, size = _ref6$size === void 0 ? defaultSize : _ref6$size; return "".concat(Sizes[size].contentPadding, "rem"); }, StyledHeader, function (_ref7) { var _ref7$size = _ref7.size, size = _ref7$size === void 0 ? defaultSize : _ref7$size; return Sizes[size].contentPadding; }, StyledFooter, function (_ref8) { var _ref8$size = _ref8.size, size = _ref8$size === void 0 ? defaultSize : _ref8$size; return "0 ".concat(Sizes[size].contentPadding, "rem"); }, function (_ref9) { var _ref9$size = _ref9.size, size = _ref9$size === void 0 ? defaultSize : _ref9$size; return Sizes[size].footerHeight; }, space); var Modal = function Modal(_a) { var children = _a.children, className = _a.className, _a$margin = _a.margin, margin = _a$margin === void 0 ? 'auto' : _a$margin, props = __rest(_a, ["children", "className", "margin"]); return createElement(StyledModal, Object.assign({}, Object.assign({ className: classNames('anchor-modal', className), margin: margin }, props)), children); }; Modal.Content = ModalContent; Modal.Header = ModalHeader; Modal.Footer = ModalFooter; Modal.Close = ModalClose; var CustomModalBackground = styled(BaseModalBackground)(_templateObject2$1(), function (_ref10) { var _ref10$padding = _ref10.padding, padding = _ref10$padding === void 0 ? '2rem 1rem' : _ref10$padding; return padding; }, function (_ref11) { var _ref11$opacity = _ref11.opacity, opacity = _ref11$opacity === void 0 ? 0.6 : _ref11$opacity; return "rgba(0,0,0,".concat(opacity, ")"); }); var BaseModalBackground$1 = CustomModalBackground; var ModalProvider$1 = /*#__PURE__*/function (_StyledReactModal$Mod) { _inherits(ModalProvider$$1, _StyledReactModal$Mod); var _super = _createSuper(ModalProvider$$1); function ModalProvider$$1() { _classCallCheck(this, ModalProvider$$1); return _super.apply(this, arguments); } return ModalProvider$$1; }(ModalProvider); ModalProvider$1.defaultProps = { backgroundComponent: BaseModalBackground$1 }; export { Modal, BaseModalBackground$1 as BaseModalBackground, ModalProvider$1 as ModalProvider }; //# sourceMappingURL=modal.js.map