From bbad0857ffd8407e5a17b14f8a5f5b1179b7fab1 Mon Sep 17 00:00:00 2001 From: dblythy Date: Thu, 8 Sep 2022 16:47:28 +1000 Subject: [PATCH] feat: allow searching via enter key --- src/components/BrowserFilter/BrowserFilter.react.js | 1 + src/components/BrowserFilter/FilterRow.react.js | 13 ++++++++----- src/components/Filter/Filter.react.js | 7 ++++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/components/BrowserFilter/BrowserFilter.react.js b/src/components/BrowserFilter/BrowserFilter.react.js index 3d7fe21496..d9a37caf27 100644 --- a/src/components/BrowserFilter/BrowserFilter.react.js +++ b/src/components/BrowserFilter/BrowserFilter.react.js @@ -117,6 +117,7 @@ export default class BrowserFilter extends React.Component { schema={this.props.schema} filters={this.state.filters} onChange={filters => this.setState({ filters: filters })} + onSearch={this.apply.bind(this)} renderRow={props => ( 0} parentContentId={POPOVER_CONTENT_ID} /> )} diff --git a/src/components/BrowserFilter/FilterRow.react.js b/src/components/BrowserFilter/FilterRow.react.js index f10dc18c37..429487193b 100644 --- a/src/components/BrowserFilter/FilterRow.react.js +++ b/src/components/BrowserFilter/FilterRow.react.js @@ -27,13 +27,13 @@ let setFocus = (input) => { } } -function compareValue(info, value, onChangeCompareTo, active, parentContentId) { +function compareValue(info, value, onChangeCompareTo, onKeyDown, active, parentContentId) { switch (info.type) { case null: return null; case 'Object': case 'String': - return onChangeCompareTo(e.target.value)} ref={setFocus}/>; + return onChangeCompareTo(e.target.value)} onKeyDown={onKeyDown} ref={setFocus}/>; case 'Pointer': return ( + }} + onKeyDown={onKeyDown} + /> ); case 'Date': return ( @@ -70,7 +72,7 @@ function compareValue(info, value, onChangeCompareTo, active, parentContentId) { className={styles.date} value={Parse._decode('date', value)} onChange={(value) => onChangeCompareTo(Parse._encode(value))} - ref={setFocus} + ref={setFocus} parentContentId={parentContentId} /> ); } @@ -86,6 +88,7 @@ let FilterRow = ({ onChangeField, onChangeConstraint, onChangeCompareTo, + onKeyDown, onDeleteRow, active, parentContentId, @@ -102,7 +105,7 @@ let FilterRow = ({ value={Constraints[currentConstraint].name} options={constraints.map((c) => Constraints[c].name)} onChange={(c) => onChangeConstraint(constraintLookup[c], compareTo)} /> - {compareValue(compareInfo, compareTo, onChangeCompareTo, active, parentContentId)} + {compareValue(compareInfo, compareTo, onChangeCompareTo, onKeyDown, active, parentContentId)} ); diff --git a/src/components/Filter/Filter.react.js b/src/components/Filter/Filter.react.js index c08c82d6e0..453e5d4046 100644 --- a/src/components/Filter/Filter.react.js +++ b/src/components/Filter/Filter.react.js @@ -44,7 +44,7 @@ function deleteRow(filters, index) { return filters.delete(index); } -let Filter = ({ schema, filters, renderRow, onChange, blacklist, className }) => { +let Filter = ({ schema, filters, renderRow, onChange, onSearch, blacklist, className }) => { const currentApp = React.useContext(CurrentApp); blacklist = blacklist || []; let available = Filters.availableFilters(schema, filters); @@ -116,6 +116,11 @@ let Filter = ({ schema, filters, renderRow, onChange, blacklist, className }) => onChangeCompareTo: newCompare => { onChange(changeCompareTo(schema, filters, i, compareType, newCompare)); }, + onKeyDown: ({key}) => { + if (key === 'Enter') { + onSearch(); + } + }, onDeleteRow: () => { onChange(deleteRow(filters, i)); }