-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bugfix: Add ability to reset mini #25
base: main
Are you sure you want to change the base?
Changes from all commits
41c5756
0ead842
e930d41
faaaa70
b264c14
7b00afb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -149,16 +149,24 @@ export class Events { | |||||||||||||||||||||||||||||||
const listener = this.listener[attr] | ||||||||||||||||||||||||||||||||
if (!listener) return | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
if (Array.isArray(listener)) { | ||||||||||||||||||||||||||||||||
listener.forEach(({ el, eventName, event }) => { | ||||||||||||||||||||||||||||||||
el.addEventListener(eventName, event) | ||||||||||||||||||||||||||||||||
[].concat(listener).forEach(({ el, eventName, event }) => { | ||||||||||||||||||||||||||||||||
el.addEventListener(eventName, (e) => { | ||||||||||||||||||||||||||||||||
this.debounce(() => { | ||||||||||||||||||||||||||||||||
event(e) | ||||||||||||||||||||||||||||||||
}, 50) | ||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||
const { el, eventName, event } = listener | ||||||||||||||||||||||||||||||||
el.addEventListener(eventName, event) | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||
Comment on lines
+152
to
+158
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve the implementation of - [].concat(listener).forEach(({ el, eventName, event }) => {
- el.addEventListener(eventName, (e) => {
- this.debounce(() => {
- event(e)
- }, 50)
- })
- })
+ listener.forEach(({ el, eventName, event }) => {
+ el.addEventListener(eventName, this.debounce(event, 50))
+ }) This change ensures that the event handler itself is debounced, rather than creating a new debounced function every time an event is triggered, which is more efficient and cleaner. Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
debounce(callback, wait) { | ||||||||||||||||||||||||||||||||
if (this.timeout) return | ||||||||||||||||||||||||||||||||
clearTimeout(this.timeout) | ||||||||||||||||||||||||||||||||
this.timeout = setTimeout(() => { | ||||||||||||||||||||||||||||||||
callback() | ||||||||||||||||||||||||||||||||
this.timeout = null | ||||||||||||||||||||||||||||||||
}, wait) | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
Comment on lines
+161
to
+168
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Refactor the - if (this.timeout) return
- clearTimeout(this.timeout)
+ clearTimeout(this.timeout); This change ensures that any previous debounce timeouts are cleared before setting a new one, preventing multiple debounce operations from overlapping incorrectly. Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
setChangeEvent() { | ||||||||||||||||||||||||||||||||
const el = this.entity.element | ||||||||||||||||||||||||||||||||
const key = ':change' | ||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -42,6 +42,12 @@ export class Mini { | |||||||||||||||||||||||||||||
console.log(`MiniJS took ${executionTime}ms to run.`) | ||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
async reset() { | ||||||||||||||||||||||||||||||
this.observer.disconnect() | ||||||||||||||||||||||||||||||
this.state.dispose() | ||||||||||||||||||||||||||||||
await this.init() | ||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||
Comment on lines
+45
to
+49
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ensure error handling for the - await this.init()
+ try {
+ await this.init()
+ } catch (error) {
+ console.error('Error during re-initialization:', error);
+ } Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
async _domReady() { | ||||||||||||||||||||||||||||||
return new Promise((resolve) => { | ||||||||||||||||||||||||||||||
if (document.readyState == 'loading') { | ||||||||||||||||||||||||||||||
|
@@ -86,6 +92,13 @@ const MiniJS = (() => { | |||||||||||||||||||||||||||||
console.error('Error initializing MiniJS:', error) | ||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
// Reset MiniJS when the user navigates back | ||||||||||||||||||||||||||||||
window.addEventListener('popstate', () => { | ||||||||||||||||||||||||||||||
mini.reset().catch((error) => { | ||||||||||||||||||||||||||||||
console.error('Error resetting MiniJS after navigation:', error); | ||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
return { | ||||||||||||||||||||||||||||||
get debug() { | ||||||||||||||||||||||||||||||
return Mini.debug | ||||||||||||||||||||||||||||||
|
@@ -108,6 +121,9 @@ const MiniJS = (() => { | |||||||||||||||||||||||||||||
extendEvents: (events) => { | ||||||||||||||||||||||||||||||
mini.extensions.events.extend(events) | ||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||
reset: async () => { | ||||||||||||||||||||||||||||||
await mini.reset() | ||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||
})() | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure consistent ID attributes for list items.
The
id="listbox-option-0"
is repeated across multiple list items. This can lead to invalid HTML asid
attributes must be unique within a page. Consider using a dynamic value or removing these IDs if they are not necessary.