From c1a9f84c9e89abc454a2216dc384116d788cfba4 Mon Sep 17 00:00:00 2001 From: luoxiaozero <48741584+luoxiaozero@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:08:06 +0800 Subject: [PATCH] Feat/binder animation (#131) * feat: Popover adds animation * feat: ColorPicker adds animation * feat: AutoComplete adds animation * feat: Select adds animation * feat: DatePicker adds animation * feat: TimePicker adds animation --- thaw/src/auto_complete/auto-complete.css | 28 +++ thaw/src/auto_complete/mod.rs | 123 ++++++------ thaw/src/color_picker/color-picker.css | 24 +++ thaw/src/color_picker/mod.rs | 22 ++- .../components/binder/get_placement_style.rs | 17 ++ thaw/src/components/binder/mod.rs | 41 ++-- thaw/src/date_picker/date-picker.css | 24 +++ thaw/src/date_picker/mod.rs | 1 + thaw/src/date_picker/panel/mod.rs | 43 ++-- thaw/src/popover/mod.rs | 36 ++-- thaw/src/popover/popover.css | 29 +++ thaw/src/select/mod.rs | 63 +++--- thaw/src/select/select.css | 28 +++ thaw/src/time_picker/mod.rs | 187 ++++++++++-------- thaw/src/time_picker/time-picker.css | 24 +++ 15 files changed, 462 insertions(+), 228 deletions(-) diff --git a/thaw/src/auto_complete/auto-complete.css b/thaw/src/auto_complete/auto-complete.css index 4ca4cd6..16bb61c 100644 --- a/thaw/src/auto_complete/auto-complete.css +++ b/thaw/src/auto_complete/auto-complete.css @@ -18,3 +18,31 @@ .thaw-auto-complete__menu-item--selected { background-color: var(--thaw-background-color-hover); } + +.thaw-auto-complete__menu.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity 0.2s cubic-bezier(0.4, 0, 1, 1), + transform 0.2s cubic-bezier(0.4, 0, 1, 1), + background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1), + box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.thaw-auto-complete__menu.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1), + transform 0.2s cubic-bezier(0, 0, 0.2, 1), + background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1), + box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.thaw-auto-complete__menu.fade-in-scale-up-transition-enter-from, +.thaw-auto-complete__menu.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(0.9); +} + +.thaw-auto-complete__menu.fade-in-scale-up-transition-leave-from, +.thaw-auto-complete__menu.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} diff --git a/thaw/src/auto_complete/mod.rs b/thaw/src/auto_complete/mod.rs index 5c85f77..30e308c 100644 --- a/thaw/src/auto_complete/mod.rs +++ b/thaw/src/auto_complete/mod.rs @@ -1,7 +1,7 @@ mod theme; use crate::{ - components::{Binder, Follower, FollowerPlacement, FollowerWidth}, + components::{Binder, CSSTransition, Follower, FollowerPlacement, FollowerWidth}, use_theme, utils::{class_list::class_list, mount_style, Model, OptionalProp, StoredMaybeSignal}, ComponentRef, Input, InputPrefix, InputRef, InputSuffix, Theme, @@ -196,69 +196,76 @@ pub fn AutoComplete( placement=FollowerPlacement::BottomStart width=FollowerWidth::Target > -
+ } diff --git a/thaw/src/color_picker/color-picker.css b/thaw/src/color_picker/color-picker.css index ad01a76..31e4528 100644 --- a/thaw/src/color_picker/color-picker.css +++ b/thaw/src/color_picker/color-picker.css @@ -89,3 +89,27 @@ border: 2px solid white; cursor: pointer; } + +.thaw-color-picker-popover.fade-in-scale-up-transition-leave-active { + transform-origin: inherit; + transition: opacity 0.2s cubic-bezier(0.4, 0, 1, 1), + transform 0.2s cubic-bezier(0.4, 0, 1, 1); +} + +.thaw-color-picker-popover.fade-in-scale-up-transition-enter-active { + transform-origin: inherit; + transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1), + transform 0.2s cubic-bezier(0, 0, 0.2, 1); +} + +.thaw-color-picker-popover.fade-in-scale-up-transition-enter-from, +.thaw-color-picker-popover.fade-in-scale-up-transition-leave-to { + opacity: 0; + transform: scale(0.9); +} + +.thaw-color-picker-popover.fade-in-scale-up-transition-leave-from, +.thaw-color-picker-popover.fade-in-scale-up-transition-enter-to { + opacity: 1; + transform: scale(1); +} diff --git a/thaw/src/color_picker/mod.rs b/thaw/src/color_picker/mod.rs index 3fb09e0..bde1646 100644 --- a/thaw/src/color_picker/mod.rs +++ b/thaw/src/color_picker/mod.rs @@ -5,7 +5,7 @@ pub use color::*; pub use theme::ColorPickerTheme; use crate::{ - components::{Binder, Follower, FollowerPlacement}, + components::{Binder, CSSTransition, Follower, FollowerPlacement}, use_theme, utils::{class_list::class_list, mount_style, Model, OptionalProp}, Theme, @@ -152,15 +152,21 @@ pub fn ColorPicker(