Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions adminforth/spa/src/components/ResourceListTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -418,8 +418,12 @@ const rowHeights = ref<number[]>([]);
const columnWidths = ref<number[]>([]);
watch(() => props.rows, (newRows) => {
// rows are set to null when new records are loading
rowHeights.value = newRows || !rowRefs.value ? [] : rowRefs.value.map((el: HTMLElement) => el.offsetHeight);
columnWidths.value = newRows || !headerRefs.value ? [] : [48, ...headerRefs.value.map((el: HTMLElement) => el.offsetWidth)];
if (!newRows) return;

nextTick(() => {
if (rowRefs.value) rowHeights.value = rowRefs.value.map((el: HTMLElement) => el.offsetHeight);
if (headerRefs.value) columnWidths.value = [48, ...headerRefs.value.map((el: HTMLElement) => el.offsetWidth)];
});
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

watch(() => props.rows, async (newRows) => {
  // rows are set to null when new records are loading
  rowHeights.value = newRows || !rowRefs.value ? [] : rowRefs.value.map((el: HTMLElement) => el.offsetHeight);
  columnWidths.value = newRows || !headerRefs.value ? [] : [48, ...headerRefs.value.map((el: HTMLElement) => el.offsetWidth)];
  if (!newRows) return; 

  await nextTick();

  if (rowRefs.value) {
    rowHeights.value = rowRefs.value.map((el: HTMLElement) => el.offsetHeight);
  }
  if (headerRefs.value) {
     columnWidths.value = [48, ...headerRefs.value.map((el: HTMLElement) => el.offsetWidth)];
  }
  
});


function addToCheckedValues(id: string) {
Expand Down
17 changes: 14 additions & 3 deletions adminforth/spa/src/components/ResourceListTableVirtual.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<tbody>
<!-- table header -->
<tr class="t-header sticky z-20 top-0 text-xs bg-lightListTableHeading dark:bg-darkListTableHeading dark:text-gray-400">
<td scope="col" class="list-table-header-cell p-4 sticky-column bg-lightListTableHeading dark:bg-darkListTableHeading">
<td ref="checkboxHeaderRef" scope="col" class="list-table-header-cell p-4 sticky-column bg-lightListTableHeading dark:bg-darkListTableHeading">
<Checkbox
:modelValue="allFromThisPageChecked"
:disabled="!rows || !rows.length"
Expand Down Expand Up @@ -441,10 +441,21 @@ const rowRefs = useTemplateRef<HTMLElement[]>('rowRefs');
const headerRefs = useTemplateRef<HTMLElement[]>('headerRefs');
const rowHeights = ref<number[]>([]);
const columnWidths = ref<number[]>([]);
const checkboxHeaderRef = useTemplateRef<HTMLElement>('checkboxHeaderRef');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const columnWidth = 48

watch(() => props.rows, (newRows) => {
// rows are set to null when new records are loading
rowHeights.value = newRows || !rowRefs.value ? [] : rowRefs.value.map((el: HTMLElement) => el.offsetHeight);
columnWidths.value = newRows || !headerRefs.value ? [] : [48, ...headerRefs.value.map((el: HTMLElement) => el.offsetWidth)];
if (!newRows) return;
nextTick(() => {
if (rowRefs.value) {
rowHeights.value = rowRefs.value.map((el: HTMLElement) => el.offsetHeight);
}
if (headerRefs.value) {
columnWidths.value = [
checkboxHeaderRef.value?.offsetWidth || 48,
...headerRefs.value.map((el: HTMLElement) => el.offsetWidth)
];
}
});
});

function addToCheckedValues(id: any) {
Expand Down