Compare commits

..

3 Commits

Author SHA1 Message Date
b1e42cfe6a fix indentation 2023-03-28 14:50:26 +05:30
604aafe520 fix filter pagination issue 2023-03-25 13:18:31 +05:30
ddd4ed77dc add dark mode in base table 2023-03-20 18:49:43 +05:30
2 changed files with 74 additions and 79 deletions

View File

@ -16,15 +16,13 @@
text-left
bg-white
border border-gray-200
dark:border-gray-600
rounded-md
min-h-[200px]
overflow-hidden
dark:bg-gray-700 dark:text-white
"
>
<div v-if="editor" class="editor-content">
<div class="flex justify-end p-2 border-b border-gray-200 dark:border-gray-600 md:hidden">
<div class="flex justify-end p-2 border-b border-gray-200 md:hidden">
<BaseDropdown width-class="w-48">
<template #activator>
<div
@ -44,7 +42,7 @@
<dots-vertical-icon class="w-6 h-6 text-gray-600" />
</div>
</template>
<div class="flex flex-wrap space-x-1 dark:text-white">
<div class="flex flex-wrap space-x-1">
<span
class="
flex
@ -55,9 +53,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bold') }"
:class="{ 'bg-gray-200': editor.isActive('bold') }"
@click="editor.chain().focus().toggleBold().run()"
>
<bold-icon class="h-3 cursor-pointer fill-current" />
@ -72,9 +69,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('italic') }"
:class="{ 'bg-gray-200': editor.isActive('italic') }"
@click="editor.chain().focus().toggleItalic().run()"
>
<italic-icon class="h-3 cursor-pointer fill-current" />
@ -89,9 +85,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('strike') }"
:class="{ 'bg-gray-200': editor.isActive('strike') }"
@click="editor.chain().focus().toggleStrike().run()"
>
<strikethrough-icon class="h-3 cursor-pointer fill-current" />
@ -106,9 +101,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('code') }"
:class="{ 'bg-gray-200': editor.isActive('code') }"
@click="editor.chain().focus().toggleCode().run()"
>
<coding-icon class="h-3 cursor-pointer fill-current" />
@ -123,9 +117,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('paragraph') }"
:class="{ 'bg-gray-200': editor.isActive('paragraph') }"
@click="editor.chain().focus().setParagraph().run()"
>
<paragraph-icon class="h-3 cursor-pointer fill-current" />
@ -140,10 +133,9 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{
'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 1 }),
'bg-gray-200': editor.isActive('heading', { level: 1 }),
}"
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
>
@ -159,10 +151,9 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{
'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 2 }),
'bg-gray-200': editor.isActive('heading', { level: 2 }),
}"
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
>
@ -178,10 +169,9 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{
'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 3 }),
'bg-gray-200': editor.isActive('heading', { level: 3 }),
}"
@click="editor.chain().focus().toggleHeading({ level: 3 }).run()"
>
@ -198,9 +188,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bulletList') }"
:class="{ 'bg-gray-200': editor.isActive('bulletList') }"
@click="editor.chain().focus().toggleBulletList().run()"
>
<list-ul-icon class="h-3 cursor-pointer fill-current" />
@ -215,9 +204,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('orderedList') }"
:class="{ 'bg-gray-200': editor.isActive('orderedList') }"
@click="editor.chain().focus().toggleOrderedList().run()"
>
<list-icon class="h-3 cursor-pointer fill-current" />
@ -232,9 +220,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('blockquote') }"
:class="{ 'bg-gray-200': editor.isActive('blockquote') }"
@click="editor.chain().focus().toggleBlockquote().run()"
>
<quote-icon class="h-3 cursor-pointer fill-current" />
@ -249,9 +236,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('codeBlock') }"
:class="{ 'bg-gray-200': editor.isActive('codeBlock') }"
@click="editor.chain().focus().toggleCodeBlock().run()"
>
<code-block-icon class="h-3 cursor-pointer fill-current" />
@ -266,9 +252,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('undo') }"
:class="{ 'bg-gray-200': editor.isActive('undo') }"
@click="editor.chain().focus().undo().run()"
>
<undo-icon class="h-3 cursor-pointer fill-current" />
@ -283,9 +268,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('redo') }"
:class="{ 'bg-gray-200': editor.isActive('redo') }"
@click="editor.chain().focus().redo().run()"
>
<redo-icon class="h-3 cursor-pointer fill-current" />
@ -293,7 +277,7 @@
</div>
</BaseDropdown>
</div>
<div class="hidden p-2 border-b border-gray-200 dark:border-gray-600 md:flex">
<div class="hidden p-2 border-b border-gray-200 md:flex">
<div class="flex flex-wrap space-x-1">
<span
class="
@ -305,9 +289,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bold') }"
:class="{ 'bg-gray-200': editor.isActive('bold') }"
@click="editor.chain().focus().toggleBold().run()"
>
<bold-icon class="h-3 cursor-pointer fill-current" />
@ -322,9 +305,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('italic') }"
:class="{ 'bg-gray-200': editor.isActive('italic') }"
@click="editor.chain().focus().toggleItalic().run()"
>
<italic-icon class="h-3 cursor-pointer fill-current" />
@ -339,9 +321,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('strike') }"
:class="{ 'bg-gray-200': editor.isActive('strike') }"
@click="editor.chain().focus().toggleStrike().run()"
>
<strikethrough-icon class="h-3 cursor-pointer fill-current" />
@ -356,9 +337,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('code') }"
:class="{ 'bg-gray-200': editor.isActive('code') }"
@click="editor.chain().focus().toggleCode().run()"
>
<coding-icon class="h-3 cursor-pointer fill-current" />
@ -373,9 +353,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('paragraph') }"
:class="{ 'bg-gray-200': editor.isActive('paragraph') }"
@click="editor.chain().focus().setParagraph().run()"
>
<paragraph-icon class="h-3 cursor-pointer fill-current" />
@ -390,9 +369,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 1 }) }"
:class="{ 'bg-gray-200': editor.isActive('heading', { level: 1 }) }"
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
>
H1
@ -407,9 +385,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 2 }) }"
:class="{ 'bg-gray-200': editor.isActive('heading', { level: 2 }) }"
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
>
H2
@ -424,9 +401,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('heading', { level: 3 }) }"
:class="{ 'bg-gray-200': editor.isActive('heading', { level: 3 }) }"
@click="editor.chain().focus().toggleHeading({ level: 3 }).run()"
>
H3
@ -442,9 +418,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('bulletList') }"
:class="{ 'bg-gray-200': editor.isActive('bulletList') }"
@click="editor.chain().focus().toggleBulletList().run()"
>
<list-ul-icon class="h-3 cursor-pointer fill-current" />
@ -459,9 +434,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('orderedList') }"
:class="{ 'bg-gray-200': editor.isActive('orderedList') }"
@click="editor.chain().focus().toggleOrderedList().run()"
>
<list-icon class="h-3 cursor-pointer fill-current" />
@ -476,9 +450,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('blockquote') }"
:class="{ 'bg-gray-200': editor.isActive('blockquote') }"
@click="editor.chain().focus().toggleBlockquote().run()"
>
<quote-icon class="h-3 cursor-pointer fill-current" />
@ -493,9 +466,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('codeBlock') }"
:class="{ 'bg-gray-200': editor.isActive('codeBlock') }"
@click="editor.chain().focus().toggleCodeBlock().run()"
>
<code-block-icon class="h-3 cursor-pointer fill-current" />
@ -510,9 +482,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('undo') }"
:class="{ 'bg-gray-200': editor.isActive('undo') }"
@click="editor.chain().focus().undo().run()"
>
<undo-icon class="h-3 cursor-pointer fill-current" />
@ -527,9 +498,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive('redo') }"
:class="{ 'bg-gray-200': editor.isActive('redo') }"
@click="editor.chain().focus().redo().run()"
>
<redo-icon class="h-3 cursor-pointer fill-current" />
@ -544,9 +514,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'left' }) }"
:class="{ 'bg-gray-200': editor.isActive({ textAlign: 'left' }) }"
@click="editor.chain().focus().setTextAlign('left').run()"
>
<menu-alt2-icon class="h-5 cursor-pointer fill-current" />
@ -561,9 +530,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'right' }) }"
:class="{ 'bg-gray-200': editor.isActive({ textAlign: 'right' }) }"
@click="editor.chain().focus().setTextAlign('right').run()"
>
<menu-alt3-icon class="h-5 cursor-pointer fill-current" />
@ -578,10 +546,9 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{
'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'justify' }),
'bg-gray-200': editor.isActive({ textAlign: 'justify' }),
}"
@click="editor.chain().focus().setTextAlign('justify').run()"
>
@ -597,9 +564,8 @@
rounded-sm
cursor-pointer
hover:bg-gray-100
dark:hover:bg-gray-800
"
:class="{ 'bg-gray-200 dark:bg-gray-900': editor.isActive({ textAlign: 'center' }) }"
:class="{ 'bg-gray-200': editor.isActive({ textAlign: 'center' }) }"
@click="editor.chain().focus().setTextAlign('center').run()"
>
<menu-center-icon class="h-5 cursor-pointer fill-current" />

