1
0
mirror of https://github.com/pyscript/pyscript.git synced 2022-05-01 19:47:48 +03:00

add inputbox and clearn todo html even more

This commit is contained in:
Fabio Pliger
2022-04-20 16:12:01 -05:00
parent 3aa3ba02be
commit 44afda7aa8
4 changed files with 68 additions and 25 deletions

View File

@@ -0,0 +1,51 @@
import { BaseEvalElement } from './base';
import { addClasses, ltrim, htmlDecode } from '../utils';
export class PyInputBox extends BaseEvalElement {
shadow: ShadowRoot;
wrapper: HTMLElement;
theme: string;
widths: Array<string>;
label: string;
mount_name: string;
constructor() {
super();
// attach shadow so we can preserve the element original innerHtml content
// this.shadow = this.attachShadow({ mode: 'open'});
// this.wrapper = document.createElement('slot');
// this.shadow.appendChild(this.wrapper);
if (this.hasAttribute('label')) {
this.label = this.getAttribute('label');
}
}
connectedCallback() {
this.label = htmlDecode(this.innerHTML);
this.mount_name = this.id.split("-").join("_");
this.innerHTML = '';
let mainDiv = document.createElement('input');
mainDiv.type = "text";
addClasses(mainDiv, ["border", "flex-1", "w-full", "mr-3", "border-gray-300", "p-2", "rounded"]);
mainDiv.id = this.id;
this.id = `${this.id}-container`;
this.appendChild(mainDiv);
// now that we appended and the element is attached, lets connect with the event handlers
// defined for this widget
this.code = `${this.mount_name} = Element("${ mainDiv.id }")`;
setTimeout(() => {
this.eval(this.code).then(() => {
console.log('registered handlers');
});
}, 4000);
console.log('py-title connected');
}
}

View File

@@ -156,7 +156,6 @@ class PyListTemplate:
def data(self):
return [c.data for c in self._children]
@property
def render_children(self):
return [c.element.innerHTML.replace("\\n", "") for c in self._children]

View File

@@ -6,6 +6,7 @@ import { PyEnv } from "./components/pyenv";
import { PyBox } from "./components/pybox";
import { PyButton } from "./components/pybutton";
import { PyTitle } from "./components/pytitle";
import { PyInputBox } from "./components/pyinputbox";
import { PyWidget } from "./components/base";
let xPyScript = customElements.define('py-script', PyScript);
@@ -14,6 +15,7 @@ let xPyEnv = customElements.define('py-env', PyEnv);
let xPyBox = customElements.define('py-box', PyBox);
let xPyButton = customElements.define('py-button', PyButton);
let xPyTitle = customElements.define('py-title', PyTitle);
let xPyInputBox = customElements.define('py-inputbox', PyInputBox);
let xPyWidget = customElements.define('py-register-widget', PyWidget);