@backstage-community/plugin-bazaar 0.9.1 → 0.11.0
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/CHANGELOG.md +12 -0
- package/dist/components/About/About.esm.js +21 -9
- package/dist/components/About/About.esm.js.map +1 -1
- package/dist/components/AddProjectDialog/AddProjectDialog.esm.js +4 -3
- package/dist/components/AddProjectDialog/AddProjectDialog.esm.js.map +1 -1
- package/dist/components/BazaarOverviewCard/BazaarOverviewCard.esm.js +18 -17
- package/dist/components/BazaarOverviewCard/BazaarOverviewCard.esm.js.map +1 -1
- package/dist/components/CardContentFields/AboutField.esm.js +6 -3
- package/dist/components/CardContentFields/AboutField.esm.js.map +1 -1
- package/dist/components/CardContentFields/CardContentFields.esm.js +65 -51
- package/dist/components/CardContentFields/CardContentFields.esm.js.map +1 -1
- package/dist/components/ConfirmationDialog/ConfirmationDialog.esm.js +12 -7
- package/dist/components/ConfirmationDialog/ConfirmationDialog.esm.js.map +1 -1
- package/dist/components/CustomDialogTitle/CustomDialogTitle.esm.js +13 -10
- package/dist/components/CustomDialogTitle/CustomDialogTitle.esm.js.map +1 -1
- package/dist/components/DateSelector/DateSelector.esm.js +5 -5
- package/dist/components/DateSelector/DateSelector.esm.js.map +1 -1
- package/dist/components/DoubleDateSelector/DoubleDateSelector.esm.js +6 -2
- package/dist/components/DoubleDateSelector/DoubleDateSelector.esm.js.map +1 -1
- package/dist/components/EditProjectDialog/EditProjectDialog.esm.js +40 -36
- package/dist/components/EditProjectDialog/EditProjectDialog.esm.js.map +1 -1
- package/dist/components/EntityBazaarInfoCard/EntityBazaarInfoCard.esm.js +4 -3
- package/dist/components/EntityBazaarInfoCard/EntityBazaarInfoCard.esm.js.map +1 -1
- package/dist/components/EntityBazaarInfoContent/EntityBazaarInfoContent.esm.js +61 -54
- package/dist/components/EntityBazaarInfoContent/EntityBazaarInfoContent.esm.js.map +1 -1
- package/dist/components/HomePage/HomePage.esm.js +13 -10
- package/dist/components/HomePage/HomePage.esm.js.map +1 -1
- package/dist/components/HomePageBazaarInfoCard/HomePageBazaarInfoCard.esm.js +72 -59
- package/dist/components/HomePageBazaarInfoCard/HomePageBazaarInfoCard.esm.js.map +1 -1
- package/dist/components/InputField/InputField.esm.js +3 -3
- package/dist/components/InputField/InputField.esm.js.map +1 -1
- package/dist/components/InputSelector/InputSelector.esm.js +28 -25
- package/dist/components/InputSelector/InputSelector.esm.js.map +1 -1
- package/dist/components/LinkProjectDialog/LinkProjectDialog.esm.js +23 -18
- package/dist/components/LinkProjectDialog/LinkProjectDialog.esm.js.map +1 -1
- package/dist/components/ProjectCard/ProjectCard.esm.js +31 -20
- package/dist/components/ProjectCard/ProjectCard.esm.js.map +1 -1
- package/dist/components/ProjectDialog/ProjectDialog.esm.js +112 -96
- package/dist/components/ProjectDialog/ProjectDialog.esm.js.map +1 -1
- package/dist/components/ProjectPreview/ProjectPreview.esm.js +32 -28
- package/dist/components/ProjectPreview/ProjectPreview.esm.js.map +1 -1
- package/dist/components/ProjectSelector/ProjectSelector.esm.js +5 -5
- package/dist/components/ProjectSelector/ProjectSelector.esm.js.map +1 -1
- package/dist/components/SortMethodSelector/SortMethodSelector.esm.js +11 -9
- package/dist/components/SortMethodSelector/SortMethodSelector.esm.js.map +1 -1
- package/dist/components/SortView/SortView.esm.js +63 -52
- package/dist/components/SortView/SortView.esm.js.map +1 -1
- package/dist/components/StatusTag/StatusTag.esm.js +5 -5
- package/dist/components/StatusTag/StatusTag.esm.js.map +1 -1
- package/dist/components/UserSelector/UserSelector.esm.js +7 -6
- package/dist/components/UserSelector/UserSelector.esm.js.map +1 -1
- package/dist/components/VirtualizedListbox/VirtualizedListbox.esm.js +8 -7
- package/dist/components/VirtualizedListbox/VirtualizedListbox.esm.js.map +1 -1
- package/dist/index.d.ts +5 -7
- package/package.json +16 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import FormControl from '@material-ui/core/FormControl';
|
|
3
3
|
import { Controller } from 'react-hook-form';
|
|
4
4
|
import { KeyboardDatePicker } from '@material-ui/pickers/DatePicker';
|
|
@@ -9,12 +9,12 @@ import ClearIcon from '@material-ui/icons/Clear';
|
|
|
9
9
|
|
|
10
10
|
const DateSelector = ({ name, control, setValue }) => {
|
|
11
11
|
const label = `${name.charAt(0).toLocaleUpperCase("en-US") + name.slice(1, name.indexOf("D"))} date`;
|
|
12
|
-
return /* @__PURE__ */
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
13
|
Controller,
|
|
14
14
|
{
|
|
15
15
|
name,
|
|
16
16
|
control,
|
|
17
|
-
render: ({ field }) => /* @__PURE__ */
|
|
17
|
+
render: ({ field }) => /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(MuiPickersUtilsProvider, { utils: LuxonUtils, children: /* @__PURE__ */ jsx(
|
|
18
18
|
KeyboardDatePicker,
|
|
19
19
|
{
|
|
20
20
|
disableToolbar: true,
|
|
@@ -25,13 +25,13 @@ const DateSelector = ({ name, control, setValue }) => {
|
|
|
25
25
|
setValue(name, date?.toISO());
|
|
26
26
|
},
|
|
27
27
|
InputProps: {
|
|
28
|
-
endAdornment: /* @__PURE__ */
|
|
28
|
+
endAdornment: /* @__PURE__ */ jsx(IconButton, { onClick: () => setValue(name, null), children: /* @__PURE__ */ jsx(ClearIcon, {}) })
|
|
29
29
|
},
|
|
30
30
|
InputAdornmentProps: {
|
|
31
31
|
position: "start"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
)))
|
|
34
|
+
) }) })
|
|
35
35
|
}
|
|
36
36
|
);
|
|
37
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateSelector.esm.js","sources":["../../../src/components/DateSelector/DateSelector.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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
|
|
1
|
+
{"version":3,"file":"DateSelector.esm.js","sources":["../../../src/components/DateSelector/DateSelector.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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 FormControl from '@material-ui/core/FormControl';\nimport { Controller, Control, UseFormSetValue } from 'react-hook-form';\nimport { FormValues } from '../../types';\nimport { KeyboardDatePicker } from '@material-ui/pickers/DatePicker';\nimport MuiPickersUtilsProvider from '@material-ui/pickers/MuiPickersUtilsProvider';\nimport LuxonUtils from '@date-io/luxon';\nimport IconButton from '@material-ui/core/IconButton';\nimport ClearIcon from '@material-ui/icons/Clear';\n\ntype Props = {\n name: 'startDate' | 'endDate';\n control: Control<FormValues, object>;\n setValue: UseFormSetValue<FormValues>;\n};\n\nexport const DateSelector = ({ name, control, setValue }: Props) => {\n const label = `${\n name.charAt(0).toLocaleUpperCase('en-US') + name.slice(1, name.indexOf('D'))\n } date`;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <FormControl>\n <MuiPickersUtilsProvider utils={LuxonUtils}>\n <KeyboardDatePicker\n disableToolbar\n format=\"dd-MM-yyyy\"\n label={label}\n value={field.value}\n onChange={date => {\n setValue(name, date?.toISO());\n }}\n InputProps={{\n endAdornment: (\n <IconButton onClick={() => setValue(name, null)}>\n <ClearIcon />\n </IconButton>\n ),\n }}\n InputAdornmentProps={{\n position: 'start',\n }}\n />\n </MuiPickersUtilsProvider>\n </FormControl>\n )}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AA+BO,MAAM,eAAe,CAAC,EAAE,IAAM,EAAA,OAAA,EAAS,UAAsB,KAAA;AAClE,EAAA,MAAM,QAAQ,CACZ,EAAA,IAAA,CAAK,MAAO,CAAA,CAAC,EAAE,iBAAkB,CAAA,OAAO,CAAI,GAAA,IAAA,CAAK,MAAM,CAAG,EAAA,IAAA,CAAK,OAAQ,CAAA,GAAG,CAAC,CAC7E,CAAA,KAAA,CAAA;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,KAAM,EAAA,yBACd,WACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,uBAAwB,EAAA,EAAA,KAAA,EAAO,UAC9B,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,cAAc,EAAA,IAAA;AAAA,UACd,MAAO,EAAA,YAAA;AAAA,UACP,KAAA;AAAA,UACA,OAAO,KAAM,CAAA,KAAA;AAAA,UACb,UAAU,CAAQ,IAAA,KAAA;AAChB,YAAS,QAAA,CAAA,IAAA,EAAM,IAAM,EAAA,KAAA,EAAO,CAAA;AAAA,WAC9B;AAAA,UACA,UAAY,EAAA;AAAA,YACV,YAAA,kBACG,GAAA,CAAA,UAAA,EAAA,EAAW,OAAS,EAAA,MAAM,QAAS,CAAA,IAAA,EAAM,IAAI,CAAA,EAC5C,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA,EAAU,CACb,EAAA;AAAA,WAEJ;AAAA,UACA,mBAAqB,EAAA;AAAA,YACnB,QAAU,EAAA;AAAA;AACZ;AAAA,SAEJ,CACF,EAAA;AAAA;AAAA,GAEJ;AAEJ;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { DateSelector } from '../DateSelector/DateSelector.esm.js';
|
|
3
3
|
import Typography from '@material-ui/core/Typography';
|
|
4
4
|
import { makeStyles } from '@material-ui/core/styles';
|
|
@@ -27,7 +27,11 @@ const useStyles = makeStyles({
|
|
|
27
27
|
});
|
|
28
28
|
const DoubleDateSelector = ({ control, setValue }) => {
|
|
29
29
|
const classes = useStyles();
|
|
30
|
-
return /* @__PURE__ */
|
|
30
|
+
return /* @__PURE__ */ jsxs("div", { className: classes.container, children: [
|
|
31
|
+
/* @__PURE__ */ jsx("div", { className: classes.startDate, children: /* @__PURE__ */ jsx(DateSelector, { name: "startDate", control, setValue }) }),
|
|
32
|
+
/* @__PURE__ */ jsx(Typography, { className: classes.dash, children: "-" }),
|
|
33
|
+
/* @__PURE__ */ jsx("div", { className: classes.endDate, children: /* @__PURE__ */ jsx(DateSelector, { name: "endDate", control, setValue }) })
|
|
34
|
+
] });
|
|
31
35
|
};
|
|
32
36
|
|
|
33
37
|
export { DoubleDateSelector };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoubleDateSelector.esm.js","sources":["../../../src/components/DoubleDateSelector/DoubleDateSelector.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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
|
|
1
|
+
{"version":3,"file":"DoubleDateSelector.esm.js","sources":["../../../src/components/DoubleDateSelector/DoubleDateSelector.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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 { Control, UseFormSetValue } from 'react-hook-form';\nimport { FormValues } from '../../types';\nimport { DateSelector } from '../DateSelector/DateSelector';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\n\ntype Props = {\n control: Control<FormValues, object>;\n setValue: UseFormSetValue<FormValues>;\n};\n\nconst useStyles = makeStyles({\n container: {\n marginTop: '0.25rem',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n startDate: {\n float: 'left',\n },\n endDate: {\n float: 'right',\n },\n dash: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n fontSize: '1.5rem',\n margin: '0 1rem',\n },\n});\n\nexport const DoubleDateSelector = ({ control, setValue }: Props) => {\n const classes = useStyles();\n\n return (\n <div className={classes.container}>\n <div className={classes.startDate}>\n <DateSelector name=\"startDate\" control={control} setValue={setValue} />\n </div>\n\n <Typography className={classes.dash}>-</Typography>\n <div className={classes.endDate}>\n <DateSelector name=\"endDate\" control={control} setValue={setValue} />\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AA2BA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,SAAW,EAAA;AAAA,IACT,SAAW,EAAA,SAAA;AAAA,IACX,SAAW,EAAA,QAAA;AAAA,IACX,OAAS,EAAA,MAAA;AAAA,IACT,aAAe,EAAA,KAAA;AAAA,IACf,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,SAAW,EAAA;AAAA,IACT,KAAO,EAAA;AAAA,GACT;AAAA,EACA,OAAS,EAAA;AAAA,IACP,KAAO,EAAA;AAAA,GACT;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA,MAAA;AAAA,IACT,cAAgB,EAAA,QAAA;AAAA,IAChB,UAAY,EAAA,QAAA;AAAA,IACZ,QAAU,EAAA,QAAA;AAAA,IACV,MAAQ,EAAA;AAAA;AAEZ,CAAC,CAAA;AAEM,MAAM,kBAAqB,GAAA,CAAC,EAAE,OAAA,EAAS,UAAsB,KAAA;AAClE,EAAA,MAAM,UAAU,SAAU,EAAA;AAE1B,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,OAAA,CAAQ,SACtB,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,OAAA,CAAQ,SACtB,EAAA,QAAA,kBAAA,GAAA,CAAC,gBAAa,IAAK,EAAA,WAAA,EAAY,OAAkB,EAAA,QAAA,EAAoB,CACvE,EAAA,CAAA;AAAA,oBAEC,GAAA,CAAA,UAAA,EAAA,EAAW,SAAW,EAAA,OAAA,CAAQ,MAAM,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,oBACtC,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,OAAA,EACtB,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA,EAAa,IAAK,EAAA,SAAA,EAAU,OAAkB,EAAA,QAAA,EAAoB,CACrE,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
2
3
|
import { useApi, alertApiRef } from '@backstage/core-plugin-api';
|
|
3
4
|
import { ProjectDialog } from '../ProjectDialog/ProjectDialog.esm.js';
|
|
4
5
|
import { bazaarApiRef } from '../../api.esm.js';
|
|
@@ -73,42 +74,45 @@ const EditProjectDialog = ({
|
|
|
73
74
|
display: "transient"
|
|
74
75
|
});
|
|
75
76
|
};
|
|
76
|
-
return /* @__PURE__ */
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
77
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
78
|
+
/* @__PURE__ */ jsx(
|
|
79
|
+
ConfirmationDialog,
|
|
80
|
+
{
|
|
81
|
+
open: openDelete,
|
|
82
|
+
handleClose: handleDeleteClose,
|
|
83
|
+
message: [
|
|
84
|
+
"Are you sure you want to delete ",
|
|
85
|
+
/* @__PURE__ */ jsx("b", { className: classes.wordBreak, children: bazaarProject.title }, bazaarProject.id),
|
|
86
|
+
" from the Bazaar?"
|
|
87
|
+
],
|
|
88
|
+
type: "delete",
|
|
89
|
+
handleSubmit: handleDeleteSubmit
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ jsx(
|
|
93
|
+
ProjectDialog,
|
|
94
|
+
{
|
|
95
|
+
title: "Edit project",
|
|
96
|
+
handleSave: handleEditSubmit,
|
|
97
|
+
isAddForm: false,
|
|
98
|
+
defaultValues,
|
|
99
|
+
open: openEdit,
|
|
100
|
+
handleClose: handleEditClose,
|
|
101
|
+
deleteButton: /* @__PURE__ */ jsx(
|
|
102
|
+
Button,
|
|
103
|
+
{
|
|
104
|
+
color: "primary",
|
|
105
|
+
type: "submit",
|
|
106
|
+
className: classes.button,
|
|
107
|
+
onClick: () => {
|
|
108
|
+
setOpenDelete(true);
|
|
109
|
+
},
|
|
110
|
+
children: "Delete project"
|
|
106
111
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
));
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
] });
|
|
112
116
|
};
|
|
113
117
|
|
|
114
118
|
export { EditProjectDialog };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditProjectDialog.esm.js","sources":["../../../src/components/EditProjectDialog/EditProjectDialog.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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
|
|
1
|
+
{"version":3,"file":"EditProjectDialog.esm.js","sources":["../../../src/components/EditProjectDialog/EditProjectDialog.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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, useEffect } from 'react';\nimport { useApi, alertApiRef } from '@backstage/core-plugin-api';\nimport { ProjectDialog } from '../ProjectDialog';\nimport { BazaarProject, FormValues } from '../../types';\nimport { bazaarApiRef } from '../../api';\nimport { UseFormGetValues } from 'react-hook-form';\nimport { ConfirmationDialog } from '../ConfirmationDialog';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\n\ntype Props = {\n bazaarProject: BazaarProject;\n openEdit: boolean;\n handleEditClose: () => void;\n handleCardClose?: () => void;\n fetchBazaarProject: () => Promise<BazaarProject | null>;\n};\n\nconst useStyles = makeStyles({\n button: {\n marginLeft: '0',\n marginRight: 'auto',\n },\n wordBreak: {\n wordBreak: 'break-all',\n whiteSpace: 'normal',\n margin: '-0.25rem 0',\n },\n});\n\nexport const EditProjectDialog = ({\n bazaarProject,\n openEdit,\n handleEditClose,\n handleCardClose,\n fetchBazaarProject,\n}: Props) => {\n const classes = useStyles();\n const bazaarApi = useApi(bazaarApiRef);\n const alertApi = useApi(alertApiRef);\n const [openDelete, setOpenDelete] = useState(false);\n const [defaultValues, setDefaultValues] = useState<FormValues>({\n ...bazaarProject,\n startDate: bazaarProject.startDate ?? null,\n endDate: bazaarProject.endDate ?? null,\n });\n\n const handleDeleteClose = () => {\n setOpenDelete(false);\n handleEditClose();\n\n if (handleCardClose) handleCardClose();\n };\n\n const handleDeleteSubmit = async () => {\n await bazaarApi.deleteProject(bazaarProject.id);\n\n handleDeleteClose();\n fetchBazaarProject();\n alertApi.post({\n message: `Deleted project '${bazaarProject.title}' from the Bazaar list`,\n severity: 'success',\n display: 'transient',\n });\n };\n\n useEffect(() => {\n setDefaultValues({\n ...bazaarProject,\n startDate: bazaarProject.startDate ?? null,\n endDate: bazaarProject.endDate ?? null,\n });\n }, [bazaarProject]);\n\n const handleEditSubmit: (\n getValues: UseFormGetValues<FormValues>,\n ) => Promise<void> = async (getValues: UseFormGetValues<FormValues>) => {\n const formValues = getValues();\n\n const updateResponse = await bazaarApi.updateProject({\n ...formValues,\n id: bazaarProject.id,\n entityRef: bazaarProject.entityRef,\n membersCount: bazaarProject.membersCount,\n startDate: formValues?.startDate ?? null,\n endDate: formValues?.endDate ?? null,\n });\n\n if (updateResponse.status === 'ok') fetchBazaarProject();\n handleEditClose();\n alertApi.post({\n message: `Updated project '${formValues.title}' in the Bazaar list`,\n severity: 'success',\n display: 'transient',\n });\n };\n\n return (\n <div>\n <ConfirmationDialog\n open={openDelete}\n handleClose={handleDeleteClose}\n message={[\n 'Are you sure you want to delete ',\n <b key={bazaarProject.id} className={classes.wordBreak}>\n {bazaarProject.title}\n </b>,\n ' from the Bazaar?',\n ]}\n type=\"delete\"\n handleSubmit={handleDeleteSubmit}\n />\n\n <ProjectDialog\n title=\"Edit project\"\n handleSave={handleEditSubmit}\n isAddForm={false}\n defaultValues={defaultValues}\n open={openEdit}\n handleClose={handleEditClose}\n deleteButton={\n <Button\n color=\"primary\"\n type=\"submit\"\n className={classes.button}\n onClick={() => {\n setOpenDelete(true);\n }}\n >\n Delete project\n </Button>\n }\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
2
3
|
import useAsyncFn from 'react-use/esm/useAsyncFn';
|
|
3
4
|
import { useApi } from '@backstage/core-plugin-api';
|
|
4
5
|
import { stringifyEntityRef } from '@backstage/catalog-model';
|
|
@@ -26,13 +27,13 @@ const EntityBazaarInfoCard = () => {
|
|
|
26
27
|
setIsBazaar(isBazaarProject);
|
|
27
28
|
}, [bazaarProject.value]);
|
|
28
29
|
if (isBazaar) {
|
|
29
|
-
return /* @__PURE__ */
|
|
30
|
+
return /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(
|
|
30
31
|
EntityBazaarInfoContent,
|
|
31
32
|
{
|
|
32
33
|
bazaarProject: bazaarProject.value,
|
|
33
34
|
fetchBazaarProject
|
|
34
35
|
}
|
|
35
|
-
));
|
|
36
|
+
) });
|
|
36
37
|
}
|
|
37
38
|
return null;
|
|
38
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityBazaarInfoCard.esm.js","sources":["../../../src/components/EntityBazaarInfoCard/EntityBazaarInfoCard.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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
|
|
1
|
+
{"version":3,"file":"EntityBazaarInfoCard.esm.js","sources":["../../../src/components/EntityBazaarInfoCard/EntityBazaarInfoCard.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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, useEffect } from 'react';\nimport useAsyncFn from 'react-use/esm/useAsyncFn';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { bazaarApiRef } from '../../api';\nimport { EntityBazaarInfoContent } from '../EntityBazaarInfoContent';\nimport Card from '@material-ui/core/Card';\nimport { parseBazaarResponse } from '../../util/parseMethods';\n\n/** @public */\nexport const EntityBazaarInfoCard = () => {\n const { entity } = useEntity();\n const bazaarApi = useApi(bazaarApiRef);\n\n const [bazaarProject, fetchBazaarProject] = useAsyncFn(async () => {\n const response = await bazaarApi.getProjectByRef(\n stringifyEntityRef(entity),\n );\n\n return await parseBazaarResponse(response);\n });\n\n const [isBazaar, setIsBazaar] = useState(bazaarProject.value ?? false);\n\n useEffect(() => {\n fetchBazaarProject();\n }, [fetchBazaarProject]);\n\n useEffect(() => {\n const isBazaarProject = bazaarProject.value !== undefined;\n\n setIsBazaar(isBazaarProject);\n }, [bazaarProject.value]);\n\n if (isBazaar) {\n return (\n <Card>\n <EntityBazaarInfoContent\n bazaarProject={bazaarProject.value}\n fetchBazaarProject={fetchBazaarProject}\n />\n </Card>\n );\n }\n return null;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AA2BO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,SAAU,EAAA;AAC7B,EAAM,MAAA,SAAA,GAAY,OAAO,YAAY,CAAA;AAErC,EAAA,MAAM,CAAC,aAAA,EAAe,kBAAkB,CAAA,GAAI,WAAW,YAAY;AACjE,IAAM,MAAA,QAAA,GAAW,MAAM,SAAU,CAAA,eAAA;AAAA,MAC/B,mBAAmB,MAAM;AAAA,KAC3B;AAEA,IAAO,OAAA,MAAM,oBAAoB,QAAQ,CAAA;AAAA,GAC1C,CAAA;AAED,EAAA,MAAM,CAAC,QAAU,EAAA,WAAW,IAAI,QAAS,CAAA,aAAA,CAAc,SAAS,KAAK,CAAA;AAErE,EAAA,SAAA,CAAU,MAAM;AACd,IAAmB,kBAAA,EAAA;AAAA,GACrB,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,eAAA,GAAkB,cAAc,KAAU,KAAA,KAAA,CAAA;AAEhD,IAAA,WAAA,CAAY,eAAe,CAAA;AAAA,GAC1B,EAAA,CAAC,aAAc,CAAA,KAAK,CAAC,CAAA;AAExB,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,2BACG,IACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,eAAe,aAAc,CAAA,KAAA;AAAA,QAC7B;AAAA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAGJ,EAAO,OAAA,IAAA;AACT;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
2
3
|
import CardHeader from '@material-ui/core/CardHeader';
|
|
3
4
|
import Divider from '@material-ui/core/Divider';
|
|
4
5
|
import IconButton from '@material-ui/core/IconButton';
|
|
@@ -70,12 +71,12 @@ const EntityBazaarInfoContent = ({
|
|
|
70
71
|
const links = [
|
|
71
72
|
{
|
|
72
73
|
label: "Entity page",
|
|
73
|
-
icon: /* @__PURE__ */
|
|
74
|
+
icon: /* @__PURE__ */ jsx(DashboardIcon, {}),
|
|
74
75
|
disabled: true
|
|
75
76
|
},
|
|
76
77
|
{
|
|
77
78
|
label: "Unlink project",
|
|
78
|
-
icon: /* @__PURE__ */
|
|
79
|
+
icon: /* @__PURE__ */ jsx(LinkOffIcon, {}),
|
|
79
80
|
disabled: false,
|
|
80
81
|
onClick: () => {
|
|
81
82
|
setOpenUnlink(true);
|
|
@@ -83,7 +84,7 @@ const EntityBazaarInfoContent = ({
|
|
|
83
84
|
},
|
|
84
85
|
{
|
|
85
86
|
label: isMember ? "Leave" : "Join",
|
|
86
|
-
icon: isMember ? /* @__PURE__ */
|
|
87
|
+
icon: isMember ? /* @__PURE__ */ jsx(ExitToAppIcon, {}) : /* @__PURE__ */ jsx(PersonAddIcon, {}),
|
|
87
88
|
href: "",
|
|
88
89
|
onClick: async () => {
|
|
89
90
|
handleMembersClick();
|
|
@@ -91,13 +92,13 @@ const EntityBazaarInfoContent = ({
|
|
|
91
92
|
},
|
|
92
93
|
{
|
|
93
94
|
label: "Community",
|
|
94
|
-
icon: /* @__PURE__ */
|
|
95
|
+
icon: /* @__PURE__ */ jsx(ChatIcon, {}),
|
|
95
96
|
href: bazaarProject?.community,
|
|
96
97
|
disabled: bazaarProject?.community === "" || !isMember
|
|
97
98
|
},
|
|
98
99
|
{
|
|
99
100
|
label: "Docs",
|
|
100
|
-
icon: /* @__PURE__ */
|
|
101
|
+
icon: /* @__PURE__ */ jsx(Description, {}),
|
|
101
102
|
href: bazaarProject?.docs,
|
|
102
103
|
disabled: bazaarProject?.docs === null || bazaarProject?.docs === ""
|
|
103
104
|
}
|
|
@@ -119,57 +120,63 @@ const EntityBazaarInfoContent = ({
|
|
|
119
120
|
}
|
|
120
121
|
};
|
|
121
122
|
if (members.error) {
|
|
122
|
-
return /* @__PURE__ */
|
|
123
|
+
return /* @__PURE__ */ jsx(Alert, { severity: "error", children: members?.error?.message });
|
|
123
124
|
}
|
|
124
125
|
if (bazaarProject) {
|
|
125
|
-
return /* @__PURE__ */
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
{
|
|
155
|
-
|
|
156
|
-
|
|
126
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
127
|
+
/* @__PURE__ */ jsx(
|
|
128
|
+
EditProjectDialog,
|
|
129
|
+
{
|
|
130
|
+
bazaarProject,
|
|
131
|
+
openEdit,
|
|
132
|
+
handleEditClose,
|
|
133
|
+
fetchBazaarProject
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
openUnlink && /* @__PURE__ */ jsx(
|
|
137
|
+
ConfirmationDialog,
|
|
138
|
+
{
|
|
139
|
+
open: openUnlink,
|
|
140
|
+
handleClose: handleUnlinkClose,
|
|
141
|
+
message: [
|
|
142
|
+
"Are you sure you want to unlink ",
|
|
143
|
+
/* @__PURE__ */ jsx("b", { className: classes.wordBreak, children: parseEntityRef(bazaarProject.entityRef).name }),
|
|
144
|
+
" from ",
|
|
145
|
+
/* @__PURE__ */ jsx("b", { className: classes.wordBreak, children: bazaarProject.title }),
|
|
146
|
+
" ?"
|
|
147
|
+
],
|
|
148
|
+
type: "unlink",
|
|
149
|
+
handleSubmit: handleUnlinkSubmit
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
/* @__PURE__ */ jsx(
|
|
153
|
+
CardHeader,
|
|
154
|
+
{
|
|
155
|
+
title: /* @__PURE__ */ jsx(Typography, { paragraph: true, className: classes.wordBreak, children: bazaarProject?.title }),
|
|
156
|
+
action: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
157
|
+
IconButton,
|
|
158
|
+
{
|
|
159
|
+
onClick: () => {
|
|
160
|
+
setOpenEdit(true);
|
|
161
|
+
},
|
|
162
|
+
children: /* @__PURE__ */ jsx(EditIcon, {})
|
|
157
163
|
}
|
|
158
|
-
},
|
|
159
|
-
/* @__PURE__ */
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
164
|
+
) }),
|
|
165
|
+
subheader: /* @__PURE__ */ jsx(HeaderIconLinkRow, { links })
|
|
166
|
+
}
|
|
167
|
+
),
|
|
168
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
169
|
+
/* @__PURE__ */ jsx(
|
|
170
|
+
CardContentFields,
|
|
171
|
+
{
|
|
172
|
+
bazaarProject,
|
|
173
|
+
members: members.value || [],
|
|
174
|
+
descriptionSize: 10,
|
|
175
|
+
membersSize: 2,
|
|
176
|
+
isMember
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
] });
|
|
173
180
|
}
|
|
174
181
|
return null;
|
|
175
182
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityBazaarInfoContent.esm.js","sources":["../../../src/components/EntityBazaarInfoContent/EntityBazaarInfoContent.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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 React, { useState, useEffect } from 'react';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Divider from '@material-ui/core/Divider';\nimport IconButton from '@material-ui/core/IconButton';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport {\n HeaderIconLinkRow,\n IconLinkVerticalProps,\n} from '@backstage/core-components';\nimport EditIcon from '@material-ui/icons/Edit';\nimport ChatIcon from '@material-ui/icons/Chat';\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport LinkOffIcon from '@material-ui/icons/LinkOff';\nimport Description from '@material-ui/icons/Description';\nimport { EditProjectDialog } from '../EditProjectDialog';\nimport { useApi, identityApiRef } from '@backstage/core-plugin-api';\nimport { BazaarProject, Member } from '../../types';\nimport { bazaarApiRef } from '../../api';\nimport Alert from '@material-ui/lab/Alert';\nimport useAsyncFn from 'react-use/esm/useAsyncFn';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { ConfirmationDialog } from '../ConfirmationDialog';\nimport { CardContentFields } from '../CardContentFields';\nimport { fetchProjectMembers } from '../../util/fetchMethods';\n\nconst useStyles = makeStyles({\n wordBreak: {\n wordBreak: 'break-all',\n whiteSpace: 'normal',\n margin: '-0.25rem 0',\n },\n});\n\ntype Props = {\n bazaarProject: BazaarProject | null | undefined;\n fetchBazaarProject: () => Promise<BazaarProject | null>;\n};\n\nexport const EntityBazaarInfoContent = ({\n bazaarProject,\n fetchBazaarProject,\n}: Props) => {\n const classes = useStyles();\n const bazaarApi = useApi(bazaarApiRef);\n const identity = useApi(identityApiRef);\n const [openEdit, setOpenEdit] = useState(false);\n const [isMember, setIsMember] = useState(false);\n const [openUnlink, setOpenUnlink] = useState(false);\n const [members, fetchMembers] = useAsyncFn(async () => {\n return bazaarProject\n ? await fetchProjectMembers(bazaarApi, bazaarProject)\n : [];\n });\n\n const [userId, fetchUserId] = useAsyncFn(async () => {\n return await (\n await identity.getProfileInfo()\n ).displayName;\n });\n\n useEffect(() => {\n fetchMembers();\n fetchUserId();\n }, [fetchMembers, fetchUserId]);\n\n useEffect(() => {\n if (members.value && userId.value) {\n setIsMember(\n members.value\n ?.map((member: Member) => member.userId)\n .indexOf(userId.value) >= 0,\n );\n }\n }, [bazaarProject, members, identity, userId.value]);\n\n const handleMembersClick = async () => {\n if (userId.value) {\n if (!isMember) {\n await bazaarApi.addMember(bazaarProject?.id!, userId.value);\n } else {\n await bazaarApi.deleteMember(bazaarProject!.id, userId.value);\n }\n setIsMember(!isMember);\n fetchMembers();\n }\n };\n\n const links: IconLinkVerticalProps[] = [\n {\n label: 'Entity page',\n icon: <DashboardIcon />,\n disabled: true,\n },\n {\n label: 'Unlink project',\n icon: <LinkOffIcon />,\n disabled: false,\n onClick: () => {\n setOpenUnlink(true);\n },\n },\n {\n label: isMember ? 'Leave' : 'Join',\n icon: isMember ? <ExitToAppIcon /> : <PersonAddIcon />,\n href: '',\n onClick: async () => {\n handleMembersClick();\n },\n },\n {\n label: 'Community',\n icon: <ChatIcon />,\n href: bazaarProject?.community,\n disabled: bazaarProject?.community === '' || !isMember,\n },\n {\n label: 'Docs',\n icon: <Description />,\n href: bazaarProject?.docs,\n disabled: bazaarProject?.docs === null || bazaarProject?.docs === '',\n },\n ];\n\n const handleEditClose = () => {\n setOpenEdit(false);\n };\n\n const handleUnlinkClose = () => {\n setOpenUnlink(false);\n };\n\n const handleUnlinkSubmit = async () => {\n const updateResponse = await bazaarApi.updateProject({\n ...bazaarProject,\n entityRef: null,\n });\n\n if (updateResponse.status === 'ok') {\n handleUnlinkClose();\n fetchBazaarProject();\n }\n };\n\n if (members.error) {\n return <Alert severity=\"error\">{members?.error?.message}</Alert>;\n }\n\n if (bazaarProject) {\n return (\n <div>\n <EditProjectDialog\n bazaarProject={bazaarProject!}\n openEdit={openEdit}\n handleEditClose={handleEditClose}\n fetchBazaarProject={fetchBazaarProject}\n />\n\n {openUnlink && (\n <ConfirmationDialog\n open={openUnlink}\n handleClose={handleUnlinkClose}\n message={[\n 'Are you sure you want to unlink ',\n <b className={classes.wordBreak}>\n {parseEntityRef(bazaarProject.entityRef!).name}\n </b>,\n ' from ',\n <b className={classes.wordBreak}>{bazaarProject.title}</b>,\n ' ?',\n ]}\n type=\"unlink\"\n handleSubmit={handleUnlinkSubmit}\n />\n )}\n\n <CardHeader\n title={\n <Typography paragraph className={classes.wordBreak}>\n {bazaarProject?.title!}\n </Typography>\n }\n action={\n <div>\n <IconButton\n onClick={() => {\n setOpenEdit(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </div>\n }\n subheader={<HeaderIconLinkRow links={links} />}\n />\n <Divider />\n\n <CardContentFields\n bazaarProject={bazaarProject}\n members={members.value || []}\n descriptionSize={10}\n membersSize={2}\n isMember={isMember}\n />\n </div>\n );\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityBazaarInfoContent.esm.js","sources":["../../../src/components/EntityBazaarInfoContent/EntityBazaarInfoContent.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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, useEffect } from 'react';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Divider from '@material-ui/core/Divider';\nimport IconButton from '@material-ui/core/IconButton';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport {\n HeaderIconLinkRow,\n IconLinkVerticalProps,\n} from '@backstage/core-components';\nimport EditIcon from '@material-ui/icons/Edit';\nimport ChatIcon from '@material-ui/icons/Chat';\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport LinkOffIcon from '@material-ui/icons/LinkOff';\nimport Description from '@material-ui/icons/Description';\nimport { EditProjectDialog } from '../EditProjectDialog';\nimport { useApi, identityApiRef } from '@backstage/core-plugin-api';\nimport { BazaarProject, Member } from '../../types';\nimport { bazaarApiRef } from '../../api';\nimport Alert from '@material-ui/lab/Alert';\nimport useAsyncFn from 'react-use/esm/useAsyncFn';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { ConfirmationDialog } from '../ConfirmationDialog';\nimport { CardContentFields } from '../CardContentFields';\nimport { fetchProjectMembers } from '../../util/fetchMethods';\n\nconst useStyles = makeStyles({\n wordBreak: {\n wordBreak: 'break-all',\n whiteSpace: 'normal',\n margin: '-0.25rem 0',\n },\n});\n\ntype Props = {\n bazaarProject: BazaarProject | null | undefined;\n fetchBazaarProject: () => Promise<BazaarProject | null>;\n};\n\nexport const EntityBazaarInfoContent = ({\n bazaarProject,\n fetchBazaarProject,\n}: Props) => {\n const classes = useStyles();\n const bazaarApi = useApi(bazaarApiRef);\n const identity = useApi(identityApiRef);\n const [openEdit, setOpenEdit] = useState(false);\n const [isMember, setIsMember] = useState(false);\n const [openUnlink, setOpenUnlink] = useState(false);\n const [members, fetchMembers] = useAsyncFn(async () => {\n return bazaarProject\n ? await fetchProjectMembers(bazaarApi, bazaarProject)\n : [];\n });\n\n const [userId, fetchUserId] = useAsyncFn(async () => {\n return await (\n await identity.getProfileInfo()\n ).displayName;\n });\n\n useEffect(() => {\n fetchMembers();\n fetchUserId();\n }, [fetchMembers, fetchUserId]);\n\n useEffect(() => {\n if (members.value && userId.value) {\n setIsMember(\n members.value\n ?.map((member: Member) => member.userId)\n .indexOf(userId.value) >= 0,\n );\n }\n }, [bazaarProject, members, identity, userId.value]);\n\n const handleMembersClick = async () => {\n if (userId.value) {\n if (!isMember) {\n await bazaarApi.addMember(bazaarProject?.id!, userId.value);\n } else {\n await bazaarApi.deleteMember(bazaarProject!.id, userId.value);\n }\n setIsMember(!isMember);\n fetchMembers();\n }\n };\n\n const links: IconLinkVerticalProps[] = [\n {\n label: 'Entity page',\n icon: <DashboardIcon />,\n disabled: true,\n },\n {\n label: 'Unlink project',\n icon: <LinkOffIcon />,\n disabled: false,\n onClick: () => {\n setOpenUnlink(true);\n },\n },\n {\n label: isMember ? 'Leave' : 'Join',\n icon: isMember ? <ExitToAppIcon /> : <PersonAddIcon />,\n href: '',\n onClick: async () => {\n handleMembersClick();\n },\n },\n {\n label: 'Community',\n icon: <ChatIcon />,\n href: bazaarProject?.community,\n disabled: bazaarProject?.community === '' || !isMember,\n },\n {\n label: 'Docs',\n icon: <Description />,\n href: bazaarProject?.docs,\n disabled: bazaarProject?.docs === null || bazaarProject?.docs === '',\n },\n ];\n\n const handleEditClose = () => {\n setOpenEdit(false);\n };\n\n const handleUnlinkClose = () => {\n setOpenUnlink(false);\n };\n\n const handleUnlinkSubmit = async () => {\n const updateResponse = await bazaarApi.updateProject({\n ...bazaarProject,\n entityRef: null,\n });\n\n if (updateResponse.status === 'ok') {\n handleUnlinkClose();\n fetchBazaarProject();\n }\n };\n\n if (members.error) {\n return <Alert severity=\"error\">{members?.error?.message}</Alert>;\n }\n\n if (bazaarProject) {\n return (\n <div>\n <EditProjectDialog\n bazaarProject={bazaarProject!}\n openEdit={openEdit}\n handleEditClose={handleEditClose}\n fetchBazaarProject={fetchBazaarProject}\n />\n\n {openUnlink && (\n <ConfirmationDialog\n open={openUnlink}\n handleClose={handleUnlinkClose}\n message={[\n 'Are you sure you want to unlink ',\n <b className={classes.wordBreak}>\n {parseEntityRef(bazaarProject.entityRef!).name}\n </b>,\n ' from ',\n <b className={classes.wordBreak}>{bazaarProject.title}</b>,\n ' ?',\n ]}\n type=\"unlink\"\n handleSubmit={handleUnlinkSubmit}\n />\n )}\n\n <CardHeader\n title={\n <Typography paragraph className={classes.wordBreak}>\n {bazaarProject?.title!}\n </Typography>\n }\n action={\n <div>\n <IconButton\n onClick={() => {\n setOpenEdit(true);\n }}\n >\n <EditIcon />\n </IconButton>\n </div>\n }\n subheader={<HeaderIconLinkRow links={links} />}\n />\n <Divider />\n\n <CardContentFields\n bazaarProject={bazaarProject}\n members={members.value || []}\n descriptionSize={10}\n membersSize={2}\n isMember={isMember}\n />\n </div>\n );\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Header, RoutedTabs } from '@backstage/core-components';
|
|
3
3
|
import { SortView } from '../SortView/SortView.esm.js';
|
|
4
4
|
import { About } from '../About/About.esm.js';
|
|
@@ -9,21 +9,24 @@ const HomePage = (props) => {
|
|
|
9
9
|
{
|
|
10
10
|
path: "/",
|
|
11
11
|
title: "Home",
|
|
12
|
-
children: /* @__PURE__ */
|
|
12
|
+
children: /* @__PURE__ */ jsx(SortView, { fullWidth, fullHeight })
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
path: "/about",
|
|
16
16
|
title: "About",
|
|
17
|
-
children: /* @__PURE__ */
|
|
17
|
+
children: /* @__PURE__ */ jsx(About, {})
|
|
18
18
|
}
|
|
19
19
|
];
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
Header,
|
|
23
|
+
{
|
|
24
|
+
title: title || "Bazaar",
|
|
25
|
+
subtitle: subtitle || "Marketplace for inner source projects"
|
|
26
|
+
}
|
|
27
|
+
),
|
|
28
|
+
/* @__PURE__ */ jsx(RoutedTabs, { routes: tabContent })
|
|
29
|
+
] });
|
|
27
30
|
};
|
|
28
31
|
|
|
29
32
|
export { HomePage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomePage.esm.js","sources":["../../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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
|
|
1
|
+
{"version":3,"file":"HomePage.esm.js","sources":["../../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\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 { Header, RoutedTabs } from '@backstage/core-components';\nimport { SortView } from '../SortView';\nimport { About } from '../About';\n\n/** @public */\nexport type HomePageProps = {\n title?: string;\n subtitle?: string;\n fullWidth?: boolean;\n fullHeight?: boolean;\n};\n\nexport const HomePage = (props: HomePageProps) => {\n const { title, subtitle, fullWidth, fullHeight } = props;\n\n const tabContent = [\n {\n path: '/',\n title: 'Home',\n children: <SortView fullWidth={fullWidth} fullHeight={fullHeight} />,\n },\n {\n path: '/about',\n title: 'About',\n children: <About />,\n },\n ];\n\n return (\n <div>\n <Header\n title={title || 'Bazaar'}\n subtitle={subtitle || 'Marketplace for inner source projects'}\n />\n <RoutedTabs routes={tabContent} />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AA4Ba,MAAA,QAAA,GAAW,CAAC,KAAyB,KAAA;AAChD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAU,EAAA,SAAA,EAAW,YAAe,GAAA,KAAA;AAEnD,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB;AAAA,MACE,IAAM,EAAA,GAAA;AAAA,MACN,KAAO,EAAA,MAAA;AAAA,MACP,QAAU,kBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,SAAA,EAAsB,UAAwB,EAAA;AAAA,KACpE;AAAA,IACA;AAAA,MACE,IAAM,EAAA,QAAA;AAAA,MACN,KAAO,EAAA,OAAA;AAAA,MACP,QAAA,sBAAW,KAAM,EAAA,EAAA;AAAA;AACnB,GACF;AAEA,EAAA,4BACG,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAS,IAAA,QAAA;AAAA,QAChB,UAAU,QAAY,IAAA;AAAA;AAAA,KACxB;AAAA,oBACA,GAAA,CAAC,UAAW,EAAA,EAAA,MAAA,EAAQ,UAAY,EAAA;AAAA,GAClC,EAAA,CAAA;AAEJ;;;;"}
|