react-application-core
Version:
A react-based application core for the business applications.
254 lines • 11.3 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultLayout = void 0;
var React = require("react");
var generic_component_1 = require("../../base/generic.component");
var util_1 = require("../../../util");
var drawer_1 = require("../../drawer");
var definition_1 = require("../../../definition");
var plugin_1 = require("../../plugin");
var dialog_1 = require("../../dialog");
var header_1 = require("../../header");
var main_1 = require("../../main");
var sub_header_1 = require("../../sub-header");
var DefaultLayout = /** @class */ (function (_super) {
__extends(DefaultLayout, _super);
/**
* @stable [09.10.2020]
* @param originalProps
*/
function DefaultLayout(originalProps) {
var _this = _super.call(this, originalProps) || this;
_this.chatDialogRef = React.createRef();
_this.onChatDialogClose = _this.onChatDialogClose.bind(_this);
_this.onDrawerHeaderMenuActionClick = _this.onDrawerHeaderMenuActionClick.bind(_this);
return _this;
}
/**
* @stable [09.10.2020]
*/
DefaultLayout.prototype.render = function () {
var className = this.originalProps.className;
return (React.createElement("div", { ref: this.actualRef, className: util_1.ClsUtils.joinClassName(definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT, util_1.CalcUtils.calc(className), this.isLayoutFullModeEnabled
? definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_FULL
: definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_MINI) },
this.drawerElement,
this.bodyElement,
this.chatDialogElement));
};
/**
* @stable [09.10.2020]
*/
DefaultLayout.prototype.onChatDialogClose = function () {
this.chatDialogRef.current.close();
};
Object.defineProperty(DefaultLayout.prototype, "bodyElement", {
/**
* @stable [21.05.2020]
* @returns {JSX.Element}
*/
get: function () {
var _a = this.settings.elementsMarkers, selectedElement = _a.selectedElement, stickyElement = _a.stickyElement;
var mergedProps = this.mergedProps;
var footer = mergedProps.footer, footerRendered = mergedProps.footerRendered, header = mergedProps.header, headerRendered = mergedProps.headerRendered, mainConfiguration = mergedProps.mainConfiguration, subHeaderRendered = mergedProps.subHeaderRendered;
return (React.createElement("div", { className: definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_BODY },
headerRendered && (header || this.headerElement),
React.createElement(main_1.Main, __assign({ stickyElementClassName: stickyElement, selectedElementClassName: selectedElement, subHeaderRendered: subHeaderRendered, plugins: [
plugin_1.PerfectScrollPlugin,
plugin_1.SelectedElementPlugin,
plugin_1.StickyHeaderPlugin
] }, mainConfiguration),
subHeaderRendered && this.subHeaderElement,
this.props.children,
this.isLayoutInProgress && React.createElement(dialog_1.Dialog, { progress: true, overlay: true })),
footerRendered && footer));
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "chatDialogElement", {
/**
* @stable [09.10.2020]
*/
get: function () {
var chatDialogContent = this.mergedProps.chatDialogContent;
return (React.createElement(dialog_1.Dialog, { ref: this.chatDialogRef, acceptable: false, closable: false, default: false, inline: true, className: definition_1.DefaultLayoutClassesEnum.CHAT_DIALOG, onDeactivate: function () {
// TODO
} }, util_1.CalcUtils.calc(chatDialogContent, {
defaultLayoutProps: this.originalProps,
onClose: this.onChatDialogClose,
})));
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "headerElement", {
/**
* @stable [12.08.2020]
* @private
*/
get: function () {
return (React.createElement(header_1.Header, __assign({}, util_1.Mappers.defaultLayoutPropsAsHeaderProps(this.originalProps), { navigationActionRendered: this.isNavigationActionRendered })) // TODO onCommentClick={this.commentClickHandler}
);
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "commentClickHandler", {
/**
* @stable [09.10.2020]
*/
get: function () {
var _this = this;
var chatDialogContent = this.mergedProps.chatDialogContent;
return util_1.ConditionUtils.orUndef(util_1.TypeUtils.isDef(chatDialogContent), function () { return function () { return _this.chatDialogRef.current.activate(); }; });
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "subHeaderElement", {
/**
* @stable [21.05.2020]
* @returns {JSX.Element}
*/
get: function () {
var mergedProps = this.mergedProps;
var subHeaderConfiguration = mergedProps.subHeaderConfiguration;
return (React.createElement(sub_header_1.SubHeader, __assign({ navigationActionRendered: this.isNavigationActionRendered }, subHeaderConfiguration)));
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "drawerElement", {
/**
* @stable [04.02.2020]
* @returns {JSX.Element}
*/
get: function () {
var drawerHeaderRendered = this.mergedProps.drawerHeaderRendered;
// TODO
return (React.createElement(drawer_1.Drawer, { mini: !this.isLayoutFullModeEnabled },
drawerHeaderRendered && this.drawerHeaderElement,
this.props.navigationListElement));
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "drawerHeaderElement", {
/**
* @stable [27.05.2020]
* @returns {JSX.Element}
*/
get: function () {
var drawerHeaderLogoRendered = this.mergedProps.drawerHeaderLogoRendered;
var onDrawerHeaderClick = this.originalProps.onDrawerHeaderClick;
return (React.createElement("div", { className: definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_DRAWER_HEADER, onClick: onDrawerHeaderClick },
util_1.ConditionUtils.ifNotNilThanValue(this.environment.appVersion, function (appVersion) { return (React.createElement("div", { className: definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_DRAWER_HEADER_VERSION }, appVersion)); }),
drawerHeaderLogoRendered && this.isLayoutFullModeEnabled && (React.createElement("div", { className: definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_DRAWER_HEADER_LOGO })),
this.uiFactory.makeIcon({
type: definition_1.IconsEnum.BARS,
className: definition_1.DefaultLayoutClassesEnum.DEFAULT_LAYOUT_DRAWER_HEADER_MENU_ACTION,
onClick: this.onDrawerHeaderMenuActionClick,
})));
},
enumerable: false,
configurable: true
});
/**
* @stable [27.05.2020]
*/
DefaultLayout.prototype.onDrawerHeaderMenuActionClick = function () {
this.mergedProps.onChangeLayoutMode(this.layoutMode);
};
Object.defineProperty(DefaultLayout.prototype, "isNavigationActionRendered", {
/**
* @stable [21.05.2020]
* @returns {boolean}
*/
get: function () {
return util_1.StackUtils.doesHolderStackEntityContainChildren(this.originalProps);
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "isLayoutFullModeEnabled", {
/**
* @stable [21.05.2020]
* @returns {boolean}
*/
get: function () {
return this.layoutMode === definition_1.LayoutModesEnum.FULL;
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "isLayoutInProgress", {
/**
* @stable [21.05.2020]
* @returns {boolean}
*/
get: function () {
return util_1.WrapperUtils.inProgress(this.mergedProps);
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "layoutMode", {
/**
* @stable [21.05.2020]
* @returns {LayoutModesEnum}
*/
get: function () {
var mergedProps = this.mergedProps;
var originalProps = this.originalProps;
return util_1.Selectors.mergedLayoutMode(mergedProps, originalProps);
},
enumerable: false,
configurable: true
});
Object.defineProperty(DefaultLayout.prototype, "componentsSettingsProps", {
/**
* @stable [02.06.2020]
* @returns {IDefaultLayoutProps}
*/
get: function () {
return this.componentsSettings.defaultLayout;
},
enumerable: false,
configurable: true
});
DefaultLayout.defaultProps = {
drawerHeaderLogoRendered: true,
drawerHeaderRendered: true,
footerRendered: true,
headerRendered: true,
subHeaderRendered: true,
};
return DefaultLayout;
}(generic_component_1.GenericComponent));
exports.DefaultLayout = DefaultLayout;
//# sourceMappingURL=default-layout.component.js.map