Merge pull request #4657 from pangeachat/4634-let-users-search-by-language-code

feat: allow language course search by langCode
This commit is contained in:
ggurdin 2025-11-14 10:00:20 -05:00 committed by GitHub
commit b591034b3b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 9 deletions

View file

@ -25,6 +25,13 @@ class CourseLanguageFilter extends StatelessWidget {
displayname: (v) => v.getDisplayName(context) ?? v.displayName,
enableSearch: true,
defaultName: L10n.of(context).allLanguages,
searchMatchFn: (item, searchValue) {
final search = searchValue.toLowerCase();
final displayName = item.value?.displayName.toLowerCase();
final langCode = item.value?.langCode.toLowerCase();
return displayName?.startsWith(search) == true ||
langCode?.startsWith(search) == true;
},
);
}
}

View file

@ -13,6 +13,7 @@ class CoursePlanFilter<T> extends StatefulWidget {
final String Function(T) displayname;
final bool enableSearch;
final bool Function(DropdownMenuItem<T>, String)? searchMatchFn;
const CoursePlanFilter({
super.key,
@ -22,6 +23,7 @@ class CoursePlanFilter<T> extends StatefulWidget {
required this.defaultName,
required this.displayname,
this.enableSearch = false,
this.searchMatchFn,
});
@override
@ -100,15 +102,7 @@ class CoursePlanFilterState<T> extends State<CoursePlanFilter<T>> {
),
),
),
searchMatchFn: (item, searchValue) {
final displayName = (item.value != null
? widget.displayname(item.value as T)
: widget.defaultName)
.toLowerCase();
final search = searchValue.toLowerCase();
return displayName.startsWith(search);
},
searchMatchFn: widget.searchMatchFn,
)
: null,
onMenuStateChange: (isOpen) {