tabulify 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.json +34 -0
- package/.prettierrc +6 -0
- package/README.md +18 -0
- package/dist/index.cjs.js +3 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/types/components/Pagination.d.ts +9 -0
- package/dist/types/components/Table.d.ts +6 -0
- package/dist/types/components/types.d.ts +27 -0
- package/eslint.config.mjs +14 -0
- package/jest.config.ts +10 -0
- package/package.json +57 -0
package/.eslintrc.json
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
{
|
2
|
+
"settings": {
|
3
|
+
"react": {
|
4
|
+
"version": "detect"
|
5
|
+
}
|
6
|
+
},
|
7
|
+
"env": {
|
8
|
+
"browser": true,
|
9
|
+
"es2021": true
|
10
|
+
},
|
11
|
+
"extends": [
|
12
|
+
"eslint:recommended",
|
13
|
+
"plugin:react/recommended",
|
14
|
+
"plugin:@typescript-eslint/recommended",
|
15
|
+
"airbnb",
|
16
|
+
"plugin:prettier/recommended"
|
17
|
+
],
|
18
|
+
"parser": "@typescript-eslint/parser",
|
19
|
+
"parserOptions": {
|
20
|
+
"ecmaFeatures": {
|
21
|
+
"jsx": true
|
22
|
+
},
|
23
|
+
"ecmaVersion": "latest",
|
24
|
+
"sourceType": "module"
|
25
|
+
},
|
26
|
+
"plugins": ["react", "@typescript-eslint"],
|
27
|
+
"rules": {
|
28
|
+
"react/react-in-jsx-scope": "off",
|
29
|
+
"react/prop-types": "off",
|
30
|
+
"no-unused-vars": "warn",
|
31
|
+
"@typescript-eslint/no-unused-vars": ["warn"],
|
32
|
+
"jsx-a11y/anchor-is-valid": "off"
|
33
|
+
}
|
34
|
+
}
|
package/.prettierrc
ADDED
package/README.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Tabulify
|
2
|
+
|
3
|
+
`Tabulify` is a lightweight and flexible React table component designed for building customizable and feature-rich data tables. It supports features like pagination, row selection, and custom rendering.
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
- **Customizable Columns**: Easily define columns and their renderers.
|
8
|
+
- **Row Selection**: Support for single and multiple row selection.
|
9
|
+
- **Pagination**: Built-in pagination for large datasets.
|
10
|
+
- **TypeScript Support**: Fully typed for TypeScript projects.
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Install the package using npm or yarn:
|
15
|
+
|
16
|
+
```bash
|
17
|
+
npm install tabulify
|
18
|
+
```
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export interface Column<T> {
|
3
|
+
title: string;
|
4
|
+
dataIndex: keyof T;
|
5
|
+
key: string;
|
6
|
+
sorter?: (a: T, b: T) => number;
|
7
|
+
render?: (value: T[keyof T], record: T, index: number) => React.ReactNode;
|
8
|
+
}
|
9
|
+
export interface RowSelection<T> {
|
10
|
+
type: 'checkbox' | 'radio';
|
11
|
+
selectedRowKeys?: (keyof T)[];
|
12
|
+
onChange?: (selectedRowKeys: (keyof T)[], selectedRows: T[]) => void;
|
13
|
+
}
|
14
|
+
export interface Pagination {
|
15
|
+
pageSize: number;
|
16
|
+
total: number;
|
17
|
+
current?: number;
|
18
|
+
onChange?: (page: number) => void;
|
19
|
+
}
|
20
|
+
export interface TableProps<T extends {
|
21
|
+
key: React.Key;
|
22
|
+
}> {
|
23
|
+
columns: Column<T>[];
|
24
|
+
dataSource: T[];
|
25
|
+
rowSelection?: RowSelection<T>;
|
26
|
+
pagination?: Pagination;
|
27
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import globals from "globals";
|
2
|
+
import pluginJs from "@eslint/js";
|
3
|
+
import tseslint from "typescript-eslint";
|
4
|
+
import pluginReact from "eslint-plugin-react";
|
5
|
+
|
6
|
+
|
7
|
+
/** @type {import('eslint').Linter.Config[]} */
|
8
|
+
export default [
|
9
|
+
{files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"]},
|
10
|
+
{languageOptions: { globals: globals.browser }},
|
11
|
+
pluginJs.configs.recommended,
|
12
|
+
...tseslint.configs.recommended,
|
13
|
+
pluginReact.configs.flat.recommended,
|
14
|
+
];
|
package/jest.config.ts
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
import type { Config } from 'jest';
|
2
|
+
|
3
|
+
const config: Config = {
|
4
|
+
preset: 'ts-jest',
|
5
|
+
testEnvironment: 'jest-environment-jsdom',
|
6
|
+
testMatch: ['**/*.test.ts', '**/*.test.tsx'], // Match test files
|
7
|
+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], // Resolve these extensions
|
8
|
+
};
|
9
|
+
|
10
|
+
export default config;
|
package/package.json
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
{
|
2
|
+
"name": "tabulify",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"type": "module",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"scripts": {
|
7
|
+
"main": "dist/index.js",
|
8
|
+
"module": "dist/index.esm.js",
|
9
|
+
"types": "dist/types/index.d.ts",
|
10
|
+
"build": "rollup -c",
|
11
|
+
"prepublishOnly": "npm run build",
|
12
|
+
"test": "jest",
|
13
|
+
"test:watch": "jest --watch",
|
14
|
+
"test:coverage": "jest --coverage",
|
15
|
+
"lint": "eslint . --quiet",
|
16
|
+
"lint:fix": "eslint . --fix"
|
17
|
+
},
|
18
|
+
"keywords": [],
|
19
|
+
"author": "",
|
20
|
+
"license": "ISC",
|
21
|
+
"description": "",
|
22
|
+
"peerDependencies": {
|
23
|
+
"react": "^18.3.1",
|
24
|
+
"react-dom": "^18.3.1"
|
25
|
+
},
|
26
|
+
"devDependencies": {
|
27
|
+
"@eslint/js": "^9.15.0",
|
28
|
+
"@rollup/plugin-commonjs": "^28.0.1",
|
29
|
+
"@rollup/plugin-json": "^6.1.0",
|
30
|
+
"@rollup/plugin-node-resolve": "^15.3.0",
|
31
|
+
"@rollup/plugin-typescript": "^12.1.1",
|
32
|
+
"@testing-library/jest-dom": "^6.6.3",
|
33
|
+
"@types/jest": "^29.5.14",
|
34
|
+
"@types/mocha": "^10.0.9",
|
35
|
+
"@types/node": "^22.9.0",
|
36
|
+
"@types/testing-library__jest-dom": "^5.14.9",
|
37
|
+
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
38
|
+
"@typescript-eslint/parser": "^8.15.0",
|
39
|
+
"eslint": "^9.15.0",
|
40
|
+
"eslint-config-prettier": "^9.1.0",
|
41
|
+
"eslint-plugin-prettier": "^5.2.1",
|
42
|
+
"eslint-plugin-react": "^7.37.2",
|
43
|
+
"globals": "^15.12.0",
|
44
|
+
"jest": "^29.7.0",
|
45
|
+
"jest-environment-jsdom": "^29.7.0",
|
46
|
+
"prettier": "^3.3.3",
|
47
|
+
"rollup": "^4.27.3",
|
48
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
49
|
+
"ts-jest": "^29.2.5",
|
50
|
+
"ts-node": "^10.9.2",
|
51
|
+
"typescript": "^5.6.3",
|
52
|
+
"typescript-eslint": "^8.15.0"
|
53
|
+
},
|
54
|
+
"dependencies": {
|
55
|
+
"@testing-library/react": "^16.0.1"
|
56
|
+
}
|
57
|
+
}
|