Advanced table plugin

Overview

Grid.js

All Contributors

Grid.js

Advanced table plugin

A table library that works everywhere

  • Simple and lightweight implementation
  • No vendor lock-in. Grid.js can be used with any JavaScript frameworks (React, Angular, Preact or VanillaJS)
  • Written in TypeScript
  • Supports all modern browsers and IE11+

Example

new Grid({
  data: [
    ['Mike', 33, '[email protected]'],
    ['John', 82, '[email protected]'],
    ['Sara', 26, '[email protected]']
  ],
  columns: ['Name', 'Age', 'Email']
}).render(document.getElementById('wrapper'));

Piece of 🍰

Getting Started

Documentation đź“–

Full documentation of Grid.js installation, config, API and examples are available on Grid.js website grid.js/docs.

Community

  • Join our Discord channel
  • Take a look at gridjs tag on StackOverflow or ask your own question!
  • Read our blog for the latest updates and announcements
  • Follow our Twitter account @grid_js

Contributors ✨


Afshin Mehrabani

đź’» đź“–

Daniel Sieradski

🔌

Salama Ashoush

🔌

Daniel Werner

🔌

License

MIT

Comments
  • Share formatter callback with all columns

    Share formatter callback with all columns

    Is your feature request related to a problem? Please describe.

    I have an html table with several cell that has HTML, and multiple columns can be in different cells. Right now with formatter() method seem that I can only format single column.

    Describe the solution you'd like

    I would like to be able to have single template like below semplified example using JSRender:

                  <script id="tableTamplate" type="text/x-jsrender">
                        <table id="myTable" class="table">
                            <thead>
                            <tr>
                                <th>ID</th>
                                <th>Name</th>
                                <th>Email</th>
                                <th>Created</th>
                                <td>Actions</td>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td class="custom-class">{{:id}}</td>
                                <td>
                                      <strong>{{:name}}</strong>
                                      {{:username}} {{:role}}
                                 </td>
                                <td class="another-class"><a href="mailto:{{:email}}">{{:email}}</a></td>
                                <td>{{:created_at}}</td>
                                <td><a href="{{:url_edit}}">Edit</a></td>
                            </tr>
                            </tbody>
                        </table>
    

    Next I want create one single JS code that initialize my tables, where I pass variable via data attribute like URL, table template and other variable things.

                // Semplified version
    
                const el = document.querySelectorAll('[data-mygrid]');
                let gridElement = el.getAttribute('data-mygrid');
                let gridUrl = el.getAttribute('data-mygrid-url');
                let gridColumns = JSON.parse(el.getAttribute('data-mygrid-columns'));
                let templateId = el.getAttribute('data-mygrid-template');
    
                const myGrid = new Grid({
                    columns: gridColumns,
                    server: {
                        headers: {
                            'Accept': 'application/json'
                        },
                        url: gridUrl,
                        then: data => data.data,
                        total: data => data.meta.total
                    },
                   // here add formatter() for all columns using template templateId
                });
                myGrid.render(document.getElementById(gridElement));
    

    And last part thing below html that can be defined for each table:

    <div
         id="gridUsers"
         data-mygrid="gridUsers"
         data-mygrid-url="/users"
         data-mygrid-columns='{{ json_encode(["id" => "ID", "url" => "URL", "name" => "Name", "email" => "Email", "username" => "Username", "created" => "Created", "updated" => "Updated"]) }}'></div>
    

    Note that I am passing columns with key and value, where key is from JSON and value is title in header. Here is a working example where I define for each column separate template: https://gist.github.com/thewebartisan7/9bb0fa102b6337569b8879e2809e93d9

    Additional context

    Above is just a semplified version of table, but I have more complex html table see below screenshot, with checkbox for select many rows, details of a record with additional ro , so that in my case I will have two tr for each entry, example below in screenshot. I can't even define custom class for single cell (TD) right now, but only the same class for all, because I also use responsive classes for each cell to show/hide depending on screen size. Using single template I can define also different class for each cell and add complex html.

    I hope that I explain well my usecase, please let me know if you need more info.

    Thanks!

    Screenshot 2020-09-09 at 04 29 59 Screenshot 2020-09-09 at 04 23 07 question wontfix 
    opened by thewebartisan7 11
  • add 'onclick' to row or specific row/column with row context added to event

    add 'onclick' to row or specific row/column with row context added to event

    Is your feature request related to a problem? Please describe. Looking for a way to add an onclick listener to a row or cell that has the context for the row. Specifically looking for a way to use the cell or row to pop up a modal to to make a http get request for more details or http put request to update the backend and then update the table.

    Describe the solution you'd like Ability to add an "onclick" listener to the row or specific row/column that would append the row's context to the onclick event.

    Describe alternatives you've considered I've used material-ui datatables that has this functionality but I really like the gridjs style and functionality.

    Additional context Add any other context or screenshots about the feature request here.

    new feature roadmap 
    opened by jlmodell 10
  • Width of table is much smaller than header/footer when no data is provided

    Width of table is much smaller than header/footer when no data is provided

    Describe the bug table has small width when no data if you set resizable: true

    To Reproduce Steps to reproduce the behavior:

    1. use this code (empty for data):
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <link
          href="https://cdn.jsdelivr.net/npm/[email protected]/dist/theme/mermaid.min.css"
          rel="stylesheet"
        />
      </head>
      <body>
        <div id="wrapper"></div>
    
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gridjs.production.min.js"></script>
        <script>
            new gridjs.Grid({
      columns: ['Name', 'Email', 'Phone Number'],
      data: [
      ],
      resizable: true,
      sort: true
    }).render(document.getElementById("wrapper"));
        </script>
      </body>
    </html>
    
    

    Expected behavior

    table has the same width as footer/header when no data

    Screenshots notice that footer is 100% width, while the table is not. image

    Desktop (please complete the following information):

    • OS: windows
    • Browser: chrome
    question 
    opened by wanlwanl 9
  • Search ignore content of hidden columns

    Search ignore content of hidden columns

    Goal of this pull request is to change the behavior of search plugin with hidden columns.

    Currently, when typing a keyword, search plugin look for all cells including hidden one. It make the result a little bit strange to the final user seeing rows that does not contains his keyword.

    This change only applies to in memory data (not server side).

    new feature 
    opened by lamilsage 8
  • Table contents do not resize when browser window is resized (to a larger size)

    Table contents do not resize when browser window is resized (to a larger size)

    Describe the bug On window resize to a larger width than initial, the table contents are not resized to fit the new width.

    To Reproduce Steps to reproduce the behavior:

    1. Resize the window to a bigger size
    2. See error

    Expected behavior The columns should resize automaticaly to fit the new width.

    Screenshots Initial Screenshot 2021-11-25 at 13 00 59 REs Screenshot 2021-11-25 at 13 01 05

    Desktop (please complete the following information):

    • OS: MacOS
    • Browser chrome, firefox

    Additional context The code used to init the Grid <Grid data={members} columns={['Name', 'Email']} />

    wontfix 
    opened by Reve 7
  • The row button style depends on tailwind to work

    The row button style depends on tailwind to work

    Describe the bug I followed the documentation along the way, there is no mention of the need to import additional tailwindcss.

    To Reproduce Steps to reproduce the behavior: Just follow the docs example: https://gridjs.io/docs/examples/row-buttons

    Here you use tailwind ( Maybe it is a good idea to demonstrate about the external css ? )

    formatter: (cell, row) => {
      return h('button', {
        className: 'py-2 mb-4 px-4 border rounded-md text-white bg-blue-600',
        onClick: () => alert(`Editing "${row.cells[0].data}" "${row.cells[1].data}"`)
      }, 'Edit');
    }
    
    question 
    opened by beetcb 7
  • Dark Mode & coloring data

    Dark Mode & coloring data

    Hello,

    I would like to be able to change the colour of the whole table. So far I only managed to change the colour of the table header (I am using React for this). I have attempted to set a colour for the td or the whole table but nothing much has changed. Unless I am doing something wrong.

    I would also like to be able to dynamically set a colour for some of the data in the table. For example, in the image attached below, I would like to display certain marks in a certain colour.

    This is what I'm using so far.

    sty = {
        table: {
          border: "3px solid #ccc",
        },
        th: {
          "background-color": "rgba(0, 0, 0, 0.1)",
          color: "#fff",
          "border-bottom": "3px solid #ccc",
          "text-align": "center",
        },
        td: {
          "text-align": "center",
        },
      };
    

    Please let me know if there are already solutions for my issues. Thank you for your time!

    image

    new feature 
    opened by erceamet 7
  • TypeError on forceRender()

    TypeError on forceRender()

    Hi folks, thank you for your great work! I use gridjs instead of bootstrap table and yours is sure better, lighter and more flexible.

    But there is a bug. I get "TypeError: this.config is undefined" at grid.ts:81:9 when I use forceRender() method.

    I have a function, that dynamically updates my grid with server side data:

    // blah-blah...
    fetch(url, {body, method, headers})
            .then(res=> res.status == 200 && res.json() || Promise.reject(res.status))
            .then(obj=> {
                window.location.hash = `#/${relation}`
                window.jQuery(`#${id}`).modal('hide')
                grid.forceRender()
            })
            //.catch(err => alert(err))
    

    Something strange happens here: when I call fetch with POST method (adding a row), grid.forceRender() works fine as many times as I call it. But when I use PUT or DELETE methods - the error occurs. There is no network errors. Only "TypeError: this.config is undefined".

    I get the error on Firefox browser, Linux OS. Before writing this message I have made yarn upgrade gridjs, but the bug is still here.

    Could you explain or fix it?

    bug fix 
    opened by yababay 7
  • Installing via

    Installing via "npm i" doesn't appear to work at the moment.

    Running npm i gridjs seems to install a different package than this one so unfortunately I'm unable to play around with this at the moment.

    This is what appears to get installed instead: https://github.com/mafintosh/gridjs It seems like there may be some sort of naming collision on npm.

    bug fix 
    opened by joekrump 7
  • Preact TypeError: Cannot read properties of undefined

    Preact TypeError: Cannot read properties of undefined

    Describe the bug

    Data table loads ok, but paging through the data generates random preact freezing approximately every 1-20 clicks (sometimes the first page; sometimes other random pages) with this error:

    preact.mjs:1 
           Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'is')
        at preact.mjs:1:6847
        at A (preact.mjs:1:7582)
        at E (preact.mjs:1:2155)
        at preact.mjs:1:7266
        at A (preact.mjs:1:7582)
        at E (preact.mjs:1:2155)
        at A (preact.mjs:1:6058)
        at E (preact.mjs:1:2155)
        at A (preact.mjs:1:6058)
        at E (preact.mjs:1:2155)
    

    When that error occurs, the entire table freezes and the page must be hard-refreshed. On mobile, this causes the app to look like the entire screen has frozen, which makes the app useless for most users who don't know why the screen freezes.

    Platforms:

    • OS: Windows 10, 11, Android and Ubuntu Linux
    • Browser: Chrome
    • Version: Latest (103.0.5060.114)
    • Framework: Svelte

    Additional context

    Maybe there is a way to mitigate this problem in my code, but since the data seems to load fine, there doesn't seem to be an obvious problem with my code. You can see the relevant parts below:

    // Svelte
    // I'm simply loading a local mapped array.
    data = () => {
    		return new Promise((resolve) => {
    			setTimeout(
    				() =>
    					resolve(
    						custList.map((obj: Customer) => {
    							return [obj.custId, obj.nameFirst, obj.nameLast, obj.email, obj.phone, obj.createdOn];
    						})
    					),
    				1000
    			);
    		});
    	};
    

    This problem makes the table grid feel very unstable; so it's scary to use it. Please help me resolve this problem as soon as possible.

    wontfix 
    opened by JuliaBonita 6
  • The column grid does not re-size correctly

    The column grid does not re-size correctly

    Describe the bug The column grid does not re-size correctly according column value size when we are using pagination.

    To Reproduce Steps to reproduce the behavior:

    1. Generate a grid with pagination wiht limit equal 2 where the first and second records has the first column value with only 5 characters and the third record has the first column value with 20 characters.
    2. Click on page 2
    3. See error

    Expected behavior Resize of first column according the size of these column values.

    Screenshots

    image

    Desktop (please complete the following information):

    • OS: Windows 10
    • Browser: Chrome
    • Version Version 84.0.4147.125

    Additional context Add any other context about the problem here.

    bug fix roadmap 
    opened by gustavoaalves 6
  • chore(deps-dev): bump jest-extended from 2.0.0 to 3.2.2

    chore(deps-dev): bump jest-extended from 2.0.0 to 3.2.2

    Bumps jest-extended from 2.0.0 to 3.2.2.

    Release notes

    Sourced from jest-extended's releases.

    v3.2.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/jest-community/jest-extended/compare/v3.2.1...v3.2.2

    v3.2.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/jest-community/jest-extended/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/jest-community/jest-extended/compare/v3.1.0...v3.2.0

    v3.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/jest-community/jest-extended/compare/v3.0.2...v3.1.0

    v3.0.2

    What's Changed

    ... (truncated)

    Commits
    • d6f44b6 v3.2.2
    • 4b3fa65 fix(types): add vitest support for AsymmetricMatchers (#549)
    • df02532 chore(deps): bump minimatch in /examples/typescript/all (#531)
    • 8ced841 v3.2.1
    • 678b467 Update docusaurus monorepo to v2.2.0 (#504)
    • d670f40 Add filenames to code snippets under Setup docs page (#540)
    • 30a420e Create pass/fail error messages only if required (#545)
    • 2b23769 chore(deps): bump json5 from 2.2.0 to 2.2.3 in /examples/typescript/all (#547)
    • 61c94b1 chore: attempt to make renovate keep example up to date
    • 3497f88 Lock file maintenance
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump eslint-plugin-jest from 26.8.7 to 27.2.1

    chore(deps-dev): bump eslint-plugin-jest from 26.8.7 to 27.2.1

    Bumps eslint-plugin-jest from 26.8.7 to 27.2.1.

    Release notes

    Sourced from eslint-plugin-jest's releases.

    v27.2.1

    27.2.1 (2023-01-06)

    Bug Fixes

    • valid-expect-in-promise: handle sparse arrays (#1325) (21e72c9)

    v27.2.0

    27.2.0 (2022-12-31)

    Features

    v27.1.7

    27.1.7 (2022-12-15)

    Bug Fixes

    v27.1.6

    27.1.6 (2022-11-24)

    Bug Fixes

    • ensure rule fixes produce valid code when function params and args have trailing commas (#1282) (8eca0b7)

    v27.1.5

    27.1.5 (2022-11-10)

    Performance Improvements

    • use Set instead of iterating, and deduplicate a function (#1278) (0e048f1)

    v27.1.4

    27.1.4 (2022-11-04)

    Performance Improvements

    • don't collect more info than needed when resolving jest functions (#1275) (e4a5674)

    ... (truncated)

    Changelog

    Sourced from eslint-plugin-jest's changelog.

    27.2.1 (2023-01-06)

    Bug Fixes

    • valid-expect-in-promise: handle sparse arrays (#1325) (21e72c9)

    27.2.0 (2022-12-31)

    Features

    27.1.7 (2022-12-15)

    Bug Fixes

    27.1.6 (2022-11-24)

    Bug Fixes

    • ensure rule fixes produce valid code when function params and args have trailing commas (#1282) (8eca0b7)

    27.1.5 (2022-11-10)

    Performance Improvements

    • use Set instead of iterating, and deduplicate a function (#1278) (0e048f1)

    27.1.4 (2022-11-04)

    Performance Improvements

    • don't collect more info than needed when resolving jest functions (#1275) (e4a5674)

    27.1.3 (2022-10-18)

    Bug Fixes

    • no-restricted-jest-methods: don't crash on jest() (#1269) (4450daa)

    27.1.2 (2022-10-14)

    ... (truncated)

    Commits
    • 6f4f84c chore(release): 27.2.1 [skip ci]
    • 21e72c9 fix(valid-expect-in-promise): handle sparse arrays (#1325)
    • 35b0e6f docs: update eslint-doc-generator (#1324)
    • d566516 chore(deps): update danger/danger-js action to v11.2.1 (#1321)
    • f3cb13b refactor: use Object.fromEntries to build rule config maps (#1320)
    • 3718e82 chore(deps): update dependency eslint-remote-tester-repositories to v1 (#1319)
    • 6a287c0 docs: update rule name in changelog (#1317)
    • b00b9b6 chore(release): 27.2.0 [skip ci]
    • ee43c3f feat: create require-typed-module-mocks rule (#1314)
    • 891fe1e chore(deps): update yarn to v3.3.1 (#1311)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump cypress from 8.4.1 to 12.3.0

    chore(deps-dev): bump cypress from 8.4.1 to 12.3.0

    Bumps cypress from 8.4.1 to 12.3.0.

    Release notes

    Sourced from cypress's releases.

    v12.3.0

    Changelog: https://docs.cypress.io/guides/references/changelog#12-3-0

    v12.2.0

    Changelog: https://docs.cypress.io/guides/references/changelog#12-2-0

    v12.1.0

    Changelog: https://docs.cypress.io/guides/references/changelog#12-1-0

    v12.0.2

    Changelog: https://docs.cypress.io/guides/references/changelog#12-0-2

    v12.0.1

    Changelog: https://docs.cypress.io/guides/references/changelog#12-0-1

    v12.0.0

    Changelog: https://docs.cypress.io/guides/references/changelog#12-0-0

    v11.2.0

    Changelog: https://docs.cypress.io/guides/references/changelog#11-2-0

    v11.1.0

    Changelog: https://docs.cypress.io/guides/references/changelog#11-1-0

    v11.0.1

    Changelog: https://docs.cypress.io/guides/references/changelog#11-0-1

    v11.0.0

    Changelog: https://docs.cypress.io/guides/references/changelog#11-0-0

    v10.11.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-11-0

    v10.10.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-10-0

    v10.9.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-9-0

    v10.8.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-8-0

    v10.7.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-7-0

    v10.6.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-6-0

    v10.5.0

    Changelog: https://docs.cypress.io/guides/references/changelog#10-5-0

    ... (truncated)

    Commits
    • d0ba032 chore: bump to 12.3.0 [skip ci] (#25355)
    • 5f536fe fix: make NODE_ENV "production" for prod builds of launchpad (#25320)
    • 05b9f10 fix: .contains() should only return one element at all times (#25250)
    • acc61d8 feat: add currentRetry to Cypress API (#25297)
    • 736c599 chore: release @​cypress/webpack-dev-server-v3.2.2
    • f20c6f5 chore: release create-cypress-tests-v2.0.1
    • c12a7e3 fix: change wording for spec creation (#25271)
    • 3925ae0 fix: truncate text to fix layout (#25270)
    • 7cbd2c5 chore: release @​cypress/webpack-preprocessor-v5.16.1
    • 6fc13e6 fix: added missing pending data which caused incorrect mochaawesome reports (...
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by emilyrohrbough, a new releaser for cypress since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump axe-core from 4.4.2 to 4.6.2

    chore(deps-dev): bump axe-core from 4.4.2 to 4.6.2

    Bumps axe-core from 4.4.2 to 4.6.2.

    Release notes

    Sourced from axe-core's releases.

    Release 4.6.2

    This release will not impact the number of violations returns.

    Bug Fixes

    • color-contrast: fix color-contrast check when running in an extension (#3838) (31a3e01)

    Release 4.6.1

    This release will not impact the number of violations returns.

    Bug Fixes

    • d.ts: add optional include to ContextObject (#3830) (36ed242)

    Release 4.6.0

    This release adds requirements introduced in WAI-ARIA 1.2, which can result in new issues. The color contrast rule has been improved which should reduce the number of incomplete (aka "needs review") results.

    Lastly, this release adds the ability to include or exclude elements inside shadow DOM trees from a test run. See [dom selection] for details.

    Features

    • aria-required-attr: require aria-controls on combobox and aria-valuenow on focusable separator (#3786) (5259e88)
    • checks/label-content-name-mismatch: deprecate occuranceThreshold option in favor of occurrenceThreshold to fix typo (#3782) (5026d65)
    • commons: deprecate flattenShadowColors in favor of flattenColors (#3792) (af49daf)
    • context: allow selecting shadow DOM nodes (#3798) (9e1e31b)
    • list,listitem: do not allow group as allowed parent or child (#3784) (d1cbf6f)
    • required-attr: require aria-checked for checkbox-like and radio-like roles (#3785) (563e4e9)
    • utils: new shadowSelectAll utility (#3796) (5865462)

    Bug Fixes

    • aria-allowed-role: allow combobox on button, checkbox and combobox on input[type=button] (#3354) (ac688c0), closes #3353
    • aria-required-children: allow menu as child of menu (#3820) (a6569e5)
    • color-contrast: consider -webkit-text-stroke & -webkit-text-fill-color (#3791) (228daf1)
    • color-contrast: correctly calculate background color of text nodes with different size than their container (#3703) (123b83c)
    • get-role: handle presentation role inheritance for vnodes with no parent (#3801) (b971caf)
    • html-lang-valid: only run rule when attribute has value (#3663) (1a7eecb), closes #3624
    • metadata: Map aria-required-children to ACT rule bc4a75 (#3790) (a33a523)

    Release 4.5.2

    This release can result in fewer issues reported on link-in-text-block and aria-required-children. This release addresses an issue where color-contrast and target-size violations were not reported after the page was scrolled.

    Bug Fixes

    • aria-required-children: allow menu and menubar to be empty (#3770) (d11aed8)
    • create-grid: include elements scrolled out of view in the grid (#3773) (a563263)
    • do not warn when using webpack (#3777) (d6cef9a)
    • link-in-text-block: don't match style or script text (#3775) (ab877f9)

    ... (truncated)

    Changelog

    Sourced from axe-core's changelog.

    4.6.2 (2022-12-23)

    Bug Fixes

    • color-contrast: fix color-contrast check when running in an extension (#3838) (31a3e01)

    4.6.1 (2022-12-14)

    Bug Fixes

    • d.ts: add optional include to ContextObject (#3830) (36ed242)

    4.6.0 (2022-12-12)

    Features

    • aria-required-attr: require aria-controls on combobox and aria-valuenow on focusable separator (#3786) (5259e88)
    • checks/label-content-name-mismatch: deprecate occuranceThreshold option in favor of occurrenceThreshold to fix typo (#3782) (5026d65)
    • commons: deprecate flattenShadowColors in favor of flattenColors (#3792) (af49daf)
    • context: allow selecting shadow DOM nodes (#3798) (9e1e31b)
    • list,listitem: do not allow group as allowed parent or child (#3784) (d1cbf6f)
    • required-attr: require aria-checked for checkbox-like and radio-like roles (#3785) (563e4e9)
    • utils: new shadowSelectAll utility (#3796) (5865462)

    Bug Fixes

    • aria-allowed-role: allow combobox on button, checkbox and combobox on input[type=button] (#3354) (ac688c0), closes #3353
    • aria-required-children: allow menu as child of menu (#3820) (a6569e5)
    • color-contrast: consider -webkit-text-stroke & -webkit-text-fill-color (#3791) (228daf1)
    • color-contrast: correctly calculate background color of text nodes with different size than their container (#3703) (123b83c)
    • get-role: handle presentation role inheritance for vnodes with no parent (#3801) (b971caf)
    • html-lang-valid: only run rule when attribute has value (#3663) (1a7eecb), closes #3624
    • metadata: Map aria-required-children to ACT rule bc4a75 (#3790) (a33a523)

    4.5.2 (2022-11-14)

    Bug Fixes

    • aria-required-children: allow menu and menubar to be empty (#3770) (d11aed8)
    • create-grid: include elements scrolled out of view in the grid (#3773) (a563263)
    • do not warn when using webpack (#3777) (d6cef9a)
    • link-in-text-block: don't match style or script text (#3775) (ab877f9)
    • prevent undefined relatedNodes from halting axe (#3778) (efefb18)

    4.5.1 (2022-11-01)

    Bug Fixes

    • allow axe to run in certain configurations of jsdom (#3755) (b74c5d4)
    • prevent crash on jsdom when preloading CSSOM (#3754) (b1f0c6b)

    ... (truncated)

    Commits
    • 98844fb chore(release): v4.6.2 (#3843)
    • 9355e0d Merge pull request #3839 from dequelabs/release-2022-12-23
    • 82819eb chore(release): 4.6.2
    • 31a3e01 fix(color-contrast): fix color-contrast check when running in an extension (#...
    • d5f6ca9 docs(api.md): update list of allowed tags (#3835)
    • edebf8d Merge pull request #3832 from dequelabs/master
    • 3600bcb Merge pull request #3831 from dequelabs/release-2022-12-14
    • ab3ce2a chore(release): 4.6.1
    • 36ed242 fix(d.ts): add optional include to ContextObject (#3830)
    • bb4ad21 Merge pull request #3825 from dequelabs/master
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Grid.js v6 - Functional Components

    Grid.js v6 - Functional Components

    Grid.js v6 🚀

    Context

    This PR updates Grid.js and most internal components to work with Functional Preact components instead of class components. In addition to that, I have worked on simplifying the Config object and the state management process.

    Notable changes are:

    • Refactored the Plugins and internal components to the Functional component form factor
    • Implemented a simple Redux library to manage the internal state (added useConfig, useContext and useStore)
    • Removed the centralised dispatcher object and replaced it with a central Store object
    • Updated the Container and Grid component to use Context for passing the Config object to downstream components
    • Simplified the Config object and removed the redundant/unused attributes
    • Updated and refactored the unit tests

    Why?

    Simplified Config and State management process along with Functional components (instead of class components) makes Grid.js much easier to maintain and manage. It also reduces the build output size by about 30% which is a great win.

    Feedback

    I understand this is a huge PR (15k lines changed) and I apologise. It's almost impossible to break down this PR into smaller change sets but I'm happy to provide more context if anyone has any questions.

    bug fix new feature breaking performance 
    opened by afshinm 4
Releases(5.1.0)
Owner
Grid.js
Advanced table plugin
Grid.js
✏️ A small jQuery extension to turn a static HTML table into an editable one. For quickly populating a small table with JSON data, letting the user modify it with validation, and then getting JSON data back out.

jquery-editable-table A small jQuery extension to turn an HTML table editable for fast data entry and validation Demo ?? https://jsfiddle.net/torrobin

Tor 7 Jul 31, 2022
a lightweight, dependency-free JavaScript plugin which makes a HTML table interactive

JSTable The JSTable is a lightweight, dependency-free JavaScript plugin which makes a HTML table interactive. The plugin is similar to the jQuery data

null 63 Oct 20, 2022
A plugin for generate markdown table quickly like Typora.

Obsidian Table Generator A plugin for generate markdown table quickly like Typora. Features You can use obsidian-table-generator to generate markdown

Boninall 58 Dec 30, 2022
jQuery plugin to generate a table of contents

jquery.contentify A jQuery plugin to generate a table of contents Usage The below code snippet shows how to create the table of contents in a containe

Johannes Marbach 1 Aug 24, 2021
The JSTable is a lightweight, dependency-free JavaScript plugin which makes a HTML table interactive

The JSTable is a lightweight, dependency-free JavaScript plugin which makes a HTML table interactive. The plugin is similar to the jQuery data

null 63 Oct 20, 2022
A long list of (advanced) JavaScript questions, and their explanations

JavaScript Questions I post multiple choice JavaScript questions on my Instagram stories, which I'll also post here! Last updated: June 12th From basi

Lydia Hallie 50.9k Jan 1, 2023
dotdotdot.js, advanced cross-browser ellipsis for multiple line content.

dotdotdot Dotdotdot is a javascript plugin for truncating multiple line content on a webpage. It uses an ellipsis to indicate that there is more text

Fred Heusschen 1.7k Dec 20, 2022
lua-pack is an advanced lua bundler similar to webpack made for lua 5.1+ written in js

lua-pack is an advanced lua bundler similar to webpack made for lua 5.1+ written in js that makes working on large scale projects easy and fast. it takes all the files in your project and packs them into a single production ready file.

Chris 10 May 14, 2022
advanced calculator using only HTML, CSS and JS

Welcome to GitHub Pages You can use the editor on GitHub to maintain and preview the content for your website in Markdown files. Whenever you commit t

null 9 May 14, 2022
Project of advanced web programming for University of California, Irvine

projectWeb Project of advanced web programming for University of California, Irvine The goal is to re create a r/place in our own way. You can see an

Zolaski 2 May 31, 2022
AwardBot is an open source advanced giveaway bot. Written in Discord.js

AwardBot is an open source advanced giveaway bot. Written in Discord.js. You can set conditions for the giveaways, automatically deliver the prizes, and lock the giveaways.

Award 2 Oct 29, 2022
An Advanced Activity Command Using Discord-Together Package For Discord.jsv13 with buttons

Active An Advanced Activity Bot Using Discord-Together Package For Discord.jsv13 with buttons. Report Bug · Request Feature Usage. How to run the bot?

Hypwreck 11 Feb 15, 2022
TDX 22: Advanced Salesforce Functions

Route Planner with Charging Stations Architecture Apex Utility Classes Salesforce Schema Deployment Instructions Create a Scratch Org sfdx force:org:c

null 21 Nov 22, 2022
Node WebStation is a powerful tool designed for developers allowing them to create advanced web sockets for any use all without having the requirement to code.

Node WebStation Node WebStation is a powerful tool designed for developers to use to create an advanced WebStation for any use all without not having

null 2 Jun 4, 2022
This repository contains an Advanced Zoom Apps Sample. It should serve as a starting point for you to build and test your own Zoom App in development.

Advanced Zoom Apps Sample Advanced Sample covers most complex scenarios that you might be needed in apps. App has reference implementation for: Authen

Zoom 11 Dec 17, 2022
Base provides advanced Promise Queue Manager, Custom Console Logger and other utilities.

Base Base provides frequently used functionality like cutome logger, response helper, Custom Promise and Instance composer. These are used in almost a

PLG Works 14 Jun 14, 2022
The most advanced responsive front-end framework in the world. Quickly create prototypes and production code for sites that work on any kind of device.

Install | Documentation | Releases | Contributing Foundation is the most advanced responsive front-end framework in the world. Quickly go from prototy

Foundation 29.4k Jan 4, 2023
Remix enables you to build fantastic user experiences for the web and feel happy with the code that got you there. In this workshop, we'll look at some more advanced use cases when building Remix applications.

?? Advanced Remix Workshop Remix enables you to build fantastic user experiences for the web and feel happy with the code that got you there. In this

Frontend Masters 167 Dec 9, 2022
Matt's Advanced TypeScript workshop

Advanced TypeScript Workshop Hello! My name's Matt Pocock. This is a workshop repo to teach you about Advanced TypeScript. Topics Covered Using typeof

Matt Pocock 774 Dec 24, 2022