From b0e6d13fa6ac313a13a4763add325fcab91576fb Mon Sep 17 00:00:00 2001 From: Harry Stuart Date: Sun, 27 Nov 2022 17:16:56 +1100 Subject: [PATCH] initial commit --- XWidget.html | 3 + XWidget.js | 340 +++++++++++++++++++++++++ icon_close.png | Bin 0 -> 7724 bytes icon_open.png | Bin 0 -> 19737 bytes implementation.html | 493 +++++++++++++++++++++++++++++++++++++ old/CornerSnap.html | 143 +++++++++++ old/Screenshot.html | 288 ++++++++++++++++++++++ old/ScreenshotTest.html | 27 ++ old/Widget.html | 197 +++++++++++++++ old/WidgetNew.html | 131 ++++++++++ old/implementationold.html | 406 ++++++++++++++++++++++++++++++ 11 files changed, 2028 insertions(+) create mode 100644 XWidget.html create mode 100644 XWidget.js create mode 100644 icon_close.png create mode 100644 icon_open.png create mode 100644 implementation.html create mode 100644 old/CornerSnap.html create mode 100644 old/Screenshot.html create mode 100644 old/ScreenshotTest.html create mode 100644 old/Widget.html create mode 100644 old/WidgetNew.html create mode 100644 old/implementationold.html diff --git a/XWidget.html b/XWidget.html new file mode 100644 index 0000000..5f2ef7f --- /dev/null +++ b/XWidget.html @@ -0,0 +1,3 @@ + +

yeehaw

\ No newline at end of file diff --git a/XWidget.js b/XWidget.js new file mode 100644 index 0000000..cd1ec29 --- /dev/null +++ b/XWidget.js @@ -0,0 +1,340 @@ +const template = document.createElement("template"); + +{ + let url = import.meta.url; + let path = url.substring(0, url.lastIndexOf("/")) + let response = await fetch(`${path}/XIconButton.html`); + template.innerHTML = await response.text(); +} + +class XWidget extends HTMLElement { + #icon; + #form; + #location; + + #margin; + + #pointerDown; + #moving; + + constructor() { + super(); + + const shadowRoot = this.attachShadow({mode: 'open'}); + + this.#icon = this.#createIcon(); + shadowRoot.appendChild(this.#icon) + + this.#form = this.#createForm(); + shadowRoot.appendChild(this.#form); + + this.#margin = "20px"; + this.#pointerDown = false; + this.#moving = false; + this.#location = "bottom-right"; + } + + connectedCallback() { + this.#render(); + } + + #render() { + if (this.isConnected) { + this.#renderIcon({width: "60px", height: "60px", imgSrc: this.#icon.openImgSrc}); + this.#renderForm({visibility: "hidden"}); + } + } + + #createIcon() { + let icon = document.createElement("div"); + + icon.openImgSrc = "icon_open.png"; + icon.closeImgSrc = "icon_close.png"; + + icon.addEventListener("pointerdown", (e) => this.#onIconPointerDown(e)); + icon.addEventListener("pointermove", (e) => this.#onIconPointerMove(e)); + icon.addEventListener("pointerup", (e) => this.#onIconPointerUp(e)); + icon.addEventListener("pointerover", (e) => this.#onIconPointerOver(e)); + icon.addEventListener("pointerout", (e) => this.#onIconPointerOut(e)); + + let iconImage = document.createElement("img"); + iconImage.style.width = "100%"; + iconImage.style.height = "100%"; + icon.appendChild(iconImage) + + return icon; + } + + #createForm() { + let form = document.createElement("div"); + + let header = document.createElement("div"); + header.id = "form-header"; + form.appendChild(header); + + let title = document.createElement("div"); + title.id = "form-title"; + header.appendChild(title); + + // let headerBottom = document.createElement("hr"); + // headerBottom.id = "form-header-bottom"; + // form.appendChild(headerBottom); + + // let nameInput = document.createElement("input"); + // nameInput.id = "name-input"; + // form.appendChild(nameInput); + + // let commentInput = document.createElement("textarea"); + // commentInput.id = "comment-input"; + // form.appendChild(commentInput); + + return form; + } + + #renderIcon(parameters={}) { + this.#icon.style.position = "fixed"; + this.#icon.style.transition = "scale 0.2s ease"; + + if (parameters["width"]) { + this.#icon.style.width = parameters["width"]; + } + + if (parameters["height"]) { + this.#icon.style.height = parameters["height"]; + } + + if (parameters["scale"]) { + this.#icon.style.scale = parameters["scale"]; + } + + if (parameters["imgSrc"]) { + this.#icon.querySelector("img").src = parameters["imgSrc"]; + } + + if (this.#location == "top-left") { + this.#icon.style.left = this.#margin; + this.#icon.style.top = this.#margin; + this.#icon.style.bottom = "auto"; + this.#icon.style.right = "auto"; + } else if (this.#location == "top-right") { + this.#icon.style.left = "auto"; + this.#icon.style.top = this.#margin; + this.#icon.style.bottom = "auto"; + this.#icon.style.right = this.#margin; + } else if (this.#location == "bottom-left") { + this.#icon.style.left = this.#margin; + this.#icon.style.top = "auto"; + this.#icon.style.bottom = this.#margin; + this.#icon.style.right = "auto"; + } else if (this.#location == "bottom-right") { + this.#icon.style.left = "auto"; + this.#icon.style.top = "auto"; + this.#icon.style.bottom = this.#margin; + this.#icon.style.right = this.#margin; + } + } + + #renderForm(parameters={}) { + this.#form.style.width = "350px"; + this.#form.style.height = "500px"; + this.#form.style.backgroundColor = "white"; + this.#form.style.border = "0px"; + this.#form.style.borderRadius = "10px 10px 10px 10px" + this.#form.style.boxShadow = "0 4px 16px rgb(0 0 0 / 25%)"; + this.#form.style.borderRadius = "15px"; + this.#form.style.position = "fixed"; + this.#form.style.opacity = "0"; + + if (this.#location == "top-left") { + this.#form.style.left = this.#margin; + this.#form.style.top = this.#icon.clientHeight + 50 + "px"; + this.#form.style.bottom = "auto"; + this.#form.style.right = "auto"; + } else if (this.#location == "top-right") { + this.#form.style.left = "auto"; + this.#form.style.top = this.#icon.clientHeight + 50 + "px"; + this.#form.style.bottom = "auto"; + this.#form.style.right = this.#margin; + } else if (this.#location == "bottom-left") { + this.#form.style.left = this.#margin; + this.#form.style.top = "auto"; + this.#form.style.bottom = this.#icon.clientHeight + 50 + "px"; + this.#form.style.right = "auto"; + } else if (this.#location == "bottom-right") { + this.#form.style.left = "auto"; + this.#form.style.top = "auto"; + this.#form.style.bottom = this.#icon.clientHeight + 50 + "px"; + this.#form.style.right = this.#margin; + } + + if (parameters["visibility"]) { + // This animation feels messy - especially since opacity is always declared above as 0 + if (parameters["visibility"] == "visible" && this.#form.style.visibility != "visible") { + this.#form.style.visibility = "visible"; + + if (parameters["animate"]) { + this.#form.style.opacity = "1"; + this.#form.style.transition = "visibility 0s linear 0.1s, opacity 0.1s linear"; + this.#form.style.transitionDelay = "0s"; + } + else { + this.#form.style.transition = ""; + } + } + else if (parameters["visibility"] == "hidden" && this.#form.style.visibility != "hidden") { + this.#form.style.visibility = "hidden"; + + if (parameters["animate"]) { + this.#form.style.opacity = "0"; + this.#form.style.transition = "visibility 0s linear 0.1s, opacity 0.1s linear"; + } + else { + this.#form.style.transition = ""; + } + } + } + + let header = this.#form.querySelector("#form-header"); + header.style.top = "0px"; + header.style.width = "100%"; + header.style.height = "60px"; + header.style.backgroundColor = "#AE55E7"; + header.style.borderRadius = "15px 15px 0px 0px"; + header.style.border = "0px"; + header.style.justifyContent = "center"; + header.style.alignItems = "center"; + header.style.display = "flex"; + + // let headerBottom = this.#form.querySelector("#form-header-bottom"); + // headerBottom.style.width = "100%"; + // headerBottom.style.height = "10px"; + // headerBottom.style.backgroundColor = "#AE55E7"; + // headerBottom.style.margin = "0px"; + // headerBottom.style.border = "0px"; + // headerBottom.style.boxShadow = "0 0 26px -2px rgba(0, 0, 0, 0.5)"; + // headerBottom.style.clipPath = "polygon(0% 0%, 100% 0%, 100% 500%, 0% 500%)"; + + let title = this.#form.querySelector("#form-title"); + title.textContent = "New Ticket"; + title.style.fontFamily = "Alexandria, sans-serif"; + title.style.fontWeight = "400"; + title.style.fontSize = "24px"; + title.style.color = "white"; + title.style.textAlign = "center"; + + // let nameInput = this.#form.querySelector("#name-input"); + // nameInput.setAttribute("type", "text"); + // nameInput.setAttribute("placeholder", "Name"); + // nameInput.style.fontFamily = "Alexandria, sans-serif"; + // nameInput.style.fontWeight = "300"; + // nameInput.style.fontSize = "12px"; + + // let commentInput = this.#form.querySelector("#comment-input"); + // commentInput.setAttribute("resize", "none"); + // commentInput.setAttribute("overflow-y", "scroll"); + // commentInput.setAttribute("rows", "15"); + // commentInput.setAttribute("cols", "30"); + } + + #onIconPointerOver(e) { + e.preventDefault(); + e.stopPropagation(); + + this.#renderIcon({scale: 1.05}); + } + + #onIconPointerOut(e) { + e.preventDefault(); + e.stopPropagation(); + + this.#renderIcon({scale: 1}); + } + + #onIconPointerDown(e) { + e.preventDefault(); + e.stopPropagation(); + + this.#pointerDown = true; + + this.#icon.setPointerCapture(e.pointerId); + } + + #onIconPointerMove(e) { + e.preventDefault(); + e.stopPropagation(); + + this.#icon.style.cursor = "pointer"; + + if (this.#pointerDown) { + this.#moving = true; + this.#icon.style.cursor = "grabbing"; + this.#snapToCorner(e.clientX, e.clientY); + } + } + + #onIconPointerUp(e) { + e.preventDefault(); + e.stopPropagation(); + + this.#icon.style.cursor = "pointer"; + + if (!this.#moving) { + if (this.#form.style.visibility == "visible") { + this.#renderIcon({imgSrc: this.#icon.openImgSrc}); + this.#renderForm({visibility: "hidden", animate: true}); + } + else { + this.#renderIcon({imgSrc: this.#icon.closeImgSrc}); + this.#renderForm({visibility: "visible", animate: true}); + } + } + else { + this.#moving = false; + } + + this.#pointerDown = false; + + this.#icon.releasePointerCapture(e.pointerId); + } + + #toggleDisplayForm() { + let visibility = + this.#form.style.visibility == "visible" ? + "hidden" : "visible"; + + this.#renderForm({visibility: visibility}) + } + + #snapToCorner(anchorX, anchorY) { + let locationChanged = false; + + if (anchorX < window.innerWidth / 5) { + if (this.#location != "top-left" && anchorY < window.innerHeight / 5) { + this.#location = "top-left"; + locationChanged = true; + } + else if (this.#location != "bottom-left" && anchorY > window.innerHeight - window.innerHeight / 5) { + this.#location = "bottom-left"; + locationChanged = true; + } + } + else if (anchorX > window.innerWidth - window.innerWidth / 5) { + if (this.#location != "top-right" && anchorY < window.innerHeight / 5) { + this.#location = "top-right"; + locationChanged = true; + } + else if (this.#location != "bottom-right" && anchorY > window.innerHeight - window.innerHeight / 5) { + this.#location = "bottom-right"; + locationChanged = true; + } + } + + if (locationChanged) { + this.#renderIcon({imgSrc: this.#icon.openImgSrc}); + this.#renderForm({visibility: "hidden"}); + } + } +} + +customElements.define("x-widget", XWidget); +document.body.appendChild(document.createElement("x-widget")); \ No newline at end of file diff --git a/icon_close.png b/icon_close.png new file mode 100644 index 0000000000000000000000000000000000000000..fc544a3208a29f2ee5e9fe525b9c7beb6df46d14 GIT binary patch literal 7724 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 S)C~Sl3otXbGO983i26URK0%)V literal 0 HcmV?d00001 diff --git a/icon_open.png b/icon_open.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfb43a032ea2812019697cb6ae31c65d082defc GIT binary patch literal 19737 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 literal 0 HcmV?d00001 diff --git a/implementation.html b/implementation.html new file mode 100644 index 0000000..45600b8 --- /dev/null +++ b/implementation.html @@ -0,0 +1,493 @@ + + + + + + + +
+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ v +

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ + + + + + + \ No newline at end of file diff --git a/old/CornerSnap.html b/old/CornerSnap.html new file mode 100644 index 0000000..cc3f281 --- /dev/null +++ b/old/CornerSnap.html @@ -0,0 +1,143 @@ + + + + + + + +
+ +
+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ v +

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+
+ +
+ + + + \ No newline at end of file diff --git a/old/Screenshot.html b/old/Screenshot.html new file mode 100644 index 0000000..635eb97 --- /dev/null +++ b/old/Screenshot.html @@ -0,0 +1,288 @@ + + + + + + + + +
+ + + + + + +
+ + +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ v +

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+
+ + + + \ No newline at end of file diff --git a/old/ScreenshotTest.html b/old/ScreenshotTest.html new file mode 100644 index 0000000..299bd85 --- /dev/null +++ b/old/ScreenshotTest.html @@ -0,0 +1,27 @@ + + + + + + + +
+

Hello wytorld!

+ +
+ + + + \ No newline at end of file diff --git a/old/Widget.html b/old/Widget.html new file mode 100644 index 0000000..93b01dd --- /dev/null +++ b/old/Widget.html @@ -0,0 +1,197 @@ + + + + + + +
+ + + + + + +
+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ v +

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+
+ + + + + + \ No newline at end of file diff --git a/old/WidgetNew.html b/old/WidgetNew.html new file mode 100644 index 0000000..7a3d165 --- /dev/null +++ b/old/WidgetNew.html @@ -0,0 +1,131 @@ + + + + + + +
+ + + + + + +
+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ v +

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+
+ + + + + + \ No newline at end of file diff --git a/old/implementationold.html b/old/implementationold.html new file mode 100644 index 0000000..d7c7ee0 --- /dev/null +++ b/old/implementationold.html @@ -0,0 +1,406 @@ + + + + +
+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ v +

Nice thanks man awesome

+

Nice thanks man awesome

+ +

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+

Nice thanks man awesome

+ + + + + + \ No newline at end of file