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 🙏

© 2024 – Pkg Stats / Ryan Hefner

re-grid

v0.5.0

Published

React Gridzilla, a React grid component with decent amount of options and flexibility. Built on Bootstrap framework and other React component such as React Paginate and React Day Picker.

Downloads

5

Readme

React GridZilla: A React Data Grid Library

A React library utilizing Bootstrap tables and other Bootstrap CSS components such as Glyphicons to build a robust grid. The grid receives the data and fires events for editing an sorting executing the passed handler. This allows you to do whatever you'd like when for example a user types a filter or clicks a column to sort.

Community React Components Used:-

Note:

Some props and configuration are just exposed props of the used components. Especially the react-paginate component.

How To Use:

  • Run npm install re-grid
  • Add import import ReGrid from './re-grid';

To render the grid you need to pass it some props:-

  • columns -- array: Configuration of columns and their filters
  • rows -- array: The actual data
  • remoteFilterHandlerfilters -- callback: Callback that gets the filters as an object. Here you can execute you're server-side/client-side filtering
  • remoteExportHandlerfilters -- callback: Same as filter callback but only fired when click the export button
  • isExportButtonEnabled -- bool: Enable/disable export button
  • remoteSortHandlersort -- callback: Callback that gets sort object having the column and direction.
  • pageCount -- integer: Number of pages to display
  • handlePageClick(data) -- callback: Fired whenver next or previous buttons are clicked. This is where you issue a request to you're data source to get next or previous set.
  • forcePage -- integer: Page number to force. Usually set to current page.
  • activeClassName -- string: Class name of active buttons
  • nextClassName -- string: Class name of next button.
  • previousClassName -- string: Class name of previous button.
  • pageClassName -- string: Class name to assign to the page.
  • disabledClassName -- string: Class name to use for disabled buttons
  • editSaveHandler(data) -- callback: Call back fired when submitting row edits.

Column structure:-

@TODO: Segregate different column structure explanation.

columns = [
            {
                label: 'ID',
                id: 'p_id',
                filter: {
                    enabled: false
                }
            },
            {
                label: 'Product Name',
                id: 'p_product_name',
                filter: {
                    enabled: true,
                    type: 'text',
                    placeHolder: 'Filter ...'
                },
                editing: {
                    enabled: true,
                    type: 'text',
                }


            },
            {
                label: 'Item Price',
                id: 'p_item_price',
                filter: {
                    enabled: true,
                    type: 'number',
                    min: 0,
                    max: 100
                },
                editing: {
                    enabled: true,
                    type: 'number',
                    options: {
                        min: 0,
                        max: 1000
                    }
                }
            },
            {
                label: 'Category',
                id: 'category_name',
                filter: {
                    enabled: true,
                    type: 'select',
                    options: [
                        {
                            label: '...',
                            value: ''
                        },
                        {
                            label: 'Books',
                            value: 'Books'
                        },
                        {
                            label: 'Shoes',
                            value: 'Shoes'
                        }
                    ]
                },
                editing: {
                    enabled: true,
                    type: 'select',
                    options: {
                        options: [
                            {
                                label: '...',
                                value: ''
                            },
                            {
                                label: 'Books',
                                value: 'Books'
                            },
                            {
                                label: 'Shoes',
                                value: 'Shoes'
                            }
                        ]
                    }
                }
            },
            {
                label: 'Date Range',
                id: 'product_date',
                filter:{
                    enabled: true,
                    type: 'date_range',
                    options: {
                        format: "YYYY/MM/DD", // Optional,
                        startDatePlaceholder: 'Start Date', // Optional,
                        endDatePlaceholder: 'End Date', // Optional,
                    }
                }
            },
            {
                label: 'Date',
                id: 'category_date',
                filter:{
                    enabled: true,
                    type: 'date',
                    options: { // Optional
                        format: "YYYY/MM/DD", // Optional
                        fromMonth: new Date(new Date(30,0).getFullYear(), 0), // Optional
                        toMonth: new Date(new Date().getFullYear() + 2, 11) // Optional
                    }
                }
            }
        ];

Grid Component with the props:-

<ReGrid
          columns={columns}
          rows={this.state.rows}
          remoteFilterHandler={this.remoteFilterHandler}
          remoteExportHandler={this.remoteExportHandler}
          isExportButtonEnabled={this.state.isExportButtonEnabled}
          remoteSortHandler={this.remoteSortHandler}
          pageCount={this.state.pageCount}
          handlePageClick={this.handlePageClick}
          editSaveHandler={this.saveProducts}
      />

For now you can check App.js in the src folder for an example from the git repo.

Features:

  • Filtering
    • Date range
    • Date
    • Text
    • Number
    • Select Menu
  • Sorting
  • Editing
  • Pagination
  • Available Field Types:
    • Text
    • Checkbox
    • Select
    • Number
    • Date Picker (To Be included)

Note:-

This library is still in development phase.