#![allow(unused_variables)]
#![allow(dead_code)]
use super::set_on_input_handler;
use crate::text_inputs::{
TextFieldType, ValidityState, ValidityTransform,
};
use crate::{to_option, to_option_string};
use gloo::events::EventListener;
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
use web_sys::Node;
use web_sys::ValidityState as NativeValidityState;
use yew::prelude::*;
pub struct TextField {
props: TextFieldProps,
node_ref: NodeRef,
input_listener: Option<EventListener>,
}
#[derive(Properties, Clone)]
pub struct TextFieldProps {
#[prop_or_default]
pub open: bool,
#[prop_or_default]
pub value: String,
#[prop_or(TextFieldType::Text)]
pub field_type: TextFieldType,
#[prop_or_default]
pub label: String,
#[prop_or_default]
pub placeholder: String,
#[prop_or_default]
pub prefix: String,
#[prop_or_default]
pub suffix: String,
#[prop_or_default]
pub icon: String,
#[prop_or_default]
pub icon_trailing: String,
#[prop_or_default]
pub disabled: bool,
#[prop_or_default]
pub char_counter: bool,
#[prop_or_default]
pub outlined: bool,
#[prop_or_default]
pub helper: String,
#[prop_or_default]
pub helper_persistent: bool,
#[prop_or_default]
pub required: bool,
#[prop_or_default]
pub max_length: String,
#[prop_or_default]
pub validation_message: String,
#[prop_or_default]
pub pattern: String,
#[prop_or_default]
pub min: String,
#[prop_or_default]
pub max: String,
#[prop_or_default]
pub size: Option<i64>,
#[prop_or_default]
pub step: Option<i64>,
#[prop_or_default]
pub auto_validate: bool,
#[prop_or_default]
pub validate_on_initial_render: bool,
#[prop_or_default]
pub oninput: Callback<InputData>,
#[prop_or_default]
pub name: String,
}
impl Component for TextField {
type Message = ();
type Properties = TextFieldProps;
fn create(props: Self::Properties, _: ComponentLink<Self>) -> Self {
Self {
props,
node_ref: NodeRef::default(),
input_listener: None,
}
}
fn update(&mut self, _msg: Self::Message) -> ShouldRender {
false
}
fn change(&mut self, props: Self::Properties) -> bool {
self.props = props;
true
}
fn view(&self) -> Html {
html! {
<label class="mdc-text-field mdc-text-field--filled">
<span class="mdc-text-field__ripple"></span>
<span class="mdc-floating-label" id="my-label-id">{ "Hint text" }</span>
<input class="mdc-text-field__input" type="text" aria-labelledby="my-label-id"/>
<span class="mdc-line-ripple"></span>
</label>
}
}
fn rendered(&mut self, first_render: bool) {
}
}
impl TextField {
pub fn validity_transform<F: Fn(String, NativeValidityState) -> ValidityState + 'static>(
func: F,
) -> ValidityTransform {
ValidityTransform::new(func)
}
}