UNPKG

react-application-core

Version:

A react-based application core for the business applications.

166 lines 7.54 kB
"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.Button = void 0; var React = require("react"); var R = require("ramda"); var util_1 = require("../../util"); var definition_1 = require("../../definition"); var link_1 = require("../link"); var generic_component_1 = require("../base/generic.component"); var Button = /** @class */ (function (_super) { __extends(Button, _super); function Button() { return _super !== null && _super.apply(this, arguments) || this; } /** * @stable [13.05.2020] * @returns {JSX.Element} */ Button.prototype.render = function () { var _this = this; var iconLeftAligned = this.originalProps.iconLeftAligned; var $mergedProps = this.mergedProps; var $text = this.getText($mergedProps); var $hasContent = this.hasContent($text); var $hasIcon = this.hasIcon($mergedProps); var className = this.getClassName($mergedProps, $hasContent, $hasIcon); if ($mergedProps.to) { return (React.createElement(link_1.Link, { to: $mergedProps.to, style: $mergedProps.style, className: className }, $text)); } var $disabled = this.isDisabled($mergedProps); var $iconElement = $hasIcon && this.getIconElement($mergedProps); return (React.createElement(definition_1.UniversalIdProviderContext.Consumer, null, function (identificator) { return (React.createElement("button", __assign({ id: _this.getId(identificator), ref: _this.actualRef, type: $mergedProps.type, title: $mergedProps.title, style: $mergedProps.style, className: className, disabled: $disabled }, util_1.PropsUtils.buildClickHandlerProps($mergedProps.onClick, !$disabled, $mergedProps.touched), { onMouseEnter: $mergedProps.onMouseEnter, onMouseLeave: $mergedProps.onMouseLeave }), iconLeftAligned && $iconElement, _this.getContentElement($hasContent, $text), !iconLeftAligned && $iconElement)); })); }; /** * @stable [13.05.2020] */ Button.prototype.blur = function () { this.actualRef.current.blur(); // document.activeElement === body }; // TODO Button.prototype.getId = function (identificator) { if (R.isNil(identificator)) { return identificator; } var names = [this.props.text]; return names.map(function (name) { return (name || '').split(' ').map(function (part) { return (part[0] || '').toLowerCase(); }).join('-'); }).join('-'); }; /** * @stable [13.05.2020] * @param {boolean} $hasContent * @param {string} $text * @returns {JSX.Element} */ Button.prototype.getContentElement = function ($hasContent, $text) { return ($hasContent && (React.createElement("div", { className: definition_1.ButtonClassesEnum.BUTTON_CONTENT }, $text && this.t($text), this.props.children))); }; /** * @stable [13.05.2020] * @param {IButtonProps} $mergedProps * @returns {JSX.Element} */ Button.prototype.getIconElement = function ($mergedProps) { var error = $mergedProps.error, icon = $mergedProps.icon, progress = $mergedProps.progress; return this.uiFactory.makeIcon({ type: progress ? definition_1.IconsEnum.SPINNER : (error ? definition_1.IconsEnum.EXCLAMATION_CIRCLE : icon), }); }; /** * @stable [13.05.2020] * @param {IButtonProps} $mergedProps * @returns {string} */ Button.prototype.getText = function ($mergedProps) { var error = $mergedProps.error, errorMessage = $mergedProps.errorMessage, progress = $mergedProps.progress, progressMessage = $mergedProps.progressMessage, text = $mergedProps.text; return (progress ? (progressMessage || this.settings.messages.WAITING) : (error ? (errorMessage || this.settings.messages.ERROR) : text)); }; /** * @stable [13.05.2020] * @param {IButtonProps} $mergedProps * @param {boolean} $hasContent * @param {boolean} $hasIcon * @returns {string} */ Button.prototype.getClassName = function ($mergedProps, $hasContent, $hasIcon) { return util_1.ClsUtils.joinClassName(definition_1.ButtonClassesEnum.BUTTON, util_1.CalcUtils.calc($mergedProps.className), $hasContent ? definition_1.ButtonClassesEnum.BUTTON_FILLED : definition_1.ButtonClassesEnum.BUTTON_NOT_FILLED, util_1.WrapperUtils.isFull($mergedProps) && definition_1.ButtonClassesEnum.FULL_BUTTON, util_1.WrapperUtils.isDecorated($mergedProps) && $hasIcon && definition_1.ButtonClassesEnum.BUTTON_DECORATED, $mergedProps.mini && definition_1.ButtonClassesEnum.BUTTON_MINI, $mergedProps.outlined && definition_1.ButtonClassesEnum.BUTTON_OUTLINED, $mergedProps.raised && definition_1.ButtonClassesEnum.BUTTON_RAISED); }; /** * @stable [13.05.2020] * @param text * @returns {boolean} */ Button.prototype.hasContent = function (text) { return util_1.ObjectUtils.isObjectNotEmpty(this.props.children) || util_1.ObjectUtils.isObjectNotEmpty(text); }; /** * @stable [02.06.2020] * @param {IButtonProps} $mergedProps * @returns {boolean} */ Button.prototype.hasIcon = function ($mergedProps) { return util_1.ConditionUtils.ifNotNilThanValue($mergedProps, function (entity) { return !R.isNil(entity.icon) && entity.icon !== false; }, false); }; /** * @stable [13.05.2020] * @param {IButtonProps} $mergedProps * @returns {boolean} */ Button.prototype.isDisabled = function ($mergedProps) { return util_1.WrapperUtils.isDisabled($mergedProps) || util_1.WrapperUtils.inProgress($mergedProps); }; Object.defineProperty(Button.prototype, "componentsSettingsProps", { /** * @stable [02.06.2020] * @returns {IButtonProps} */ get: function () { return this.componentsSettings.button; }, enumerable: false, configurable: true }); Button.defaultProps = { full: false, iconLeftAligned: true, touched: false, type: 'button', }; return Button; }(generic_component_1.GenericComponent)); exports.Button = Button; //# sourceMappingURL=button.component.js.map