View File

@ -7,11 +7,18 @@
relative
overflow-hidden
bg-white
border-b border-gray-200
border-b
border-gray-200
shadow
sm:rounded-lg
"
dark:shadow-glass
dark:border
dark:border-white/10
dark:bg-gray-800/70
"
>
<BaseDarkHighlight v-if="darkHighlight" class="z-[-1]" />
<slot name="header" />
<table :class="tableClass">
<thead :class="theadClass">
@ -51,7 +58,11 @@
<tr
v-for="placeRow in placeholderCount"
:key="placeRow"
:class="placeRow % 2 === 0 ? 'bg-white' : 'bg-gray-50'"
:class="
placeRow % 2 === 0
? 'bg-white dark:bg-gray-800'
: 'bg-gray-50 dark:bg-gray-800'
"
>
<td
v-for="column in columns"
@ -75,7 +86,11 @@
<tr
v-for="(row, index) in sortedRows"
:key="index"
:class="index % 2 === 0 ? 'bg-white' : 'bg-gray-50'"
:class="
index % 2 === 0
? 'bg-white dark:bg-transparent'
: 'bg-gray-50 dark:bg-gray-700/20 dark:border-y dark:border-gray-600'
"
>
<td
v-for="column in columns"
@ -103,7 +118,10 @@
justify-center
w-full
h-full
bg-white bg-opacity-60
bg-white
bg-opacity-60
dark:bg-gray-700
dark:bg-opacity-60
"
>
<SpinnerIcon class="w-10 h-10 text-primary-500" />
@ -163,9 +181,12 @@ const props = defineProps({
sortOrder: { type: String, default: '' },
tableClass: {
type: String,
default: 'min-w-full divide-y divide-gray-200',
default: 'min-w-full divide-y divide-gray-200 dark:divide-gray-600',
},
theadClass: {
type: String,
default: 'bg-gray-50 dark:bg-gray-800 dark:text-white',
},
theadClass: { type: String, default: 'bg-gray-50' },
tbodyClass: { type: String, default: '' },
noResultsMessage: {
type: String,
@ -186,6 +207,10 @@ const props = defineProps({
type: Number,
default: 3,
},
darkHighlight: {
type: Boolean,
default: false,
},
})
let rows = reactive([])
@ -236,7 +261,7 @@ function getColumn(columnName) {
function getThClass(column) {
let classes =
'whitespace-nowrap px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider'
'whitespace-nowrap px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:text-white'
if (column.defaultThClass) {
classes = column.defaultThClass
@ -256,7 +281,8 @@ function getThClass(column) {
}
function getTdClass(column) {
let classes = 'px-6 py-4 text-sm text-gray-500 whitespace-nowrap'
let classes =
'px-6 py-4 text-sm text-gray-500 whitespace-nowrap dark:text-gray-300'
if (column.defaultTdClass) {
classes = column.defaultTdClass
@ -309,6 +335,7 @@ function changeSorting(column) {
}
if (!usesLocalData.value) {
if (pagination.value) pagination.value.currentPage = 1
mapDataToRows()
}
}
@ -326,7 +353,9 @@ async function pageChange(page) {
await mapDataToRows()
}
async function refresh() {
async function refresh(isPreservePage = false) {
if (pagination.value && !isPreservePage) pagination.value.currentPage = 1
await mapDataToRows()
}