mirror of
https://github.com/adoyle0/thaw.git
synced 2025-01-22 22:09:22 -05:00
parent
dfd5ddd328
commit
282fcd038c
3 changed files with 44 additions and 1 deletions
|
@ -117,6 +117,35 @@ view! {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Required
|
||||||
|
|
||||||
|
```rust demo
|
||||||
|
view! {
|
||||||
|
<form>
|
||||||
|
<FieldContextProvider>
|
||||||
|
<Field label="Username" name="username" required=true>
|
||||||
|
<Input rules=vec![InputRule::required(true.into())]/>
|
||||||
|
</Field>
|
||||||
|
<div style="margin-top: 8px">
|
||||||
|
<Button
|
||||||
|
button_type=ButtonType::Submit
|
||||||
|
on_click={
|
||||||
|
let field_context = FieldContextInjection::expect_context();
|
||||||
|
move |e: ev::MouseEvent| {
|
||||||
|
if !field_context.validate() {
|
||||||
|
e.prevent_default();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
"Submit"
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</FieldContextProvider>
|
||||||
|
</form>
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Field Props
|
### Field Props
|
||||||
|
|
||||||
| Name | Type | Default | Desciption |
|
| Name | Type | Default | Desciption |
|
||||||
|
@ -125,6 +154,7 @@ view! {
|
||||||
| label | `MaybeProp<String>` | `Default::default()` | The label associated with the field. |
|
| label | `MaybeProp<String>` | `Default::default()` | The label associated with the field. |
|
||||||
| name | `MaybeProp<String>` | `Default::default()` | A string specifying a name for the input control. This name is submitted along with the control's value when the form data is submitted. |
|
| name | `MaybeProp<String>` | `Default::default()` | A string specifying a name for the input control. This name is submitted along with the control's value when the form data is submitted. |
|
||||||
| orientation | `MaybeSignal<FieldOrientation>` | `FieldOrientation::Vertical` | The orientation of the label relative to the field component. |
|
| orientation | `MaybeSignal<FieldOrientation>` | `FieldOrientation::Vertical` | The orientation of the label relative to the field component. |
|
||||||
|
| reqired | `MaybeSignal<bool>` | `false` | If set to true this field will be marked as required. |
|
||||||
| children | `Children` | | |
|
| children | `Children` | | |
|
||||||
|
|
||||||
### FieldContextProvider Props
|
### FieldContextProvider Props
|
||||||
|
|
|
@ -12,6 +12,11 @@
|
||||||
color: var(--colorNeutralForeground1);
|
color: var(--colorNeutralForeground1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.thaw-field__label--required {
|
||||||
|
padding-left: var(--spacingHorizontalXS);
|
||||||
|
color: var(--colorPaletteRedForeground3);
|
||||||
|
}
|
||||||
|
|
||||||
.thaw-field--horizontal {
|
.thaw-field--horizontal {
|
||||||
grid-template-columns: 33% 1fr;
|
grid-template-columns: 33% 1fr;
|
||||||
grid-template-rows: auto auto auto 1fr;
|
grid-template-rows: auto auto auto 1fr;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use leptos::{context::Provider, either::EitherOf3, prelude::*};
|
use leptos::{context::Provider, either::EitherOf3, prelude::*};
|
||||||
use thaw_components::OptionComp;
|
use thaw_components::{OptionComp, If, Then};
|
||||||
use thaw_utils::{class_list, mount_style};
|
use thaw_utils::{class_list, mount_style};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
@ -16,6 +16,9 @@ pub fn Field(
|
||||||
/// The orientation of the label relative to the field component.
|
/// The orientation of the label relative to the field component.
|
||||||
#[prop(optional, into)]
|
#[prop(optional, into)]
|
||||||
orientation: MaybeSignal<FieldOrientation>,
|
orientation: MaybeSignal<FieldOrientation>,
|
||||||
|
///Is this input field required
|
||||||
|
#[prop(optional, into)]
|
||||||
|
required: MaybeSignal<bool>,
|
||||||
children: Children,
|
children: Children,
|
||||||
) -> impl IntoView {
|
) -> impl IntoView {
|
||||||
mount_style("field", include_str!("./field.css"));
|
mount_style("field", include_str!("./field.css"));
|
||||||
|
@ -46,6 +49,11 @@ pub fn Field(
|
||||||
<OptionComp value=label.get() let:label>
|
<OptionComp value=label.get() let:label>
|
||||||
<label class="thaw-field__label" for=id.get_value()>
|
<label class="thaw-field__label" for=id.get_value()>
|
||||||
{label}
|
{label}
|
||||||
|
<If cond=required>
|
||||||
|
<Then slot>
|
||||||
|
<span class="thaw-field__label--required">*</span>
|
||||||
|
</Then>
|
||||||
|
</If>
|
||||||
</label>
|
</label>
|
||||||
</OptionComp>
|
</OptionComp>
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue