Fixed #2872 - Dropdown: UpArrow triggers "Uncaught TypeError.." Firefox, Nuxt 3
parent
aafa0ca3a1
commit
615c09a9c7
|
@ -738,14 +738,14 @@ export default {
|
||||||
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findLastOptionIndex() {
|
findLastOptionIndex() {
|
||||||
return this.visibleOptions.findLastIndex(option => this.isValidOption(option));
|
return ObjectUtils.findLastIndex(this.visibleOptions, option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findNextOptionIndex(index) {
|
findNextOptionIndex(index) {
|
||||||
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
||||||
},
|
},
|
||||||
findPrevOptionIndex(index) {
|
findPrevOptionIndex(index) {
|
||||||
const matchedOptionIndex = index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
||||||
},
|
},
|
||||||
findSelectedOptionIndex() {
|
findSelectedOptionIndex() {
|
||||||
|
|
|
@ -547,14 +547,14 @@ export default {
|
||||||
return this.visibleOptions.findIndex(processedOption => this.isValidOption(processedOption));
|
return this.visibleOptions.findIndex(processedOption => this.isValidOption(processedOption));
|
||||||
},
|
},
|
||||||
findLastOptionIndex() {
|
findLastOptionIndex() {
|
||||||
return this.visibleOptions.findLastIndex(processedOption => this.isValidOption(processedOption));
|
return ObjectUtils.findLastIndex(this.visibleOptions, processedOption => this.isValidOption(processedOption));
|
||||||
},
|
},
|
||||||
findNextOptionIndex(index) {
|
findNextOptionIndex(index) {
|
||||||
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(processedOption => this.isValidOption(processedOption)) : -1;
|
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(processedOption => this.isValidOption(processedOption)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
||||||
},
|
},
|
||||||
findPrevOptionIndex(index) {
|
findPrevOptionIndex(index) {
|
||||||
const matchedOptionIndex = index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(processedOption => this.isValidOption(processedOption)) : -1;
|
const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), processedOption => this.isValidOption(processedOption)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
||||||
},
|
},
|
||||||
findSelectedOptionIndex() {
|
findSelectedOptionIndex() {
|
||||||
|
|
|
@ -678,14 +678,14 @@ export default {
|
||||||
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findLastOptionIndex() {
|
findLastOptionIndex() {
|
||||||
return this.visibleOptions.findLastIndex(option => this.isValidOption(option));
|
return ObjectUtils.findLastIndex(this.visibleOptions, option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findNextOptionIndex(index) {
|
findNextOptionIndex(index) {
|
||||||
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
||||||
},
|
},
|
||||||
findPrevOptionIndex(index) {
|
findPrevOptionIndex(index) {
|
||||||
const matchedOptionIndex = index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
||||||
},
|
},
|
||||||
findSelectedOptionIndex() {
|
findSelectedOptionIndex() {
|
||||||
|
|
|
@ -510,28 +510,28 @@ export default {
|
||||||
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findLastOptionIndex() {
|
findLastOptionIndex() {
|
||||||
return this.visibleOptions.findLastIndex(option => this.isValidOption(option));
|
return ObjectUtils.findLastIndex(this.visibleOptions, option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findNextOptionIndex(index) {
|
findNextOptionIndex(index) {
|
||||||
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
||||||
},
|
},
|
||||||
findPrevOptionIndex(index) {
|
findPrevOptionIndex(index) {
|
||||||
const matchedOptionIndex = index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
||||||
},
|
},
|
||||||
findFirstSelectedOptionIndex() {
|
findFirstSelectedOptionIndex() {
|
||||||
return this.hasSelectedOption ? this.visibleOptions.findIndex(option => this.isValidSelectedOption(option)) : -1;
|
return this.hasSelectedOption ? this.visibleOptions.findIndex(option => this.isValidSelectedOption(option)) : -1;
|
||||||
},
|
},
|
||||||
findLastSelectedOptionIndex() {
|
findLastSelectedOptionIndex() {
|
||||||
return this.hasSelectedOption ? this.visibleOptions.findLastIndex(option => this.isValidSelectedOption(option)) : -1;
|
return this.hasSelectedOption ? ObjectUtils.findLastIndex(this.visibleOptions, option => this.isValidSelectedOption(option)) : -1;
|
||||||
},
|
},
|
||||||
findNextSelectedOptionIndex(index) {
|
findNextSelectedOptionIndex(index) {
|
||||||
const matchedOptionIndex = this.hasSelectedOption && index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidSelectedOption(option)) : -1;
|
const matchedOptionIndex = this.hasSelectedOption && index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidSelectedOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
||||||
},
|
},
|
||||||
findPrevSelectedOptionIndex(index) {
|
findPrevSelectedOptionIndex(index) {
|
||||||
const matchedOptionIndex = this.hasSelectedOption && index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(option => this.isValidSelectedOption(option)) : -1;
|
const matchedOptionIndex = this.hasSelectedOption && index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), option => this.isValidSelectedOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
||||||
},
|
},
|
||||||
findNearestSelectedOptionIndex(index, firstCheckUp = false) {
|
findNearestSelectedOptionIndex(index, firstCheckUp = false) {
|
||||||
|
|
|
@ -795,28 +795,28 @@ export default {
|
||||||
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
return this.visibleOptions.findIndex(option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findLastOptionIndex() {
|
findLastOptionIndex() {
|
||||||
return this.visibleOptions.findLastIndex(option => this.isValidOption(option));
|
return ObjectUtils.findLastIndex(this.visibleOptions, option => this.isValidOption(option));
|
||||||
},
|
},
|
||||||
findNextOptionIndex(index) {
|
findNextOptionIndex(index) {
|
||||||
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
||||||
},
|
},
|
||||||
findPrevOptionIndex(index) {
|
findPrevOptionIndex(index) {
|
||||||
const matchedOptionIndex = index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(option => this.isValidOption(option)) : -1;
|
const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), option => this.isValidOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
||||||
},
|
},
|
||||||
findFirstSelectedOptionIndex() {
|
findFirstSelectedOptionIndex() {
|
||||||
return this.hasSelectedOption ? this.visibleOptions.findIndex(option => this.isValidSelectedOption(option)) : -1;
|
return this.hasSelectedOption ? this.visibleOptions.findIndex(option => this.isValidSelectedOption(option)) : -1;
|
||||||
},
|
},
|
||||||
findLastSelectedOptionIndex() {
|
findLastSelectedOptionIndex() {
|
||||||
return this.hasSelectedOption ? this.visibleOptions.findLastIndex(option => this.isValidSelectedOption(option)) : -1;
|
return this.hasSelectedOption ? ObjectUtils.findLastIndex(this.visibleOptions, option => this.isValidSelectedOption(option)) : -1;
|
||||||
},
|
},
|
||||||
findNextSelectedOptionIndex(index) {
|
findNextSelectedOptionIndex(index) {
|
||||||
const matchedOptionIndex = this.hasSelectedOption && index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidSelectedOption(option)) : -1;
|
const matchedOptionIndex = this.hasSelectedOption && index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(option => this.isValidSelectedOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
||||||
},
|
},
|
||||||
findPrevSelectedOptionIndex(index) {
|
findPrevSelectedOptionIndex(index) {
|
||||||
const matchedOptionIndex = this.hasSelectedOption && index > 0 ? this.visibleOptions.slice(0, index).findLastIndex(option => this.isValidSelectedOption(option)) : -1;
|
const matchedOptionIndex = this.hasSelectedOption && index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), option => this.isValidSelectedOption(option)) : -1;
|
||||||
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
||||||
},
|
},
|
||||||
findNearestSelectedOptionIndex(index, firstCheckUp = false) {
|
findNearestSelectedOptionIndex(index, firstCheckUp = false) {
|
||||||
|
|
|
@ -222,5 +222,24 @@ export default {
|
||||||
|
|
||||||
isPrintableCharacter(char = '') {
|
isPrintableCharacter(char = '') {
|
||||||
return this.isNotEmpty(char) && char.length === 1 && char.match(/\S| /);
|
return this.isNotEmpty(char) && char.length === 1 && char.match(/\S| /);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Firefox-v103 does not currently support the "findLastIndex" method. It is stated that this method will be supported with Firefox-v104.
|
||||||
|
* https://caniuse.com/mdn-javascript_builtins_array_findlastindex
|
||||||
|
*/
|
||||||
|
findLastIndex(arr, callback) {
|
||||||
|
let index = -1;
|
||||||
|
|
||||||
|
if (this.isNotEmpty(arr)) {
|
||||||
|
try {
|
||||||
|
index = arr.findLastIndex(callback);
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
index = arr.lastIndexOf([...arr].reverse().find(callback));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue