default HTMLElement withAttr(String name, String value) { setAttribute(name, value); return this; }
default HTMLElement withText(String content) { clear().appendChild(getOwnerDocument().createTextNode(content)); return this; }
default HTMLElement clear() { Node node = getLastChild(); while (node != null) { Node prev = node.getPreviousSibling(); if (node.getNodeType() != ATTRIBUTE_NODE) { removeChild(node); } node = prev; } return this; }
default HTMLElement withChild(String tagName) { HTMLElement result = getOwnerDocument().createElement(tagName); appendChild(result); return this; }
@Override public void render() { if (!bound) { bound = true; element.addEventListener(eventName, wrapperListener); } }
public void dropDown() { if (dropDownElement != null) { return; } dropDownElement = HTMLDocument.current().createElement("div"); dropDownElement.setAttribute("class", "flavour-dropdown flavour-dropdown-calendar"); TextRectangle windowRect = HTMLDocument.current().getBody().getBoundingClientRect(); TextRectangle inputRect = target.getElement().getBoundingClientRect(); dropDownElement.getStyle().setProperty("right", windowRect.getWidth() - inputRect.getRight() + "px"); dropDownElement.getStyle().setProperty("top", inputRect.getBottom() + "px"); CalendarDropDown dropDown = new CalendarDropDown(this::parseValue, newValue -> { closeDropDown(); target.updateValue(cachedFormatObject.format(newValue)); }); dropDownComponent = Templates.bind(dropDown, dropDownElement); HTMLDocument.current().getBody().appendChild(dropDownElement); Window.setTimeout(() -> HTMLDocument.current().addEventListener("click", bodyListener), 0); }
default HTMLElement withChild(Node node) { appendChild(node); return this; }
public void close() { component.destroy(); wrapper.getParentNode().removeChild(wrapper); wrapper = null; component = null; callback.complete(null); }
@Override public void render() { if (!bound) { bound = true; element.addEventListener(eventName, action); } }
default HTMLElement withChild(String tagName, Consumer<HTMLElement> consumer) { HTMLElement result = getOwnerDocument().createElement(tagName); appendChild(result); consumer.accept(result); return this; }
@Override public void render() { if (!bound) { bound = true; element.addEventListener(eventName, action); } }
@Override public void render() { Object newValue = value.get(); if (!Objects.equals(newValue, cachedValue)) { cachedValue = newValue; element.setAttribute(name, String.valueOf(newValue)); } }
@Override public void render() { if (!bound) { bound = true; element.addEventListener(eventName, wrapperListener); } }
@Override public void render() { Object newValue = value.get(); if (!Objects.equals(newValue, cachedValue)) { cachedValue = newValue; element.setAttribute(name, String.valueOf(newValue)); } }
@Override @SuppressWarnings("unchecked") public void addValueChangeListener(ValueChangeListener<String> listener) { if (valueChangeListeners == null) { valueChangeListeners = listener; HTMLElement htmlElement = (HTMLElement) element; createChangeListener(); htmlElement.addEventListener("change", changeListener); } else if (valueChangeListeners instanceof List<?>) { List<ValueChangeListener<String>> listeners = (List<ValueChangeListener<String>>) valueChangeListeners; listeners.add(listener); } else { List<ValueChangeListener<String>> listeners = new ArrayList<>(2); listeners.add((ValueChangeListener<String>) valueChangeListeners); listeners.add(listener); valueChangeListeners = listeners; } }
@Override @SuppressWarnings("unchecked") public void addValueChangeListener(ValueChangeListener<String> listener) { if (valueChangeListeners == null) { valueChangeListeners = listener; HTMLElement htmlElement = (HTMLElement) element; createChangeListener(); htmlElement.addEventListener("change", changeListener); } else if (valueChangeListeners instanceof List<?>) { List<ValueChangeListener<String>> listeners = (List<ValueChangeListener<String>>) valueChangeListeners; listeners.add(listener); } else { List<ValueChangeListener<String>> listeners = new ArrayList<>(2); listeners.add((ValueChangeListener<String>) valueChangeListeners); listeners.add(listener); valueChangeListeners = listeners; } }
public DateField(ModifierTarget target) { this.target = target; target.getElement().addEventListener("click", evt -> dropDown()); }