UNPKG

@confi/conflux-react-ui-test-package

Version:

Modern and minimalist React UI library.

102 lines (93 loc) 3.44 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import _JSXStyle from "styled-jsx/style"; import React, { useEffect, useMemo, useRef } from 'react'; import TableHead from './table-head'; import TableBody from './table-body'; import useRealShape from '../utils/use-real-shape'; import useResize from '../utils/use-resize'; import { TableContext } from './table-context'; import useCurrentState from '../utils/use-current-state'; var defaultProps = { hover: true, emptyText: '', onRow: function () {}, onCell: function () {}, onChange: function () {}, className: '' }; var Table = function Table(_ref) { var children = _ref.children, data = _ref.data, hover = _ref.hover, emptyText = _ref.emptyText, onRow = _ref.onRow, onCell = _ref.onCell, onChange = _ref.onChange, className = _ref.className, props = _objectWithoutProperties(_ref, ["children", "data", "hover", "emptyText", "onRow", "onCell", "onChange", "className"]); var ref = useRef(null); var _useRealShape = useRealShape(ref), _useRealShape2 = _slicedToArray(_useRealShape, 2), width = _useRealShape2[0].width, updateShape = _useRealShape2[1]; var _useCurrentState = useCurrentState([]), _useCurrentState2 = _slicedToArray(_useCurrentState, 3), columns = _useCurrentState2[0], setColumns = _useCurrentState2[1], columnsRef = _useCurrentState2[2]; var _useCurrentState3 = useCurrentState([]), _useCurrentState4 = _slicedToArray(_useCurrentState3, 3), selfData = _useCurrentState4[0], setSelfData = _useCurrentState4[1], dataRef = _useCurrentState4[2]; var appendColumn = function appendColumn(column) { var pureCurrent = columnsRef.current.filter(function (item) { return item.value !== column.value; }); setColumns([].concat(_toConsumableArray(pureCurrent), [column])); }; var removeRow = function removeRow(rowIndex) { var next = dataRef.current.filter(function (_, index) { return index !== rowIndex; }); onChange(next); setSelfData(_toConsumableArray(next)); }; var initialValue = useMemo(function () { return { columns: columns, appendColumn: appendColumn, removeRow: removeRow }; }, [columns]); useEffect(function () { if (!data) return; setSelfData(data); }, [data]); useResize(function () { return updateShape(); }); return /*#__PURE__*/React.createElement(TableContext.Provider, { value: initialValue }, /*#__PURE__*/React.createElement("table", _extends({ ref: ref }, props, { className: "jsx-1734006091" + " " + (props && props.className != null && props.className || className || "") }), /*#__PURE__*/React.createElement(TableHead, { columns: columns, width: width }), /*#__PURE__*/React.createElement(TableBody, { data: selfData, hover: hover, emptyText: emptyText, onRow: onRow, onCell: onCell }), children, /*#__PURE__*/React.createElement(_JSXStyle, { id: "1734006091" }, "table.jsx-1734006091{border-collapse:separate;border-spacing:0;width:100%;}"))); }; Table.defaultProps = defaultProps; export default Table;