react-application-core
Version:
A react-based application core for the business applications.
147 lines • 8.18 kB
JavaScript
;
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);
};
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultLayoutContainer = void 0;
var React = require("react");
var R = require("ramda");
var navigation_list_1 = require("../../navigation-list");
var di_1 = require("../../../di");
var util_1 = require("../../../util");
var generic_container_1 = require("../../base/generic.container");
var navigation_1 = require("../../../navigation");
var layout_interface_1 = require("../layout.interface");
var definition_1 = require("../../../definition");
var plugin_1 = require("../../plugin");
var default_layout_component_1 = require("./default-layout.component");
var notification_1 = require("../../notification");
var DefaultLayoutContainer = /** @class */ (function (_super) {
__extends(DefaultLayoutContainer, _super);
/**
* @stable [18.09.2018]
* @param {IDefaultLayoutContainerProps} props
*/
function DefaultLayoutContainer(props) {
var _this = _super.call(this, props) || this;
_this.onChangeLayoutMode = _this.onChangeLayoutMode.bind(_this);
_this.onHeaderMenuSelectItem = _this.onHeaderMenuSelectItem.bind(_this);
_this.onDrawerHeaderClick = _this.onDrawerHeaderClick.bind(_this);
_this.onNavigationListClick = _this.onNavigationListClick.bind(_this);
_this.onNavigationListGroupClick = _this.onNavigationListGroupClick.bind(_this);
_this.onNavigationListScroll = _this.onNavigationListScroll.bind(_this);
return _this;
}
DefaultLayoutContainer.prototype.render = function () {
var _a = this.mergedProps.defaultLayoutConfiguration, defaultLayoutConfiguration = _a === void 0 ? {} : _a;
var props = this.props;
var _b = props.headerConfiguration, headerConfiguration = _b === void 0 ? {} : _b, _c = props.subHeaderConfiguration, subHeaderConfiguration = _c === void 0 ? {} : _c;
var title = util_1.NvlUtils.coalesce(headerConfiguration.title, subHeaderConfiguration.title, util_1.ConditionUtils.ifNotNilThanValue(this.menuItems.find(function (item) { return item.active; }), function (activeItem) { return activeItem && util_1.CalcUtils.calc(activeItem.label); }));
return (React.createElement(notification_1.NotificationContainer, __assign({}, props),
React.createElement(default_layout_component_1.DefaultLayout, __assign({}, props, defaultLayoutConfiguration, { headerConfiguration: __assign(__assign({ onSelect: this.onHeaderMenuSelectItem, navigationActionConfiguration: __assign({ onClick: this.routerStoreProxy.navigateBack }, headerConfiguration.navigationActionConfiguration) }, headerConfiguration), { title: title }), subHeaderConfiguration: __assign(__assign({ navigationActionConfiguration: __assign({ onClick: this.routerStoreProxy.navigateBack }, subHeaderConfiguration.navigationActionConfiguration) }, subHeaderConfiguration), { title: title }), onDrawerHeaderClick: this.onDrawerHeaderClick, onChangeLayoutMode: this.onChangeLayoutMode, navigationListElement: this.navigationListElement }), this.originalChildren)));
};
/**
* @stable [06.02.2020]
* @param {IPresetsMenuItemEntity} item
*/
DefaultLayoutContainer.prototype.onHeaderMenuSelectItem = function (item) {
switch (item.value) {
case definition_1.HeaderUserMenuActionsEnum.EXIT:
this.routerStoreProxy.navigate(this.settings.routes.logout);
break;
case definition_1.HeaderUserMenuActionsEnum.PROFILE:
this.routerStoreProxy.navigate(this.settings.routes.profile);
break;
}
};
/**
* @stable [27.05.2020]
*/
DefaultLayoutContainer.prototype.onDrawerHeaderClick = function () {
this.routerStoreProxy.navigate(this.settings.routes.home);
};
/**
* @stable [23.12.2019]
* @param {IPresetsXYEntity} xy
*/
DefaultLayoutContainer.prototype.onNavigationListScroll = function (xy) {
this.dispatchActionByType(layout_interface_1.LAYOUT_XY_UPDATE_ACTION_TYPE, { payload: xy });
};
Object.defineProperty(DefaultLayoutContainer.prototype, "menuItems", {
/**
* @stable [18.09.2018]
* @returns {INavigationListItemEntity[]}
*/
get: function () {
return this.navigationMenuBuilder.provide(this.props);
},
enumerable: false,
configurable: true
});
/**
* @stable [04.12.2019]
*/
DefaultLayoutContainer.prototype.onChangeLayoutMode = function (layoutMode) {
this.dispatchActionByType(layout_interface_1.LAYOUT_MODE_UPDATE_ACTION_TYPE, { payload: layoutMode });
};
Object.defineProperty(DefaultLayoutContainer.prototype, "navigationListElement", {
get: function () {
return (React.createElement(navigation_list_1.NavigationList, __assign({}, this.props.layout, { items: this.menuItems, onScroll: this.onNavigationListScroll, onClick: this.onNavigationListClick, onGroupClick: this.onNavigationListGroupClick, plugins: [plugin_1.PersistentScrollPlugin, plugin_1.PerfectScrollPlugin] })));
},
enumerable: false,
configurable: true
});
/**
* @stable [24.03.2020]
* @param {INavigationListItemEntity} item
*/
DefaultLayoutContainer.prototype.onNavigationListClick = function (item) {
var _this = this;
util_1.ConditionUtils.ifNotEmptyThanValue(item.link, function (link) { return _this.routerStoreProxy.navigate(link); });
};
DefaultLayoutContainer.prototype.onNavigationListGroupClick = function (item) {
var itemValue = item.value;
if (R.isNil(itemValue)) {
return;
}
var payloadWrapper = { payload: itemValue };
this.dispatchActionByType(layout_interface_1.LAYOUT_EXPANDED_GROUPS_UPDATE_ACTION_TYPE, payloadWrapper);
};
__decorate([
di_1.lazyInject(navigation_1.NavigationMenuBuilder),
__metadata("design:type", navigation_1.NavigationMenuBuilder)
], DefaultLayoutContainer.prototype, "navigationMenuBuilder", void 0);
return DefaultLayoutContainer;
}(generic_container_1.GenericContainer));
exports.DefaultLayoutContainer = DefaultLayoutContainer;
//# sourceMappingURL=default-layout.container.js.map