UNPKG

@reaqtive/components

Version:

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

195 lines (169 loc) 6.23 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _index = require("../contexts/index"); var _index2 = require("../index"); var _jsxFileName = "/Users/paolo_d/Projects/React/reaqtive/packages/components/src/lib/pages/rqtv-standard-template.js"; /** * RqtvStandardTemplate * * It is a component that allows you to use Reaqtive main components without having to declare them one by one. * Of course does not allow the same flexibility as recreating a template manually. * It includes the RqtvSideMenu, the RqtvNavbar and the RqtvPageHeader. * It is suggested to use this component inside the RqtvApp */ const RqtvStandardTemplate = props => { const rqtvApp = (0, _react.useContext)(_index.RqtvAppContext); const rqtvPage = (0, _react.useContext)(_index.RqtvPageContext); const _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), innerShowSideMenu = _useState2[0], setInnerShowSideMenu = _useState2[1]; const _ref = rqtvApp || { showSideMenu: innerShowSideMenu, setShowSideMenu: setInnerShowSideMenu }, showSideMenu = _ref.showSideMenu, setShowSideMenu = _ref.setShowSideMenu; const toggleSideMenu = () => setShowSideMenu(!showSideMenu); const _ref2 = rqtvPage || {}, triggerState = _ref2.triggerState, qCondition = _ref2.qCondition; const rendererProps = rqtvPage && { loading: triggerState.qLoading, //||qCondition===null||qCondition===undefined, error: !(rqtvPage && rqtvPage.triggerState.qLoading) && rqtvPage && rqtvPage.triggerState.qError } || { loading: false, error: false }; return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_index2.RqtvNavbar, { sideMenuActive: showSideMenu, onToggleMenu: toggleSideMenu, closeSideMenu: () => setShowSideMenu(false), searchFieldsMatch: props.searchFieldsMatch, showSearch: props.showSearch, showSideMenuToggle: props.useSideMenu, currentSelectionsBreakPoint: props.currentSelectionsBreakPoint, __source: { fileName: _jsxFileName, lineNumber: 38 }, __self: void 0 }), _react.default.createElement(_index2.RqtvSideMenu, { isOpen: showSideMenu && props.useSideMenu, onClose: () => setShowSideMenu(false), useFieldList: true, usePageList: true, useTabs: true, sideMenuFieldsMatch: props.sideMenuFieldsMatch, additionalTabs: props.sideMenuAdditionalTabs, clickAwayAccept: props.sideMenuClickAwayAccept, __source: { fileName: _jsxFileName, lineNumber: 47 }, __self: void 0 }), _react.default.createElement(_index2.RqtvSideMenuMain, { isOpen: showSideMenu, __source: { fileName: _jsxFileName, lineNumber: 57 }, __self: void 0 }, _react.default.createElement("div", { className: "".concat(props.useContainerFluid ? 'container-fluid' : 'container', " ").concat(props.containerClassName ? props.containerClassName : ''), style: (0, _objectSpread2.default)({}, props.containerStyle), __source: { fileName: _jsxFileName, lineNumber: 58 }, __self: void 0 }, _react.default.createElement(_index2.RqtvRenderer, Object.assign({}, rendererProps, { isFixed: true, __source: { fileName: _jsxFileName, lineNumber: 62 }, __self: void 0 }), props.usePageHeader && rqtvPage && _react.default.createElement(_index2.RqtvPageHeader, { __source: { fileName: _jsxFileName, lineNumber: 63 }, __self: void 0 }), props.children)))); }; RqtvStandardTemplate.propTypes = { /** * it lets you choose between a bootstrap container or container-fluid to wrap the page * */ useContainerFluid: _propTypes.default.bool, /** * show/hide the page header that would contain only the title of the page and can't be customized * */ usePageHeader: _propTypes.default.bool, /** * it allows to set the styles of the div conatining the page (the components you will develop) * */ containerStyle: _propTypes.default.object, /** * the css classes of the container wrapping the page * */ containerClassName: _propTypes.default.string, /** * show/hide the search object in the navbar * */ showSearch: _propTypes.default.bool, /** * show/hide the side menu * */ useSideMenu: _propTypes.default.bool, /** * fields to be displayed in the side menu. '*' can be used as a wildcard (e.g. 'Q*' will include consider all fields starting with 'Q') * */ sideMenuFieldsMatch: _propTypes.default.shape({ method: _propTypes.default.oneOf(['include', 'exclude']), mask: _propTypes.default.arrayOf(_propTypes.default.string) }), /** * fields to be used in the search object in the navbar. '*' can be used as a wildcard (e.g. 'Q*' will include consider all fields starting with 'Q') * */ searchFieldsMatch: _propTypes.default.shape({ method: _propTypes.default.oneOf(['include', 'exclude']), mask: _propTypes.default.arrayOf(_propTypes.default.string) }), /** * screentype from which current selections are responsive */ currentSelectionsBreakPoint: _propTypes.default.oneOf(['xl', 'lg', 'md', 'sm']), /** * if true selections are accepted when clicking away from an active listbox in selection mode in the side menu multibox */ sideMenuClickAwayAccept: _propTypes.default.bool }; RqtvStandardTemplate.defaultProps = { useContainerFluid: true, usePageHeader: true, showSearch: true, useSideMenu: true, sideMenuClickAwayAccept: false }; var _default = RqtvStandardTemplate; exports.default = _default;