Skip to content

Commit

Permalink
fix: add skeleton and pagination to NeTable
Browse files Browse the repository at this point in the history
  • Loading branch information
andre8244 committed May 6, 2024
1 parent df29599 commit ab3a4af
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 3 deletions.
27 changes: 26 additions & 1 deletion src/components/NeTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
-->
<script lang="ts" setup>
import { type PropType } from 'vue'
import NeTableSkeleton from './NeTableSkeleton.vue'

export type Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl'

Expand All @@ -15,6 +16,18 @@ defineProps({
cardBreakpoint: {
type: String as PropType<Breakpoint>,
default: 'md'
},
loading: {
type: Boolean,
default: false
},
skeletonRows: {
type: Number,
default: 8
},
skeletonColumns: {
type: Number,
default: 4
}
})

Expand All @@ -36,7 +49,19 @@ const tableCardStyle: Record<Breakpoint, string> = {
tableCardStyle[cardBreakpoint]
]"
>
<slot />
<template v-if="loading">
<NeTableSkeleton
:rows="skeletonRows"
:columns="skeletonColumns"
:card-breakpoint="cardBreakpoint"
/>
</template>
<template v-else>
<slot />
</template>
</table>
</div>
<div v-if="$slots.paginator" class="mt-6 flex flex-row justify-end">
<slot name="paginator" />
</div>
</template>
44 changes: 44 additions & 0 deletions src/components/NeTableSkeleton.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!--
Copyright (C) 2024 Nethesis S.r.l.
SPDX-License-Identifier: GPL-3.0-or-later
-->
<script lang="ts" setup>
import { type PropType } from 'vue'
import NeTableHead from './NeTableHead.vue'
import NeTableHeadCell from './NeTableHeadCell.vue'
import NeSkeleton from './NeSkeleton.vue'
import NeTableBody from './NeTableBody.vue'
import NeTableRow from './NeTableRow.vue'
import NeTableCell from './NeTableCell.vue'

export type Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl'

defineProps({
rows: {
type: Number,
required: true
},
columns: {
type: Number,
required: true
},
cardBreakpoint: {
type: String as PropType<Breakpoint>,
default: 'md'
}
})
</script>
<template>
<NeTableHead :card-breakpoint="cardBreakpoint">
<NeTableHeadCell v-for="i in columns" :key="i">
<NeSkeleton size="lg" />
</NeTableHeadCell>
</NeTableHead>
<NeTableBody :card-breakpoint="cardBreakpoint">
<NeTableRow v-for="i in rows" :key="i" :card-breakpoint="cardBreakpoint">
<NeTableCell v-for="j in columns" :key="j" :card-breakpoint="cardBreakpoint" data-label="">
<NeSkeleton size="lg" />
</NeTableCell>
</NeTableRow>
</NeTableBody>
</template>
15 changes: 13 additions & 2 deletions stories/NeTable.stories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ const meta: Meta<typeof NeTable> = {
},
args: {
ariaLabel: 'Aria label for the table',
cardBreakpoint: 'md'
cardBreakpoint: 'md',
loading: false,
skeletonRows: 8,
skeletonColumns: 4
},
render: (args) => ({
components: {
Expand Down Expand Up @@ -84,4 +87,12 @@ const meta: Meta<typeof NeTable> = {

export default meta

export const Default: StoryObj<typeof NeTable> = {}
export const Default: StoryObj<typeof NeTable> = {
args: {}
}

export const Loading: StoryObj<typeof NeTable> = {
args: {
loading: true
}
}

0 comments on commit ab3a4af

Please sign in to comment.