Initial commit
This commit is contained in:
commit
146b2bdaa7
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
gui-sandbox.js binary
|
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
node_modules/
|
||||||
|
package-lock.json
|
||||||
|
package.json
|
||||||
|
webpack.config.js
|
33
README.md
Normal file
33
README.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
gui-sandbox
|
||||||
|
===========
|
||||||
|
|
||||||
|
[](https://github.com/custom-components/hacs)
|
||||||
|
|
||||||
|
This card adds a button that lets you play around with the amazing lovelace GUI editors even if you're using [YAML mode](https://www.home-assistant.io/lovelace/yaml-mode/).
|
||||||
|
|
||||||
|
**Note that you can't save your changes. Instead, switch to the GUI YAML editor and copy the code into your normal lovelace configuration.**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Installation instructions
|
||||||
|
|
||||||
|
For installation instructions [see this guide](https://github.com/thomasloven/hass-config/wiki/Lovelace-Plugins).
|
||||||
|
|
||||||
|
The recommended type of this plugin is: `module`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
resources:
|
||||||
|
url: /local/gui-sandbox.js
|
||||||
|
type: module
|
||||||
|
```
|
||||||
|
|
||||||
|
# Usage instructions
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
type: custom:gui-sandbox
|
||||||
|
```
|
||||||
|
|
||||||
|
Don't try to save.
|
||||||
|
|
||||||
|
---
|
||||||
|
<a href="https://www.buymeacoffee.com/uqD6KHCdJ" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/white_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
|
9
docker-compose.yml
Normal file
9
docker-compose.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
version: "2.0"
|
||||||
|
services:
|
||||||
|
node:
|
||||||
|
image: node:11
|
||||||
|
volumes:
|
||||||
|
- .:/usr/src
|
||||||
|
- ../card-tools:/card-tools:ro
|
||||||
|
working_dir: /usr/src
|
||||||
|
|
28
gui-sandbox.js
Normal file
28
gui-sandbox.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
!function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";o.r(t);const r=customElements.get("home-assistant-main")?Object.getPrototypeOf(customElements.get("home-assistant-main")):Object.getPrototypeOf(customElements.get("hui-view")),n=r.prototype.html,i=r.prototype.css;function a(){var e=document.querySelector("home-assistant");if(e=(e=(e=(e=(e=(e=(e=(e=e&&e.shadowRoot)&&e.querySelector("home-assistant-main"))&&e.shadowRoot)&&e.querySelector("app-drawer-layout partial-panel-resolver"))&&e.shadowRoot||e)&&e.querySelector("ha-panel-lovelace"))&&e.shadowRoot)&&e.querySelector("hui-root")){var t=e.lovelace;return t.current_view=e.___curView,t}return null}customElements.define("gui-sandbox",class extends r{setConfig(e){}render(){return n`
|
||||||
|
<ha-card
|
||||||
|
@click=${this.clicked}
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
Sandbox mode
|
||||||
|
</span>
|
||||||
|
<ha-icon
|
||||||
|
.icon="${"yaml"===a().mode?"mdi:shovel":"mdi:shovel-off"}"
|
||||||
|
style="${a().editMode?"color: green":""}"
|
||||||
|
></ha-icon>
|
||||||
|
</ha-card>
|
||||||
|
`}clicked(){"yaml"===a().mode&&(a().setEditMode(!a().editMode),this.requestUpdate())}static get styles(){return i`
|
||||||
|
ha-card {
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
padding: 4% 0;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
ha-icon {
|
||||||
|
width: 40%;
|
||||||
|
height: auto;
|
||||||
|
color: var(--paper-item-icon-color, #44739e);
|
||||||
|
}
|
||||||
|
`}})}]);
|
56
src/main.js
Normal file
56
src/main.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import { LitElement, html, css } from "/card-tools/lit-element.js";
|
||||||
|
import { lovelace } from "/card-tools/hass.js";
|
||||||
|
|
||||||
|
class GuiSandbox extends LitElement {
|
||||||
|
setConfig(config) {
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`
|
||||||
|
<ha-card
|
||||||
|
@click=${this.clicked}
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
Sandbox mode
|
||||||
|
</span>
|
||||||
|
<ha-icon
|
||||||
|
.icon="${ lovelace().mode === "yaml"
|
||||||
|
? "mdi:shovel"
|
||||||
|
: "mdi:shovel-off"
|
||||||
|
}"
|
||||||
|
style="${lovelace().editMode
|
||||||
|
? "color: green"
|
||||||
|
: ""
|
||||||
|
}"
|
||||||
|
></ha-icon>
|
||||||
|
</ha-card>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
clicked() {
|
||||||
|
if(lovelace().mode !== "yaml") return;
|
||||||
|
lovelace().setEditMode(!lovelace().editMode);
|
||||||
|
this.requestUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
static get styles() {
|
||||||
|
return css`
|
||||||
|
ha-card {
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
padding: 4% 0;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
ha-icon {
|
||||||
|
width: 40%;
|
||||||
|
height: auto;
|
||||||
|
color: var(--paper-item-icon-color, #44739e);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define('gui-sandbox', GuiSandbox);
|
Loading…
x
Reference in New Issue
Block a user