UNPKG

wix-style-react

Version:
108 lines (93 loc) 4.25 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _EmptyStateSt = require("./EmptyState.st.css"); var _Heading = _interopRequireDefault(require("../Heading")); var _Text = _interopRequireDefault(require("../Text")); var _context = require("../FontUpgrade/context"); /** * Representing a state of an empty page, section, table, etc. */ var EmptyState = function EmptyState(_ref) { var theme = _ref.theme, title = _ref.title, subtitle = _ref.subtitle, image = _ref.image, classNamesProp = _ref.classNames, children = _ref.children, dataHook = _ref.dataHook, align = _ref.align; return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _EmptyStateSt.st)(_EmptyStateSt.classes.root, { theme: theme, align: align }), "data-hook": dataHook, "data-theme": theme, "data-align": align }, /*#__PURE__*/_react["default"].createElement("div", { className: _EmptyStateSt.classes.container }, image && /*#__PURE__*/_react["default"].createElement("div", { className: (0, _EmptyStateSt.st)(_EmptyStateSt.classes.imageContainer, {}, classNamesProp && classNamesProp.imageContainer || ''), "data-hook": "empty-state-image-container" }, typeof image === 'string' ? /*#__PURE__*/_react["default"].createElement("img", { className: _EmptyStateSt.classes.imageElement, src: image, "data-hook": "image-element" }) : /*#__PURE__*/_react["default"].cloneElement(image, { 'data-hook': 'image-node' })), title && /*#__PURE__*/_react["default"].createElement("div", { className: _EmptyStateSt.classes.titleContainer, "data-hook": "empty-state-title-container" }, theme === 'section' ? /*#__PURE__*/_react["default"].createElement(_context.FontUpgradeContext.Consumer, null, function (_ref2) { var active = _ref2.active; return /*#__PURE__*/_react["default"].createElement(_Text["default"], { weight: active ? 'bold' : 'normal', className: _EmptyStateSt.classes.sectionTitle }, title); }) : /*#__PURE__*/_react["default"].createElement(_Heading["default"], { className: _EmptyStateSt.classes.title, appearance: "H3" }, title)), subtitle && /*#__PURE__*/_react["default"].createElement("div", { className: _EmptyStateSt.classes.subtitleContainer, "data-hook": "empty-state-subtitle-container" }, /*#__PURE__*/_react["default"].createElement(_Text["default"], { className: _EmptyStateSt.classes.subtitle, secondary: true }, subtitle)), children && /*#__PURE__*/_react["default"].createElement("div", { className: _EmptyStateSt.classes.childrenContainer, "data-hook": "empty-state-children-container" }, children))); }; EmptyState.displayName = 'EmptyState'; EmptyState.propTypes = { /** The theme of the EmptyState */ theme: _propTypes["default"].oneOf(['page', 'page-no-border', 'section']), /** Content for the title of the Empty State */ title: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]), /** Content for the subtitle of the Empty State */ subtitle: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]), /** The Empty State image, can be either a string representing the image URL, or a node to render instead */ image: _propTypes["default"].node, /** The Empty State image bottom margin. If not specified, use the default padding defined in the css */ classNames: _propTypes["default"].shape({ imageContainer: _propTypes["default"].string }), /** Children to render below the subtitle, ideally an action of some type (Button or TextButton for instance) */ children: _propTypes["default"].node, dataHook: _propTypes["default"].string, align: _propTypes["default"].oneOf(['start', 'center', 'end']) }; EmptyState.defaultProps = { theme: 'section', image: null, children: null, align: 'center' }; var _default = EmptyState; exports["default"] = _default;