Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

tabster

microsoft686.4kMIT8.5.6TypeScript support: included

Focus Management Tools for Web

readme

Tabster

Tabindex on steroids.

A set of tools and concepts for making a dynamic web application properly accessible and keyboard-navigable.

https://tabster.io.

About

The way a browser and the screen readers handle a web application is evolved from the static web era. A process of making a modern dynamic web application accessible presents a number of challenges like, for example, the proper focus management between modal dialogs, popups, lists and other parts of the dynamically changing application. This project is an attempt to solve some of those challenges.

Dependencies

This project is framework-agnostic. It operates on the DOM level and has no external runtime dependencies. Though it is possible that your framework or application might have own logic to achieve similar result, in that case runtime conflicts and behavioural inconsistencies are definitely possible. At the same time, it does not do things automatically and parts of it should be explicitly enabled.

Parts

Focusable

An API for traversing focusable elements.

Deloser

When you remove, for example, a button which has focus from the DOM, the focus gets lost which is confusing for the screen reader and keyboard navigation users. Deloser is a concept which helps to automatically restore the focus when it gets lost without manually calling .focus() method from the application code.

FocusedElementState

An event and a couple of methods to track and change currently focused element.

KeyboardNavigationState

An event and a method to determine if the user is using keyboard to navigate through the application.

Groupper

Keyboard navigation for the lists should allow to avoid going through every list item when the users use Tab key (only one item of the list should be tabbable), also the arrow keys and Home/End/PageUp/PageDown keys should be handled to move between the list items. This is an API to easily make properly behaving lists.

Modalizer

When you show, for example, a modal dialog, the rest of the application might need to be excluded from the keyboard and screen reader navigation flow. Modalizer is a concept to conveniently make that possible.

Outline

When people navigate with the keyboard, the currently focused element should be properly highlighted. There is a CSS property called outline, which is unfortunately insufficient: the outline of an element gets cropped when a parent element has overflow: hidden, there is no way to limit the outline visibility to only the cases when the user is navigating with keyboard. So, we have a custom outline component which is supposed to solve both of the problems.

Contributing

Contributions are welcome (see the CONTRIBUTING file), though please keep in mind the work-in-progress proof-of-concept state. Might make sense to just observe/discuss until the thing gets stable and well-documented.

The repo now has an examples project powered by Storybook. Just run npm start

License

This project is licensed under the MIT License, see the LICENSE file for details.

changelog

Changelog

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

Generated by auto-changelog.

v8.5.5

  • fix(Modalizer): Do not follow virtual parents when removing aria-hidden for the element focused in modalizer. #460
  • chore(deps-dev): bump vite from 6.3.3 to 6.3.4 #462

v8.5.5-canary.2

29 April 2025

  • Fixing build invocation. #461
  • Release 8.5.5-canary.2 79f3852

v8.5.5-canary.1

29 April 2025

v8.5.5-canary.0

29 April 2025

  • Massive deps bump #459
  • fix(Modalizer): Do not follow virtual parents when removing aria-hidden for the element focused in modalizer. 30fb94c
  • Release 8.5.5-canary.0 fd14238

v8.5.4

24 April 2025

  • fix: unhandled promise rejection in ObservedElementAPI #453
  • Tabster 8.5.3. #456
  • Release 8.5.4 66e8c2f

v8.5.3

4 April 2025

  • fix(Restorer): Make sure that Restorer picks targets that are still Restorers. #443
  • Release 8.5.3 c84d8cc

v8.5.3-canary.0

4 April 2025

  • fix(Restorer): Make sure that Restorer picks targets that are still Restorers. 99b818f
  • Release 8.5.3-canary.0 57f7b87

v8.5.2

18 March 2025

  • fix: Ignoring invisible iframes and uncontrolled areas. #438
  • Release 8.5.2 92e410e

v8.5.2-canary.2

17 March 2025

  • Release 8.5.2-canary.2 77fbb36
  • Checking for true hierarchical relations during walking the DOM for next element to avoid falling into virtual parent. 08e4660

v8.5.2-canary.1

11 March 2025

  • Release 8.5.2-canary.1 915cad4
  • Skipping invisible iframes in the tree walker too. e62c3e3

v8.5.2-canary.0

11 March 2025

  • fix: Ignoring invisible iframes and uncontrolled areas. 66fe5c1
  • Release 8.5.2-canary.0 a2d4202

v8.5.1

10 March 2025

  • fix(Modalizer): Fixing incorrect restore focus behaviour. #437
  • Release 8.5.1 50b9e40

v8.5.1-canary.0

28 February 2025

  • fix(Modalizer): Fixing incorrect restore focus behaviour. e104dfd
  • Release 8.5.1-canary.0 0a5590f

v8.5.0

14 February 2025

  • feat(Modalizer): A method to activate modalizer without moving focus. #435
  • Release 8.5.0 ff251c6

v8.4.1

10 February 2025

  • Fix(Modalizer): Adding activation history to the modalizer to activate the most recently active if the current one is removed. #424
  • chore(deps-dev): bump rollup from 2.67.2 to 2.79.2 #434
  • chore(deps): bump cookie and express #433
  • chore(deps-dev): bump elliptic from 6.5.4 to 6.6.1 #432
  • chore(deps): bump dom-iterator from 1.0.0 to 1.0.2 in /docs #431
  • chore(deps): bump store2 from 2.13.1 to 2.14.4 #429
  • chore(deps): bump markdown-to-jsx from 7.1.6 to 7.7.3 #428
  • chore(deps): bump http-proxy-middleware from 2.0.4 to 2.0.7 in /docs #427
  • chore(deps): bump nanoid from 3.3.2 to 3.3.8 in /docs #426
  • chore(deps): bump body-parser and express #419
  • chore(deps): bump send and express #421
  • chore(deps): bump serve-static and express in /docs #418
  • chore(deps-dev): bump elliptic from 6.5.4 to 6.5.7 #401
  • chore(deps): bump fast-xml-parser from 4.2.5 to 4.4.1 in /docs #396
  • chore(deps): bump webpack from 5.76.1 to 5.94.0 in /docs #412
  • Release 8.4.1 89229c8

v8.4.0

7 February 2025

  • feat(ObservedElement): Adding observed element request status. #425
  • Release 8.4.0 8f88815
  • Bumping action artefacts for github-pages workflow to v4. 1823ca3
  • Bumping actions/deploy-pages for github-pages workflow to v4. 552007a

v8.3.1-canary.0

28 January 2025

  • Fix(Modalizer): Adding activation history to the modalizer to activate the most recently active if the current one is removed. 3a23624
  • Release 8.3.1-canary.0 e130c2a

