hyle-dioxus-native 0.2.0

Native (non-WASM) Dioxus components for hyle — table, form, and filter UI primitives.
Documentation
use dioxus::prelude::*;
use dioxus_signals::ReadSignal;
use indexmap::IndexMap;

use hyle::{ModelResult, Row, RowItem, Source};
use hyle_dioxus::{
    DioxusMutationOptions, HyleAdapter, HyleSourceState,
    use_dioxus_mutation,
};

pub fn items_to_source(model: &str, items: &[RowItem]) -> Source {
    let rows: Vec<Row> = items.iter().map(|item| item.into_row()).collect();
    let mut source: Source = IndexMap::new();
    source.insert(model.to_owned(), ModelResult::many(rows));
    source
}

pub fn use_static_adapter(source: Source) -> HyleAdapter {
    let source_signal: ReadSignal<HyleSourceState> =
        use_memo(move || HyleSourceState::Ready(source.clone())).into();
    let noop = || {
        use_dioxus_mutation(
            |_| async { Ok::<(), String>(()) },
            DioxusMutationOptions::default(),
        )
    };
    HyleAdapter {
        source: source_signal,
        create: noop(),
        update: noop(),
        delete: noop(),
    }
}