diff --git a/src/components/Table.astro b/src/components/Table.astro
index 7f4ba71..2c0ed34 100644
--- a/src/components/Table.astro
+++ b/src/components/Table.astro
@@ -200,106 +200,122 @@ const id = `table-${Math.random().toString(36).slice(2, 9)}`;
tbody.innerHTML = "";
mobileBody.innerHTML = "";
- dataset.forEach((row, i) => {
- const rowCls = resolveClasses(classNames?.row, row, i);
+ if (dataset.length > 0) {
+ dataset.forEach((row, i) => {
+ const rowCls = resolveClasses(classNames?.row, row, i);
- // 🖥️ Desktop
- let tr = `
`;
+ columns.forEach((col, colIndex) => {
+ let value = row[col.key] ?? "";
- tr += `
${value} | `;
- });
- tr += ``;
- tbody.insertAdjacentHTML("beforeend", tr);
+ const renderers = columnsRendererKey
+ ? window[columnsRendererKey]
+ : {};
+ columns.forEach((c) => {
+ if (renderers[c.key]) c.render = renderers[c.key];
+ });
- tbody.onclick = (e) => {
- if (!rowClickFn) return;
- const tr = e.target.closest("tr[data-row-idx]");
- if (!tr) return;
- const idx = Number(tr.dataset.rowIdx);
- const row = dataset[idx];
- rowClickFn(row);
- };
+ if (col.render) value = col.render(value, row);
- // 📱 Mobile
- let card = `
`;
- columns.forEach((col, colIndex) => {
- let value = row[col.key] ?? "";
+ const columnCls = resolveClasses(
+ classNames?.column,
+ col,
+ colIndex,
+ );
+ const cellCls = resolveClasses(classNames?.cell, {
+ row,
+ value,
+ col,
+ i,
+ colIndex,
+ });
- const renderers = columnsRendererKey
- ? window[columnsRendererKey]
- : {};
- columns.forEach((c) => {
- if (renderers[c.key]) c.render = renderers[c.key];
- });
-
- if (col.render) value = col.render(value, row);
-
- const columnCls = resolveClasses(
- classNames?.column,
- col,
- colIndex,
- );
- const cellCls = resolveClasses(classNames?.cell, {
- row,
- value,
- col,
- i,
- colIndex,
- });
-
- card += `
+ card += `
`;
- });
- card += `
`;
- mobileBody.insertAdjacentHTML("beforeend", card);
+ });
+ card += `
`;
+ mobileBody.insertAdjacentHTML("beforeend", card);
- mobileBody.onclick = (e) => {
- if (!rowClickFn) return;
- const tr = e.target.closest("div[data-row-idx]");
- if (!tr) return;
- const idx = Number(tr.dataset.rowIdx);
- const row = dataset[idx];
- rowClickFn(row);
- };
- });
+ mobileBody.onclick = (e) => {
+ if (!rowClickFn) return;
+ const tr = e.target.closest("div[data-row-idx]");
+ if (!tr) return;
+ const idx = Number(tr.dataset.rowIdx);
+ const row = dataset[idx];
+ rowClickFn(row);
+ };
+ });
+ } else {
+ const noDataRow = `