Commit c9e8f6d
Template
Changed files (10)
modifiedexamples/main-component/Cargo.lockmodifiedexamples/main-component/package.jsonmodifiedexamples/web/run.shaddedkaja-web-template/Cargo.tomladdedkaja-web-template/cargo-generate.tomladdedkaja-web-template/index.htmladdedkaja-web-template/run.shaddedkaja-web-template/src/lib.srcmodifiedsrc/lib.rsmodifiedsrc/prelude.rs
Diff
@@ -518,7 +518,7 @@ dependencies = [ [[package]] name = "kaja-web"-version = "1.0.3"+version = "1.0.5" dependencies = [ "gloo", "gloo-console",@@ -1,6 +1,6 @@ { "name": "main-component",- "version": "1.0.0",+ "version": "1.0.1", "type": "module", "files": [ "pkg"old mode 100644new mode 100755new file mode 100644@@ -0,0 +1,12 @@+[package]+name = "{{project-name}}"+version = "0.1.0"+edition = "2024"+description = "{{description}}"++[lib]+crate-type = ["cdylib"]++[dependencies]+kaja-web = "1.0"+wasm-bindgen = "0.2"new file mode 100644@@ -0,0 +1,7 @@+[template]+cargo_generate_version = ">=0.18.0"++[placeholders.description]+type = "string"+prompt = "Project description"+default = "A Kaja Web application"new file mode 100644@@ -0,0 +1,14 @@+<!DOCTYPE html>+<html lang="en">+<head>+ <meta charset="UTF-8">+ <meta name="viewport" content="width=device-width, initial-scale=1">+ <title>{{project-name}}</title>+</head>+<body>+ <script type="module">+ import init from "./pkg/{{crate_name}}.js";+ await init();+ </script>+</body>+</html>new file mode 100755@@ -0,0 +1,5 @@+#!/bin/sh+set -e++wasm-pack build --target web --dev --out-dir pkg+python3 -m http.server 8000new file mode 100644@@ -0,0 +1,7 @@+use wasm_bindgen::prelude::*;+use kaja_web::prelude::*;++#[wasm_bindgen(start)]+pub fn main() {+ // Your application starts here.+}@@ -329,6 +329,48 @@ pub fn get_callback(name: &str) -> Option<js_sys::Function> { None } +/// Generated component handle API. See kaja-web-component.+pub trait ComponentHandle {+ type State;++ fn set_attribute<T>(&self, name: &str, value: T) -> Result<()>+ where+ T: ToString;++ fn set_attribute_string(&self, name: &str, value: &str) -> Result<()>;++ fn get_attribute_string(&self, name: &str) -> Option<String>;++ fn get_attribute<T>(&self, name: &str) -> Option<T>+ where+ T: std::str::FromStr;++ fn get_attributes(&self) -> std::rc::Rc<std::cell::RefCell<Self::State>>;++ fn borrow(&self) -> std::cell::Ref<'_, Self::State>;++ fn borrow_mut(&self) -> std::cell::RefMut<'_, Self::State>;++ fn with_mut<F>(&self, f: F)+ where+ F: FnOnce(&mut Self::State);++ fn with<F>(&self, f: F)+ where+ F: FnOnce(&Self::State);++ fn get_id(&self) -> String;+}++/// HTML Component. See kaja-web-component.+pub trait Component: Default + ComponentHandle {+ fn connected(&self) {}+ fn disconnected(&self) {}+ fn attribute_changed(&self, name: &str, _old_value: &str, _new_value: &str) {+ log!("Attribute changed but no update handler for ", name);+ }+}+ /// Get HTML element by ID pub fn get_element_by_id(id: &str) -> Option<HtmlElement> { let window = web_sys::window().ok_or(Error).ok()?;@@ -1,6 +1,6 @@ pub use crate::{- CallbackRegistration, Error, InitComponentFn, InitFn, Result, SharedComponent,- UpdateComponentFn, add_css_class, get_callback, get_cookie_value, get_element,+ CallbackRegistration, Component, ComponentHandle, Error, InitComponentFn, InitFn, Result,+ SharedComponent, UpdateComponentFn, add_css_class, get_callback, get_cookie_value, get_element, get_element_by_id, get_elements, get_value, init_callbacks, inner_html, inner_text, remove_css_class, try_get_value, try_inner_html, try_inner_text, };