UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

101 lines (100 loc) 4.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "GridItem", { enumerable: true, get: function() { return GridItem; } }); var _interop_require_default = require("@swc/helpers/_/_interop_require_default"); var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); var _define_property = require("@swc/helpers/_/_define_property"); var _object_spread = require("@swc/helpers/_/_object_spread"); var _object_spread_props = require("@swc/helpers/_/_object_spread_props"); var _object_without_properties = require("@swc/helpers/_/_object_without_properties"); var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react")); var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames")); var _context = /*#__PURE__*/ _interop_require_default._(require("../grid/context")); var _pxcheck = require("../../utils/px-check"); var defaultProps = { text: '', columns: 4, gap: 9, center: true, square: true, reverse: false, direction: 'vertical' }; var GridItem = function GridItem(props) { var _ref = (0, _object_spread._)({}, defaultProps, props), children = _ref.children, style = _ref.style, columns = _ref.columns, index = _ref.index, gap = _ref.gap, square = _ref.square, text = _ref.text, center = _ref.center, reverse = _ref.reverse, direction = _ref.direction, className = _ref.className, onClick = _ref.onClick, rest = (0, _object_without_properties._)(_ref, [ "children", "style", "columns", "index", "gap", "square", "text", "center", "reverse", "direction", "className", "onClick" ]); var classPrefix = 'nut-grid-item'; var classes = (0, _classnames.default)(classPrefix, className); var context = (0, _react.useContext)(_context.default); var rootStyle = function rootStyle() { var width = "calc((100% - ".concat(Number(gap) * (Number(columns) - 1), "px) / ").concat(Number(columns), ")"); var styles = (0, _object_spread._)({ flexBasis: width }, style); if (square) { styles.paddingTop = width; } if (gap) { if ((index + 1) % Number(columns)) { styles.marginRight = (0, _pxcheck.pxCheck)(gap); } if (index >= Number(columns)) { styles.marginTop = (0, _pxcheck.pxCheck)(gap); } } else { styles.borderRadius = 0; } return styles; }; var contentClass = function contentClass() { var _obj; return (0, _classnames.default)("".concat(classPrefix, "-content"), (_obj = {}, (0, _define_property._)(_obj, "".concat(classPrefix, "-content-border"), true), (0, _define_property._)(_obj, "".concat(classPrefix, "-content-surround"), gap), (0, _define_property._)(_obj, "".concat(classPrefix, "-content-center"), center), (0, _define_property._)(_obj, "".concat(classPrefix, "-content-square"), square), (0, _define_property._)(_obj, "".concat(classPrefix, "-content-reverse"), reverse && direction !== 'horizontal'), (0, _define_property._)(_obj, "".concat(classPrefix, "-content-").concat(direction), !!direction), (0, _define_property._)(_obj, "".concat(classPrefix, "-content-horizontal-reverse"), reverse && direction === 'horizontal'), _obj)); }; var textClass = function textClass() { var _obj; return (0, _classnames.default)("".concat(classPrefix, "-text"), (_obj = {}, (0, _define_property._)(_obj, "".concat(classPrefix, "-text-reverse"), reverse && direction !== 'horizontal'), (0, _define_property._)(_obj, "".concat(classPrefix, "-text-horizontal"), direction === 'horizontal'), (0, _define_property._)(_obj, "".concat(classPrefix, "-text-horizontal-reverse"), reverse && direction === 'horizontal'), _obj)); }; var handleClick = function handleClick(e) { onClick && onClick(e); context.onClick && context.onClick({ text: text, index: index, columns: columns, gap: gap, center: center, square: square, reverse: reverse, direction: direction }, index); }; return /*#__PURE__*/ _react.default.createElement("div", (0, _object_spread_props._)((0, _object_spread._)({ className: classes, style: rootStyle() }, rest), { onClick: handleClick }), /*#__PURE__*/ _react.default.createElement("div", { className: contentClass() }, children && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, children), text && /*#__PURE__*/ _react.default.createElement("div", { className: textClass() }, text))); }; GridItem.displayName = 'NutGridItem';