From a8f9f7ac7ace6eb7ab6c02dd053884bbefb33d49 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 3 Apr 2020 17:46:19 +0200 Subject: [PATCH] Datatable fab padding (#5432) * Add padding for fab * Add hasFab property * Simplify * Remove query * Change to empty row --- src/components/data-table/ha-data-table.ts | 145 ++++++++++-------- src/layouts/hass-tabs-subpage-data-table.ts | 6 + .../config/areas/ha-config-areas-dashboard.ts | 1 + .../config/automation/ha-automation-picker.ts | 1 + .../config/helpers/ha-config-helpers.ts | 1 + .../ha-config-lovelace-dashboards.ts | 1 + .../resources/ha-config-lovelace-resources.ts | 1 + src/panels/config/scene/ha-scene-dashboard.ts | 1 + src/panels/config/script/ha-script-picker.ts | 1 + src/panels/config/users/ha-config-users.ts | 1 + 10 files changed, 92 insertions(+), 67 deletions(-) diff --git a/src/components/data-table/ha-data-table.ts b/src/components/data-table/ha-data-table.ts index ad3f1d0a2c..b091357df9 100644 --- a/src/components/data-table/ha-data-table.ts +++ b/src/components/data-table/ha-data-table.ts @@ -86,6 +86,7 @@ export class HaDataTable extends LitElement { @property({ type: Object }) public columns: DataTableColumnContainer = {}; @property({ type: Array }) public data: DataTableRowData[] = []; @property({ type: Boolean }) public selectable = false; + @property({ type: Boolean }) public hasFab = false; @property({ type: Boolean, attribute: "auto-height" }) public autoHeight = false; @property({ type: String }) public id = "id"; @@ -98,6 +99,7 @@ export class HaDataTable extends LitElement { @property({ type: Array }) private _filteredData: DataTableRowData[] = []; @query("slot[name='header']") private _header!: HTMLSlotElement; @query(".mdc-data-table__table") private _table!: HTMLDivElement; + private _checkableRowsCount?: number; private _checkedRows: string[] = []; private _sortColumns: { @@ -281,75 +283,84 @@ export class HaDataTable extends LitElement { : html`
${scroll({ - items: this._filteredData, - renderItem: (row: DataTableRowData) => html` -
- ${this.selectable - ? html` -
- { + if (row.empty) { + return html` +
+ `; + } + return html` +
+ ${this.selectable + ? html` +
- + + +
+ ` + : ""} + ${Object.entries(this.columns).map((columnEntry) => { + const [key, column] = columnEntry; + return html` +
+ ${column.template + ? column.template(row[key], row) + : row[key]}
- ` - : ""} - ${Object.entries(this.columns).map((columnEntry) => { - const [key, column] = columnEntry; - return html` -
- ${column.template - ? column.template(row[key], row) - : row[key]} -
- `; - })} -
- `, + `; + })} +
+ `; + }, })}
`} diff --git a/src/layouts/hass-tabs-subpage-data-table.ts b/src/layouts/hass-tabs-subpage-data-table.ts index 0d7c6ce4ad..143b965cbf 100644 --- a/src/layouts/hass-tabs-subpage-data-table.ts +++ b/src/layouts/hass-tabs-subpage-data-table.ts @@ -40,6 +40,11 @@ export class HaTabsSubpageDataTable extends LitElement { * @type {Boolean} */ @property({ type: Boolean }) public selectable = false; + /** + * Do we need to add padding for a fab. + * @type {Boolean} + */ + @property({ type: Boolean }) public hasFab = false; /** * Field with a unique id per entry in data. * @type {String} @@ -111,6 +116,7 @@ export class HaTabsSubpageDataTable extends LitElement { .data=${this.data} .filter=${this.filter} .selectable=${this.selectable} + .hasFab=${this.hasFab} .id=${this.id} .noDataText=${this.noDataText} > diff --git a/src/panels/config/areas/ha-config-areas-dashboard.ts b/src/panels/config/areas/ha-config-areas-dashboard.ts index 81256f562a..021a731b45 100644 --- a/src/panels/config/areas/ha-config-areas-dashboard.ts +++ b/src/panels/config/areas/ha-config-areas-dashboard.ts @@ -108,6 +108,7 @@ export class HaConfigAreasDashboard extends LitElement { "ui.panel.config.areas.picker.no_areas" )} id="area_id" + hasFab >