@nodeblocks/frontend-list-users-block 0.2.2 → 0.3.0

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.
@@ -1,16 +1,19 @@
1
- import { Stack, Box, TabsProps, TypographyProps } from '@mui/material';
2
- import { ComponentProps, ReactNode } from 'react';
3
- import { ListUsersContextValue } from './context';
4
- import { BlocksOverride } from './lib';
5
- import './list-users.css';
6
- export interface ListUsersRowData {
1
+ import { StackProps } from '@mui/material';
2
+ import { ComponentProps, type ReactNode, type SyntheticEvent } from 'react';
3
+ import { BaseTable, type BaseTableSearchChip, type BlocksOverride } from '@nodeblocks/frontend-base-block';
4
+ export interface ListUsersRowData extends Record<string, unknown> {
7
5
  id: string;
8
6
  createdAt: string;
9
7
  name: string;
10
8
  status: string;
11
9
  }
10
+ type ListUsersRowActionType = 'activate' | 'deactivate';
11
+ type ListUsersStatusMatch = {
12
+ inUse: string;
13
+ notInUse: string;
14
+ };
12
15
  export type TabData = {
13
- key?: string;
16
+ key: string;
14
17
  label: string;
15
18
  isDisabled?: boolean;
16
19
  subtitle?: string;
@@ -25,25 +28,85 @@ export interface PaginationProps {
25
28
  /** Total number of pages in the pagination. */
26
29
  totalPages: number;
27
30
  }
28
- declare const ListUsers: {
29
- <Tabs extends TabData[] = TabData[], CustomBlocks extends Record<string, ReactNode> = {}>({ sx, spacing, className, children, ...props }: Omit<ComponentProps<typeof Stack>, "children"> & Required<Pick<ListUsersContextValue<Tabs>, "listUsersTitle" | "labels" | "data">> & Partial<Pick<ListUsersContextValue<Tabs>, "isLoading" | "onNavigate" | "pagination" | "rowHref" | "tabs" | "currentTab" | "onTabChange">> & {
30
- children?: BlocksOverride<typeof defaultBlocks, CustomBlocks>;
31
- }): import("react/jsx-runtime").JSX.Element;
32
- Title(props: Partial<TypographyProps & Pick<ListUsersContextValue, "listUsersTitle">>): import("react/jsx-runtime").JSX.Element;
33
- Header(props: Partial<ComponentProps<typeof Box>>): import("react/jsx-runtime").JSX.Element;
34
- Loader(props: Partial<ComponentProps<typeof Stack>>): import("react/jsx-runtime").JSX.Element;
35
- Content(props: Partial<ComponentProps<typeof Box> & Pick<ListUsersContextValue, "isLoading">>): import("react/jsx-runtime").JSX.Element;
36
- Tabs<Tabs extends TabData[]>(props: Partial<Omit<TabsProps, "value" | "onChange" | "variant"> & Pick<ListUsersContextValue<Tabs>, "tabs" | "currentTab" | "onTabChange">>): import("react/jsx-runtime").JSX.Element | null;
37
- Table<Tabs extends TabData[]>(props: Partial<ComponentProps<typeof Stack> & Pick<ListUsersContextValue<Tabs>, "labels" | "data" | "rowHref" | "onNavigate" | "pagination">>): import("react/jsx-runtime").JSX.Element | null;
38
- };
39
- declare const defaultBlocks: {
40
- title: import("react").ReactElement<Partial<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "p" | "style" | "color" | "left" | "right" | "children" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "bottom" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "sx" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping"> & {
41
- component?: React.ElementType;
42
- } & Pick<ListUsersContextValue, "listUsersTitle">>, (props: Partial<TypographyProps & Pick<ListUsersContextValue, "listUsersTitle">>) => import("react/jsx-runtime").JSX.Element>;
43
- header: import("react").ReactElement<Partial<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>>>, (props: Partial<ComponentProps<typeof Box>>) => import("react/jsx-runtime").JSX.Element>;
44
- content: import("react").ReactElement<Partial<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & Pick<ListUsersContextValue, "isLoading">>, (props: Partial<ComponentProps<typeof Box> & Pick<ListUsersContextValue, "isLoading">>) => import("react/jsx-runtime").JSX.Element>;
45
- tabs: import("react").ReactElement<Partial<Omit<TabsProps, "onChange" | "variant" | "value"> & Pick<ListUsersContextValue<TabData[]>, "tabs" | "currentTab" | "onTabChange">>, <Tabs extends TabData[]>(props: Partial<Omit<TabsProps, "value" | "onChange" | "variant"> & Pick<ListUsersContextValue<Tabs>, "tabs" | "currentTab" | "onTabChange">>) => import("react/jsx-runtime").JSX.Element | null>;
46
- table: import("react").ReactElement<Partial<import("@mui/material").StackOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/material/OverridableComponent").CommonProps | keyof import("@mui/material").StackOwnProps> & Pick<ListUsersContextValue<TabData[]>, "data" | "labels" | "onNavigate" | "pagination" | "rowHref">>, <Tabs extends TabData[]>(props: Partial<ComponentProps<typeof Stack> & Pick<ListUsersContextValue<Tabs>, "labels" | "data" | "rowHref" | "onNavigate" | "pagination">>) => import("react/jsx-runtime").JSX.Element | null>;
31
+ type ListUsersLabels = {
32
+ emptyStateMessage: string;
33
+ searchFieldPlaceholder: string;
34
+ rowActions?: {
35
+ activate: string;
36
+ deactivate: string;
37
+ };
38
+ headerRow: {
39
+ createdAt: string;
40
+ name: string;
41
+ status: string;
42
+ };
43
+ cellData: {
44
+ statusActive: string;
45
+ statusInactive: string;
46
+ };
47
+ };
48
+ type ListUsersValue<TTabs extends TabData[] = TabData[]> = {
49
+ listUsersTitle: ReactNode;
50
+ isLoading?: boolean;
51
+ labels: ListUsersLabels;
52
+ searchValue?: string;
53
+ onSearchFieldChange?: (value: string) => void;
54
+ onSearchSubmit?: () => void;
55
+ onItemActivate?: (rowId: ListUsersRowData['id']) => void;
56
+ onItemDeactivate?: (rowId: ListUsersRowData['id']) => void;
57
+ shouldShowDropdownMenu?: (row: ListUsersRowData) => boolean;
58
+ resolveRowAction?: (row: ListUsersRowData) => ListUsersRowActionType[] | undefined;
59
+ statusMatch?: ListUsersStatusMatch;
60
+ onNavigate?: (to: string) => void;
61
+ pagination?: PaginationProps;
62
+ data: ListUsersRowData[];
63
+ rowHref?: (row: ListUsersRowData) => string;
64
+ tabs?: TTabs;
65
+ currentTab?: TTabs[number]['key'];
66
+ onTabChange?: (tab: TTabs[number]['key']) => void;
67
+ searchChipsTitle?: ReactNode;
68
+ searchChips?: BaseTableSearchChip[];
69
+ onSearchChipDelete?: (chip: BaseTableSearchChip, index: number, event: SyntheticEvent) => void;
70
+ };
71
+ type ListUsersDefaultBlocks = {
72
+ title: ReactNode;
73
+ action: ReactNode;
74
+ header: ReactNode;
75
+ loader: ReactNode;
76
+ content: ReactNode;
77
+ tabs: ReactNode;
78
+ searchChips: ReactNode;
79
+ table: ReactNode;
80
+ pagination: ReactNode;
81
+ };
82
+ type ListUsersRootPassthroughProps = Omit<StackProps, 'children'>;
83
+ type ListUsersProps<TTabs extends TabData[] = TabData[], CustomBlocks extends Record<string, ReactNode> = {}> = ListUsersRootPassthroughProps & Required<Pick<ListUsersValue<TTabs>, 'listUsersTitle' | 'labels' | 'data'>> & Partial<Pick<ListUsersValue<TTabs>, 'isLoading' | 'searchValue' | 'onSearchFieldChange' | 'onSearchSubmit' | 'onItemActivate' | 'onItemDeactivate' | 'shouldShowDropdownMenu' | 'resolveRowAction' | 'statusMatch' | 'onNavigate' | 'pagination' | 'rowHref' | 'tabs' | 'currentTab' | 'onTabChange' | 'searchChipsTitle' | 'searchChips' | 'onSearchChipDelete'>> & {
84
+ children?: BlocksOverride<ListUsersDefaultBlocks, CustomBlocks>;
85
+ };
86
+ type ListUsersTitleProps = ComponentProps<typeof BaseTable.Header.Title> & {
87
+ listUsersTitle?: ReactNode;
88
+ };
89
+ type ListUsersHeaderProps = ComponentProps<typeof BaseTable.Header>;
90
+ type ListUsersActionProps = ComponentProps<typeof BaseTable.Header.Actions> & Partial<Pick<ListUsersValue, 'labels' | 'searchValue' | 'onSearchFieldChange' | 'onSearchSubmit'>>;
91
+ type ListUsersLoaderProps = ComponentProps<typeof BaseTable.Content.Loader>;
92
+ type ListUsersContentProps = ComponentProps<typeof BaseTable.Content>;
93
+ type ListUsersTabsProps = ComponentProps<typeof BaseTable.Tabs<ListUsersRowData>>;
94
+ type ListUsersBaseTableGridProps = ComponentProps<typeof BaseTable.Content.Grid<ListUsersRowData>>;
95
+ type ListUsersTableProps = Omit<ListUsersBaseTableGridProps, 'columns' | 'rows' | 'rowActions' | 'actionColumn' | 'onRowClick' | 'noRowsOverlay'> & Partial<Pick<ListUsersValue, 'labels' | 'data' | 'statusMatch' | 'onItemActivate' | 'onItemDeactivate' | 'shouldShowDropdownMenu' | 'resolveRowAction' | 'rowHref' | 'onNavigate'>>;
96
+ type ListUsersPaginationProps = Partial<Omit<ComponentProps<typeof BaseTable.Pagination>, 'pagination' | 'rows' | 'isLoading'>> & Partial<Pick<ListUsersValue, 'pagination' | 'data' | 'isLoading'>>;
97
+ type ListUsersSearchChipsProps = Partial<ComponentProps<typeof BaseTable.SearchChips>>;
98
+ type ListUsersComponent = {
99
+ <TTabs extends TabData[] = TabData[], CustomBlocks extends Record<string, ReactNode> = {}>(props: ListUsersProps<TTabs, CustomBlocks>): ReactNode;
100
+ Title: (props: ListUsersTitleProps) => ReactNode;
101
+ Action: (props: ListUsersActionProps) => ReactNode;
102
+ Header: (props: ListUsersHeaderProps) => ReactNode;
103
+ Loader: (props: ListUsersLoaderProps) => ReactNode;
104
+ Content: (props: ListUsersContentProps) => ReactNode;
105
+ Tabs: (props: ListUsersTabsProps) => ReactNode;
106
+ SearchChips: (props: ListUsersSearchChipsProps) => ReactNode;
107
+ Table: (props: ListUsersTableProps) => ReactNode;
108
+ Pagination: (props: ListUsersPaginationProps) => ReactNode;
47
109
  };
110
+ declare const ListUsers: ListUsersComponent;
48
111
  export default ListUsers;
49
112
  //# sourceMappingURL=list-users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-users.d.ts","sourceRoot":"","sources":["../src/list-users.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-users.d.ts","sourceRoot":"","sources":["../src/list-users.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-users.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-users.test.d.ts","sourceRoot":"","sources":["../src/list-users.test.tsx"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodeblocks/frontend-list-users-block",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "main": "./dist/index.cjs.js",
5
5
  "module": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",
@@ -16,13 +16,16 @@
16
16
  "dist/"
17
17
  ],
18
18
  "scripts": {
19
- "build": "npm run typecheck && rollup -c",
19
+ "build": "rm -rf dist && npm run typecheck && rollup -c",
20
+ "test": "vitest run",
21
+ "test:watch": "vitest",
20
22
  "watch": "rm -rf dist && cross-env NODE_ENV=development rollup -c --watch",
21
23
  "typecheck": "tsc --noEmit"
22
24
  },
23
25
  "peerDependencies": {
24
26
  "@emotion/react": "^11.14.0",
25
27
  "@emotion/styled": "^11.14.1",
28
+ "@mui/icons-material": "^7.3.5",
26
29
  "@mui/material": "^7.3.5",
27
30
  "react": ">=18 <20",
28
31
  "react-dom": ">=18 <20"
@@ -33,15 +36,19 @@
33
36
  "@rollup/plugin-node-resolve": "^15.3.0",
34
37
  "@rollup/plugin-terser": "^0.4.4",
35
38
  "@rollup/plugin-typescript": "^12.1.1",
39
+ "@testing-library/jest-dom": "^6.9.1",
40
+ "@testing-library/react": "^16.3.2",
36
41
  "@types/luxon": "^3.7.1",
37
42
  "@types/react": "19.2.7",
38
43
  "@types/react-dom": "19.2.3",
44
+ "jsdom": "^27.4.0",
39
45
  "rollup": "^4.55.1",
40
46
  "rollup-plugin-peer-deps-external": "^2.2.4",
41
47
  "rollup-plugin-postcss": "^4.0.2",
42
48
  "rollup-plugin-serve": "^1.1.1",
43
49
  "tslib": "^2.8.1",
44
- "typescript": "^5.7.2"
50
+ "typescript": "^5.7.2",
51
+ "vitest": "^3.2.4"
45
52
  },
46
53
  "dependencies": {
47
54
  "luxon": "^3.7.2"
package/dist/blocks.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- export type Block<T extends unknown = {
3
- [k: string]: any;
4
- }> = (props: T) => React.ReactNode;
5
- export type DefaultBlocks = {
6
- Title: Block<{
7
- [k: string]: any;
8
- }>;
9
- Actions: Block<{
10
- [k: string]: any;
11
- }>;
12
- Table: Block<{
13
- [k: string]: any;
14
- }>;
15
- };
16
- export type DefaultOptions = {};
17
- //# sourceMappingURL=blocks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;AAE5F,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,CAAC;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC"}
package/dist/context.d.ts DELETED
@@ -1,31 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { ListUsersRowData, TabData, PaginationProps } from './list-users';
3
- export type ListUsersContextValue<Tabs extends TabData[] = any> = {
4
- listUsersTitle: ReactNode;
5
- isLoading?: boolean;
6
- labels: {
7
- emptyStateMessage: string;
8
- headerRow: {
9
- createdAt: string;
10
- name: string;
11
- status: string;
12
- };
13
- cellData: {
14
- statusInUse: string;
15
- statusNotInUse: string;
16
- };
17
- };
18
- onNavigate?: (to: string) => void;
19
- pagination?: PaginationProps;
20
- data: ListUsersRowData[];
21
- rowHref?: (row: ListUsersRowData) => string;
22
- tabs?: Tabs;
23
- currentTab?: Tabs[number]['label'];
24
- onTabChange?: (tab: Tabs[number]['label']) => void;
25
- };
26
- export declare const keys: readonly ["listUsersTitle", "isLoading", "labels", "onNavigate", "pagination", "data", "rowHref", "tabs", "currentTab", "onTabChange"];
27
- export declare const ListUsersProvider: <Tabs extends TabData[] = TabData[]>({ children, ...value }: ListUsersContextValue<Tabs> & {
28
- children: ReactNode;
29
- }) => import("react/jsx-runtime").JSX.Element;
30
- export declare const useListUsersContext: <Tabs extends TabData[] = TabData[]>() => ListUsersContextValue<Tabs>;
31
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,OAAO,EAAE,GAAG,GAAG,IAAI;IAChE,cAAc,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE;QACN,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE;YACT,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,QAAQ,EAAE;YACR,WAAW,EAAE,MAAM,CAAC;YACpB,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,IAAI,wIAWyB,CAAC;AAW3C,eAAO,MAAM,iBAAiB,GAAI,IAAI,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,wBAGnE,qBAAqB,CAAC,IAAI,CAAC,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,4CAEA,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,kCAOrE,CAAC"}