gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/common/components/no-propogation-button/index.tsx · v0.7.0
Source
1 4708fcb Dawsh 2y ago import { Row } from "@tanstack/react-table"
2 4708fcb Dawsh 2y ago import { type PropsWithChildren, useCallback } from 'react'
3 4708fcb Dawsh 2y ago import {
4 4708fcb Dawsh 2y ago type ColumnActions
5 7389ad0 Mardin 2y ago } from "@marzneshin/libs/entity-table";
6 4708fcb Dawsh 2y ago
7 4708fcb Dawsh 2y ago interface NoPropogationButtonProps<T> {
8 4708fcb Dawsh 2y ago actions: ColumnActions<T>,
9 4708fcb Dawsh 2y ago row: Row<T>,
10 4708fcb Dawsh 2y ago }
11 4708fcb Dawsh 2y ago
12 4708fcb Dawsh 2y ago export function NoPropogationButton<T>({ children, actions, row }: NoPropogationButtonProps<T> & PropsWithChildren) {
13 4708fcb Dawsh 2y ago const handleKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {
14 4708fcb Dawsh 2y ago if (e.key === 'Enter' || e.key === ' ') {
15 4708fcb Dawsh 2y ago e.preventDefault();
16 4708fcb Dawsh 2y ago e.stopPropagation();
17 4708fcb Dawsh 2y ago actions.onOpen(row.original);
18 4708fcb Dawsh 2y ago }
19 4708fcb Dawsh 2y ago }, [actions, row.original]);
20 4708fcb Dawsh 2y ago
21 4708fcb Dawsh 2y ago return (
22 4708fcb Dawsh 2y ago <div
23 4708fcb Dawsh 2y ago className="flex flex-row gap-2 items-center"
24 4708fcb Dawsh 2y ago onClick={(e) => e.stopPropagation()}
25 4708fcb Dawsh 2y ago onKeyDown={handleKeyDown}
26 4708fcb Dawsh 2y ago tabIndex={0}
27 4708fcb Dawsh 2y ago role="button"
28 4708fcb Dawsh 2y ago >
29 4708fcb Dawsh 2y ago {children}
30 4708fcb Dawsh 2y ago </div>
31 4708fcb Dawsh 2y ago )
32 4708fcb Dawsh 2y ago }
33 4708fcb Dawsh 2y ago