From c84ea8e09c8adbcbd69723efe375393aee0bdaa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Sat, 8 Jun 2019 22:08:01 +0200 Subject: [PATCH] Initial commit --- .gitignore | 4 + Makefile | 42 +++++++ README.md | 144 ++++++++++++++++++++++ card-mod.js | 1 + src/example.yaml | 313 +++++++++++++++++++++++++++++++++++++++++++++++ src/main.js | 82 +++++++++++++ 6 files changed, 586 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 card-mod.js create mode 100644 src/example.yaml create mode 100644 src/main.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d26a54b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +package-lock.json +package.json +webpack.config.js diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5b9de40 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +AUTHOR := Thomas Lovén +CARD_TOOLS := $(PWD)/../card-tools + +PACKAGE := $(shell basename $(CURDIR)) +PACKAGE := $(PACKAGE:lovelace-%=%) +DOCKER_CMD:=docker run --rm -v $(CARD_TOOLS):/card-tools:ro -v $(PWD):/usr/src/$(PACKAGE) -w="/usr/src/$(PACKAGE)" node:11 + +build: setup + $(DOCKER_CMD) npm run build + +dev: setup + $(DOCKER_CMD) npm run watch + +setup: package.json package-lock.json webpack.config.js + +clean: + rm package.json package-lock.json webpack.config.js + rm -r node_modules + rm $(PACKAGE).js + +define WEBPACK_CONFIG +const path = require('path'); + +module.exports = { + entry: './src/main.js', + mode: 'production', + output: { + filename: '$(PACKAGE).js', + path: path.resolve(__dirname) + } +}; +endef +export WEBPACK_CONFIG +webpack.config.js: + echo "$$WEBPACK_CONFIG" >> $@ + +package-lock.json: + $(DOCKER_CMD) npm install webpack webpack-cli --save-dev + +package.json: + $(DOCKER_CMD) /bin/bash -c "npm set init.license 'MIT' && npm set init.author.name '$(AUTHOR)' && npm init -y" + $(DOCKER_CMD) sed -E -i -e '/^ +"main"/d' -e '/^ +"scripts"/a\ "build": "webpack",' -e '/^ +"scripts"/a\ "watch": "webpack --watch --mode=development",' -e '2a\ "private": true,' $@ diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b008c3 --- /dev/null +++ b/README.md @@ -0,0 +1,144 @@ +card-mod +======== + +Allows you to add css styles to any lovelace card. + +For installation instructions [see this guide](https://github.com/thomasloven/hass-config/wiki/Lovelace-Plugins). + +Install `card-mod.js` as a `module`. + +## Usage +This is *not* a new card. Instead it *changes the way pretty much any other card works*. + +Specifically, it looks for `style:` in any cards configuration, and applies the [CSS](https://www.w3schools.com/css/) specified there to the card. + +The basis of all lovelace cards there's a `ha-card` element, so that's probably where you'd want to start. + +--- + +**Example:**\ +Change the text color of an `entities` card to red. + +```yaml +type: entities +style: | + ha-card { + color: red; + } +entities: + - light.bed_light + - light.ceiling_lights + - light.kitchen_lights +``` + +![red text](https://user-images.githubusercontent.com/1299821/59151548-38a8d800-8a35-11e9-875a-64e72fd6f5a6.png) + +--- + +By using the element inspector of your browser ([chrome](https://developers.google.com/web/tools/chrome-devtools/inspect-styles/), [firefox](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Open_the_Inspector), [safari](https://discussions.apple.com/thread/5508711), [explorer](https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/samples/gg589500(v=vs.85))) you can find out how cards are built up and what styles they are using. + +**Example** \ +Make a `glance` card use smallcaps and change the font size of the title + +```yaml +type: entities +style: | + ha-card { + font-variant: small-caps; + } + .card-header { + font-size: 16px; + } +entities: + - light.bed_light + - light.ceiling_lights + - light.kitchen_lights +``` + +![smallcaps](https://user-images.githubusercontent.com/1299821/59151624-9a1d7680-8a36-11e9-9b2d-598c80ff2aa1.png) + +You can also use [templates](https://github.com/thomasloven/hass-config/wiki/Mod-plugin-templates) to change the styles dynamically. + +**Example** \ +Make an `entity-button` card green when the light is on + +```yaml +type: entity-button +entity: light.bed_light +style: | + ha-card { + background: [[ if(light.bed_light == "on", "green", "") ]]; + } +``` + +![templates](https://user-images.githubusercontent.com/1299821/59151667-45c6c680-8a37-11e9-819a-ae5a058ac069.png) + +Anything you add in `style:` will be put in a `