WebReflection / linkedom

A triple-linked lists based DOM implementation.
https://webreflection.medium.com/linkedom-a-jsdom-alternative-53dd8f699311
ISC License
1.66k stars 80 forks source link

In 'HTMLElement.classList.toggle' the 'force' attribute works uncorrectly. #277

Open orangebokov opened 4 months ago

orangebokov commented 4 months ago
export const toggle = <T extends HTMLElement> (className:string, force?:boolean) => (el:T) : boolean => el.classList.toggle(className, force)

toggle(className)(el)

In this example, if the 'force' attribute is not passed to the 'toggle' function, 'linkedom' will interpret it as being passed an attribute equal to 'undefined' and identify it as a 'false' value.

The correct way is for 'linkedom' to ignore the 'force' attribute if it is 'undefined'.

Everything works fine in the browser.

Аnd also in 'linkedom' everything works correctly if I do this check myself:

export const toggle = <T extends HTMLElement> (className:string, force?:boolean) => (el:T) : boolean => force === undefined ? el.classList.toggle(className) : el.classList.toggle(className, force)