kea-react
Version:
Componentes comunes de react
363 lines (362 loc) • 18.2 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
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) || 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;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var async = require("./async");
var promiseEx_1 = require("./promiseEx");
var swal = require("sweetalert");
var react_rxk_1 = require("react-rxk");
var keautils_1 = require("keautils");
/**Boton que acepta un metodo asíncrono en el on-click y que se deshabilita mientras se esta
* ejecutando la promesa
*/
var PromiseAction = /** @class */ (function (_super) {
__extends(PromiseAction, _super);
function PromiseAction(props) {
var _this = _super.call(this, props) || this;
_this.handleRequest = function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
this.setState({ Promise: this.click() });
return [2 /*return*/];
});
}); };
_this.map = function () { return _this.props.buttonFactory(_this.handleRequest); };
_this.state = { Promise: undefined };
return _this;
}
PromiseAction.prototype.click = function () {
return __awaiter(this, void 0, void 0, function () {
var error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 3, , 9]);
if (!this.props.onClick) return [3 /*break*/, 2];
return [4 /*yield*/, this.props.onClick()];
case 1:
_a.sent();
_a.label = 2;
case 2: return [3 /*break*/, 9];
case 3:
error_1 = _a.sent();
//Espera que evita un bug del swal, si dos swals se lanzan uno seguido despues del otro la UI se queda pegada
return [4 /*yield*/, promiseEx_1.Delay(100)];
case 4:
//Espera que evita un bug del swal, si dos swals se lanzan uno seguido despues del otro la UI se queda pegada
_a.sent();
if (!(error_1 == 401)) return [3 /*break*/, 6];
return [4 /*yield*/, new Promise(function (resolve) { return swal({
title: "No autorizado",
text: "Su usuario no esta autorizado para realizar esta operación",
type: "error"
}, resolve); })];
case 5:
_a.sent();
return [3 /*break*/, 8];
case 6: return [4 /*yield*/, new Promise(function (resolve) { return swal({
title: "Error en la operación",
text: "Hubo un problema con la operación",
type: "error"
}, resolve); })];
case 7:
_a.sent();
_a.label = 8;
case 8: throw error_1;
case 9: return [2 /*return*/];
}
});
});
};
PromiseAction.prototype.render = function () {
var _this = this;
var error = this.props.errorFactory && (function (error) { return _this.props.errorFactory(error, _this.handleRequest); });
return (async.async(this.state.Promise, this.map, {
cargando: this.props.cargandoComponent,
error: error,
delay: 0
}));
};
return PromiseAction;
}(React.PureComponent));
exports.PromiseAction = PromiseAction;
;
/**Vista del botón de bootstrap, no soporta promesa */
var BootstrapButtonSync = /** @class */ (function (_super) {
__extends(BootstrapButtonSync, _super);
function BootstrapButtonSync() {
return _super !== null && _super.apply(this, arguments) || this;
}
BootstrapButtonSync.prototype.render = function () {
var className = "btn btn-" +
(this.props.style || "default") +
(this.props.disabled ? " disabled" : "") +
(this.props.block ? " btn-block" : "");
return (React.createElement("button", { type: "button", className: className, title: this.props.tooltip, onClick: this.props.disabled ? undefined : this.props.onClick },
this.props.iconClass && React.createElement("i", { className: this.props.iconClass }),
" ",
this.props.children));
};
return BootstrapButtonSync;
}(React.PureComponent));
var ButtonNoRx = /** @class */ (function (_super) {
__extends(ButtonNoRx, _super);
function ButtonNoRx() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.errorFactory = function (error, onClick) {
return React.createElement(BootstrapButtonSync, { style: "danger", block: _this.props.block, onClick: onClick, iconClass: "fa fa-times", children: "Error", tooltip: error });
};
_this.buttonFactory = function (onClick, cargando) { return React.createElement(BootstrapButtonSync, { children: _this.props.children, disabled: _this.props.disabled || cargando, iconClass: cargando ? "fa fa-circle-o-notch fa-spin" : _this.props.iconClass, onClick: onClick, style: _this.props.style, block: _this.props.block, tooltip: _this.props.tooltip }); };
return _this;
}
ButtonNoRx.prototype.render = function () {
var _this = this;
return (React.createElement(PromiseAction, { buttonFactory: function (onClick) { return _this.buttonFactory(onClick, false); }, errorFactory: this.errorFactory, cargandoComponent: this.buttonFactory(null, true), onClick: this.props.onClick }));
};
return ButtonNoRx;
}(React.PureComponent));
var ButtonRx = react_rxk_1.componentToRx(ButtonNoRx);
exports.Button = function (props) { return React.createElement(ButtonRx, __assign({}, props, { disabled: keautils_1.toObservable(props.disabled).startWith(true) })); };
var BootstrapButton = /** @class */ (function (_super) {
__extends(BootstrapButton, _super);
function BootstrapButton(props) {
var _this = _super.call(this, props) || this;
console.warn("BootstrapButton esta obsoleto. Utilice Button");
return _this;
}
BootstrapButton.prototype.render = function () {
return React.createElement(exports.Button, this.props, this.props.children);
};
return BootstrapButton;
}(React.PureComponent));
exports.BootstrapButton = BootstrapButton;
/**Botón de agregar*/
var AgregarButton = /** @class */ (function (_super) {
__extends(AgregarButton, _super);
function AgregarButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
AgregarButton.prototype.render = function () {
return (React.createElement(exports.Button, { disabled: this.props.disabled, onClick: this.props.onClick, block: this.props.block, style: "primary", iconClass: "fa fa-plus" }, "Agregar"));
};
return AgregarButton;
}(React.PureComponent));
exports.AgregarButton = AgregarButton;
/**Boton de guardar*/
var GuardarButton = /** @class */ (function (_super) {
__extends(GuardarButton, _super);
function GuardarButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
GuardarButton.prototype.render = function () {
return (React.createElement(exports.Button, { disabled: this.props.disabled, onClick: this.props.onClick, block: this.props.block, style: "success", iconClass: "fa fa-floppy-o" }, "Guardar"));
};
return GuardarButton;
}(React.PureComponent));
exports.GuardarButton = GuardarButton;
/**Boton de borrar*/
var BorrarButton = /** @class */ (function (_super) {
__extends(BorrarButton, _super);
function BorrarButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
BorrarButton.prototype.render = function () {
return (React.createElement(exports.Button, { disabled: this.props.disabled, onClick: this.props.onClick, block: this.props.block, style: "danger", iconClass: "fa fa-trash-o" }, "Borrar"));
};
return BorrarButton;
}(React.PureComponent));
exports.BorrarButton = BorrarButton;
/**Boton de cancelar*/
var CancelarButton = /** @class */ (function (_super) {
__extends(CancelarButton, _super);
function CancelarButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
CancelarButton.prototype.render = function () {
return (React.createElement(exports.Button, { disabled: this.props.disabled, onClick: this.props.onClick, block: this.props.block, style: "default", iconClass: "fa fa-ban" }, "Cancelar"));
};
return CancelarButton;
}(React.PureComponent));
exports.CancelarButton = CancelarButton;
/**Botón para buscar */
var BuscarButton = /** @class */ (function (_super) {
__extends(BuscarButton, _super);
function BuscarButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
BuscarButton.prototype.render = function () {
return (React.createElement(exports.Button, __assign({}, this.props, { style: "info", iconClass: "fa fa-search" }), "Buscar"));
};
return BuscarButton;
}(React.PureComponent));
exports.BuscarButton = BuscarButton;
/**Boton para ir hacia atras en la navegación, si no se establece el on click, viaja hacia atras en la navegación
* por default
*/
var RegresarButton = /** @class */ (function (_super) {
__extends(RegresarButton, _super);
function RegresarButton() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.handleOnClick = function () {
window.history.back();
};
return _this;
}
RegresarButton.prototype.render = function () {
return (React.createElement(exports.Button, { onClick: this.props.onClick || this.handleOnClick, block: this.props.block, style: "default", iconClass: "fa fa-chevron-left" }, "Regresar"));
};
return RegresarButton;
}(React.PureComponent));
exports.RegresarButton = RegresarButton;
/**Un botón con forma de un icono */
var Link = /** @class */ (function (_super) {
__extends(Link, _super);
function Link() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.buttonFactory = function (onClick, cargando) {
var style = { margin: 3, cursor: "pointer", color: Link.colors[_this.props.style || "default"] };
return (cargando ?
React.createElement("a", { style: { margin: 3 } },
React.createElement("i", { className: "fa fa-circle-o-notch fa-spin" }))
:
React.createElement("a", { onClick: onClick, title: _this.props.tooltip, style: style },
_this.props.iconClass && React.createElement("i", { className: _this.props.iconClass }),
" ",
_this.props.children));
};
_this.errorFactory = function (error, onClick) {
return React.createElement("a", { onClick: onClick, title: "Error: " + error, style: { color: "red" } },
React.createElement("i", { className: "fa fa-times" }));
};
return _this;
}
Link.prototype.render = function () {
var _this = this;
return (React.createElement(PromiseAction, { buttonFactory: function (onClick) { return _this.buttonFactory(onClick, false); }, cargandoComponent: this.buttonFactory(undefined, true), errorFactory: this.errorFactory, onClick: this.props.onClick }));
};
Link.colors = {
default: undefined,
primary: "#26b",
success: "#1a5",
info: "#26b",
warning: "#dd2",
danger: "#d22",
link: "#26b",
};
return Link;
}(React.PureComponent));
exports.Link = Link;
var IconButton = /** @class */ (function (_super) {
__extends(IconButton, _super);
function IconButton(props) {
var _this = _super.call(this, props) || this;
console.warn("IconButton esta obsoleto, utilice la clase Link");
return _this;
}
IconButton.prototype.render = function () {
return React.createElement(Link, this.props, this.props.children);
};
return IconButton;
}(React.PureComponent));
exports.IconButton = IconButton;
/**Boton para borrar un elemento de un listado. Tiene el icono del bote de basura */
var BorrarIcon = /** @class */ (function (_super) {
__extends(BorrarIcon, _super);
function BorrarIcon() {
return _super !== null && _super.apply(this, arguments) || this;
}
BorrarIcon.prototype.render = function () {
return React.createElement(Link, { onClick: this.props.onClick, iconClass: "fa fa-trash-o", tooltip: "Eliminar", style: "danger" });
};
return BorrarIcon;
}(React.PureComponent));
exports.BorrarIcon = BorrarIcon;
/**Boton para editar un elemento de un listado. Tiene el icono del lapiz */
var EditButton = /** @class */ (function (_super) {
__extends(EditButton, _super);
function EditButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
EditButton.prototype.render = function () {
return React.createElement(Link, { onClick: this.props.onClick, iconClass: "fa fa-pencil", tooltip: "Editar", style: "primary" });
};
return EditButton;
}(React.PureComponent));
exports.EditButton = EditButton;
/**Botón para ver un elemento de un listado. Tiene el icono del ojo */
var VerButton = /** @class */ (function (_super) {
__extends(VerButton, _super);
function VerButton() {
return _super !== null && _super.apply(this, arguments) || this;
}
VerButton.prototype.render = function () {
return React.createElement(Link, { onClick: this.props.onClick, iconClass: "fa fa-eye", tooltip: "Ver", style: "primary" });
};
return VerButton;
}(React.PureComponent));
exports.VerButton = VerButton;
/**Botones de una fila de un catalogo, que son el de editar y el de borrar */
var RowButtons = /** @class */ (function (_super) {
__extends(RowButtons, _super);
function RowButtons() {
return _super !== null && _super.apply(this, arguments) || this;
}
RowButtons.prototype.render = function () {
return (React.createElement("span", null,
this.props.onEdit && React.createElement(EditButton, { onClick: this.props.onEdit }),
this.props.onDelete && React.createElement(BorrarIcon, { onClick: this.props.onDelete })));
};
return RowButtons;
}(React.PureComponent));
exports.RowButtons = RowButtons;