add MultiCredentialsLookup select/deselect logic

This commit is contained in:
Keith Grant
2019-11-25 10:02:22 -08:00
parent 6260633974
commit 4341d67fb0
3 changed files with 18 additions and 29 deletions

View File

@@ -92,7 +92,6 @@ function MultiCredentialsLookup(props) {
}, []); }, []);
useEffect(() => { useEffect(() => {
console.log('useEffect', selectedType);
(async () => { (async () => {
if (!selectedType) { if (!selectedType) {
return; return;
@@ -111,21 +110,7 @@ function MultiCredentialsLookup(props) {
})(); })();
}, [selectedType]); }, [selectedType]);
// handleCredentialTypeSelect(value, type) { const isMultiple = selectedType && selectedType.value === 'Vault';
// const { credentialTypes } = this.state;
// const selectedType = credentialTypes.filter(item => item.label === type);
// this.setState({ selectedCredentialType: selectedType[0] }, () => {
// this.loadCredentials();
// });
// }
// const {
// selectedCredentialType,
// credentialTypes,
// credentials,
// credentialsCount,
// } = state;
return ( return (
<FormGroup label={i18n._(t`Credentials`)} fieldId="multiCredential"> <FormGroup label={i18n._(t`Credentials`)} fieldId="multiCredential">
{tooltip && <FieldTooltip content={tooltip} />} {tooltip && <FieldTooltip content={tooltip} />}
@@ -134,15 +119,10 @@ function MultiCredentialsLookup(props) {
onToggleItem={toggleCredentialSelection} onToggleItem={toggleCredentialSelection}
id="multiCredential" id="multiCredential"
lookupHeader={i18n._(t`Credentials`)} lookupHeader={i18n._(t`Credentials`)}
// name="credentials"
value={value} value={value}
multiple multiple
onChange={onChange} onChange={onChange}
// items={credentials}
// count={credentialsCount}
qsConfig={QS_CONFIG} qsConfig={QS_CONFIG}
// columns={}
// TODO bind removeItem
renderItemChip={({ item, removeItem, canDelete }) => ( renderItemChip={({ item, removeItem, canDelete }) => (
<CredentialChip <CredentialChip
key={item.id} key={item.id}
@@ -184,13 +164,25 @@ function MultiCredentialsLookup(props) {
isSearchable: true, isSearchable: true,
}, },
]} ]}
multiple={selectedType && selectedType.value === 'Vault'} multiple={isMultiple}
header={i18n._(t`Credentials`)} header={i18n._(t`Credentials`)}
name="credentials" name="credentials"
qsConfig={QS_CONFIG} qsConfig={QS_CONFIG}
readOnly={!canDelete} readOnly={!canDelete}
selectItem={() => {}} selectItem={item => {
deselectItem={() => {}} if (isMultiple) {
return dispatch({ type: 'SELECT_ITEM', item });
}
const selectedItems = state.selectedItems.filter(
i => i.kind !== item.kind
);
selectedItems.push(item);
return dispatch({
type: 'SET_SELECTED_ITEMS',
selectedItems,
});
}}
deselectItem={item => dispatch({ type: 'DESELECT_ITEM', item })}
/> />
</> </>
); );

View File

@@ -171,11 +171,7 @@ const Item = shape({
Lookup.propTypes = { Lookup.propTypes = {
id: string, id: string,
// items: arrayOf(shape({})).isRequired,
// count: number.isRequired,
// TODO: change to `header`
header: string, header: string,
// name: string,
onChange: func.isRequired, onChange: func.isRequired,
value: oneOfType([Item, arrayOf(Item)]), value: oneOfType([Item, arrayOf(Item)]),
multiple: bool, multiple: bool,
@@ -189,7 +185,6 @@ Lookup.propTypes = {
Lookup.defaultProps = { Lookup.defaultProps = {
id: 'lookup-search', id: 'lookup-search',
header: null, header: null,
// name: null,
value: null, value: null,
multiple: false, multiple: false,
required: false, required: false,

View File

@@ -15,6 +15,8 @@ export default function reducer(state, action) {
return { ...state, multiple: action.value }; return { ...state, multiple: action.value };
case 'SET_VALUE': case 'SET_VALUE':
return { ...state, value: action.value }; return { ...state, value: action.value };
case 'SET_SELECTED_ITEMS':
return { ...state, selectedItems: action.selectedItems };
default: default:
throw new Error(`Unrecognized action type: ${action.type}`); throw new Error(`Unrecognized action type: ${action.type}`);
} }