mirror of
https://github.com/Choices-js/Choices.git
synced 2024-06-06 16:02:24 +02:00
Remove all items refactoring
This commit is contained in:
parent
673e937327
commit
1f0b0e467f
2
assets/scripts/dist/bundle.js
vendored
2
assets/scripts/dist/bundle.js
vendored
File diff suppressed because one or more lines are too long
|
@ -118,7 +118,8 @@ export class Choices {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
onKeyDown(e) {
|
onKeyDown(e) {
|
||||||
const storeValues = this.store.getState();
|
const state = this.store.getState();
|
||||||
|
const items = state.items;
|
||||||
const ctrlDownKey = e.ctrlKey || e.metaKey;
|
const ctrlDownKey = e.ctrlKey || e.metaKey;
|
||||||
const deleteKey = 8 || 46;
|
const deleteKey = 8 || 46;
|
||||||
const enterKey = 13;
|
const enterKey = 13;
|
||||||
|
@ -154,7 +155,7 @@ export class Choices {
|
||||||
// If no duplicates are allowed, and the value already exists
|
// If no duplicates are allowed, and the value already exists
|
||||||
// in the array, don't update
|
// in the array, don't update
|
||||||
if (this.options.allowDuplicates === false && this.passedElement.value) {
|
if (this.options.allowDuplicates === false && this.passedElement.value) {
|
||||||
canUpdate = !storeValues.some((item) => {
|
canUpdate = !items.some((item) => {
|
||||||
return item.value === value;
|
return item.value === value;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -194,18 +195,18 @@ export class Choices {
|
||||||
let lastItem = currentListItems[currentListItems.length - 1];
|
let lastItem = currentListItems[currentListItems.length - 1];
|
||||||
let inputIsFocussed = this.input === document.activeElement;
|
let inputIsFocussed = this.input === document.activeElement;
|
||||||
|
|
||||||
if(lastItem && !this.options.editItems && inputIsFocussed && this.options.removeItems) {
|
if(currentListItems && lastItem && !this.options.editItems && inputIsFocussed && this.options.removeItems) {
|
||||||
this.selectItem(lastItem);
|
this.selectItem(lastItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If editing the last item is allowed and there is a last item and
|
// If editing the last item is allowed and there is a last item and
|
||||||
// there are not other selected items (minus the last item), we can edit
|
// there are not other selected items (minus the last item), we can edit
|
||||||
// the item value. Otherwise if we can remove items, remove all items
|
// the item value. Otherwise if we can remove items, remove all items
|
||||||
if(this.options.removeItems && this.options.editItems && lastItem && selectedItems.length === 0 && inputIsFocussed) {
|
if(currentListItems && this.options.removeItems && this.options.editItems && lastItem && selectedItems.length === 0 && inputIsFocussed) {
|
||||||
this.input.value = lastItem.innerHTML;
|
this.input.value = lastItem.innerHTML;
|
||||||
this.removeItem(lastItem);
|
this.removeItem(lastItem);
|
||||||
} else {
|
} else {
|
||||||
this.removeAllItems();
|
this.removeAllItems(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -385,6 +386,7 @@ export class Choices {
|
||||||
* @param
|
* @param
|
||||||
*/
|
*/
|
||||||
removeItem(itemOrValue, callback = this.options.callbackOnRemoveItem) {
|
removeItem(itemOrValue, callback = this.options.callbackOnRemoveItem) {
|
||||||
|
|
||||||
if(!itemOrValue) {
|
if(!itemOrValue) {
|
||||||
console.error('removeItem: No item or value was passed to be removed');
|
console.error('removeItem: No item or value was passed to be removed');
|
||||||
return;
|
return;
|
||||||
|
@ -426,21 +428,24 @@ export class Choices {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove all items from array
|
* Remove all items from array
|
||||||
* @param {Array} items Items to remove from store
|
* @param {Boolean} selectedOnly Optionally remove only selected items
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
removeAllItems() {
|
removeAllItems(selectedOnly = false) {
|
||||||
const items = this.store.getState().items;
|
let state = this.store.getState();
|
||||||
|
let items = state.items;
|
||||||
|
|
||||||
console.log(items);
|
items.forEach((item) => {
|
||||||
|
if(selectedOnly) {
|
||||||
for (let i = 0; i < items.length; i++) {
|
if(item.selected && item.active && item.value){
|
||||||
const item = items[i];
|
this.removeItem(item.value);
|
||||||
|
}
|
||||||
if (item.selected) {
|
} else {
|
||||||
this.removeItem(item.value);
|
if(item.active && item.value) {
|
||||||
|
this.removeItem(item.value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleDropdown() {
|
toggleDropdown() {
|
||||||
|
@ -731,57 +736,57 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
delimiter: ' ',
|
delimiter: ' ',
|
||||||
editItems: true,
|
editItems: true,
|
||||||
maxItems: 5,
|
maxItems: 5,
|
||||||
// callbackOnRemoveItem: function(value) {
|
callbackOnRemoveItem: function(value) {
|
||||||
// console.log(value);
|
console.log(value);
|
||||||
// },
|
},
|
||||||
// callbackOnAddItem: function(item, value) {
|
callbackOnAddItem: function(item, value) {
|
||||||
// console.log(item, value);
|
console.log(item, value);
|
||||||
// },
|
},
|
||||||
// callbackOnRender: function(items) {
|
callbackOnRender: function(items) {
|
||||||
// console.log(items);
|
console.log(items);
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let choices2 = new Choices('#choices-2', {
|
let choices2 = new Choices('#choices-2', {
|
||||||
allowDuplicates: false,
|
allowDuplicates: false,
|
||||||
editItems: true,
|
editItems: true,
|
||||||
// callbackOnRender: function(items) {
|
callbackOnRender: function(items) {
|
||||||
// console.log(items);
|
console.log(items);
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let choices3 = new Choices('#choices-3', {
|
let choices3 = new Choices('#choices-3', {
|
||||||
allowDuplicates: false,
|
allowDuplicates: false,
|
||||||
editItems: true,
|
editItems: true,
|
||||||
regexFilter: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
regexFilter: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
||||||
// callbackOnRender: function(items) {
|
callbackOnRender: function(items) {
|
||||||
// console.log(items);
|
console.log(items);
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let choices4 = new Choices('#choices-4', {
|
let choices4 = new Choices('#choices-4', {
|
||||||
addItems: false,
|
addItems: false,
|
||||||
removeItems: false,
|
removeItems: false,
|
||||||
// callbackOnRender: function(items) {
|
callbackOnRender: function(items) {
|
||||||
// console.log(items);
|
console.log(items);
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let choices5 = new Choices('#choices-5', {
|
let choices5 = new Choices('#choices-5', {
|
||||||
prependValue: 'item-',
|
prependValue: 'item-',
|
||||||
appendValue: `-${Date.now()}`,
|
appendValue: `-${Date.now()}`,
|
||||||
// callbackOnRender: function(items) {
|
callbackOnRender: function(items) {
|
||||||
// console.log(items);
|
console.log(items);
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
choices5.removeAllItems();
|
choices5.removeAllItems();
|
||||||
|
|
||||||
let choices6 = new Choices('#choices-6', {
|
let choices6 = new Choices('#choices-6', {
|
||||||
items: ['josh@joshuajohnson.co.uk', 'joe@bloggs.co.uk'],
|
items: ['josh@joshuajohnson.co.uk', 'joe@bloggs.co.uk'],
|
||||||
// callbackOnRender: function(items) {
|
callbackOnRender: function(items) {
|
||||||
// console.log(items);
|
console.log(items);
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let choices7 = new Choices('#choices-7', {
|
let choices7 = new Choices('#choices-7', {
|
||||||
|
|
Loading…
Reference in a new issue