UNPKG

@reaqtive/components

Version:

A react library to speed up the development of Qlik mash ups and data visualization apps

113 lines (101 loc) 3.26 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _layout = require("@reaqtive/layout"); var _index = require("../index"); var _jsxFileName = "/Users/paolo_d/Projects/React/reaqtive/packages/components/src/lib/multibox/index.js"; /** * RqtvMultibox * * It returns an accordion that shows a list of fields. * A listbox is displayed for the active field. One field at a time can be active. */ const RqtvMultibox = props => { return _react.default.createElement(_layout.Accordion, { className: "rqtv-multibox", style: { width: props.width }, __source: { fileName: _jsxFileName, lineNumber: 15 }, __self: void 0 }, props.fieldList && props.fieldList.map(field => { const fieldExpr = typeof field === 'string' ? field : field.qFieldExpr; const toggle = typeof field === 'object' && 'toggle' in field ? field.toggle : true; const quickSelectionMode = typeof field === 'object' && 'quickSelectionMode' in field ? field.quickSelectionMode : false; return _react.default.createElement(_layout.Collapse, { key: fieldExpr, __source: { fileName: _jsxFileName, lineNumber: 22 }, __self: void 0 }, _react.default.createElement(_layout.CollapseHeader, { hideTitleWhenExpanded: true, __source: { fileName: _jsxFileName, lineNumber: 23 }, __self: void 0 }, field.hasSelections === true && _react.default.createElement("span", { className: "selection-indicator", __source: { fileName: _jsxFileName, lineNumber: 26 }, __self: void 0 }), field.label || fieldExpr), _react.default.createElement(_layout.CollapseBody, { height: props.fieldHeight, hideTitleWhenExpanded: true, __source: { fileName: _jsxFileName, lineNumber: 29 }, __self: void 0 }, _react.default.createElement(_index.RqtvListbox, { qState: props.qState, height: props.fieldHeight, qFieldExpr: fieldExpr, qLabelExpr: "'".concat(field.label || fieldExpr, "'"), toggle: toggle, quickSelectionMode: quickSelectionMode, clickAwayAccept: props.clickAwayAccept, __source: { fileName: _jsxFileName, lineNumber: 30 }, __self: void 0 }))); })); }; RqtvMultibox.propTypes = { /** * An array of fieldnames which will be displayed in the multibox */ fieldList: _propTypes.default.array.isRequired, /** * The height of the listbox of the active field */ fieldHeight: _propTypes.default.number, /** * The state of the multibox which will be passed to its listboxes */ qState: _propTypes.default.string, /** * if true selections are accepted when clicking away from an active listbox in selection mode */ clickAwayAccept: _propTypes.default.bool }; RqtvMultibox.defaultProps = { fieldHeight: 300, clickAwayAccept: false }; var _default = RqtvMultibox; exports.default = _default;