Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7541c12f66 |
@@ -37,6 +37,22 @@
|
|||||||
<p id="eventfilter-status" class="visually-hidden" aria-live="polite"></p>
|
<p id="eventfilter-status" class="visually-hidden" aria-live="polite"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.event-filter-target-list > .event {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
transition: opacity 180ms ease, transform 180ms ease;
|
||||||
|
transition-behavior: allow-discrete;
|
||||||
|
will-change: opacity, transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-filter-target-list > .event.is-filtered-out {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(6px);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
const filters = document.getElementById('eventfilters');
|
const filters = document.getElementById('eventfilters');
|
||||||
|
|
||||||
@@ -114,6 +130,8 @@
|
|||||||
const stateStorageKey = 'event-filter-state';
|
const stateStorageKey = 'event-filter-state';
|
||||||
const stateQueryKey = 'event_filter';
|
const stateQueryKey = 'event_filter';
|
||||||
|
|
||||||
|
const animationMs = 180;
|
||||||
|
let hideTimers = new WeakMap();
|
||||||
let currentFilter = { type: 'all', value: '' };
|
let currentFilter = { type: 'all', value: '' };
|
||||||
let suppressedChangeEvents = 0;
|
let suppressedChangeEvents = 0;
|
||||||
|
|
||||||
@@ -240,12 +258,34 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const clearHideTimer = (eventItem) => {
|
||||||
|
const timer = hideTimers.get(eventItem);
|
||||||
|
|
||||||
|
if (timer) {
|
||||||
|
window.clearTimeout(timer);
|
||||||
|
hideTimers.delete(eventItem);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const showEvent = (eventItem) => {
|
const showEvent = (eventItem) => {
|
||||||
|
clearHideTimer(eventItem);
|
||||||
eventItem.hidden = false;
|
eventItem.hidden = false;
|
||||||
|
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
eventItem.classList.remove('is-filtered-out');
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const hideEvent = (eventItem) => {
|
const hideEvent = (eventItem) => {
|
||||||
|
clearHideTimer(eventItem);
|
||||||
|
eventItem.classList.add('is-filtered-out');
|
||||||
|
|
||||||
|
const timer = window.setTimeout(() => {
|
||||||
eventItem.hidden = true;
|
eventItem.hidden = true;
|
||||||
|
hideTimers.delete(eventItem);
|
||||||
|
}, animationMs);
|
||||||
|
|
||||||
|
hideTimers.set(eventItem, timer);
|
||||||
};
|
};
|
||||||
|
|
||||||
const setActiveControl = ({ type, value }) => {
|
const setActiveControl = ({ type, value }) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user