Skip to content

Commit 3baba9d

Browse files
committed
refactor(pagination): change div element to nav
1 parent 79a0683 commit 3baba9d

File tree

1 file changed

+58
-116
lines changed

1 file changed

+58
-116
lines changed

packages/kit-headless/src/components/pagination/pagination.tsx

Lines changed: 58 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -100,122 +100,64 @@ export const Pagination = component$<PaginationProps>(
100100
});
101101

102102
return (
103-
<>
104-
<div style={{ display: 'flex', alignItems: 'center', gap: gap }}>
105-
{/* PREV BUTTON */}
106-
<button
107-
type="button"
108-
aria-label={'prevAriaLabel'}
109-
disabled={selectedPage <= 1}
110-
onClick$={() => {
111-
if (selectedPage > 1) {
112-
onPageChange$(selectedPage - 1);
113-
}
114-
}}
115-
>
116-
<Slot name="prefix" />
117-
<span>PREV</span>
118-
</button>
119-
120-
{visibleItems.value.map((item: string | number, index: number) => {
121-
return (
122-
<span key={index}>
123-
{typeof item === 'string' ? (
124-
<button class={dividerClass}>...</button>
125-
) : (
126-
<button
127-
class={[selectedPage === item ? selectedClass : defaultClass]}
128-
type="button"
129-
aria-label={`Page ${item} of ${totalPages}`}
130-
aria-current={selectedPage === item}
131-
onClick$={() => {
132-
onPageChange$(item);
133-
}}
134-
>
135-
{item}
136-
</button>
137-
)}
138-
</span>
139-
);
140-
})}
141-
142-
{/* NEXT BUTTON */}
143-
<button
144-
type="button"
145-
aria-label={'nextAriaLabel'}
146-
disabled={selectedPage >= totalPages}
147-
onClick$={() => {
148-
if (selectedPage < totalPages) {
149-
onPageChange$(selectedPage + 1);
150-
}
151-
}}
152-
>
153-
<span>NEXT</span>
154-
<Slot name="suffix" />
155-
</button>
156-
</div>
157-
158-
{/*
159-
PREVIOUS IMPLEMENTATION
160-
It display all items
161-
*/}
162-
{/*
163-
<nav role="navigation" aria-label="pagination" data-testid="pagination">
164-
<button
165-
type="button"
166-
aria-label={'prevAriaLabel'}
167-
disabled={selectedPage <= 1}
168-
onClick$={() => {
169-
if (selectedPage !== 1) {
170-
onPageChange$(selectedPage - 1);
171-
}
172-
}}
173-
>
174-
<Slot name="prefix" />
175-
<span>PREV</span>
176-
</button>
177-
178-
<ul style={{ display: 'flex', gap: gap }}>
179-
{[...new Array(totalPages + 1).keys()].map((page: number) => {
180-
if (page === 0) return null;
181-
return (
182-
<li key={page}>
183-
<div>
184-
<button
185-
class={{
186-
defaultClass,
187-
[selectedClass || '']: selectedPage === page,
188-
}}
189-
type="button"
190-
aria-label={`Page ${page} of ${totalPages}`}
191-
aria-current={selectedPage === page}
192-
onClick$={() => {
193-
onPageChange$(page);
194-
}}
195-
>
196-
{page}
197-
</button>
198-
</div>
199-
</li>
200-
);
201-
})}
202-
</ul>
203-
<button
204-
type="button"
205-
aria-label={'nextAriaLabel'}
206-
disabled={selectedPage >= totalPages}
207-
onClick$={() => {
208-
if (selectedPage < totalPages) {
209-
onPageChange$(selectedPage + 1);
210-
}
211-
}}
212-
>
213-
<span>NEXT</span>
214-
<Slot name="suffix" />
215-
</button>
216-
</nav>
217-
*/}
218-
</>
103+
<nav
104+
role="navigation"
105+
aria-label="pagination"
106+
data-testid="pagination"
107+
style={{ display: 'flex', alignItems: 'center', gap: gap }}
108+
>
109+
{/* PREV BUTTON */}
110+
<button
111+
type="button"
112+
aria-label={'prevAriaLabel'}
113+
disabled={selectedPage <= 1}
114+
onClick$={() => {
115+
if (selectedPage > 1) {
116+
onPageChange$(selectedPage - 1);
117+
}
118+
}}
119+
>
120+
<Slot name="prefix" />
121+
<span>PREV</span>
122+
</button>
123+
124+
{visibleItems.value.map((item: string | number, index: number) => {
125+
return (
126+
<span key={index}>
127+
{typeof item === 'string' ? (
128+
<button class={dividerClass}>...</button>
129+
) : (
130+
<button
131+
class={[selectedPage === item ? selectedClass : defaultClass]}
132+
type="button"
133+
aria-label={`Page ${item} of ${totalPages}`}
134+
aria-current={selectedPage === item}
135+
onClick$={() => {
136+
onPageChange$(item);
137+
}}
138+
>
139+
{item}
140+
</button>
141+
)}
142+
</span>
143+
);
144+
})}
145+
146+
{/* NEXT BUTTON */}
147+
<button
148+
type="button"
149+
aria-label={'nextAriaLabel'}
150+
disabled={selectedPage >= totalPages}
151+
onClick$={() => {
152+
if (selectedPage < totalPages) {
153+
onPageChange$(selectedPage + 1);
154+
}
155+
}}
156+
>
157+
<span>NEXT</span>
158+
<Slot name="suffix" />
159+
</button>
160+
</nav>
219161
);
220162
},
221163
);

0 commit comments

Comments
 (0)