@verii/components-organizations-registrar 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{ListItem.DgXqrom8.js → ListItem.B2OnXvbO.js} +25 -3
- package/dist/chunks/ListItem.B2OnXvbO.js.map +1 -0
- package/dist/chunks/{ListItem.Auy7hQ9Z.js → ListItem.B4gMNvxv.js} +25 -3
- package/dist/chunks/ListItem.B4gMNvxv.js.map +1 -0
- package/dist/chunks/{SetInvitationService.BeU7-IBo.js → SetInvitationService.DNxpakOw.js} +2 -2
- package/dist/chunks/{SetInvitationService.BeU7-IBo.js.map → SetInvitationService.DNxpakOw.js.map} +1 -1
- package/dist/chunks/{SetInvitationService.DtVH6OkH.js → SetInvitationService.uZHd9L4x.js} +2 -2
- package/dist/chunks/{SetInvitationService.DtVH6OkH.js.map → SetInvitationService.uZHd9L4x.js.map} +1 -1
- package/dist/components/common.cjs +1 -1
- package/dist/components/common.js +1 -1
- package/dist/components/invitations.cjs +1 -1
- package/dist/components/invitations.js +1 -1
- package/dist/pages/invitations.cjs +1 -1
- package/dist/pages/invitations.js +1 -1
- package/dist/pages/services.cjs +8 -6
- package/dist/pages/services.cjs.map +1 -1
- package/dist/pages/services.js +8 -6
- package/dist/pages/services.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunks/ListItem.Auy7hQ9Z.js.map +0 -1
- package/dist/chunks/ListItem.DgXqrom8.js.map +0 -1
|
@@ -87,9 +87,23 @@ const ListItem = ({
|
|
|
87
87
|
content.map((service, i) => (
|
|
88
88
|
// eslint-disable-next-line react/no-array-index-key
|
|
89
89
|
/* @__PURE__ */ jsxs(Box, { children: [
|
|
90
|
-
service.map(({ name, value }) => /* @__PURE__ */ jsxs(Stack, { flexDirection: "row", sx: { py: 1 }, children: [
|
|
90
|
+
service.map(({ name, value, isLink }) => /* @__PURE__ */ jsxs(Stack, { flexDirection: "row", sx: { py: 1 }, children: [
|
|
91
91
|
/* @__PURE__ */ jsx(Typography, { sx: sx.name, children: name }),
|
|
92
|
-
/* @__PURE__ */ jsx(
|
|
92
|
+
isLink ? /* @__PURE__ */ jsx(
|
|
93
|
+
Typography,
|
|
94
|
+
{
|
|
95
|
+
component: "a",
|
|
96
|
+
href: value,
|
|
97
|
+
target: "_blank",
|
|
98
|
+
rel: "noopener noreferrer",
|
|
99
|
+
onClick: (e) => {
|
|
100
|
+
e.preventDefault();
|
|
101
|
+
window.open(value, "_blank", "noopener,noreferrer");
|
|
102
|
+
},
|
|
103
|
+
sx: { ...sx.value, ...sx.link },
|
|
104
|
+
children: value
|
|
105
|
+
}
|
|
106
|
+
) : /* @__PURE__ */ jsx(Typography, { sx: sx.value, children: value })
|
|
93
107
|
] }, `${id}-${value}`)),
|
|
94
108
|
i < content.length - 1 && /* @__PURE__ */ jsx(Divider, { flexItem: true, sx: { my: 1 } })
|
|
95
109
|
] }, i)
|
|
@@ -146,6 +160,14 @@ const sx = {
|
|
|
146
160
|
borderColor: "secondary.light"
|
|
147
161
|
},
|
|
148
162
|
value: { flex: 1, fontWeight: 600, overflowWrap: "anywhere" },
|
|
163
|
+
link: {
|
|
164
|
+
color: "primary.main",
|
|
165
|
+
textDecoration: "underline",
|
|
166
|
+
cursor: "pointer",
|
|
167
|
+
"&:hover": {
|
|
168
|
+
textDecoration: "none"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
149
171
|
undoButton: {
|
|
150
172
|
backgroundColor: "background.light",
|
|
151
173
|
boxShadow: "none",
|
|
@@ -196,4 +218,4 @@ export {
|
|
|
196
218
|
CustomChip as C,
|
|
197
219
|
ListItem as L
|
|
198
220
|
};
|
|
199
|
-
//# sourceMappingURL=ListItem.
|
|
221
|
+
//# sourceMappingURL=ListItem.B2OnXvbO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.B2OnXvbO.js","sources":["../../src/components/common/Chip.jsx","../../src/components/common/ListItem.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Chip } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nconst CustomChip = ({ label, color }) => (\n <Chip\n label={label}\n variant=\"outlined\"\n component=\"div\"\n sx={{\n color,\n borderColor: color,\n width: 'fit-content',\n padding: 1,\n }}\n />\n);\n\nexport default CustomChip;\n\n// eslint-disable-next-line better-mutation/no-mutation\nCustomChip.propTypes = {\n label: PropTypes.string,\n color: PropTypes.string,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable complexity */\nimport {\n Button,\n Card,\n CardActions,\n CardContent,\n Divider,\n Stack,\n Typography,\n Box,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport Chip from './Chip.jsx';\n\nconst ListItemDeleted = (onUndoDelete, undoText) => (\n <Stack alignItems=\"center\" sx={sx.undoContainer}>\n <Typography sx={sx.undoText}>{undoText || 'Item was deleted'}</Typography>\n <Button onClick={onUndoDelete} variant=\"contained\" elevation={0} sx={sx.undoButton}>\n UNDO\n </Button>\n </Stack>\n);\n\nconst ListItem = ({\n id,\n title,\n status,\n date,\n email,\n content,\n showActions,\n actions,\n markForDelete,\n onUndoDelete,\n undoText,\n}) => {\n return (\n <Card sx={sx.card} elevation={3}>\n <Stack\n direction=\"row\"\n width=\"100%\"\n sx={{\n ...(markForDelete && { visibility: 'hidden' }),\n }}\n >\n <Stack sx={{ flex: 1 }}>\n <CardContent sx={sx.cardContent}>\n <Stack\n flexDirection=\"row\"\n key={`${id}-${title}`}\n justifyContent=\"space-between\"\n sx={{ py: 1, pb: 1.5 }}\n >\n <Typography component=\"div\" variant=\"h4\" alignSelf=\"center\">\n {title}\n </Typography>\n <Stack\n flexDirection=\"column\"\n alignItems=\"flex-end\"\n sx={{ height: 'fit-content', mb: -10 }}\n key={`${id}-${title}`}\n >\n {!!status.title && (\n <Stack sx={{ pb: 1.5 }}>\n <Chip label={status.title} color={status.color} />\n </Stack>\n )}\n {!!email && (\n <>\n <Typography\n variant=\"body2\"\n alignSelf=\"center\"\n component=\"div\"\n sx={{ py: 0.5, pb: 0.5 }}\n >\n {email}\n </Typography>\n <Typography variant=\"caption\">{date}</Typography>\n </>\n )}\n </Stack>\n </Stack>\n\n {content.map((service, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i}>\n {service.map(({ name, value, isLink }) => (\n <Stack flexDirection=\"row\" key={`${id}-${value}`} sx={{ py: 1 }}>\n <Typography sx={sx.name}>{name}</Typography>\n {isLink ? (\n <Typography\n component=\"a\"\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => {\n e.preventDefault();\n window.open(value, '_blank', 'noopener,noreferrer');\n }}\n sx={{ ...sx.value, ...sx.link }}\n >\n {value}\n </Typography>\n ) : (\n <Typography sx={sx.value}>{value}</Typography>\n )}\n </Stack>\n ))}\n {i < content.length - 1 && <Divider flexItem sx={{ my: 1 }} />}\n </Box>\n ))}\n </CardContent>\n </Stack>\n {showActions && (\n <>\n <Divider orientation=\"vertical\" flexItem />\n <CardActions sx={{ flexBasis: 'fit-content', p: 0 }}>\n <Stack justifyContent=\"center\" sx={{ px: 4, py: '20px' }}>\n {actions[0] && (\n <Button\n variant=\"outlined\"\n sx={sx.button}\n startIcon={actions[0].icon}\n onClick={() => actions[0].action(id)}\n >\n {actions[0].title}\n </Button>\n )}\n {actions[1] && (\n <Button\n variant=\"contained\"\n startIcon={actions[1].icon}\n onClick={() => actions[1].action(id)}\n >\n {actions[1].title}\n </Button>\n )}\n </Stack>\n </CardActions>\n </>\n )}\n </Stack>\n {markForDelete && ListItemDeleted(onUndoDelete, undoText)}\n </Card>\n );\n};\n\nconst sx = {\n card: { display: 'flex', my: 2, position: 'relative' },\n cardContent: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n px: 4,\n py: 3,\n },\n name: {\n textTransform: 'uppercase',\n flexBasis: '180px',\n fontWeight: 500,\n pr: 1,\n },\n button: {\n mb: '10px',\n color: 'secondary.light',\n borderColor: 'secondary.light',\n },\n value: { flex: 1, fontWeight: 600, overflowWrap: 'anywhere' },\n link: {\n color: 'primary.main',\n textDecoration: 'underline',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'none',\n },\n },\n undoButton: {\n backgroundColor: 'background.light',\n boxShadow: 'none',\n color: 'secondary.main',\n px: 4,\n width: 'fit-content',\n mt: 3,\n fontWeight: '600',\n },\n undoContainer: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n undoText: { color: 'secondary.light', fontWeight: '500' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nListItem.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string.isRequired,\n status: PropTypes.shape({\n title: PropTypes.string,\n color: PropTypes.string,\n }),\n date: PropTypes.string,\n email: PropTypes.string,\n showActions: PropTypes.bool.isRequired,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n icon: PropTypes.element,\n action: PropTypes.func,\n }),\n ),\n content: PropTypes.arrayOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ),\n ),\n markForDelete: PropTypes.bool,\n onUndoDelete: PropTypes.func,\n undoText: PropTypes.string,\n};\n\nexport default ListItem;\n"],"names":["Chip"],"mappings":"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"}
|
|
@@ -88,9 +88,23 @@ const ListItem = ({
|
|
|
88
88
|
content.map((service, i) => (
|
|
89
89
|
// eslint-disable-next-line react/no-array-index-key
|
|
90
90
|
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { children: [
|
|
91
|
-
service.map(({ name, value }) => /* @__PURE__ */ jsxRuntime.jsxs(material.Stack, { flexDirection: "row", sx: { py: 1 }, children: [
|
|
91
|
+
service.map(({ name, value, isLink }) => /* @__PURE__ */ jsxRuntime.jsxs(material.Stack, { flexDirection: "row", sx: { py: 1 }, children: [
|
|
92
92
|
/* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: sx.name, children: name }),
|
|
93
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
isLink ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
material.Typography,
|
|
95
|
+
{
|
|
96
|
+
component: "a",
|
|
97
|
+
href: value,
|
|
98
|
+
target: "_blank",
|
|
99
|
+
rel: "noopener noreferrer",
|
|
100
|
+
onClick: (e) => {
|
|
101
|
+
e.preventDefault();
|
|
102
|
+
window.open(value, "_blank", "noopener,noreferrer");
|
|
103
|
+
},
|
|
104
|
+
sx: { ...sx.value, ...sx.link },
|
|
105
|
+
children: value
|
|
106
|
+
}
|
|
107
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: sx.value, children: value })
|
|
94
108
|
] }, `${id}-${value}`)),
|
|
95
109
|
i < content.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(material.Divider, { flexItem: true, sx: { my: 1 } })
|
|
96
110
|
] }, i)
|
|
@@ -147,6 +161,14 @@ const sx = {
|
|
|
147
161
|
borderColor: "secondary.light"
|
|
148
162
|
},
|
|
149
163
|
value: { flex: 1, fontWeight: 600, overflowWrap: "anywhere" },
|
|
164
|
+
link: {
|
|
165
|
+
color: "primary.main",
|
|
166
|
+
textDecoration: "underline",
|
|
167
|
+
cursor: "pointer",
|
|
168
|
+
"&:hover": {
|
|
169
|
+
textDecoration: "none"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
150
172
|
undoButton: {
|
|
151
173
|
backgroundColor: "background.light",
|
|
152
174
|
boxShadow: "none",
|
|
@@ -195,4 +217,4 @@ ListItem.propTypes = {
|
|
|
195
217
|
};
|
|
196
218
|
exports.CustomChip = CustomChip;
|
|
197
219
|
exports.ListItem = ListItem;
|
|
198
|
-
//# sourceMappingURL=ListItem.
|
|
220
|
+
//# sourceMappingURL=ListItem.B4gMNvxv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.B4gMNvxv.js","sources":["../../src/components/common/Chip.jsx","../../src/components/common/ListItem.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Chip } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nconst CustomChip = ({ label, color }) => (\n <Chip\n label={label}\n variant=\"outlined\"\n component=\"div\"\n sx={{\n color,\n borderColor: color,\n width: 'fit-content',\n padding: 1,\n }}\n />\n);\n\nexport default CustomChip;\n\n// eslint-disable-next-line better-mutation/no-mutation\nCustomChip.propTypes = {\n label: PropTypes.string,\n color: PropTypes.string,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable complexity */\nimport {\n Button,\n Card,\n CardActions,\n CardContent,\n Divider,\n Stack,\n Typography,\n Box,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport Chip from './Chip.jsx';\n\nconst ListItemDeleted = (onUndoDelete, undoText) => (\n <Stack alignItems=\"center\" sx={sx.undoContainer}>\n <Typography sx={sx.undoText}>{undoText || 'Item was deleted'}</Typography>\n <Button onClick={onUndoDelete} variant=\"contained\" elevation={0} sx={sx.undoButton}>\n UNDO\n </Button>\n </Stack>\n);\n\nconst ListItem = ({\n id,\n title,\n status,\n date,\n email,\n content,\n showActions,\n actions,\n markForDelete,\n onUndoDelete,\n undoText,\n}) => {\n return (\n <Card sx={sx.card} elevation={3}>\n <Stack\n direction=\"row\"\n width=\"100%\"\n sx={{\n ...(markForDelete && { visibility: 'hidden' }),\n }}\n >\n <Stack sx={{ flex: 1 }}>\n <CardContent sx={sx.cardContent}>\n <Stack\n flexDirection=\"row\"\n key={`${id}-${title}`}\n justifyContent=\"space-between\"\n sx={{ py: 1, pb: 1.5 }}\n >\n <Typography component=\"div\" variant=\"h4\" alignSelf=\"center\">\n {title}\n </Typography>\n <Stack\n flexDirection=\"column\"\n alignItems=\"flex-end\"\n sx={{ height: 'fit-content', mb: -10 }}\n key={`${id}-${title}`}\n >\n {!!status.title && (\n <Stack sx={{ pb: 1.5 }}>\n <Chip label={status.title} color={status.color} />\n </Stack>\n )}\n {!!email && (\n <>\n <Typography\n variant=\"body2\"\n alignSelf=\"center\"\n component=\"div\"\n sx={{ py: 0.5, pb: 0.5 }}\n >\n {email}\n </Typography>\n <Typography variant=\"caption\">{date}</Typography>\n </>\n )}\n </Stack>\n </Stack>\n\n {content.map((service, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i}>\n {service.map(({ name, value, isLink }) => (\n <Stack flexDirection=\"row\" key={`${id}-${value}`} sx={{ py: 1 }}>\n <Typography sx={sx.name}>{name}</Typography>\n {isLink ? (\n <Typography\n component=\"a\"\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => {\n e.preventDefault();\n window.open(value, '_blank', 'noopener,noreferrer');\n }}\n sx={{ ...sx.value, ...sx.link }}\n >\n {value}\n </Typography>\n ) : (\n <Typography sx={sx.value}>{value}</Typography>\n )}\n </Stack>\n ))}\n {i < content.length - 1 && <Divider flexItem sx={{ my: 1 }} />}\n </Box>\n ))}\n </CardContent>\n </Stack>\n {showActions && (\n <>\n <Divider orientation=\"vertical\" flexItem />\n <CardActions sx={{ flexBasis: 'fit-content', p: 0 }}>\n <Stack justifyContent=\"center\" sx={{ px: 4, py: '20px' }}>\n {actions[0] && (\n <Button\n variant=\"outlined\"\n sx={sx.button}\n startIcon={actions[0].icon}\n onClick={() => actions[0].action(id)}\n >\n {actions[0].title}\n </Button>\n )}\n {actions[1] && (\n <Button\n variant=\"contained\"\n startIcon={actions[1].icon}\n onClick={() => actions[1].action(id)}\n >\n {actions[1].title}\n </Button>\n )}\n </Stack>\n </CardActions>\n </>\n )}\n </Stack>\n {markForDelete && ListItemDeleted(onUndoDelete, undoText)}\n </Card>\n );\n};\n\nconst sx = {\n card: { display: 'flex', my: 2, position: 'relative' },\n cardContent: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n px: 4,\n py: 3,\n },\n name: {\n textTransform: 'uppercase',\n flexBasis: '180px',\n fontWeight: 500,\n pr: 1,\n },\n button: {\n mb: '10px',\n color: 'secondary.light',\n borderColor: 'secondary.light',\n },\n value: { flex: 1, fontWeight: 600, overflowWrap: 'anywhere' },\n link: {\n color: 'primary.main',\n textDecoration: 'underline',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'none',\n },\n },\n undoButton: {\n backgroundColor: 'background.light',\n boxShadow: 'none',\n color: 'secondary.main',\n px: 4,\n width: 'fit-content',\n mt: 3,\n fontWeight: '600',\n },\n undoContainer: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n undoText: { color: 'secondary.light', fontWeight: '500' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nListItem.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string.isRequired,\n status: PropTypes.shape({\n title: PropTypes.string,\n color: PropTypes.string,\n }),\n date: PropTypes.string,\n email: PropTypes.string,\n showActions: PropTypes.bool.isRequired,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n icon: PropTypes.element,\n action: PropTypes.func,\n }),\n ),\n content: PropTypes.arrayOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ),\n ),\n markForDelete: PropTypes.bool,\n onUndoDelete: PropTypes.func,\n undoText: PropTypes.string,\n};\n\nexport default ListItem;\n"],"names":["jsx","Chip","jsxs","Stack","Typography","Button","Card","CardContent","Fragment","Box","Divider","CardActions"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ const chainNames = require("./chainNames.DF5Kayu_.js");
|
|
|
7
7
|
const ConfigContext = require("./ConfigContext.CqbiiiBD.js");
|
|
8
8
|
const reactRouter = require("react-router");
|
|
9
9
|
const React = require("react");
|
|
10
|
-
const ListItem = require("./ListItem.
|
|
10
|
+
const ListItem = require("./ListItem.B4gMNvxv.js");
|
|
11
11
|
const CheckCircleIcon = require("@mui/icons-material/CheckCircle");
|
|
12
12
|
const reactAdmin = require("react-admin");
|
|
13
13
|
const CreateOrganizationUtils = require("./CreateOrganizationUtils.C5C_r3Zp.js");
|
|
@@ -478,4 +478,4 @@ exports.InvitationsListContainer = InvitationsListContainer;
|
|
|
478
478
|
exports.SetInvitationEmail = SetInvitationEmail;
|
|
479
479
|
exports.SetInvitationService = SetInvitationService;
|
|
480
480
|
exports.SetKeyIndividuals = SetKeyIndividuals;
|
|
481
|
-
//# sourceMappingURL=SetInvitationService.
|
|
481
|
+
//# sourceMappingURL=SetInvitationService.DNxpakOw.js.map
|
package/dist/chunks/{SetInvitationService.BeU7-IBo.js.map → SetInvitationService.DNxpakOw.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetInvitationService.BeU7-IBo.js","sources":["../../src/components/invitations/InvitationServiceInfo.jsx","../../src/components/invitations/InvitationsListContainer.jsx","../../src/components/invitations/SetInvitationEmail.jsx","../../src/components/invitations/SetKeyIndividuals.jsx","../../src/components/invitations/SetInvitationService.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { Stack, Box, Typography, Link } from '@mui/material';\nimport { serviceTypesIssuingOrInspection, CREDENTIAL_TYPES_IDS } from '@/utils/serviceTypes.js';\nimport { chainNames } from '@/utils/chainNames.js';\nimport { useConfig } from '@/utils/ConfigContext.js';\n\nconst getServiceKey = (key) => {\n switch (key) {\n case 'id': {\n return 'Service ID';\n }\n case 'type': {\n return 'Service type';\n }\n case 'serviceEndpoint': {\n return 'Service endpoint';\n }\n\n default:\n return key;\n }\n};\n\nconst getServiceTitle = (value, credentialTypes) => {\n let serviceType;\n if (value === 'VlcContactIssuer_v1') {\n serviceType = credentialTypes.includes('EmailV1.0')\n ? CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_EMAIL\n : CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_PHONE;\n } else {\n serviceType = value;\n }\n return serviceTypesIssuingOrInspection.find((item) => item.id === serviceType).title;\n};\n\nconst InvitationServiceInfo = ({ inviteeService, agreementStyles }) => {\n const config = useConfig();\n return (\n <>\n {inviteeService &&\n inviteeService?.map((service) => {\n return (\n <Stack sx={sxStyles.serviceContainer} key={`service-${service.id}`}>\n {Object.entries(service).map(([serviceKey, value]) => {\n if (serviceKey === 'credentialTypes') {\n return undefined;\n }\n\n const serviceValue =\n serviceKey === 'type' ? getServiceTitle(value, service.credentialTypes) : value;\n\n return (\n <Box key={`service-${service.id}-${serviceKey}`} sx={sxStyles.field}>\n <Typography variant=\"pm\">{getServiceKey(serviceKey)}</Typography>\n <Typography variant=\"h5\" sx={sxStyles.valueText}>\n {serviceValue}\n </Typography>\n </Box>\n );\n })}\n </Stack>\n );\n })}\n {config.chainName !== chainNames.testnet && (\n <Typography variant=\"pm\" sx={[sxStyles.agreement, agreementStyles]}>\n <span>By clicking Save, you agree to our </span>\n <Link\n target=\"_blank\"\n href=\"https://www.velocitynetwork.foundation/main2/participation-agreements\"\n >\n Participant Agreement\n </Link>\n </Typography>\n )}\n </>\n );\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationServiceInfo.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n inviteeService: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n agreementStyles: PropTypes.array,\n};\n\nconst sxStyles = {\n serviceContainer: {\n backgroundColor: (theme) => theme.customColors.grey1,\n borderRadius: '12px',\n p: '32px 40px',\n mt: '25px',\n },\n agreement: {\n color: (theme) => theme.customColors.grey2,\n textAlign: 'center',\n mt: 5,\n display: 'block',\n },\n valueText: {\n marginTop: 1,\n 'overflow-wrap': 'break-word',\n },\n field: {\n marginBottom: 4,\n '&:last-child': {\n marginBottom: 0,\n },\n },\n};\n\nexport default InvitationServiceInfo;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport { Button, Stack, Grid, Paper, Typography, TablePagination } from '@mui/material';\nimport { useCallback, useEffect, useState } from 'react';\nimport ListItem from '../common/ListItem.jsx';\n\nconst getDateAndTimeFormated = (dateString) => {\n const twoDigits = (number) => `0${number}`.slice(-2);\n const date = new Date(dateString);\n return `${date.getFullYear()}-${twoDigits(date.getMonth() + 1)}-${date.getDate()} ${twoDigits(\n date.getHours(),\n )}:${twoDigits(date.getMinutes())}`;\n};\n\nconst ROWS_PER_PAGE = 10;\n\nconst InvitationsListContainer = ({\n invitations,\n withdrawAction,\n resendAction,\n onCreateInvite,\n changePage,\n currentPage,\n invitationToDelete,\n onUndoDelete,\n}) => {\n const [pagesCount, setPagesCount] = useState(-1);\n const getStatus = (invitation) => {\n if (invitation.acceptedAt) {\n return { title: 'ACCEPTED', color: 'primary.success' };\n }\n if (new Date() >= new Date(invitation.expiresAt)) {\n return { title: 'EXPIRED', color: 'primary.main' };\n }\n return { title: 'INVITED', color: 'primary.warning' };\n };\n\n const updatePagination = useCallback(\n (nextPage) => {\n if (invitations.length === ROWS_PER_PAGE || nextPage < currentPage) {\n setPagesCount(-1);\n changePage(nextPage);\n } else {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n },\n [changePage, currentPage, invitations.length],\n );\n\n useEffect(() => {\n if (invitations.length < ROWS_PER_PAGE) {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n }, [currentPage, invitations]);\n\n return (\n <>\n <Stack sx={sx.inviteButton}>\n <Button variant=\"outlined\" onClick={onCreateInvite}>\n Invite Client +\n </Button>\n </Stack>\n\n {!!invitations.length &&\n invitations.map((invitation) => (\n <ListItem\n key={invitation.id}\n id={invitation.id}\n markForDelete={invitationToDelete === invitation.id}\n onUndoDelete={onUndoDelete}\n undoText=\"INVITATION WAS DELETED\"\n title={invitation.inviteeProfile.name}\n status={getStatus(invitation)}\n date={getDateAndTimeFormated(invitation.acceptedAt || invitation.updatedAt)}\n showActions={!invitation.acceptedAt}\n actions={[resendAction, withdrawAction]}\n email={invitation.inviteeEmail}\n content={invitation.inviteeService.map((service) => [\n { name: 'service type', value: service.type },\n {\n name: 'service endpoint',\n value: service.serviceEndpoint,\n },\n ])}\n />\n ))}\n {/* TODO Fix paging after api retun total */}\n {(invitations.length > 0 || currentPage > 0) && (\n <TablePagination\n component=\"div\"\n count={pagesCount}\n page={currentPage}\n onPageChange={(e, nextPage) => updatePagination(nextPage)}\n rowsPerPage={ROWS_PER_PAGE}\n rowsPerPageOptions={[]}\n />\n )}\n\n {!invitations.length && currentPage === 0 && (\n <Grid container>\n <Grid item xs={12}>\n <Paper sx={sx.paper} elevation={1}>\n <Typography sx={sx.text}>\n {'Send your first invitation '}\n <Link to=\"/invitations/create/step-1\">\n <Typography sx={sx.link} component=\"a\">\n now\n </Typography>\n </Link>\n </Typography>\n </Paper>\n </Grid>\n </Grid>\n )}\n </>\n );\n};\n\nexport default InvitationsListContainer;\n\nconst sx = {\n inviteButton: {\n mb: 2,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n },\n paper: {\n height: 158,\n minWidth: 275,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n border: 'none',\n boxShadow: '0px 0px 4px #0000001a, 0px 6px 12px #0000001a',\n },\n text: {\n fontSize: 16,\n textAlign: 'center',\n fontWeight: 600,\n color: 'text.primary',\n },\n link: {\n color: 'primary.main',\n textDecoration: 'underline',\n fontWeight: 600,\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationsListContainer.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n invitations: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n withdrawAction: PropTypes.object,\n // eslint-disable-next-line react/forbid-prop-types\n resendAction: PropTypes.object,\n onCreateInvite: PropTypes.func.isRequired,\n changePage: PropTypes.func.isRequired,\n currentPage: PropTypes.number.isRequired,\n invitationToDelete: PropTypes.string,\n onUndoDelete: PropTypes.func.isRequired,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { Box, InputAdornment } from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Form, TextInput, required } from 'react-admin';\nimport PropTypes from 'prop-types';\n\nimport { validateEmail } from '../organizations/CreateOrganizationUtils.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationEmail = ({ children, onSubmit, defaultValue, loading }) => {\n const [isEmailValid, setIsEmailValid] = useState(false);\n\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit}>\n <TextInput\n fullWidth\n label=\"Email\"\n type=\"email\"\n source=\"inviteeEmail\"\n defaultValue={defaultValue}\n validate={[required(), ...validateEmail]}\n InputProps={{\n endAdornment: isEmailValid ? (\n <InputAdornment position=\"end\">\n <CheckCircleIcon color=\"success\" />\n </InputAdornment>\n ) : null,\n }}\n />\n\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton\n styles={styles.inviteButton}\n title=\"Invite client\"\n handleState={setIsEmailValid}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n },\n backButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n borderColor: 'secondary.light',\n color: 'text.primary',\n },\n inviteButton: {\n width: '160px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationEmail.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n loading: PropTypes.bool,\n};\n\nexport default SetInvitationEmail;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, Stack, Typography, Tooltip, Button } from '@mui/material';\nimport { Form, FormDataConsumer, TextInput, maxLength, required } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport InfoIcon from '@mui/icons-material/Info';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport { validateEmail } from '../organizations/index.jsx';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\nimport {\n ADMINISTRATOR_DETAILS_HINT,\n SIGNATORY_DETAILS_HINT,\n SIGNATORY_EMAIL_HINT,\n} from '../../utils/index.jsx';\n\nconst SetKeyIndividuals = ({ children, onSubmit, defaultValues, onBack, loading }) => {\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit} defaultValues={defaultValues}>\n <Stack>\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Administrator’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={ADMINISTRATOR_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Typography variant=\"body2\" sx={styles.infoText}>\n The invitation will be sent to this email.\n </Typography>\n <TextInput\n fullWidth\n label=\"Email\"\n source=\"adminEmail\"\n validate={[...validateEmail, required()]}\n />\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"adminGivenName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"adminFamilyName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput fullWidth label=\"Job Title\" source=\"adminTitle\" validate={[maxLength(1024)]} />\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Signatory Authority’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={SIGNATORY_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Stack flexDirection=\"row\" gap={1.75}>\n <TextInput fullWidth label=\"Email\" source=\"signatoryEmail\" validate={validateEmail} />\n <Box mt={2}>\n <Tooltip title={SIGNATORY_EMAIL_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"signatoryGivenName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"signatoryFamilyName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Job Title\"\n source=\"signatoryTitle\"\n validate={[maxLength(1024)]}\n />\n </Stack>\n\n <Box sx={styles.buttonBlock}>\n <FormDataConsumer>\n {({ formData }) => (\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.button}\n onClick={() => onBack(formData)}\n startIcon={<KeyboardArrowLeftIcon />}\n >\n Back\n </Button>\n )}\n </FormDataConsumer>\n {children}\n\n <OrganizationSubmitButton\n title=\"Invite Client\"\n styles={styles.button}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n infoText: {\n color: 'primary.main',\n fontWeight: '600',\n marginTop: 1,\n marginBottom: 1.5,\n },\n subTitle: {\n fontSize: '18px',\n fontWeight: '600',\n },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n gap: '1em',\n },\n button: { px: 0, py: 1, fontSize: '16px', width: '160px' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetKeyIndividuals.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n loading: PropTypes.bool,\n};\n\nexport default SetKeyIndividuals;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { Form, AutocompleteInput, required } from 'react-admin';\nimport { Box, Stack } from '@mui/material';\nimport { kebabCase } from 'lodash-es';\nimport PropTypes from 'prop-types';\n\nimport {\n serviceTypesIssuingOrInspection,\n credentialTypesByServiceTypes,\n} from '@/utils/serviceTypes.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationService = ({ children, onSubmit, defaultValues, serviceEndpointsOptions }) => {\n const defaultFormData = useMemo(() => {\n if (!defaultValues && serviceEndpointsOptions.length === 1) {\n return { serviceEndpoint: serviceEndpointsOptions?.[0]?.id };\n }\n return defaultValues;\n }, [defaultValues, serviceEndpointsOptions]);\n\n const handleSubmit = useCallback(\n (data) => {\n const type = data.type.match(/.+v1/);\n const kebabType = kebabCase(type[0]);\n onSubmit({\n ...data,\n type: type[0],\n id: `${kebabType}-1`,\n credentialTypes: credentialTypesByServiceTypes[data.type],\n });\n },\n [onSubmit],\n );\n\n const autoCompleteInputProps =\n serviceEndpointsOptions.length === 1 ? { InputProps: { disabled: true } } : {};\n\n return (\n <Form onSubmit={handleSubmit} defaultValues={defaultFormData}>\n <Stack sx={styles.endpointForm}>\n <AutocompleteInput\n label=\"Select service\"\n source=\"type\"\n optionText=\"title\"\n choices={serviceTypesIssuingOrInspection}\n validate={[required()]}\n />\n <AutocompleteInput\n label=\"Service endpoint\"\n source=\"serviceEndpoint\"\n choices={serviceEndpointsOptions}\n TextFieldProps={autoCompleteInputProps}\n validate={[required()]}\n />\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton title=\"Next\" styles={styles.button} />\n </Box>\n </Stack>\n </Form>\n );\n};\n\nconst styles = {\n button: { px: 4, py: 1, fontSize: '16px', width: '160px' },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: '40px',\n flex: 1,\n },\n endpointForm: {\n marginTop: '30px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationService.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n serviceEndpointsOptions: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n }),\n ),\n};\n\nexport default SetInvitationService;\n"],"names":["CREDENTIAL_TYPES_IDS","serviceTypesIssuingOrInspection","useConfig","jsxs","Fragment","jsx","Stack","Box","Typography","chainNames","Link","useState","useCallback","useEffect","Button","ListItem","TablePagination","Grid","Paper","Form","TextInput","required","validateEmail","InputAdornment","styles","OrganizationSubmitButton","Tooltip","ADMINISTRATOR_DETAILS_HINT","maxLength","SIGNATORY_DETAILS_HINT","SIGNATORY_EMAIL_HINT","FormDataConsumer","useMemo","kebabCase","credentialTypesByServiceTypes","AutocompleteInput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SetInvitationService.DNxpakOw.js","sources":["../../src/components/invitations/InvitationServiceInfo.jsx","../../src/components/invitations/InvitationsListContainer.jsx","../../src/components/invitations/SetInvitationEmail.jsx","../../src/components/invitations/SetKeyIndividuals.jsx","../../src/components/invitations/SetInvitationService.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { Stack, Box, Typography, Link } from '@mui/material';\nimport { serviceTypesIssuingOrInspection, CREDENTIAL_TYPES_IDS } from '@/utils/serviceTypes.js';\nimport { chainNames } from '@/utils/chainNames.js';\nimport { useConfig } from '@/utils/ConfigContext.js';\n\nconst getServiceKey = (key) => {\n switch (key) {\n case 'id': {\n return 'Service ID';\n }\n case 'type': {\n return 'Service type';\n }\n case 'serviceEndpoint': {\n return 'Service endpoint';\n }\n\n default:\n return key;\n }\n};\n\nconst getServiceTitle = (value, credentialTypes) => {\n let serviceType;\n if (value === 'VlcContactIssuer_v1') {\n serviceType = credentialTypes.includes('EmailV1.0')\n ? CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_EMAIL\n : CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_PHONE;\n } else {\n serviceType = value;\n }\n return serviceTypesIssuingOrInspection.find((item) => item.id === serviceType).title;\n};\n\nconst InvitationServiceInfo = ({ inviteeService, agreementStyles }) => {\n const config = useConfig();\n return (\n <>\n {inviteeService &&\n inviteeService?.map((service) => {\n return (\n <Stack sx={sxStyles.serviceContainer} key={`service-${service.id}`}>\n {Object.entries(service).map(([serviceKey, value]) => {\n if (serviceKey === 'credentialTypes') {\n return undefined;\n }\n\n const serviceValue =\n serviceKey === 'type' ? getServiceTitle(value, service.credentialTypes) : value;\n\n return (\n <Box key={`service-${service.id}-${serviceKey}`} sx={sxStyles.field}>\n <Typography variant=\"pm\">{getServiceKey(serviceKey)}</Typography>\n <Typography variant=\"h5\" sx={sxStyles.valueText}>\n {serviceValue}\n </Typography>\n </Box>\n );\n })}\n </Stack>\n );\n })}\n {config.chainName !== chainNames.testnet && (\n <Typography variant=\"pm\" sx={[sxStyles.agreement, agreementStyles]}>\n <span>By clicking Save, you agree to our </span>\n <Link\n target=\"_blank\"\n href=\"https://www.velocitynetwork.foundation/main2/participation-agreements\"\n >\n Participant Agreement\n </Link>\n </Typography>\n )}\n </>\n );\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationServiceInfo.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n inviteeService: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n agreementStyles: PropTypes.array,\n};\n\nconst sxStyles = {\n serviceContainer: {\n backgroundColor: (theme) => theme.customColors.grey1,\n borderRadius: '12px',\n p: '32px 40px',\n mt: '25px',\n },\n agreement: {\n color: (theme) => theme.customColors.grey2,\n textAlign: 'center',\n mt: 5,\n display: 'block',\n },\n valueText: {\n marginTop: 1,\n 'overflow-wrap': 'break-word',\n },\n field: {\n marginBottom: 4,\n '&:last-child': {\n marginBottom: 0,\n },\n },\n};\n\nexport default InvitationServiceInfo;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport { Button, Stack, Grid, Paper, Typography, TablePagination } from '@mui/material';\nimport { useCallback, useEffect, useState } from 'react';\nimport ListItem from '../common/ListItem.jsx';\n\nconst getDateAndTimeFormated = (dateString) => {\n const twoDigits = (number) => `0${number}`.slice(-2);\n const date = new Date(dateString);\n return `${date.getFullYear()}-${twoDigits(date.getMonth() + 1)}-${date.getDate()} ${twoDigits(\n date.getHours(),\n )}:${twoDigits(date.getMinutes())}`;\n};\n\nconst ROWS_PER_PAGE = 10;\n\nconst InvitationsListContainer = ({\n invitations,\n withdrawAction,\n resendAction,\n onCreateInvite,\n changePage,\n currentPage,\n invitationToDelete,\n onUndoDelete,\n}) => {\n const [pagesCount, setPagesCount] = useState(-1);\n const getStatus = (invitation) => {\n if (invitation.acceptedAt) {\n return { title: 'ACCEPTED', color: 'primary.success' };\n }\n if (new Date() >= new Date(invitation.expiresAt)) {\n return { title: 'EXPIRED', color: 'primary.main' };\n }\n return { title: 'INVITED', color: 'primary.warning' };\n };\n\n const updatePagination = useCallback(\n (nextPage) => {\n if (invitations.length === ROWS_PER_PAGE || nextPage < currentPage) {\n setPagesCount(-1);\n changePage(nextPage);\n } else {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n },\n [changePage, currentPage, invitations.length],\n );\n\n useEffect(() => {\n if (invitations.length < ROWS_PER_PAGE) {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n }, [currentPage, invitations]);\n\n return (\n <>\n <Stack sx={sx.inviteButton}>\n <Button variant=\"outlined\" onClick={onCreateInvite}>\n Invite Client +\n </Button>\n </Stack>\n\n {!!invitations.length &&\n invitations.map((invitation) => (\n <ListItem\n key={invitation.id}\n id={invitation.id}\n markForDelete={invitationToDelete === invitation.id}\n onUndoDelete={onUndoDelete}\n undoText=\"INVITATION WAS DELETED\"\n title={invitation.inviteeProfile.name}\n status={getStatus(invitation)}\n date={getDateAndTimeFormated(invitation.acceptedAt || invitation.updatedAt)}\n showActions={!invitation.acceptedAt}\n actions={[resendAction, withdrawAction]}\n email={invitation.inviteeEmail}\n content={invitation.inviteeService.map((service) => [\n { name: 'service type', value: service.type },\n {\n name: 'service endpoint',\n value: service.serviceEndpoint,\n },\n ])}\n />\n ))}\n {/* TODO Fix paging after api retun total */}\n {(invitations.length > 0 || currentPage > 0) && (\n <TablePagination\n component=\"div\"\n count={pagesCount}\n page={currentPage}\n onPageChange={(e, nextPage) => updatePagination(nextPage)}\n rowsPerPage={ROWS_PER_PAGE}\n rowsPerPageOptions={[]}\n />\n )}\n\n {!invitations.length && currentPage === 0 && (\n <Grid container>\n <Grid item xs={12}>\n <Paper sx={sx.paper} elevation={1}>\n <Typography sx={sx.text}>\n {'Send your first invitation '}\n <Link to=\"/invitations/create/step-1\">\n <Typography sx={sx.link} component=\"a\">\n now\n </Typography>\n </Link>\n </Typography>\n </Paper>\n </Grid>\n </Grid>\n )}\n </>\n );\n};\n\nexport default InvitationsListContainer;\n\nconst sx = {\n inviteButton: {\n mb: 2,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n },\n paper: {\n height: 158,\n minWidth: 275,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n border: 'none',\n boxShadow: '0px 0px 4px #0000001a, 0px 6px 12px #0000001a',\n },\n text: {\n fontSize: 16,\n textAlign: 'center',\n fontWeight: 600,\n color: 'text.primary',\n },\n link: {\n color: 'primary.main',\n textDecoration: 'underline',\n fontWeight: 600,\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationsListContainer.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n invitations: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n withdrawAction: PropTypes.object,\n // eslint-disable-next-line react/forbid-prop-types\n resendAction: PropTypes.object,\n onCreateInvite: PropTypes.func.isRequired,\n changePage: PropTypes.func.isRequired,\n currentPage: PropTypes.number.isRequired,\n invitationToDelete: PropTypes.string,\n onUndoDelete: PropTypes.func.isRequired,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { Box, InputAdornment } from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Form, TextInput, required } from 'react-admin';\nimport PropTypes from 'prop-types';\n\nimport { validateEmail } from '../organizations/CreateOrganizationUtils.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationEmail = ({ children, onSubmit, defaultValue, loading }) => {\n const [isEmailValid, setIsEmailValid] = useState(false);\n\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit}>\n <TextInput\n fullWidth\n label=\"Email\"\n type=\"email\"\n source=\"inviteeEmail\"\n defaultValue={defaultValue}\n validate={[required(), ...validateEmail]}\n InputProps={{\n endAdornment: isEmailValid ? (\n <InputAdornment position=\"end\">\n <CheckCircleIcon color=\"success\" />\n </InputAdornment>\n ) : null,\n }}\n />\n\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton\n styles={styles.inviteButton}\n title=\"Invite client\"\n handleState={setIsEmailValid}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n },\n backButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n borderColor: 'secondary.light',\n color: 'text.primary',\n },\n inviteButton: {\n width: '160px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationEmail.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n loading: PropTypes.bool,\n};\n\nexport default SetInvitationEmail;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, Stack, Typography, Tooltip, Button } from '@mui/material';\nimport { Form, FormDataConsumer, TextInput, maxLength, required } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport InfoIcon from '@mui/icons-material/Info';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport { validateEmail } from '../organizations/index.jsx';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\nimport {\n ADMINISTRATOR_DETAILS_HINT,\n SIGNATORY_DETAILS_HINT,\n SIGNATORY_EMAIL_HINT,\n} from '../../utils/index.jsx';\n\nconst SetKeyIndividuals = ({ children, onSubmit, defaultValues, onBack, loading }) => {\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit} defaultValues={defaultValues}>\n <Stack>\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Administrator’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={ADMINISTRATOR_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Typography variant=\"body2\" sx={styles.infoText}>\n The invitation will be sent to this email.\n </Typography>\n <TextInput\n fullWidth\n label=\"Email\"\n source=\"adminEmail\"\n validate={[...validateEmail, required()]}\n />\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"adminGivenName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"adminFamilyName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput fullWidth label=\"Job Title\" source=\"adminTitle\" validate={[maxLength(1024)]} />\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Signatory Authority’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={SIGNATORY_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Stack flexDirection=\"row\" gap={1.75}>\n <TextInput fullWidth label=\"Email\" source=\"signatoryEmail\" validate={validateEmail} />\n <Box mt={2}>\n <Tooltip title={SIGNATORY_EMAIL_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"signatoryGivenName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"signatoryFamilyName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Job Title\"\n source=\"signatoryTitle\"\n validate={[maxLength(1024)]}\n />\n </Stack>\n\n <Box sx={styles.buttonBlock}>\n <FormDataConsumer>\n {({ formData }) => (\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.button}\n onClick={() => onBack(formData)}\n startIcon={<KeyboardArrowLeftIcon />}\n >\n Back\n </Button>\n )}\n </FormDataConsumer>\n {children}\n\n <OrganizationSubmitButton\n title=\"Invite Client\"\n styles={styles.button}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n infoText: {\n color: 'primary.main',\n fontWeight: '600',\n marginTop: 1,\n marginBottom: 1.5,\n },\n subTitle: {\n fontSize: '18px',\n fontWeight: '600',\n },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n gap: '1em',\n },\n button: { px: 0, py: 1, fontSize: '16px', width: '160px' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetKeyIndividuals.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n loading: PropTypes.bool,\n};\n\nexport default SetKeyIndividuals;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { Form, AutocompleteInput, required } from 'react-admin';\nimport { Box, Stack } from '@mui/material';\nimport { kebabCase } from 'lodash-es';\nimport PropTypes from 'prop-types';\n\nimport {\n serviceTypesIssuingOrInspection,\n credentialTypesByServiceTypes,\n} from '@/utils/serviceTypes.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationService = ({ children, onSubmit, defaultValues, serviceEndpointsOptions }) => {\n const defaultFormData = useMemo(() => {\n if (!defaultValues && serviceEndpointsOptions.length === 1) {\n return { serviceEndpoint: serviceEndpointsOptions?.[0]?.id };\n }\n return defaultValues;\n }, [defaultValues, serviceEndpointsOptions]);\n\n const handleSubmit = useCallback(\n (data) => {\n const type = data.type.match(/.+v1/);\n const kebabType = kebabCase(type[0]);\n onSubmit({\n ...data,\n type: type[0],\n id: `${kebabType}-1`,\n credentialTypes: credentialTypesByServiceTypes[data.type],\n });\n },\n [onSubmit],\n );\n\n const autoCompleteInputProps =\n serviceEndpointsOptions.length === 1 ? { InputProps: { disabled: true } } : {};\n\n return (\n <Form onSubmit={handleSubmit} defaultValues={defaultFormData}>\n <Stack sx={styles.endpointForm}>\n <AutocompleteInput\n label=\"Select service\"\n source=\"type\"\n optionText=\"title\"\n choices={serviceTypesIssuingOrInspection}\n validate={[required()]}\n />\n <AutocompleteInput\n label=\"Service endpoint\"\n source=\"serviceEndpoint\"\n choices={serviceEndpointsOptions}\n TextFieldProps={autoCompleteInputProps}\n validate={[required()]}\n />\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton title=\"Next\" styles={styles.button} />\n </Box>\n </Stack>\n </Form>\n );\n};\n\nconst styles = {\n button: { px: 4, py: 1, fontSize: '16px', width: '160px' },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: '40px',\n flex: 1,\n },\n endpointForm: {\n marginTop: '30px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationService.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n serviceEndpointsOptions: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n }),\n ),\n};\n\nexport default SetInvitationService;\n"],"names":["CREDENTIAL_TYPES_IDS","serviceTypesIssuingOrInspection","useConfig","jsxs","Fragment","jsx","Stack","Box","Typography","chainNames","Link","useState","useCallback","useEffect","Button","ListItem","TablePagination","Grid","Paper","Form","TextInput","required","validateEmail","InputAdornment","styles","OrganizationSubmitButton","Tooltip","ADMINISTRATOR_DETAILS_HINT","maxLength","SIGNATORY_DETAILS_HINT","SIGNATORY_EMAIL_HINT","FormDataConsumer","useMemo","kebabCase","credentialTypesByServiceTypes","AutocompleteInput"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { c as chainNames } from "./chainNames.DRzS8u_K.js";
|
|
|
6
6
|
import { u as useConfig } from "./ConfigContext.Cd8KjWqG.js";
|
|
7
7
|
import { Link as Link$1 } from "react-router";
|
|
8
8
|
import { useState, useCallback, useEffect, useMemo } from "react";
|
|
9
|
-
import { L as ListItem } from "./ListItem.
|
|
9
|
+
import { L as ListItem } from "./ListItem.B2OnXvbO.js";
|
|
10
10
|
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
|
|
11
11
|
import { Form, TextInput, required, maxLength, FormDataConsumer, AutocompleteInput } from "react-admin";
|
|
12
12
|
import { d as validateEmail } from "./CreateOrganizationUtils.Xq78HHkP.js";
|
|
@@ -479,4 +479,4 @@ export {
|
|
|
479
479
|
SetKeyIndividuals as b,
|
|
480
480
|
SetInvitationService as c
|
|
481
481
|
};
|
|
482
|
-
//# sourceMappingURL=SetInvitationService.
|
|
482
|
+
//# sourceMappingURL=SetInvitationService.uZHd9L4x.js.map
|
package/dist/chunks/{SetInvitationService.DtVH6OkH.js.map → SetInvitationService.uZHd9L4x.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetInvitationService.DtVH6OkH.js","sources":["../../src/components/invitations/InvitationServiceInfo.jsx","../../src/components/invitations/InvitationsListContainer.jsx","../../src/components/invitations/SetInvitationEmail.jsx","../../src/components/invitations/SetKeyIndividuals.jsx","../../src/components/invitations/SetInvitationService.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { Stack, Box, Typography, Link } from '@mui/material';\nimport { serviceTypesIssuingOrInspection, CREDENTIAL_TYPES_IDS } from '@/utils/serviceTypes.js';\nimport { chainNames } from '@/utils/chainNames.js';\nimport { useConfig } from '@/utils/ConfigContext.js';\n\nconst getServiceKey = (key) => {\n switch (key) {\n case 'id': {\n return 'Service ID';\n }\n case 'type': {\n return 'Service type';\n }\n case 'serviceEndpoint': {\n return 'Service endpoint';\n }\n\n default:\n return key;\n }\n};\n\nconst getServiceTitle = (value, credentialTypes) => {\n let serviceType;\n if (value === 'VlcContactIssuer_v1') {\n serviceType = credentialTypes.includes('EmailV1.0')\n ? CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_EMAIL\n : CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_PHONE;\n } else {\n serviceType = value;\n }\n return serviceTypesIssuingOrInspection.find((item) => item.id === serviceType).title;\n};\n\nconst InvitationServiceInfo = ({ inviteeService, agreementStyles }) => {\n const config = useConfig();\n return (\n <>\n {inviteeService &&\n inviteeService?.map((service) => {\n return (\n <Stack sx={sxStyles.serviceContainer} key={`service-${service.id}`}>\n {Object.entries(service).map(([serviceKey, value]) => {\n if (serviceKey === 'credentialTypes') {\n return undefined;\n }\n\n const serviceValue =\n serviceKey === 'type' ? getServiceTitle(value, service.credentialTypes) : value;\n\n return (\n <Box key={`service-${service.id}-${serviceKey}`} sx={sxStyles.field}>\n <Typography variant=\"pm\">{getServiceKey(serviceKey)}</Typography>\n <Typography variant=\"h5\" sx={sxStyles.valueText}>\n {serviceValue}\n </Typography>\n </Box>\n );\n })}\n </Stack>\n );\n })}\n {config.chainName !== chainNames.testnet && (\n <Typography variant=\"pm\" sx={[sxStyles.agreement, agreementStyles]}>\n <span>By clicking Save, you agree to our </span>\n <Link\n target=\"_blank\"\n href=\"https://www.velocitynetwork.foundation/main2/participation-agreements\"\n >\n Participant Agreement\n </Link>\n </Typography>\n )}\n </>\n );\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationServiceInfo.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n inviteeService: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n agreementStyles: PropTypes.array,\n};\n\nconst sxStyles = {\n serviceContainer: {\n backgroundColor: (theme) => theme.customColors.grey1,\n borderRadius: '12px',\n p: '32px 40px',\n mt: '25px',\n },\n agreement: {\n color: (theme) => theme.customColors.grey2,\n textAlign: 'center',\n mt: 5,\n display: 'block',\n },\n valueText: {\n marginTop: 1,\n 'overflow-wrap': 'break-word',\n },\n field: {\n marginBottom: 4,\n '&:last-child': {\n marginBottom: 0,\n },\n },\n};\n\nexport default InvitationServiceInfo;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport { Button, Stack, Grid, Paper, Typography, TablePagination } from '@mui/material';\nimport { useCallback, useEffect, useState } from 'react';\nimport ListItem from '../common/ListItem.jsx';\n\nconst getDateAndTimeFormated = (dateString) => {\n const twoDigits = (number) => `0${number}`.slice(-2);\n const date = new Date(dateString);\n return `${date.getFullYear()}-${twoDigits(date.getMonth() + 1)}-${date.getDate()} ${twoDigits(\n date.getHours(),\n )}:${twoDigits(date.getMinutes())}`;\n};\n\nconst ROWS_PER_PAGE = 10;\n\nconst InvitationsListContainer = ({\n invitations,\n withdrawAction,\n resendAction,\n onCreateInvite,\n changePage,\n currentPage,\n invitationToDelete,\n onUndoDelete,\n}) => {\n const [pagesCount, setPagesCount] = useState(-1);\n const getStatus = (invitation) => {\n if (invitation.acceptedAt) {\n return { title: 'ACCEPTED', color: 'primary.success' };\n }\n if (new Date() >= new Date(invitation.expiresAt)) {\n return { title: 'EXPIRED', color: 'primary.main' };\n }\n return { title: 'INVITED', color: 'primary.warning' };\n };\n\n const updatePagination = useCallback(\n (nextPage) => {\n if (invitations.length === ROWS_PER_PAGE || nextPage < currentPage) {\n setPagesCount(-1);\n changePage(nextPage);\n } else {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n },\n [changePage, currentPage, invitations.length],\n );\n\n useEffect(() => {\n if (invitations.length < ROWS_PER_PAGE) {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n }, [currentPage, invitations]);\n\n return (\n <>\n <Stack sx={sx.inviteButton}>\n <Button variant=\"outlined\" onClick={onCreateInvite}>\n Invite Client +\n </Button>\n </Stack>\n\n {!!invitations.length &&\n invitations.map((invitation) => (\n <ListItem\n key={invitation.id}\n id={invitation.id}\n markForDelete={invitationToDelete === invitation.id}\n onUndoDelete={onUndoDelete}\n undoText=\"INVITATION WAS DELETED\"\n title={invitation.inviteeProfile.name}\n status={getStatus(invitation)}\n date={getDateAndTimeFormated(invitation.acceptedAt || invitation.updatedAt)}\n showActions={!invitation.acceptedAt}\n actions={[resendAction, withdrawAction]}\n email={invitation.inviteeEmail}\n content={invitation.inviteeService.map((service) => [\n { name: 'service type', value: service.type },\n {\n name: 'service endpoint',\n value: service.serviceEndpoint,\n },\n ])}\n />\n ))}\n {/* TODO Fix paging after api retun total */}\n {(invitations.length > 0 || currentPage > 0) && (\n <TablePagination\n component=\"div\"\n count={pagesCount}\n page={currentPage}\n onPageChange={(e, nextPage) => updatePagination(nextPage)}\n rowsPerPage={ROWS_PER_PAGE}\n rowsPerPageOptions={[]}\n />\n )}\n\n {!invitations.length && currentPage === 0 && (\n <Grid container>\n <Grid item xs={12}>\n <Paper sx={sx.paper} elevation={1}>\n <Typography sx={sx.text}>\n {'Send your first invitation '}\n <Link to=\"/invitations/create/step-1\">\n <Typography sx={sx.link} component=\"a\">\n now\n </Typography>\n </Link>\n </Typography>\n </Paper>\n </Grid>\n </Grid>\n )}\n </>\n );\n};\n\nexport default InvitationsListContainer;\n\nconst sx = {\n inviteButton: {\n mb: 2,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n },\n paper: {\n height: 158,\n minWidth: 275,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n border: 'none',\n boxShadow: '0px 0px 4px #0000001a, 0px 6px 12px #0000001a',\n },\n text: {\n fontSize: 16,\n textAlign: 'center',\n fontWeight: 600,\n color: 'text.primary',\n },\n link: {\n color: 'primary.main',\n textDecoration: 'underline',\n fontWeight: 600,\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationsListContainer.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n invitations: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n withdrawAction: PropTypes.object,\n // eslint-disable-next-line react/forbid-prop-types\n resendAction: PropTypes.object,\n onCreateInvite: PropTypes.func.isRequired,\n changePage: PropTypes.func.isRequired,\n currentPage: PropTypes.number.isRequired,\n invitationToDelete: PropTypes.string,\n onUndoDelete: PropTypes.func.isRequired,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { Box, InputAdornment } from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Form, TextInput, required } from 'react-admin';\nimport PropTypes from 'prop-types';\n\nimport { validateEmail } from '../organizations/CreateOrganizationUtils.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationEmail = ({ children, onSubmit, defaultValue, loading }) => {\n const [isEmailValid, setIsEmailValid] = useState(false);\n\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit}>\n <TextInput\n fullWidth\n label=\"Email\"\n type=\"email\"\n source=\"inviteeEmail\"\n defaultValue={defaultValue}\n validate={[required(), ...validateEmail]}\n InputProps={{\n endAdornment: isEmailValid ? (\n <InputAdornment position=\"end\">\n <CheckCircleIcon color=\"success\" />\n </InputAdornment>\n ) : null,\n }}\n />\n\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton\n styles={styles.inviteButton}\n title=\"Invite client\"\n handleState={setIsEmailValid}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n },\n backButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n borderColor: 'secondary.light',\n color: 'text.primary',\n },\n inviteButton: {\n width: '160px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationEmail.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n loading: PropTypes.bool,\n};\n\nexport default SetInvitationEmail;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, Stack, Typography, Tooltip, Button } from '@mui/material';\nimport { Form, FormDataConsumer, TextInput, maxLength, required } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport InfoIcon from '@mui/icons-material/Info';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport { validateEmail } from '../organizations/index.jsx';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\nimport {\n ADMINISTRATOR_DETAILS_HINT,\n SIGNATORY_DETAILS_HINT,\n SIGNATORY_EMAIL_HINT,\n} from '../../utils/index.jsx';\n\nconst SetKeyIndividuals = ({ children, onSubmit, defaultValues, onBack, loading }) => {\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit} defaultValues={defaultValues}>\n <Stack>\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Administrator’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={ADMINISTRATOR_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Typography variant=\"body2\" sx={styles.infoText}>\n The invitation will be sent to this email.\n </Typography>\n <TextInput\n fullWidth\n label=\"Email\"\n source=\"adminEmail\"\n validate={[...validateEmail, required()]}\n />\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"adminGivenName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"adminFamilyName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput fullWidth label=\"Job Title\" source=\"adminTitle\" validate={[maxLength(1024)]} />\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Signatory Authority’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={SIGNATORY_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Stack flexDirection=\"row\" gap={1.75}>\n <TextInput fullWidth label=\"Email\" source=\"signatoryEmail\" validate={validateEmail} />\n <Box mt={2}>\n <Tooltip title={SIGNATORY_EMAIL_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"signatoryGivenName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"signatoryFamilyName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Job Title\"\n source=\"signatoryTitle\"\n validate={[maxLength(1024)]}\n />\n </Stack>\n\n <Box sx={styles.buttonBlock}>\n <FormDataConsumer>\n {({ formData }) => (\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.button}\n onClick={() => onBack(formData)}\n startIcon={<KeyboardArrowLeftIcon />}\n >\n Back\n </Button>\n )}\n </FormDataConsumer>\n {children}\n\n <OrganizationSubmitButton\n title=\"Invite Client\"\n styles={styles.button}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n infoText: {\n color: 'primary.main',\n fontWeight: '600',\n marginTop: 1,\n marginBottom: 1.5,\n },\n subTitle: {\n fontSize: '18px',\n fontWeight: '600',\n },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n gap: '1em',\n },\n button: { px: 0, py: 1, fontSize: '16px', width: '160px' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetKeyIndividuals.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n loading: PropTypes.bool,\n};\n\nexport default SetKeyIndividuals;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { Form, AutocompleteInput, required } from 'react-admin';\nimport { Box, Stack } from '@mui/material';\nimport { kebabCase } from 'lodash-es';\nimport PropTypes from 'prop-types';\n\nimport {\n serviceTypesIssuingOrInspection,\n credentialTypesByServiceTypes,\n} from '@/utils/serviceTypes.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationService = ({ children, onSubmit, defaultValues, serviceEndpointsOptions }) => {\n const defaultFormData = useMemo(() => {\n if (!defaultValues && serviceEndpointsOptions.length === 1) {\n return { serviceEndpoint: serviceEndpointsOptions?.[0]?.id };\n }\n return defaultValues;\n }, [defaultValues, serviceEndpointsOptions]);\n\n const handleSubmit = useCallback(\n (data) => {\n const type = data.type.match(/.+v1/);\n const kebabType = kebabCase(type[0]);\n onSubmit({\n ...data,\n type: type[0],\n id: `${kebabType}-1`,\n credentialTypes: credentialTypesByServiceTypes[data.type],\n });\n },\n [onSubmit],\n );\n\n const autoCompleteInputProps =\n serviceEndpointsOptions.length === 1 ? { InputProps: { disabled: true } } : {};\n\n return (\n <Form onSubmit={handleSubmit} defaultValues={defaultFormData}>\n <Stack sx={styles.endpointForm}>\n <AutocompleteInput\n label=\"Select service\"\n source=\"type\"\n optionText=\"title\"\n choices={serviceTypesIssuingOrInspection}\n validate={[required()]}\n />\n <AutocompleteInput\n label=\"Service endpoint\"\n source=\"serviceEndpoint\"\n choices={serviceEndpointsOptions}\n TextFieldProps={autoCompleteInputProps}\n validate={[required()]}\n />\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton title=\"Next\" styles={styles.button} />\n </Box>\n </Stack>\n </Form>\n );\n};\n\nconst styles = {\n button: { px: 4, py: 1, fontSize: '16px', width: '160px' },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: '40px',\n flex: 1,\n },\n endpointForm: {\n marginTop: '30px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationService.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n serviceEndpointsOptions: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n }),\n ),\n};\n\nexport default SetInvitationService;\n"],"names":["Link","styles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SetInvitationService.uZHd9L4x.js","sources":["../../src/components/invitations/InvitationServiceInfo.jsx","../../src/components/invitations/InvitationsListContainer.jsx","../../src/components/invitations/SetInvitationEmail.jsx","../../src/components/invitations/SetKeyIndividuals.jsx","../../src/components/invitations/SetInvitationService.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { Stack, Box, Typography, Link } from '@mui/material';\nimport { serviceTypesIssuingOrInspection, CREDENTIAL_TYPES_IDS } from '@/utils/serviceTypes.js';\nimport { chainNames } from '@/utils/chainNames.js';\nimport { useConfig } from '@/utils/ConfigContext.js';\n\nconst getServiceKey = (key) => {\n switch (key) {\n case 'id': {\n return 'Service ID';\n }\n case 'type': {\n return 'Service type';\n }\n case 'serviceEndpoint': {\n return 'Service endpoint';\n }\n\n default:\n return key;\n }\n};\n\nconst getServiceTitle = (value, credentialTypes) => {\n let serviceType;\n if (value === 'VlcContactIssuer_v1') {\n serviceType = credentialTypes.includes('EmailV1.0')\n ? CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_EMAIL\n : CREDENTIAL_TYPES_IDS.VLC_CONTACT_ISSUER_PHONE;\n } else {\n serviceType = value;\n }\n return serviceTypesIssuingOrInspection.find((item) => item.id === serviceType).title;\n};\n\nconst InvitationServiceInfo = ({ inviteeService, agreementStyles }) => {\n const config = useConfig();\n return (\n <>\n {inviteeService &&\n inviteeService?.map((service) => {\n return (\n <Stack sx={sxStyles.serviceContainer} key={`service-${service.id}`}>\n {Object.entries(service).map(([serviceKey, value]) => {\n if (serviceKey === 'credentialTypes') {\n return undefined;\n }\n\n const serviceValue =\n serviceKey === 'type' ? getServiceTitle(value, service.credentialTypes) : value;\n\n return (\n <Box key={`service-${service.id}-${serviceKey}`} sx={sxStyles.field}>\n <Typography variant=\"pm\">{getServiceKey(serviceKey)}</Typography>\n <Typography variant=\"h5\" sx={sxStyles.valueText}>\n {serviceValue}\n </Typography>\n </Box>\n );\n })}\n </Stack>\n );\n })}\n {config.chainName !== chainNames.testnet && (\n <Typography variant=\"pm\" sx={[sxStyles.agreement, agreementStyles]}>\n <span>By clicking Save, you agree to our </span>\n <Link\n target=\"_blank\"\n href=\"https://www.velocitynetwork.foundation/main2/participation-agreements\"\n >\n Participant Agreement\n </Link>\n </Typography>\n )}\n </>\n );\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationServiceInfo.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n inviteeService: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n agreementStyles: PropTypes.array,\n};\n\nconst sxStyles = {\n serviceContainer: {\n backgroundColor: (theme) => theme.customColors.grey1,\n borderRadius: '12px',\n p: '32px 40px',\n mt: '25px',\n },\n agreement: {\n color: (theme) => theme.customColors.grey2,\n textAlign: 'center',\n mt: 5,\n display: 'block',\n },\n valueText: {\n marginTop: 1,\n 'overflow-wrap': 'break-word',\n },\n field: {\n marginBottom: 4,\n '&:last-child': {\n marginBottom: 0,\n },\n },\n};\n\nexport default InvitationServiceInfo;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport { Button, Stack, Grid, Paper, Typography, TablePagination } from '@mui/material';\nimport { useCallback, useEffect, useState } from 'react';\nimport ListItem from '../common/ListItem.jsx';\n\nconst getDateAndTimeFormated = (dateString) => {\n const twoDigits = (number) => `0${number}`.slice(-2);\n const date = new Date(dateString);\n return `${date.getFullYear()}-${twoDigits(date.getMonth() + 1)}-${date.getDate()} ${twoDigits(\n date.getHours(),\n )}:${twoDigits(date.getMinutes())}`;\n};\n\nconst ROWS_PER_PAGE = 10;\n\nconst InvitationsListContainer = ({\n invitations,\n withdrawAction,\n resendAction,\n onCreateInvite,\n changePage,\n currentPage,\n invitationToDelete,\n onUndoDelete,\n}) => {\n const [pagesCount, setPagesCount] = useState(-1);\n const getStatus = (invitation) => {\n if (invitation.acceptedAt) {\n return { title: 'ACCEPTED', color: 'primary.success' };\n }\n if (new Date() >= new Date(invitation.expiresAt)) {\n return { title: 'EXPIRED', color: 'primary.main' };\n }\n return { title: 'INVITED', color: 'primary.warning' };\n };\n\n const updatePagination = useCallback(\n (nextPage) => {\n if (invitations.length === ROWS_PER_PAGE || nextPage < currentPage) {\n setPagesCount(-1);\n changePage(nextPage);\n } else {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n },\n [changePage, currentPage, invitations.length],\n );\n\n useEffect(() => {\n if (invitations.length < ROWS_PER_PAGE) {\n setPagesCount(currentPage * ROWS_PER_PAGE + invitations.length);\n }\n }, [currentPage, invitations]);\n\n return (\n <>\n <Stack sx={sx.inviteButton}>\n <Button variant=\"outlined\" onClick={onCreateInvite}>\n Invite Client +\n </Button>\n </Stack>\n\n {!!invitations.length &&\n invitations.map((invitation) => (\n <ListItem\n key={invitation.id}\n id={invitation.id}\n markForDelete={invitationToDelete === invitation.id}\n onUndoDelete={onUndoDelete}\n undoText=\"INVITATION WAS DELETED\"\n title={invitation.inviteeProfile.name}\n status={getStatus(invitation)}\n date={getDateAndTimeFormated(invitation.acceptedAt || invitation.updatedAt)}\n showActions={!invitation.acceptedAt}\n actions={[resendAction, withdrawAction]}\n email={invitation.inviteeEmail}\n content={invitation.inviteeService.map((service) => [\n { name: 'service type', value: service.type },\n {\n name: 'service endpoint',\n value: service.serviceEndpoint,\n },\n ])}\n />\n ))}\n {/* TODO Fix paging after api retun total */}\n {(invitations.length > 0 || currentPage > 0) && (\n <TablePagination\n component=\"div\"\n count={pagesCount}\n page={currentPage}\n onPageChange={(e, nextPage) => updatePagination(nextPage)}\n rowsPerPage={ROWS_PER_PAGE}\n rowsPerPageOptions={[]}\n />\n )}\n\n {!invitations.length && currentPage === 0 && (\n <Grid container>\n <Grid item xs={12}>\n <Paper sx={sx.paper} elevation={1}>\n <Typography sx={sx.text}>\n {'Send your first invitation '}\n <Link to=\"/invitations/create/step-1\">\n <Typography sx={sx.link} component=\"a\">\n now\n </Typography>\n </Link>\n </Typography>\n </Paper>\n </Grid>\n </Grid>\n )}\n </>\n );\n};\n\nexport default InvitationsListContainer;\n\nconst sx = {\n inviteButton: {\n mb: 2,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n },\n paper: {\n height: 158,\n minWidth: 275,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n border: 'none',\n boxShadow: '0px 0px 4px #0000001a, 0px 6px 12px #0000001a',\n },\n text: {\n fontSize: 16,\n textAlign: 'center',\n fontWeight: 600,\n color: 'text.primary',\n },\n link: {\n color: 'primary.main',\n textDecoration: 'underline',\n fontWeight: 600,\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationsListContainer.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n invitations: PropTypes.array,\n // eslint-disable-next-line react/forbid-prop-types\n withdrawAction: PropTypes.object,\n // eslint-disable-next-line react/forbid-prop-types\n resendAction: PropTypes.object,\n onCreateInvite: PropTypes.func.isRequired,\n changePage: PropTypes.func.isRequired,\n currentPage: PropTypes.number.isRequired,\n invitationToDelete: PropTypes.string,\n onUndoDelete: PropTypes.func.isRequired,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { Box, InputAdornment } from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Form, TextInput, required } from 'react-admin';\nimport PropTypes from 'prop-types';\n\nimport { validateEmail } from '../organizations/CreateOrganizationUtils.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationEmail = ({ children, onSubmit, defaultValue, loading }) => {\n const [isEmailValid, setIsEmailValid] = useState(false);\n\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit}>\n <TextInput\n fullWidth\n label=\"Email\"\n type=\"email\"\n source=\"inviteeEmail\"\n defaultValue={defaultValue}\n validate={[required(), ...validateEmail]}\n InputProps={{\n endAdornment: isEmailValid ? (\n <InputAdornment position=\"end\">\n <CheckCircleIcon color=\"success\" />\n </InputAdornment>\n ) : null,\n }}\n />\n\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton\n styles={styles.inviteButton}\n title=\"Invite client\"\n handleState={setIsEmailValid}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n },\n backButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n borderColor: 'secondary.light',\n color: 'text.primary',\n },\n inviteButton: {\n width: '160px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationEmail.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n loading: PropTypes.bool,\n};\n\nexport default SetInvitationEmail;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, Stack, Typography, Tooltip, Button } from '@mui/material';\nimport { Form, FormDataConsumer, TextInput, maxLength, required } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport InfoIcon from '@mui/icons-material/Info';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport { validateEmail } from '../organizations/index.jsx';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\nimport {\n ADMINISTRATOR_DETAILS_HINT,\n SIGNATORY_DETAILS_HINT,\n SIGNATORY_EMAIL_HINT,\n} from '../../utils/index.jsx';\n\nconst SetKeyIndividuals = ({ children, onSubmit, defaultValues, onBack, loading }) => {\n return (\n <Form mode=\"onChange\" onSubmit={onSubmit} defaultValues={defaultValues}>\n <Stack>\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Administrator’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={ADMINISTRATOR_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Typography variant=\"body2\" sx={styles.infoText}>\n The invitation will be sent to this email.\n </Typography>\n <TextInput\n fullWidth\n label=\"Email\"\n source=\"adminEmail\"\n validate={[...validateEmail, required()]}\n />\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"adminGivenName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"adminFamilyName\"\n validate={[maxLength(1024), required()]}\n />\n <TextInput fullWidth label=\"Job Title\" source=\"adminTitle\" validate={[maxLength(1024)]} />\n <Stack direction=\"row\" spacing={1.5} my={2}>\n <Typography variant=\"h4\" sx={styles.subTitle}>\n Signatory Authority’s Details\n </Typography>\n <Box mt={1}>\n <Tooltip title={SIGNATORY_DETAILS_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <Stack flexDirection=\"row\" gap={1.75}>\n <TextInput fullWidth label=\"Email\" source=\"signatoryEmail\" validate={validateEmail} />\n <Box mt={2}>\n <Tooltip title={SIGNATORY_EMAIL_HINT}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n <TextInput\n fullWidth\n label=\"First name\"\n source=\"signatoryGivenName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Last name\"\n source=\"signatoryFamilyName\"\n validate={[maxLength(1024)]}\n />\n <TextInput\n fullWidth\n label=\"Job Title\"\n source=\"signatoryTitle\"\n validate={[maxLength(1024)]}\n />\n </Stack>\n\n <Box sx={styles.buttonBlock}>\n <FormDataConsumer>\n {({ formData }) => (\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.button}\n onClick={() => onBack(formData)}\n startIcon={<KeyboardArrowLeftIcon />}\n >\n Back\n </Button>\n )}\n </FormDataConsumer>\n {children}\n\n <OrganizationSubmitButton\n title=\"Invite Client\"\n styles={styles.button}\n isLoading={loading}\n />\n </Box>\n </Form>\n );\n};\n\nconst styles = {\n infoText: {\n color: 'primary.main',\n fontWeight: '600',\n marginTop: 1,\n marginBottom: 1.5,\n },\n subTitle: {\n fontSize: '18px',\n fontWeight: '600',\n },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: 2,\n flex: 1,\n gap: '1em',\n },\n button: { px: 0, py: 1, fontSize: '16px', width: '160px' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetKeyIndividuals.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n loading: PropTypes.bool,\n};\n\nexport default SetKeyIndividuals;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { Form, AutocompleteInput, required } from 'react-admin';\nimport { Box, Stack } from '@mui/material';\nimport { kebabCase } from 'lodash-es';\nimport PropTypes from 'prop-types';\n\nimport {\n serviceTypesIssuingOrInspection,\n credentialTypesByServiceTypes,\n} from '@/utils/serviceTypes.js';\nimport OrganizationSubmitButton from '../organizations/OrganizationSubmitButton.jsx';\n\nconst SetInvitationService = ({ children, onSubmit, defaultValues, serviceEndpointsOptions }) => {\n const defaultFormData = useMemo(() => {\n if (!defaultValues && serviceEndpointsOptions.length === 1) {\n return { serviceEndpoint: serviceEndpointsOptions?.[0]?.id };\n }\n return defaultValues;\n }, [defaultValues, serviceEndpointsOptions]);\n\n const handleSubmit = useCallback(\n (data) => {\n const type = data.type.match(/.+v1/);\n const kebabType = kebabCase(type[0]);\n onSubmit({\n ...data,\n type: type[0],\n id: `${kebabType}-1`,\n credentialTypes: credentialTypesByServiceTypes[data.type],\n });\n },\n [onSubmit],\n );\n\n const autoCompleteInputProps =\n serviceEndpointsOptions.length === 1 ? { InputProps: { disabled: true } } : {};\n\n return (\n <Form onSubmit={handleSubmit} defaultValues={defaultFormData}>\n <Stack sx={styles.endpointForm}>\n <AutocompleteInput\n label=\"Select service\"\n source=\"type\"\n optionText=\"title\"\n choices={serviceTypesIssuingOrInspection}\n validate={[required()]}\n />\n <AutocompleteInput\n label=\"Service endpoint\"\n source=\"serviceEndpoint\"\n choices={serviceEndpointsOptions}\n TextFieldProps={autoCompleteInputProps}\n validate={[required()]}\n />\n <Box sx={styles.buttonBlock}>\n {children}\n <OrganizationSubmitButton title=\"Next\" styles={styles.button} />\n </Box>\n </Stack>\n </Form>\n );\n};\n\nconst styles = {\n button: { px: 4, py: 1, fontSize: '16px', width: '160px' },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: '40px',\n flex: 1,\n },\n endpointForm: {\n marginTop: '30px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSetInvitationService.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n defaultValues: PropTypes.object,\n serviceEndpointsOptions: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n }),\n ),\n};\n\nexport default SetInvitationService;\n"],"names":["Link","styles"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const index = require("../chunks/index.Cjk52g3G.js");
|
|
4
|
-
const ListItem = require("../chunks/ListItem.
|
|
4
|
+
const ListItem = require("../chunks/ListItem.B4gMNvxv.js");
|
|
5
5
|
const CustomDropDown = require("../chunks/CustomDropDown.rP9eQtKr.js");
|
|
6
6
|
const jsxRuntime = require("react/jsx-runtime");
|
|
7
7
|
const material = require("@mui/material");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { C } from "../chunks/index.CaxYybSL.js";
|
|
2
|
-
import { C as C2, L } from "../chunks/ListItem.
|
|
2
|
+
import { C as C2, L } from "../chunks/ListItem.B2OnXvbO.js";
|
|
3
3
|
import { C as C3 } from "../chunks/CustomDropDown.DS_ln3ym.js";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { List, ListItemButton, Typography, Checkbox } from "@mui/material";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const SetInvitationService = require("../chunks/SetInvitationService.
|
|
3
|
+
const SetInvitationService = require("../chunks/SetInvitationService.DNxpakOw.js");
|
|
4
4
|
exports.InvitationServiceInfo = SetInvitationService.InvitationServiceInfo;
|
|
5
5
|
exports.InvitationsListContainer = SetInvitationService.InvitationsListContainer;
|
|
6
6
|
exports.SetInvitationEmail = SetInvitationService.SetInvitationEmail;
|
|
@@ -10,7 +10,7 @@ const React = require("react");
|
|
|
10
10
|
const PropTypes = require("prop-types");
|
|
11
11
|
const theme = require("../chunks/theme.CDQ6GHCD.js");
|
|
12
12
|
const ValidateTextInput = require("../chunks/ValidateTextInput.DPruGgff.js");
|
|
13
|
-
const SetInvitationService = require("../chunks/SetInvitationService.
|
|
13
|
+
const SetInvitationService = require("../chunks/SetInvitationService.DNxpakOw.js");
|
|
14
14
|
const Popup = require("../chunks/Popup.H_MqnNtr.js");
|
|
15
15
|
const Loading = require("../chunks/Loading.cGHE59CV.js");
|
|
16
16
|
const constants = require("../constants.cjs");
|
|
@@ -8,7 +8,7 @@ import { useState, useEffect, useCallback, useMemo, useRef } from "react";
|
|
|
8
8
|
import PropTypes from "prop-types";
|
|
9
9
|
import { F as FOOTER_HEIGHT } from "../chunks/theme.CYcVcsx-.js";
|
|
10
10
|
import { a as CreateOrganization, C as CreateInvitationForOrganization } from "../chunks/ValidateTextInput.1Fv1GPyZ.js";
|
|
11
|
-
import { I as InvitationServiceInfo, c as SetInvitationService, b as SetKeyIndividuals, S as SetInvitationEmail, a as InvitationsListContainer } from "../chunks/SetInvitationService.
|
|
11
|
+
import { I as InvitationServiceInfo, c as SetInvitationService, b as SetKeyIndividuals, S as SetInvitationEmail, a as InvitationsListContainer } from "../chunks/SetInvitationService.uZHd9L4x.js";
|
|
12
12
|
import { P as Popup } from "../chunks/Popup.C5odWCD_.js";
|
|
13
13
|
import { L as Loading } from "../chunks/Loading.Bcm3xNJU.js";
|
|
14
14
|
import { MESSAGE_CODES } from "../constants.js";
|
package/dist/pages/services.cjs
CHANGED
|
@@ -15,15 +15,15 @@ const material = require("@mui/material");
|
|
|
15
15
|
const EditIcon = require("@mui/icons-material/Edit");
|
|
16
16
|
const DeleteIcon = require("@mui/icons-material/Delete");
|
|
17
17
|
const lodashEs = require("lodash-es");
|
|
18
|
-
const ListItem = require("../chunks/ListItem.
|
|
18
|
+
const ListItem = require("../chunks/ListItem.B4gMNvxv.js");
|
|
19
19
|
const Loading = require("../chunks/Loading.cGHE59CV.js");
|
|
20
20
|
const ServicesEdit = require("../chunks/ServicesEdit.CrmS66vz.js");
|
|
21
21
|
const participantAgreementState = require("../chunks/participantAgreementState.DwmEQmuZ.js");
|
|
22
22
|
const serviceTypes = require("../chunks/serviceTypes.BWVBK33e.js");
|
|
23
|
-
const buildServiceContent = (item, title) => {
|
|
23
|
+
const buildServiceContent = (item, title, isLink = false) => {
|
|
24
24
|
if (!item) return [];
|
|
25
25
|
const value = Array.isArray(item) ? item.join(", ") : item;
|
|
26
|
-
return [{ name: title, value }];
|
|
26
|
+
return [{ name: title, value, isLink }];
|
|
27
27
|
};
|
|
28
28
|
const defaultAuthClient = { clientSecret: "", clientId: "" };
|
|
29
29
|
const ServiceCreateForm = ({ onServiceCreated, services, InterceptOnCreate }) => {
|
|
@@ -325,10 +325,11 @@ const ServicesList = ({
|
|
|
325
325
|
actions: [editAction, deleteAction],
|
|
326
326
|
content: [
|
|
327
327
|
[
|
|
328
|
-
{ name: "service id", value: service.id },
|
|
329
|
-
{ name: "service endpoint", value: service.serviceEndpoint },
|
|
328
|
+
{ name: "service id", value: service.id, isLink: false },
|
|
329
|
+
{ name: "service endpoint", value: service.serviceEndpoint, isLink: false },
|
|
330
330
|
...buildServiceContent(service.credentialTypes, "credential types"),
|
|
331
331
|
...buildServiceContent(service.name, "wallet name"),
|
|
332
|
+
...buildServiceContent(service.logoUrl, "logo url", true),
|
|
332
333
|
...buildServiceContent(service.supportedExchangeProtocols, "protocols"),
|
|
333
334
|
...buildServiceContent(service.playStoreUrl, "play store url"),
|
|
334
335
|
...buildServiceContent(service.googlePlayId, "google play id"),
|
|
@@ -337,7 +338,8 @@ const ServicesList = ({
|
|
|
337
338
|
...AdditionalServiceProperties && AdditionalServiceProperties[service.type] ? [
|
|
338
339
|
{
|
|
339
340
|
name: AdditionalServiceProperties[service.type]?.name,
|
|
340
|
-
value: AdditionalServiceProperties[service.type]?.value
|
|
341
|
+
value: AdditionalServiceProperties[service.type]?.value,
|
|
342
|
+
isLink: AdditionalServiceProperties[service.type]?.isLink || false
|
|
341
343
|
}
|
|
342
344
|
] : []
|
|
343
345
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.cjs","sources":["../../src/pages/services/utils/buildServiceContent.js","../../src/pages/services/ServiceCreateForm.jsx","../../src/pages/services/useDeleteService.js","../../src/pages/services/ServicesList.jsx"],"sourcesContent":["export const buildServiceContent = (item, title) => {\n if (!item) return [];\n\n const value = Array.isArray(item) ? item.join(', ') : item;\n return [{ name: title, value }];\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef, useState, useCallback } from 'react';\nimport { useRedirect, useCreate, useGetList } from 'react-admin';\nimport { useLocation, useNavigate } from 'react-router';\nimport PropTypes from 'prop-types';\n\nimport Popup from '@/components/common/Popup.jsx';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { useIsIssuingInspection } from './hooks/useIsIssuingInspection.js';\nimport { ServiceTypeSelection } from './components/ServiceTypeSelection/index.jsx';\nimport { ServiceEndpointSelection } from './components/ServiceEndpointSelection/index.jsx';\nimport { SecretKeysPopup } from './components/SecretKeysPopup/index.jsx';\nimport { buildPayload } from './utils/buildPayload.js';\n\nconst defaultAuthClient = { clientSecret: '', clientId: '' };\n\nconst ServiceCreateForm = ({ onServiceCreated, services, InterceptOnCreate }) => {\n const { pathname } = useLocation();\n const redirect = useRedirect();\n const navigate = useNavigate();\n const [createService] = useCreate();\n\n const [did] = useSelectedOrganization();\n const openedStateRef = useRef(true);\n const isModalOpened = /\\/services\\/create/.test(pathname);\n\n const [serviceId, setServiceId] = useState('');\n const [selectedCAO, setSelectedCAO] = useState('');\n\n const { data: credentialAgentOperators, isLoading: isLoadingCAO } = useGetList(\n dataResources.SEARCH_PROFILES,\n {\n filter: { serviceTypes: 'CredentialAgentOperator' },\n },\n );\n\n const [selectedStep, setSelectedStep] = useState(1);\n const [selectedServiceType, setSelectedServiceType] = useState('');\n const [authClient, setAuthClient] = useState(defaultAuthClient);\n const [createServiceInProgress, setCreateServiceInProgress] = useState(false);\n\n const [isInterceptOnCreateOpen, setIsInterceptOnCreateOpen] = useState(false);\n const [isKeysPopupOpened, setIsKeysPopupOpened] = useState(false);\n\n const { isIssuingOrInspection, isCAO } = useIsIssuingInspection(selectedServiceType);\n\n const onClose = useCallback(() => {\n navigate(-1);\n }, [navigate]);\n\n // clear previous state after close\n useEffect(() => {\n const reset = () => {\n setSelectedStep(1);\n setSelectedServiceType('');\n setAuthClient(defaultAuthClient);\n };\n if (openedStateRef.current === false && isModalOpened) {\n reset();\n }\n // eslint-disable-next-line better-mutation/no-mutation\n openedStateRef.current = isModalOpened;\n\n return reset;\n }, [isModalOpened]);\n\n useEffect(() => {\n if (InterceptOnCreate && serviceId) {\n setIsInterceptOnCreateOpen(true);\n }\n }, [InterceptOnCreate, serviceId]);\n\n const onCreateService = async (service) => {\n const type = selectedServiceType.id.match(/.+v1/);\n const payload = buildPayload(service, type[0], did, services);\n try {\n setCreateServiceInProgress(true);\n const result = await createService(\n dataResources.SERVICES,\n {\n data: {\n organizationId: did,\n payload,\n },\n },\n { returnPromise: true },\n );\n setCreateServiceInProgress(false);\n setServiceId(result.id);\n if (result.authClient) {\n setAuthClient(result.authClient);\n } else {\n setSelectedCAO(service.serviceEndpoint.split('#')[0]);\n }\n onServiceCreated();\n } catch (e) {\n setCreateServiceInProgress(false);\n }\n };\n\n return (\n <>\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n disableCloseButton={createServiceInProgress}\n >\n {selectedStep === 1 && (\n <ServiceTypeSelection\n selectedServiceType={selectedServiceType}\n setSelectedServiceType={setSelectedServiceType}\n isLoading={isLoadingCAO}\n handleNext={() => setSelectedStep(2)}\n />\n )}\n {selectedStep === 2 && (\n <ServiceEndpointSelection\n credentialAgentOperators={credentialAgentOperators}\n selectedServiceType={selectedServiceType}\n inProgress={createServiceInProgress}\n onCreate={onCreateService}\n handleBack={() => setSelectedStep(1)}\n />\n )}\n </Popup>\n\n <InterceptOnCreate\n isInterceptOnCreateOpen={isInterceptOnCreateOpen}\n serviceId={serviceId}\n onNext={() => setIsKeysPopupOpened(true)}\n onClose={() => {\n redirect('list', 'services');\n }}\n isIssueOrInspection={isIssuingOrInspection}\n selectedCAO={selectedCAO}\n isCAO={isCAO}\n />\n\n <SecretKeysPopup\n isOpen={isKeysPopupOpened}\n secretKeys={{ authClients: [authClient] }}\n onClose={() => {\n setIsKeysPopupOpened(false);\n navigate(-1);\n }}\n wording={{\n title:\n // eslint-disable-next-line max-len\n 'Here are your secret identifiers. Please keep a copy of these as they will not be availableonce you close this dialog. You may need to pass this to the admin of your Credential Agent.',\n subtitle: 'Download or copy your secret encryption keys and keep them somewhere safe.',\n }}\n warningWording={{\n title: 'You must download a copy of your keys before exiting',\n subtitle:\n 'They will not be available again and are critical for managing your organization data.',\n }}\n />\n </>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2 },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nServiceCreateForm.propTypes = {\n onServiceCreated: PropTypes.func,\n services: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n }),\n ).isRequired,\n InterceptOnCreate: PropTypes.elementType,\n};\n\nexport default ServiceCreateForm;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { useDelete } from 'react-admin';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\n\nconst useDeleteService = (refetch) => {\n const [did] = useSelectedOrganization();\n const [serviceToDelete, setServiceToDelete] = useState(null);\n const [isDeletingService, setIsDeletingService] = useState(false);\n const [deleteOne] = useDelete(\n dataResources.SERVICES,\n {\n id: serviceToDelete,\n },\n {\n onSettled: () =>\n refetch().finally(() => {\n setIsDeletingService(false);\n setServiceToDelete(null);\n }),\n },\n );\n\n const handleServiceDeleteConfirm = async () => {\n setIsDeletingService(true);\n try {\n await deleteOne(dataResources.SERVICES, {\n id: serviceToDelete.id,\n previousData: {\n organizationId: did,\n },\n });\n } catch (e) {\n setIsDeletingService(false);\n throw e;\n }\n };\n\n return { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete };\n};\n\nexport default useDeleteService;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { Box, Button, Container, Stack, Typography } from '@mui/material';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useGetOne, useRedirect, useUpdate } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport { omit } from 'lodash-es';\n\nimport ListItem from '@/components/common/ListItem.jsx';\nimport Loading from '@/components/Loading.jsx';\nimport ServicesEdit from '@/components/services/ServicesEdit.jsx';\nimport ServicesDelete from '@/components/services/ServicesDelete.jsx';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useParticipantAgreementState from '@/state/participantAgreementState.js';\nimport ServiceCreateForm from './ServiceCreateForm.jsx';\nimport { serviceTypeTitlesMap } from '../../utils/serviceTypes.js';\nimport { buildServiceContent } from './utils/buildServiceContent.js';\nimport useDeleteService from './useDeleteService.js';\n\nconst SAVE_ERROR_MESSAGE =\n 'We were unable to update your service with the details provided. Please check to ensure you have provided valid information and then try again.';\n\nconst getAmountTitle = (total) => `${total} active service${total > 1 ? 's' : ''}`;\n\nconst ServicesList = ({\n // override props, defaulting to your internal components\n EditComponent = ServicesEdit,\n CreateComponent = ServiceCreateForm,\n DeleteComponent = ServicesDelete,\n AdditionalServiceProperties = {},\n}) => {\n const [params, setParams] = useSearchParams();\n const currentlyEditableServiceId = params.get('id');\n const [did] = useSelectedOrganization();\n\n const [, setParticipantAgreementApproved] = useParticipantAgreementState();\n\n const {\n data,\n isLoading,\n isFetching,\n refetch: refetchOrganizationServices,\n } = useGetOne('organizations', { id: did }, { enabled: !!did });\n\n const { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete } =\n useDeleteService(refetchOrganizationServices);\n\n const services = useMemo(() => data?.services || [], [data?.services]);\n const servicesActivated = useMemo(\n () =>\n services.map((item) => ({\n ...item,\n activated: data?.activatedServiceIds?.includes(item.id) || false,\n })),\n [services, data],\n );\n\n const totalActivatedServices = servicesActivated.filter(({ activated }) => activated).length;\n const currentlyEditableService = useMemo(\n () =>\n currentlyEditableServiceId\n ? services.find((item) => item.id === currentlyEditableServiceId)\n : null,\n [services, currentlyEditableServiceId],\n );\n\n const [updateService] = useUpdate(undefined, undefined, {\n onSuccess: () => {\n setParticipantAgreementApproved(true);\n\n refetchOrganizationServices();\n },\n });\n\n const serviceTitle = (service) => {\n if (service.type === 'VlcContactIssuer_v1') {\n if (service.credentialTypes?.includes('EmailV1.0')) {\n return 'Primary Source Email Issuer (eg. Email Service Provider)';\n }\n return 'Primary Source Phone Issuer (eg. Telco)';\n }\n return serviceTypeTitlesMap[service.type] || service.type;\n };\n\n // eslint-disable-next-line consistent-return\n const onSave = async (payload) => {\n try {\n await updateService(\n dataResources.SERVICES,\n {\n id: currentlyEditableService.id,\n data: {\n organizationId: did,\n payload: omit(payload, ['id', 'type']),\n },\n },\n { returnPromise: true },\n );\n } catch (e) {\n return {\n serviceEndpoint: SAVE_ERROR_MESSAGE,\n };\n }\n };\n\n const editAction = useMemo(\n () => ({\n title: 'EDIT',\n icon: <EditIcon />,\n action: (id) => setParams({ id }),\n }),\n [setParams],\n );\n\n const deleteAction = useMemo(\n () => ({\n title: 'DELETE',\n icon: <DeleteIcon />,\n action: (id) => setServiceToDelete(id),\n }),\n [setServiceToDelete],\n );\n\n const isLoadingVisible = isLoading || isFetching;\n\n const redirect = useRedirect();\n const handleCloseEdit = () => {\n setParams({});\n };\n\n return (\n <Container maxWidth=\"xl\" sx={{ mt: 5 }}>\n <Typography variant=\"h3\">Manage Services</Typography>\n <Box sx={{ mt: 2, mb: 4, maxWidth: '720px' }}>\n <Typography variant=\"subtitle1\">\n Setup the services your organization is to be offering across the Velocity Network™:\n Issuing, Verifying, Operating a Credential Agent and/or operating a Node.\n </Typography>\n </Box>\n <Stack\n sx={{ mb: 2 }}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"flex-end\"\n >\n <Button variant=\"outlined\" onClick={() => redirect('create', 'services')}>\n Add service +\n </Button>\n {!!totalActivatedServices && (\n <Typography color=\"secondary.light\" sx={{ fontSize: 14 }}>\n {getAmountTitle(totalActivatedServices)}\n </Typography>\n )}\n </Stack>\n {isLoadingVisible && <Loading sx={{ pt: '60px' }} />}\n {!isLoadingVisible &&\n servicesActivated.map((service) => (\n <ListItem\n key={service.id}\n id={service.id}\n title={serviceTitle(service)}\n status={\n service.activated\n ? { title: 'ACTIVATED', color: 'primary.success' }\n : { title: 'INACTIVE', color: 'primary.main' }\n }\n showActions\n actions={[editAction, deleteAction]}\n content={[\n [\n { name: 'service id', value: service.id },\n { name: 'service endpoint', value: service.serviceEndpoint },\n ...buildServiceContent(service.credentialTypes, 'credential types'),\n ...buildServiceContent(service.name, 'wallet name'),\n ...buildServiceContent(service.supportedExchangeProtocols, 'protocols'),\n ...buildServiceContent(service.playStoreUrl, 'play store url'),\n ...buildServiceContent(service.googlePlayId, 'google play id'),\n ...buildServiceContent(service.appleAppStoreUrl, 'apple app store url'),\n ...buildServiceContent(service.appleAppId, 'apple app id'),\n ...(AdditionalServiceProperties && AdditionalServiceProperties[service.type]\n ? [\n {\n name: AdditionalServiceProperties[service.type]?.name,\n value: AdditionalServiceProperties[service.type]?.value,\n },\n ]\n : []),\n ],\n ]}\n />\n ))}\n <EditComponent\n onClose={handleCloseEdit}\n onSave={onSave}\n selectedService={currentlyEditableService}\n />\n <CreateComponent onServiceCreated={refetchOrganizationServices} services={services} />\n <DeleteComponent\n isLoading={isDeletingService}\n onClose={() => setServiceToDelete(null)}\n onConfirm={handleServiceDeleteConfirm}\n selectedService={serviceToDelete}\n />\n </Container>\n );\n};\n// eslint-disable-next-line better-mutation/no-mutation\nServicesList.propTypes = {\n EditComponent: PropTypes.elementType,\n CreateComponent: PropTypes.elementType,\n DeleteComponent: PropTypes.elementType,\n AdditionalServiceProperties: PropTypes.object,\n};\n\nexport default ServicesList;\n"],"names":["useLocation","useRedirect","useNavigate","useCreate","useSelectedOrganization","useRef","useState","useGetList","dataResources","useIsIssuingInspection","useCallback","useEffect","buildPayload","jsxs","Fragment","Popup","jsx","ServiceTypeSelection","ServiceEndpointSelection","SecretKeysPopup","useDelete","ServicesEdit","ServicesDelete","useSearchParams","useParticipantAgreementState","useGetOne","useMemo","useUpdate","serviceTypeTitlesMap","omit","Container","Typography","Box","Stack","Button","Loading","ListItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"services.cjs","sources":["../../src/pages/services/utils/buildServiceContent.js","../../src/pages/services/ServiceCreateForm.jsx","../../src/pages/services/useDeleteService.js","../../src/pages/services/ServicesList.jsx"],"sourcesContent":["export const buildServiceContent = (item, title, isLink = false) => {\n if (!item) return [];\n\n const value = Array.isArray(item) ? item.join(', ') : item;\n return [{ name: title, value, isLink }];\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef, useState, useCallback } from 'react';\nimport { useRedirect, useCreate, useGetList } from 'react-admin';\nimport { useLocation, useNavigate } from 'react-router';\nimport PropTypes from 'prop-types';\n\nimport Popup from '@/components/common/Popup.jsx';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { useIsIssuingInspection } from './hooks/useIsIssuingInspection.js';\nimport { ServiceTypeSelection } from './components/ServiceTypeSelection/index.jsx';\nimport { ServiceEndpointSelection } from './components/ServiceEndpointSelection/index.jsx';\nimport { SecretKeysPopup } from './components/SecretKeysPopup/index.jsx';\nimport { buildPayload } from './utils/buildPayload.js';\n\nconst defaultAuthClient = { clientSecret: '', clientId: '' };\n\nconst ServiceCreateForm = ({ onServiceCreated, services, InterceptOnCreate }) => {\n const { pathname } = useLocation();\n const redirect = useRedirect();\n const navigate = useNavigate();\n const [createService] = useCreate();\n\n const [did] = useSelectedOrganization();\n const openedStateRef = useRef(true);\n const isModalOpened = /\\/services\\/create/.test(pathname);\n\n const [serviceId, setServiceId] = useState('');\n const [selectedCAO, setSelectedCAO] = useState('');\n\n const { data: credentialAgentOperators, isLoading: isLoadingCAO } = useGetList(\n dataResources.SEARCH_PROFILES,\n {\n filter: { serviceTypes: 'CredentialAgentOperator' },\n },\n );\n\n const [selectedStep, setSelectedStep] = useState(1);\n const [selectedServiceType, setSelectedServiceType] = useState('');\n const [authClient, setAuthClient] = useState(defaultAuthClient);\n const [createServiceInProgress, setCreateServiceInProgress] = useState(false);\n\n const [isInterceptOnCreateOpen, setIsInterceptOnCreateOpen] = useState(false);\n const [isKeysPopupOpened, setIsKeysPopupOpened] = useState(false);\n\n const { isIssuingOrInspection, isCAO } = useIsIssuingInspection(selectedServiceType);\n\n const onClose = useCallback(() => {\n navigate(-1);\n }, [navigate]);\n\n // clear previous state after close\n useEffect(() => {\n const reset = () => {\n setSelectedStep(1);\n setSelectedServiceType('');\n setAuthClient(defaultAuthClient);\n };\n if (openedStateRef.current === false && isModalOpened) {\n reset();\n }\n // eslint-disable-next-line better-mutation/no-mutation\n openedStateRef.current = isModalOpened;\n\n return reset;\n }, [isModalOpened]);\n\n useEffect(() => {\n if (InterceptOnCreate && serviceId) {\n setIsInterceptOnCreateOpen(true);\n }\n }, [InterceptOnCreate, serviceId]);\n\n const onCreateService = async (service) => {\n const type = selectedServiceType.id.match(/.+v1/);\n const payload = buildPayload(service, type[0], did, services);\n try {\n setCreateServiceInProgress(true);\n const result = await createService(\n dataResources.SERVICES,\n {\n data: {\n organizationId: did,\n payload,\n },\n },\n { returnPromise: true },\n );\n setCreateServiceInProgress(false);\n setServiceId(result.id);\n if (result.authClient) {\n setAuthClient(result.authClient);\n } else {\n setSelectedCAO(service.serviceEndpoint.split('#')[0]);\n }\n onServiceCreated();\n } catch (e) {\n setCreateServiceInProgress(false);\n }\n };\n\n return (\n <>\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n disableCloseButton={createServiceInProgress}\n >\n {selectedStep === 1 && (\n <ServiceTypeSelection\n selectedServiceType={selectedServiceType}\n setSelectedServiceType={setSelectedServiceType}\n isLoading={isLoadingCAO}\n handleNext={() => setSelectedStep(2)}\n />\n )}\n {selectedStep === 2 && (\n <ServiceEndpointSelection\n credentialAgentOperators={credentialAgentOperators}\n selectedServiceType={selectedServiceType}\n inProgress={createServiceInProgress}\n onCreate={onCreateService}\n handleBack={() => setSelectedStep(1)}\n />\n )}\n </Popup>\n\n <InterceptOnCreate\n isInterceptOnCreateOpen={isInterceptOnCreateOpen}\n serviceId={serviceId}\n onNext={() => setIsKeysPopupOpened(true)}\n onClose={() => {\n redirect('list', 'services');\n }}\n isIssueOrInspection={isIssuingOrInspection}\n selectedCAO={selectedCAO}\n isCAO={isCAO}\n />\n\n <SecretKeysPopup\n isOpen={isKeysPopupOpened}\n secretKeys={{ authClients: [authClient] }}\n onClose={() => {\n setIsKeysPopupOpened(false);\n navigate(-1);\n }}\n wording={{\n title:\n // eslint-disable-next-line max-len\n 'Here are your secret identifiers. Please keep a copy of these as they will not be availableonce you close this dialog. You may need to pass this to the admin of your Credential Agent.',\n subtitle: 'Download or copy your secret encryption keys and keep them somewhere safe.',\n }}\n warningWording={{\n title: 'You must download a copy of your keys before exiting',\n subtitle:\n 'They will not be available again and are critical for managing your organization data.',\n }}\n />\n </>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2 },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nServiceCreateForm.propTypes = {\n onServiceCreated: PropTypes.func,\n services: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n }),\n ).isRequired,\n InterceptOnCreate: PropTypes.elementType,\n};\n\nexport default ServiceCreateForm;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { useDelete } from 'react-admin';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\n\nconst useDeleteService = (refetch) => {\n const [did] = useSelectedOrganization();\n const [serviceToDelete, setServiceToDelete] = useState(null);\n const [isDeletingService, setIsDeletingService] = useState(false);\n const [deleteOne] = useDelete(\n dataResources.SERVICES,\n {\n id: serviceToDelete,\n },\n {\n onSettled: () =>\n refetch().finally(() => {\n setIsDeletingService(false);\n setServiceToDelete(null);\n }),\n },\n );\n\n const handleServiceDeleteConfirm = async () => {\n setIsDeletingService(true);\n try {\n await deleteOne(dataResources.SERVICES, {\n id: serviceToDelete.id,\n previousData: {\n organizationId: did,\n },\n });\n } catch (e) {\n setIsDeletingService(false);\n throw e;\n }\n };\n\n return { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete };\n};\n\nexport default useDeleteService;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { Box, Button, Container, Stack, Typography } from '@mui/material';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useGetOne, useRedirect, useUpdate } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport { omit } from 'lodash-es';\n\nimport ListItem from '@/components/common/ListItem.jsx';\nimport Loading from '@/components/Loading.jsx';\nimport ServicesEdit from '@/components/services/ServicesEdit.jsx';\nimport ServicesDelete from '@/components/services/ServicesDelete.jsx';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useParticipantAgreementState from '@/state/participantAgreementState.js';\nimport ServiceCreateForm from './ServiceCreateForm.jsx';\nimport { serviceTypeTitlesMap } from '../../utils/serviceTypes.js';\nimport { buildServiceContent } from './utils/buildServiceContent.js';\nimport useDeleteService from './useDeleteService.js';\n\nconst SAVE_ERROR_MESSAGE =\n 'We were unable to update your service with the details provided. Please check to ensure you have provided valid information and then try again.';\n\nconst getAmountTitle = (total) => `${total} active service${total > 1 ? 's' : ''}`;\n\nconst ServicesList = ({\n // override props, defaulting to your internal components\n EditComponent = ServicesEdit,\n CreateComponent = ServiceCreateForm,\n DeleteComponent = ServicesDelete,\n AdditionalServiceProperties = {},\n}) => {\n const [params, setParams] = useSearchParams();\n const currentlyEditableServiceId = params.get('id');\n const [did] = useSelectedOrganization();\n\n const [, setParticipantAgreementApproved] = useParticipantAgreementState();\n\n const {\n data,\n isLoading,\n isFetching,\n refetch: refetchOrganizationServices,\n } = useGetOne('organizations', { id: did }, { enabled: !!did });\n\n const { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete } =\n useDeleteService(refetchOrganizationServices);\n\n const services = useMemo(() => data?.services || [], [data?.services]);\n const servicesActivated = useMemo(\n () =>\n services.map((item) => ({\n ...item,\n activated: data?.activatedServiceIds?.includes(item.id) || false,\n })),\n [services, data],\n );\n\n const totalActivatedServices = servicesActivated.filter(({ activated }) => activated).length;\n const currentlyEditableService = useMemo(\n () =>\n currentlyEditableServiceId\n ? services.find((item) => item.id === currentlyEditableServiceId)\n : null,\n [services, currentlyEditableServiceId],\n );\n\n const [updateService] = useUpdate(undefined, undefined, {\n onSuccess: () => {\n setParticipantAgreementApproved(true);\n\n refetchOrganizationServices();\n },\n });\n\n const serviceTitle = (service) => {\n if (service.type === 'VlcContactIssuer_v1') {\n if (service.credentialTypes?.includes('EmailV1.0')) {\n return 'Primary Source Email Issuer (eg. Email Service Provider)';\n }\n return 'Primary Source Phone Issuer (eg. Telco)';\n }\n return serviceTypeTitlesMap[service.type] || service.type;\n };\n\n // eslint-disable-next-line consistent-return\n const onSave = async (payload) => {\n try {\n await updateService(\n dataResources.SERVICES,\n {\n id: currentlyEditableService.id,\n data: {\n organizationId: did,\n payload: omit(payload, ['id', 'type']),\n },\n },\n { returnPromise: true },\n );\n } catch (e) {\n return {\n serviceEndpoint: SAVE_ERROR_MESSAGE,\n };\n }\n };\n\n const editAction = useMemo(\n () => ({\n title: 'EDIT',\n icon: <EditIcon />,\n action: (id) => setParams({ id }),\n }),\n [setParams],\n );\n\n const deleteAction = useMemo(\n () => ({\n title: 'DELETE',\n icon: <DeleteIcon />,\n action: (id) => setServiceToDelete(id),\n }),\n [setServiceToDelete],\n );\n\n const isLoadingVisible = isLoading || isFetching;\n\n const redirect = useRedirect();\n const handleCloseEdit = () => {\n setParams({});\n };\n\n return (\n <Container maxWidth=\"xl\" sx={{ mt: 5 }}>\n <Typography variant=\"h3\">Manage Services</Typography>\n <Box sx={{ mt: 2, mb: 4, maxWidth: '720px' }}>\n <Typography variant=\"subtitle1\">\n Setup the services your organization is to be offering across the Velocity Network™:\n Issuing, Verifying, Operating a Credential Agent and/or operating a Node.\n </Typography>\n </Box>\n <Stack\n sx={{ mb: 2 }}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"flex-end\"\n >\n <Button variant=\"outlined\" onClick={() => redirect('create', 'services')}>\n Add service +\n </Button>\n {!!totalActivatedServices && (\n <Typography color=\"secondary.light\" sx={{ fontSize: 14 }}>\n {getAmountTitle(totalActivatedServices)}\n </Typography>\n )}\n </Stack>\n {isLoadingVisible && <Loading sx={{ pt: '60px' }} />}\n {!isLoadingVisible &&\n servicesActivated.map((service) => (\n <ListItem\n key={service.id}\n id={service.id}\n title={serviceTitle(service)}\n status={\n service.activated\n ? { title: 'ACTIVATED', color: 'primary.success' }\n : { title: 'INACTIVE', color: 'primary.main' }\n }\n showActions\n actions={[editAction, deleteAction]}\n content={[\n [\n { name: 'service id', value: service.id, isLink: false },\n { name: 'service endpoint', value: service.serviceEndpoint, isLink: false },\n ...buildServiceContent(service.credentialTypes, 'credential types'),\n ...buildServiceContent(service.name, 'wallet name'),\n ...buildServiceContent(service.logoUrl, 'logo url', true),\n ...buildServiceContent(service.supportedExchangeProtocols, 'protocols'),\n ...buildServiceContent(service.playStoreUrl, 'play store url'),\n ...buildServiceContent(service.googlePlayId, 'google play id'),\n ...buildServiceContent(service.appleAppStoreUrl, 'apple app store url'),\n ...buildServiceContent(service.appleAppId, 'apple app id'),\n ...(AdditionalServiceProperties && AdditionalServiceProperties[service.type]\n ? [\n {\n name: AdditionalServiceProperties[service.type]?.name,\n value: AdditionalServiceProperties[service.type]?.value,\n isLink: AdditionalServiceProperties[service.type]?.isLink || false,\n },\n ]\n : []),\n ],\n ]}\n />\n ))}\n <EditComponent\n onClose={handleCloseEdit}\n onSave={onSave}\n selectedService={currentlyEditableService}\n />\n <CreateComponent onServiceCreated={refetchOrganizationServices} services={services} />\n <DeleteComponent\n isLoading={isDeletingService}\n onClose={() => setServiceToDelete(null)}\n onConfirm={handleServiceDeleteConfirm}\n selectedService={serviceToDelete}\n />\n </Container>\n );\n};\n// eslint-disable-next-line better-mutation/no-mutation\nServicesList.propTypes = {\n EditComponent: PropTypes.elementType,\n CreateComponent: PropTypes.elementType,\n DeleteComponent: PropTypes.elementType,\n AdditionalServiceProperties: PropTypes.object,\n};\n\nexport default ServicesList;\n"],"names":["useLocation","useRedirect","useNavigate","useCreate","useSelectedOrganization","useRef","useState","useGetList","dataResources","useIsIssuingInspection","useCallback","useEffect","buildPayload","jsxs","Fragment","Popup","jsx","ServiceTypeSelection","ServiceEndpointSelection","SecretKeysPopup","useDelete","ServicesEdit","ServicesDelete","useSearchParams","useParticipantAgreementState","useGetOne","useMemo","useUpdate","serviceTypeTitlesMap","omit","Container","Typography","Box","Stack","Button","Loading","ListItem"],"mappings":"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"}
|
package/dist/pages/services.js
CHANGED
|
@@ -13,15 +13,15 @@ import { Container, Typography, Box, Stack, Button } from "@mui/material";
|
|
|
13
13
|
import EditIcon from "@mui/icons-material/Edit";
|
|
14
14
|
import DeleteIcon from "@mui/icons-material/Delete";
|
|
15
15
|
import { omit } from "lodash-es";
|
|
16
|
-
import { L as ListItem } from "../chunks/ListItem.
|
|
16
|
+
import { L as ListItem } from "../chunks/ListItem.B2OnXvbO.js";
|
|
17
17
|
import { L as Loading } from "../chunks/Loading.Bcm3xNJU.js";
|
|
18
18
|
import { a as ServicesEdit, S as ServicesDelete } from "../chunks/ServicesEdit.DFxcohIF.js";
|
|
19
19
|
import { u as useParticipantAgreementState } from "../chunks/participantAgreementState.DFCQsamR.js";
|
|
20
20
|
import { a as serviceTypeTitlesMap } from "../chunks/serviceTypes.BbBTNXB9.js";
|
|
21
|
-
const buildServiceContent = (item, title) => {
|
|
21
|
+
const buildServiceContent = (item, title, isLink = false) => {
|
|
22
22
|
if (!item) return [];
|
|
23
23
|
const value = Array.isArray(item) ? item.join(", ") : item;
|
|
24
|
-
return [{ name: title, value }];
|
|
24
|
+
return [{ name: title, value, isLink }];
|
|
25
25
|
};
|
|
26
26
|
const defaultAuthClient = { clientSecret: "", clientId: "" };
|
|
27
27
|
const ServiceCreateForm = ({ onServiceCreated, services, InterceptOnCreate }) => {
|
|
@@ -323,10 +323,11 @@ const ServicesList = ({
|
|
|
323
323
|
actions: [editAction, deleteAction],
|
|
324
324
|
content: [
|
|
325
325
|
[
|
|
326
|
-
{ name: "service id", value: service.id },
|
|
327
|
-
{ name: "service endpoint", value: service.serviceEndpoint },
|
|
326
|
+
{ name: "service id", value: service.id, isLink: false },
|
|
327
|
+
{ name: "service endpoint", value: service.serviceEndpoint, isLink: false },
|
|
328
328
|
...buildServiceContent(service.credentialTypes, "credential types"),
|
|
329
329
|
...buildServiceContent(service.name, "wallet name"),
|
|
330
|
+
...buildServiceContent(service.logoUrl, "logo url", true),
|
|
330
331
|
...buildServiceContent(service.supportedExchangeProtocols, "protocols"),
|
|
331
332
|
...buildServiceContent(service.playStoreUrl, "play store url"),
|
|
332
333
|
...buildServiceContent(service.googlePlayId, "google play id"),
|
|
@@ -335,7 +336,8 @@ const ServicesList = ({
|
|
|
335
336
|
...AdditionalServiceProperties && AdditionalServiceProperties[service.type] ? [
|
|
336
337
|
{
|
|
337
338
|
name: AdditionalServiceProperties[service.type]?.name,
|
|
338
|
-
value: AdditionalServiceProperties[service.type]?.value
|
|
339
|
+
value: AdditionalServiceProperties[service.type]?.value,
|
|
340
|
+
isLink: AdditionalServiceProperties[service.type]?.isLink || false
|
|
339
341
|
}
|
|
340
342
|
] : []
|
|
341
343
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sources":["../../src/pages/services/utils/buildServiceContent.js","../../src/pages/services/ServiceCreateForm.jsx","../../src/pages/services/useDeleteService.js","../../src/pages/services/ServicesList.jsx"],"sourcesContent":["export const buildServiceContent = (item, title) => {\n if (!item) return [];\n\n const value = Array.isArray(item) ? item.join(', ') : item;\n return [{ name: title, value }];\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef, useState, useCallback } from 'react';\nimport { useRedirect, useCreate, useGetList } from 'react-admin';\nimport { useLocation, useNavigate } from 'react-router';\nimport PropTypes from 'prop-types';\n\nimport Popup from '@/components/common/Popup.jsx';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { useIsIssuingInspection } from './hooks/useIsIssuingInspection.js';\nimport { ServiceTypeSelection } from './components/ServiceTypeSelection/index.jsx';\nimport { ServiceEndpointSelection } from './components/ServiceEndpointSelection/index.jsx';\nimport { SecretKeysPopup } from './components/SecretKeysPopup/index.jsx';\nimport { buildPayload } from './utils/buildPayload.js';\n\nconst defaultAuthClient = { clientSecret: '', clientId: '' };\n\nconst ServiceCreateForm = ({ onServiceCreated, services, InterceptOnCreate }) => {\n const { pathname } = useLocation();\n const redirect = useRedirect();\n const navigate = useNavigate();\n const [createService] = useCreate();\n\n const [did] = useSelectedOrganization();\n const openedStateRef = useRef(true);\n const isModalOpened = /\\/services\\/create/.test(pathname);\n\n const [serviceId, setServiceId] = useState('');\n const [selectedCAO, setSelectedCAO] = useState('');\n\n const { data: credentialAgentOperators, isLoading: isLoadingCAO } = useGetList(\n dataResources.SEARCH_PROFILES,\n {\n filter: { serviceTypes: 'CredentialAgentOperator' },\n },\n );\n\n const [selectedStep, setSelectedStep] = useState(1);\n const [selectedServiceType, setSelectedServiceType] = useState('');\n const [authClient, setAuthClient] = useState(defaultAuthClient);\n const [createServiceInProgress, setCreateServiceInProgress] = useState(false);\n\n const [isInterceptOnCreateOpen, setIsInterceptOnCreateOpen] = useState(false);\n const [isKeysPopupOpened, setIsKeysPopupOpened] = useState(false);\n\n const { isIssuingOrInspection, isCAO } = useIsIssuingInspection(selectedServiceType);\n\n const onClose = useCallback(() => {\n navigate(-1);\n }, [navigate]);\n\n // clear previous state after close\n useEffect(() => {\n const reset = () => {\n setSelectedStep(1);\n setSelectedServiceType('');\n setAuthClient(defaultAuthClient);\n };\n if (openedStateRef.current === false && isModalOpened) {\n reset();\n }\n // eslint-disable-next-line better-mutation/no-mutation\n openedStateRef.current = isModalOpened;\n\n return reset;\n }, [isModalOpened]);\n\n useEffect(() => {\n if (InterceptOnCreate && serviceId) {\n setIsInterceptOnCreateOpen(true);\n }\n }, [InterceptOnCreate, serviceId]);\n\n const onCreateService = async (service) => {\n const type = selectedServiceType.id.match(/.+v1/);\n const payload = buildPayload(service, type[0], did, services);\n try {\n setCreateServiceInProgress(true);\n const result = await createService(\n dataResources.SERVICES,\n {\n data: {\n organizationId: did,\n payload,\n },\n },\n { returnPromise: true },\n );\n setCreateServiceInProgress(false);\n setServiceId(result.id);\n if (result.authClient) {\n setAuthClient(result.authClient);\n } else {\n setSelectedCAO(service.serviceEndpoint.split('#')[0]);\n }\n onServiceCreated();\n } catch (e) {\n setCreateServiceInProgress(false);\n }\n };\n\n return (\n <>\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n disableCloseButton={createServiceInProgress}\n >\n {selectedStep === 1 && (\n <ServiceTypeSelection\n selectedServiceType={selectedServiceType}\n setSelectedServiceType={setSelectedServiceType}\n isLoading={isLoadingCAO}\n handleNext={() => setSelectedStep(2)}\n />\n )}\n {selectedStep === 2 && (\n <ServiceEndpointSelection\n credentialAgentOperators={credentialAgentOperators}\n selectedServiceType={selectedServiceType}\n inProgress={createServiceInProgress}\n onCreate={onCreateService}\n handleBack={() => setSelectedStep(1)}\n />\n )}\n </Popup>\n\n <InterceptOnCreate\n isInterceptOnCreateOpen={isInterceptOnCreateOpen}\n serviceId={serviceId}\n onNext={() => setIsKeysPopupOpened(true)}\n onClose={() => {\n redirect('list', 'services');\n }}\n isIssueOrInspection={isIssuingOrInspection}\n selectedCAO={selectedCAO}\n isCAO={isCAO}\n />\n\n <SecretKeysPopup\n isOpen={isKeysPopupOpened}\n secretKeys={{ authClients: [authClient] }}\n onClose={() => {\n setIsKeysPopupOpened(false);\n navigate(-1);\n }}\n wording={{\n title:\n // eslint-disable-next-line max-len\n 'Here are your secret identifiers. Please keep a copy of these as they will not be availableonce you close this dialog. You may need to pass this to the admin of your Credential Agent.',\n subtitle: 'Download or copy your secret encryption keys and keep them somewhere safe.',\n }}\n warningWording={{\n title: 'You must download a copy of your keys before exiting',\n subtitle:\n 'They will not be available again and are critical for managing your organization data.',\n }}\n />\n </>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2 },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nServiceCreateForm.propTypes = {\n onServiceCreated: PropTypes.func,\n services: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n }),\n ).isRequired,\n InterceptOnCreate: PropTypes.elementType,\n};\n\nexport default ServiceCreateForm;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { useDelete } from 'react-admin';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\n\nconst useDeleteService = (refetch) => {\n const [did] = useSelectedOrganization();\n const [serviceToDelete, setServiceToDelete] = useState(null);\n const [isDeletingService, setIsDeletingService] = useState(false);\n const [deleteOne] = useDelete(\n dataResources.SERVICES,\n {\n id: serviceToDelete,\n },\n {\n onSettled: () =>\n refetch().finally(() => {\n setIsDeletingService(false);\n setServiceToDelete(null);\n }),\n },\n );\n\n const handleServiceDeleteConfirm = async () => {\n setIsDeletingService(true);\n try {\n await deleteOne(dataResources.SERVICES, {\n id: serviceToDelete.id,\n previousData: {\n organizationId: did,\n },\n });\n } catch (e) {\n setIsDeletingService(false);\n throw e;\n }\n };\n\n return { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete };\n};\n\nexport default useDeleteService;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { Box, Button, Container, Stack, Typography } from '@mui/material';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useGetOne, useRedirect, useUpdate } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport { omit } from 'lodash-es';\n\nimport ListItem from '@/components/common/ListItem.jsx';\nimport Loading from '@/components/Loading.jsx';\nimport ServicesEdit from '@/components/services/ServicesEdit.jsx';\nimport ServicesDelete from '@/components/services/ServicesDelete.jsx';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useParticipantAgreementState from '@/state/participantAgreementState.js';\nimport ServiceCreateForm from './ServiceCreateForm.jsx';\nimport { serviceTypeTitlesMap } from '../../utils/serviceTypes.js';\nimport { buildServiceContent } from './utils/buildServiceContent.js';\nimport useDeleteService from './useDeleteService.js';\n\nconst SAVE_ERROR_MESSAGE =\n 'We were unable to update your service with the details provided. Please check to ensure you have provided valid information and then try again.';\n\nconst getAmountTitle = (total) => `${total} active service${total > 1 ? 's' : ''}`;\n\nconst ServicesList = ({\n // override props, defaulting to your internal components\n EditComponent = ServicesEdit,\n CreateComponent = ServiceCreateForm,\n DeleteComponent = ServicesDelete,\n AdditionalServiceProperties = {},\n}) => {\n const [params, setParams] = useSearchParams();\n const currentlyEditableServiceId = params.get('id');\n const [did] = useSelectedOrganization();\n\n const [, setParticipantAgreementApproved] = useParticipantAgreementState();\n\n const {\n data,\n isLoading,\n isFetching,\n refetch: refetchOrganizationServices,\n } = useGetOne('organizations', { id: did }, { enabled: !!did });\n\n const { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete } =\n useDeleteService(refetchOrganizationServices);\n\n const services = useMemo(() => data?.services || [], [data?.services]);\n const servicesActivated = useMemo(\n () =>\n services.map((item) => ({\n ...item,\n activated: data?.activatedServiceIds?.includes(item.id) || false,\n })),\n [services, data],\n );\n\n const totalActivatedServices = servicesActivated.filter(({ activated }) => activated).length;\n const currentlyEditableService = useMemo(\n () =>\n currentlyEditableServiceId\n ? services.find((item) => item.id === currentlyEditableServiceId)\n : null,\n [services, currentlyEditableServiceId],\n );\n\n const [updateService] = useUpdate(undefined, undefined, {\n onSuccess: () => {\n setParticipantAgreementApproved(true);\n\n refetchOrganizationServices();\n },\n });\n\n const serviceTitle = (service) => {\n if (service.type === 'VlcContactIssuer_v1') {\n if (service.credentialTypes?.includes('EmailV1.0')) {\n return 'Primary Source Email Issuer (eg. Email Service Provider)';\n }\n return 'Primary Source Phone Issuer (eg. Telco)';\n }\n return serviceTypeTitlesMap[service.type] || service.type;\n };\n\n // eslint-disable-next-line consistent-return\n const onSave = async (payload) => {\n try {\n await updateService(\n dataResources.SERVICES,\n {\n id: currentlyEditableService.id,\n data: {\n organizationId: did,\n payload: omit(payload, ['id', 'type']),\n },\n },\n { returnPromise: true },\n );\n } catch (e) {\n return {\n serviceEndpoint: SAVE_ERROR_MESSAGE,\n };\n }\n };\n\n const editAction = useMemo(\n () => ({\n title: 'EDIT',\n icon: <EditIcon />,\n action: (id) => setParams({ id }),\n }),\n [setParams],\n );\n\n const deleteAction = useMemo(\n () => ({\n title: 'DELETE',\n icon: <DeleteIcon />,\n action: (id) => setServiceToDelete(id),\n }),\n [setServiceToDelete],\n );\n\n const isLoadingVisible = isLoading || isFetching;\n\n const redirect = useRedirect();\n const handleCloseEdit = () => {\n setParams({});\n };\n\n return (\n <Container maxWidth=\"xl\" sx={{ mt: 5 }}>\n <Typography variant=\"h3\">Manage Services</Typography>\n <Box sx={{ mt: 2, mb: 4, maxWidth: '720px' }}>\n <Typography variant=\"subtitle1\">\n Setup the services your organization is to be offering across the Velocity Network™:\n Issuing, Verifying, Operating a Credential Agent and/or operating a Node.\n </Typography>\n </Box>\n <Stack\n sx={{ mb: 2 }}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"flex-end\"\n >\n <Button variant=\"outlined\" onClick={() => redirect('create', 'services')}>\n Add service +\n </Button>\n {!!totalActivatedServices && (\n <Typography color=\"secondary.light\" sx={{ fontSize: 14 }}>\n {getAmountTitle(totalActivatedServices)}\n </Typography>\n )}\n </Stack>\n {isLoadingVisible && <Loading sx={{ pt: '60px' }} />}\n {!isLoadingVisible &&\n servicesActivated.map((service) => (\n <ListItem\n key={service.id}\n id={service.id}\n title={serviceTitle(service)}\n status={\n service.activated\n ? { title: 'ACTIVATED', color: 'primary.success' }\n : { title: 'INACTIVE', color: 'primary.main' }\n }\n showActions\n actions={[editAction, deleteAction]}\n content={[\n [\n { name: 'service id', value: service.id },\n { name: 'service endpoint', value: service.serviceEndpoint },\n ...buildServiceContent(service.credentialTypes, 'credential types'),\n ...buildServiceContent(service.name, 'wallet name'),\n ...buildServiceContent(service.supportedExchangeProtocols, 'protocols'),\n ...buildServiceContent(service.playStoreUrl, 'play store url'),\n ...buildServiceContent(service.googlePlayId, 'google play id'),\n ...buildServiceContent(service.appleAppStoreUrl, 'apple app store url'),\n ...buildServiceContent(service.appleAppId, 'apple app id'),\n ...(AdditionalServiceProperties && AdditionalServiceProperties[service.type]\n ? [\n {\n name: AdditionalServiceProperties[service.type]?.name,\n value: AdditionalServiceProperties[service.type]?.value,\n },\n ]\n : []),\n ],\n ]}\n />\n ))}\n <EditComponent\n onClose={handleCloseEdit}\n onSave={onSave}\n selectedService={currentlyEditableService}\n />\n <CreateComponent onServiceCreated={refetchOrganizationServices} services={services} />\n <DeleteComponent\n isLoading={isDeletingService}\n onClose={() => setServiceToDelete(null)}\n onConfirm={handleServiceDeleteConfirm}\n selectedService={serviceToDelete}\n />\n </Container>\n );\n};\n// eslint-disable-next-line better-mutation/no-mutation\nServicesList.propTypes = {\n EditComponent: PropTypes.elementType,\n CreateComponent: PropTypes.elementType,\n DeleteComponent: PropTypes.elementType,\n AdditionalServiceProperties: PropTypes.object,\n};\n\nexport default ServicesList;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"services.js","sources":["../../src/pages/services/utils/buildServiceContent.js","../../src/pages/services/ServiceCreateForm.jsx","../../src/pages/services/useDeleteService.js","../../src/pages/services/ServicesList.jsx"],"sourcesContent":["export const buildServiceContent = (item, title, isLink = false) => {\n if (!item) return [];\n\n const value = Array.isArray(item) ? item.join(', ') : item;\n return [{ name: title, value, isLink }];\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef, useState, useCallback } from 'react';\nimport { useRedirect, useCreate, useGetList } from 'react-admin';\nimport { useLocation, useNavigate } from 'react-router';\nimport PropTypes from 'prop-types';\n\nimport Popup from '@/components/common/Popup.jsx';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { useIsIssuingInspection } from './hooks/useIsIssuingInspection.js';\nimport { ServiceTypeSelection } from './components/ServiceTypeSelection/index.jsx';\nimport { ServiceEndpointSelection } from './components/ServiceEndpointSelection/index.jsx';\nimport { SecretKeysPopup } from './components/SecretKeysPopup/index.jsx';\nimport { buildPayload } from './utils/buildPayload.js';\n\nconst defaultAuthClient = { clientSecret: '', clientId: '' };\n\nconst ServiceCreateForm = ({ onServiceCreated, services, InterceptOnCreate }) => {\n const { pathname } = useLocation();\n const redirect = useRedirect();\n const navigate = useNavigate();\n const [createService] = useCreate();\n\n const [did] = useSelectedOrganization();\n const openedStateRef = useRef(true);\n const isModalOpened = /\\/services\\/create/.test(pathname);\n\n const [serviceId, setServiceId] = useState('');\n const [selectedCAO, setSelectedCAO] = useState('');\n\n const { data: credentialAgentOperators, isLoading: isLoadingCAO } = useGetList(\n dataResources.SEARCH_PROFILES,\n {\n filter: { serviceTypes: 'CredentialAgentOperator' },\n },\n );\n\n const [selectedStep, setSelectedStep] = useState(1);\n const [selectedServiceType, setSelectedServiceType] = useState('');\n const [authClient, setAuthClient] = useState(defaultAuthClient);\n const [createServiceInProgress, setCreateServiceInProgress] = useState(false);\n\n const [isInterceptOnCreateOpen, setIsInterceptOnCreateOpen] = useState(false);\n const [isKeysPopupOpened, setIsKeysPopupOpened] = useState(false);\n\n const { isIssuingOrInspection, isCAO } = useIsIssuingInspection(selectedServiceType);\n\n const onClose = useCallback(() => {\n navigate(-1);\n }, [navigate]);\n\n // clear previous state after close\n useEffect(() => {\n const reset = () => {\n setSelectedStep(1);\n setSelectedServiceType('');\n setAuthClient(defaultAuthClient);\n };\n if (openedStateRef.current === false && isModalOpened) {\n reset();\n }\n // eslint-disable-next-line better-mutation/no-mutation\n openedStateRef.current = isModalOpened;\n\n return reset;\n }, [isModalOpened]);\n\n useEffect(() => {\n if (InterceptOnCreate && serviceId) {\n setIsInterceptOnCreateOpen(true);\n }\n }, [InterceptOnCreate, serviceId]);\n\n const onCreateService = async (service) => {\n const type = selectedServiceType.id.match(/.+v1/);\n const payload = buildPayload(service, type[0], did, services);\n try {\n setCreateServiceInProgress(true);\n const result = await createService(\n dataResources.SERVICES,\n {\n data: {\n organizationId: did,\n payload,\n },\n },\n { returnPromise: true },\n );\n setCreateServiceInProgress(false);\n setServiceId(result.id);\n if (result.authClient) {\n setAuthClient(result.authClient);\n } else {\n setSelectedCAO(service.serviceEndpoint.split('#')[0]);\n }\n onServiceCreated();\n } catch (e) {\n setCreateServiceInProgress(false);\n }\n };\n\n return (\n <>\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n disableCloseButton={createServiceInProgress}\n >\n {selectedStep === 1 && (\n <ServiceTypeSelection\n selectedServiceType={selectedServiceType}\n setSelectedServiceType={setSelectedServiceType}\n isLoading={isLoadingCAO}\n handleNext={() => setSelectedStep(2)}\n />\n )}\n {selectedStep === 2 && (\n <ServiceEndpointSelection\n credentialAgentOperators={credentialAgentOperators}\n selectedServiceType={selectedServiceType}\n inProgress={createServiceInProgress}\n onCreate={onCreateService}\n handleBack={() => setSelectedStep(1)}\n />\n )}\n </Popup>\n\n <InterceptOnCreate\n isInterceptOnCreateOpen={isInterceptOnCreateOpen}\n serviceId={serviceId}\n onNext={() => setIsKeysPopupOpened(true)}\n onClose={() => {\n redirect('list', 'services');\n }}\n isIssueOrInspection={isIssuingOrInspection}\n selectedCAO={selectedCAO}\n isCAO={isCAO}\n />\n\n <SecretKeysPopup\n isOpen={isKeysPopupOpened}\n secretKeys={{ authClients: [authClient] }}\n onClose={() => {\n setIsKeysPopupOpened(false);\n navigate(-1);\n }}\n wording={{\n title:\n // eslint-disable-next-line max-len\n 'Here are your secret identifiers. Please keep a copy of these as they will not be availableonce you close this dialog. You may need to pass this to the admin of your Credential Agent.',\n subtitle: 'Download or copy your secret encryption keys and keep them somewhere safe.',\n }}\n warningWording={{\n title: 'You must download a copy of your keys before exiting',\n subtitle:\n 'They will not be available again and are critical for managing your organization data.',\n }}\n />\n </>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2 },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nServiceCreateForm.propTypes = {\n onServiceCreated: PropTypes.func,\n services: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n }),\n ).isRequired,\n InterceptOnCreate: PropTypes.elementType,\n};\n\nexport default ServiceCreateForm;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState } from 'react';\nimport { useDelete } from 'react-admin';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\n\nconst useDeleteService = (refetch) => {\n const [did] = useSelectedOrganization();\n const [serviceToDelete, setServiceToDelete] = useState(null);\n const [isDeletingService, setIsDeletingService] = useState(false);\n const [deleteOne] = useDelete(\n dataResources.SERVICES,\n {\n id: serviceToDelete,\n },\n {\n onSettled: () =>\n refetch().finally(() => {\n setIsDeletingService(false);\n setServiceToDelete(null);\n }),\n },\n );\n\n const handleServiceDeleteConfirm = async () => {\n setIsDeletingService(true);\n try {\n await deleteOne(dataResources.SERVICES, {\n id: serviceToDelete.id,\n previousData: {\n organizationId: did,\n },\n });\n } catch (e) {\n setIsDeletingService(false);\n throw e;\n }\n };\n\n return { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete };\n};\n\nexport default useDeleteService;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { Box, Button, Container, Stack, Typography } from '@mui/material';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useGetOne, useRedirect, useUpdate } from 'react-admin';\nimport PropTypes from 'prop-types';\nimport { omit } from 'lodash-es';\n\nimport ListItem from '@/components/common/ListItem.jsx';\nimport Loading from '@/components/Loading.jsx';\nimport ServicesEdit from '@/components/services/ServicesEdit.jsx';\nimport ServicesDelete from '@/components/services/ServicesDelete.jsx';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useParticipantAgreementState from '@/state/participantAgreementState.js';\nimport ServiceCreateForm from './ServiceCreateForm.jsx';\nimport { serviceTypeTitlesMap } from '../../utils/serviceTypes.js';\nimport { buildServiceContent } from './utils/buildServiceContent.js';\nimport useDeleteService from './useDeleteService.js';\n\nconst SAVE_ERROR_MESSAGE =\n 'We were unable to update your service with the details provided. Please check to ensure you have provided valid information and then try again.';\n\nconst getAmountTitle = (total) => `${total} active service${total > 1 ? 's' : ''}`;\n\nconst ServicesList = ({\n // override props, defaulting to your internal components\n EditComponent = ServicesEdit,\n CreateComponent = ServiceCreateForm,\n DeleteComponent = ServicesDelete,\n AdditionalServiceProperties = {},\n}) => {\n const [params, setParams] = useSearchParams();\n const currentlyEditableServiceId = params.get('id');\n const [did] = useSelectedOrganization();\n\n const [, setParticipantAgreementApproved] = useParticipantAgreementState();\n\n const {\n data,\n isLoading,\n isFetching,\n refetch: refetchOrganizationServices,\n } = useGetOne('organizations', { id: did }, { enabled: !!did });\n\n const { handleServiceDeleteConfirm, isDeletingService, serviceToDelete, setServiceToDelete } =\n useDeleteService(refetchOrganizationServices);\n\n const services = useMemo(() => data?.services || [], [data?.services]);\n const servicesActivated = useMemo(\n () =>\n services.map((item) => ({\n ...item,\n activated: data?.activatedServiceIds?.includes(item.id) || false,\n })),\n [services, data],\n );\n\n const totalActivatedServices = servicesActivated.filter(({ activated }) => activated).length;\n const currentlyEditableService = useMemo(\n () =>\n currentlyEditableServiceId\n ? services.find((item) => item.id === currentlyEditableServiceId)\n : null,\n [services, currentlyEditableServiceId],\n );\n\n const [updateService] = useUpdate(undefined, undefined, {\n onSuccess: () => {\n setParticipantAgreementApproved(true);\n\n refetchOrganizationServices();\n },\n });\n\n const serviceTitle = (service) => {\n if (service.type === 'VlcContactIssuer_v1') {\n if (service.credentialTypes?.includes('EmailV1.0')) {\n return 'Primary Source Email Issuer (eg. Email Service Provider)';\n }\n return 'Primary Source Phone Issuer (eg. Telco)';\n }\n return serviceTypeTitlesMap[service.type] || service.type;\n };\n\n // eslint-disable-next-line consistent-return\n const onSave = async (payload) => {\n try {\n await updateService(\n dataResources.SERVICES,\n {\n id: currentlyEditableService.id,\n data: {\n organizationId: did,\n payload: omit(payload, ['id', 'type']),\n },\n },\n { returnPromise: true },\n );\n } catch (e) {\n return {\n serviceEndpoint: SAVE_ERROR_MESSAGE,\n };\n }\n };\n\n const editAction = useMemo(\n () => ({\n title: 'EDIT',\n icon: <EditIcon />,\n action: (id) => setParams({ id }),\n }),\n [setParams],\n );\n\n const deleteAction = useMemo(\n () => ({\n title: 'DELETE',\n icon: <DeleteIcon />,\n action: (id) => setServiceToDelete(id),\n }),\n [setServiceToDelete],\n );\n\n const isLoadingVisible = isLoading || isFetching;\n\n const redirect = useRedirect();\n const handleCloseEdit = () => {\n setParams({});\n };\n\n return (\n <Container maxWidth=\"xl\" sx={{ mt: 5 }}>\n <Typography variant=\"h3\">Manage Services</Typography>\n <Box sx={{ mt: 2, mb: 4, maxWidth: '720px' }}>\n <Typography variant=\"subtitle1\">\n Setup the services your organization is to be offering across the Velocity Network™:\n Issuing, Verifying, Operating a Credential Agent and/or operating a Node.\n </Typography>\n </Box>\n <Stack\n sx={{ mb: 2 }}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"flex-end\"\n >\n <Button variant=\"outlined\" onClick={() => redirect('create', 'services')}>\n Add service +\n </Button>\n {!!totalActivatedServices && (\n <Typography color=\"secondary.light\" sx={{ fontSize: 14 }}>\n {getAmountTitle(totalActivatedServices)}\n </Typography>\n )}\n </Stack>\n {isLoadingVisible && <Loading sx={{ pt: '60px' }} />}\n {!isLoadingVisible &&\n servicesActivated.map((service) => (\n <ListItem\n key={service.id}\n id={service.id}\n title={serviceTitle(service)}\n status={\n service.activated\n ? { title: 'ACTIVATED', color: 'primary.success' }\n : { title: 'INACTIVE', color: 'primary.main' }\n }\n showActions\n actions={[editAction, deleteAction]}\n content={[\n [\n { name: 'service id', value: service.id, isLink: false },\n { name: 'service endpoint', value: service.serviceEndpoint, isLink: false },\n ...buildServiceContent(service.credentialTypes, 'credential types'),\n ...buildServiceContent(service.name, 'wallet name'),\n ...buildServiceContent(service.logoUrl, 'logo url', true),\n ...buildServiceContent(service.supportedExchangeProtocols, 'protocols'),\n ...buildServiceContent(service.playStoreUrl, 'play store url'),\n ...buildServiceContent(service.googlePlayId, 'google play id'),\n ...buildServiceContent(service.appleAppStoreUrl, 'apple app store url'),\n ...buildServiceContent(service.appleAppId, 'apple app id'),\n ...(AdditionalServiceProperties && AdditionalServiceProperties[service.type]\n ? [\n {\n name: AdditionalServiceProperties[service.type]?.name,\n value: AdditionalServiceProperties[service.type]?.value,\n isLink: AdditionalServiceProperties[service.type]?.isLink || false,\n },\n ]\n : []),\n ],\n ]}\n />\n ))}\n <EditComponent\n onClose={handleCloseEdit}\n onSave={onSave}\n selectedService={currentlyEditableService}\n />\n <CreateComponent onServiceCreated={refetchOrganizationServices} services={services} />\n <DeleteComponent\n isLoading={isDeletingService}\n onClose={() => setServiceToDelete(null)}\n onConfirm={handleServiceDeleteConfirm}\n selectedService={serviceToDelete}\n />\n </Container>\n );\n};\n// eslint-disable-next-line better-mutation/no-mutation\nServicesList.propTypes = {\n EditComponent: PropTypes.elementType,\n CreateComponent: PropTypes.elementType,\n DeleteComponent: PropTypes.elementType,\n AdditionalServiceProperties: PropTypes.object,\n};\n\nexport default ServicesList;\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verii/components-organizations-registrar",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"@testing-library/user-event": "14.6.1",
|
|
104
104
|
"@types/react": "19.1.12",
|
|
105
105
|
"@types/react-dom": "19.1.9",
|
|
106
|
-
"@verii/tests-helpers": "1.0.
|
|
106
|
+
"@verii/tests-helpers": "1.0.3",
|
|
107
107
|
"@vitejs/plugin-react-swc": "4.0.1",
|
|
108
108
|
"eslint": "8.57.1",
|
|
109
109
|
"eslint-config-airbnb-base": "14.2.1",
|
|
@@ -130,5 +130,5 @@
|
|
|
130
130
|
"lib"
|
|
131
131
|
]
|
|
132
132
|
},
|
|
133
|
-
"gitHead": "
|
|
133
|
+
"gitHead": "f36f9bdd1a1ba6657cb79b90d2130d98a7aa596d"
|
|
134
134
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.Auy7hQ9Z.js","sources":["../../src/components/common/Chip.jsx","../../src/components/common/ListItem.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Chip } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nconst CustomChip = ({ label, color }) => (\n <Chip\n label={label}\n variant=\"outlined\"\n component=\"div\"\n sx={{\n color,\n borderColor: color,\n width: 'fit-content',\n padding: 1,\n }}\n />\n);\n\nexport default CustomChip;\n\n// eslint-disable-next-line better-mutation/no-mutation\nCustomChip.propTypes = {\n label: PropTypes.string,\n color: PropTypes.string,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable complexity */\nimport {\n Button,\n Card,\n CardActions,\n CardContent,\n Divider,\n Stack,\n Typography,\n Box,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport Chip from './Chip.jsx';\n\nconst ListItemDeleted = (onUndoDelete, undoText) => (\n <Stack alignItems=\"center\" sx={sx.undoContainer}>\n <Typography sx={sx.undoText}>{undoText || 'Item was deleted'}</Typography>\n <Button onClick={onUndoDelete} variant=\"contained\" elevation={0} sx={sx.undoButton}>\n UNDO\n </Button>\n </Stack>\n);\n\nconst ListItem = ({\n id,\n title,\n status,\n date,\n email,\n content,\n showActions,\n actions,\n markForDelete,\n onUndoDelete,\n undoText,\n}) => {\n return (\n <Card sx={sx.card} elevation={3}>\n <Stack\n direction=\"row\"\n width=\"100%\"\n sx={{\n ...(markForDelete && { visibility: 'hidden' }),\n }}\n >\n <Stack sx={{ flex: 1 }}>\n <CardContent sx={sx.cardContent}>\n <Stack\n flexDirection=\"row\"\n key={`${id}-${title}`}\n justifyContent=\"space-between\"\n sx={{ py: 1, pb: 1.5 }}\n >\n <Typography component=\"div\" variant=\"h4\" alignSelf=\"center\">\n {title}\n </Typography>\n <Stack\n flexDirection=\"column\"\n alignItems=\"flex-end\"\n sx={{ height: 'fit-content', mb: -10 }}\n key={`${id}-${title}`}\n >\n {!!status.title && (\n <Stack sx={{ pb: 1.5 }}>\n <Chip label={status.title} color={status.color} />\n </Stack>\n )}\n {!!email && (\n <>\n <Typography\n variant=\"body2\"\n alignSelf=\"center\"\n component=\"div\"\n sx={{ py: 0.5, pb: 0.5 }}\n >\n {email}\n </Typography>\n <Typography variant=\"caption\">{date}</Typography>\n </>\n )}\n </Stack>\n </Stack>\n\n {content.map((service, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i}>\n {service.map(({ name, value }) => (\n <Stack flexDirection=\"row\" key={`${id}-${value}`} sx={{ py: 1 }}>\n <Typography sx={sx.name}>{name}</Typography>\n <Typography sx={sx.value}>{value}</Typography>\n </Stack>\n ))}\n {i < content.length - 1 && <Divider flexItem sx={{ my: 1 }} />}\n </Box>\n ))}\n </CardContent>\n </Stack>\n {showActions && (\n <>\n <Divider orientation=\"vertical\" flexItem />\n <CardActions sx={{ flexBasis: 'fit-content', p: 0 }}>\n <Stack justifyContent=\"center\" sx={{ px: 4, py: '20px' }}>\n {actions[0] && (\n <Button\n variant=\"outlined\"\n sx={sx.button}\n startIcon={actions[0].icon}\n onClick={() => actions[0].action(id)}\n >\n {actions[0].title}\n </Button>\n )}\n {actions[1] && (\n <Button\n variant=\"contained\"\n startIcon={actions[1].icon}\n onClick={() => actions[1].action(id)}\n >\n {actions[1].title}\n </Button>\n )}\n </Stack>\n </CardActions>\n </>\n )}\n </Stack>\n {markForDelete && ListItemDeleted(onUndoDelete, undoText)}\n </Card>\n );\n};\n\nconst sx = {\n card: { display: 'flex', my: 2, position: 'relative' },\n cardContent: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n px: 4,\n py: 3,\n },\n name: {\n textTransform: 'uppercase',\n flexBasis: '180px',\n fontWeight: 500,\n pr: 1,\n },\n button: {\n mb: '10px',\n color: 'secondary.light',\n borderColor: 'secondary.light',\n },\n value: { flex: 1, fontWeight: 600, overflowWrap: 'anywhere' },\n undoButton: {\n backgroundColor: 'background.light',\n boxShadow: 'none',\n color: 'secondary.main',\n px: 4,\n width: 'fit-content',\n mt: 3,\n fontWeight: '600',\n },\n undoContainer: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n undoText: { color: 'secondary.light', fontWeight: '500' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nListItem.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string.isRequired,\n status: PropTypes.shape({\n title: PropTypes.string,\n color: PropTypes.string,\n }),\n date: PropTypes.string,\n email: PropTypes.string,\n showActions: PropTypes.bool.isRequired,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n icon: PropTypes.element,\n action: PropTypes.func,\n }),\n ),\n content: PropTypes.arrayOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ),\n ),\n markForDelete: PropTypes.bool,\n onUndoDelete: PropTypes.func,\n undoText: PropTypes.string,\n};\n\nexport default ListItem;\n"],"names":["jsx","Chip","jsxs","Stack","Typography","Button","Card","CardContent","Fragment","Box","Divider","CardActions"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.DgXqrom8.js","sources":["../../src/components/common/Chip.jsx","../../src/components/common/ListItem.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Chip } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nconst CustomChip = ({ label, color }) => (\n <Chip\n label={label}\n variant=\"outlined\"\n component=\"div\"\n sx={{\n color,\n borderColor: color,\n width: 'fit-content',\n padding: 1,\n }}\n />\n);\n\nexport default CustomChip;\n\n// eslint-disable-next-line better-mutation/no-mutation\nCustomChip.propTypes = {\n label: PropTypes.string,\n color: PropTypes.string,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable complexity */\nimport {\n Button,\n Card,\n CardActions,\n CardContent,\n Divider,\n Stack,\n Typography,\n Box,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport Chip from './Chip.jsx';\n\nconst ListItemDeleted = (onUndoDelete, undoText) => (\n <Stack alignItems=\"center\" sx={sx.undoContainer}>\n <Typography sx={sx.undoText}>{undoText || 'Item was deleted'}</Typography>\n <Button onClick={onUndoDelete} variant=\"contained\" elevation={0} sx={sx.undoButton}>\n UNDO\n </Button>\n </Stack>\n);\n\nconst ListItem = ({\n id,\n title,\n status,\n date,\n email,\n content,\n showActions,\n actions,\n markForDelete,\n onUndoDelete,\n undoText,\n}) => {\n return (\n <Card sx={sx.card} elevation={3}>\n <Stack\n direction=\"row\"\n width=\"100%\"\n sx={{\n ...(markForDelete && { visibility: 'hidden' }),\n }}\n >\n <Stack sx={{ flex: 1 }}>\n <CardContent sx={sx.cardContent}>\n <Stack\n flexDirection=\"row\"\n key={`${id}-${title}`}\n justifyContent=\"space-between\"\n sx={{ py: 1, pb: 1.5 }}\n >\n <Typography component=\"div\" variant=\"h4\" alignSelf=\"center\">\n {title}\n </Typography>\n <Stack\n flexDirection=\"column\"\n alignItems=\"flex-end\"\n sx={{ height: 'fit-content', mb: -10 }}\n key={`${id}-${title}`}\n >\n {!!status.title && (\n <Stack sx={{ pb: 1.5 }}>\n <Chip label={status.title} color={status.color} />\n </Stack>\n )}\n {!!email && (\n <>\n <Typography\n variant=\"body2\"\n alignSelf=\"center\"\n component=\"div\"\n sx={{ py: 0.5, pb: 0.5 }}\n >\n {email}\n </Typography>\n <Typography variant=\"caption\">{date}</Typography>\n </>\n )}\n </Stack>\n </Stack>\n\n {content.map((service, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i}>\n {service.map(({ name, value }) => (\n <Stack flexDirection=\"row\" key={`${id}-${value}`} sx={{ py: 1 }}>\n <Typography sx={sx.name}>{name}</Typography>\n <Typography sx={sx.value}>{value}</Typography>\n </Stack>\n ))}\n {i < content.length - 1 && <Divider flexItem sx={{ my: 1 }} />}\n </Box>\n ))}\n </CardContent>\n </Stack>\n {showActions && (\n <>\n <Divider orientation=\"vertical\" flexItem />\n <CardActions sx={{ flexBasis: 'fit-content', p: 0 }}>\n <Stack justifyContent=\"center\" sx={{ px: 4, py: '20px' }}>\n {actions[0] && (\n <Button\n variant=\"outlined\"\n sx={sx.button}\n startIcon={actions[0].icon}\n onClick={() => actions[0].action(id)}\n >\n {actions[0].title}\n </Button>\n )}\n {actions[1] && (\n <Button\n variant=\"contained\"\n startIcon={actions[1].icon}\n onClick={() => actions[1].action(id)}\n >\n {actions[1].title}\n </Button>\n )}\n </Stack>\n </CardActions>\n </>\n )}\n </Stack>\n {markForDelete && ListItemDeleted(onUndoDelete, undoText)}\n </Card>\n );\n};\n\nconst sx = {\n card: { display: 'flex', my: 2, position: 'relative' },\n cardContent: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n px: 4,\n py: 3,\n },\n name: {\n textTransform: 'uppercase',\n flexBasis: '180px',\n fontWeight: 500,\n pr: 1,\n },\n button: {\n mb: '10px',\n color: 'secondary.light',\n borderColor: 'secondary.light',\n },\n value: { flex: 1, fontWeight: 600, overflowWrap: 'anywhere' },\n undoButton: {\n backgroundColor: 'background.light',\n boxShadow: 'none',\n color: 'secondary.main',\n px: 4,\n width: 'fit-content',\n mt: 3,\n fontWeight: '600',\n },\n undoContainer: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n undoText: { color: 'secondary.light', fontWeight: '500' },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nListItem.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string.isRequired,\n status: PropTypes.shape({\n title: PropTypes.string,\n color: PropTypes.string,\n }),\n date: PropTypes.string,\n email: PropTypes.string,\n showActions: PropTypes.bool.isRequired,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n icon: PropTypes.element,\n action: PropTypes.func,\n }),\n ),\n content: PropTypes.arrayOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ),\n ),\n markForDelete: PropTypes.bool,\n onUndoDelete: PropTypes.func,\n undoText: PropTypes.string,\n};\n\nexport default ListItem;\n"],"names":["Chip"],"mappings":"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"}
|