mirror of
				https://github.com/esiur/iui.git
				synced 2025-10-30 18:11:36 +00:00 
			
		
		
		
	Support datetime-local
This commit is contained in:
		| @@ -116,8 +116,6 @@ export default IUI.module( | ||||
|     async navigate(url, data, target, state, dataToQuery = true) { | ||||
|       let q = url.match(/^\/*(.*?)\?(.*)$|^\/*(.*)$/); | ||||
|  | ||||
|       //debugger; | ||||
|  | ||||
|       var path; | ||||
|  | ||||
|       // do we have a query string ? | ||||
| @@ -180,7 +178,7 @@ export default IUI.module( | ||||
|       if (!(target instanceof Target)) target = this; | ||||
|  | ||||
|       if (state == null) { | ||||
|         let id = Math.random().toString(36).substr(2, 10); | ||||
|         let id = Math.random().toString(36).substring(2, 12); | ||||
|         state = { id, url, data, target, stateRoute, viewRoute }; | ||||
|         this._states.set(id, state); | ||||
|         history.pushState( | ||||
| @@ -250,9 +248,11 @@ export default IUI.module( | ||||
|     create() { | ||||
|       // save origin | ||||
|       this.origin = window.location.pathname + window.location.search; | ||||
|       this.base = this.getAttribute("base") || ""; | ||||
|     } | ||||
|  | ||||
|     get base() { | ||||
|       return this.getAttribute("base") || ""; | ||||
|     } | ||||
|     destroy() { | ||||
|       console.log("Destroyed", this); | ||||
|     } | ||||
| @@ -274,7 +274,7 @@ export default IUI.module( | ||||
|       } | ||||
|  | ||||
|       this._emit("created"); | ||||
|       this.navigate(this.origin); | ||||
|       // this.navigate(this.origin); | ||||
|       //console.log("Router created", this); | ||||
|     } | ||||
|  | ||||
|   | ||||
							
								
								
									
										101
									
								
								src/UI/Input.js
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								src/UI/Input.js
									
									
									
									
									
								
							| @@ -1,9 +1,10 @@ | ||||
| import IUIElement from "../Core/IUIElement.js"; | ||||
| import { IUI } from "../Core/IUI.js"; | ||||
|  | ||||
| export default IUI.module(class Input extends IUIElement { | ||||
| export default IUI.module( | ||||
|   class Input extends IUIElement { | ||||
|     constructor() { | ||||
|         super({ formatter: (x) => x }); | ||||
|       super({ formatter: x => x }); | ||||
|       this._register("input"); | ||||
|       this._register("change"); | ||||
|     } | ||||
| @@ -16,14 +17,12 @@ export default IUI.module(class Input extends IUIElement { | ||||
|             this.setAttribute("invalid", ""); | ||||
|             this.classList.add(this.cssClass + "-invalid"); | ||||
|             return false; | ||||
|                 } | ||||
|                 else { | ||||
|           } else { | ||||
|             this.removeAttribute("invalid"); | ||||
|             this.classList.remove(this.cssClass + "-invalid"); | ||||
|             return true; | ||||
|           } | ||||
|             } | ||||
|             catch (e) { | ||||
|         } catch (e) { | ||||
|           console.log("Validation Error", e); | ||||
|           return false; | ||||
|         } | ||||
| @@ -42,15 +41,15 @@ export default IUI.module(class Input extends IUIElement { | ||||
|     } | ||||
|  | ||||
|     create() { | ||||
|  | ||||
|       this.isAuto = this.hasAttribute("auto"); | ||||
|       this.field = this.getAttribute("field"); | ||||
|  | ||||
|          | ||||
|         if (this.field != null) | ||||
|         { | ||||
|             this.setAttribute(":data", `d['${this.field}']`) | ||||
|             this.setAttribute("async:revert", `d['${this.field}'] = await this.getData()`); | ||||
|       if (this.field != null) { | ||||
|         this.setAttribute(":data", `d['${this.field}']`); | ||||
|         this.setAttribute( | ||||
|           "async:revert", | ||||
|           `d['${this.field}'] = await this.getData()` | ||||
|         ); | ||||
|       } | ||||
|  | ||||
|       this._span = document.createElement("span"); | ||||
| @@ -62,8 +61,7 @@ export default IUI.module(class Input extends IUIElement { | ||||
|       let self = this; | ||||
|  | ||||
|       this._input.addEventListener("input", () => { | ||||
|             if (self._checkValidity() && self.isAuto) | ||||
|                 this.revert(); | ||||
|         if (self._checkValidity() && self.isAuto) this.revert(); | ||||
|         //self.data[self.field] = self.value; | ||||
|       }); | ||||
|  | ||||
| @@ -71,15 +69,16 @@ export default IUI.module(class Input extends IUIElement { | ||||
|         self._emit("change", { value: self.value }); | ||||
|       }); | ||||
|  | ||||
|         this.type = this.hasAttribute("type") ? this.getAttribute("type").toLowerCase() : "text"; | ||||
|       this.type = this.hasAttribute("type") | ||||
|         ? this.getAttribute("type").toLowerCase() | ||||
|         : "text"; | ||||
|  | ||||
|       this.accept = this.getAttribute("accept"); | ||||
|  | ||||
|       this.appendChild(this._input); | ||||
|       this.appendChild(this._span); | ||||
|  | ||||
|         if (this.type == "password") | ||||
|         { | ||||
|       if (this.type == "password") { | ||||
|         this._eye = document.createElement("div"); | ||||
|         this._eye.className = this.cssClass + "-eye"; | ||||
|         this._eye.addEventListener("mousedown", () => { | ||||
| @@ -92,9 +91,7 @@ export default IUI.module(class Input extends IUIElement { | ||||
|         }); | ||||
|  | ||||
|         this.appendChild(this._eye); | ||||
|  | ||||
|       } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     async updateAttributes(deep, parentData) { | ||||
| @@ -120,10 +117,8 @@ export default IUI.module(class Input extends IUIElement { | ||||
|     } | ||||
|  | ||||
|     set disabled(value) { | ||||
|         if (value) | ||||
|             this.setAttribute("disabled", "disabled"); | ||||
|         else | ||||
|             this.removeAttribute("disabled"); | ||||
|       if (value) this.setAttribute("disabled", "disabled"); | ||||
|       else this.removeAttribute("disabled"); | ||||
|  | ||||
|       this._input.disabled = value; | ||||
|     } | ||||
| @@ -141,24 +136,27 @@ export default IUI.module(class Input extends IUIElement { | ||||
|     } | ||||
|  | ||||
|     async setData(value) { | ||||
|  | ||||
|       await super.setData(value); | ||||
|  | ||||
|         if (this.type == "checkbox") | ||||
|             this._input.checked = value; | ||||
|         else if (this.type == "date")  | ||||
|             this._input.value = value != null ? value.toISOString().slice(0, 10) : value; | ||||
|         else if (this.type == null || this.type == "text" || this.type == "search" || this.type == "password") | ||||
|             this._input.value = value == null ? '' : value; | ||||
|       if (this.type == "checkbox") this._input.checked = value; | ||||
|       else if (this.type == "date") { | ||||
|         this._input.value = value ? value.toISOString().slice(0, 10) : value; | ||||
|       } else if (this.type == "datetime-local") { | ||||
|         this._input.value = value | ||||
|           ? value.toISOString().substring(0, 19) | ||||
|           : value; | ||||
|       } else if ( | ||||
|         this.type == null || | ||||
|         this.type == "text" || | ||||
|         this.type == "search" || | ||||
|         this.type == "password" | ||||
|       ) | ||||
|         this._input.value = value == null ? "" : value; | ||||
|       else if (this.type == "file") { | ||||
|         // can't set value on file input | ||||
|         } | ||||
|         else | ||||
|             this._input.value = value; | ||||
|  | ||||
|         if (this._checkValidity() && this.isAuto) | ||||
|             this.revert(); | ||||
|       } else this._input.value = value; | ||||
|  | ||||
|       if (this._checkValidity() && this.isAuto) this.revert(); | ||||
|  | ||||
|       /* | ||||
|         await super.setData(value); | ||||
| @@ -169,7 +167,6 @@ export default IUI.module(class Input extends IUIElement { | ||||
|         */ | ||||
|     } | ||||
|  | ||||
|  | ||||
|     // modified(name, value) { | ||||
|     //     if (name == this.field) { | ||||
|     //         this.value = value; | ||||
| @@ -177,32 +174,25 @@ export default IUI.module(class Input extends IUIElement { | ||||
|     // } | ||||
|  | ||||
|     async getData() { | ||||
|         if (this.type == "checkbox") | ||||
|             return this._input.checked; | ||||
|         else if (this.type == "date") | ||||
|       if (this.type == "checkbox") return this._input.checked; | ||||
|       else if (this.type == "date" || this.type == "datetime-local") | ||||
|         return new Date(this._input.value); | ||||
|       else if (this.type == "file") | ||||
|         return new Uint8Array(await this._input.files[0].arrayBuffer()); | ||||
|         else | ||||
|             return this._input.value; | ||||
|       else return this._input.value; | ||||
|     } | ||||
|  | ||||
|     get data() | ||||
|     { | ||||
|         if (this.type == "checkbox") | ||||
|         return this._input.checked; | ||||
|         else if (this.type == "date") | ||||
|     get data() { | ||||
|       if (this.type == "checkbox") return this._input.checked; | ||||
|       else if (this.type == "date" || this.type == "datetime-local") | ||||
|         return new Date(this._input.value); | ||||
|         else if (this.type == "file") | ||||
|         {             | ||||
|             return new Promise((resolve)=>{ | ||||
|                 this._input.files[0].arrayBuffer().then((x)=>{ | ||||
|       else if (this.type == "file") { | ||||
|         return new Promise(resolve => { | ||||
|           this._input.files[0].arrayBuffer().then(x => { | ||||
|             resolve(new Uint8Array(x)); | ||||
|           }); | ||||
|         }); | ||||
|         } | ||||
|         else | ||||
|             return this._input.value; | ||||
|       } else return this._input.value; | ||||
|     } | ||||
|  | ||||
|     /* | ||||
| @@ -233,4 +223,5 @@ export default IUI.module(class Input extends IUIElement { | ||||
|  | ||||
|     //     this._checkValidity(); | ||||
|     // } | ||||
| }); | ||||
|   } | ||||
| ); | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| import { IUI, iui } from "./Core/IUI.js"; | ||||
|  | ||||
|   | ||||
| import "./Core/IUIElement.js"; | ||||
| import "./Core/App.js"; | ||||
|  | ||||
| @@ -39,8 +38,8 @@ import "./UI/Select.js"; | ||||
| import "./UI/DropDown.js"; | ||||
| import "./UI/Grid.js"; | ||||
|  | ||||
| import './UI/Location.js'; | ||||
| import './UI/CodePreview.js'; | ||||
| import "./UI/Location.js"; | ||||
| import "./UI/CodePreview.js"; | ||||
| import Modifiable from "./Data/Modifiable.js"; | ||||
|  | ||||
| window.addEventListener("beforeprint", e => { | ||||
| @@ -59,6 +58,7 @@ window.addEventListener("load", async function () { | ||||
|   await IUI.create(document.body); | ||||
|   await IUI.created(document.body); | ||||
|  | ||||
|   console.log("IUI.create()"); | ||||
| }); | ||||
|  | ||||
| window.iui = iui; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user