|
5 | 5 | data: {}, // Autocomplete data set
|
6 | 6 | limit: Infinity, // Limit of results the autocomplete shows
|
7 | 7 | onAutocomplete: null, // Callback for when autocompleted
|
| 8 | + dropdownOptions: { |
| 9 | + // Default dropdown options |
| 10 | + autoFocus: false, |
| 11 | + closeOnClick: false, |
| 12 | + coverTrigger: false |
| 13 | + }, |
8 | 14 | minLength: 1, // Min characters before autocomplete starts
|
9 | 15 | sortFunction: function(a, b, inputString) {
|
10 | 16 | // Sort function for sorting autocomplete results
|
|
152 | 158 | this.$inputField.append(this.container);
|
153 | 159 | this.el.setAttribute('data-target', this.container.id);
|
154 | 160 |
|
155 |
| - this.dropdown = M.Dropdown.init(this.el, { |
156 |
| - autoFocus: false, |
157 |
| - closeOnClick: false, |
158 |
| - coverTrigger: false, |
159 |
| - onItemClick: (itemEl) => { |
160 |
| - this.selectOption($(itemEl)); |
| 161 | + // Initialize dropdown |
| 162 | + let dropdownOptions = $.extend( |
| 163 | + Autocomplete.defaults.dropdownOptions, |
| 164 | + this.options.dropdownOptions |
| 165 | + ); |
| 166 | + let userOnItemClick = dropdownOptions.onItemClick; |
| 167 | + |
| 168 | + // Ensuring the selectOption call when user passes custom onItemClick function to dropdown |
| 169 | + dropdownOptions.onItemClick = (el) => { |
| 170 | + this.selectOption($(el)); |
| 171 | + |
| 172 | + // Handle user declared onItemClick if needed |
| 173 | + if (userOnItemClick && typeof userOnItemClick === 'function') { |
| 174 | + userOnItemClick.call(this.dropdown, this.el); |
161 | 175 | }
|
162 |
| - }); |
| 176 | + }; |
| 177 | + |
| 178 | + this.dropdown = M.Dropdown.init(this.el, dropdownOptions); |
163 | 179 |
|
164 | 180 | // Sketchy removal of dropdown click handler
|
165 | 181 | this.el.removeEventListener('click', this.dropdown._handleClickBound);
|
|
0 commit comments