cynx-lib 1.3.59 → 1.3.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/vue/components/Pagination.vue +27 -10
package/package.json
CHANGED
|
@@ -11,6 +11,7 @@ const props = withDefaults(
|
|
|
11
11
|
perPage?: number;
|
|
12
12
|
pageSize?: number;
|
|
13
13
|
disabled?: boolean;
|
|
14
|
+
size?: "xs" | "sm" | "md" | "lg";
|
|
14
15
|
}>(),
|
|
15
16
|
{
|
|
16
17
|
page: 1,
|
|
@@ -18,6 +19,7 @@ const props = withDefaults(
|
|
|
18
19
|
total: 0,
|
|
19
20
|
perPage: 20,
|
|
20
21
|
disabled: false,
|
|
22
|
+
size: "md",
|
|
21
23
|
}
|
|
22
24
|
);
|
|
23
25
|
|
|
@@ -69,6 +71,20 @@ const handlePageChange = (newPage: number) => {
|
|
|
69
71
|
emit("update:page", newPage);
|
|
70
72
|
emit("change", newPage);
|
|
71
73
|
};
|
|
74
|
+
|
|
75
|
+
const iconSize = computed(() => {
|
|
76
|
+
if (props.size === "xs") return 13;
|
|
77
|
+
if (props.size === "sm") return 14;
|
|
78
|
+
if (props.size === "lg") return 18;
|
|
79
|
+
return 16;
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const buttonHeightClass = computed(() => {
|
|
83
|
+
if (props.size === "xs") return "h-6 min-w-[24px] text-[11px]";
|
|
84
|
+
if (props.size === "sm") return "h-7 min-w-[28px] text-[11.5px]";
|
|
85
|
+
if (props.size === "lg") return "h-9 min-w-[36px] text-sm";
|
|
86
|
+
return "h-8 min-w-[32px] text-xs";
|
|
87
|
+
});
|
|
72
88
|
</script>
|
|
73
89
|
|
|
74
90
|
<template>
|
|
@@ -80,30 +96,31 @@ const handlePageChange = (newPage: number) => {
|
|
|
80
96
|
<div v-else />
|
|
81
97
|
|
|
82
98
|
<!-- Page Buttons -->
|
|
83
|
-
<div class="flex items-center gap-1">
|
|
99
|
+
<div class="flex items-center gap-1.5">
|
|
84
100
|
<Button
|
|
85
|
-
variant="
|
|
86
|
-
size="
|
|
101
|
+
variant="icon"
|
|
102
|
+
:size="size"
|
|
87
103
|
:disabled="disabled || page <= 1"
|
|
88
104
|
title="Previous page"
|
|
89
105
|
@click="handlePageChange(page - 1)"
|
|
90
106
|
>
|
|
91
107
|
<template #icon>
|
|
92
|
-
<ChevronLeft :size="
|
|
108
|
+
<ChevronLeft :size="iconSize" />
|
|
93
109
|
</template>
|
|
94
110
|
</Button>
|
|
95
111
|
|
|
96
112
|
<template v-for="(item, i) in pageItems" :key="`p-${i}`">
|
|
97
113
|
<span
|
|
98
114
|
v-if="item === '...'"
|
|
99
|
-
class="
|
|
115
|
+
:class="[buttonHeightClass, 'inline-flex items-center justify-center text-slate-400 dark:text-slate-500 font-medium select-none']"
|
|
100
116
|
>
|
|
101
117
|
…
|
|
102
118
|
</span>
|
|
103
119
|
<Button
|
|
120
|
+
v-else
|
|
104
121
|
:variant="item === page ? 'primary' : 'ghost'"
|
|
105
|
-
size="
|
|
106
|
-
class="
|
|
122
|
+
:size="size"
|
|
123
|
+
:class="[buttonHeightClass, 'px-2 font-semibold transition-colors', item !== page ? 'hover:bg-slate-100 dark:hover:bg-slate-800 text-slate-700 dark:text-slate-200' : '']"
|
|
107
124
|
:disabled="disabled"
|
|
108
125
|
@click="handlePageChange(Number(item))"
|
|
109
126
|
>
|
|
@@ -112,14 +129,14 @@ const handlePageChange = (newPage: number) => {
|
|
|
112
129
|
</template>
|
|
113
130
|
|
|
114
131
|
<Button
|
|
115
|
-
variant="
|
|
116
|
-
size="
|
|
132
|
+
variant="icon"
|
|
133
|
+
:size="size"
|
|
117
134
|
:disabled="disabled || page >= totalPages"
|
|
118
135
|
title="Next page"
|
|
119
136
|
@click="handlePageChange(page + 1)"
|
|
120
137
|
>
|
|
121
138
|
<template #icon>
|
|
122
|
-
<ChevronRight :size="
|
|
139
|
+
<ChevronRight :size="iconSize" />
|
|
123
140
|
</template>
|
|
124
141
|
</Button>
|
|
125
142
|
</div>
|