0.0.11 • Published 4 years ago

@pauliescanlon/gatsby-remark-sticky-table v0.0.11

Weekly downloads
180
License
MIT
Repository
github
Last release
4 years ago

npm (scoped)

npm

NPM

gatsby-remark-sticky-table

gatsby-remark-sticky-table is a plugin that creates sticky header tables from markdown.

By taking advantage of the remark Abstract Syntax Tree (AST) this plugin grabs all references to the HTML <th> element and applies an inline css style to make it position: sticky

Motivation Tables are tricky, they're not really mobile first and more often than not they don't look great.

This plugin aims to wrap all <table> elements with <div> containers to help manage heights and overflows, it also modifies the default <th> as mentioned above. The rest of the styles are up to you!

If you're using gatsby-remark-sticky-table in your project i'd love to hear from you @pauliescanlon

👁️ Preview

🚀 Getting started

Install

npm install @pauliescanlon/gatsby-remark-sticky-table

Setup

Add gatsby-transformer-remark to your gatsby-config.js then add @pauliescanlon/gatsby-remark-sticky-table as a plugin of that 😅

module.exports = {
  ...
  plugins: [
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [`@pauliescanlon/gatsby-remark-sticky-table`],
      },
    },
  ],
}

Options

OptionTypeReqiuredDefaultDescription
heightnumbernonullheight of remark-sticky-table
backgroundColorstringnonullbackground color of remark-sticky-table-th
...
plugins: [
  {
    resolve: `@pauliescanlon/gatsby-remark-sticky-table`,
    options: {
      height: 250,
      backgroundColor: "#ffffff",
    },
  },
]

✨ Styling

This plugin ships with a minimal amount of styles that are applied inline but these are purely to position the <th> which creates the sticky header. The more visual styles are up to you.

You might not need many styles but you will no doubt at least need a height on remark-sticky-table and a background-color on remark-sticky-table-th

A quick way to achieve this is to use the plugin options but probably a better way will be to add this and other styles using your css method of choice.

For convenience each element has been given a class name these are:

ElementClass nameDescription
divremark-sticky-tableThe outer div that wraps everything and has a height
divremark-sticky-table-wrapperAn inner div with overflow: auto
tableremark-sticky-table-tableun-styled HTML <table>
theadremark-sticky-table-theadun-styled HTML <thead>
trremark-sticky-table-trun-styled HTML <tr>
thremark-sticky-table-thHTML <th> with position: sticky inline style
tbodyremark-sticky-table-tbodyun-styled HTML <tbody>
tdremark-sticky-table-tdun-styled HTML <td>

💅 Css

Here's some css to get you started

.remark-sticky-table {
  border-radius: 2px;
  box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);
  height: 300px;
  margin: 48px 0px;
}

.remark-sticky-table-table {
  border-collapse: collapse;
  box-sizing: border-box;
  width: 100%;
}

.remark-sticky-table-th {
  background-color: #f7f7f7;
  font-weight: 600;
  text-align: left;
}

.remark-sticky-table-tbody:nth-child(odd) {
  background-color: #fafafa;
}

.remark-sticky-table-th,
.remark-sticky-table-td {
  padding: 16px;
}

📝 Markdown

And that's it 💥 Just use markdown as you normally would to create tables and let gatsby-remark-sticky-table do the rest.

| Head one | Head two | Head three |
| -------- | ---------| ---------- |
| cell one | cell two | cell three |
0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago