Skip to content
Snippets Groups Projects
Verified Commit d29af9f9 authored by Louis's avatar Louis :fire:
Browse files

Include panel component

parent 8e259e69
No related branches found
No related tags found
No related merge requests found
mod button; mod button;
mod inset_icon; mod inset_icon;
mod panel;
pub use button::{ pub use button::{
button_props, render_button_widget, ButtonWidget, ButtonWidgetProps, ButtonWidgetState, button_props, render_button_widget, ButtonWidget, ButtonWidgetProps, ButtonWidgetState,
}; };
pub use inset_icon::{render_inset_icon_widget, InsetIconProps, InsetIconWidget}; pub use inset_icon::{render_inset_icon_widget, InsetIconProps, InsetIconWidget};
pub use panel::{render_panel_widget, PanelProps, PanelWidget, PanelVariant};
\ No newline at end of file
use bevy::prelude::*;
use kayak_ui::prelude::*;
use crate::parent_widget;
use crate::theme::tokens::THEME_NINEPATCH_PANEL_DEFAULT;
use crate::theme::ThemeProvider;
use crate::{px, value};
#[derive(Default, Copy, Clone, Eq, PartialEq)]
pub enum PanelVariant {
#[default]
Regular,
Simple,
}
#[derive(Component, Default, Clone, PartialEq)]
pub struct PanelProps {
pub background: Option<String>,
pub inner_layout: StyleProp<LayoutType>,
}
impl Widget for PanelProps {}
parent_widget!(PanelProps => PanelWidget);
pub fn render_panel_widget(
In(entity): In<Entity>,
widget_context: Res<KayakWidgetContext>,
mut commands: Commands,
mut query: Query<(&PanelProps, &KChildren, &mut ComputedStyles, &KStyle)>,
theme_provider: ThemeProvider,
) -> bool {
if let Ok((props, children, mut computed, style)) = query.get_mut(entity) {
let parent_id = Some(entity);
let patch = theme_provider
.get_patch(
props
.background
.clone()
.unwrap_or_else(|| String::from(THEME_NINEPATCH_PANEL_DEFAULT)),
)
.unwrap();
*computed = KStyle {
render_command: value(RenderCommand::NinePatch {
handle: patch.handle.clone_weak(),
border: patch.border,
scale: 1.0,
}),
min_height: px(patch.border.bottom + patch.border.top + 8.0),
min_width: px(patch.border.left + patch.border.right + 8.0),
..Default::default()
}
.with_style(style)
.with_style(KStyle {
padding: value(Edge::new(
Units::Pixels(patch.border.top),
Units::Pixels(patch.border.right),
Units::Pixels(patch.border.bottom),
Units::Pixels(patch.border.left),
)),
..Default::default()
})
.into();
let inner_style = match &style.padding {
StyleProp::Unset => KStyle {
layout_type: props.inner_layout.clone(),
..Default::default()
},
pad => KStyle {
layout_type: props.inner_layout.clone(),
padding: pad.clone(),
..Default::default()
},
};
children.process(&widget_context, &mut commands, Some(entity));
}
true
}
...@@ -230,7 +230,7 @@ pub mod context { ...@@ -230,7 +230,7 @@ pub mod context {
pub struct CresthollowBaseComponentsPlugin; pub struct CresthollowBaseComponentsPlugin;
impl KayakUIPlugin for CresthollowBaseComponentsPlugin { impl KayakUIPlugin for CresthollowBaseComponentsPlugin {
fn build(&self, widget_context: &mut KayakRootContext) { fn build(&self, widget_context: &mut KayakRootContext) {
// register_widget!(widget_context, PanelProps, EmptyState, render_panel_widget); register_widget!(widget_context, PanelProps, EmptyState, render_panel_widget);
register_widget!( register_widget!(
widget_context, widget_context,
ButtonWidgetProps, ButtonWidgetProps,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment