Skip to content

Commit 54f3b76

Browse files
authored
0.2.0 | lots of updates
* Add extra classes props for Hero component sections. * Add navburger_classes to the Navbar component. * Added the `help_has_error` bool to the `Field` component. * Add `disabled` prop to `Select` & `MultiSelect` components. * Replace `FieldHorizontal` component with `horizontal` prop on `Field`. * Added the `Block` component. * Update components to accept Classes instead of String
1 parent 61d0133 commit 54f3b76

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+271
-378
lines changed

CHANGELOG.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,17 @@ This changelog follows the patterns described here: https://keepachangelog.com/e
44

55
## Unreleased
66

7-
## 0.2.0
8-
- Added support for yew `0.18.x`
7+
## 0.2.0
8+
### added
9+
- Added support for yew `0.18.x`.
10+
- Added `head_classes`, `body_classes` & `foot_classes` optional properties to the `Hero` component. These extra classes will be added to the stanard classes assigned to each of the corresponding hero component sections.
11+
- Added `navburger_classes` prop to the `Navbar` component. These extra classes will be added to the standard classes for the `navbar-burger` element.
12+
- Added `help_has_error` prop to the `Field` component. This `bool` prop will add the `is-danger` class to the field's help text when `true`.
13+
- Added `horizontal` prop to the `Field` component. This replaces the `FieldHorizontal` component.
14+
- Added `disabled` prop to the `Select` & `MultiSelect` components.
15+
16+
### removed
17+
- The `FieldHorizontal` component has been removed in favor of the `horizontal` prop of the `Field` component.
918

1019
## 0.1.6
1120
### changed

src/columns/mod.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub struct ColumnsProps {
66
#[prop_or_default]
77
pub children: Children,
88
#[prop_or_default]
9-
pub classes: Option<String>,
9+
pub classes: Option<Classes>,
1010
/// Align child columns vertically.
1111
#[prop_or_default]
1212
pub vcentered: bool,
@@ -43,9 +43,7 @@ impl Component for Columns {
4343

4444
fn view(&self) -> Html {
4545
let mut classes = Classes::from("columns");
46-
if let Some(extra) = &self.props.classes {
47-
classes.push(extra);
48-
}
46+
classes.push(&self.props.classes);
4947
if self.props.vcentered {
5048
classes.push("is-vcentered");
5149
}
@@ -71,7 +69,7 @@ pub struct ColumnProps {
7169
#[prop_or_default]
7270
pub children: Children,
7371
#[prop_or_default]
74-
pub classes: Option<String>,
72+
pub classes: Option<Classes>,
7573
}
7674

7775
/// A flexbox-based responsive column.
@@ -103,9 +101,7 @@ impl Component for Column {
103101

104102
fn view(&self) -> Html {
105103
let mut classes = Classes::from("column");
106-
if let Some(extra) = &self.props.classes {
107-
classes.push(extra);
108-
}
104+
classes.push(&self.props.classes);
109105
html! {
110106
<div class=classes>
111107
{self.props.children.clone()}

src/components/breadcrumb.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub struct BreadcrumbProps {
1010
#[prop_or_default]
1111
pub children: Children,
1212
#[prop_or_default]
13-
pub classes: Option<String>,
13+
pub classes: Option<Classes>,
1414
/// The size of this component.
1515
#[prop_or_default]
1616
pub size: Option<BreadcrumbSize>,
@@ -47,9 +47,7 @@ impl Component for Breadcrumb {
4747

4848
fn view(&self) -> Html {
4949
let mut classes = Classes::from("breadcrumb");
50-
if let Some(extra) = &self.props.classes {
51-
classes.push(extra);
52-
}
50+
classes.push(&self.props.classes);
5351
if let Some(size) = &self.props.size {
5452
classes.push(&size.to_string());
5553
}

src/components/card.rs

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub struct CardProps {
66
#[prop_or_default]
77
pub children: Children,
88
#[prop_or_default]
9-
pub classes: Option<String>,
9+
pub classes: Option<Classes>,
1010
}
1111

1212
/// An all-around flexible and composable component; this is the card container.
@@ -34,9 +34,7 @@ impl Component for Card {
3434

3535
fn view(&self) -> Html {
3636
let mut classes = Classes::from("card");
37-
if let Some(extra) = &self.props.classes {
38-
classes.push(extra);
39-
}
37+
classes.push(&self.props.classes);
4038
html! {
4139
<div class=classes>
4240
{self.props.children.clone()}
@@ -53,7 +51,7 @@ pub struct CardHeaderProps {
5351
#[prop_or_default]
5452
pub children: Children,
5553
#[prop_or_default]
56-
pub classes: Option<String>,
54+
pub classes: Option<Classes>,
5755
}
5856

5957
/// A container for card header content; rendered as a horizontal bar with a shadow.
@@ -81,9 +79,7 @@ impl Component for CardHeader {
8179

8280
fn view(&self) -> Html {
8381
let mut classes = Classes::from("card-header");
84-
if let Some(extra) = &self.props.classes {
85-
classes.push(extra);
86-
}
82+
classes.push(&self.props.classes);
8783
html! {
8884
<header class=classes>
8985
{self.props.children.clone()}
@@ -100,7 +96,7 @@ pub struct CardImageProps {
10096
#[prop_or_default]
10197
pub children: Children,
10298
#[prop_or_default]
103-
pub classes: Option<String>,
99+
pub classes: Option<Classes>,
104100
}
105101

106102
/// A fullwidth container for a responsive image.
@@ -128,9 +124,7 @@ impl Component for CardImage {
128124

129125
fn view(&self) -> Html {
130126
let mut classes = Classes::from("card-image");
131-
if let Some(extra) = &self.props.classes {
132-
classes.push(extra);
133-
}
127+
classes.push(&self.props.classes);
134128
html! {
135129
<div class=classes>
136130
{self.props.children.clone()}
@@ -147,7 +141,7 @@ pub struct CardContentProps {
147141
#[prop_or_default]
148142
pub children: Children,
149143
#[prop_or_default]
150-
pub classes: Option<String>,
144+
pub classes: Option<Classes>,
151145
}
152146

153147
/// A container for any other content as the body of the card.
@@ -175,9 +169,7 @@ impl Component for CardContent {
175169

176170
fn view(&self) -> Html {
177171
let mut classes = Classes::from("card-content");
178-
if let Some(extra) = &self.props.classes {
179-
classes.push(extra);
180-
}
172+
classes.push(&self.props.classes);
181173
html! {
182174
<div class=classes>
183175
{self.props.children.clone()}
@@ -194,7 +186,7 @@ pub struct CardFooterProps {
194186
#[prop_or_default]
195187
pub children: Children,
196188
#[prop_or_default]
197-
pub classes: Option<String>,
189+
pub classes: Option<Classes>,
198190
}
199191

200192
/// A container for card footer content; rendered as a horizontal list of controls.
@@ -222,9 +214,7 @@ impl Component for CardFooter {
222214

223215
fn view(&self) -> Html {
224216
let mut classes = Classes::from("card-footer");
225-
if let Some(extra) = &self.props.classes {
226-
classes.push(extra);
227-
}
217+
classes.push(&self.props.classes);
228218
html! {
229219
<footer class=classes>
230220
{self.props.children.clone()}

src/components/dropdown.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ pub struct DropdownProps {
1111
#[prop_or_default]
1212
pub children: Children,
1313
#[prop_or_default]
14-
pub classes: Option<String>,
14+
pub classes: Option<Classes>,
1515
/// Make this dropdown triggerable based on hover.
1616
#[prop_or_default]
1717
pub hoverable: bool,
1818
/// Any additional classes to use for the trigger button.
1919
#[prop_or_default]
20-
pub button_classes: Option<String>,
20+
pub button_classes: Option<Classes>,
2121
/// The content of the trigger button.
2222
#[prop_or_default]
2323
pub button_html: Html,
@@ -43,11 +43,7 @@ impl Component for Dropdown {
4343
type Properties = DropdownProps;
4444

4545
fn create(props: Self::Properties, link: ComponentLink<Self>) -> Self {
46-
Self {
47-
link,
48-
props,
49-
is_menu_active: false,
50-
}
46+
Self { link, props, is_menu_active: false }
5147
}
5248

5349
fn update(&mut self, msg: Self::Message) -> ShouldRender {
@@ -67,9 +63,7 @@ impl Component for Dropdown {
6763

6864
fn view(&self) -> Html {
6965
let mut classes = Classes::from("dropdown");
70-
if let Some(extra) = &self.props.classes {
71-
classes.push(extra);
72-
}
66+
classes.push(&self.props.classes);
7367
let opencb = if self.props.hoverable {
7468
classes.push("is-hoverable");
7569
Callback::noop()

src/components/menu.rs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub struct MenuProps {
66
#[prop_or_default]
77
pub children: Children,
88
#[prop_or_default]
9-
pub classes: Option<String>,
9+
pub classes: Option<Classes>,
1010
}
1111

1212
/// A simple menu, for any type of vertical navigation.
@@ -34,9 +34,7 @@ impl Component for Menu {
3434

3535
fn view(&self) -> Html {
3636
let mut classes = Classes::from("menu");
37-
if let Some(extra) = &self.props.classes {
38-
classes.push(extra);
39-
}
37+
classes.push(&self.props.classes);
4038
html! {
4139
<aside class=classes>
4240
{self.props.children.clone()}
@@ -54,7 +52,7 @@ pub struct MenuListProps {
5452
#[prop_or_default]
5553
pub children: Children,
5654
#[prop_or_default]
57-
pub classes: Option<String>,
55+
pub classes: Option<Classes>,
5856
}
5957

6058
/// A container for menu list `li` elements.
@@ -82,9 +80,7 @@ impl Component for MenuList {
8280

8381
fn view(&self) -> Html {
8482
let mut classes = Classes::from("menu-list");
85-
if let Some(extra) = &self.props.classes {
86-
classes.push(extra);
87-
}
83+
classes.push(&self.props.classes);
8884
html! {
8985
<ul class=classes>
9086
{self.props.children.clone()}
@@ -99,7 +95,7 @@ impl Component for MenuList {
9995
#[derive(Clone, Debug, Properties, PartialEq)]
10096
pub struct MenuLabelProps {
10197
#[prop_or_default]
102-
pub classes: Option<String>,
98+
pub classes: Option<Classes>,
10399
/// The text of the label.
104100
#[prop_or_default]
105101
pub text: String,
@@ -130,9 +126,7 @@ impl Component for MenuLabel {
130126

131127
fn view(&self) -> Html {
132128
let mut classes = Classes::from("menu-label");
133-
if let Some(extra) = &self.props.classes {
134-
classes.push(extra);
135-
}
129+
classes.push(&self.props.classes);
136130
html! {
137131
<p class=classes>
138132
{self.props.text.clone()}

src/components/message.rs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub struct MessageProps {
66
#[prop_or_default]
77
pub children: Children,
88
#[prop_or_default]
9-
pub classes: Option<String>,
9+
pub classes: Option<Classes>,
1010
}
1111

1212
/// Colored message blocks, to emphasize part of your page.
@@ -34,9 +34,7 @@ impl Component for Message {
3434

3535
fn view(&self) -> Html {
3636
let mut classes = Classes::from("message");
37-
if let Some(extra) = &self.props.classes {
38-
classes.push(extra);
39-
}
37+
classes.push(&self.props.classes);
4038
html! {
4139
<article class=classes>
4240
{self.props.children.clone()}
@@ -53,7 +51,7 @@ pub struct MessageHeaderProps {
5351
#[prop_or_default]
5452
pub children: Children,
5553
#[prop_or_default]
56-
pub classes: Option<String>,
54+
pub classes: Option<Classes>,
5755
}
5856

5957
/// An optional message header that can hold a title and a delete element.
@@ -81,9 +79,7 @@ impl Component for MessageHeader {
8179

8280
fn view(&self) -> Html {
8381
let mut classes = Classes::from("message-header");
84-
if let Some(extra) = &self.props.classes {
85-
classes.push(extra);
86-
}
82+
classes.push(&self.props.classes);
8783
html! {
8884
<div class=classes>
8985
{self.props.children.clone()}
@@ -100,7 +96,7 @@ pub struct MessageBodyProps {
10096
#[prop_or_default]
10197
pub children: Children,
10298
#[prop_or_default]
103-
pub classes: Option<String>,
99+
pub classes: Option<Classes>,
104100
}
105101

106102
/// A container for the body of a message.
@@ -128,9 +124,7 @@ impl Component for MessageBody {
128124

129125
fn view(&self) -> Html {
130126
let mut classes = Classes::from("message-body");
131-
if let Some(extra) = &self.props.classes {
132-
classes.push(extra);
133-
}
127+
classes.push(&self.props.classes);
134128
html! {
135129
<div class=classes>
136130
{self.props.children.clone()}

0 commit comments

Comments
 (0)