UNPKG

react-mapfilter

Version:

These components are designed for viewing data in Mapeo. They share a common interface:

275 lines (246 loc) 7.76 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map")); var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter")); var React = _interopRequireWildcard(require("react")); var _Typography = _interopRequireDefault(require("@material-ui/core/Typography")); var _styles = require("@material-ui/core/styles"); var _Table = _interopRequireDefault(require("@material-ui/core/Table")); var _TableBody = _interopRequireDefault(require("@material-ui/core/TableBody")); var _TableCell = _interopRequireDefault(require("@material-ui/core/TableCell")); var _TableRow = _interopRequireDefault(require("@material-ui/core/TableRow")); var _reactVirtualizedAutoSizer = _interopRequireDefault(require("react-virtualized-auto-sizer")); var _FormattedValue = _interopRequireDefault(require("../internal/FormattedValue")); var _FormattedFieldname = _interopRequireDefault(require("../internal/FormattedFieldname")); var _get_set = require("../utils/get_set"); // @flow var styles = { root: { overflow: 'auto' }, row: { verticalAlign: 'top', position: 'relative' }, col1: {// padding: '14px 12px 14px 24px' }, col1Text: { fontWeight: 500, textOverflow: 'ellipsis', overflow: 'hidden', whiteSpace: 'nowrap', direction: 'rtl' }, col2: { // padding: '14px 24px 14px 12px !important', width: '100%', maxWidth: 0, whiteSpace: 'initial', fontSize: '0.875rem' }, col2Edit: { paddingTop: '9px !important', paddingBottom: '9px !important' }, col2TextEdit: { paddingTop: 5, paddingBottom: 5 }, col2Text: { overflow: 'hidden', textOverflow: 'ellipsis' }, input: { fontSize: 'inherit' } }; var useStyles = (0, _styles.makeStyles)(styles); // function coerceValue( // value: Primitive | Array<Primitive>, // type: $Values<typeof valueTypes> // ) { // try { // return throwableCoerceValue(value, type) // } catch (e) {} // } // const shouldNotWrap = { // [FIELD_TYPES.UUID]: true, // [FIELD_TYPES.IMAGE_URL]: true, // [FIELD_TYPES.VIDEO_URL]: true, // [FIELD_TYPES.MEDIA_URL]: true, // [FIELD_TYPES.AUDIO_URL]: true // } // const ValueCellEdit = makePure( // ({ // value, // type, // rowKey, // coordFormat, // fieldMetadata = {}, // onChange, // classes // }) => { // const suggestions = // Array.isArray(fieldMetadata.values) && // fieldMetadata.values.map(d => d.value) // const isDiscreteField = // type === FIELD_TYPES.STRING && // fieldMetadata.values && // fieldMetadata.values.length / fieldMetadata.count < 0.8 // if (isDiscreteField) { // return ( // <Select // value={value} // onChange={(e, { newValue, type }) => onChange(rowKey, newValue)} // suggestions={suggestions} // style={styles.selectField} // /> // ) // } // if (type === FIELD_TYPES.BOOLEAN) { // return ( // <MUISelect // MenuProps={{ MenuListProps: { dense: true } }} // fullWidth // autoWidth // value={value + ''} // onChange={e => { // const newValue = // e.target.value === 'true' // ? true // : e.target.value === 'false' // ? false // : undefined // onChange(rowKey, newValue) // }} // input={<Input className={classes.input} />} // style={styles.muiSelect}> // <MenuItem value="undefined" /> // <MenuItem value="true">Yes</MenuItem> // <MenuItem value="false">No</MenuItem> // </MUISelect> // ) // } // if (type === FIELD_TYPES.STRING) { // return ( // <TextField // InputClassName={classes.input} // fullWidth // multiline // value={value} // onChange={e => onChange(rowKey, e.target.value)} // style={styles.textField} // /> // ) // } // if (type === FIELD_TYPES.ARRAY) { // return ( // <MultiSelect // value={value} // onChange={(e, { newValue, type }) => onChange(rowKey, newValue)} // suggestions={suggestions} // style={styles.selectField} // /> // ) // } // return ( // <ValueCell // value={value} // type={type} // coordFormat={coordFormat} // editMode // classes={classes} // /> // ) // } // ) var Label = function Label(_ref) { var style = _ref.style, field = _ref.field; var classes = useStyles(); return /*#__PURE__*/React.createElement(_TableCell.default, { className: classes.col1, style: style }, /*#__PURE__*/React.createElement(_Typography.default, { className: classes.col1Text }, /*#__PURE__*/React.createElement(_FormattedFieldname.default, { field: field }))); }; /*:: type ValueProps = { value: Primitive | Array<Primitive>, field: Field }*/ var Value = function Value(props /*: ValueProps*/ ) { var classes = useStyles(); return /*#__PURE__*/React.createElement(_TableCell.default, { className: classes.col2 }, /*#__PURE__*/React.createElement(_Typography.default, { className: classes.col2Text }, /*#__PURE__*/React.createElement(_FormattedValue.default, props))); }; /*:: type Props = {| tags?: JSONObject, editMode?: boolean, fields?: Array<Field>, onChange?: (newTags: {}) => any, width?: number |}*/ var DetailsTable = function DetailsTable(_ref2) { var _ref2$fields = _ref2.fields, fields = _ref2$fields === void 0 ? [] : _ref2$fields, _ref2$tags = _ref2.tags, tags = _ref2$tags === void 0 ? {} : _ref2$tags, width = _ref2.width; var classes = useStyles(); function renderTable(width) { var _context; return /*#__PURE__*/React.createElement(_Table.default, { className: classes.root, style: { width: width }, size: "small" }, /*#__PURE__*/React.createElement(_TableBody.default, null, (0, _filter.default)(_context = (0, _map.default)(fields).call(fields, function (field, i) { var value /*: Primitive | Array<Primitive>*/ = (0, _get_set.get)(tags, field.key); if (isEmptyValue(value)) return null; return /*#__PURE__*/React.createElement(_TableRow.default, { key: i, className: classes.row, style: { zIndex: fields.length - i } }, /*#__PURE__*/React.createElement(Label, { field: field, style: { maxWidth: width / 3 - 36 } }), /*#__PURE__*/React.createElement(Value, { value: value, field: field })); })).call(_context, Boolean))); } if (typeof width === 'number') return renderTable(width); return /*#__PURE__*/React.createElement(_reactVirtualizedAutoSizer.default, { disableHeight: true }, function (_ref3) { var width = _ref3.width; return renderTable(width); }); }; function isEmptyValue(value) { return typeof value === 'string' && value.length === 0 || value === undefined || value === null; } var _default = DetailsTable; exports.default = _default; //# sourceMappingURL=DetailsTable.js.map