* Recursively check label children for input control
* Add another test case
* Update snapshot
* clean up test
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* check noninteractive roles on interactive elements
* refactor to match the eslint-plugin-jsx-a11y implementation
* update test case
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* Check required props for ARIA roles
* Test required ARIA props check
* Properly indent with tabs in test
* swtich to use aria-query
* fix validation test
* update docs
Co-authored-by: tanhauhau <lhtan93@gmail.com>
It's used by SvelteKit and in order to properly use it under the new TS moduleResolution NodeNext it needs to be part of a file that is defined in the exports map
* fix: destroy non-fragment element such as empty components
* fix: fragment property of Empty Component is set as true in dev mode, inconsistent with production mode
* chore: revert 'removal' of component.compile_options.dev
* feat: add test for destroying empty component
* chore: update typechecking callback
* chore: revert fragment dev checks
* chore: remove unnecessary comment
* chore: update test for empty-component-destroy
* fix: revert back the patching of console.log
* use before_test and after_test
Co-authored-by: qinmu <magenta2127@mail.com>
Co-authored-by: tanhauhau <lhtan93@gmail.com>
ComponentType eases typing "this is a variable that expects a Svelte component constructor (of a certain shape)". Removes the need for SvelteComponentTyped to be an extra type so it can be deprecated in v4 and removed in v5, and SvelteComponent(Dev) can receive the same generic typings as SvelteComponetTyped in v4.
ComponentProps eases typing "give me the props this component expects". Closes#7584
Co-authored-by: Simon Holthausen <simon.holthausen@accso.de>
Co-authored-by: Hofer Ivan <ivan.hofer@outlook.com>
Co-authored-by: Ignatius Bagus <ignatius.mbs@gmail.com>
* [fix] textContent should not be set for <template> element.
* tidy - name convetion. minor refactor extract "is template" check to a variable and replace usages.
* test template with text content
* update html in test
* fix: Local transitions from #key blocks
When adding `|local` to a transition inside a {#key} block, only the outro was triggered not the intro.
This PR fixes#5950
* add test case
Co-authored-by: tanhauhau <lhtan93@gmail.com>
* introdcued new compiler error
* making use of newly created compiler error
* updated test for animation not in keyed each
* removed unneeded conditions
Fixes#7152, see also #7288
--foo:; used to be an invalid CSS custom property value, while -foo: ; was valid. By collapsing the whitespace in these declaration values, we were breaking scenarios where an empty custom property was desired. The spec was updated to trim whitespace and treat these values identically, but Chromium browsers still treat --foo; as invalid. This was recently fixed and will be released in Chrome 99, but this would still be a good fix to maintain backwards compatibility.
Co-authored-by: milahu <milahu@gmail.com>
Co-authored-by: Simon <simon.holthausen@accso.de>
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
* Strip out whitespace inside each when it has an animation
* remove accidentally committed file
* lint
* add test to validate no error
* update changelog
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: tanhauhau <lhtan93@gmail.com>
Co-authored-by: Tan Li Hau <tanhauhau@users.noreply.github.com>
- deduplicate type name: Is now "StyleDirective"
- Don't transform value array to template literal in the AST phase but in the compiler phase. This ensures other tools know what the raw output was and that start/end positions are available
* add Style node, interfaces
* style-directives: add parser and runtime test
* style-directives: push styles in to styles array on Element
* style-directives: minimal ssr work
* style-directives: ssr add_styles
* style-directive: tests
* style-directives: work in progress
* obviously incorrect hard-coded color
* tweak
* style directive interface
* style-directives: get text from info in Style node
* style-directives: add_styles func in ElementWrapper
* style-directives: ssr rendering
* handle text-only style directive in tag.ts
* style-directives: handle spread styles in ssr
* style-directives: more parser tests
* style-directives: more inline tests
* style-directives: remove solo tests
* style-directives: cleanup
* style-directives: tweak spread ssr internal
* style-directives: push updater into update chunks; add dynamic test;
* remove .solo
* check for dynamic dependencies before adding update chunk
* add test of multiple styles; remove null styles;
* style-directives: docs; more tests of multiple styles
* style-directives: use camelcase
* style-directives: cleanup
* style-directives: fix mustache template case with template literal
* style-directives: use ternary
* style-directives: linting
* style-directives: remove "text" from interface
* style-directives: actually, remove StyleDirective interface entriely
* add more test, fix test for ssr
* fix lint and tidy up
* add test for css variables
* fix linting errors
Co-authored-by: pmurray73 <pmurray73@bloomberg.net>
Co-authored-by: Tan Li Hau <lhtan93@gmail.com>
People with "noUncheckedIndexedAccess" set to true in their tsconfig would get false errors when accessing the return type because without this specific tuple typing, TS infers the return type as being an array of functions, not a tuple of functions.
Fixes#6926
* get all contexts
* docs
* explicit return type
* allow specifying return type through generic parameter
* Update site/content/docs/03-run-time.md
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
This PR adds a new option errorMode to CompileOptions to allow continuing the compilation process when errors occured.
When set to warn, this new option will indicate to Svelte that it should log errors as warnings and continue compilation.
This allows (notably) preprocessors to compile the markup to detect vars in markup before preprocessing (in this case: script and style tags are stripped so it can produce a lot of errors).
This PR is part of a work on the svelte-preprocess side to improve the preprocessing of TypeScript files: https://github.com/sveltejs/svelte-preprocess/issues/318
- allow compiler to pass error as warnings
- enforce stops after errors during compilation (for type-checking, TS doesn't know the error method throws)
- should review Element.ts:302
- added a test case for errorMode
- added documentation
* update script end tag parsing to allow whitespace after tagname
* update style end tag parsing to allow for whitespace after tag name
* handle no closing match for script and style for eof and non-eof failures
* cleaning up script and style end tag parsing
Co-authored-by: pngwn <hello@pngwn.io>
With this fix, doing
```
const stores= [writable(0), writable(1)]
derived(stores, ([a,b,c]) => {});
```
works without type errors. The propblem with the previous type signature was that it's too strict for TypeScript's suboptimal inference of the value `stores` in that example, which is `Array<Readable<any>>`, which does not convey the info "at least one element", which the old Stores signature required.
Runtime-wise, it's no problem passing an empty array to derived.
The new signature is only appended to, not replaced, because the old signature is able to correctly infer the values of each array entry: For `derived([writable(0), writable('foo')], ([a, b]) => {});` the parameters `a` and `b` are correctly inferred as `number` and `string`. If the type would be changed to `type Stores = Readable<any> | Array<Readable<any>>` that would be no longer the case.
Fixes#6178
* failing test for i6434
* use string match to simplify regexp
* more tests
* separate test suite
* test for commas inside attributes
* stricter regex pattern
* test escaped brackets and parentheses
* change latest test selector to lists
* correct failing test for escaped parentheses
* update with proposed pattern