138 Commits

Author SHA1 Message Date
Elina
37e668b19b
Fix CI for 1.80 (#3691)
* fix rust 1.80 lints

* attempt to fix benchmark ci
2024-07-25 20:33:14 +05:00
Tim Kurdov
89c9dfe527
Allow Self in prop fields (#3569)
* added replacement of `Self` in fields and attrs

* added more tests

* todo -> unimplemented
2024-07-25 19:25:52 +05:00
Tomoaki Kawada
62567cc297
feat(macro): add inert to the boolean attributes list (#3678) 2024-07-25 19:19:30 +05:00
Tomoaki Kawada
af68646258
Fix CI (#3679)
* refactor(yew-macro): ignore `dead_code` for `Lint::lint` if not `cfg(yew_lints)`

`dead_code` has become more precise in recent toolchains.

* refactor(yew): stop using `static mut` hack to get static reference to an empty `Vec<VNode>`

The old code triggered `static_mut_refs` lint in the latest stable
toolchain.

* refactor(yew): ignore `clippy::to_string_trait_impl` for `impl ToString for Classes`

* perf(yew,yew-router): use `const {}` syntax for `thread_local!`

Addresses `clippy::thread_local_initializer_can_be_made_const`.
May provide performance benefits.

* refactor(yew): remove `yew::html::component::lifecycle::Stateful::as_any_mut`

Addresses `dead_code` lint.

* refactor(yew): ignore `clippy::incompatible_msrv` for `TopologicalQueue::pop_topmost` if Rust version >= 1.66

The use of `BTreeMap::pop_first` (stabilized in 1.66) is already gated by
`#[rustversion(since(1.66))]` hence we can ignore this warning.

* refactor(yew): gate `yew::html::component::lifecycle::Stateful::{rendered,props_changed}` by `cfg(feature = "csr")`

Addresses `dead_code` lint.

* test(website-test): ignore `clippy::needless_doctest_main`

* doc(examples): replace `clone` + assignment with `clone_from`

Addresses `clippy::assigning_clones` lint.
2024-07-25 03:39:38 +00:00
Michael Meyer
e9739fc9ce
Add generic type hints to boxed hooks (#3633)
When using complex type constructs in a boxed hook, the compiler could get confused and request a type hint on the call to the inner function.  This adds all generic types of the outer hook function as explicit arguments to the call of the inner function.

* Add generic types to boxed hooks
* Create failing test

---------

Co-authored-by: Michael Meyer <ichmed95@gmail.com>
2024-03-14 11:24:20 +00:00
Cecile Tonglet
b25703a035
Add yew-autoprops to website documentation (#3505) 2023-12-22 08:06:27 +01:00
Muhammad Hamza
d790e1beab
Allow setting JsValue as properties (#3458)
* Allow setting JsValue as properties

* fix tests & CI

* Rc::new

* Workaround for Rust <1.72

* more Rc::new

* ci green?
2023-10-28 22:24:34 +05:00
Tim Kurdov
bae0141f98
Remove deprecated class=(...) syntax (#3497)
* removed class=(...) syntax

* made DynamicName::expr a group instead of a block

* fixed tests, silenced all unused_must_use warnings

* fixed wasm test
2023-10-29 00:36:56 +09:00
Muhammad Hamza
0eb167ac78
Remove ToHtml trait (#3453)
* remove ToHtml trait

* re-add display impls

* make Vec::clone expilit

* fix doc

* fix conflicting impls

Into<Html> and Display can't be implemented on the same type

* update docs

* blanket impl won't work here

* bring back `Vec<VNode>: IntoPropValue<VNode>`

* macro tests

* Revert "fix conflicting impls"

This reverts commit 52f3c1fa8174489ba9cc783d708a49cc7b9c90a4.
These impls are fine now

* make examples compile

* .clone() should be before .into()

* Rc VList

* Make use of ImplicitClone and AttrValue in example

(There is more work to do but it's complicated so I will do it in
another PR)

* Impl ImplicitClone on VChild

---------

Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
2023-10-28 16:11:28 +05:00
Cecile Tonglet
7f45af3a66
Make Html (VNode) cheap to clone (#3431)
* Make VNode cheap to clone

* Faster clone for list and portal

* Fixes hopefully good

* clippy

* more fixes hopefully good

* rustfmt

* More fixes

* more fixes...

* more fixes

* Update element-fail.stderr

* Macro fixes...

* CLEANUP

* Benchmark with divan

* WIP workflow

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* Use the 2 workflows approach, will fix after merge if not working

* CLEANUP

* can i push that change here pretty please

* Trigger CI
2023-10-27 21:43:03 +05:00
Tim Kurdov
753bafefdd
Remove the dependency on boolinator (#3420)
* removed boolinator from dependencies of yew-macro

* removed boolinator from the dependencies of tools/website-test

* fixed formatting

* removed a lint fix
2023-09-29 20:33:24 +09:00
GitHub Action
4c3bcdc692 (cargo-release) version {{crate_name}}-v{{version}} 2023-09-29 11:04:56 +00:00
dependabot[bot]
ca2aa2a4a6
Bump the cargo dependencies with 36 updates (#3408)
* Bump the cargo-deps group with 36 updates

Bumps the cargo-deps group with 36 updates:

| Package | From | To |
| --- | --- | --- |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.63` | `1.0.67` |
| [quote](https://github.com/dtolnay/quote) | `1.0.29` | `1.0.33` |
| [syn](https://github.com/dtolnay/syn) | `2.0.27` | `2.0.37` |
| [rustversion](https://github.com/dtolnay/rustversion) | `1.0.12` | `1.0.14` |
| [trybuild](https://github.com/dtolnay/trybuild) | `1.0.80` | `1.0.85` |
| [gloo-worker](https://github.com/rustwasm/gloo) | `0.3.0` | `0.4.0` |
| [serde](https://github.com/serde-rs/serde) | `1.0.168` | `1.0.188` |
| [prettyplease](https://github.com/dtolnay/prettyplease) | `0.2.12` | `0.2.15` |
| [gloo](https://github.com/rustwasm/gloo) | `0.8.1` | `0.10.0` |
| [urlencoding](https://github.com/kornelski/rust_urlencoding) | `2.1.2` | `2.1.3` |
| [slab](https://github.com/tokio-rs/slab) | `0.4.8` | `0.4.9` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.44` | `1.0.48` |
| [implicit-clone](https://github.com/yewstack/implicit-clone) | `0.4.0` | `0.4.1` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.29.0` | `1.32.0` |
| [jemallocator](https://github.com/tikv/jemallocator) | `0.5.0` | `0.5.4` |
| [average](https://github.com/vks/average) | `0.13.1` | `0.14.1` |
| [tabled](https://github.com/zhiburt/tabled) | `0.12.2` | `0.14.0` |
| [indicatif](https://github.com/console-rs/indicatif) | `0.17.5` | `0.17.6` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.104` | `1.0.107` |
| [clap](https://github.com/clap-rs/clap) | `4.3.9` | `4.4.4` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.71` | `1.0.75` |
| [chrono](https://github.com/chronotope/chrono) | `0.4.26` | `0.4.31` |
| [git2](https://github.com/rust-lang/git2-rs) | `0.17.2` | `0.18.1` |
| [regex](https://github.com/rust-lang/regex) | `1.8.4` | `1.9.4` |
| [reqwest](https://github.com/seanmonstar/reqwest) | `0.11.18` | `0.11.20` |
| [semver](https://github.com/dtolnay/semver) | `1.0.17` | `1.0.18` |
| [gloo-net](https://github.com/rustwasm/gloo) | `0.3.0` | `0.4.0` |
| [base64](https://github.com/marshallpierce/rust-base64) | `0.21.2` | `0.21.4` |
| [strum_macros](https://github.com/Peternator7/strum) | `0.25.0` | `0.25.2` |
| [log](https://github.com/rust-lang/log) | `0.4.19` | `0.4.20` |
| [fake](https://github.com/cksac/fake-rs) | `2.6.1` | `2.8.0` |
| [time](https://github.com/time-rs/time) | `0.3.22` | `0.3.28` |
| [uuid](https://github.com/uuid-rs/uuid) | `1.4.0` | `1.4.1` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.4.0` | `1.5.0` |
| [axum](https://github.com/tokio-rs/axum) | `0.6.18` | `0.6.20` |
| [postcard](https://github.com/jamesmunns/postcard) | `1.0.6` | `1.0.7` |


Updates `proc-macro2` from 1.0.63 to 1.0.67
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.63...1.0.67)

Updates `quote` from 1.0.29 to 1.0.33
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.29...1.0.33)

Updates `syn` from 2.0.27 to 2.0.37
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.27...2.0.37)

Updates `rustversion` from 1.0.12 to 1.0.14
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.12...1.0.14)

Updates `trybuild` from 1.0.80 to 1.0.85
- [Release notes](https://github.com/dtolnay/trybuild/releases)
- [Commits](https://github.com/dtolnay/trybuild/compare/1.0.80...1.0.85)

Updates `gloo-worker` from 0.3.0 to 0.4.0
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Changelog](https://github.com/rustwasm/gloo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/gloo/compare/0.3.0...0.4.0)

Updates `serde` from 1.0.168 to 1.0.188
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.168...v1.0.188)

Updates `prettyplease` from 0.2.12 to 0.2.15
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.12...0.2.15)

Updates `gloo` from 0.8.1 to 0.10.0
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Changelog](https://github.com/rustwasm/gloo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/gloo/commits)

Updates `urlencoding` from 2.1.2 to 2.1.3
- [Commits](https://github.com/kornelski/rust_urlencoding/commits)

Updates `slab` from 0.4.8 to 0.4.9
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.8...v0.4.9)

Updates `thiserror` from 1.0.44 to 1.0.48
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.44...1.0.48)

Updates `implicit-clone` from 0.4.0 to 0.4.1
- [Commits](https://github.com/yewstack/implicit-clone/compare/v0.4.0...v0.4.1)

Updates `tokio` from 1.29.0 to 1.32.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.29.0...tokio-1.32.0)

Updates `jemallocator` from 0.5.0 to 0.5.4
- [Release notes](https://github.com/tikv/jemallocator/releases)
- [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tikv/jemallocator/compare/0.5.0...0.5.4)

Updates `average` from 0.13.1 to 0.14.1
- [Commits](https://github.com/vks/average/commits)

Updates `tabled` from 0.12.2 to 0.14.0
- [Changelog](https://github.com/zhiburt/tabled/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zhiburt/tabled/commits/v0.14.0)

Updates `indicatif` from 0.17.5 to 0.17.6
- [Release notes](https://github.com/console-rs/indicatif/releases)
- [Commits](https://github.com/console-rs/indicatif/compare/0.17.5...0.17.6)

Updates `serde_json` from 1.0.104 to 1.0.107
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.104...v1.0.107)

Updates `clap` from 4.3.9 to 4.4.4
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.3.9...v4.4.4)

Updates `anyhow` from 1.0.71 to 1.0.75
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.71...1.0.75)

Updates `chrono` from 0.4.26 to 0.4.31
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.26...v0.4.31)

Updates `git2` from 0.17.2 to 0.18.1
- [Changelog](https://github.com/rust-lang/git2-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/git2-rs/compare/0.17.2...git2-0.18.1)

Updates `regex` from 1.8.4 to 1.9.4
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.8.4...1.9.4)

Updates `reqwest` from 0.11.18 to 0.11.20
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.18...v0.11.20)

Updates `semver` from 1.0.17 to 1.0.18
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.17...1.0.18)

Updates `gloo-net` from 0.3.0 to 0.4.0
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Changelog](https://github.com/rustwasm/gloo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/gloo/compare/0.3.0...0.4.0)

Updates `base64` from 0.21.2 to 0.21.4
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.2...v0.21.4)

Updates `strum_macros` from 0.25.0 to 0.25.2
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

Updates `log` from 0.4.19 to 0.4.20
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.19...0.4.20)

Updates `fake` from 2.6.1 to 2.8.0
- [Commits](https://github.com/cksac/fake-rs/commits)

Updates `time` from 0.3.22 to 0.3.28
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.22...v0.3.28)

Updates `uuid` from 1.4.0 to 1.4.1
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.4.0...1.4.1)

Updates `bytes` from 1.4.0 to 1.5.0
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.4.0...v1.5.0)

Updates `axum` from 0.6.18 to 0.6.20
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.6.18...axum-v0.6.20)

Updates `postcard` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/jamesmunns/postcard/releases)
- [Changelog](https://github.com/jamesmunns/postcard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jamesmunns/postcard/compare/v1.0.6...v1.0.7)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: quote
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: rustversion
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: trybuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: gloo-worker
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: prettyplease
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: gloo
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: urlencoding
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: slab
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: implicit-clone
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: jemallocator
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: average
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: tabled
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: indicatif
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: git2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: gloo-net
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: fake
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: axum
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: postcard
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
...

Signed-off-by: dependabot[bot] <support@github.com>

* bless stderr files after syn update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2023-09-23 14:57:06 +02:00
Pouriya
2cbe6cee8a
feat: support arrays for Classes/classes!() (#3393)
* feat: support arrays for Classes/classes!()

* style: update
2023-09-23 21:38:59 +09:00
Tim Kurdov
ce7702e9e7
Remove special handing of struct fields of type Option in derive(Properties) (#3398)
* removed PropAttr::Option

* fixed formatting

* removed an irrelevant test

* added a test for converting value into Some(value) in the html! macro

* added more tests for derive(Properties)

* added more tests (again)
2023-09-23 21:34:30 +09:00
Sean Bruton
73f4bb91cf
Fix rust-analyzer non_camel_case_types warning (#3388) 2023-09-06 00:35:31 +05:00
Kaede Hoshikawa
7ef8e0da18
Mark VNode as #[must_use] (#3387)
This fixes for Rust Release 1.72.
Rust 1.72 makes `From::from` a must use, which effectively makes `html!` a must use.

I have tried various ways to suppress `unused_must_use` for `html!`.
However, it is not effective. So I added `let _ = ` to tests.

I have also made `VNode` a `#[must_use]` so the diagnostic will be easier to understand.

---

* Fix clippy.

* Make html must use.
2023-08-28 20:01:07 +05:00
Tim Kurdov
3c4ac56980
Add IntoPropValue implementation to convert from Cows to AttrValue (#3346)
* added IntoPropValue impls to & from Cows

* fixed formatting & test's expected output

* fixed formatting

* fixed macro test's expected output

* removed conversion to String & Rc

* fixed macro tests

* fixed macro tests
2023-08-21 21:31:29 +05:00
Tim Kurdov
afde963230
Fix incorrect text escaping during SSR (#3381)
Fixes: #3129

---

* (#3129) fixed incorrect text escaping during SSR

* fixed formatting issues

* moved SpecialVTagKind to feat_ssr, improved its description

* added a test case for multiple text nodes in a style tag

* fixed formatting

* SpecialVTagKind -> VTagKind
2023-08-21 16:29:46 +00:00
Muhammad Hamza
42e1890f03
Update signature of use_prepared_state/use_transitive_state (#3376)
* Update signature of use_prepared_state

* Update signature of use_transitive_state

* Migration guide + example

* bless trybuild tests

* please fmt

* there's one usage here as well

* use_prepared_state_with_suspension needs updates

* updated tests
2023-08-19 21:58:36 +09:00
Muhammad Hamza
3e9e253e66
Keep checked attribute for elements without special handling (#3373)
* Return checked attr for non-input elements

* Add tests

* fine
2023-08-12 02:16:06 +09:00
Xu Shaohua
a9ab085e74
Fix input dynamic text rendered as textarea (#3239) (#3301) 2023-08-05 18:58:19 +05:00
dependabot[bot]
4023c88c39
Bump indexmap from 1.9.3 to 2.0.0 (#3322)
* Bump indexmap from 1.9.3 to 2.0.0

Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.3 to 2.0.0.
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.9.3...2.0.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update dependency minimum version

* clippy

* Bump MSRV to 1.64

* more clippy

* Update action that fails (probably outdated)

* Bump implicit-clone to 0.3.8

* Forgot to bump MSRV in some places

* Forgot to update setup-chromedriver in one place

* Bump implicit-clone to 0.4.0

* Update stderr files

* clippy

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
2023-07-29 22:00:53 +09:00
Kaede Hoshikawa
8b9e164d7e
Update Dependencies to Fix CI (#3326)
* Update dependencies.

* Update dependencies.

* Fix gloo breaking change.
2023-07-01 01:33:18 +00:00
Kaede Hoshikawa
71b0f206a1
Allow any type to be used as Children (take 2) (#3289)
* Partially copy useful implementation.

* Adjust conversion.

* Temporary fix iterator.

* Add ToString implementation.

* Add Renderable trait.

* Make Macro tests pass.

* Add tests for render_prop as Children.

* Update benchmark and Children used in yew packages.

* Selective suppress lints.

* Rollback unintentional rollback.

* Fix rustfmt.

* Remove unneeded implementation.

* Update Comment.

* Rollback more changes.

* Rollback more changes.

* Fix website.

* Fix documentation tests.

* Add prelude.

* Fix test.

* Blanket Implementation for &'_ T for Renderable types.

* Implement Renderable for &str.

* Update signature.

* Update children to Html in examples.

* Remove unnecessary dereferencing.

* Rollback nested_list example.

* Fix comment.

* Convert to Pattern Matching.

* Add tracing issue.

* Rename Renderable to ToHtml.

* Move ToHtml to yew::html.

* Convert more to match pattern.
2023-06-11 15:33:39 +05:00
Julius Lungys
24d79e840a
Add webkitdirectory to the boolean attributes list (#3214)
* Implement bool IntoPropValue String & AttrValue

* Revert "Implement bool IntoPropValue String & AttrValue"

This reverts commit 8468e7a3d9d5d55fc6e1360e49bb2be9f3772376.

* Add webkitdirectory to the boolean attributes list
2023-04-05 21:40:12 +03:00
Muhammad Hamza
cc9dd0271e
Update dependencies (#3171)
* Update to syn 2

* bless macro outputs

* update prettyplease

* fix review + update lockfile
2023-03-28 19:41:55 +09:00
Vlad Beskrovny
c7b7e45e4c
Implement component name completion in html! for IntelliJ Rust plugin (#2972) 2023-02-02 22:36:51 +09:00
Cecile Tonglet
bff497e002
Pass string types to Html props (#2872)
* Pass string types to Html props

* Not sure why passing None explicitly here...

* Update test stderr
2023-02-02 20:00:51 +09:00
Kaede Hoshikawa
456a05ba40
Fix clippy for 1.67 (#3100)
* Fix clippy for 1.67

* Fix trybuild.
2023-02-01 21:57:05 +05:00
Cecile Tonglet
772763c2e2
Make Classes cheap to clone (#3021)
* Use AttrValue instead of Cow in Classes

* Wrap indexset into Rc

* Impl ImplicitClone for Classes

* clippy

* Trigger CI

* Update macro stderr

* Copy optimization made for String to AttrValue

* Update macro stderr again
2022-12-10 18:02:36 +05:00
WorldSEnder
9e980a36b4
Fix clippy::let_unit_value lint in propless components (#2970) 2022-12-09 00:10:22 +05:00
IchHabeKeineNamen
77b0d40455
fix: dead links (#3013) 2022-12-06 06:31:35 +00:00
GitHub Action
1bbe75ec9b (cargo-release) version {{crate_name}}-v{{version}} 2022-11-25 18:28:11 +05:00
Christopher Schramm
b649e9dacd
Avoid clippy::let-underscore-drop (#2952)
The following main.rs replicates the clippy warning:

```
use yew::prelude::*;

struct Props {
    droppable: Vec<()>,
}

fn component(props: &Props) -> Html {
    let props = Props { droppable: Vec::new() };
    html! { <Component ..props /> }
}

fn main() {}
```

If I'm not mistaken this happens when using the `..` on any `Properties` with a field that implements `Drop`.
2022-11-08 21:21:06 +05:00
Muhammad Hamza
7ada3447bb
Fix issues with tuples in closing tag (#2886)
* Add test case for #2225

* Fix issues with tuples in closing tag

* Improve diagnostics

* fmt

* better diagnostics
2022-10-08 20:59:08 +05:00
WorldSEnder
bb71b5db61
Fix checked property being reset (#2907)
if the value is uncontrolled, do not touch it. Only if it is explicitly given
2022-10-08 20:50:19 +05:00
Muhammad Hamza
426a1fd81d
Evaluate props in the order they're defined (#2887)
* don't change order of props

* rename `SortedPropList` to `PropList`

* docs + test

* remove dead code

* fmt
2022-10-08 10:40:55 +02:00
Muhammad Hamza
9e0d7966bc
Make Yew lints opt-in (#2882)
* Add compiler flag for Yew lints

* Use --cfg yew_lints in CI

* Remove lints feature

* bless the fail.stderr

* Fix CI
2022-09-25 21:54:24 +09:00
Muhammad Hamza
7e24fb3c58
Clippy fixes (#2881)
* Clippy in root

* Clippy in examples

* didn't mean to commit this file
2022-09-25 21:25:23 +09:00
Cecile Tonglet
81f7ea482b
implement html from Option<VNode> (#2792)
Co-authored-by: Martin Molzer <WorldSEnder@users.noreply.github.com>
2022-09-14 18:04:12 +05:00
WorldSEnder
8eb9b5a4dc
Error on refs on components (#2863)
* error on `ref` with components

r#ref is still allowed, so we reserve the right to reintroduce
the syntax

* fix node_refs example
2022-09-13 16:50:33 +02:00
Cecile Tonglet
c7b4029e1b
Add old props to fn changed() (#2851)
* Adding old_props to fn changed()

* Change old_props type to &Self::Properties

* Update examples that use fn changed() and want old_props

* Fix tests

* Fix invalid test flags

* cargo fmt

* Oops wrong regex

* Revert change for older version

* Remove unnecessary clone

* Add migration guide

* Oh wow the test was not running xD
2022-08-31 17:10:45 +05:00
Muhammad Hamza
4c35f95350
Bind to properties instead of attributes by default (#2819)
* Set to properties, not attributes

* fix tests

* Add tests

* enable disabled test, fmt

* Introduce @key syntax to forcefully set as attribute

* Everything compiles

* More tests

* id as property

* This was not meant to be committed

* Make test pass, fmt + clippy

* fucking rustfmt

* is this enough formatting

* that was not supposed to be commited

* apply review

* fmt

* fix CI

* will you be happy now, clippy?
2022-08-14 21:41:04 +02:00
Muhammad Hamza
a4e70914ac
Convert nightly from a feature flag to a compiler flag (#2827)
* `nightly_yew` compiler flag instead of `nightly` feature

* update ci

* update ci: 2

* fmt & nightly_yew for examples

* update size-cmp too
2022-08-15 04:03:45 +09:00
Kaede Hoshikawa
989d804947
Fix Clippy for 1.63 (#2825) 2022-08-12 22:16:05 +09:00
Muhammad Hamza
f640fc7c18
Allow keywords after dash in element and attribute names (#2820) 2022-08-08 23:36:10 +02:00
Muhammad Hamza
544990a6b4
Remove component NodeRef (#2783)
* don't attach noderef to components, add test case

* remove node_ref from VNode and VComp

* fmt & macro tests

* remove uneeded test & todo

this test is done at compile time. there's no node_ref field so it can't be set

* feature soundness & clippy

* add marker field, in an attempt to reduce bundle size

* Update migration guide
2022-07-21 01:32:26 +09:00
Kaede Hoshikawa
9d94f24a11
Prepared States dependency should be Reference Counted (#2769)
* Makes Prepared States to be Rc'ed.

* Update example.

* Make prepared states work on none runtime as well.

* Remove more feature flags.

* Users always have to manually construct dependency into Rc.

* Import Rc.

* Revert "Users always have to manually construct dependency into Rc."

This reverts commit 9eee1da3e9a46e69a7b07e6064eb163e06261bfb.

* Revert "Import Rc."

This reverts commit d6bb90dc155d2bf87fd18eec4b78b8e07a9cc7a7.
2022-07-19 22:59:39 +09:00
wdcocq
5570710cdf
Fixed NodeRef not being implicitly cloned with components (#2775)
* Use IntoPropValue for node refs in html component

* Add NodeRef ImplicitClone test for html element

* Change node_refs example to use ImplicitClone

* Reuse key and ref attribute wrapping
2022-07-07 21:00:27 +05:00