@kyverno/backstage-plugin-policy-reporter 2.6.0 → 2.8.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 +37 -0
- package/dist/alpha/plugin.esm.js +70 -0
- package/dist/alpha/plugin.esm.js.map +1 -0
- package/dist/alpha.d.ts +129 -0
- package/dist/alpha.esm.js +2 -0
- package/dist/alpha.esm.js.map +1 -0
- package/dist/api/PolicyReporterClient.esm.js.map +1 -1
- package/dist/components/EntityCustomPoliciesContent/EntityCustomPoliciesContent.esm.js +48 -80
- package/dist/components/EntityCustomPoliciesContent/EntityCustomPoliciesContent.esm.js.map +1 -1
- package/dist/components/EntityCustomPoliciesContent/index.esm.js +5 -1
- package/dist/components/EntityCustomPoliciesContent/index.esm.js.map +1 -1
- package/dist/components/EntityKyvernoPoliciesContent/EntityKyvernoPoliciesContent.esm.js +48 -80
- package/dist/components/EntityKyvernoPoliciesContent/EntityKyvernoPoliciesContent.esm.js.map +1 -1
- package/dist/components/EntityKyvernoPoliciesContent/index.esm.js +5 -1
- package/dist/components/EntityKyvernoPoliciesContent/index.esm.js.map +1 -1
- package/dist/components/MissingEnvironmentsEmptyState/MissingEnvironmentsEmptyState.esm.js +1 -1
- package/dist/components/MissingEnvironmentsEmptyState/MissingEnvironmentsEmptyState.esm.js.map +1 -1
- package/dist/components/PolicyReportsDrawerComponent/PolicyReportsDrawerComponent.esm.js +1 -1
- package/dist/components/PolicyReportsDrawerComponent/PolicyReportsDrawerComponent.esm.js.map +1 -1
- package/dist/components/PolicyReportsPage/PolicyReportsPage.esm.js +41 -64
- package/dist/components/PolicyReportsPage/PolicyReportsPage.esm.js.map +1 -1
- package/dist/components/PolicyReportsPage/index.esm.js +5 -1
- package/dist/components/PolicyReportsPage/index.esm.js.map +1 -1
- package/dist/components/PolicyReportsTable/PolicyReportsTable.esm.js +85 -111
- package/dist/components/PolicyReportsTable/PolicyReportsTable.esm.js.map +1 -1
- package/dist/components/SearchField/SearchField.esm.js +33 -0
- package/dist/components/SearchField/SearchField.esm.js.map +1 -0
- package/dist/components/SelectEnvironment/SelectEnvironment.esm.js +22 -41
- package/dist/components/SelectEnvironment/SelectEnvironment.esm.js.map +1 -1
- package/dist/components/SelectNamespace/SelectNamespace.esm.js +35 -45
- package/dist/components/SelectNamespace/SelectNamespace.esm.js.map +1 -1
- package/dist/components/SelectSeverity/SelectSeverity.esm.js +40 -51
- package/dist/components/SelectSeverity/SelectSeverity.esm.js.map +1 -1
- package/dist/components/SelectStatus/SelectStatus.esm.js +40 -51
- package/dist/components/SelectStatus/SelectStatus.esm.js.map +1 -1
- package/dist/components/SeverityComponent/SeverityComponent.esm.js +11 -35
- package/dist/components/SeverityComponent/SeverityComponent.esm.js.map +1 -1
- package/dist/components/StatusComponent/StatusComponent.esm.js.map +1 -1
- package/dist/hooks/useEntityEnvironment.esm.js +1 -9
- package/dist/hooks/useEntityEnvironment.esm.js.map +1 -1
- package/dist/hooks/useEnvironments.esm.js +17 -30
- package/dist/hooks/useEnvironments.esm.js.map +1 -1
- package/dist/hooks/useNamespaces.esm.js +4 -4
- package/dist/hooks/useNamespaces.esm.js.map +1 -1
- package/dist/hooks/usePolicyReportsFilters.esm.js +90 -0
- package/dist/hooks/usePolicyReportsFilters.esm.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/package.json.esm.js +110 -0
- package/dist/package.json.esm.js.map +1 -0
- package/dist/plugin.esm.js +1 -1
- package/dist/plugin.esm.js.map +1 -1
- package/dist/routes.esm.js.map +1 -1
- package/dist/utils/annotations.esm.js +1 -1
- package/dist/utils/annotations.esm.js.map +1 -1
- package/package.json +46 -21
- package/dist/hooks/usePaginatedPolicies.esm.js +0 -51
- package/dist/hooks/usePaginatedPolicies.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyReportsTable.esm.js","sources":["../../../src/components/PolicyReportsTable/PolicyReportsTable.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"PolicyReportsTable.esm.js","sources":["../../../src/components/PolicyReportsTable/PolicyReportsTable.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { ListResult } from '@kyverno/backstage-plugin-policy-reporter-common';\nimport { Drawer } from '@material-ui/core';\nimport { StatusComponent } from '../StatusComponent';\nimport { SeverityComponent } from '../SeverityComponent';\nimport { PolicyReportsDrawerComponent } from '../PolicyReportsDrawerComponent';\nimport {\n CellText,\n ColumnConfig,\n Text,\n useTable,\n Table,\n Cell,\n Link,\n} from '@backstage/ui';\nimport { useApi } from '@backstage/frontend-plugin-api';\nimport { policyReporterApiRef } from '../../api';\nimport { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters';\n\ninterface PolicyReportsTableProps {\n emptyContentText: string;\n policyDocumentationUrl?: string;\n}\n\nexport const PolicyReportsTable = ({\n emptyContentText,\n policyDocumentationUrl,\n}: PolicyReportsTableProps) => {\n const policyReporterApi = useApi(policyReporterApiRef);\n const { filter, environment } = usePolicyReportsFilters();\n const search = filter.search;\n\n const [drawerContent, setDrawerContent] = useState<ListResult | undefined>(\n undefined,\n );\n\n const { tableProps } = useTable({\n filter,\n mode: 'offset',\n search: search,\n getData: async ({\n offset,\n pageSize,\n filter: fetchFilter,\n search: searchParam,\n }) => {\n // useTable provides:\n // - offset: absolute record position (0, 20, 40, 60...)\n // - pageSize: number of records per page (20)\n //\n // Policy Reporter API expects:\n // - page: page number starting from 1 (1, 2, 3, 4...)\n // - offset: number of results per page (this is actually pageSize)\n //\n // Example calculations:\n // useTable offset=0, pageSize=20 → page=1 (first 20 records)\n // useTable offset=20, pageSize=20 → page=2 (records 21-40)\n // useTable offset=40, pageSize=20 → page=3 (records 41-60)\n\n // Convert useTable's absolute offset to 1-indexed page number\n // Math.floor(0/20) + 1 = 1, Math.floor(20/20) + 1 = 2, etc.\n const page = Math.floor(offset / pageSize) + 1;\n\n const response = await policyReporterApi.getNamespacedResults({\n query: {\n environment: encodeURI(environment),\n page: page,\n offset: pageSize,\n ...fetchFilter,\n search: searchParam === '' ? undefined : searchParam,\n },\n });\n\n const result = await response.json();\n\n return {\n data: result.items,\n totalCount: result.count,\n };\n },\n });\n\n const columns: ColumnConfig<ListResult>[] = [\n {\n id: 'name',\n label: 'Name',\n isRowHeader: true,\n cell: item => <CellText title={item.name} />,\n },\n {\n id: 'namespace',\n label: 'Namespace',\n isRowHeader: true,\n cell: item => <CellText title={item.namespace} />,\n },\n {\n id: 'kind',\n label: 'Kind',\n isRowHeader: true,\n cell: item => <CellText title={item.kind} />,\n },\n {\n id: 'policy',\n label: 'Policy',\n isRowHeader: true,\n cell: item => {\n if (policyDocumentationUrl) {\n return (\n <Cell>\n <Link\n target=\"_blank\"\n href={`${policyDocumentationUrl}#${item.policy}`}\n >\n {item.policy}\n </Link>\n </Cell>\n );\n }\n return <CellText title={item.policy} />;\n },\n },\n {\n id: 'rule',\n label: 'Rule',\n isRowHeader: true,\n cell: item => <CellText title={item.rule} />,\n },\n {\n id: 'status',\n label: 'Status',\n isRowHeader: true,\n cell: item => (\n <Cell>\n <StatusComponent status={item.status} />\n </Cell>\n ),\n },\n {\n id: 'severity',\n label: 'Severity',\n isRowHeader: true,\n cell: item => (\n <Cell>\n <SeverityComponent severity={item.severity} />\n </Cell>\n ),\n },\n ];\n\n return (\n <>\n <Drawer\n anchor=\"right\"\n open={Boolean(drawerContent)}\n onClose={() => setDrawerContent(undefined)}\n >\n <PolicyReportsDrawerComponent content={drawerContent} />\n </Drawer>\n <Table\n rowConfig={{\n onClick: item => setDrawerContent(item),\n }}\n emptyState={\n search ? (\n <Text>No results match \"{search}\"</Text>\n ) : (\n <Text>{emptyContentText}</Text>\n )\n }\n columnConfig={columns}\n {...tableProps}\n />\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { useDebounce } from 'react-use';
|
|
4
|
+
import { SearchField as SearchField$1 } from '@backstage/ui';
|
|
5
|
+
import { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters.esm.js';
|
|
6
|
+
|
|
7
|
+
const SearchField = () => {
|
|
8
|
+
const { filter, updateFilter } = usePolicyReportsFilters();
|
|
9
|
+
const [inputValue, setInputValue] = useState(filter.search ?? "");
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
setInputValue(filter.search ?? "");
|
|
12
|
+
}, [filter.search]);
|
|
13
|
+
useDebounce(
|
|
14
|
+
() => {
|
|
15
|
+
updateFilter({ search: inputValue || void 0 });
|
|
16
|
+
},
|
|
17
|
+
300,
|
|
18
|
+
[inputValue]
|
|
19
|
+
);
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
SearchField$1,
|
|
22
|
+
{
|
|
23
|
+
"aria-label": "Search",
|
|
24
|
+
label: "Search",
|
|
25
|
+
value: inputValue,
|
|
26
|
+
onChange: setInputValue,
|
|
27
|
+
style: { width: "350px" }
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { SearchField };
|
|
33
|
+
//# sourceMappingURL=SearchField.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchField.esm.js","sources":["../../../src/components/SearchField/SearchField.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useDebounce } from 'react-use';\nimport { SearchField as BackstageSearchField } from '@backstage/ui';\nimport { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters';\n\nexport const SearchField = () => {\n const { filter, updateFilter } = usePolicyReportsFilters();\n const [inputValue, setInputValue] = useState(filter.search ?? '');\n\n // Sync input value when filter.search changes externally (back/forward nav).\n useEffect(() => {\n setInputValue(filter.search ?? '');\n }, [filter.search]);\n\n useDebounce(\n () => {\n updateFilter({ search: inputValue || undefined });\n },\n 300,\n [inputValue],\n );\n\n return (\n <BackstageSearchField\n aria-label=\"Search\"\n label=\"Search\"\n value={inputValue}\n onChange={setInputValue}\n style={{ width: '350px' }}\n />\n );\n};\n"],"names":["BackstageSearchField"],"mappings":";;;;;;AAKO,MAAM,cAAc,MAAM;AAC/B,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,EAAa,GAAI,uBAAA,EAAwB;AACzD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,IAAI,QAAA,CAAS,MAAA,CAAO,UAAU,EAAE,CAAA;AAGhE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,aAAA,CAAc,MAAA,CAAO,UAAU,EAAE,CAAA;AAAA,EACnC,CAAA,EAAG,CAAC,MAAA,CAAO,MAAM,CAAC,CAAA;AAElB,EAAA,WAAA;AAAA,IACE,MAAM;AACJ,MAAA,YAAA,CAAa,EAAE,MAAA,EAAQ,UAAA,IAAc,MAAA,EAAW,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,GAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,uBACE,GAAA;AAAA,IAACA,aAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,QAAA;AAAA,MACX,KAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU,aAAA;AAAA,MACV,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA;AAAQ;AAAA,GAC1B;AAEJ;;;;"}
|
|
@@ -1,46 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import FormControl from '@material-ui/core/FormControl';
|
|
5
|
-
import Select from '@material-ui/core/Select';
|
|
6
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Select } from '@backstage/ui';
|
|
3
|
+
import { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters.esm.js';
|
|
7
4
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const SelectEnvironment = ({
|
|
20
|
-
environments,
|
|
21
|
-
currentEnvironment,
|
|
22
|
-
setCurrentEnvironment
|
|
23
|
-
}) => {
|
|
24
|
-
const classes = useStyles();
|
|
25
|
-
const handleChange = (event) => {
|
|
26
|
-
setCurrentEnvironment(environments[Number(event.target.value)]);
|
|
5
|
+
const SelectEnvironment = ({ environments }) => {
|
|
6
|
+
const { environment, setEnvironment } = usePolicyReportsFilters();
|
|
7
|
+
const options = environments.map((env) => ({
|
|
8
|
+
value: env.entityRef,
|
|
9
|
+
label: env.name
|
|
10
|
+
}));
|
|
11
|
+
const handleChange = (key) => {
|
|
12
|
+
if (key === null || Array.isArray(key)) return;
|
|
13
|
+
setEnvironment(key);
|
|
27
14
|
};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
disabled: isSingleEnvironment,
|
|
39
|
-
className: isSingleEnvironment ? classes.hideDropdownArrow : "",
|
|
40
|
-
children: environments.map((env) => /* @__PURE__ */ jsx(MenuItem, { value: env.id, children: env.name }, env.name))
|
|
41
|
-
}
|
|
42
|
-
)
|
|
43
|
-
] });
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
Select,
|
|
17
|
+
{
|
|
18
|
+
label: "Environment",
|
|
19
|
+
selectionMode: "single",
|
|
20
|
+
options,
|
|
21
|
+
value: environment,
|
|
22
|
+
onChange: handleChange
|
|
23
|
+
}
|
|
24
|
+
);
|
|
44
25
|
};
|
|
45
26
|
|
|
46
27
|
export { SelectEnvironment };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectEnvironment.esm.js","sources":["../../../src/components/SelectEnvironment/SelectEnvironment.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"SelectEnvironment.esm.js","sources":["../../../src/components/SelectEnvironment/SelectEnvironment.tsx"],"sourcesContent":["import { Select } from '@backstage/ui';\nimport { Environment } from '@kyverno/backstage-plugin-policy-reporter-common';\nimport { Key } from 'react';\nimport { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters';\n\ntype SelectEnvironmentProps = {\n environments: Environment[];\n};\n\nexport const SelectEnvironment = ({ environments }: SelectEnvironmentProps) => {\n const { environment, setEnvironment } = usePolicyReportsFilters();\n\n const options = environments.map(env => ({\n value: env.entityRef,\n label: env.name,\n }));\n\n const handleChange = (key: Key | Key[] | null) => {\n if (key === null || Array.isArray(key)) return;\n setEnvironment(key as string);\n };\n\n return (\n <Select\n label=\"Environment\"\n selectionMode=\"single\"\n options={options}\n value={environment}\n onChange={handleChange}\n />\n );\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,iBAAA,GAAoB,CAAC,EAAE,YAAA,EAAa,KAA8B;AAC7E,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAe,GAAI,uBAAA,EAAwB;AAEhE,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,GAAA,CAAI,CAAA,GAAA,MAAQ;AAAA,IACvC,OAAO,GAAA,CAAI,SAAA;AAAA,IACX,OAAO,GAAA,CAAI;AAAA,GACb,CAAE,CAAA;AAEF,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAA4B;AAChD,IAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACxC,IAAA,cAAA,CAAe,GAAa,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,aAAA;AAAA,MACN,aAAA,EAAc,QAAA;AAAA,MACd,OAAA;AAAA,MACA,KAAA,EAAO,WAAA;AAAA,MACP,QAAA,EAAU;AAAA;AAAA,GACZ;AAEJ;;;;"}
|
|
@@ -1,50 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import Select from '@material-ui/core/Select';
|
|
6
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
7
|
-
import { Checkbox, ListItemText } from '@material-ui/core';
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Select } from '@backstage/ui';
|
|
3
|
+
import { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters.esm.js';
|
|
4
|
+
import { useNamespaces } from '../../hooks/useNamespaces.esm.js';
|
|
8
5
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
const SelectNamespace = () => {
|
|
7
|
+
const { filter, updateFilter, environment } = usePolicyReportsFilters();
|
|
8
|
+
const { namespaces: availableNamespaces } = useNamespaces(environment);
|
|
9
|
+
const options = availableNamespaces.map((ns) => ({ value: ns, label: ns }));
|
|
10
|
+
const handleChange = (key) => {
|
|
11
|
+
if (key === null) {
|
|
12
|
+
updateFilter({ namespaces: [] });
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (!Array.isArray(key)) {
|
|
16
|
+
updateFilter({
|
|
17
|
+
namespaces: availableNamespaces.includes(key) ? [key] : []
|
|
18
|
+
});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const filtered = key.filter(
|
|
22
|
+
(item) => availableNamespaces.includes(item)
|
|
23
|
+
);
|
|
24
|
+
updateFilter({ namespaces: filtered });
|
|
23
25
|
};
|
|
24
|
-
return /* @__PURE__ */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return "All";
|
|
37
|
-
}
|
|
38
|
-
return selected.join(", ");
|
|
39
|
-
},
|
|
40
|
-
onChange: handleChange,
|
|
41
|
-
children: availableNamespaces.map((namespace) => /* @__PURE__ */ jsxs(MenuItem, { value: namespace, children: [
|
|
42
|
-
/* @__PURE__ */ jsx(Checkbox, { checked: currentNamespaces.includes(namespace) }),
|
|
43
|
-
/* @__PURE__ */ jsx(ListItemText, { primary: namespace })
|
|
44
|
-
] }, namespace))
|
|
45
|
-
}
|
|
46
|
-
)
|
|
47
|
-
] });
|
|
26
|
+
return /* @__PURE__ */ jsx(
|
|
27
|
+
Select,
|
|
28
|
+
{
|
|
29
|
+
label: "Namespace",
|
|
30
|
+
selectionMode: "multiple",
|
|
31
|
+
options,
|
|
32
|
+
value: filter.namespaces ?? [],
|
|
33
|
+
onChange: handleChange,
|
|
34
|
+
placeholder: "All",
|
|
35
|
+
style: { width: 200 }
|
|
36
|
+
}
|
|
37
|
+
);
|
|
48
38
|
};
|
|
49
39
|
|
|
50
40
|
export { SelectNamespace };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectNamespace.esm.js","sources":["../../../src/components/SelectNamespace/SelectNamespace.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"SelectNamespace.esm.js","sources":["../../../src/components/SelectNamespace/SelectNamespace.tsx"],"sourcesContent":["import { Select } from '@backstage/ui';\nimport { Key } from 'react';\nimport { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters';\nimport { useNamespaces } from '../../hooks/useNamespaces';\n\nexport const SelectNamespace = () => {\n const { filter, updateFilter, environment } = usePolicyReportsFilters();\n const { namespaces: availableNamespaces } = useNamespaces(environment);\n\n const options = availableNamespaces.map(ns => ({ value: ns, label: ns }));\n\n const handleChange = (key: Key | Key[] | null) => {\n if (key === null) {\n updateFilter({ namespaces: [] });\n return;\n }\n\n if (!Array.isArray(key)) {\n updateFilter({\n namespaces: availableNamespaces.includes(key as string)\n ? [key as string]\n : [],\n });\n return;\n }\n\n const filtered = key.filter((item): item is string =>\n availableNamespaces.includes(item as string),\n );\n updateFilter({ namespaces: filtered });\n };\n\n return (\n <Select\n label=\"Namespace\"\n selectionMode=\"multiple\"\n options={options}\n value={filter.namespaces ?? []}\n onChange={handleChange}\n placeholder=\"All\"\n style={{ width: 200 }}\n />\n );\n};\n"],"names":[],"mappings":";;;;;AAKO,MAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,EAAc,WAAA,KAAgB,uBAAA,EAAwB;AACtE,EAAA,MAAM,EAAE,UAAA,EAAY,mBAAA,EAAoB,GAAI,cAAc,WAAW,CAAA;AAErE,EAAA,MAAM,OAAA,GAAU,oBAAoB,GAAA,CAAI,CAAA,EAAA,MAAO,EAAE,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,EAAA,EAAG,CAAE,CAAA;AAExE,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAA4B;AAChD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,YAAA,CAAa,EAAE,UAAA,EAAY,EAAC,EAAG,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACvB,MAAA,YAAA,CAAa;AAAA,QACX,UAAA,EAAY,oBAAoB,QAAA,CAAS,GAAa,IAClD,CAAC,GAAa,IACd;AAAC,OACN,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAW,GAAA,CAAI,MAAA;AAAA,MAAO,CAAC,IAAA,KAC3B,mBAAA,CAAoB,QAAA,CAAS,IAAc;AAAA,KAC7C;AACA,IAAA,YAAA,CAAa,EAAE,UAAA,EAAY,QAAA,EAAU,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,WAAA;AAAA,MACN,aAAA,EAAc,UAAA;AAAA,MACd,OAAA;AAAA,MACA,KAAA,EAAO,MAAA,CAAO,UAAA,IAAc,EAAC;AAAA,MAC7B,QAAA,EAAU,YAAA;AAAA,MACV,WAAA,EAAY,KAAA;AAAA,MACZ,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA;AAAI;AAAA,GACtB;AAEJ;;;;"}
|
|
@@ -1,57 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import FormControl from '@material-ui/core/FormControl';
|
|
5
|
-
import Select from '@material-ui/core/Select';
|
|
6
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
7
|
-
import { Checkbox, ListItemText } from '@material-ui/core';
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Select } from '@backstage/ui';
|
|
3
|
+
import { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters.esm.js';
|
|
8
4
|
|
|
9
|
-
const
|
|
10
|
-
"unknown",
|
|
11
|
-
"low",
|
|
12
|
-
"medium",
|
|
13
|
-
"high",
|
|
14
|
-
"critical",
|
|
15
|
-
"info"
|
|
5
|
+
const SEVERITY_OPTIONS = [
|
|
6
|
+
{ value: "unknown", label: "Unknown" },
|
|
7
|
+
{ value: "low", label: "Low" },
|
|
8
|
+
{ value: "medium", label: "Medium" },
|
|
9
|
+
{ value: "high", label: "High" },
|
|
10
|
+
{ value: "critical", label: "Critical" },
|
|
11
|
+
{ value: "info", label: "Info" }
|
|
16
12
|
];
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
const validSeverities = SEVERITY_OPTIONS.map((option) => option.value);
|
|
14
|
+
const SelectSeverity = () => {
|
|
15
|
+
const { filter, updateFilter } = usePolicyReportsFilters();
|
|
16
|
+
const handleChange = (key) => {
|
|
17
|
+
if (key === null) {
|
|
18
|
+
updateFilter({ severities: [] });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!Array.isArray(key)) {
|
|
22
|
+
updateFilter({
|
|
23
|
+
severities: validSeverities.includes(key) ? [key] : []
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const filteredSeverities = key.filter(
|
|
28
|
+
(item) => validSeverities.includes(item)
|
|
29
|
+
);
|
|
30
|
+
updateFilter({ severities: filteredSeverities });
|
|
30
31
|
};
|
|
31
|
-
return /* @__PURE__ */
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return "All";
|
|
44
|
-
}
|
|
45
|
-
return selected.join(", ");
|
|
46
|
-
},
|
|
47
|
-
onChange: handleChange,
|
|
48
|
-
children: SEVERITY_VALUES.map((severity) => /* @__PURE__ */ jsxs(MenuItem, { value: severity, children: [
|
|
49
|
-
/* @__PURE__ */ jsx(Checkbox, { checked: currentSeverity.includes(severity) }),
|
|
50
|
-
/* @__PURE__ */ jsx(ListItemText, { primary: severity })
|
|
51
|
-
] }, severity))
|
|
52
|
-
}
|
|
53
|
-
)
|
|
54
|
-
] });
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
Select,
|
|
34
|
+
{
|
|
35
|
+
label: "Severity",
|
|
36
|
+
selectionMode: "multiple",
|
|
37
|
+
options: SEVERITY_OPTIONS,
|
|
38
|
+
value: filter.severities ?? [],
|
|
39
|
+
onChange: handleChange,
|
|
40
|
+
placeholder: "All",
|
|
41
|
+
style: { width: 200 }
|
|
42
|
+
}
|
|
43
|
+
);
|
|
55
44
|
};
|
|
56
45
|
|
|
57
46
|
export { SelectSeverity };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectSeverity.esm.js","sources":["../../../src/components/SelectSeverity/SelectSeverity.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"SelectSeverity.esm.js","sources":["../../../src/components/SelectSeverity/SelectSeverity.tsx"],"sourcesContent":["import { Select } from '@backstage/ui';\nimport { Severity } from '@kyverno/backstage-plugin-policy-reporter-common';\nimport { Key } from 'react';\nimport { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters';\n\nconst SEVERITY_OPTIONS: { value: Severity; label: string }[] = [\n { value: 'unknown', label: 'Unknown' },\n { value: 'low', label: 'Low' },\n { value: 'medium', label: 'Medium' },\n { value: 'high', label: 'High' },\n { value: 'critical', label: 'Critical' },\n { value: 'info', label: 'Info' },\n];\n\nconst validSeverities = SEVERITY_OPTIONS.map(option => option.value);\n\nexport const SelectSeverity = () => {\n const { filter, updateFilter } = usePolicyReportsFilters();\n\n const handleChange = (key: Key | Key[] | null) => {\n if (key === null) {\n updateFilter({ severities: [] });\n return;\n }\n\n if (!Array.isArray(key)) {\n updateFilter({\n severities: validSeverities.includes(key as Severity)\n ? [key as Severity]\n : [],\n });\n return;\n }\n\n const filteredSeverities = key.filter((item): item is Severity =>\n validSeverities.includes(item as Severity),\n );\n updateFilter({ severities: filteredSeverities });\n };\n\n return (\n <Select\n label=\"Severity\"\n selectionMode=\"multiple\"\n options={SEVERITY_OPTIONS}\n value={filter.severities ?? []}\n onChange={handleChange}\n placeholder=\"All\"\n style={{ width: 200 }}\n />\n );\n};\n"],"names":[],"mappings":";;;;AAKA,MAAM,gBAAA,GAAyD;AAAA,EAC7D,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,EAC7B,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,EACnC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,EACvC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA;AAC1B,CAAA;AAEA,MAAM,eAAA,GAAkB,gBAAA,CAAiB,GAAA,CAAI,CAAA,MAAA,KAAU,OAAO,KAAK,CAAA;AAE5D,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,EAAa,GAAI,uBAAA,EAAwB;AAEzD,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAA4B;AAChD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,YAAA,CAAa,EAAE,UAAA,EAAY,EAAC,EAAG,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACvB,MAAA,YAAA,CAAa;AAAA,QACX,UAAA,EAAY,gBAAgB,QAAA,CAAS,GAAe,IAChD,CAAC,GAAe,IAChB;AAAC,OACN,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,qBAAqB,GAAA,CAAI,MAAA;AAAA,MAAO,CAAC,IAAA,KACrC,eAAA,CAAgB,QAAA,CAAS,IAAgB;AAAA,KAC3C;AACA,IAAA,YAAA,CAAa,EAAE,UAAA,EAAY,kBAAA,EAAoB,CAAA;AAAA,EACjD,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,UAAA;AAAA,MACN,aAAA,EAAc,UAAA;AAAA,MACd,OAAA,EAAS,gBAAA;AAAA,MACT,KAAA,EAAO,MAAA,CAAO,UAAA,IAAc,EAAC;AAAA,MAC7B,QAAA,EAAU,YAAA;AAAA,MACV,WAAA,EAAY,KAAA;AAAA,MACZ,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA;AAAI;AAAA,GACtB;AAEJ;;;;"}
|
|
@@ -1,57 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import FormControl from '@material-ui/core/FormControl';
|
|
5
|
-
import Select from '@material-ui/core/Select';
|
|
6
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
7
|
-
import { Checkbox, ListItemText } from '@material-ui/core';
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Select } from '@backstage/ui';
|
|
3
|
+
import { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters.esm.js';
|
|
8
4
|
|
|
9
|
-
const
|
|
10
|
-
"fail",
|
|
11
|
-
"skip",
|
|
12
|
-
"pass",
|
|
13
|
-
"warn",
|
|
14
|
-
"error",
|
|
15
|
-
"summary"
|
|
5
|
+
const STATUS_OPTIONS = [
|
|
6
|
+
{ value: "fail", label: "Fail" },
|
|
7
|
+
{ value: "skip", label: "Skip" },
|
|
8
|
+
{ value: "pass", label: "Pass" },
|
|
9
|
+
{ value: "warn", label: "Warn" },
|
|
10
|
+
{ value: "error", label: "Error" },
|
|
11
|
+
{ value: "summary", label: "Summary" }
|
|
16
12
|
];
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
const validStatuses = STATUS_OPTIONS.map((option) => option.value);
|
|
14
|
+
const SelectStatus = () => {
|
|
15
|
+
const { filter, updateFilter } = usePolicyReportsFilters();
|
|
16
|
+
const handleChange = (key) => {
|
|
17
|
+
if (key === null) {
|
|
18
|
+
updateFilter({ status: [] });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!Array.isArray(key)) {
|
|
22
|
+
updateFilter({
|
|
23
|
+
status: validStatuses.includes(key) ? [key] : []
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const filteredStatuses = key.filter(
|
|
28
|
+
(item) => validStatuses.includes(item)
|
|
29
|
+
);
|
|
30
|
+
updateFilter({ status: filteredStatuses });
|
|
30
31
|
};
|
|
31
|
-
return /* @__PURE__ */
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return "All";
|
|
44
|
-
}
|
|
45
|
-
return selected.join(", ");
|
|
46
|
-
},
|
|
47
|
-
onChange: handleChange,
|
|
48
|
-
children: STATUS_VALUES.map((status) => /* @__PURE__ */ jsxs(MenuItem, { value: status, children: [
|
|
49
|
-
/* @__PURE__ */ jsx(Checkbox, { checked: currentStatus.includes(status) }),
|
|
50
|
-
/* @__PURE__ */ jsx(ListItemText, { primary: status })
|
|
51
|
-
] }, status))
|
|
52
|
-
}
|
|
53
|
-
)
|
|
54
|
-
] });
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
Select,
|
|
34
|
+
{
|
|
35
|
+
label: "Status",
|
|
36
|
+
selectionMode: "multiple",
|
|
37
|
+
options: STATUS_OPTIONS,
|
|
38
|
+
value: filter.status ?? [],
|
|
39
|
+
onChange: handleChange,
|
|
40
|
+
placeholder: "All",
|
|
41
|
+
style: { width: 200 }
|
|
42
|
+
}
|
|
43
|
+
);
|
|
55
44
|
};
|
|
56
45
|
|
|
57
46
|
export { SelectStatus };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectStatus.esm.js","sources":["../../../src/components/SelectStatus/SelectStatus.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"SelectStatus.esm.js","sources":["../../../src/components/SelectStatus/SelectStatus.tsx"],"sourcesContent":["import { Status } from '@kyverno/backstage-plugin-policy-reporter-common';\nimport { Select } from '@backstage/ui';\nimport { Key } from 'react';\nimport { usePolicyReportsFilters } from '../../hooks/usePolicyReportsFilters';\n\nconst STATUS_OPTIONS: { value: Status; label: string }[] = [\n { value: 'fail', label: 'Fail' },\n { value: 'skip', label: 'Skip' },\n { value: 'pass', label: 'Pass' },\n { value: 'warn', label: 'Warn' },\n { value: 'error', label: 'Error' },\n { value: 'summary', label: 'Summary' },\n];\n\nconst validStatuses = STATUS_OPTIONS.map(option => option.value);\n\nexport const SelectStatus = () => {\n const { filter, updateFilter } = usePolicyReportsFilters();\n\n const handleChange = (key: Key | Key[] | null) => {\n if (key === null) {\n updateFilter({ status: [] });\n return;\n }\n\n if (!Array.isArray(key)) {\n updateFilter({\n status: validStatuses.includes(key as Status) ? [key as Status] : [],\n });\n return;\n }\n\n const filteredStatuses = key.filter((item): item is Status =>\n validStatuses.includes(item as Status),\n );\n updateFilter({ status: filteredStatuses });\n };\n\n return (\n <Select\n label=\"Status\"\n selectionMode=\"multiple\"\n options={STATUS_OPTIONS}\n value={filter.status ?? []}\n onChange={handleChange}\n placeholder=\"All\"\n style={{ width: 200 }}\n />\n );\n};\n"],"names":[],"mappings":";;;;AAKA,MAAM,cAAA,GAAqD;AAAA,EACzD,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,EACjC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA;AAC7B,CAAA;AAEA,MAAM,aAAA,GAAgB,cAAA,CAAe,GAAA,CAAI,CAAA,MAAA,KAAU,OAAO,KAAK,CAAA;AAExD,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,EAAa,GAAI,uBAAA,EAAwB;AAEzD,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAA4B;AAChD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,YAAA,CAAa,EAAE,MAAA,EAAQ,EAAC,EAAG,CAAA;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACvB,MAAA,YAAA,CAAa;AAAA,QACX,MAAA,EAAQ,cAAc,QAAA,CAAS,GAAa,IAAI,CAAC,GAAa,IAAI;AAAC,OACpE,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,mBAAmB,GAAA,CAAI,MAAA;AAAA,MAAO,CAAC,IAAA,KACnC,aAAA,CAAc,QAAA,CAAS,IAAc;AAAA,KACvC;AACA,IAAA,YAAA,CAAa,EAAE,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,QAAA;AAAA,MACN,aAAA,EAAc,UAAA;AAAA,MACd,OAAA,EAAS,cAAA;AAAA,MACT,KAAA,EAAO,MAAA,CAAO,MAAA,IAAU,EAAC;AAAA,MACzB,QAAA,EAAU,YAAA;AAAA,MACV,WAAA,EAAY,KAAA;AAAA,MACZ,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA;AAAI;AAAA,GACtB;AAEJ;;;;"}
|