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