v8.3.0

23 January 2025

  • fix(Groupper, Modalizer): Consolidating and making consistent how Groupper and Modalizer are activated on different interactions. #404
  • Release 8.3.0 1976f94

v8.3.0-canary.1

22 January 2025

  • Release 8.3.0-canary.1 b0b068e
  • Activating Modalizer on creation only when the focused element is strictly inside. 0644f7d

v8.3.0-canary.0

17 December 2024

  • fix(Groupper, Modalizer): Consolidating and making consistent how Groupper and Modalizer are activated on different interactions. e389e55
  • Revert "Release 8.1.0-canary.0" f0cb36e
  • Release 8.1.0-canary.0 34744b8

v8.2.0

26 September 2024

  • feat(ObservedElementAPI): add options to requestFocus() #422
  • fix(modalizer): stop focus from leaving trapped modal w/ no focusable descendants #403
  • Release 8.2.0 a89fc5d

v8.1.0

11 September 2024

  • feature(restorer): link source and target by id #416
  • ci(release): fix npm install hang and address critical security deps #407
  • use npm install script directly #405
  • Release 8.1.0 3ef036f

v8.1.0-canary.0

21 August 2024

  • ci: add skipPublish variable to release pipeline #402
  • chore: bump loader-utils and shell-quote deps #400
  • fix(Groupper, Modalizer): Consolidating and making consistent how Groupper and Modalizer are activated on different interactions. e389e55
  • Release 8.1.0-canary.0 34744b8

v8.0.1

8 July 2024

  • fix(Mover): Checking that memorized element is still focusable. #393
  • Release 8.0.1 7ca8d56

v8.0.0

13 June 2024

  • Rearranging exports so that types are separate from consts and consts are not bulk-exported as subproperty. #390
  • fix(Focusable): Skipping unchecked radio group buttons when there is a checked button in the group. #388
  • getDummyInputContainer() utility function. #391
  • Release 8.0.0 b5ebf6a
  • Release 7.1.4 be9a752
  • Release 7.3.0 0ff8b1c

v8.0.0-canary.0

21 May 2024

  • Rearranging exports so that types are separate from consts and consts are not bulk-exported as subproperty. 0ba63cb
  • Release 8.0.0-canary.0 caf23e5

v7.4.0-canary.3

14 August 2024

  • Release 7.4.0-canary.3 9be52de
  • Removing extra condition for activating modalizer. 2d53cd1

v7.4.0-canary.2

13 August 2024

  • Deactivating only modals that share the same element with groupper when the element gets focused. 4a15750
  • Release 7.4.0-canary.2 2ab0fd2

v7.4.0-canary.1

13 August 2024

  • Looking for a parent modalizer when deactivating modalizer on focused element. f00ff03
  • Release 7.4.0-canary.1 d69e61b

v7.4.0-canary.0

1 August 2024

  • fix(Groupper, Modalizer): Consolidating and making consistent how Groupper and Modalizer are activated on different interactions. e7aeede
  • Release 7.4.0-canary.0 130a19f

v7.3.0

12 June 2024

  • fix(Focusable): Skipping unchecked radio group buttons when there is a checked button in the group. #388
  • Release 7.3.0 0ff8b1c

v7.2.0

28 May 2024

  • getDummyInputContainer() utility function. #391
  • Release 7.2.0 c9d7ac9

v7.1.4

21 May 2024

v7.1.3

