|
| 1 | +let filterTimeout; |
| 2 | + |
| 3 | +function filterTimeoutCallback() { |
| 4 | + let newHistory = encodeURI(document.querySelector('#filter').value); |
| 5 | + history.pushState({}, '', '?filter=' + newHistory); |
| 6 | +} |
| 7 | + |
| 8 | +function filterHistory() { |
| 9 | + if (typeof filterTimeout !== 'undefined') { |
| 10 | + clearTimeout(filterTimeout); |
| 11 | + } |
| 12 | + filterTimeout = setTimeout(filterTimeoutCallback, 2000); |
| 13 | +} |
| 14 | + |
| 15 | +function filterMap(element) { |
| 16 | + let component = element.split('&'); |
| 17 | + this[component[0]] = component[1]; |
| 18 | + return this; |
| 19 | +} |
| 20 | + |
1 | 21 | export function filterContainers() { |
2 | 22 |
|
3 | 23 | // Fetch DOM elements, break each word in input filter. |
@@ -31,4 +51,29 @@ export function filterContainers() { |
31 | 51 | containers[i].classList.add('show'); |
32 | 52 | } |
33 | 53 | } |
| 54 | + filterHistory(); |
| 55 | +} |
| 56 | + |
| 57 | +export function filterOnLoad() { |
| 58 | + let filterInput = document.querySelector('#filter'); |
| 59 | + if (!filterInput) { |
| 60 | + setTimeout(filterOnLoad, 1000); |
| 61 | + return; |
| 62 | + } |
| 63 | + let search = decodeURIComponent(location.search); |
| 64 | + if (!search) { |
| 65 | + return; |
| 66 | + } |
| 67 | + |
| 68 | + let searchObj = search |
| 69 | + .substring(1) |
| 70 | + .split('&') |
| 71 | + .map(filterMap, {})[0]; |
| 72 | + |
| 73 | + if (searchObj.filter) { |
| 74 | + filterInput.value = search; |
| 75 | + console.log('about to call filterContainers'); |
| 76 | + console.log(typeof filterContainers); |
| 77 | + filterContainers(); |
| 78 | + } |
34 | 79 | } |
0 commit comments