From 9bf0f7da1a2f9443efbce45d92a011dd5423e0f3 Mon Sep 17 00:00:00 2001 From: luoxiaozero <48741584+luoxiaozero@users.noreply.github.com> Date: Tue, 19 Mar 2024 22:02:43 +0800 Subject: [PATCH] Feat/thaw utils (#145) * feat: extract utils as the library * refactor: thaw_utils directory * style: fmt --- Cargo.toml | 6 +- thaw/Cargo.toml | 8 +- thaw/src/alert/mod.rs | 11 +-- thaw/src/auto_complete/mod.rs | 16 ++-- thaw/src/avatar/mod.rs | 11 +-- thaw/src/badge/mod.rs | 7 +- thaw/src/breadcrumb/breadcrumb_item.rs | 2 +- thaw/src/breadcrumb/mod.rs | 10 +-- thaw/src/button/button_group.rs | 7 +- thaw/src/button/mod.rs | 17 ++-- thaw/src/calendar/mod.rs | 10 +-- thaw/src/card/mod.rs | 8 +- thaw/src/checkbox/checkbox_group.rs | 2 +- thaw/src/checkbox/checkbox_item.rs | 2 +- thaw/src/checkbox/mod.rs | 10 +-- thaw/src/code/mod.rs | 2 +- thaw/src/collapse/collapse_item.rs | 7 +- thaw/src/collapse/mod.rs | 7 +- thaw/src/color_picker/mod.rs | 15 ++-- thaw/src/components/binder/mod.rs | 8 +- thaw/src/components/css_transition/mod.rs | 2 +- thaw/src/components/teleport/mod.rs | 2 +- thaw/src/components/wave/mod.rs | 2 +- thaw/src/date_picker/mod.rs | 2 +- thaw/src/date_picker/panel/date_panel.rs | 3 +- thaw/src/date_picker/panel/mod.rs | 8 +- thaw/src/divider/mod.rs | 2 +- thaw/src/drawer/mod.rs | 2 +- thaw/src/grid/grid_item.rs | 2 +- thaw/src/grid/mod.rs | 2 +- thaw/src/image/mod.rs | 2 +- thaw/src/input/mod.rs | 6 +- thaw/src/input/text_area.rs | 6 +- thaw/src/input_number/mod.rs | 2 +- thaw/src/layout/layout_header.rs | 2 +- thaw/src/layout/layout_sider.rs | 2 +- thaw/src/layout/mod.rs | 3 +- thaw/src/lib.rs | 3 +- thaw/src/loading_bar/loading_bar_provider.rs | 3 +- thaw/src/loading_bar/mod.rs | 6 +- thaw/src/menu/menu_group.rs | 7 +- thaw/src/menu/menu_item.rs | 7 +- thaw/src/menu/mod.rs | 5 +- thaw/src/message/message_provider.rs | 6 +- thaw/src/message/mod.rs | 5 +- thaw/src/mobile/nav_bar/mod.rs | 12 +-- thaw/src/mobile/tabbar/mod.rs | 10 +-- thaw/src/mobile/tabbar/tabbar_item.rs | 4 +- thaw/src/mobile/toast/mod.rs | 2 +- thaw/src/modal/mod.rs | 16 +++- thaw/src/popover/mod.rs | 13 +-- thaw/src/progress/mod.rs | 3 +- thaw/src/progress/progress_circle.rs | 35 +++----- thaw/src/radio/mod.rs | 7 +- thaw/src/radio/radio_group.rs | 2 +- thaw/src/radio/radio_item.rs | 6 +- thaw/src/select/mod.rs | 16 +++- thaw/src/skeleton/mod.rs | 6 +- thaw/src/slider/mod.rs | 14 ++- thaw/src/slider/slider_label.rs | 2 +- thaw/src/space/mod.rs | 2 +- thaw/src/spinner/mod.rs | 10 +-- thaw/src/switch/mod.rs | 10 +-- thaw/src/table/mod.rs | 10 +-- thaw/src/tabs/mod.rs | 11 +-- thaw/src/tabs/tab.rs | 2 +- thaw/src/tag/mod.rs | 30 +++---- thaw/src/time_picker/mod.rs | 26 ++++-- thaw/src/typography/text.rs | 7 +- thaw/src/upload/mod.rs | 5 +- thaw/src/upload/upload_dragger.rs | 3 +- thaw/src/utils/callback.rs | 89 ------------------- thaw/src/utils/mod.rs | 38 -------- thaw_utils/Cargo.toml | 25 ++++++ .../utils => thaw_utils/src}/class_list.rs | 4 +- .../src}/event_listener.rs | 0 thaw_utils/src/hooks/mod.rs | 5 ++ .../src/hooks}/use_click_position.rs | 0 .../src/hooks}/use_lock_html_scroll.rs | 0 thaw_utils/src/lib.rs | 28 ++++++ .../utils => thaw_utils/src}/mount_style.rs | 0 .../utils => thaw_utils/src}/optional_prop.rs | 0 .../src/signals}/component_ref.rs | 0 thaw_utils/src/signals/mod.rs | 11 +++ .../utils => thaw_utils/src/signals}/model.rs | 0 .../src/signals}/optional_maybe_signal.rs | 0 .../src/signals/signal_watch.rs | 0 .../src/signals}/stored_maybe_signal.rs | 0 {thaw/src/utils => thaw_utils/src}/time.rs | 0 89 files changed, 324 insertions(+), 398 deletions(-) delete mode 100644 thaw/src/utils/callback.rs delete mode 100644 thaw/src/utils/mod.rs create mode 100644 thaw_utils/Cargo.toml rename {thaw/src/utils => thaw_utils/src}/class_list.rs (98%) rename {thaw/src/utils => thaw_utils/src}/event_listener.rs (100%) create mode 100644 thaw_utils/src/hooks/mod.rs rename {thaw/src/utils => thaw_utils/src/hooks}/use_click_position.rs (100%) rename {thaw/src/utils => thaw_utils/src/hooks}/use_lock_html_scroll.rs (100%) create mode 100644 thaw_utils/src/lib.rs rename {thaw/src/utils => thaw_utils/src}/mount_style.rs (100%) rename {thaw/src/utils => thaw_utils/src}/optional_prop.rs (100%) rename {thaw/src/utils => thaw_utils/src/signals}/component_ref.rs (100%) create mode 100644 thaw_utils/src/signals/mod.rs rename {thaw/src/utils => thaw_utils/src/signals}/model.rs (100%) rename {thaw/src/utils => thaw_utils/src/signals}/optional_maybe_signal.rs (100%) rename thaw/src/utils/signal.rs => thaw_utils/src/signals/signal_watch.rs (100%) rename {thaw/src/utils => thaw_utils/src/signals}/stored_maybe_signal.rs (100%) rename {thaw/src/utils => thaw_utils/src}/time.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index f6862f6..ede66e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,8 @@ [workspace] resolver = "2" -members = ["thaw", "demo", "demo_markdown"] +members = ["thaw", "thaw_utils", "demo", "demo_markdown"] exclude = ["examples"] + +[workspace.dependencies] +thaw = { version = "0.2.3", path = "./thaw" } +thaw_utils = { version = "0.0.1", path = "./thaw_utils" } diff --git a/thaw/Cargo.toml b/thaw/Cargo.toml index 846f115..0f8812a 100644 --- a/thaw/Cargo.toml +++ b/thaw/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" [dependencies] leptos = { version = "0.6.9" } -leptos_meta = { version = "0.6.9", optional = true } +thaw_utils = { workspace = true } web-sys = { version = "0.3.69", features = [ "DomRect", "File", @@ -30,6 +30,6 @@ chrono = "0.4.35" palette = "0.7.5" [features] -csr = ["leptos/csr"] -ssr = ["leptos/ssr", "leptos_meta/ssr"] -hydrate = ["leptos/hydrate"] +csr = ["leptos/csr", "thaw_utils/csr"] +ssr = ["leptos/ssr", "thaw_utils/ssr"] +hydrate = ["leptos/hydrate", "thaw_utils/hydrate"] diff --git a/thaw/src/alert/mod.rs b/thaw/src/alert/mod.rs index d33920e..75cbb98 100644 --- a/thaw/src/alert/mod.rs +++ b/thaw/src/alert/mod.rs @@ -1,14 +1,11 @@ mod theme; -use crate::{ - components::OptionComp, - theme::use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Icon, Theme, -}; -use leptos::*; pub use theme::AlertTheme; +use crate::{components::OptionComp, theme::use_theme, Icon, Theme}; +use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; + #[derive(Clone)] pub enum AlertVariant { Success, diff --git a/thaw/src/auto_complete/mod.rs b/thaw/src/auto_complete/mod.rs index 15d0fba..c613aa6 100644 --- a/thaw/src/auto_complete/mod.rs +++ b/thaw/src/auto_complete/mod.rs @@ -1,13 +1,13 @@ mod theme; +pub use theme::AutoCompleteTheme; + use crate::{ components::{Binder, CSSTransition, Follower, FollowerPlacement, FollowerWidth}, - use_theme, - utils::{class_list::class_list, mount_style, Model, OptionalProp, StoredMaybeSignal}, - ComponentRef, Input, InputPrefix, InputRef, InputSuffix, Theme, + use_theme, ComponentRef, Input, InputPrefix, InputRef, InputSuffix, Theme, }; use leptos::*; -pub use theme::AutoCompleteTheme; +use thaw_utils::{class_list, mount_style, Model, OptionalProp, StoredMaybeSignal}; #[derive(Clone, PartialEq)] pub struct AutoCompleteOption { @@ -211,7 +211,13 @@ pub fn AutoComplete( >
diff --git a/thaw/src/avatar/mod.rs b/thaw/src/avatar/mod.rs index 07fba1d..5d31c4c 100644 --- a/thaw/src/avatar/mod.rs +++ b/thaw/src/avatar/mod.rs @@ -1,14 +1,11 @@ mod theme; -use crate::{ - components::OptionComp, - use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; -use leptos::*; pub use theme::AvatarTheme; +use crate::{components::OptionComp, use_theme, Theme}; +use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; + #[component] pub fn Avatar( #[prop(optional, into)] src: Option>, diff --git a/thaw/src/badge/mod.rs b/thaw/src/badge/mod.rs index 491fda0..9af81d6 100644 --- a/thaw/src/badge/mod.rs +++ b/thaw/src/badge/mod.rs @@ -1,9 +1,6 @@ -use crate::{ - theme::use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; +use crate::{theme::use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[derive(Default, Clone)] pub enum BadgeVariant { diff --git a/thaw/src/breadcrumb/breadcrumb_item.rs b/thaw/src/breadcrumb/breadcrumb_item.rs index 2e2bfee..826742b 100644 --- a/thaw/src/breadcrumb/breadcrumb_item.rs +++ b/thaw/src/breadcrumb/breadcrumb_item.rs @@ -1,6 +1,6 @@ use super::use_breadcrumb_separator; -use crate::utils::{class_list::class_list, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, OptionalProp}; #[component] pub fn BreadcrumbItem( diff --git a/thaw/src/breadcrumb/mod.rs b/thaw/src/breadcrumb/mod.rs index 3ab4652..6332243 100644 --- a/thaw/src/breadcrumb/mod.rs +++ b/thaw/src/breadcrumb/mod.rs @@ -1,14 +1,12 @@ mod breadcrumb_item; mod theme; -use crate::{ - use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; +pub use theme::BreadcrumbTheme; + +use crate::{use_theme, Theme}; pub use breadcrumb_item::BreadcrumbItem; use leptos::*; -pub use theme::BreadcrumbTheme; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn Breadcrumb( diff --git a/thaw/src/button/button_group.rs b/thaw/src/button/button_group.rs index 28f4235..eb51fe0 100644 --- a/thaw/src/button/button_group.rs +++ b/thaw/src/button/button_group.rs @@ -1,5 +1,5 @@ -use crate::utils::{class_list::class_list, mount_style, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn ButtonGroup( @@ -9,7 +9,10 @@ pub fn ButtonGroup( ) -> impl IntoView { mount_style("button-group", include_str!("./button-group.css")); view! { -
+
{children()}
} diff --git a/thaw/src/button/mod.rs b/thaw/src/button/mod.rs index 08d1bef..775e71d 100644 --- a/thaw/src/button/mod.rs +++ b/thaw/src/button/mod.rs @@ -1,15 +1,16 @@ mod button_group; mod theme; +pub use button_group::ButtonGroup; +pub use theme::ButtonTheme; + use crate::{ components::{OptionComp, Wave, WaveRef}, icon::Icon, theme::*, - utils::{class_list::class_list, mount_style, ComponentRef, OptionalMaybeSignal, OptionalProp}, }; -pub use button_group::ButtonGroup; use leptos::*; -pub use theme::ButtonTheme; +use thaw_utils::{class_list, mount_style, ComponentRef, OptionalMaybeSignal, OptionalProp}; #[derive(Default, PartialEq, Clone, Copy)] pub enum ButtonVariant { @@ -229,7 +230,8 @@ pub fn Button( ButtonVariant::Text), ("thaw-button--link", move || variant.get() == ButtonVariant::Link), ("thaw-button--round", move || round.get()), ("thaw-button--circle", move || circle.get()), ("thaw-button--disabled", move || - disabled.get()), ("thaw-button--block", move || block.get()), class.map(| c | move || c.get()) + disabled.get()), ("thaw-button--block", move || block.get()), class.map(| c | move + || c.get()) ] style=move || { @@ -249,8 +251,8 @@ pub fn Button( "animation: thawLoadingCircle 1s infinite linear;{icon_style}", ) /> - }.into_view() - + } + .into_view() } else { (move || { let icon = icon.get(); @@ -259,7 +261,8 @@ pub fn Button( } - }).into_view() + }) + .into_view() } }} diff --git a/thaw/src/calendar/mod.rs b/thaw/src/calendar/mod.rs index 689f498..508fe9f 100644 --- a/thaw/src/calendar/mod.rs +++ b/thaw/src/calendar/mod.rs @@ -2,15 +2,11 @@ mod theme; pub use theme::CalendarTheme; -use crate::{ - use_theme, - utils::{class_list::class_list, mount_style, Model, OptionalProp}, - Button, ButtonGroup, ButtonVariant, Theme, -}; -use chrono::{Datelike, Days, Local, NaiveDate}; -use chrono::{Month, Months}; +use crate::{use_theme, Button, ButtonGroup, ButtonVariant, Theme}; +use chrono::{Datelike, Days, Local, Month, Months, NaiveDate}; use leptos::*; use std::ops::Deref; +use thaw_utils::{class_list, mount_style, Model, OptionalProp}; #[component] pub fn Calendar( diff --git a/thaw/src/card/mod.rs b/thaw/src/card/mod.rs index c86e4d2..93d0380 100644 --- a/thaw/src/card/mod.rs +++ b/thaw/src/card/mod.rs @@ -1,10 +1,6 @@ -use crate::{ - components::*, - use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; +use crate::{components::*, use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[slot] pub struct CardHeader { diff --git a/thaw/src/checkbox/checkbox_group.rs b/thaw/src/checkbox/checkbox_group.rs index bc40798..9082359 100644 --- a/thaw/src/checkbox/checkbox_group.rs +++ b/thaw/src/checkbox/checkbox_group.rs @@ -1,6 +1,6 @@ -use crate::utils::Model; use leptos::*; use std::collections::HashSet; +use thaw_utils::Model; #[component] pub fn CheckboxGroup( diff --git a/thaw/src/checkbox/checkbox_item.rs b/thaw/src/checkbox/checkbox_item.rs index 3ff01e9..37de3aa 100644 --- a/thaw/src/checkbox/checkbox_item.rs +++ b/thaw/src/checkbox/checkbox_item.rs @@ -1,9 +1,9 @@ use crate::{ checkbox::{checkbox_group::use_checkbox_group, Checkbox}, - utils::OptionalProp, SignalWatch, }; use leptos::*; +use thaw_utils::OptionalProp; #[component] pub fn CheckboxItem( diff --git a/thaw/src/checkbox/mod.rs b/thaw/src/checkbox/mod.rs index 204ef9d..ada076c 100644 --- a/thaw/src/checkbox/mod.rs +++ b/thaw/src/checkbox/mod.rs @@ -1,16 +1,12 @@ mod checkbox_group; mod checkbox_item; -use crate::{ - components::*, - icon::*, - theme::use_theme, - utils::{class_list::class_list, mount_style, Model, OptionalProp}, - Theme, -}; pub use checkbox_group::CheckboxGroup; pub use checkbox_item::CheckboxItem; + +use crate::{components::*, icon::*, theme::use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, Model, OptionalProp}; #[component] pub fn Checkbox( diff --git a/thaw/src/code/mod.rs b/thaw/src/code/mod.rs index 46b6dc4..9d2b445 100644 --- a/thaw/src/code/mod.rs +++ b/thaw/src/code/mod.rs @@ -1,5 +1,5 @@ -use crate::utils::{class_list::class_list, mount_style, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn Code( diff --git a/thaw/src/collapse/collapse_item.rs b/thaw/src/collapse/collapse_item.rs index 1d2f40d..aaa8894 100644 --- a/thaw/src/collapse/collapse_item.rs +++ b/thaw/src/collapse/collapse_item.rs @@ -1,10 +1,7 @@ use super::use_collapse; -use crate::{ - components::CSSTransition, - utils::{class_list::class_list, OptionalProp, StoredMaybeSignal}, - Icon, -}; +use crate::{components::CSSTransition, Icon}; use leptos::*; +use thaw_utils::{class_list, OptionalProp, StoredMaybeSignal}; #[component] pub fn CollapseItem( diff --git a/thaw/src/collapse/mod.rs b/thaw/src/collapse/mod.rs index d15ddee..a99d1ff 100644 --- a/thaw/src/collapse/mod.rs +++ b/thaw/src/collapse/mod.rs @@ -4,13 +4,10 @@ mod theme; pub use collapse_item::CollapseItem; pub use theme::CollapseTheme; -use crate::{ - use_theme, - utils::{class_list::class_list, mount_style, Model, OptionalProp}, - Theme, -}; +use crate::{use_theme, Theme}; use leptos::*; use std::collections::HashSet; +use thaw_utils::{class_list, mount_style, Model, OptionalProp}; #[component] pub fn Collapse( diff --git a/thaw/src/color_picker/mod.rs b/thaw/src/color_picker/mod.rs index bde1646..2bae56f 100644 --- a/thaw/src/color_picker/mod.rs +++ b/thaw/src/color_picker/mod.rs @@ -6,13 +6,12 @@ pub use theme::ColorPickerTheme; use crate::{ components::{Binder, CSSTransition, Follower, FollowerPlacement}, - use_theme, - utils::{class_list::class_list, mount_style, Model, OptionalProp}, - Theme, + use_theme, Theme, }; use leptos::leptos_dom::helpers::WindowListenerHandle; use leptos::*; use palette::{Hsv, IntoColor, Srgb}; +use thaw_utils::{class_list, mount_style, Model, OptionalProp}; #[component] pub fn ColorPicker( @@ -153,14 +152,20 @@ pub fn ColorPicker(
diff --git a/thaw/src/components/binder/mod.rs b/thaw/src/components/binder/mod.rs index b73ff20..26f7b0d 100644 --- a/thaw/src/components/binder/mod.rs +++ b/thaw/src/components/binder/mod.rs @@ -1,17 +1,15 @@ mod get_placement_style; -use crate::{ - components::Teleport, - utils::{add_event_listener, EventListenerHandle}, - utils::{mount_style, with_hydration_off}, -}; pub use get_placement_style::FollowerPlacement; + +use crate::components::Teleport; use get_placement_style::{get_follower_placement_offset, FollowerPlacementOffset}; use leptos::{ html::{AnyElement, ElementDescriptor, ToHtmlElement}, leptos_dom::helpers::WindowListenerHandle, *, }; +use thaw_utils::{add_event_listener, mount_style, with_hydration_off, EventListenerHandle}; #[slot] pub struct Follower { diff --git a/thaw/src/components/css_transition/mod.rs b/thaw/src/components/css_transition/mod.rs index 437021c..4ebda19 100644 --- a/thaw/src/components/css_transition/mod.rs +++ b/thaw/src/components/css_transition/mod.rs @@ -1,6 +1,6 @@ -use crate::utils::{add_event_listener, EventListenerHandle}; use leptos::{html::ElementDescriptor, *}; use std::{ops::Deref, time::Duration}; +use thaw_utils::{add_event_listener, EventListenerHandle}; /// # CSS Transition /// diff --git a/thaw/src/components/teleport/mod.rs b/thaw/src/components/teleport/mod.rs index cb371f5..698757d 100644 --- a/thaw/src/components/teleport/mod.rs +++ b/thaw/src/components/teleport/mod.rs @@ -11,7 +11,7 @@ pub fn Teleport( cfg_if! { if #[cfg(all(target_arch = "wasm32", any(feature = "csr", feature = "hydrate")))] { use leptos::wasm_bindgen::JsCast; use leptos::leptos_dom::Mountable; - use crate::utils::with_hydration_off; + use thaw_utils::with_hydration_off; let mount = mount.unwrap_or_else(|| { document() diff --git a/thaw/src/components/wave/mod.rs b/thaw/src/components/wave/mod.rs index 0772b3b..b5ee7dc 100644 --- a/thaw/src/components/wave/mod.rs +++ b/thaw/src/components/wave/mod.rs @@ -1,6 +1,6 @@ -use crate::utils::{mount_style, ComponentRef}; use leptos::{leptos_dom::helpers::TimeoutHandle, *}; use std::time::Duration; +use thaw_utils::{mount_style, ComponentRef}; #[derive(Clone)] pub struct WaveRef { diff --git a/thaw/src/date_picker/mod.rs b/thaw/src/date_picker/mod.rs index b140f2d..2ad3ac5 100644 --- a/thaw/src/date_picker/mod.rs +++ b/thaw/src/date_picker/mod.rs @@ -5,12 +5,12 @@ pub use theme::DatePickerTheme; use crate::{ components::{Binder, Follower, FollowerPlacement}, - utils::{mount_style, now_date, ComponentRef, Model, OptionalProp}, Icon, Input, InputSuffix, SignalWatch, }; use chrono::NaiveDate; use leptos::*; use panel::{Panel, PanelRef}; +use thaw_utils::{mount_style, now_date, ComponentRef, Model, OptionalProp}; #[component] pub fn DatePicker( diff --git a/thaw/src/date_picker/panel/date_panel.rs b/thaw/src/date_picker/panel/date_panel.rs index c1ccd3b..55a1524 100644 --- a/thaw/src/date_picker/panel/date_panel.rs +++ b/thaw/src/date_picker/panel/date_panel.rs @@ -1,8 +1,9 @@ use super::PanelVariant; -use crate::{utils::now_date, Button, ButtonSize, ButtonVariant, CalendarItemDate}; +use crate::{Button, ButtonSize, ButtonVariant, CalendarItemDate}; use chrono::{Datelike, Days, Month, Months, NaiveDate}; use leptos::*; use std::ops::Deref; +use thaw_utils::now_date; #[component] pub fn DatePanel( diff --git a/thaw/src/date_picker/panel/mod.rs b/thaw/src/date_picker/panel/mod.rs index f5a6ac7..1e67d1d 100644 --- a/thaw/src/date_picker/panel/mod.rs +++ b/thaw/src/date_picker/panel/mod.rs @@ -2,16 +2,12 @@ mod date_panel; mod month_panel; mod year_panel; -use crate::{ - components::CSSTransition, - use_theme, - utils::{now_date, ComponentRef}, - Theme, -}; +use crate::{components::CSSTransition, use_theme, Theme}; use chrono::NaiveDate; use date_panel::DatePanel; use leptos::*; use month_panel::MonthPanel; +use thaw_utils::{now_date, ComponentRef}; use year_panel::YearPanel; #[component] diff --git a/thaw/src/divider/mod.rs b/thaw/src/divider/mod.rs index b433a28..a3793ca 100644 --- a/thaw/src/divider/mod.rs +++ b/thaw/src/divider/mod.rs @@ -1,5 +1,5 @@ -use crate::utils::{class_list::class_list, mount_style, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn Divider(#[prop(optional, into)] class: OptionalProp>) -> impl IntoView { diff --git a/thaw/src/drawer/mod.rs b/thaw/src/drawer/mod.rs index 01e5abc..5168953 100644 --- a/thaw/src/drawer/mod.rs +++ b/thaw/src/drawer/mod.rs @@ -1,9 +1,9 @@ use crate::{ components::{CSSTransition, Teleport}, - utils::{class_list::class_list, mount_style, use_lock_html_scroll, Model, OptionalProp}, Card, }; use leptos::*; +use thaw_utils::{class_list, mount_style, use_lock_html_scroll, Model, OptionalProp}; #[component] pub fn Drawer( diff --git a/thaw/src/grid/grid_item.rs b/thaw/src/grid/grid_item.rs index 02da0a7..d306f25 100644 --- a/thaw/src/grid/grid_item.rs +++ b/thaw/src/grid/grid_item.rs @@ -1,6 +1,6 @@ use super::use_grid; -use crate::utils::{class_list::class_list, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, OptionalProp}; #[component] pub fn GridItem( diff --git a/thaw/src/grid/mod.rs b/thaw/src/grid/mod.rs index 48eec8e..a85b8f9 100644 --- a/thaw/src/grid/mod.rs +++ b/thaw/src/grid/mod.rs @@ -1,8 +1,8 @@ mod grid_item; -use crate::utils::{class_list::class_list, OptionalProp}; pub use grid_item::*; use leptos::*; +use thaw_utils::{class_list, OptionalProp}; #[component] pub fn Grid( diff --git a/thaw/src/image/mod.rs b/thaw/src/image/mod.rs index 5a333a3..46eaa75 100644 --- a/thaw/src/image/mod.rs +++ b/thaw/src/image/mod.rs @@ -1,5 +1,5 @@ -use crate::utils::OptionalProp; use leptos::*; +use thaw_utils::OptionalProp; #[component] pub fn Image( diff --git a/thaw/src/input/mod.rs b/thaw/src/input/mod.rs index 800b2ef..5ab5a4f 100644 --- a/thaw/src/input/mod.rs +++ b/thaw/src/input/mod.rs @@ -4,11 +4,9 @@ mod theme; pub use text_area::{TextArea, TextAreaRef}; pub use theme::InputTheme; -use crate::{ - theme::{use_theme, Theme}, - utils::{class_list::class_list, mount_style, ComponentRef, Model, OptionalProp}, -}; +use crate::theme::{use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, ComponentRef, Model, OptionalProp}; #[derive(Default, Clone)] pub enum InputVariant { diff --git a/thaw/src/input/text_area.rs b/thaw/src/input/text_area.rs index fb204c8..2b40111 100644 --- a/thaw/src/input/text_area.rs +++ b/thaw/src/input/text_area.rs @@ -1,8 +1,6 @@ -use crate::{ - theme::{use_theme, Theme}, - utils::{class_list::class_list, mount_style, ComponentRef, Model, OptionalProp}, -}; +use crate::theme::{use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, ComponentRef, Model, OptionalProp}; #[component] pub fn TextArea( diff --git a/thaw/src/input_number/mod.rs b/thaw/src/input_number/mod.rs index 8055b70..fb4fe73 100644 --- a/thaw/src/input_number/mod.rs +++ b/thaw/src/input_number/mod.rs @@ -1,8 +1,8 @@ -use crate::utils::{Model, OptionalProp, StoredMaybeSignal}; use crate::{Button, ButtonVariant, ComponentRef, Icon, Input, InputRef, InputSuffix}; use leptos::*; use std::ops::{Add, Sub}; use std::str::FromStr; +use thaw_utils::{Model, OptionalProp, StoredMaybeSignal}; #[component] pub fn InputNumber( diff --git a/thaw/src/layout/layout_header.rs b/thaw/src/layout/layout_header.rs index b989afe..20eca5d 100644 --- a/thaw/src/layout/layout_header.rs +++ b/thaw/src/layout/layout_header.rs @@ -1,5 +1,5 @@ -use crate::utils::{class_list::class_list, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, OptionalProp}; #[component] pub fn LayoutHeader( diff --git a/thaw/src/layout/layout_sider.rs b/thaw/src/layout/layout_sider.rs index 5c92aa4..f705102 100644 --- a/thaw/src/layout/layout_sider.rs +++ b/thaw/src/layout/layout_sider.rs @@ -1,5 +1,5 @@ -use crate::utils::{class_list::class_list, mount_style, OptionalProp}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn LayoutSider( diff --git a/thaw/src/layout/mod.rs b/thaw/src/layout/mod.rs index b53c3f4..3e65154 100644 --- a/thaw/src/layout/mod.rs +++ b/thaw/src/layout/mod.rs @@ -1,10 +1,11 @@ mod layout_header; mod layout_sider; -use crate::utils::{class_list::class_list, mount_style, OptionalProp}; pub use layout_header::*; pub use layout_sider::*; + use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[derive(Default, PartialEq)] pub enum LayoutPosition { diff --git a/thaw/src/lib.rs b/thaw/src/lib.rs index 8b98209..e166078 100644 --- a/thaw/src/lib.rs +++ b/thaw/src/lib.rs @@ -42,7 +42,6 @@ mod theme; mod time_picker; mod typography; mod upload; -mod utils; pub use alert::*; pub use auto_complete::*; @@ -82,8 +81,8 @@ pub use switch::*; pub use table::*; pub use tabs::*; pub use tag::*; +pub use thaw_utils::{create_component_ref, ComponentRef, SignalWatch}; pub use theme::*; pub use time_picker::*; pub use typography::*; pub use upload::*; -pub use utils::{create_component_ref, ComponentRef, SignalWatch}; diff --git a/thaw/src/loading_bar/loading_bar_provider.rs b/thaw/src/loading_bar/loading_bar_provider.rs index 6af19b3..e7d8bce 100644 --- a/thaw/src/loading_bar/loading_bar_provider.rs +++ b/thaw/src/loading_bar/loading_bar_provider.rs @@ -1,6 +1,7 @@ use super::{LoadingBar, LoadingBarRef}; -use crate::{components::Teleport, utils::ComponentRef}; +use crate::components::Teleport; use leptos::*; +use thaw_utils::ComponentRef; #[component] pub fn LoadingBarProvider(children: Children) -> impl IntoView { diff --git a/thaw/src/loading_bar/mod.rs b/thaw/src/loading_bar/mod.rs index 06693bb..3374185 100644 --- a/thaw/src/loading_bar/mod.rs +++ b/thaw/src/loading_bar/mod.rs @@ -1,9 +1,11 @@ mod loading_bar_provider; -use crate::{use_theme, utils::mount_style, utils::ComponentRef, Theme}; -use leptos::*; pub use loading_bar_provider::{use_loading_bar, LoadingBarProvider}; +use crate::{use_theme, Theme}; +use leptos::*; +use thaw_utils::{mount_style, ComponentRef}; + #[derive(Clone)] pub(crate) struct LoadingBarRef { start: Callback<()>, diff --git a/thaw/src/menu/menu_group.rs b/thaw/src/menu/menu_group.rs index c6f8f23..ab54667 100644 --- a/thaw/src/menu/menu_group.rs +++ b/thaw/src/menu/menu_group.rs @@ -1,9 +1,6 @@ -use crate::{ - theme::use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; +use crate::{theme::use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn MenuGroup( diff --git a/thaw/src/menu/menu_item.rs b/thaw/src/menu/menu_item.rs index ab7077d..f72fe16 100644 --- a/thaw/src/menu/menu_item.rs +++ b/thaw/src/menu/menu_item.rs @@ -1,10 +1,7 @@ use super::use_menu; -use crate::{ - theme::use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; +use crate::{theme::use_theme, Theme}; use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; #[component] pub fn MenuItem( diff --git a/thaw/src/menu/mod.rs b/thaw/src/menu/mod.rs index 54afc02..08598dc 100644 --- a/thaw/src/menu/mod.rs +++ b/thaw/src/menu/mod.rs @@ -2,12 +2,13 @@ mod menu_group; mod menu_item; mod theme; -use crate::utils::{class_list::class_list, Model, OptionalProp}; -use leptos::*; pub use menu_group::MenuGroup; pub use menu_item::*; pub use theme::MenuTheme; +use leptos::*; +use thaw_utils::{class_list, Model, OptionalProp}; + #[component] pub fn Menu( #[prop(optional, into)] value: Model, diff --git a/thaw/src/message/message_provider.rs b/thaw/src/message/message_provider.rs index 1b364e1..fde2f8f 100644 --- a/thaw/src/message/message_provider.rs +++ b/thaw/src/message/message_provider.rs @@ -1,10 +1,8 @@ use super::{message_environment::MessageEnvironment, MessageVariant}; -use crate::{ - components::Teleport, - utils::{class_list::class_list, mount_style}, -}; +use crate::components::Teleport; use leptos::*; use std::time::Duration; +use thaw_utils::{class_list, mount_style}; use uuid::Uuid; #[derive(Default, Clone)] diff --git a/thaw/src/message/mod.rs b/thaw/src/message/mod.rs index 06c5a80..8c45749 100644 --- a/thaw/src/message/mod.rs +++ b/thaw/src/message/mod.rs @@ -2,14 +2,15 @@ mod message_environment; mod message_provider; mod theme; +pub use message_provider::*; +pub use theme::MessageTheme; + use crate::{ components::{If, Then}, theme::use_theme, Icon, Theme, }; use leptos::*; -pub use message_provider::*; -pub use theme::MessageTheme; use uuid::Uuid; #[derive(Default, Clone)] diff --git a/thaw/src/mobile/nav_bar/mod.rs b/thaw/src/mobile/nav_bar/mod.rs index a09ebdf..d7e81cf 100644 --- a/thaw/src/mobile/nav_bar/mod.rs +++ b/thaw/src/mobile/nav_bar/mod.rs @@ -1,15 +1,11 @@ mod theme; -use crate::{ - components::*, - icon::*, - use_theme, - utils::{class_list::class_list, mount_style, OptionalProp}, - Theme, -}; -use leptos::*; pub use theme::NavBarTheme; +use crate::{components::*, icon::*, use_theme, Theme}; +use leptos::*; +use thaw_utils::{class_list, mount_style, OptionalProp}; + #[slot] pub struct NavBarLeft { #[prop(optional, into)] diff --git a/thaw/src/mobile/tabbar/mod.rs b/thaw/src/mobile/tabbar/mod.rs index 1ce6ad7..d4e7286 100644 --- a/thaw/src/mobile/tabbar/mod.rs +++ b/thaw/src/mobile/tabbar/mod.rs @@ -1,15 +1,13 @@ mod tabbar_item; mod theme; -use crate::{ - use_theme, - utils::{mount_style, Model}, - Theme, -}; -use leptos::*; pub use tabbar_item::*; pub use theme::TabbarTheme; +use crate::{use_theme, Theme}; +use leptos::*; +use thaw_utils::{mount_style, Model}; + #[component] pub fn Tabbar(#[prop(optional, into)] value: Model, children: Children) -> impl IntoView { mount_style("tabbar", include_str!("./tabbar.css")); diff --git a/thaw/src/mobile/tabbar/tabbar_item.rs b/thaw/src/mobile/tabbar/tabbar_item.rs index b9c97a2..362f196 100644 --- a/thaw/src/mobile/tabbar/tabbar_item.rs +++ b/thaw/src/mobile/tabbar/tabbar_item.rs @@ -1,8 +1,8 @@ use super::use_tabbar; use crate::components::*; -use crate::utils::StoredMaybeSignal; -use crate::{icon::Icon, theme::use_theme, utils::mount_style, Theme}; +use crate::{icon::Icon, theme::use_theme, Theme}; use leptos::*; +use thaw_utils::{mount_style, StoredMaybeSignal}; #[component] pub fn TabbarItem( diff --git a/thaw/src/mobile/toast/mod.rs b/thaw/src/mobile/toast/mod.rs index e7ebfec..2da9d7f 100644 --- a/thaw/src/mobile/toast/mod.rs +++ b/thaw/src/mobile/toast/mod.rs @@ -1,6 +1,6 @@ -use crate::utils::mount_style; use cfg_if::cfg_if; use std::time::Duration; +use thaw_utils::mount_style; pub struct ToastOptions { pub message: String, diff --git a/thaw/src/modal/mod.rs b/thaw/src/modal/mod.rs index 837e38b..fa60fea 100644 --- a/thaw/src/modal/mod.rs +++ b/thaw/src/modal/mod.rs @@ -1,9 +1,9 @@ use crate::{ components::{CSSTransition, OptionComp, Teleport}, - utils::{mount_style, use_click_position, Model}, Card, CardFooter, CardHeader, CardHeaderExtra, Icon, }; use leptos::*; +use thaw_utils::{mount_style, use_click_position, Model}; #[slot] pub struct ModalFooter { @@ -82,7 +82,11 @@ pub fn Modal( ref=mask_ref >
-
+
-