@blocklet/ui-react
Version:
Some useful front-end web components that can be used in Blocklets.
80 lines (79 loc) • 2.62 kB
JavaScript
import { jsx as s } from "react/jsx-runtime";
import { Box as m } from "@mui/material";
import x from "@arcblock/ux/lib/Empty";
import { useTheme as y } from "@arcblock/ux/lib/Theme";
import g from "@arcblock/ux/lib/Passport";
import { PASSPORT_STATUS as h } from "@arcblock/ux/lib/Util/constant";
import { useMemoizedFn as C, useCreation as l } from "ahooks";
import f from "lodash/uniqBy";
import { translate as P } from "@arcblock/ux/lib/Locale/util";
import { useLocaleContext as k } from "@arcblock/ux/lib/Locale/context";
import { translations as v } from "../libs/locales.js";
import { createPassportSvg as S } from "../libs/utils.js";
function D({ user: o, ...a }) {
const { locale: c } = k(), n = C((r, t = {}) => P(v, r, c, "en", t)), d = y(), e = l(() => {
const r = (o?.passports || []).map((t) => ({
...t,
revoked: t.status === h.REVOKED
}));
return r.sort((t, u) => t.revoked === u.revoked ? 0 : t.revoked ? 1 : -1), f(
r.filter((t) => !t.display),
"role"
).concat(
f(
r.filter((t) => t.display),
"display.content"
)
);
}, [o?.passports]), p = l(() => e?.find((r) => r.name === o.role), [e, o?.role]), i = d.palette.primary.main;
return e.length === 0 ? /* @__PURE__ */ s(m, { children: /* @__PURE__ */ s(x, { children: n("noPassport") }) }) : /* @__PURE__ */ s(
m,
{
...a,
sx: {
display: "grid",
justifyItems: "start",
gridTemplateColumns: {
xs: "repeat(2, 1fr)",
sm: "repeat(2, 1fr)",
md: "repeat(3, 1fr)",
lg: "repeat(5, 1fr)"
},
gap: 2.5,
...a.sx
},
children: e.map((r) => /* @__PURE__ */ s(
g,
{
passport: r,
user: o,
color: window.blocklet.passportColor,
createPassportSvg: S,
title: p && p.role === r.role ? n("currentPassport") : "",
sx: {
flexDirection: "column",
alignItems: "center",
gap: 1,
".passport-item__display": {
width: 166,
height: 166,
borderRadius: 1,
px: 2,
display: "flex",
justifyContent: "center",
backgroundColor: "grey.50",
boxShadow: p && p.role === r.role ? `0px 2px 4px 0px ${i}, 0px 1px 2px -1px ${i}, 0px 0px 0px 1px ${i} !important` : "unset"
},
".passport-item__body": {
marginLeft: "0 !important"
}
}
},
r.id
))
}
);
}
export {
D as default
};