UNPKG

@reaqtive/components

Version:

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

131 lines (110 loc) 4.21 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.RqtvPageContext = exports.RqtvPageProvider = 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 _reactRouterDom = require("react-router-dom"); var _index = require("../hooks/index"); var _q = require("@reaqtive/q"); var _jsxFileName = "/Users/paolo_d/Projects/React/reaqtive/packages/components/src/lib/contexts/rqtv-page-context.js"; /** * RqtvPageContext * It is a react context. It provides generic info about the page. * It is provided by the RqtvPage component * It provides the page triggerState, the page title and teh page condition result */ const RqtvPageContext = _react.default.createContext(); exports.RqtvPageContext = RqtvPageContext; const mapPageObject = (qTitleExpr, qConditionExpr) => { return { qInfo: { qType: "page-object" }, qTitle: { qStringExpression: { qExpr: qTitleExpr } }, qCondition: { qStringExpression: { qExpr: qConditionExpr } } }; }; const RqtvPageConsumer = props => { const location = (0, _reactRouterDom.useLocation)(); const queryStringTriggers = (0, _index.useQueryString)(location.search); const _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), triggers = _useState2[0], setTriggers = _useState2[1]; (0, _react.useEffect)(() => { if (location.search !== null && location.search !== '' && Array.isArray(queryStringTriggers) && queryStringTriggers.length > 0) { setTriggers([...props.triggers, ...queryStringTriggers]); } if (location.search === '') { setTriggers([...props.triggers]); } return () => setTriggers(null); }, [props.triggers, queryStringTriggers, location.search]); const qConditionExpr = props.qConditionExpr, qTitleExpr = props.qTitleExpr; const qObjectDef = mapPageObject(qTitleExpr, qConditionExpr); const qObjectHandler = (0, _q.useQObjectReducer)(qObjectDef); const qLayoutHandler = (0, _q.useQLayoutReducer)(qObjectHandler); (0, _react.useEffect)(() => { //if(triggerState.done===true && qObjectHandler.qObject!==null && qConditionExpr!==''){ qObjectHandler.qObject && qObjectHandler.qObject.setProperties((0, _objectSpread2.default)({}, qObjectDef, { qInfo: (0, _objectSpread2.default)({ qId: qObjectHandler.qObject.id }, qObjectDef.qInfo), qExtendsId: '' })); //} }, [location.pathname, qConditionExpr, qTitleExpr,, qObjectHandler]); const triggerState = (0, _q.useTriggers)(triggers); const qTitle = qLayoutHandler.qLayout && qLayoutHandler.qLayout.qTitle; const qCondition = qLayoutHandler.qLayout && qLayoutHandler.qLayout.qCondition; return _react.default.createElement(RqtvPageContext.Provider, { value: { triggerState: triggers === null ? (0, _objectSpread2.default)({}, triggerState, { done: false }) : triggerState, pageData: props.pageData, qTitle, qCondition, qPageObjectHandler: qObjectHandler }, __source: { fileName: _jsxFileName, lineNumber: 74 }, __self: void 0 }, props.children); }; const RqtvPageProvider = props => { return _react.default.createElement(RqtvPageConsumer, Object.assign({}, props, { __source: { fileName: _jsxFileName, lineNumber: 86 }, __self: void 0 }), props.children); }; exports.RqtvPageProvider = RqtvPageProvider; RqtvPageProvider.propTypes = { triggers: _propTypes.default.array.isRequired, qConditionExpr: _propTypes.default.string, qTitleExpr: _propTypes.default.string }; RqtvPageProvider.defaultProps = { triggers: [], qConditionExpr: "=''", qTitleExpr: "=''" };