- Updated dependencies
- Adapted to Rust 1.67.1.
- [BREAKING] removed
fetch
module (usegloo-net
) - [BREAKING] removed
websocket
module (usegloo-net
orwasm-sockets
) - [BREAKING] removed
web-storage!
module (usegloo-storage
) - [BREAKING] removed
log!
anderror!
macros (usegloo-console
) - [BREAKING] removed
md!
macro (use an external crate +El::from_html
) - [BREAKING] removed
cookies()
function (use an external crate like cookie) - [BREAKING] removed
panic-hook
feature (useconsole_error_panic_hook
) - [BREAKING] removed
serde-json
andserde-wasm-bindgen
features - [BREAKING] added
routing
feature
- Make
fetch::JsonError
public. - Adapted to Rust 1.61.0.
- Make Seed compile with
wasm_bindgen >= v0.2.81
- Decoding WebSocket JSON messages
- Fix:
serde-wasm-bindgen
feature.
- [BREAKING] Base path changed from
Rc<Vec<String>>
toRc<[String]>
. It means alsoOrders::clone_base_path
returns a slice. - [BREAKING] Hid markdown functionality behind optional
markdown
feature - [BREAKING] Added argument
Option<&Namespace>
to functionsNode::from_html
andEl::from_html
. - [BREAKING] Added blanket
impl<Ms, T: IntoNodes<Ms>> IntoNode<Ms> for Option<T>
. This might conflict with localimpl
s ofIntoNodes
, but should make those unnecessary and safe to remove. - [BREAKING] Removed the deprecated
browser::service::fetch
module. - [BREAKING]
fetch::Error::SerdeError
changed tofetch::Error::JsonError
- Fixed: Prevent link listener from intercepting links with the
download
attribute. - Fixed an issue in vdom where inputs with invalid contents being cleared on Firefox.
- Added helpers for wheel event:
wheel_ev
andto_wheel_event
. - Added
Response::blob
- Added
panic-hook
feature, enabled by default, to conditionally includeconsole_error_panic_hook
- Added macro
raw_svg!
(#589). - Added
browser::dom::Namespace
toprelude
. - Added
At::Role
variant. - Added
Response::headers
. - Added
Headers::new
. - Added
Header::name()
andHeader::value()
. - Added
fetch::form_data::FormData
andRequest.form_data
. - Added
serde-wasm-bindgen
andserde-json
features to use eitherserde-wasm-bindgen
orserde_json
for JSON de-/serialization.serde-wasm-bindgen
reduces final binary size for downstream users.serde-json
is enabled by default. - Added method to return detailed error response from server with
FetchError
. - Added
Request.body_ref
to take the body by reference. - Added
sl_input
to thecustom_elements
example. - Added examples
drag_and_drop
,record_screen
,e2e_encryption
andcounters
. - Added
charts
example. - Added
page_trait
example. - Added
on_insert
event on elements, triggered when they are inserted into the DOM. - Implemented
AsAtValue
forOption<T>
- Implemented
From<impl AsRef<web_sys::Headers>>
forHeaders
. - Implemented
FromIterator<(impl Into<Cow<'a, str>>, impl Into<Cow<'a, str>>)>
forHeaders
. - Use
wheel_ev
incanvas
example to zoom rectangle with mouse scroll wheel. - Derived
Eq
andPartialEq
forHeader
. - Element macros like
div!
can now containIterator
s inside ofOption
values. Previously only one or the other was possible. - Adapted to Rust 1.60.0.
- Updated dependencies
- [BREAKING] Rename
linear_gradient!
tolinearGradient!
for consistency with the other svg macros (same withradial_gradient!
andmesh_gradient!
) (#377). - Fixed
base_path
with a trailing slash parsing / handling. - Fixed
C
macro memory / WASM file size issue. - Added examples
tests
,service_worker
,resize_observer
,component_builder
,i18n
andunsaved_changes
(#459). - Fixed
UrlRequested
handling (#459). - [BREAKING] Hidden and renamed module
effects
toeffect
. - Added
App::update_with_option
. - Added
Navigator
andBeforeUnloadEvent
into Seed'sweb_sys
. - Fixed runtime exception when using binary data in WS on some browsers (#470).
- Exported macro
with_dollar_sign!
. - [deprecated]
RequestAnimationFrameTime
+RequestAnimationFrameHandle
+request_animation_frame
are deprecated. - [deprecated]
set_interval
+set_timeout
are deprecated. - [deprecated]
class!
is deprecated in favor ofC!
. - [BREAKING] Removed deprecated
AppBuilder
withsink
,mount_point
,routes
,window_events
, etc. (UseApp::start
instead.) - [BREAKING] Removed support for deprecated global messages (
GMsg
,GMs
, ..). Useorders.notify
+orders.subscribe
instead. - Relaxed
view
andupdate
type inApp::start
fromfn
toFnOnce + Clone
. - [BREAKING] Removed deprecated
Ev::TriggerUpdate
. - [deprecated]
simple_ev
is deprecated. - Exposed dependency
console_error_panic_hook
. - Fixed double
UrlChanged
firing by removinghashchange
listener. - Added
Request::bytes
. - Build Changes - Remove all workspace=false and instead defined default_to_workspace=false in the config.
- Build Changes - Make all core cargo-make tasks private with default namespace and remove clear=true from all seed tasks.
- Build Changes - Remove installation instructions and instead depend on core cargo-make installation tasks.
- Build Changes - Replace rust for_each implementation with duckscript which is much shorter, simpler and faster (in case you don't have cargo-script installed).
- Build Changes - Enforce minimal cargo-make version: 0.32.1.
- Added new
Orders
methodsrequest_url
(#518) andmsg_sender
(#502). - [BREAKING]
Orders::msg_mapper
returnsRc<..>
instead ofBox<..>
. - Reexported
pub use wasm_bindgen_futures::{self, spawn_local, JsFuture};
andpub use futures::{self, future::{self, FutureExt, TryFutureExt}};
inlib.rs
. - Updated example
websocket
. - Fixed link handling (#527).
- Fixed attribute ordering (#335).
- Implemented
Display
forNode
(#294). - Fixed url requests from pages when the hash routing is used.
- Fixed url encoding, serializing in
push_route
and the methodUrl::hash_path
. - Added
Url
methodsskip_hash_base_path
andencode_uri_component
(#424). - Added
Node::NoChange
.
- [BREAKING] Custom elements are now patched in-place (#364). Use
el_key
to force reinitialize an element. - Added
el_key
method for adding keys toEl
s (#354). - Enabled all additional markdown extensions.
- Removed
'static
bound fromEl
andNode
. - [BREAKING] Changed
perform_cmd
andseed::browser::service::fetch
return type toT
instead ofResult<T, T>
. - Added Aria attributes.
- [BREAKING]
UpdateEl<T>
changed toUpdateEl<Ms>
andfn update(self, el: &mut T);
tofn update_el(self, el: &mut El<Ms>);
(#370). - Added trait
UpdateElForIterator<Ms>
. - Added support for all
Iterator
s,Option
,u32
,i32
,usize
,f64
and references in element creation macros (#365, #128). - [BREAKING]
String
implementsUpdateEl<T>
. (References are now required forString
properties, e.g.div![&model.title]
.) - Fixed
href
detection to ignoreuse
elements (#384). - Added methods
subscribe
,subscribe_with_handle
,perform_cmd_with_handle
,stream
,stream_with_handle
andnotify
intoOrders
(#130). - Added
cmds::timeout
,stream::interval
,stream::window_event
,stream::document_event
,subs::UrlChanged
andsubs::UrlRequested
(#131). - [BREAKING] Futures in
perform_cmd
andperform_g_cmd
are executed immediately. - Added
App
methodsnotify
andnotify_with_notification
. - [BREAKING]
App
methodprocess_cmd_and_msg_queue
renamed toprocess_effect_queue
. - [BREAKING] Url change listeners are always active (even if
routes
is not defined). - Added
cmds
,streams
,subs
,CmdHandle
,SubHandle
andStreamHandle
into the Seed's prelude. - [BREAKING] Removed module
next_tick
. - Added method
App::start
(alternative toAppBuilder
) (#376, #382). - Added trait
GetElement
+ included in theprelude
(alternative toMountPoint
, used inAppStart
). - Derive
Debug
forElRef
. - Added macros
C!
andIF!
and helpernot
(#375). - Added trait
ToClasses
+ included in theprelude
. ev
accepts handlers that returnMsg
,Option<Msg>
or()
(#394).- [BREAKING]
EventHandler::new
accepts only handlers that returnOption<Msg>
. - [BREAKING]
ev
-like functions and someOrders
method require'static
bound for generic types (temporary). Orders::after_next_render
now accepts callbacks that returnMsg
,Option<Msg>
or()
.- [deprecated]
View
is deprecated in favor ofIntoNodes
. - [BREAKING]
View
isn't implemented forEl
andVec<El>
. - [BREAKING]
Node::add_listener
renamed toadd_event_handler
. - Rewritten
README.md
. - Added new Fetch API module. See
seed::browser::fetch
(#353) - [deprecated] -
seed::browser::service::fetch
module is deprecated in favor ofseed::browser::fetch
. - Implemented
IntoNodes
forOption<Node<Msg>>
andOption<Vec<Node<Msg>>>
. - Implemented
UpdateEl
fori64
andu64
. - Reset properties
checked
andvalue
on attribute remove (#405). - Added examples
markdown
,tea_component
,subscribe
,custom_elements
,fetch
,url
,pages
,pages_hash_routing
,pages_keep_state
,auth
,bunnies
andgraphql
(#400). - Updated examples.
- Removed examples
app_builder
,orders
,server_interaction
,counter_advanced
andmathjax
. - Example
animation_frame
renamed toanimation
. - Added base url handling + method
Orders::clone_base+path
(#369). - [BREAKING] Updated
Url
androuting.rs
. - [deprecated]
seed::browser::service::storage
. - Added
LocalStorage
,SessionStorage
andWebStorage
(trait). - Added
TouchEvent
andtouch_ev
definitions. - Added
DragEvent
anddrag_ev
definitions. - [BREAKING] Renamed
to_kbevent
toto_keyboard_event
. - [BREAKING]
after_next_render
returnsRenderInfo
. web_sys
,js_sys
andwasm_bindgen
+wasm_bindgen::JsCast
included inprelude
.- Added
WebSocket
+ related items (#8). - Exposed
App::mailbox
. - Added
streams::backoff
+ updatedwebsocket
example. - Added
#[derive(Debug)]
tofetch::Response
- Implemented
UpdateEl
forFilter
andFilterMap
. - Added method
El::is_custom(&self)
. - Fixed custom elements patching (#325).
- Removed unnecessary error message for comment nodes.
- [BREAKING] Removed deprecated
update
andtrigger_update_ev
. - [BREAKING] Removed the remains of lifecycle hooks.
- Fixed
value
andchecked
setting for input elements (a bug in VirtualDOM patch algorithm). - [BREAKING] Removed unpredictable internal input listeners - Seed will not longer react to external input value changes.
- [BREAKING] Use
EventHandler
instead ofListener
. (Listener
is now used as the internal DOM EventListener representation.) - [deprecated]
raw_ev
is deprecated in favor ofev
. Functionality is the same. - Improved performance - rewritten event-handling and other refactors in VirtualDOM.
- Fixed processing of multiple event-handlers (#138).
- Added DOM Element references - see
ElRef
and examples (canvas
,user_media
ortodomvc
) (#115). - Removed
Ms: Clone
restriction as much as possible. - [BREAKING] Added or changed
Custom
variant fromCustom(String)
toCustom(Cow<'static, str>)
inEv
,Tag
,At
andSt
. Use functionfrom
to create custom entities (e.g.At::from("my-attribute")
) (#208). - Added macro
nodes!
. It acceptsNode<Msg>
andVec<Node<Msg
, returns flattenedVec<Node<Msg>
. - Refactored all examples.
- Fixed and rewritten example
todomvc
. - Renamed
counter
example tocounter_advanced
. - Renamed
drop
example todrop_zone
. - Removed
server_interaction_detailed
example. - Added a new simpler
counter
example. - Changed example in the main
README.md
. - Added flag
#![forbid(unsafe_code)]
so the Seed will be marked as a safe library by the Rust community tools. - Removed
clone
restriction from the methodEffect::map_msg
. - Implemented
UpdateEl
forFlatMap
. - Adapted to Rust 1.41.0.
- [BREAKING]
MessageMapper::map_message
changed toMessageMapper::map_msg
. - [BREAKING]
fetch
andstorage
moved toseed::browser::service::{fetch, storage}
, but reimported at the lib level. Ie:seed::fetch
, andseed::storage
. - Added support for
Vec<Attr>
andVec<Style>
in view macros. App
included inprelude
.- [BREAKING] Seed refactored to use
async/.await
.fetch.rs
docs updated. - Export
Attrs
,Style
,Listener
. ie, can import withseed::Style
etc. - Fixed a bug causing the docs not to build.
- Added helper
seed::canvas()
, andseed::canvas_context()
helper functions. - Fixed
Url
parsing (resolves issue with hash routing). - [BREAKING]
From<String> for Url
changed toTryFrom<String> for Url
. - Fixed jumping cursor in inputs (#158) .
- Added method
orders.after_next_render(Option<RenderTimestampDelta>)
(#207). - Fixed a bug with back/forward routing to the landing page (#296).
- Deprecated
Init
struct, replacing it withBeforeMount
andAfterMount
structs to better denote state before and after mounting theApp
occurs. - Added a new function
builder
which replacesbuild
as part of deprecatingInit
. - Added a new function
build_and_start
which replacesfinish
as part of deprecatingInit
. - Added
IntoInit
andIntoAfterMount
traits. It is possible to use these in place of a closure or function to produce the correspondingInit
andAfterMount
structs. - Messages sent from
IntoAfterMount
will now be run after the routing message. - Added example
app_builder
. events::Listener
is included inprelude
.()
s have been replaced with structs - e.g.GMs = ()
=>GMs = UndefinedGMs
.WindowEvents
alias changed toWindowEventsFn
for consistency with other*Fn
.- Commented builder and helper methods.
- Added an
Init
struct, which can help with initial routing (Breaking) - The
routes
function now returns anOption<Msg>
(Breaking) - Updated
Tag::from()
to accept more input types style!
now accepts alsoOption<impl ToString>
- Fixed a bug affecting element render order
- Added a
hashchange
listener - Improved error-handling
- Tweaked bootstrap order so that
main_el_vdom
is initialized first (internal) - Macro
custom!
checks if you set tag, and panics when you forget - Fixed a bug with children being absent from cloned elements
- Improved debugging
- Fixed a namespace bug with adding children to
Svg
elements - Fixed a bug affecting Safari
- Added
seed::html_document()
andseed::cookies
convenience functions
- Added more SVG
At
variants - Added the
St
enum, for style keys; similar toAt
- Improved ergonomics of
add_child
,add_attr
,add_class
,add_style
,replace_text
, andadd_text
,Node
methods
ElContainer
, imported in prelude, renamed toView
. (Breaking)- Internal refactor of
El
: Now wrapped inNode
, along withEmpty
andText
. Creation macros returnNode(Element)
. (Breaking) - Changed the way special attributes like
disabled
,autofocus
, andchecked
are handled (Breaking) MessageMapper
now accepts closuresOrders
is a trait now instead of a struct. (Breaking)- Significant changes to MessageMapper
- Orders has new methods,
clone_app
andmsg_mapper
which can allow access to app instance. - Added more SVG element macros
- Several minor bux fixes
- Examples updated to reflect these changes
- Improvements to Fetch API, especially regarding error handling and deserialization
routes
now acceptsUrl
instead of&Url
(Breaking)- Improvements to fetch API
- Added
raw!
,md!
, andplain!
macros that aliasEl::from_html
,El::from_markdown
, andEl::new_text
respectively Attrs!
andStyle!
macros can now use commas and whitespace as separators, in addition to semicolons- Fixed typos in a few attributes (Breaking)
- Fixed a bug where an HTML namespace was applied to raw html/markdown elements
- New conditional syntax added in
class!
macro, similar toElm
'sclassList
Listener
now implementsMessageMapper
El methods
add_child
,add_style
,add_attr
, andset_text
now return the elements, allowing chaining- Fixed a bug with
set_text
. Renamed toreplace_text
. Addedadd_text
, which adds a text node, but doesn't remove existing ones. Addedadd_class
. (Breaking)
- Fetch module and API heavily changed (breaking)
- Added support for
requestAnimationFrame
, which improves render performance, especially for animations - Styles no longer implicitly add
px
. Addedunit!
macro in its place Map
can now be used directly in elements, without needing to annotate type and collect (ie for childElements
, andListener
s)- Significant changes to MessageMapper
- Orders hs new methods,
clone_app
andmsg_mapper
that allow access to app instance. - Fixed a bug where
empty
elements at the top-level were rendering in the wrong order - Added an
empty!
macro, which is similar toseed::empty
- Attributes and style now retain order
- Fixed a bug where view functions returning
Vec<El>
weren't rendering properly - Fixed a typo with the
viewBox
attribute
- The
update
fn now accepts a (new)Orders
struct, and returns nothing. Renders occur implicitly, with the option to skip rendering, update with an additional message, or perform an asynchronous action. (Breaking) .mount()
now accepts elements. Deprecated.mount_el()
- The
log
function and macro now support items which implementDebug
- Removed deprecated
routing::push_path
function (breaking)
- Added
seed::update
function, which allows custom events, and updates from JS
- Top level view functions can now return
Vec<El<Ms>>
,El<Ms>
, or something else implementing the new ElContainer trait
- Top level view functions now return
Vec<El<Ms>>
instead ofEl<Ms>
, mounted directly to the mount point. (Breaking) push_route()
can now accept aVec<&str>
, depreciatingpush_path()
- Fixed a bug where window events couldn't be enabled on initialization
update
function now takes a mutable ref of the model. (Breaking)Update
(update's return type) is now a struct. (Breaking)- Async, etc events are now handled through messages, instead of passing
App
through the view func. (Breaking) - Fixed some bugs with empty elements
- Internal code cleanup
- Added commented-out release command to example build files
- Added more tests
- Routing can be triggered by clicking any element containing a
Href
attribute with value as a relative link - Internal links no longer trigger a page refresh
- Models no longer need to implement
Clone
- Fixed a bug introduced in 0.2.9 for
select
elements
- Added a
RenderThen
option toUpdate
, which allows chaining update messages - Added a
.model
method toUpdate
, allowing for cleaner recursion in updates - Improved controlled-component (sync fields with model) logic
- Reflowed
El::from_html
andEl::from_markdown
to returnVec
s ofEl
s, instead of wrapping them in a single span. - Improved support for SVG and namespaces
- Added
set_timeout
wrapper
- Fixed a bug where
line!
macro interfered with builtin - Fixed a bug with routing search (ie
?
)
- Fixed a bug where children would render out-of-order
- Improved vdom diffing logic
- Attributes and Events now can use
At
andEv
enums - Routing overhauled; modelled after react-reason. Cleaner syntax, and more flexible
- Input, Textarea, and Select elements are now "controlled" - they always stay in sync with the model
- index.html file updated in examples and quickstart to use relative paths, which fixes landing-page routing
- Changed render func to use a new pattern (Breaking)
- Default mount point added: "app" for element id
- View func now takes a ref to the model instead of the model itself
- Routing refactored; now works dynamically
- Update function now returns an enum that returns Render or Skip, to allow conditional rendering (Breaking)
- Elements can now store more than 1 text node
- Fixed a bug where initially-empty text won't update
- Added more tests
- Exposed web_sys Document and Window in top level of Seed create, with .expect
- Modified build scripts to keep the wasm output name fixed at 'package', simplifying example/quickstart renames
- Tests now work in Windows due to update in wasm-pack
- Overhaul of fetch module
- Added server-integration example
- Added support for custom tags
- Added
class!
andid!
convenience macros for setting style
- Added high-level fetch api
- Added routing
- Added element lifecycles (did_mount, did_update, will_unmount)
- Added support for updating state outside events
- Added server_interaction, and homepage (this site) examples
- Initial release