diff --git a/ui/src/app/core/components/Header.js b/ui/src/app/core/components/Header.js
index dbade4c52..4847c83f5 100644
--- a/ui/src/app/core/components/Header.js
+++ b/ui/src/app/core/components/Header.js
@@ -7,7 +7,7 @@ import Dropdown from 'react-bootstrap/Dropdown';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faTh, faSignOutAlt, faPlusCircle, faCube, faCubes, faUsersCog, faSpinner, faUserCircle, faCog, faFileArchive, faUserTag, faBoxOpen, faTags, faIdBadge } from '@fortawesome/free-solid-svg-icons';
+import { faTh, faSignOutAlt, faPlusCircle, faCube, faCubes, faUsersCog, faSpinner, faUserCircle, faCog, faBoxOpen, faTags, faIdBadge } from '@fortawesome/free-solid-svg-icons';
import Translate from '../../i18n/components/translate';
import { useTranslator } from '../../i18n/hooks';
diff --git a/ui/src/app/form/component/widgets/AttributeReleaseWidget.js b/ui/src/app/form/component/widgets/AttributeReleaseWidget.js
index 8483f7931..1471f0485 100644
--- a/ui/src/app/form/component/widgets/AttributeReleaseWidget.js
+++ b/ui/src/app/form/component/widgets/AttributeReleaseWidget.js
@@ -1,10 +1,10 @@
import React from "react";
import Form from "react-bootstrap/Form";
+import intersection from 'lodash/intersection';
import Translate from "../../../i18n/components/translate";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faCheck, faTimes } from "@fortawesome/free-solid-svg-icons";
import Button from 'react-bootstrap/Button';
-import { useTranslator } from "../../../i18n/hooks";
const selectValue = (value, selected, all) => {
const at = all.indexOf(value);
@@ -71,13 +71,49 @@ const AttributeReleaseWidget = ({
onChange(update);
}
+ const onUncheckBundle = (option) => {
+ const all = (enumOptions).map(({ value }) => value);
+ let update = [
+ ...value
+ ];
+ (option.value).forEach(v => update = deselectValue(v, update, all));
+
+ onChange(update);
+ }
+
const onClearAll = () => {
onChange([]);
}
+ const attrs = React.useMemo(() => enumOptions.filter(e => !(typeof e.value === 'string' ? false : true)), [enumOptions]);
+ const bundles = React.useMemo(() => enumOptions.filter(e => (typeof e.value === 'string' ? false : true)), [enumOptions]);
+
+ const bundlelist = React.useMemo(() => bundles.map((b) => (
+ {
+ ...b,
+ selected: intersection(b.value, value).length === b.value.length
+ }
+ )), [bundles, value]);
+
return (