Skip to content

Commit

Permalink
fix: EntitySelect (pinterest#1215)
Browse files Browse the repository at this point in the history
* fix: EntitySelect

* check creatable

* comments

* comments

* fix undefined
  • Loading branch information
jczhong84 authored and aidenprice committed Jan 3, 2024
1 parent 8672478 commit 987fb79
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
25 changes: 14 additions & 11 deletions querybook/webapp/components/Search/EntitySelect.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ interface IEntitySelectProps {
placeholder?: string;
onSelect?: (entity: string) => void;
onEntitiesChange?: (entities: string[]) => void;

/**
* will validate only if creatable is true
*/
validateEntity?: (entity: string) => boolean;

mini?: boolean;
}

Expand Down Expand Up @@ -60,25 +65,23 @@ export const EntitySelect = ({
[entities, selectedEntities]
);

const isValid = React.useMemo(
const isInvalidForCreation = React.useMemo(
() =>
!searchText ||
(!selectedEntities.includes(searchText) &&
validateEntity(searchText)),
[searchText, selectedEntities, validateEntity]
creatable &&
searchText.length > 0 &&
(selectedEntities.includes(searchText) ||
(validateEntity && !validateEntity(searchText))),
[searchText, creatable, selectedEntities, validateEntity]
);

const handleEntitySelect = useCallback(
(option) => {
const valid =
!selectedEntities.includes(option) &&
(validateEntity?.(option) ?? true);
if (valid) {
if (!selectedEntities.includes(option)) {
onSelect?.(option);
onEntitiesChange?.([...selectedEntities, option]);
}
},
[selectedEntities, validateEntity, onSelect, onEntitiesChange]
[selectedEntities, onSelect, onEntitiesChange]
);

const handleEntityRemove = useCallback(
Expand All @@ -104,7 +107,7 @@ export const EntitySelect = ({
))}
</div>
)}
<div className={isValid ? undefined : 'invalid'}>
<div className={isInvalidForCreation ? 'invalid' : undefined}>
<SimpleReactSelect
creatable={creatable}
value={searchText}
Expand Down
2 changes: 0 additions & 2 deletions querybook/webapp/components/Search/SearchOverview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import {
makeReactSelectStyle,
miniAsyncReactSelectStyles,
} from 'lib/utils/react-select';
import { isTagValid } from 'lib/utils/tag';
import { queryMetastoresSelector } from 'redux/dataSources/selector';
import * as dataTableSearchActions from 'redux/dataTableSearch/action';
import { currentEnvironmentSelector } from 'redux/environment/selector';
Expand Down Expand Up @@ -345,7 +344,6 @@ export const SearchOverview: React.FC<ISearchOverviewProps> = ({
selectedEntities={searchFilters?.tags || []}
loadEntities={TableTagResource.search}
onEntitiesChange={updateTags}
validateEntity={isTagValid}
placeholder="search tag"
/>
);
Expand Down

0 comments on commit 987fb79

Please sign in to comment.