diff --git a/site/content/docs/03-template-syntax.md b/site/content/docs/03-template-syntax.md index c373bee7f4..95d76db5b7 100644 --- a/site/content/docs/03-template-syntax.md +++ b/site/content/docs/03-template-syntax.md @@ -1756,7 +1756,7 @@ All except `scrollX` and `scrollY` are readonly. Similarly to ``, this element allows you to add listeners to events on `document`, such as `visibilitychange`, which don't fire on `window`. It also lets you use [actions](/docs#template-syntax-element-directives-use-action) on `document`. -`` also has to appear at the top level of your component. +As with ``, this element may only appear the top level of your component and must never be inside a block or element. ```sv `, this element allows you to add listeners to even Similarly to ``, this element allows you to add listeners to events on `document.body`, such as `mouseenter` and `mouseleave`, which don't fire on `window`. It also lets you use [actions](/docs#template-syntax-element-directives-use-action) on the `` element. -As with ``, this element may only appear the top level of your component and must never be inside a block or element. +As with `` and ``, this element may only appear the top level of your component and must never be inside a block or element. ```sv `, this element may only appear the top level of your co This element makes it possible to insert elements into `document.head`. During server-side rendering, `head` content is exposed separately to the main `html` content. -As with `` and ``, this element may only appear at the top level of your component and must never be inside a block or element. +As with ``, `` and ``, this element may only appear at the top level of your component and must never be inside a block or element. ```sv diff --git a/site/content/tutorial/16-special-elements/06-svelte-body/text.md b/site/content/tutorial/16-special-elements/06-svelte-body/text.md deleted file mode 100644 index 95da3ce608..0000000000 --- a/site/content/tutorial/16-special-elements/06-svelte-body/text.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: ---- - -Similar to ``, the `` element allows you to listen for events that fire on `document.body`. This is useful with the `mouseenter` and `mouseleave` events, which don't fire on `window`. - -Add the `mouseenter` and `mouseleave` handlers to the `` tag: - -```html - -``` \ No newline at end of file diff --git a/site/content/tutorial/16-special-elements/06-svelte-document/app-a/App.svelte b/site/content/tutorial/16-special-elements/06-svelte-document/app-a/App.svelte new file mode 100644 index 0000000000..cea052ec88 --- /dev/null +++ b/site/content/tutorial/16-special-elements/06-svelte-document/app-a/App.svelte @@ -0,0 +1,10 @@ + + + + +

Select this text to fire events

+

Selection: {selection}

diff --git a/site/content/tutorial/16-special-elements/06-svelte-document/app-b/App.svelte b/site/content/tutorial/16-special-elements/06-svelte-document/app-b/App.svelte new file mode 100644 index 0000000000..5dd44aa389 --- /dev/null +++ b/site/content/tutorial/16-special-elements/06-svelte-document/app-b/App.svelte @@ -0,0 +1,10 @@ + + + + +

Select this text to fire events

+

Selection: {selection}

diff --git a/site/content/tutorial/16-special-elements/06-svelte-document/text.md b/site/content/tutorial/16-special-elements/06-svelte-document/text.md new file mode 100644 index 0000000000..b40c83a6f2 --- /dev/null +++ b/site/content/tutorial/16-special-elements/06-svelte-document/text.md @@ -0,0 +1,13 @@ +--- +title: +--- + +Similar to ``, the `` element allows you to listen for events that fire on `document`. This is useful with events like `selectionchange`, which doesn't fire on `window`. + +Add the `selectionchange` handler to the `` tag: + +```html + +``` + +> Avoid `mouseenter` and `mouseleave` handlers on this element, these events are not fired on `document` in all browsers. Use `` for this instead. diff --git a/site/content/tutorial/16-special-elements/06-svelte-body/app-a/App.svelte b/site/content/tutorial/16-special-elements/07-svelte-body/app-a/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/06-svelte-body/app-a/App.svelte rename to site/content/tutorial/16-special-elements/07-svelte-body/app-a/App.svelte diff --git a/site/content/tutorial/16-special-elements/06-svelte-body/app-b/App.svelte b/site/content/tutorial/16-special-elements/07-svelte-body/app-b/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/06-svelte-body/app-b/App.svelte rename to site/content/tutorial/16-special-elements/07-svelte-body/app-b/App.svelte diff --git a/site/content/tutorial/16-special-elements/07-svelte-body/text.md b/site/content/tutorial/16-special-elements/07-svelte-body/text.md new file mode 100644 index 0000000000..4755281d61 --- /dev/null +++ b/site/content/tutorial/16-special-elements/07-svelte-body/text.md @@ -0,0 +1,14 @@ +--- +title: +--- + +Similar to `` and ``, the `` element allows you to listen for events that fire on `document.body`. This is useful with the `mouseenter` and `mouseleave` events, which don't fire on `window`. + +Add the `mouseenter` and `mouseleave` handlers to the `` tag: + +```html + +``` \ No newline at end of file diff --git a/site/content/tutorial/16-special-elements/07-svelte-head/app-a/App.svelte b/site/content/tutorial/16-special-elements/08-svelte-head/app-a/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/07-svelte-head/app-a/App.svelte rename to site/content/tutorial/16-special-elements/08-svelte-head/app-a/App.svelte diff --git a/site/content/tutorial/16-special-elements/07-svelte-head/app-b/App.svelte b/site/content/tutorial/16-special-elements/08-svelte-head/app-b/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/07-svelte-head/app-b/App.svelte rename to site/content/tutorial/16-special-elements/08-svelte-head/app-b/App.svelte diff --git a/site/content/tutorial/16-special-elements/07-svelte-head/text.md b/site/content/tutorial/16-special-elements/08-svelte-head/text.md similarity index 100% rename from site/content/tutorial/16-special-elements/07-svelte-head/text.md rename to site/content/tutorial/16-special-elements/08-svelte-head/text.md diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/app-a/App.svelte b/site/content/tutorial/16-special-elements/09-svelte-options/app-a/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/app-a/App.svelte rename to site/content/tutorial/16-special-elements/09-svelte-options/app-a/App.svelte diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/app-a/Todo.svelte b/site/content/tutorial/16-special-elements/09-svelte-options/app-a/Todo.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/app-a/Todo.svelte rename to site/content/tutorial/16-special-elements/09-svelte-options/app-a/Todo.svelte diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/app-a/flash.js b/site/content/tutorial/16-special-elements/09-svelte-options/app-a/flash.js similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/app-a/flash.js rename to site/content/tutorial/16-special-elements/09-svelte-options/app-a/flash.js diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/app-b/App.svelte b/site/content/tutorial/16-special-elements/09-svelte-options/app-b/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/app-b/App.svelte rename to site/content/tutorial/16-special-elements/09-svelte-options/app-b/App.svelte diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/app-b/Todo.svelte b/site/content/tutorial/16-special-elements/09-svelte-options/app-b/Todo.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/app-b/Todo.svelte rename to site/content/tutorial/16-special-elements/09-svelte-options/app-b/Todo.svelte diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/app-b/flash.js b/site/content/tutorial/16-special-elements/09-svelte-options/app-b/flash.js similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/app-b/flash.js rename to site/content/tutorial/16-special-elements/09-svelte-options/app-b/flash.js diff --git a/site/content/tutorial/16-special-elements/08-svelte-options/text.md b/site/content/tutorial/16-special-elements/09-svelte-options/text.md similarity index 100% rename from site/content/tutorial/16-special-elements/08-svelte-options/text.md rename to site/content/tutorial/16-special-elements/09-svelte-options/text.md diff --git a/site/content/tutorial/16-special-elements/09-svelte-fragment/app-a/App.svelte b/site/content/tutorial/16-special-elements/10-svelte-fragment/app-a/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/09-svelte-fragment/app-a/App.svelte rename to site/content/tutorial/16-special-elements/10-svelte-fragment/app-a/App.svelte diff --git a/site/content/tutorial/16-special-elements/09-svelte-fragment/app-a/Box.svelte b/site/content/tutorial/16-special-elements/10-svelte-fragment/app-a/Box.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/09-svelte-fragment/app-a/Box.svelte rename to site/content/tutorial/16-special-elements/10-svelte-fragment/app-a/Box.svelte diff --git a/site/content/tutorial/16-special-elements/09-svelte-fragment/app-b/App.svelte b/site/content/tutorial/16-special-elements/10-svelte-fragment/app-b/App.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/09-svelte-fragment/app-b/App.svelte rename to site/content/tutorial/16-special-elements/10-svelte-fragment/app-b/App.svelte diff --git a/site/content/tutorial/16-special-elements/09-svelte-fragment/app-b/Box.svelte b/site/content/tutorial/16-special-elements/10-svelte-fragment/app-b/Box.svelte similarity index 100% rename from site/content/tutorial/16-special-elements/09-svelte-fragment/app-b/Box.svelte rename to site/content/tutorial/16-special-elements/10-svelte-fragment/app-b/Box.svelte diff --git a/site/content/tutorial/16-special-elements/09-svelte-fragment/text.md b/site/content/tutorial/16-special-elements/10-svelte-fragment/text.md similarity index 100% rename from site/content/tutorial/16-special-elements/09-svelte-fragment/text.md rename to site/content/tutorial/16-special-elements/10-svelte-fragment/text.md diff --git a/src/compiler/compile/nodes/Document.ts b/src/compiler/compile/nodes/Document.ts index daa687da24..3b24f4c674 100644 --- a/src/compiler/compile/nodes/Document.ts +++ b/src/compiler/compile/nodes/Document.ts @@ -24,6 +24,10 @@ export default class Document extends Node { } }); + this.validate(); + } + + private validate() { const handlers_map = new Set(); this.handlers.forEach(handler => (