Skip to content
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

Add support for :target pseudo-selector #1221

Closed
Tracked by #8
Schleuse opened this issue Jan 18, 2024 · 0 comments · Fixed by #1235
Closed
Tracked by #8

Add support for :target pseudo-selector #1221

Schleuse opened this issue Jan 18, 2024 · 0 comments · Fixed by #1235
Labels
enhancement New feature or request

Comments

@Schleuse
Copy link
Contributor

Hey 👋,

I'v noticed in a component I'd like to test that happy-dom always returns document when calling document.querySelector(':target').
After some digging I've found that happy-dom doesn't seem to support the :target pseudo-selector yet.

I've looked at the implementation of querySelector but I'm not feeling very comfortable to fix this myself as querySelector is such a performance critical method.

I've written a simple unit tests however to illustrate the expected behaviour of the :target selector

it('Returns matched element matching :target', () => {
	window.location.hash = 'id'

	const div = document.createElement('div');
	const div2 = document.createElement('div');

	div2.id = 'id';
	div.appendChild(div2);

	expect(div.querySelector(':target')).toBeNull();
	expect(document.querySelector(':target')).toBeNull();
	document.appendChild(div);

	expect(div.querySelector(':target')).toBe(div2);
	expect(document.querySelector(':target')).toBe(div2);

	window.location.hash = 'something-else';
	expect(div.querySelector(':target')).toBeNull();
	expect(document.querySelector(':target')).toBeNull();
})
@Schleuse Schleuse added the enhancement New feature or request label Jan 18, 2024
Schleuse pushed a commit to Schleuse/happy-dom that referenced this issue Jan 24, 2024
# Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen, die
# mit '#' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese entfernen.
# Eine leere Beschreibung bricht den Commit ab.
#
# Datum:            Wed Jan 24 11:49:59 2024 +0100
#
# Auf Branch task/1221-add-support-for-target-and-target-within
# Ihr Branch ist 1 Commit vor 'origin/task/1221-add-support-for-target-and-target-within'.
#   (benutzen Sie "git push", um lokale Commits zu publizieren)
#
# Zum Commit vorgemerkte Änderungen:
#	geändert:       src/query-selector/SelectorItem.ts
#	geändert:       test/query-selector/QuerySelector.test.ts
#
# Änderungen, die nicht zum Commit vorgemerkt sind:
#	geändert:       test/query-selector/QuerySelector.test.ts
#
Schleuse pushed a commit to Schleuse/happy-dom that referenced this issue Jan 24, 2024
# Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen, die
# mit '#' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese entfernen.
# Eine leere Beschreibung bricht den Commit ab.
#
# Datum:            Wed Jan 24 14:20:51 2024 +0100
#
# Auf Branch task/1221-add-support-for-target-and-target-within
# Ihr Branch ist 2 Commits vor 'origin/task/1221-add-support-for-target-and-target-within'.
#   (benutzen Sie "git push", um lokale Commits zu publizieren)
#
# Zum Commit vorgemerkte Änderungen:
#	geändert:       packages/happy-dom/src/query-selector/SelectorItem.ts
#	geändert:       packages/happy-dom/test/query-selector/QuerySelector.test.ts
#
# Änderungen, die nicht zum Commit vorgemerkt sind:
#	geändert:       packages/happy-dom/test/query-selector/QuerySelector.test.ts
#
Schleuse pushed a commit to Schleuse/happy-dom that referenced this issue Jan 24, 2024
Schleuse pushed a commit to Schleuse/happy-dom that referenced this issue Jan 24, 2024
Schleuse pushed a commit to Schleuse/happy-dom that referenced this issue Jan 24, 2024
capricorn86 added a commit that referenced this issue Feb 26, 2024
…et-and-target-within

#1221@minor:  Add support for `:target` pseudo selector.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant