UNPKG

zmp-react

Version:

Build full featured iOS & Android apps using ZMP & React

70 lines (65 loc) 2.52 kB
import _extends from "@babel/runtime/helpers/extends"; import React, { forwardRef, useRef, useImperativeHandle, useEffect } from 'react'; import { classNames, getExtraAttrs, emit } from '../shared/utils'; import { colorClasses } from '../shared/mixins'; import { zmpready, zmp } from '../shared/zmp'; var Col = /*#__PURE__*/forwardRef(function (props, ref) { var _classNames; var className = props.className, id = props.id, style = props.style, children = props.children, _props$tag = props.tag, tag = _props$tag === void 0 ? 'div' : _props$tag, _props$width = props.width, width = _props$width === void 0 ? 'auto' : _props$width, xsmall = props.xsmall, small = props.small, medium = props.medium, large = props.large, xlarge = props.xlarge, resizable = props.resizable, resizableFixed = props.resizableFixed, resizableAbsolute = props.resizableAbsolute, _props$resizableHandl = props.resizableHandler, resizableHandler = _props$resizableHandl === void 0 ? true : _props$resizableHandl; var extraAttrs = getExtraAttrs(props); var elRef = useRef(null); var onClick = function onClick(event) { emit(props, 'click', event); }; var onResize = function onResize(el) { if (el === elRef.current) { emit(props, 'gridResize'); } }; useImperativeHandle(ref, function () { return { el: elRef.current }; }); var ColTag = tag; var classes = classNames(className, (_classNames = { col: width === 'auto' }, _classNames["col-" + width] = width !== 'auto', _classNames["xsmall-" + xsmall] = xsmall, _classNames["small-" + small] = small, _classNames["medium-" + medium] = medium, _classNames["large-" + large] = large, _classNames["xlarge-" + xlarge] = xlarge, _classNames.resizable = resizable, _classNames['resizable-fixed'] = resizableFixed, _classNames['resizable-absolute'] = resizableAbsolute, _classNames), colorClasses(props)); useEffect(function () { zmpready(function () { zmp.on('gridResize', onResize); }); return function () { zmp.off('gridResize', onResize); }; }); return /*#__PURE__*/React.createElement(ColTag, _extends({ id: id, style: style, className: classes, ref: elRef }, extraAttrs, { onClick: onClick }), children, resizable && resizableHandler && /*#__PURE__*/React.createElement("span", { className: "resize-handler" })); }); Col.displayName = 'zmp-col'; export default Col;