UNPKG

zmp-react

Version:

Build full featured iOS & Android apps using ZMP & React

62 lines (57 loc) 1.77 kB
import _extends from "@babel/runtime/helpers/extends"; import React, { useRef, forwardRef, useImperativeHandle } from 'react'; import { classNames } from '../shared/utils'; import GridItem from './grid-item'; import { MAX_GRID_COLUMNS, MIN_GRID_COLUMNS } from '../../common/constants'; /* dts-props id?: string | number; className?: string; style?: React.CSSProperties; itemClassName?: string; noBorder?: boolean; data?: Array<any>; columns?: number; ref?: React.MutableRefObject<{el: HTMLElement | null}>; CHILDREN_PROP */ var Grid = /*#__PURE__*/forwardRef(function (_ref, ref) { var id = _ref.id, className = _ref.className, style = _ref.style, _ref$data = _ref.data, data = _ref$data === void 0 ? [] : _ref$data, noBorder = _ref.noBorder, children = _ref.children, columns = _ref.columns; var elRef = useRef(null); var gridColumns = 3; if (columns && typeof columns === 'number' && columns > MIN_GRID_COLUMNS && columns < MAX_GRID_COLUMNS) { gridColumns = columns; } useImperativeHandle(ref, function () { return { el: elRef.current }; }); var classes = classNames('grid', "grid-" + gridColumns, { 'grid-no-border': noBorder }, className); var renderItem = function renderItem(item, index) { return /*#__PURE__*/React.createElement(GridItem, _extends({ key: item.key || "grid-item-" + index }, item, { icon: item.icon, label: item.label })); }; return /*#__PURE__*/React.createElement("div", { id: id, className: classes, style: style, ref: elRef }, data.length > 0 ? data.map(function (item, index) { return renderItem(item, index); }) : children); }); Grid.displayName = 'zmp-grid'; export default Grid;