Improve popup card editor preview

This commit is contained in:
Thomas Lovén 2022-07-24 22:11:50 +00:00
parent 0b195e8841
commit 3303d86614
6 changed files with 213 additions and 39 deletions

1
.gitattributes vendored
View File

@ -1,2 +1,3 @@
custom_components/browser_mod/browser_mod.js binary
custom_components/browser_mod/browser_mod_panel.js binary
package-lock.json binary

View File

@ -1239,7 +1239,9 @@ class BrowserModPopup extends s {
`
: ""}
<style>
:host {
${this._style}
}
</style>
</ha-dialog>
`;
@ -1247,18 +1249,22 @@ class BrowserModPopup extends s {
static get styles() {
return r$2 `
ha-dialog {
--mdc-dialog-min-width: 400px;
--mdc-dialog-max-width: 600px;
--mdc-dialog-min-width: var(--popup-min-width, 400px);
--mdc-dialog-max-width: var(--popup-max-width, 600px);
--mdc-dialog-heading-ink-color: var(--primary-text-color);
--mdc-dialog-content-ink-color: var(--primary-text-color);
--justify-action-buttons: space-between;
--mdc-dialog-box-shadow: 0px 0px 0px var(--ha-card-border-width, 2px)
var(--ha-card-border-color, var(--divider-color, #e0e0e0));
--ha-dialog-border-radius: 8px;
--mdc-dialog-box-shadow: 0px 0px 0px
var(--popup-border-width, var(--ha-card-border-width, 2px))
var(
--popup-border-color,
var(--ha-card-border-color, var(--divider-color, #e0e0e0))
);
--ha-dialog-border-radius: var(--popup-border-radius, 8px);
--mdc-theme-surface: var(
--ha-card-background,
var(--card-background-color, white)
--popup-background-color,
var(--ha-card-background, var(--card-background-color, white))
);
}
:host([wide]) ha-dialog {
@ -1286,7 +1292,10 @@ class BrowserModPopup extends s {
app-toolbar {
flex-shrink: 0;
color: var(--primary-text-color);
background-color: var(--sidebar-background-color);
background-color: var(
--popup-header-background-color,
var(--popup-background-color, --sidebar-background-color)
);
}
ha-icon-button > * {
display: flex;
@ -1315,7 +1324,7 @@ class BrowserModPopup extends s {
--padding-y: 0px;
}
:host([actions]) .content {
border-bottom: 1px solid var(--divider-color);
border-bottom: 1px solid var(--popup-border-color, var(--divider-color));
--footer-height: 54px;
}
:host([wide]) .content {
@ -1374,7 +1383,8 @@ __decorate([
__decorate([
e$2()
], BrowserModPopup.prototype, "_style", void 0);
customElements.define("browser-mod-popup", BrowserModPopup);
if (!customElements.get("browser-mod-popup"))
customElements.define("browser-mod-popup", BrowserModPopup);
const PopupMixin = (SuperClass) => {
return class PopupMixinClass extends SuperClass {
constructor() {
@ -1555,6 +1565,11 @@ const configSchema = [
},
],
},
{
name: "style",
label: "CSS style",
selector: { text: { multiline: true } },
},
];
class PopupCardEditor extends s {
constructor() {
@ -1800,11 +1815,48 @@ class PopupCard extends s {
if (!this.editMode)
return $ ``;
return $ ` <ha-card>
<div>
<h2>${this._config.title}</h2>
<div class="app-toolbar">
${this._config.dismissable
? $ `
<ha-icon-button>
<ha-icon .icon=${"mdi:close"}></ha-icon>
</ha-icon-button>
`
: ""}
<div class="main-title">${this._config.title}</div>
</div>
${this._element}</ha-card
>`;
${this._element}
<style>
:host {
${this._config.style}
}
</style>
${this._config.right_button !== undefined ||
this._config.left_button !== undefined
? $ `
<footer class="mdc-dialog__actions">
<span>
${this._config.left_button !== undefined
? $ `
<mwc-button
.label=${this._config.left_button}
></mwc-button>
`
: ""}
</span>
<span>
${this._config.right_button !== undefined
? $ `
<mwc-button
.label=${this._config.right_button}
></mwc-button>
`
: ""}
</span>
</footer>
`
: ""}
</ha-card>`;
}
static get styles() {
return r$2 `
@ -1815,10 +1867,44 @@ class PopupCard extends s {
display: block !important;
border: 1px solid var(--primary-color);
}
h2 {
padding-left: 16px;
padding-top: 16px;
margin: 0;
ha-card {
background-color: var(
--popup-background-color,
var(--ha-card-background, var(--card-background-color, white))
);
}
.app-toolbar {
color: var(--primary-text-color);
background-color: var(
--popup-header-background-color,
var(--popup-background-color, --sidebar-background-color)
);
display: var(--layout-horizontal_-_display);
flex-direction: var(--layout-horizontal_-_flex-direction);
align-items: var(--layout-center_-_align-items);
height: 64px;
padding: 0 16px;
font-size: var(--app-toolbar-font-size, 20px);
}
ha-icon-button > * {
display: flex;
}
.main-title {
margin-left: 16px;
line-height: 1.3em;
max-height: 2.6em;
overflow: hidden;
text-overflow: ellipsis;
}
.mdc-dialog__actions {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 52px;
margin: 0px;
padding: 8px;
border-top: 1px solid transparent;
}
`;
}

View File

@ -116,7 +116,8 @@ popup:
name: Styles
description: CSS code to apply to the popup window
selector:
object:
text:
multiline: true
more_info:
description: "Show more-info dialog"

View File

@ -79,6 +79,11 @@ const configSchema = [
},
],
},
{
name: "style",
label: "CSS style",
selector: { text: { multiline: true } },
},
];
class PopupCardEditor extends LitElement {

View File

@ -90,11 +90,48 @@ class PopupCard extends LitElement {
render() {
if (!this.editMode) return html``;
return html` <ha-card>
<div>
<h2>${this._config.title}</h2>
<div class="app-toolbar">
${this._config.dismissable
? html`
<ha-icon-button>
<ha-icon .icon=${"mdi:close"}></ha-icon>
</ha-icon-button>
`
: ""}
<div class="main-title">${this._config.title}</div>
</div>
${this._element}</ha-card
>`;
${this._element}
<style>
:host {
${this._config.style}
}
</style>
${this._config.right_button !== undefined ||
this._config.left_button !== undefined
? html`
<footer class="mdc-dialog__actions">
<span>
${this._config.left_button !== undefined
? html`
<mwc-button
.label=${this._config.left_button}
></mwc-button>
`
: ""}
</span>
<span>
${this._config.right_button !== undefined
? html`
<mwc-button
.label=${this._config.right_button}
></mwc-button>
`
: ""}
</span>
</footer>
`
: ""}
</ha-card>`;
}
static get styles() {
@ -106,10 +143,44 @@ class PopupCard extends LitElement {
display: block !important;
border: 1px solid var(--primary-color);
}
h2 {
padding-left: 16px;
padding-top: 16px;
margin: 0;
ha-card {
background-color: var(
--popup-background-color,
var(--ha-card-background, var(--card-background-color, white))
);
}
.app-toolbar {
color: var(--primary-text-color);
background-color: var(
--popup-header-background-color,
var(--popup-background-color, --sidebar-background-color)
);
display: var(--layout-horizontal_-_display);
flex-direction: var(--layout-horizontal_-_flex-direction);
align-items: var(--layout-center_-_align-items);
height: 64px;
padding: 0 16px;
font-size: var(--app-toolbar-font-size, 20px);
}
ha-icon-button > * {
display: flex;
}
.main-title {
margin-left: 16px;
line-height: 1.3em;
max-height: 2.6em;
overflow: hidden;
text-overflow: ellipsis;
}
.mdc-dialog__actions {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 52px;
margin: 0px;
padding: 8px;
border-top: 1px solid transparent;
}
`;
}

View File

@ -157,7 +157,9 @@ class BrowserModPopup extends LitElement {
`
: ""}
<style>
:host {
${this._style}
}
</style>
</ha-dialog>
`;
@ -166,18 +168,22 @@ class BrowserModPopup extends LitElement {
static get styles() {
return css`
ha-dialog {
--mdc-dialog-min-width: 400px;
--mdc-dialog-max-width: 600px;
--mdc-dialog-min-width: var(--popup-min-width, 400px);
--mdc-dialog-max-width: var(--popup-max-width, 600px);
--mdc-dialog-heading-ink-color: var(--primary-text-color);
--mdc-dialog-content-ink-color: var(--primary-text-color);
--justify-action-buttons: space-between;
--mdc-dialog-box-shadow: 0px 0px 0px var(--ha-card-border-width, 2px)
var(--ha-card-border-color, var(--divider-color, #e0e0e0));
--ha-dialog-border-radius: 8px;
--mdc-dialog-box-shadow: 0px 0px 0px
var(--popup-border-width, var(--ha-card-border-width, 2px))
var(
--popup-border-color,
var(--ha-card-border-color, var(--divider-color, #e0e0e0))
);
--ha-dialog-border-radius: var(--popup-border-radius, 8px);
--mdc-theme-surface: var(
--ha-card-background,
var(--card-background-color, white)
--popup-background-color,
var(--ha-card-background, var(--card-background-color, white))
);
}
:host([wide]) ha-dialog {
@ -205,7 +211,10 @@ class BrowserModPopup extends LitElement {
app-toolbar {
flex-shrink: 0;
color: var(--primary-text-color);
background-color: var(--sidebar-background-color);
background-color: var(
--popup-header-background-color,
var(--popup-background-color, --sidebar-background-color)
);
}
ha-icon-button > * {
display: flex;
@ -234,7 +243,7 @@ class BrowserModPopup extends LitElement {
--padding-y: 0px;
}
:host([actions]) .content {
border-bottom: 1px solid var(--divider-color);
border-bottom: 1px solid var(--popup-border-color, var(--divider-color));
--footer-height: 54px;
}
:host([wide]) .content {
@ -261,7 +270,8 @@ class BrowserModPopup extends LitElement {
}
}
customElements.define("browser-mod-popup", BrowserModPopup);
if (!customElements.get("browser-mod-popup"))
customElements.define("browser-mod-popup", BrowserModPopup);
export const PopupMixin = (SuperClass) => {
return class PopupMixinClass extends SuperClass {