npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

dynamic-mini-table

v0.3.5

Published

A lightweight, flexible React table component with sorting, filtering, search, pagination, and drag-and-drop row reordering support.

Downloads

167

Readme

dynamic-mini-table

npm version npm downloads license

A flexible, customizable React table component for dynamic data display, sorting, filtering, searching, pagination, and drag-and-drop row reordering.


Installation

npm install dynamic-mini-table
# or
yarn add dynamic-mini-table

Usage

import TableView from "dynamic-mini-table";

const headers = [
  { key: "id", title: "ID", width: 80, sort: true },
  { key: "name", title: "Name", width: 200 },
  // ...more columns
];

const dataSource = [
  { id: 1, name: "Alice", email: "[email protected]" },
  { id: 2, name: "Bob", email: "[email protected]" },
  // ...more rows
];

<TableView
  headers={headers}
  dataSource={dataSource}
  pagination={true}
  filter={true}
  search={true}
  showMove={true}
  onUpdateOrder={({ orderRows, newOrder }) => {
    // handle new order
  }}
/>;

Props

Below are the public props you can use with <TableView />.
Some fields in the code are for internal/configuration use and are not intended as direct props—these are marked as (internal). | Prop | Type | Default | Description | | --------------------- | ------------------------------------ | ------------ | ----------------------------------------------------------------------- | | headers | Header[] | Required | Array of column definitions (see Header Definition below). | | dataSource | SourceData[] | Required | Array of data objects for each row. | | selectedRows | SourceData[] | [] | Array of currently selected row objects. | | onRowSelect | (rows) => void | () => {} | Callback when row selection changes. | | showMove | boolean | false | Enable drag-and-drop row reordering. | | onUpdateOrder | ({orderRows, newOrder}) => void | () => {} | Callback when row order changes. Receives new order and reordered rows. | | pagination | boolean | true | Enable pagination controls. | | paginationPlacement | "center" \| "left" \| "right" | "right" | Placement of pagination controls. | | paginationType | "default" \| "inList" | "default" | Pagination mode. | | pageOptions | number[] | [10,25,50] | Available page size options. | | filter | boolean | true | Enable filter dropdown. | | filterLabel | string | "Filter" | Label for the filter dropdown. | | filterList | filterItem[] | [] | List of filter options. | | filterValue | string \| number | "" | Currently selected filter value. | | onFilterSelect | (value, item) => void | () => {} | Callback when a filter is selected. | | filterView | React.ReactElement | | Custom filter component. | | search | boolean | true | Enable search input. | | searchData | string | | Search query string. | | onSearch | (value) => void | () => {} | Callback when a search is performed. | | searchView | React.ReactElement | | Custom search component. | | searchInstant | boolean | false | If true, search triggers on input change. | | searchType | "default" \| "trigger" \| "expand" | "default" | Search input type. | | searchMode | "default" \| "inline" | "default" | Search mode. | | searchKeys | string[] | [] | Keys to search in each row object. | | searchTrigger | "click" \| "hover" | "click" | How search is triggered. | | searchFieldClass | string | | Custom class for search field. | | check | boolean | true | Show checkbox for row selection. | | selectMatchKey | string | "id" | Unique key in data objects for selection and ordering. | | tableType | "default" \| "striped" | "default" | Table style variant. | | tableClass | string | | Additional class for table container. | | tableHeaderClass | string | | Additional class for table header. | | headerType | "default" \| "stick" | "stick" | Table header style variant. | | start_stick | boolean | true | Stick first column (frozen left). | | end_stick | boolean | true | Stick last column (frozen right). | | clampColumnMessage | string | | Message to show when column content is clamped. | | globalPlacement | "center" \| "left" \| "right" | "center" | Default column alignment. | | loading | boolean | false | Show loading state. | | loadRender | React.ReactElement | | Custom loader component. | | loaderClass | string | | Loader CSS class. | | stripe | boolean |false | Table stripe default false. | | groupView | boolean | false | Enable group-panel rendering for rows that include groupRows. When true and groupAction is false, all group panels can be shown by default. | | groupArrowClass | string | "" | Additional CSS class applied to the group toggle arrow icon. | | groupAction | boolean | true | When true, each grouped row shows a toggle (arrow) to open/close its group panel. When false, group panels are controlled by groupView globally. | | groupViewClass | string | "" | Additional class applied to the group panel container (.group__view-panel). | | groupRender | (groupRows: any[], className: string) => React.ReactNode | undefined | Optional render callback to fully customize the group-panel output. Receives the group's rows and the className that would be used ("group__view-panel[ active]"). Return a React node to render. | | groupCheck | boolean | false | When true, render checkbox controls inside grouped rows (used to select child items inside a group). Selection updates are emitted via onRowSelect. | | groupColPadding | number | 16 | Pixel padding subtracted from the group's first-column minWidth when rendering child rows (helps visually nest group rows). |

Internal/Advanced Fields (not typical props)

wrapper_class, action_container, custom_pre_action_start, custom_post_action_start, custom_pre_action_end, custom_post_action_end, action_container_start_class, action_container_end_class, action__container_start_action_icon, action_container_start_action_label, action__container_start_action_class, enableAction, handleActionClick, etc.

Note: These are for advanced customization and are not required for most use cases.


Header Definition

Each header object can have:

| Property | Type | Default | Description | | ----------- | ------------------------------- | ----------- | ------------------------------------------ | | key | string | | Data key for the column (required). | | title | string | | Column title (required). | | width | number | | Column width in pixels. | | minWidth | number | | Minimum column width. | | maxWidth | number | | Maximum column width. | | sort | boolean | false | Enable sorting for this column. | | type | "default" \| "html" | "default" | Cell type, e.g., 'html' for raw HTML. | | expand | boolean | false | Enable expandable row for this column. | | viewLines | number | | Clamp lines for cell content (multi-line). | | placement | "left" \| "center" \| "right" | "center" | Text alignment. |


License

MIT


Note:
If you need advanced customization, please contact directly -email me. Feel free to contact us.