diff --git a/packages/web/src/datagrid/ColumnManager.js b/packages/web/src/datagrid/ColumnManager.js
index 3dfc93b09..b308d87b7 100644
--- a/packages/web/src/datagrid/ColumnManager.js
+++ b/packages/web/src/datagrid/ColumnManager.js
@@ -5,6 +5,7 @@ import { filterName } from '@dbgate/datalib';
import { ExpandIcon } from '../icons';
import InlineButton from '../widgets/InlineButton';
import { ManagerInnerContainer } from './ManagerStyles';
+import SearchInput from '../widgets/SearchInput';
const Wrapper = styled.div``;
@@ -29,10 +30,10 @@ const Button = styled.button`
// width: 50px;
`;
-const Input = styled.input`
- flex: 1;
- min-width: 90px;
-`;
+// const Input = styled.input`
+// flex: 1;
+// min-width: 90px;
+// `;
// function ExpandIcon({ display, column, isHover, ...other }) {
// if (column.foreignKey) {
@@ -89,12 +90,7 @@ export default function ColumnManager(props) {
return (
<>
- setColumnFilter(e.target.value)}
- />
+
display.hideAllColumns()}>Hide
display.showAllColumns()}>Show
diff --git a/packages/web/src/datagrid/ReferenceManager.js b/packages/web/src/datagrid/ReferenceManager.js
index 06e3ebd48..aaad8195a 100644
--- a/packages/web/src/datagrid/ReferenceManager.js
+++ b/packages/web/src/datagrid/ReferenceManager.js
@@ -2,17 +2,14 @@ import React from 'react';
import styled from 'styled-components';
import { ManagerInnerContainer } from './ManagerStyles';
import { LinkIcon, ReferenceIcon } from '../icons';
+import SearchInput from '../widgets/SearchInput';
+import { filterName } from '@dbgate/datalib';
const SearchBoxWrapper = styled.div`
display: flex;
margin-bottom: 5px;
`;
-const Input = styled.input`
- flex: 1;
- min-width: 90px;
-`;
-
const Header = styled.div`
font-weight: bold;
`;
@@ -53,53 +50,57 @@ export default function ReferenceManager(props) {
return (
<>
- setFilter(e.target.value)} />
+
{foreignKeys && foreignKeys.length > 0 && (
<>
References tables ({foreignKeys.length})
- {foreignKeys.map((fk) => (
-
- props.onReferenceClick({
- schemaName: fk.refSchemaName,
- pureName: fk.refTableName,
- columns: fk.columns.map((col) => ({
- baseName: col.columnName,
- refName: col.refColumnName,
- })),
- })
- }
- />
- ))}
+ {foreignKeys
+ .filter((fk) => filterName(filter, fk.refTableName))
+ .map((fk) => (
+
+ props.onReferenceClick({
+ schemaName: fk.refSchemaName,
+ pureName: fk.refTableName,
+ columns: fk.columns.map((col) => ({
+ baseName: col.columnName,
+ refName: col.refColumnName,
+ })),
+ })
+ }
+ />
+ ))}
>
)}
{dependencies && dependencies.length > 0 && (
<>
Dependend tables ({dependencies.length})
- {dependencies.map((fk) => (
-
- props.onReferenceClick({
- schemaName: fk.schemaName,
- pureName: fk.pureName,
- columns: fk.columns.map((col) => ({
- baseName: col.refColumnName,
- refName: col.columnName,
- })),
- })
- }
- />
- ))}
+ {dependencies
+ .filter((fk) => filterName(filter, fk.pureName))
+ .map((fk) => (
+
+ props.onReferenceClick({
+ schemaName: fk.schemaName,
+ pureName: fk.pureName,
+ columns: fk.columns.map((col) => ({
+ baseName: col.refColumnName,
+ refName: col.columnName,
+ })),
+ })
+ }
+ />
+ ))}
>
)}
diff --git a/packages/web/src/widgets/DatabaseWidget.js b/packages/web/src/widgets/DatabaseWidget.js
index 53b95287f..5518ee07f 100644
--- a/packages/web/src/widgets/DatabaseWidget.js
+++ b/packages/web/src/widgets/DatabaseWidget.js
@@ -17,13 +17,13 @@ import {
import {
SearchBoxWrapper,
WidgetsInnerContainer,
- Input,
WidgetsMainContainer,
WidgetsOuterContainer,
WidgetTitle,
} from './WidgetStyles';
import axios from '../utility/axios';
import LoadingInfo from './LoadingInfo';
+import SearchInput from './SearchInput';
function SubDatabaseList({ data }) {
const setDb = useSetCurrentDatabase();
@@ -64,7 +64,7 @@ function ConnectionList() {
<>
Connections
- setFilter(e.target.value)} />
+
Refresh
@@ -98,12 +98,7 @@ function SqlObjectList({ conid, database }) {
<>
Tables, views, functions
- setFilter(e.target.value)}
- />
+
Refresh
diff --git a/packages/web/src/widgets/FilesWidget.js b/packages/web/src/widgets/FilesWidget.js
index 2cfedc5b3..32ee28f21 100644
--- a/packages/web/src/widgets/FilesWidget.js
+++ b/packages/web/src/widgets/FilesWidget.js
@@ -8,7 +8,6 @@ import openedTabAppObject from '../appobj/openedTabAppObject';
import {
SearchBoxWrapper,
WidgetsInnerContainer,
- Input,
WidgetsMainContainer,
WidgetsOuterContainer,
WidgetTitle,
diff --git a/packages/web/src/widgets/SearchInput.js b/packages/web/src/widgets/SearchInput.js
new file mode 100644
index 000000000..89c18a12a
--- /dev/null
+++ b/packages/web/src/widgets/SearchInput.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import styled from 'styled-components';
+import keycodes from '../utility/keycodes';
+
+const StyledInput = styled.input`
+ flex: 1;
+ min-width: 90px;
+`;
+
+export default function SearchInput({ placeholder, filter, setFilter }) {
+ const handleKeyDown = (ev) => {
+ if (ev.keyCode == keycodes.escape) {
+ setFilter('');
+ }
+ };
+ return (
+ setFilter(e.target.value)}
+ onFocus={(e) => e.target.select()}
+ onKeyDown={handleKeyDown}
+ />
+ );
+}
diff --git a/packages/web/src/widgets/WidgetStyles.js b/packages/web/src/widgets/WidgetStyles.js
index 5ea454d36..ad8d9717b 100644
--- a/packages/web/src/widgets/WidgetStyles.js
+++ b/packages/web/src/widgets/WidgetStyles.js
@@ -43,10 +43,10 @@ export function WidgetsInnerContainer({ children }) {
return {children};
}
-export const Input = styled.input`
- flex: 1;
- min-width: 90px;
-`;
+// export const Input = styled.input`
+// flex: 1;
+// min-width: 90px;
+// `;
export const WidgetTitle = styled.div`
padding: 5px;