leptos-use/CHANGELOG.md

551 lines
16 KiB
Markdown
Raw Normal View History

# Changelog
2023-06-13 00:31:38 +01:00
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2023-06-11 17:11:16 +01:00
## [Unreleased]
### New Functions 🚀
- `use_user_media`
2024-07-01 02:29:27 +01:00
### New Features 🚀
2024-07-08 17:16:54 +01:00
- Codecs:
- All codecs now live in their own crate `codee`
- There are now binary codecs in addition to string codecs.
- `FromToBytesCodec`
- `WebpackSerdeCodec`
- `BincodeSerdeCodec`
- `ProstCodec` (see also the section "Breaking Changes 🛠" below)
- Every binary codec can be used as a string codec with the `Base64` wrapper which encodes the binary data as a
base64
string.
- This required feature `base64`
- It can be wrapped for example like this: `Base64<WebpackSerdeCodec>`.
- There is now an `OptionCodec` wrapper that allows to wrap any string codec that encodes `T` to encode `Option<T>`.
- Use it like this: `OptionCodec<FromToStringCodec<f64>>`.
- `ElementMaybeSignal` is now implemented for `websys::HtmlElement` (thanks to @blorbb).
- `UseStorageOptions` now has `delay_during_hydration` which has to be used when you conditionally show parts of
the DOM controlled by a value from storage. This leads to hydration errors which can be fixed by setting this new
option to `true`.
- `cookie::SameSite` is now re-exported
2024-07-16 20:14:05 +01:00
- Changing the signal returned by `use_cookie` now tries and changes the headers during SSR.
2024-07-01 02:29:27 +01:00
- New book chapter about codecs
2024-07-08 17:16:54 +01:00
- The macro `use_derive_signal!` is now exported (thanks to @mscofield0).
### Breaking Changes 🛠
2024-07-01 02:29:27 +01:00
- `UseStorageOptions` and `UseEventSourceOptions` no longer accept a `codec` value because this is already provided as a
generic parameter to the respective function calls.
- Codecs have been refactored. There are now two traits that codecs implement: `Encoder` and `Decoder`. The
trait `StringCodec` is gone. The methods are now associated methods and their params now always take references.
- `JsonCodec` has been renamed to `JsonSerdeCodec`.
- The feature to enable this codec is now called `json_serde` instead of just `serde`.
- `ProstCodec` now encodes as binary data. If you want to keep using it with string data you can wrap it like
2024-07-26 10:36:39 +01:00
this: `Base64<ProstCodec>`.
2024-07-08 17:16:54 +01:00
- All of these structs, traits and features now live in their own crate called `codee`
2024-07-26 10:36:39 +01:00
- A bunch of new codecs are available. Have a look at the docs for crate `codee`.
2024-07-01 02:29:27 +01:00
- `use_websocket`:
- `UseWebsocketOptions` has been renamed to `UseWebSocketOptions` (uppercase S) to be consistent with the return
type.
- `UseWebSocketOptions::reconnect_limit` and `UseEventSourceOptions::reconnect_limit` is now `ReconnectLimit`
instead
of `u64`. Use `ReconnectLimit::Infinite` for infinite retries or `ReconnectLimit::Limited(...)` for limited
retries.
- `use_websocket` now uses codecs to send typed messages over the network.
- When calling you have give type parameters for the message type and the
codec: `use_websocket::<String, WebpackSerdeCodec>`
- You can use binary or string codecs.
- The `UseWebSocketReturn::send` closure now takes a `&T` which is encoded using the codec.
- The `UseWebSocketReturn::message` signal now returns an `Option<T>` which is decoded using the codec.
- `UseWebSocketReturn::send_bytes` and `UseWebSocketReturn::message_bytes` are gone.
- `UseWebSocketOptions::on_message` and `UseWebSocketOptions::on_message_bytes` have been renamed
to `on_message_raw` and `on_message_raw_bytes`.
- The new `UseWebSocketOptions::on_message` takes a `&T`.
- `UseWebSocketOptions::on_error` now takes a `UseWebSocketError` instead of a `web_sys::Event`.
2024-07-27 18:07:00 +01:00
- `use_storage` now always saves the default value to storage if the key doesn't exist yet.
- Renamed `BreakpointsSematic` to `BreakpointsSemantic` and `breakpoints_sematic` to `breakpoints_semantic`
(note the `n`) (thanks to @mondeja).
2024-07-01 02:29:27 +01:00
### Fixes 🍕
- Fixed auto-reconnect in `use_websocket`
- Fixed typo in compiler error messages in `use_cookie` (thanks to @SleeplessOne1917).
- Fixed potential signal out of scope issue with `use_raf_fn`
2024-07-27 18:07:00 +01:00
### Other Changes 🔥
- Better links in docs that work both in the book and in rustdoc (thanks to @mondeja).
- Better CI/CD (thanks to @EstebanBorai).
2024-05-10 14:15:59 -05:00
## [0.10.10] - 2024-05-10
### Change 🔥
- Added compile-time warning when you use `ssr` feature with `wasm32`. You can enable `wasm_ssr` to remove the warning.
## [0.10.9] - 2024-04-27
### Fixes 🍕
- Fixed `use_color_mode` without cookies and make cookies sync properly with local storage
- Fixed `use_infinite_scroll` edge case bug with disposed signals
2024-04-19 14:54:37 +01:00
## [0.10.8] - 2024-04-19
### Change 🔥
- `use_cookie` now supports Spin out of the box (thanks to @javierEd).
2024-04-10 22:51:01 +01:00
## [0.10.7] - 2024-04-10
2024-04-10 00:21:08 +01:00
2024-04-10 22:51:01 +01:00
### New Function 🚀
2024-04-10 00:21:08 +01:00
- `sync_signal`
2024-04-10 22:51:01 +01:00
### Change 🔥
- `use_color_mode` now supports cookies.
2024-04-02 11:18:39 +01:00
## [0.10.6] - 2024-04-02
### Fixes 🍕
- Corrected docs of `use_cookie`'s `max-age` unit to milliseconds (thanks to @sify21).
- Fixed setting multiple cookies in the browser (thanks to @sbking).
2024-03-12 11:40:53 +00:00
## [0.10.5] - 2024-03-12
### Fix 🍕
2024-03-12 13:28:55 +00:00
- Fixed SSR detection from an url query parameter for `use_color_mode` (thanks to @mondeja).
2024-03-05 20:45:33 +00:00
## [0.10.4] - 2024-03-05
2024-03-05 17:28:01 +00:00
### New Functions 🚀
- `use_event_source`
### Changes 🔥
- Wrapped callbacks in a non-reactive zone to remove potential warnings.
- Updated SSR chapter in the book to make it more clear and beginner-friendly (thanks to @flupke).
## [0.10.3] - 2024-02-23
### New Functions 🚀
- `use_or`
- `use_and`
- `use_not`
2024-02-16 02:26:48 +00:00
### Fix 🍕
- Removed signal warnings from `use_websocket`'s `send...` methods.
2024-02-16 02:26:48 +00:00
### Changes 🔥
- `use_color_mode` now supports detection from an url query parameter. (thanks to @mondeja)
## [0.10.2] - 2024-02-09
### New Functions 🚀
- `use_permission`
- `use_clipboard`
- `use_timeout_fn`
## [0.10.1] - 2024-01-31
2024-01-31 21:23:49 +00:00
### Fix 🍕
- Fixed docs.rs build
## [0.10.0] - 2024-01-31
2023-12-12 14:53:49 +00:00
### New Functions 🚀
2024-01-29 19:15:18 +00:00
- `use_broadcast_channel`
- `use_cookie` (thanks to @rakshith-ravi)
2024-01-03 22:52:59 +00:00
- `use_mouse_in_element`
2024-01-30 10:21:54 +01:00
- `use_device_orientation` (thanks to @mondeja)
2024-01-01 19:29:03 +01:00
- `use_device_pixel_ratio` (thanks to @mondeja)
2023-12-13 14:58:07 +00:00
- `use_element_bounding`
2023-12-12 14:53:49 +00:00
### Breaking Changes 🛠
2024-01-23 15:55:12 +00:00
- The `leptos` version is now 0.6
2023-12-12 14:53:49 +00:00
- The trait `Codec` has been renamed to `StringCodec` and has been moved to `util::StringCodec`.
- The struct `StringCodec` has been renamed to `FromToStringCodec` and has been moved to `util::FromToStringCodec`.
- The structs `JsonCodec` and `ProstCodec` have been moved to `util` as well.
2024-01-31 16:54:25 +00:00
- The function `use_storage` now requires type parameters for the stored type and the codec like all the other
`...storage...` functions.
2023-12-12 14:53:49 +00:00
2024-01-16 11:24:52 +00:00
### Fixes 🍕
- Fixed `use_geolocation` SSR compile issue
- Fixed `use_intl_number_format` maximum fraction digits option
2024-01-16 11:24:52 +00:00
2024-01-03 22:52:59 +00:00
### Changes 🔥
- The `UseMouseReturn` signals `x`, `y`, and `source_type` are now of type `Signal<f64>` instead of `ReadSignal<f64>`.
- You can now convert `leptos::html::HtmlElement<T>` into `Element(s)MaybeSignal`. This should make functions a lot
easier to use in directives.
- There's now a chapter in the book especially for `Element(s)MaybeSignal`.
- Throttled or debounced callbacks (in watch\__ or _\_fn) no longer are called after the containing scope was cleaned
up.
- The document returned from `use_document` now supports the methods `query_selector` and `query_selector_all`.
2024-01-03 22:52:59 +00:00
2023-12-06 00:23:58 +00:00
## [0.9.0] - 2023-12-06
2023-11-13 00:20:58 +00:00
2023-11-24 15:23:30 -05:00
### New Functions 🚀
- `use_display_media` (thanks to @seanaye)
2023-11-24 15:23:30 -05:00
2023-11-13 00:20:58 +00:00
### Breaking Changes 🛠
2023-11-15 23:59:17 +00:00
- (@feral-dot-io) The use `use_<type>_storage` functions have been rewritten to use `Codec`s instead of always
requiring `serde`.
- This also removes the feature `storage`
- By default the `StringCodec` is used which relies on types implementing `FromString + ToString`
- If you want to use `JsonCodec` you have to enable the feature `serde`
- If you want to use `ProstCodec` (new!) you have to enable the feature `prost`.
2023-11-15 23:59:17 +00:00
- (@feral-dot-io) The Rust flag `--cfg=web_sys_unstable_apis` is not needed anymore since relevant `web_sys` APIs are
now stable.
2023-11-13 00:20:58 +00:00
This affects in particular
- `use_element_size`
- `use_resize_observer`
2023-11-13 00:20:58 +00:00
### Fixes 🍕
- `use_raf_fn` and `use_timestamp` no longer spam warnings because of `get`ting signals outside of reactive contexts.
- `use_infinite_scroll` no longer calls the callback twice for the same event
2023-11-15 23:59:17 +00:00
- `use_scroll` now uses `try_get_untracked` in the debounced callback to avoid panics if the context has been destroyed
while the callback was waiting to be called.
2023-12-05 23:35:07 +00:00
- `use_idle` works properly now (no more idles too early).
2024-06-05 21:54:44 -04:00
- `use_web_notification` doesn't panic on the server anymore.
2023-11-13 00:20:58 +00:00
## [0.8.2] - 2023-11-09
### Fixes 🍕
- Fixed SSR for
- use_timestamp
- use_raf_fn
- use_idle
## [0.8.1] - 2023-10-28
### Fixes 🍕
- Using strings for `ElementMaybeSignal` and `ElementsMaybeSignal` is now SSR safe.
- This fixes specifically `use_color_mode` to work on the server.
2023-10-24 00:44:23 -05:00
## [0.8.0] - 2023-10-24
2023-10-23 20:15:05 -05:00
### New Functions 🚀
2023-10-24 00:44:23 -05:00
- `use_web_notification` (thanks to @centershocks44)
2023-10-23 20:15:05 -05:00
- `use_infinite_scroll`
2023-10-24 00:44:23 -05:00
- `use_service_worker` (thanks to @lpotthast)
2023-10-23 20:15:05 -05:00
### Breaking Changes 🛠
- `use_scroll` returns `impl Fn(T) + Clone` instead of `Box<dyn Fn(T)>`.
### Other Changes 🔥
- `UseScrollReturn` is now documented
## [0.7.2] - 2023-10-21
### Fixes 🍕
2023-11-15 23:59:17 +00:00
- Some functions still used `window()` which could lead to panics in SSR. This is now fixed.
Specifically for `use_draggable`.
2023-11-15 23:59:17 +00:00
## [0.7.1] - 2023-10-02
2023-10-02 21:05:20 +01:00
### New Function 🚀
- `use_sorted`
2023-09-30 18:24:06 +01:00
## [0.7.0] - 2023-09-30
2023-07-17 18:55:42 +01:00
### New Functions 🚀
2023-09-17 15:44:55 +01:00
- `use_timestamp`
- `use_idle`
2023-09-13 00:17:16 +01:00
- `use_document`
- `use_window`
2023-09-12 23:53:43 +01:00
- `use_geolocation`
2023-07-24 23:18:11 +01:00
- `signal_debounced`
2023-07-17 18:55:42 +01:00
- `signal_throttled`
2023-08-16 16:23:29 +01:00
### Breaking Changes 🛠
2023-07-24 23:18:11 +01:00
2023-07-27 18:06:36 +01:00
- Leptos version is now 0.5
- No `cx: Scope` params are supported/needed anymore because of the changes in Leptos.
Please check the release notes of Leptos 0.5 for how to upgrade.
2023-09-12 23:53:43 +01:00
- `watch` is now deprecated in favor of `leptos::watch` and will be removed in a future release.
`watch_with_options` will continue to exist.
- `use_event_listener_with_options` now takes a `UseEventListenerOptions` instead of
a `web_sys::AddEventListenerOptions`.
- `use_mutation_observer_with_options` now takes a `UseMutationObserverOptions` instead of
a `web_sys::MutationObserverInit`.
2023-07-28 21:03:18 +01:00
- `use_websocket`:
- takes now a `&str` instead of a `String` as its `url` parameter.
- same for the returned `send` method.
- The `ready_state` return type is now renamed to `ConnectionReadyState` instead of `UseWebSocketReadyState`.
- The returned signals `ready_state`, `message`, `message_bytes` have now the type
`Signal<...>` instead of `ReadSignal<...>` to make them more consistent with other functions.
- The options `reconnect_limit` and `reconnect_interval` now take a `u64` instead of `Option<u64>` to improve DX.
- The option `manual` has been renamed to `immediate` to make it more consistent with other functions.
To port please note that `immediate` is the inverse of `manual` (`immediate` = `!manual`).
- Added documentation how pass it ergonomically as context.
- `use_color_mode`:
- The optional `on_changed` handler parameters have changed slightly. Please refer to the docs for more details.
- Throttled or debounced functions cannot be `FnOnce` anymore.
- All traits `ClonableFn...` have been removed.
2023-07-24 23:18:11 +01:00
2023-08-04 13:19:34 +01:00
### Other Changes 🔥
2023-09-16 02:51:08 +01:00
- `use_websocket` can use relative urls now
- Callbacks in options don't require to be cloneable anymore
2023-08-04 13:19:34 +01:00
- Callback in `use_raf_fn` doesn't require to be cloneable anymore
2023-09-30 18:24:06 +01:00
- All (!) functions can now be safely called on the server. Specifically this includes the following that before
panicked on the server:
- `use_scroll`
- `use_event_listener`
- `use_element_hover`
- `on_click_outside`
- `use_drop_zone`
- `use_element_size`
- `use_element_visibility`
- `use_resize_observer`
- `use_intersection_observer`
- `use_mutation_observer`
2023-08-04 13:19:34 +01:00
2023-08-10 22:49:36 +01:00
### Fixes 🍕
- `use_element_visibility` didn't work in some cases on Chrome properly. This has been fixed.
2023-08-12 22:30:06 +01:00
## [0.6.3] - 2023-08-12
### Fixes 🍕
- `use_websocket` panicked after unmount
2023-08-03 18:37:42 +01:00
## [0.6.2] - 2023-08-03
### Fixes 🍕
- `use_event_listener_with_options` removes the handlers now correctly.
2023-08-03 13:45:58 +01:00
## [0.6.1] - 2023-08-03
### Fixes 🍕
- `use_storage` now uses `.get_untracked()` to avoid warnings.
2023-07-17 03:23:44 +01:00
## [0.6.0] - 2023-07-17
2023-07-16 01:07:52 +01:00
### New Functions 🚀
2023-07-17 03:17:08 +01:00
- `use_draggable`
2023-07-16 14:17:15 +01:00
- `use_to_string`
2023-07-16 14:04:42 +01:00
- `is_err`
- `is_ok`
2023-07-16 14:00:12 +01:00
- `is_none`
- `is_some`
2023-07-16 01:07:52 +01:00
- `use_raf_fn`
2023-08-16 16:23:29 +01:00
### Breaking Changes 🛠
- The following functions now accept a `MaybeRwSignal` as their initial/default value which means
you can use a synchronized `RwSignal` in those places.
- `use_color_mode`
- `use_cycle_list`
- `use_favicon`
- `use_storage`
- `use_local_storage`
- `use_session_storage`
- Instead of returning `ReadSignal`, the following functions now return `Signal`.
- `use_color_mode`
- `use_favicon`
- `use_storage`
- `use_local_storage`
- `use_session_storage`
### Fixes 🍕
- `use_drop_zone` now uses `.get_untracked()` in event handlers
## [0.5.0] - 2023-07-15
2023-07-14 05:48:37 +01:00
### New Functions 🚀
2023-07-15 00:55:02 +01:00
- `use_drop_zone`
2023-07-14 05:48:37 +01:00
- `use_websocket` (thanks @sectore)
- `use_intl_number_format`
2023-07-15 01:00:15 +01:00
### Changes 🔥
- Crate is ready for Server-Side Rendering. Enable feature `ssr` like you do for `leptos`.
2023-07-07 23:34:50 +01:00
## [0.4.1] - 2023-07-07
2023-07-07 16:38:03 +01:00
### New Functions 🚀
- `use_window_focus`
2023-07-07 23:07:56 +01:00
- `use_window_scroll`
2023-07-07 23:34:50 +01:00
- `use_document_visibility`
2023-07-07 16:38:03 +01:00
## [0.4.0] - 2023-07-03
2023-07-03 14:46:59 +01:00
2023-08-16 16:23:29 +01:00
### Breaking Changes 🛠
2023-07-03 14:46:59 +01:00
- Required `leptos` version is now 0.4
- Following the changes in `leptos` there is no longer a `stable` crate feature required in order to use this library
with a stable toolchain.
2023-07-03 14:46:59 +01:00
If you want to use it with a nightly toolchain you have to enable the `nightly` feature only on `leptos` directly.
No change is required for `leptos-use` itself.
2023-06-24 01:12:43 +01:00
## [0.3.3] - 2023-06-24
### New Functions 🚀
- `use_color_mode`
- `use_cycle_list`
- `use_active_element`
### Changes 🔥
- You can now use this crate with the `stable` toolchain (thanks @lpotthast)
- Set leptos dependency to `default-features = false` in order to enable SSR.
2023-06-17 04:05:51 +01:00
## [0.3.2] - 2023-06-17
2023-06-16 04:51:33 +01:00
### New Functions 🚀
- `use_css_var`
2023-06-17 04:05:51 +01:00
- `use_element_hover`
2023-06-16 04:51:33 +01:00
2023-06-15 20:30:05 +01:00
## [0.3.1] - 2023-06-15
2023-06-14 16:15:03 +01:00
### New Functions 🚀
- `use_interval_fn`
2023-06-15 18:05:43 +02:00
- `use_interval`
2023-06-14 16:15:03 +01:00
2023-06-13 17:48:32 +01:00
## [0.3.0] - 2023-06-13
2023-06-13 00:31:38 +01:00
2023-08-16 16:23:29 +01:00
### Breaking Changes 🛠
2023-06-13 00:31:38 +01:00
- `use_event_listener` no longer returns a `Box<dyn Fn()>` but a `impl Fn() + Clone`
### Changes 🔥
- You can now specify a `&str` or `Signal<String>` with CSS selectors wherever a node ref is accepted
- Callbacks of the following functions no longer require `Clone`
- `use_resize_observer`
- `use_intersection_observer`
2023-06-13 00:31:38 +01:00
- These functions now also accept multiple target elements in addition to a single one:
- `use_resize_observer`
- `use_intersection_observer`
2023-06-13 00:31:38 +01:00
### New Functions 🚀
2023-06-11 17:11:16 +01:00
- `whenever`
2023-06-13 00:31:38 +01:00
- `use_mutation_observer`
2023-06-13 17:48:32 +01:00
- `use_abs`
- `on_click_outside`
2023-06-11 17:11:16 +01:00
2023-06-13 00:31:38 +01:00
## [0.2.1] - 2023-06-11
2023-06-10 23:59:32 +01:00
### New Functions
- `use_intersection_observer`
- `use_element_visibility`
2023-06-13 00:31:38 +01:00
## [0.2.0] - 2023-06-11
2023-08-16 16:23:29 +01:00
### Breaking Changes
2023-06-10 03:19:00 +01:00
- `watch` doesn't accept `immediate` as a direct argument anymore. This is only provided by the option variant.
2023-06-10 13:49:00 +01:00
- `watch` has now variant `watch_with_options` which allows for debouncing and throttling.
2023-06-13 00:31:38 +01:00
### New Functions
2023-06-09 23:10:33 +01:00
- `use_storage`
2023-06-10 03:19:00 +01:00
- `use_local_storage`
- `use_session_storage`
- `watch_debounced`
- `watch_throttled`
- `watch_pausable`
2023-06-10 03:19:00 +01:00
- `use_ceil`
- `use_round`
- `use_media_query`
- `use_preferred_dark`
- `use_preferred_contrast`
2023-06-10 13:49:00 +01:00
- `use_favicon`
2023-06-10 19:15:41 +01:00
- `use_breakpoints`
2023-06-13 00:31:38 +01:00
### Other Changes
2023-06-10 13:49:00 +01:00
- Function count badge in readme
2023-06-13 00:31:38 +01:00
## [0.1.8/9] - 2023-06-05
- Fixed documentation and doc tests running for functions behind `#[cfg(web_sys_unstable_apis)]`
2023-06-13 00:31:38 +01:00
## [0.1.7] - 2023-06-05
### New Function
2023-06-05 00:02:13 +01:00
- `use_element_size`
2023-06-13 00:31:38 +01:00
## [0.1.6] - 2023-06-03
### Changes
2023-06-03 16:23:58 +01:00
- Fixed documentation so all feature are documented
2023-06-13 00:31:38 +01:00
## [0.1.5] - 2023-06-03
### New Functions
2023-06-03 05:25:45 +01:00
- `use_floor`
2023-06-03 14:58:30 +01:00
- `use_max`
- `use_min`
2023-06-03 05:25:45 +01:00
2023-06-13 00:31:38 +01:00
### Changes
2023-06-03 05:25:45 +01:00
- New feature: `math` that has to be activated in order to use the math functions.
2023-06-13 00:31:38 +01:00
## [0.1.4] - 2023-06-02
### New Functions
2023-05-29 01:52:03 +01:00
- `use_supported`
- `use_resize_observer`
- `watch`
2023-06-02 13:38:01 +01:00
- `use_mouse`
2023-06-13 00:31:38 +01:00
### Changes
2023-06-02 13:38:01 +01:00
- Use the crate `default-struct-builder` to provide ergonimic function options.
2023-05-29 01:52:03 +01:00
2023-06-13 00:31:38 +01:00
## [0.1.3] - 2023-05-28
### New Functions
2023-05-26 19:27:42 +01:00
- `use_scroll`
- `use_debounce_fn`
2023-06-13 00:31:38 +01:00
### Other Changes
2024-06-05 21:54:44 -04:00
- Better and more beautiful demo integration into the guide.