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
>