diff --git a/querybook/webapp/components/DataDocStatementExecution/StatementResult.tsx b/querybook/webapp/components/DataDocStatementExecution/StatementResult.tsx index 7ce97cca7..fc4426381 100644 --- a/querybook/webapp/components/DataDocStatementExecution/StatementResult.tsx +++ b/querybook/webapp/components/DataDocStatementExecution/StatementResult.tsx @@ -8,11 +8,12 @@ import { } from 'components/StatementResultTable/StatementResultTable'; import { IStatementExecution, IStatementResult } from 'const/queryExecution'; import { StatementExecutionResultSizes } from 'const/queryResultLimit'; +import { MIN_COLUMN_TO_SHOW_FILTER } from 'const/uiConfig'; import { useImmer } from 'hooks/useImmer'; import { useToggleState } from 'hooks/useToggleState'; import { getSelectStatementLimit } from 'lib/sql-helper/sql-limiter'; -import { formatNumber } from 'lib/utils/number'; import { stopPropagation } from 'lib/utils/noop'; +import { formatNumber } from 'lib/utils/number'; import { IStoreState } from 'redux/store/types'; import { TextButton } from 'ui/Button/Button'; import { InfoButton } from 'ui/Button/InfoButton'; @@ -402,9 +403,11 @@ const ColumnToggleMenuButton: React.FC<{ const [keyword, setKeyword] = useState(''); const filteredColumnNames = useMemo( () => - columnNames.filter((names) => - names.toLowerCase().includes(keyword.toLowerCase()) - ), + keyword === '' + ? columnNames + : columnNames.filter((names) => + names.toLowerCase().includes(keyword.toLowerCase()) + ), [columnNames, keyword] ); const isAllSelected = useMemo( @@ -414,16 +417,19 @@ const ColumnToggleMenuButton: React.FC<{ const getPopoverContent = () => (
-
- -
+ {columnNames.length >= MIN_COLUMN_TO_SHOW_FILTER && ( +
+ +
+ )} +
= ({ className="engine-selector-dropdown" >
- {queryEngines.length > 3 && ( + {queryEngines.length >= MIN_ENGINE_TO_SHOW_FILTER && (
diff --git a/querybook/webapp/components/Search/SearchOverview.scss b/querybook/webapp/components/Search/SearchOverview.scss index 9be613176..a50f5c33c 100644 --- a/querybook/webapp/components/Search/SearchOverview.scss +++ b/querybook/webapp/components/Search/SearchOverview.scss @@ -22,9 +22,9 @@ } .search-bar-wrapper { + padding: 0px var(--padding) 4px; .SearchBar { flex-grow: 1; - padding: 0px var(--padding) 4px; .DebouncedInput { input { padding: var(--padding); diff --git a/querybook/webapp/const/uiConfig.ts b/querybook/webapp/const/uiConfig.ts new file mode 100644 index 000000000..44f78cffa --- /dev/null +++ b/querybook/webapp/const/uiConfig.ts @@ -0,0 +1,13 @@ +/** + * This constant controls the minimum engines + * presented in the env for the engine picker + * to display a search bar + */ +export const MIN_ENGINE_TO_SHOW_FILTER = 4; + +/** + * this constant controls the minimum number + * of column from query results where we show + * the search bar in "hide columns" popover + */ +export const MIN_COLUMN_TO_SHOW_FILTER = 5; diff --git a/querybook/webapp/ui/SearchBar/SearchBar.scss b/querybook/webapp/ui/SearchBar/SearchBar.scss index 283c6b0f9..e7f8aeb10 100644 --- a/querybook/webapp/ui/SearchBar/SearchBar.scss +++ b/querybook/webapp/ui/SearchBar/SearchBar.scss @@ -6,34 +6,12 @@ .DebouncedInput { flex: 1; } - &.transparent { - .DebouncedInput { - input { - padding: 12px; - } - } - } + .SearchIcon { position: absolute; - right: 16px; - top: 10px; + right: 8px; + top: 50%; + transform: translateY(-50%); color: var(--icon); } - - .search-bar-clear-sep { - border-left: var(--border); - height: 20px; - } - - &.clear-search { - .DebouncedInput { - flex: 9; - } - .SearchIcon { - flex: 1; - } - .Button{ - flex: 1; - } - } } diff --git a/querybook/webapp/ui/SearchBar/SearchBar.tsx b/querybook/webapp/ui/SearchBar/SearchBar.tsx index 986d748da..b9070d16d 100644 --- a/querybook/webapp/ui/SearchBar/SearchBar.tsx +++ b/querybook/webapp/ui/SearchBar/SearchBar.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import React from 'react'; import { matchKeyPress } from 'lib/utils/keyboard'; -import { Button } from 'ui/Button/Button'; +import { IconButton } from 'ui/Button/IconButton'; import { DebouncedInput } from 'ui/DebouncedInput/DebouncedInput'; import { Icon } from 'ui/Icon/Icon'; @@ -74,20 +74,16 @@ export const SearchBar: React.FunctionComponent = ({ SearchBar: true, [className]: Boolean(className), transparent, - 'clear-search': hasClearSearch, }); const clearSearchButton = !searchIcon && hasClearSearch && value ? ( - <> - -