Skip to content

Commit 632f113

Browse files
authored
Merge pull request #774 from the-deep/feature-change-sort-searching
Change order of item after filtering
2 parents 2c8c25a + ed4f09f commit 632f113

File tree

10 files changed

+58
-61
lines changed

10 files changed

+58
-61
lines changed

src/components/general/DeepGalleryFileSelect/DeepGallerySelect/index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import ModalHeader from '#rscv/Modal/Header';
1717
import Table from '#rscv/Table';
1818
import {
1919
caseInsensitiveSubmatch,
20+
compareStringSearch,
2021
compareString,
2122
compareDate,
2223
} from '@togglecorp/fujs';
@@ -163,9 +164,9 @@ export default class DgSelect extends React.PureComponent {
163164
}
164165

165166
getTableData = memoize(({ galleryFiles, selected, searchInputValue }) => {
166-
const filterdGalleryFiles = galleryFiles.filter(
167-
file => caseInsensitiveSubmatch(file.title, searchInputValue),
168-
);
167+
const filterdGalleryFiles = galleryFiles
168+
.filter(file => caseInsensitiveSubmatch(file.title, searchInputValue))
169+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
169170

170171
return filterdGalleryFiles.map(file => (
171172
{ ...file, selected: selected.includes(file.id) }

src/views/Connector/index.js

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import ListView from '#rscv/List/ListView';
1313
import {
1414
reverseRoute,
1515
caseInsensitiveSubmatch,
16+
compareStringSearch,
1617
} from '@togglecorp/fujs';
1718

1819
import {
@@ -82,12 +83,9 @@ export default class Connector extends React.PureComponent {
8283
const { searchInputValue } = this.state;
8384

8485
if (this.props.connectorsList !== connectorsList) {
85-
const displayConnectorsList = connectorsList.filter(
86-
c => caseInsensitiveSubmatch(
87-
c.title,
88-
searchInputValue,
89-
),
90-
);
86+
const displayConnectorsList = connectorsList
87+
.filter(c => caseInsensitiveSubmatch(c.title, searchInputValue))
88+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
9189
this.setState({ displayConnectorsList });
9290
}
9391
}
@@ -134,12 +132,9 @@ export default class Connector extends React.PureComponent {
134132
}
135133

136134
handleSearchInputChange = (searchInputValue) => {
137-
const displayConnectorsList = this.props.connectorsList.filter(
138-
c => caseInsensitiveSubmatch(
139-
c.title,
140-
searchInputValue,
141-
),
142-
);
135+
const displayConnectorsList = this.props.connectorsList
136+
.filter(c => caseInsensitiveSubmatch(c.title, searchInputValue))
137+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
143138

144139
this.setState({
145140
displayConnectorsList,

src/views/Country/index.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { connect } from 'react-redux';
44
import {
55
caseInsensitiveSubmatch,
66
compareString,
7+
compareStringSearch,
78
} from '@togglecorp/fujs';
89

910
import Page from '#rscv/Page';
@@ -82,10 +83,9 @@ export default class CountryPanel extends React.PureComponent {
8283
const { countries } = nextProps;
8384
const { searchInputValue } = this.state;
8485
if (this.props.countries !== countries) {
85-
const displayCountryList = countries.filter(
86-
country => caseInsensitiveSubmatch(country.title, searchInputValue),
87-
);
88-
displayCountryList.sort((a, b) => compareString(a.title, b.title));
86+
const displayCountryList = countries
87+
.filter(country => caseInsensitiveSubmatch(country.title, searchInputValue))
88+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
8989
this.setState({ displayCountryList });
9090
}
9191
}
@@ -115,10 +115,9 @@ export default class CountryPanel extends React.PureComponent {
115115
}
116116

117117
handleSearchInputChange = (searchInputValue) => {
118-
const displayCountryList = this.props.countries.filter(
119-
country => caseInsensitiveSubmatch(country.title, searchInputValue),
120-
);
121-
118+
const displayCountryList = this.props.countries
119+
.filter(country => caseInsensitiveSubmatch(country.title, searchInputValue))
120+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
122121
this.setState({
123122
displayCountryList,
124123
searchInputValue,

src/views/LeadAdd/ConnectorSelectModal/index.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { connect } from 'react-redux';
55
import {
66
caseInsensitiveSubmatch,
77
reverseRoute,
8+
compareStringSearch,
89
} from '@togglecorp/fujs';
910

1011
import Icon from '#rscg/Icon';
@@ -112,9 +113,9 @@ export default class ConnectorSelectModal extends React.PureComponent {
112113

113114
if (newConnectorsList !== oldConnectorsList) {
114115
this.views = this.getContentViews(newConnectorsList);
115-
const displayConnectorsList = newConnectorsList.filter(
116-
c => caseInsensitiveSubmatch(c.title, searchInputValue),
117-
);
116+
const displayConnectorsList = newConnectorsList
117+
.filter(c => caseInsensitiveSubmatch(c.title, searchInputValue))
118+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
118119
this.setState({ displayConnectorsList });
119120
}
120121

@@ -351,9 +352,9 @@ export default class ConnectorSelectModal extends React.PureComponent {
351352
}
352353

353354
handleSearchInputChange = (searchInputValue) => {
354-
const displayConnectorsList = this.props.connectorsList.filter(
355-
c => caseInsensitiveSubmatch(c.title, searchInputValue),
356-
);
355+
const displayConnectorsList = this.props.connectorsList
356+
.filter(c => caseInsensitiveSubmatch(c.title, searchInputValue))
357+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
357358

358359
this.setState({
359360
displayConnectorsList,

src/views/Project/Details/Frameworks/FrameworkList/index.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import memoize from 'memoize-one';
44
import {
55
caseInsensitiveSubmatch,
66
compareString,
7+
compareStringSearch,
78
} from '@togglecorp/fujs';
89

910
import Icon from '#rscg/Icon';
@@ -81,12 +82,9 @@ FrameworkListItem.defaultProps = {
8182

8283

8384
const filterFrameworks = memoize((frameworkList, searchInputValue) => {
84-
const displayFrameworkList = frameworkList.filter(
85-
framework => caseInsensitiveSubmatch(
86-
framework.title,
87-
searchInputValue,
88-
),
89-
);
85+
const displayFrameworkList = frameworkList
86+
.filter(framework => caseInsensitiveSubmatch(framework.title, searchInputValue))
87+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
9088

9189
displayFrameworkList.sort(
9290
(a, b) => compareString(

src/views/Project/Details/Regions/index.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import PropTypes from 'prop-types';
22
import React from 'react';
33
import { connect } from 'react-redux';
44

5-
import { caseInsensitiveSubmatch, compareString } from '@togglecorp/fujs';
5+
import {
6+
caseInsensitiveSubmatch,
7+
compareString,
8+
compareStringSearch,
9+
} from '@togglecorp/fujs';
610
import AccentButton from '#rsca/Button/AccentButton';
711
import SearchInput from '#rsci/SearchInput';
812
import RadioInput from '#rsci/RadioInput';
@@ -110,9 +114,9 @@ export default class ProjectRegions extends React.PureComponent {
110114

111115
if (this.props.projectDetails !== projectDetails) {
112116
const { regions = [] } = projectDetails;
113-
const displayRegionList = regions.filter(
114-
region => caseInsensitiveSubmatch(region.title, searchInputValue),
115-
);
117+
const displayRegionList = regions
118+
.filter(region => caseInsensitiveSubmatch(region.title, searchInputValue))
119+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
116120

117121
let newSelectedRegion = selectedRegion;
118122
if (regions.findIndex(r => r.id === selectedRegion) === -1) {
@@ -151,9 +155,9 @@ export default class ProjectRegions extends React.PureComponent {
151155
handleSearchInputChange = (searchInputValue) => {
152156
const { projectDetails } = this.props;
153157
const { regions = [] } = projectDetails;
154-
const displayRegionList = regions.filter(
155-
region => caseInsensitiveSubmatch(region.title, searchInputValue),
156-
);
158+
const displayRegionList = regions
159+
.filter(region => caseInsensitiveSubmatch(region.title, searchInputValue))
160+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
157161

158162
this.setState({
159163
displayRegionList,

src/views/Project/Details/WordCategories/WordCategoryList/index.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import memoize from 'memoize-one';
55
import {
66
caseInsensitiveSubmatch,
77
compareString,
8+
compareStringSearch,
89
} from '@togglecorp/fujs';
910

1011
import Icon from '#rscg/Icon';
@@ -77,12 +78,9 @@ WordCategoryListItem.defaultProps = {
7778
};
7879

7980
const filterWordCategories = memoize((wordCategoryList, searchInputValue) => {
80-
const displayWordCategoryList = wordCategoryList.filter(
81-
wordCategory => caseInsensitiveSubmatch(
82-
wordCategory.title,
83-
searchInputValue,
84-
),
85-
);
81+
const displayWordCategoryList = wordCategoryList
82+
.filter(wordCategory => caseInsensitiveSubmatch(wordCategory.title, searchInputValue))
83+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
8684

8785
displayWordCategoryList.sort(
8886
(a, b) => compareString(

src/views/Project/ProjectList/index.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Message from '#rscv/Message';
1111
import {
1212
reverseRoute,
1313
caseInsensitiveSubmatch,
14+
compareStringSearch,
1415
} from '@togglecorp/fujs';
1516
import Cloak from '#components/general/Cloak';
1617

@@ -38,12 +39,9 @@ const defaultProps = {
3839
};
3940

4041
const filterProjects = memoize((userProjects, searchInputValue) => {
41-
const displayUserProjects = userProjects.filter(
42-
project => caseInsensitiveSubmatch(
43-
project.title,
44-
searchInputValue,
45-
),
46-
);
42+
const displayUserProjects = userProjects
43+
.filter(project => caseInsensitiveSubmatch(project.title, searchInputValue))
44+
.sort((a, b) => compareStringSearch(a.title, b.title, searchInputValue));
4745

4846
return displayUserProjects;
4947
});

src/views/UserGroup/MembersTable/index.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
caseInsensitiveSubmatch,
66
compareString,
77
compareDate,
8+
compareStringSearch,
89
} from '@togglecorp/fujs';
910

1011
import PrimaryButton from '#rsca/Button/PrimaryButton';
@@ -155,9 +156,10 @@ export default class MembersTable extends React.PureComponent {
155156

156157
handleSearchMemberChange = (value) => {
157158
const { membershipList } = this.props;
158-
const filteredMemberData = membershipList.filter(
159-
member => caseInsensitiveSubmatch(member.memberName, value),
160-
);
159+
const filteredMemberData = membershipList
160+
.filter(member => caseInsensitiveSubmatch(member.memberName, value))
161+
.sort((a, b) => compareStringSearch(a.memberName, b.memberName, value));
162+
161163
this.setState({
162164
searchMemberInputValue: value,
163165
membershipList: filteredMemberData,

src/views/UserGroup/ProjectsTable/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import memoize from 'memoize-one';
66
import {
77
reverseRoute,
88
caseInsensitiveSubmatch,
9+
compareStringSearch,
910
compareLength,
1011
compareString,
1112
isFalsy,
@@ -44,10 +45,10 @@ const mapDispatchToProps = dispatch => ({
4445
});
4546

4647
const searchProject = memoize((projects, value) => (
47-
!isFalsy(value) ?
48-
projects.filter(
49-
project => caseInsensitiveSubmatch(project.title, value),
50-
)
48+
!isFalsy(value)
49+
? projects
50+
.filter(project => caseInsensitiveSubmatch(project.title, value))
51+
.sort((a, b) => compareStringSearch(a.title, b.title, value))
5152
: projects
5253
));
5354

0 commit comments

Comments
 (0)