17 May 2024

  • chore(deps): bump follow-redirects from 1.15.4 to 1.15.6 in /docs #371
  • chore(deps-dev): bump follow-redirects from 1.15.4 to 1.15.6 #372
  • chore(deps): bump webpack-dev-middleware from 5.3.1 to 5.3.4 in /docs #375
  • chore(deps-dev): bump express from 4.17.3 to 4.19.2 #376
  • chore(deps): bump express from 4.17.3 to 4.19.2 in /docs #377
  • chore(deps-dev): bump vite from 2.9.17 to 2.9.18 #380
  • fix(Mover): Excluding possible out of DOM order virtual children from Mover. #389
  • fix(Mover): Excluding possible out of DOM order virtual children from Mover. (#389) #374
  • Release 7.1.3 c5966c5

v7.1.2

3 May 2024

v7.1.1

24 April 2024

  • feat(Modalizer): Adding semi-internal noDirectAriaHidden flag to tap into the process of setting aria-hidden. #386
  • Release 7.1.1 20f53da

v7.1.0

4 April 2024

  • Improving how enums are declared. #379
  • fix: add details > summary, audio, and video to focusable selector #368
  • fix: hidden fixed elements do not receive focus #367
  • Release 7.1.0 7df8035

v7.0.1

8 March 2024

  • fix: Fixing memory leak in a specific DOM change scenario. #366
  • Replacing keyCode usages with key. #365
  • Release 7.0.1 f536c45

v7.0.0

4 March 2024

  • Node.js environment compatibility for CustomEvent usage, exposing old dispatch event functions marked as deprecated. #364
  • feat(Focusable): Checking for display:none during the element search to skip hidden DOM. #329
  • Release 7.0.0 2cdc253

v7.0.0-canary.3

3 March 2024

  • Exporting deprecated functions. f384873
  • Release 7.0.0-canary.3 864f88c

v7.0.0-canary.2

29 February 2024

  • Trying to not override globals. 764f369
  • Release 7.0.0-canary.2 814547e

v7.0.0-canary.1

29 February 2024

  • Fixing Events import in Node.js. c01818e
  • Release 7.0.0-canary.1 dfa9f8e

v7.0.0-canary.0

29 February 2024

  • Fixing races between parts of Tabster that want to focus something asynchronously. #362
  • chore(deps): bump ip from 1.1.5 to 1.1.9 in /docs #359
  • chore(deps-dev): bump ip from 1.1.8 to 1.1.9 #357
  • chore(deps): bump follow-redirects from 1.14.9 to 1.15.4 in /docs #345
  • chore(deps-dev): bump follow-redirects from 1.14.8 to 1.15.4 #344
  • feat(Deloser): Preventable events to control Deloser, manual focus restoratin Deloser strategy. #361
  • Refactoring all Tabster events for good. #358
  • feat(Focusable): Checking for display:none during the element search to skip hidden DOM. 65b1454
  • Release 7.0.0-canary.0 818908a
  • Removing isDisplayNone() check from acceptElement to profile it later. ae16787

v6.1.0

19 February 2024

  • feat(Mover): Event to forget or alter memorized element in Mover with memorizeCurrent. #355
  • Release 6.1.0 d4482f2

v6.0.1

8 February 2024

  • feat(Modalizer): Do not set aria-hidden on elements which are virtual children of active Modalizer. #354
  • Release 6.0.1 5423336

v6.0.0

30 January 2024

  • ShadowDOM support #347
  • chore(deps-dev): bump vite from 2.9.16 to 2.9.17 #349
  • Bumping keyborg to 2.4.1. #352
  • Move focus APIs and custom events to move focus. #351
  • fix: Restorer works in Firefox and Safari when initial focus is set #343
  • fix(Groupper,Modalizer): Fixing async Esc handling when groupper is combibed with modalizer. #350
  • Update README.md #346
  • Release 5.2.1 a47fc33
  • Release 6.0.0 d9f57bb
  • Release 5.3.0 14d851b

v6.0.0-experimental.1

10 January 2024

v6.0.0-experimental.0

4 January 2024

v6.0.0-canary.3

30 January 2024

  • chore(deps-dev): bump vite from 2.9.16 to 2.9.17 #349
  • Bumping keyborg to 2.4.1. #352
  • Move focus APIs and custom events to move focus. #351
  • fix: Restorer works in Firefox and Safari when initial focus is set #343
  • fix(Groupper,Modalizer): Fixing async Esc handling when groupper is combibed with modalizer. #350
  • Update README.md #346
  • Release 5.2.1 a47fc33
  • Revert "Release 6.0.0-canary.0" 0b02e9d
  • Release 6.0.0-canary.3 7d0d8f3

v6.0.0-canary.2

11 January 2024

  • Putting DOMAPI to the right place. da4c128
  • Release 6.0.0-canary.2 15ad83c
  • Exposing DOMAPI type. 6fc3101

v6.0.0-canary.1

11 January 2024

v6.0.0-canary.0

11 January 2024

  • Dumping current state. 1adf045
  • Initial ShadowDOM support steps. 12d039c
  • Arranging things together. b018f78

v5.3.0

25 January 2024

  • Bumping keyborg to 2.4.1. #352
  • Move focus APIs and custom events to move focus. #351
  • fix: Restorer works in Firefox and Safari when initial focus is set #343
  • Release 5.3.0 14d851b

v5.2.1

22 January 2024

  • fix(Groupper,Modalizer): Fixing async Esc handling when groupper is combibed with modalizer. #350
  • Update README.md #346
  • Release 5.2.1 a47fc33

v5.2.0

14 December 2023

  • feat(Groupper): Handling Esc asynchronously to give the app to react on Esc press. #331
  • feat: Adding tabster:movefocus DOM event which is triggered every time Tabster wants to move focus. #332
  • Release 5.2.0 599e33d

v5.1.0

5 December 2023

  • feat(Uncontrolled): completely prop to indicate that uncontrolled area fully controls Tab. #327
  • Release 5.1.0 1d5235b

v5.0.2

16 November 2023

  • fix(Mover): Fixing the case when focusable mover container was causing memorization of current element on the wrong mover. #325
  • Update puppeteer #314
  • Release 5.0.2 3901357

v5.0.1

10 November 2023

  • Bumping Keyborg to 2.2.0. #324
  • chore(deps-dev): bump browserify-sign from 4.2.1 to 4.2.2 #322
  • chore(deps): bump @babel/traverse from 7.17.3 to 7.23.3 in /docs #320
  • Add CredScan filter #323
  • chore(deps-dev): bump word-wrap from 1.2.3 to 1.2.4 #297
  • Release 5.0.1 a8344a8

v5.0.0

9 November 2023

  • fix: Changing usages of WeakRef to internal WeakHTMLElement that has handling of the environments that do not have WeakRef. #319
  • fix(Mover): Fixing how Mover handles elements with aria-expanded. #318
  • Revaming handling for uncontrolled areas. #304
  • Enable 1ESPT pipelines #317
  • feat(DummyInputObserver): Keeping only weak references in the DummyInputObsrver. #313
  • feat: getParent prop for createTabster #308
  • Release 4.8.0 0a003f3
  • Release 4.9.0 6bfd54a
  • Release 5.0.0 fa72d2e

v5.0.0-canary.6

25 September 2023

  • Release 5.0.0-canary.6 d2fae71
  • Taking top-most uncontrolled. d928e70

v5.0.0-canary.5

22 September 2023

  • Better handling for uncontrolled focus traps. b3cb276
  • Release 5.0.0-canary.5 dd787c7

v5.0.0-canary.4

21 September 2023

  • fix: Restorer should restore focus when element is removed in Safari & Firefox #306
  • isTrappingFocus callback for uncontrolled. ae8fd91
  • Release 4.7.3 f22176a
  • Release 5.0.0-canary.4 bf4cb43

v5.0.0-canary.3

9 September 2023

v5.0.0-canary.2

8 September 2023

  • Approaching uncontrolled areas adding phantom dummies from outside. 929f747
  • Removing unneeded function. df9d776
  • Release 5.0.0-canary.2 625f41f

v5.0.0-canary.1

7 September 2023

  • Handling using phantom dummies with focusables that have subfocusables. f9bd09b
  • Addressing the comments. e0945cd
  • Release 5.0.0-canary.1 f494ef4

v5.0.0-canary.0

4 September 2023

  • Revaming handling for uncontrolled areas. 4ac379f
  • Adjusting the place to return output uncontrolled prop. 9d8d945
  • Release 5.0.0-canary.0 37d17f4

v4.9.0

19 October 2023

  • feat(DummyInputObserver): Keeping only weak references in the DummyInputObsrver. #313
  • Release 4.9.0 6bfd54a

v4.8.0

13 October 2023

  • feat: getParent prop for createTabster #308
  • fix: Restorer should restore focus when element is removed in Safari & Firefox #306
  • feat: Out of DOM order focusing improvement #302
  • fix: Restorer should add target to history on creation if focused #298
  • Release 4.7.3 f22176a
  • Release 4.8.0 0a003f3
  • Removing wrongly committed it.only(). fe7539d

v4.8.0-canary.0

20 August 2023

  • feat: Improving out of DOM order next focusables handling. d390d1d
  • Release 4.8.0-canary.0 a009cc8
  • Oops. 1a86249

v4.7.3

19 September 2023

  • fix: Restorer should restore focus when element is removed in Safari & Firefox #306
  • feat: Out of DOM order focusing improvement #302
  • fix: Restorer should add target to history on creation if focused #298
  • Release 4.7.3 f22176a

v4.7.2

2 August 2023

  • fix(Restorer): Use correct document for restore focus #300
  • Release 4.7.2 84472cc

v4.7.1

2 August 2023

v4.7.1-canary.0

2 August 2023

v4.7.0

19 July 2023

  • feat: Implement Restorer API #294
  • feat(Modalizer): An accessibleCheck callback for getModalizer() to be able to avoid setting aria-hidden on specific elements. #295
  • Use getAttribute instead of accessing id directly #287
  • chore(deps): bump fast-xml-parser from 4.2.4 to 4.2.5 #293
  • chore(deps): bump fast-xml-parser from 4.2.4 to 4.2.5 in /docs #292
  • chore(deps): bump semver from 5.7.1 to 5.7.2 in /docs #291
  • chore(deps): bump tough-cookie from 4.0.0 to 4.1.3 #289
  • Release 4.7.0 8c8bf4e

v4.6.0

19 June 2023

  • feat(Modalizer): A createTabster() option to provide alwaysAccessibleSelector selector for the elements to not set aria-hidden on. #286
  • chore(deps): bump fast-xml-parser from 4.0.3 to 4.2.4 #284
  • chore(deps): bump fast-xml-parser and is-svg in /docs #283
  • chore(deps-dev): bump vite from 2.9.13 to 2.9.16 #282
  • Release 4.6.0 3596de9

v4.5.1

14 June 2023

  • fix(Deloser): Add currently focused element to the history if the Deloser API is created asynchronously. #285
  • Release 4.5.1 fb4c26d

v4.5.0

7 June 2023

  • Grid with linear direction #281
  • Release 4.5.0 249091c

v4.4.3

25 May 2023

  • fix: Making sure getComputedStyle() is called for a Node.ELEMENT_NODE only. #279
  • Release 4.4.3 847ce97

v4.4.2

18 May 2023

  • chore(deps): bump vm2 from 3.9.17 to 3.9.19 #276
  • fix(DummyInput): Force dummy input position update when it is needed before the scheduled update. #278
  • Release 4.4.2 db2e877

v4.4.1

5 May 2023

  • chore(deps): bump vm2 from 3.9.16 to 3.9.17 #272
  • fix(CrossOrigin): Fixing the cross origin version of requestFocus() not waiting for the element to become accessible. #273
  • Release 4.4.1 3c29b31

v4.4.0

13 April 2023

  • feat(Mover, Groupper): Ignore handling arrows in Mover and Enter/Esc in Groupper when Ctrl, Alt, Shift or Meta keys are pressed. #269
  • feat(Mover): Making hasDefault true by default. #268
  • chore(deps): bump vm2 from 3.9.15 to 3.9.16 #267
  • chore(deps): bump vm2 from 3.9.11 to 3.9.15 #265
  • Release 4.4.0 871dcfe

v4.3.0

6 April 2023

  • feat(DummyInputs): Optimizing the dummy transform offsets to reduce the reflows. #264
  • fix(Core): Maintaining the initialization callbacks queue to be able to drain it on demand. #262
  • Release 4.3.0 72f107f

v4.3.0-canary.1

5 April 2023

  • Optimizing update timers. 3f44d89
  • Release 4.3.0-canary.1 5e14256
  • Revert "Release 4.3.0-canary.0" 203659f

v4.3.0-canary.0

4 April 2023

  • Check if EventTarget is constructable #261
  • feat(DummyInputs): Optimizing the dummy transform offsets to reduce the reflows. 275f6bd
  • Release 4.3.0-canary.0 0c9fac3

v4.2.1-canary.0

5 April 2023

  • fix(Core): Maintaining the initialization callbacks queue to be able to drain it on demand. 49ac923
  • Release 4.2.1-canary.0 5dc3d69

v4.2.0

27 March 2023

  • feat(DummyInput): Using only main mutation observer to update dummy inputs in DOM and bulk-updating transform offsets #254
  • fix(Mover, Groupper): Properly prioritizing grouppers and movers in the context when they are on the same element. #256
  • fix(Mover): Fixing trackState when it wasn't firing events for the elements that never were visible before. #255
  • chore(deps): bump webpack from 5.70.0 to 5.76.1 in /docs #253
  • fix(Tabster): Initializing Tabster-related everything for the DOM elements mounted before Tabster creation. #251
  • fix(Mover): Fixing a corner case in Mover/Groupper/Groupper scenario. #252
  • feat(sys): System API for adjusting the dummy inputs position in rare cases of necessity. #239
  • Release 4.2.0 725ace8

v4.1.3-canary.0

9 March 2023

  • fix(Modalizer): Fixing the race condition in Modalizer dispose #249
  • Adding .pages-deploy to .prettierignore. #248
  • A link to the docs site in README. #246
  • Building the docs in the PR pipeline to make sure they build ok. #243
  • Changing Node version in github-pages deploy workflow. #247
  • GitHub pages deploy permissions #245
  • Adding permissions for the docs deployment. #244
  • Revert "chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1 (#234)" #242
  • Revert "chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1 in /docs (#233)" #241
  • Revert "chore(deps): bump cacheable-request from 7.0.2 to 10.2.7 (#236)" #240
  • chore(deps): bump cacheable-request from 7.0.2 to 10.2.7 #236
  • chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1 #234
  • chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1 in /docs #233
  • fix(Tabster): Initializing Tabster-related everything for the DOM elements mounted before Tabster creation. 9c8a635
  • Release 4.1.3-canary.0 057a507
  • A comment about setTimeout. c08383e

v4.1.2

17 February 2023

  • fix: Add ArrowLeft and ArrowRight to ignoreKeydown type #237
  • Release 4.1.2 27ed6a1

v4.1.2-canary.0

23 February 2023

  • feat(sys): System API for adjusting the dummy inputs position in rare cases of necessity. 1b576b7
  • Release 4.1.2-canary.0 614a29b

v4.1.1

6 February 2023

  • Fixing handling various combinations of nested grouppers and movers. #231
  • chore(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 #232
  • Release 4.1.1 c1b46b4

v4.1.1-canary.0

6 February 2023

  • Handling nested structures better. 01632d1
  • Fixing nested grouppers inside mover. ed9ffd4
  • Release 4.1.1-canary.0 385d1f4

v4.1.0

3 February 2023

  • feat: implement visibilityTolerance prop to Mover #229
  • fix: Remove Modalizer warning for aria labels #230
  • Release 4.1.0 733a305

v4.0.1

1 February 2023

  • fix: Mover should ignore CTRL key #228
  • fix(FocusedElement): A workaround for skipping last focusable if it is not accessible. #226
  • fix(Mover): Correct grid behaviour for Home/End PgUp/PgDn #222
  • Release 4.0.1 0b0a995

v4.0.1-canary.3

1 February 2023

  • Fixing handling uncontrolled inside hidden elements. 1128366
  • Do not ignore visibility of focusable. de4dc7f
  • Release 4.0.1-canary.3 7cf644a

v4.0.1-canary.2

30 January 2023

  • Returning top uncontrolled in context, one more uncontrolled test. f487495
  • Release 4.0.1-canary.2 8cbe4e2

v4.0.1-canary.1

27 January 2023

  • It is now consistent across modes. c9e1b0f
  • Making it all ignoreAccessibility for finding next tabbable. a24f142
  • Adjusting more and fixing the typo in a prop. f51f45a

v4.0.1-canary.0

26 January 2023

  • Bumping Keyborg to the latest version with any key keyboard navigation detection. #225
  • feat(Mover): hasDefault property for Mover that respects Focusable.isDefault flag. #224
  • chore(deps): bump ua-parser-js from 0.7.31 to 0.7.33 in /docs #223
  • fix(FocusedElement): A workaround for skipping last focusable if it is not accessible. 6440815
  • Release 4.0.1-canary.0 542eef8

v4.0.0-canary.0

25 January 2023

  • chore(deps): bump json5 from 1.0.1 to 1.0.2 #215
  • chore(deps): bump json5 from 2.2.0 to 2.2.3 in /docs #214
  • Modalizer revamp #218
  • feat: Mover should support ignoreKeydown property #221
  • Fixing autoRoot and moving Tabster attribute helpers to a separate file. #219
  • Release 3.1.0 a3714d0
  • Release 4.0.0-canary.0 369eb7c

v3.2.2-canary.0

20 January 2023

v3.2.1-canary.0

18 January 2023

  • Removing autoRoot fix to a separate PR. faf63c5
  • More adjacent Mover tests. e53a0c0
  • Keeping findElements behaviour consistent with the previous version. ac8f8b1

v3.2.0-canary.0

18 January 2023

v3.1.0

24 January 2023

  • feat: Mover should support ignoreKeydown property #221
  • Fixing autoRoot and moving Tabster attribute helpers to a separate file. #219
  • Release 3.1.0 a3714d0

v3.1.0-canary.0

16 January 2023

v3.0.8

10 January 2023

  • fix(Mover): Fixing inability to Tab into adjacent Mover. #217
  • Release 3.0.8 0a7f2a2

v3.0.7

4 January 2023

  • feat(KeyboardNavigationState): Exposing setNavigatingWithKeyboard() method to be able to change the keyboard navigation state programmatically. #213
  • Release 3.0.7 e756995

v3.0.6

21 December 2022

  • fix(Mover): Considering various types of <input> inside Mover. #212
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /docs #208
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 #207
  • chore(deps): bump loader-utils from 1.4.0 to 1.4.2 #204
  • chore(deps): bump deep-object-diff from 1.1.7 to 1.1.9 #205
  • Release 3.0.6 e4e2441

v3.0.5

26 October 2022

  • fix(Core): Fixing makeNoOp(). #201
  • Release 3.0.5 c8f9ddb

v3.0.4

19 October 2022

  • fix(Mover): Fixing Mover grid behaviour and adding tests for it. #196
  • chore(deps): bump workspace-tools from 0.16.2 to 0.27.0 #200
  • chore(deps): bump parse-path from 4.0.3 to 7.0.0 #199
  • chore(deps): bump parse-url from 6.0.5 to 8.1.0 #198
  • Release 3.0.4 67d7f96

v3.0.3

11 October 2022

  • fix(Uncontrolled): Handling Uncontrolled areas before and after Mover/Groupper with another Uncontrolled. #197
  • fix: Modalizer aria-label warning should be less severe #195
  • feat(Focusable): Element callback for findAll() and ability to findAll() from a specified element in both directions. #193
  • chore: creates EventTarget ponyfill #192
  • chore(deps): bump got and release-it #190
  • Release 3.0.3 a354732

v3.0.2

13 September 2022

  • feat(Groupper): Ability to delegate the role of focusable groupper container to first focusble element in groupper. #189
  • fix(CrossOrigin): requestFocus() from CrossOrigin API should be able to focus programmatically focusable elements. #187
  • Release 3.0.2 7566515

v3.0.1

31 August 2022

  • fix(Groupper): Putting dummy inputs inside the groupper container when it is <li>, <td> or <th>. #186
  • chore(deps-dev): bump vite from 2.9.12 to 2.9.13 #185
  • Release 3.0.1 d5848f3

v3.0.0

30 August 2022

  • Big find elements refactoring #184
  • Release 3.0.0 fb9795a

v2.1.2

17 August 2022

  • chore: Bump keyborg to 1.2.1 #182
  • chore(deps): bump parse-url from 6.0.0 to 6.0.5 #178
  • chore(deps): bump terser from 5.12.1 to 5.14.2 in /docs #169
  • chore(deps): bump terser from 4.8.0 to 4.8.1 #168
  • Do not handle the FocusedElement onKeyDown when using Ctrl + Tab #180
  • Release 2.1.2 2442813

v2.1.1

9 August 2022

  • Avoid updating dummy inputs positions while scrolling to avoid escessive reflows. #177
  • feat: adds aria-labelledby as possible required attribute for Modalizer #176
  • chore: bumps node version on nvmrc to LTS #175
  • chore: adds devcontainer to gitignore #174
  • Release 2.1.1 f4fe75f

v2.1.0

25 July 2022

  • fix: Dispose __tabsterDummy on DummyInputManagerCore #172
  • Handling Enter for groupper in ignoreKeydown API. #171
  • Making ignoreEsc API consistent. #170
  • feat: Add ignoreKeydown focusable attribute #166
  • Release 2.1.0 940ed92

v2.0.1

12 July 2022

  • getTabster() to get currently created and not refcounted Tabster instance if any. #167
  • Release 2.0.1 c2319f0

v2.0.0

8 July 2022

  • Reverting attempts to make breaking changes not so breaking. #164
  • Release 2.0.0 db7030d

v1.5.4

8 July 2022

  • Reverting #136 and #149 breaking changes. 52a5468
  • Release 1.5.4 6b5051c

v1.5.3

6 July 2022

  • fix: use predicate to assert tabster type instead of instanceof #163
  • Release 1.5.3 89b4a95

v1.5.2

5 July 2022

  • fix: get<API> should accept both Tabster and TabsterCore instance #161
  • Release 1.5.2 62ac598

v1.5.1

4 July 2022

  • fix: re-export getCurrentTabster #159
  • Release 1.5.1 95491cc

v1.5.0

30 June 2022

  • A parameter to force-dispose all instances. #157
  • chore: configure changelog #156
  • Create lightweight Tabster instance backed by a global TabsterCore #136
  • A groupper prop to ignore default Esc handler. #155
  • BREAK: feat(Observed): support multiple names on observed element #149
  • Supporting iframes and improving the testing framework. #154
  • Optimizing visibilityAware mover option performance. #153
  • Release 1.5.0 5f5a5f4

v1.4.2

26 May 2022

  • Ignoring arrow keypresses inside mover when focus is on an element with aria-expanded #152
  • Release 1.4.2 2541684

v1.4.1

25 May 2022

  • Handling arrow keys in contentEditable elements inside Mover. #150
  • Fixing findAll() and a bunch of corner cases in Mover/Groupper scenarios. #148
  • Release 1.4.1 c121b05
  • Changing the build user display name. 10449f0

v1.4.0

17 May 2022

  • Making sure the dummy inputs are within viewport and fixing Mover and uncontrolled behaviour. #145
  • feat: Allow circular focus trap in Modalizer #146
  • use internal class functions instead of static functions #143
  • Strip internal tabster APIs with @internal and have single TabsterCore type usage #137
  • chore(deps): bump async from 2.6.3 to 2.6.4 in /docs #140
  • Making sure that the phantom dummy input is cleaned up. #142
  • Bump version to 1.3.3 #139
  • Having dummy inputs outside of the element container for <ol>, <ul> and <table>. #138
  • Release 1.4.0 9b5c9d4
  • Release 1.3.4 5bf3e87

v1.4.0-testrelease.0

12 April 2022

  • Release 1.4.0-testrelease.0 47bc381

v1.3.4

28 April 2022

  • chore(deps): bump async from 2.6.3 to 2.6.4 in /docs #140
  • Making sure that the phantom dummy input is cleaned up. #142
  • Bump version to 1.3.3 #139
  • Release 1.3.4 5bf3e87

v1.3.3

19 April 2022

  • Having dummy inputs outside of the element container for <ol>, <ul> and <table>. #138
  • Add CI step to check for unstaged files #133
  • Release 1.3.3 d98d558

v1.3.2

12 April 2022

v1.3.1

12 April 2022

v1.3.0

11 April 2022

  • Avoiding multiple dummy input instances on the same node. #130
  • fix: Support typescript 3.9 and rollup types #129
  • chore: Upgrade npm lockfile to v2 #128
  • chore(deps): bump minimist from 1.2.5 to 1.2.6 in /docs #124
  • chore(deps): bump minimist from 1.2.5 to 1.2.6 #125
  • chore(deps): bump node-forge from 1.2.1 to 1.3.0 in /docs #121
  • chore(deps): bump prismjs from 1.26.0 to 1.27.0 in /docs #119
  • Adjusting images and bumping docusaurus. #126
  • More docs #123
  • Release 1.3.0 747e4f2
  • Fixing the images. a41a6d4
  • Optimizing the images. 8b0e823

v1.3.0-canary.3

16 March 2022

  • Release 1.3.0-canary.3 9397dde
  • Ensure branch is up to date after checkout df2f665
  • Fix syntax error in release pipeline 870b902

v1.3.0-canary.2

16 March 2022

  • Release pipeline on ADO #120
  • Update azure-pipelines.yml for Azure Pipelines 5c5f07c
  • Release 1.3.0-canary.2 c1769b7
  • Add NPM_TOKEN to release pipeline faaee50

v1.3.0-canary.1

16 March 2022

v1.3.0-canary.0

16 March 2022

v1.2.2

18 February 2022

  • (fix) Avoiding dispose race condition. #118
  • Release 1.2.2 5e075c4

v1.2.1

18 February 2022

  • (fix) Stop observing before the dummy inputs disposal. #117
  • Release 1.2.1 fd85c2f

v1.2.0

17 February 2022

  • (feat) Option to exclude part of the DOM from Mover. #116
  • Fixing the warning caused by missing await. #115
  • (chore) Fixing the flaky test. #114
  • Bumping the deps. #113
  • (feat) Allowing to enable dummy inputs on root in uncontrolled mode. #112
  • chore(deps): bump follow-redirects from 1.14.7 to 1.14.8 #110
  • fix: Handling Mover/Groupper/Mover scenario. #107
  • Allowing default action to Tab inside <webview>. #108
  • chore: remove unused packages #106
  • Fixing the links. #105
  • More docs #104
  • Fix/docs deploy #103
  • fix: docs deploy #102
  • fix: remove postinstall script to fix package installation #101
  • 1.1.0- IE11 EOL #97
  • Initial step for the docs #100
  • chore: refactor create functions to be functions not variables #99
  • chore: Add bundle size tests for each API separately #98
  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • Initial commit. f81e916
  • Massively refactoring... 2af6a20
  • Focus groups work in progress. bd766ab

1.2.0-canary.7

16 March 2022

1.2.0-canary.6

16 March 2022

1.2.0-canary.5

16 March 2022

1.2.0-canary.4

16 March 2022

1.2.0-canary.3

16 March 2022

1.2.0-canary.2

16 March 2022

1.2.0-canary.1

16 March 2022

1.2.0-canary.0

16 March 2022

  • 1.1.0- IE11 EOL #11
  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • Add azure devops release pipeline 36ce4f1

v1.1.2

2 February 2022

  • fix: Handling Mover/Groupper/Mover scenario. #107
  • Allowing default action to Tab inside <webview>. #108
  • chore: remove unused packages #106
  • Fixing the links. #105
  • More docs #104
  • Fix/docs deploy #103
  • fix: docs deploy #102
  • fix: remove postinstall script to fix package installation #101
  • 1.1.0- IE11 EOL #97
  • Initial step for the docs #100
  • chore: refactor create functions to be functions not variables #99
  • chore: Add bundle size tests for each API separately #98
  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • Global rename. bdd920e
  • fixes d1ffd1a
  • No global variables. 7539cba

1.1.1

16 March 2022

  • 1.1.0- IE11 EOL #11
  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • Add azure devops release pipeline 36ce4f1

v1.1.1

18 January 2022

  • fix: remove postinstall script to fix package installation #101
  • 1.1.0- IE11 EOL #97
  • Initial step for the docs #100
  • chore: refactor create functions to be functions not variables #99
  • chore: Add bundle size tests for each API separately #98
  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • Global rename. bdd920e
  • fixes d1ffd1a
  • No global variables. 7539cba

1.1.0

18 January 2022

  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • revert to single rolltup 3f5ae33

v1.1.0

18 January 2022

  • Initial step for the docs #100
  • chore: refactor create functions to be functions not variables #99
  • chore: Add bundle size tests for each API separately #98
  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • Global rename. bdd920e
  • Release 1.1.0 6d1ed97
  • merge conflicts d4327ab

1.1.0-alpha.4

7 December 2021

  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • revert to single rolltup 3f5ae33

v1.1.0-alpha.4

7 December 2021

  • chore: refactor create functions to be functions not variables #99
  • chore: Add bundle size tests for each API separately #98
  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • add release-it b6e3886
  • Global rename. bdd920e
  • fixes d1ffd1a

1.1.0-alpha.3

2 December 2021

  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • revert to single rolltup 3f5ae33

v1.1.0-alpha.3

3 December 2021

  • chore: refactor create functions to be functions not variables #99
  • chore: Add bundle size tests for each API separately #98
  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • add release-it b6e3886
  • Global rename. bdd920e
  • fixes d1ffd1a

1.1.0-alpha.2

2 December 2021

  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • revert to single rolltup 3f5ae33

v1.1.0-alpha.2

2 December 2021

  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • add release-it b6e3886
  • Global rename. bdd920e
  • fixes d1ffd1a

1.1.0-alpha.1

1 December 2021

  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • IE11 EOL and packaging changes bd21eda

v1.1.0-alpha.1

2 December 2021

  • chore(CrossOrigin): Refactor static variables to be a static function #96
  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72
  • fix: keep process.env.NODE_ENV check for test environment #71
  • Mutation observer should not be used in test environment #70
  • Adding focus/blur events to the root API. #69
  • fix(DummyInputManager): Mutation observer should be on declared element #67
  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63
  • Internal API to toggle mutation observer. #61
  • Groupper adjustments. #60
  • Fixing an uncontrolled in groupper corner case. #59
  • Groupper fix #58
  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Massive API cleanup. #53
  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • fix(Uncontrolled): Fixing several corner cases. #49
  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47
  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44
  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42
  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37
  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Merging 0.7.0 changes to master #32
  • FocusedElement: capture keydown listener #25
  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23
  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • Add keyboard navigation state example #9
  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • add release-it b6e3886
  • Global rename. bdd920e
  • fixes d1ffd1a

1.1.0-alpha.0

1 December 2021

  • Restrcuture bundle tools to use rollup instrad of tsdx #9
  • Adds @fluentui/bundle-size tool #8
  • chore: remove unused packages #6
  • Adds lockfile #7
  • Update README.md #4
  • Create ci.yml #5
  • Initialize README #3
  • fix: Use current version in package.json #2
  • init(keyborg): Moves keyborg code from tabster repo #1
  • add release-it 18d2c7e
  • Initial commit a9daeca
  • IE11 EOL and packaging changes bd21eda

v1.1.0-alpha.0

1 December 2021

  • Flatten project roots using TS project references #92
  • Fix some easy lint issues #93
  • Restructure project to use rollup instead of tsdx #87
  • Fix: use tabster.esm.js as entry point for bundle-size config #90
  • chore: Replace ts-jest with babel-jest #88
  • Adds bundle-size tooling #84
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode #85
  • Adds lockfile and nvmrc to ensure node and npm version #82
  • fix: storybook publish CI #81
  • chore: Move core to repo root and replace tslint with eslint and #80
  • chore: Add testing container to core storybook #79
  • chore: Remove example and demo projects #78
  • chore(storybook): Adds @storybook/html to core #76
  • Moves keyborg code into /core and removes keyborg package #75
  • fix(Modalizer): Only apply keydown listener in uncontrolled mode (#85) #77
  • add release-it b6e3886
  • chore: Do not rollup library into a single file 6fa0621
  • prettier c174628

v1.0.7

12 November 2021

  • fix(keyboardNavigationState): use nativeFocus when simulating keyboard #73
  • fix(tests): Add retries to connect to test container #74
  • chore: add tslib to deps #72

v1.0.6

10 November 2021

  • fix: keep process.env.NODE_ENV check for test environment #71
  • Fixing the tslint error. a1b4dd0

v1.0.5

10 November 2021

  • Mutation observer should not be used in test environment #70
  • fix(Root): Fixing the root focus event fix. e691cfa
  • fix(Root) Focus state. 845a833
  • fix(Root): Putting the controlTab check back. 84c09e1

v1.0.4

9 November 2021

  • Adding focus/blur events to the root API. #69

v1.0.3

8 November 2021

  • fix(DummyInputManager): Mutation observer should be on declared element #67

v1.0.2

3 November 2021

  • fix(ci): use Node 14 #66
  • implement code path with dummy inputs #64
  • changes tsconfig path #65
  • chore(Mover): MoverAPI now handles updateVisible #63

v1.0.1

16 September 2021

  • Internal API to toggle mutation observer. #61

v1.0.0

25 August 2021

  • Respecting noop flag in FocusedElementState. 19206e3

v1.0.0-alpha.8

25 August 2021

  • Groupper adjustments. #60

v1.0.0-alpha.7

24 August 2021

  • Fixing an uncontrolled in groupper corner case. #59

v1.0.0-alpha.6

17 August 2021

v1.0.0-alpha.5

13 August 2021

  • fix(Groupper): Fixing some unlimited grouppers scenarios. #57
  • fix(ObservedElement): Fixing requestFocus() for elements which are already in DOM, but not focusable yet. #56
  • API cleanup part deux. #54
  • Adjusting the setTabsterAttribute() logic. f0ba9d9
  • Fixing the tests. c88ad25

v1.0.0-alpha.4

10 August 2021

  • Massive API cleanup. #53
  • setTabsterAttribute() helper. 6b3a73d

v1.0.0-alpha.3

8 August 2021

  • Cancellable request focus #52
  • fix(FocusedElement): Making sure the correct elements are focused when tabbing to/from movers and grouppers. #51
  • fix(Modalizer): Restore focus asynchronously #50
  • Massive API cleanup. d838acf
  • A noop function. bf1c258
  • Just a boolean param. a73fbc3

v1.0.0-alpha.2

22 July 2021

v1.0.0-alpha.1

22 July 2021

  • fix(Uncontrolled): Fixing several corner cases. #49

v1.0.0-alpha.0

15 July 2021

  • Mover groupper refactoring #41
  • Disabling dummy inputs tabbability when the uncontrolled element has focus. #48
  • fix(ObservedElement): allow programmatically focusable on update #47

v0.7.4

28 June 2021

  • feat(uncontrolled): UncontrolledAPI #45
  • fix(requestFocus): Should focus tabindex=-1 #44

v0.7.3

18 June 2021

  • feat(version): Embed the version of the package in each tabster instance #43
  • fix(Core): Various small fixes #42

v0.7.2

8 June 2021

  • fix(Focusable): Use default Tab behaviour for iframes #40
  • fix(Modalizer+Deloser): Check if already focused #38
  • chore(Tests): Add initial tests for tabster #37

v0.7.1

31 May 2021

  • Accessible option for waiting observed element. #35
  • fix(examples): Add prepare phase to examples #36
  • chore(tests): Create test container app, fix deloser tests #34
  • Licence fix. 74aa573
  • Conflicting values for 'process.env.NODE_ENV'. fc28c2a

v0.7.0

27 May 2021

  • Merging 0.7.0 changes to master #32

v0.7.0-alpha.1

25 May 2021

  • Fix(autoRoot): auto root should have tabster attr #31
  • Fix(Modalizer): Dispose inactive modalizers #30
  • chore(keyborg): Cleaup and dedupe #29

v0.7.0-alpha.0

20 May 2021

  • Keyborg package. #28
  • Remove modalizer accessibility and set aria-hidden in tree instead #27
  • FocusedElement: capture keydown listener #25
  • A test. 084ba26
  • Oops. 9d437c3

v0.6.2

27 April 2021

  • chore: add "sideEffects": false to enable tree shaking #24
  • Cleanup typing for getTabsterAttribute #23

v0.6.1

14 April 2021

v0.6.0

13 April 2021

  • RTL awareness for tabster context and arrow keys #19
  • chore: update Storybook deployment to Github pages #22
  • Removes pre-push hooks #20
  • chore: add Storybook deployment to Github pages #21
  • chore: fix commands in GH action & fix run on Windows #18
  • chore: introduce GH actions #17
  • Add pre-push hook to build repo #15
  • Shared lint rules and pre-commit hook #14
  • fixes d1ffd1a
  • No global variables. 7539cba
  • remove lock eb5c846

v0.5.6

31 March 2021

  • Add extra configuration to mover #11
  • Focusable can optioanlly ignore aria-disabled #12
  • Handle shift+tab nested movers #10
  • use root mover for all cases 0c0cbab
  • fix demo build bcb7512
  • made conditions clearer fb980d9

v0.5.5

19 March 2021

  • Add keyboard navigation state example #9
  • Global rename. bdd920e
  • Dependencies bump. 4b38e58
  • Update example to be more gneeric 047c380

v0.5.4

17 March 2021

  • Observed element API weak refs and better cleanup. 7d3d48b

v0.5.3

4 March 2021

  • Accordion quick prototype. ce8267e
  • Explicitly removing listeners from dummy inputs. 8b8fcd9
  • Useless operator. 7e104eb

v0.5.2

3 March 2021

  • Fixing the dispose race condition. e06980f
  • Fixing the examples. 651b592
  • Removing the focused groupper reference. 560658e

v0.5.1

3 March 2021

  • Add popup content example with modalizer #8
  • Fix modalizer examples add additional logging #7
  • Introduce storybook for repo #6
  • add popup menu example b6282f7
  • Update demo.tsx 952ce0a
  • initialize APIs for all stories 26a98a4

v0.5.0

26 February 2021

  • Allowing to override internally used Promise and WeakRef. 16a265f
  • Moving forced garbage collection API outside of the core object. 481ad77

v0.4.3

18 February 2021

  • Add findAll to Focusable API #3
  • Support Home/End keys for Mover #2
  • Encourage single AH instance on window #4
  • Support cyclic mover navigation #1
  • add types and example 2b5b45c
  • resolved issues 80d8700
  • Encourage single instance of AH on window df230cd

v0.4.2

12 February 2021

  • AutoRoot props and AutoDeloser. ad5ffca

v0.4.1

4 February 2021

  • Mover to move focus using arrows. b5646b6
  • A little Mover example. 99d7138
  • Do not handle Enter/Esc in the non-groupper case. 89a2745

v0.4.0

1 February 2021

v0.3.10

15 January 2021

  • An API to explicitly force forgetting memorized elements. bc4ac91

v0.3.9

10 December 2020

  • Moving a helper from global namespace to the class. 9998912
  • Removing currently unused method. 1aaf301

v0.3.8

22 October 2020

  • Using Document as removedFrom target as the listeners listen to the Document anyway. 61462cc

v0.3.7

14 October 2020

  • Putting all window references in one place. c149263

v0.3.6

13 October 2020

v0.3.5

7 October 2020

  • Do not overdo the disposal. 5303464
  • Why Internet Explorer, oh why... 58d71b2

v0.3.4

23 September 2020

v0.3.3

21 September 2020

  • Ignoring left/right arrows for focused inputs. cf15126

v0.3.2

8 September 2020

  • Allowing to redefine sendUp callback and a few dispose fixes. 26af1e9

v0.3.1

2 September 2020

v0.3.0

31 August 2020

  • Disposable Ability Helpers. b5d6cfe

v0.2.5

20 August 2020

v0.2.4

18 August 2020

  • Deps upgrade, const in the generated code workaround. 74e0a0a

v0.2.3

12 August 2020

  • Fixes and missing things. 5a3cbce

v0.2.2

20 July 2020

v0.2.1

17 July 2020

  • Removing iframe functions. ed98237

v0.2.0

13 July 2020

v0.1.5

13 May 2020

v0.1.4

8 April 2020

v0.1.3

27 March 2020

  • Groupper state handling fix. 2e0797a
  • Prop handling fix. 4e59ee4
  • A gap for the in container visibility. d6ffc27

v0.1.2

25 March 2020

  • Dummy inputs around roots. 2c91565
  • A bit of element bounding rect cache. aff614c
  • Be able to construct an attribute value before the setup. 1c0d449

v0.1.1

4 March 2020

v0.1.0

4 March 2020

  • Massively refactoring... 2af6a20
  • Dump the current state. 39979fc
  • Allow window to be undefined for the no-op in the testing environment. d0eb517

v0.0.7

16 January 2020

v0.0.6

15 January 2020

  • Ability to trap focus inside a limitable group. b5753a0
  • Exposing setGroupProps() and finding the proper scrollable container for the keyboard navigation operations. b271ab0

v0.0.5

14 January 2020

v0.0.4

14 January 2020

v0.0.3

9 January 2020

  • Any peer version of React. 53b3036

v0.0.2

9 January 2020