Configurable sorting fields

This commit is contained in:
Josh Johnson 2016-08-03 07:43:35 +01:00
parent 63bef1ee0e
commit b7484612eb
4 changed files with 16 additions and 4 deletions

View file

@ -41,6 +41,7 @@ A lightweight, configurable select box/text input plugin. Similar to Select2 and
search: true,
flip: true,
regexFilter: null,
sortFields: ['label', 'value'],
placeholder: true,
placeholderValue: null,
prependValue: null,
@ -221,6 +222,13 @@ Pass an array of objects:
<strong>Usage:</strong> A filter that will need to pass for a user to successfully add an item.
### sortFields
<strong>Type:</strong> `Array/String` <strong>Default:</strong>`['label', 'value']`
<strong>Input types affected:</strong>`select-one`, `select-multiple`
<strong>Usage:</strong> Specify which fields should be used for sorting.
### placeholder
<strong>Type:</strong> `Boolean` <strong>Default:</strong>`true`

File diff suppressed because one or more lines are too long

View file

@ -38,6 +38,7 @@ export class Choices {
search: true,
flip: true,
regexFilter: null,
sortFields: ['label', 'value'],
placeholder: true,
placeholderValue: null,
prependValue: null,
@ -884,8 +885,9 @@ export class Choices {
if(newValue.length >= 1 && newValue !== currentValue + ' ') {
const haystack = this.store.getChoicesFiltedBySelectable();
const needle = newValue;
const keys = isType('Array', this.config.sortFields) ? this.config.sortFields : [this.config.sortFields];
const fuse = new Fuse(haystack, {
keys: ['label', 'value'],
keys: keys,
shouldSort: true,
include: 'score',
});

View file

@ -225,7 +225,9 @@
});
});
var example10 = new Choices('#choices-14').ajax(function(callback) {
var example10 = new Choices('#choices-14', {
sortFields: 'value'
}).ajax(function(callback) {
var request = new XMLHttpRequest();
request.open('get', 'https://restcountries.eu/rest/v1/all', true);
request.onreadystatechange = function() {