UNPKG

sws-frontend

Version:

sws frontend project

94 lines 6.23 kB
"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 __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); require("./userbadge.scss"); var Initicon = require("react-initicon"); var normalise = function (str) { return str && str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); }; exports.Badge = function (_a) { var user = _a.user; return (React.createElement("div", { className: "userbadge" }, React.createElement("div", { className: "userbadge-avatar" }, React.createElement(Initicon, { size: 40, text: user.details.firstname + " " + user.details.lastname, color: "var(--theme-warning)", single: false })), React.createElement("div", { className: "userbadge-info" }, React.createElement("div", { className: "userbadge-name" }, normalise(user.details.firstname), " ", normalise(user.details.lastname)), React.createElement("div", { className: "userbadge-post" }, user.details.post), React.createElement("div", { className: "userbadge-contact" }, React.createElement("div", { className: "userbadge-placement" }, user.details.placement), React.createElement("div", { className: "userbadge-email" }, user.details.email && user.details.email.toLowerCase()))))); }; exports.default = exports.Badge; var user_1 = require("../model/user"); var action_1 = require("../model/action"); var FullBadge = (function (_super) { __extends(FullBadge, _super); function FullBadge(props) { var _this = _super.call(this, props) || this; _this.state = { expanded: false, loading: false }; _this.refresh = _this.refresh.bind(_this); return _this; } FullBadge.prototype.refresh = function () { var _this = this; var onRefresh = this.props.onRefresh; this.setState({ loading: true }, function () { return onRefresh() .then(function () { return _this.setState({ loading: false }); }, function () { return _this.setState({ loading: false }); }); }); }; FullBadge.prototype.render = function () { var _this = this; var user = this.props.user; var _a = this.state, expanded = _a.expanded, loading = _a.loading; var useractions = user_1.api.allActionsOf(user); return (React.createElement("div", { className: "userbadge" }, React.createElement("div", { className: "userbadge-core" }, React.createElement("div", { className: "userbadge-avatar" }, React.createElement("i", { className: "material-icons" }, "account_circle")), React.createElement("div", { className: "userbadge-info" }, React.createElement("div", { className: "userbadge-name" }, user_1.api.name(user)), React.createElement("div", { className: "userbadge-post" }, user.details.post), React.createElement("div", { className: "userbadge-contact" }, React.createElement("div", { className: "userbadge-placement" }, user.details.placement), React.createElement("div", { className: "userbadge-email" }, user.details.email && user.details.email.toLowerCase()))), React.createElement("div", { className: "userbadge-more" }, React.createElement("a", { className: "btn btn-xs btn-info", role: "button", onClick: function () { return _this.setState({ expanded: !expanded }); } }, React.createElement("span", { className: "text" }, expanded ? "Less info" : "More info"), React.createElement("i", { className: "material-icons" }, expanded ? "keyboard_arrow_up" : "keyboard_arrow_down")))), React.createElement("div", { className: expanded ? "userbadge-extra" : "userbadge-extra out" }, React.createElement("div", { className: "userbadge-permissions" }, React.createElement("div", { className: "userbadge-roles-header" }, React.createElement("label", null, "I am"), user.roles.map(function (r) { return React.createElement("span", { key: r.id, className: "userbadge-role badge" }, r.name); })), React.createElement("div", { className: "userbadge-permissions-content" }, React.createElement("label", null, "I can"), useractions.length == 0 ? React.createElement("div", { className: "userbadge-permission badge" }, "Look around (and not much else...)") : useractions.map(function (p) { return React.createElement("div", { key: p.name + "+" + p.resource + "}", className: "userbadge-permission badge" }, p.name, " ", action_1.api.isTemplate(p) ? p.resource == action_1.api.any ? "(All)" : "(" + p.resource + ")" : null); })), React.createElement("div", { className: "userbadge-extra-toggle" }, React.createElement("a", { className: "btn btn-xs btn-info", role: "button", onClick: this.refresh }, React.createElement("span", { className: "text" }, "Refresh"), React.createElement("i", { className: "material-icons " + (loading ? "spin" : "") }, "refresh"))))))); }; return FullBadge; }(React.Component)); exports.FullBadge = FullBadge; //# sourceMappingURL=userbadge.js.map