All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Reset form-like components when the parent
<form>
resets (#2004) - Add warning when using
<Popover.Button />
multiple times (#2007) - Ensure Popover doesn't crash when
focus
is going towindow
(#2019) - Ensure
shift+home
andshift+end
works as expected in theCombobox.Input
component (#2024) - Improve syncing of the
Combobox.Input
value (#2042) - Fix crash when using
multiple
mode withoutvalue
prop (uncontrolled) forListbox
andCombobox
components (#2058)
1.7.4 - 2022-11-03
- Fix
<Popover.Button as={Fragment} />
crash (#1889) - Expose
close
function forMenu
andMenu.Item
components (#1897) - Fix
useOutsideClick
, add improvements for ShadowDOM (#1914) - Fire
<Combobox.Input>
'sonChange
handler when changing the value internally (#1916) - Add
client-only
to mark everything as client components (#1981)
- Warn when changing components between controlled and uncontrolled (#1878)
1.7.3 - 2022-09-30
- Improve
Portal
detection forPopover
components (#1842) - Fix
useOutsideClick
swallowing events inside ShadowDOM (#1876) - Fix
Tab
incorrectly activating onfocus
event (#1887)
1.7.2 - 2022-09-15
- Prevent option selection in
Combobox.Input
while composing (#1850) - Ensure we handle the
static
prop inTab.Panel
components correctly (#1856)
1.7.1 - 2022-09-12
- Improve iOS scroll locking (#1830)
- Add
<fieldset disabled>
check to radio group options in React (#1835) - Ensure
Tab
order stays consistent, and the currently activeTab
stays active (#1837) - Ensure
Combobox.Label
is properly linked when rendered afterCombobox.Button
andCombobox.Input
components (#1838) - Remove
forceRerender
fromTab
component (#1846)
1.7.0 - 2022-09-06
- Add
by
prop forListbox
,Combobox
andRadioGroup
(#1482, #1717, #1814, #1815) - Make form components uncontrollable (#1683)
- Add
@headlessui/tailwindcss
plugin (#1487)
- Fixed SSR support on Deno (#1671)
- Don’t close dialog when opened during mouse up event (#1667)
- Don’t close dialog when drag ends outside dialog (#1667)
- Fix outside clicks to close dialog when nested, unopened dialogs are present (#1667)
- Close
Menu
component when usingtab
key (#1673) - Resync input when display value changes (#1679, #1755)
- Ensure controlled
Tabs
don't change automagically (#1680) - Don't scroll lock when a Transition + Dialog is mounted but hidden (#1681)
- Allow
Popover
close
to be passed directly toonClick
handlers (#1696) - Improve outside click on Safari iOS (#1712)
- Improve event handler merging (#1715)
- Fix incorrect scrolling to the bottom when opening a
Dialog
(#1716) - Improve
Combobox
re-opening keyboard issue on mobile (#1732) - Ensure
Disclosure.Panel
is properly linked (#1747) - Only select the active option when using "singular" mode when pressing
<tab>
in theCombobox
component (#1750) - Improve the types of the
Combobox
component (#1761) - Only restore focus to the
Menu.Button
if necessary when activating aMenu.Option
(#1782) - Don't scroll when wrapping around in focus trap (#1789)
- Fix
Transition
component's incorrect cleanup and order of events (#1803) - Ensure enter transitions work when using
unmount={false}
(#1811) - Improve accessibility when announcing
Listbox.Option
andCombobox.Option
components (#1812) - Fix
ref
stealing from children (#1820) - Expose the
value
from theCombobox
andListbox
components render prop (#1822) - Improve
scroll lock
on iOS (#1824) - Fix maximum call stack size exceeded error on
Tab
component when usingas={Fragment}
(#1826) - Fix "blank" screen on initial load of
Transition
component (#1823)
1.6.6 - 2022-07-07
- Ensure
CMD
+Backspace
works in nullable mode forCombobox
component (#1617)
1.6.5 - 2022-06-20
- Fix incorrect transitionend/transitioncancel events for the Transition component (#1537)
- Improve outside click of
Dialog
component (#1546) - Detect outside clicks from within
<iframe>
elements (#1552) - Improve Combobox input cursor position (#1574)
- Fix scrolling issue in
Tab
component when using arrow keys (#1584)
1.6.4 - 2022-05-29
- Ensure
Escape
propagates correctly inCombobox
component (#1511) - Remove leftover code in Combobox component (#1514)
- Fix event handlers with arity > 1 (#1515)
- Fix transition
enter
bug (#1519) - Fix render prop data in
RadioGroup
component (#1522)
1.6.3 - 2022-05-25
- Allow to override the
type
on theCombobox.Input
(#1476) - Ensure the the
<Popover.Panel focus>
closes correctly (#1477) - Only render the
FocusSentinel
if required in theTabs
component (#1493) - Ensure the Transition stops once DOM Nodes are hidden (#1500)
1.6.2 - 2022-05-19
- Fix closing of
Popover.Panel
in React 18 (#1409) - Ignore
Escape
when event got prevented inDialog
component (#1424) - Improve
FocusTrap
behaviour (#1432) - Simplify
Popover
Tab logic by using sentinel nodes instead of keydown event interception (#1440) - Ensure the
Popover.Panel
is clickable without closing thePopover
(#1443) - Improve "Scroll lock" scrollbar width for
Dialog
component (#1457) - Make the
ref
optional in thePopover
component (#1465) - Ensure the
ref
is forwarded on theTransition.Child
component (#1473)
1.6.1 - 2022-05-03
- Fix hydration issue with
Tab
component (#1393)
1.6.0 - 2022-04-25
- Ensure that you can add the
ref
prop to all components (#1116) - Ensure links are triggered inside
Popover.Panel
components (#1153) - Improve SSR for
Tab
component (#1155) - Fix
hover
scroll issue inListbox
,Combobox
andMenu
components (#1161) - Guarantee DOM sort order when performing
Listbox
,Combobox
andMenu
actions (#1168) - Fix
<Transition>
flickering issue (#1118) - Improve outside click support (#1175)
- Ensure that
appear
prop on the<Transition>
component works regardless of multiple rerenders (#1179) - Reset
Combobox.Input
when the value gets reset (#1181) - Fix double
beforeEnter
callback on the<Transition>
component caused by SSR (#1183) - Adjust active
item
/option
index onListbox
,Combobox
andMenu
components (#1184) - Only activate the
Tab
on mouseup (#1192) - Ignore "outside click" on removed elements (#1193)
- Remove
focus()
fromListbox.Option
(#1218) - Improve some internal code (#1221)
- Use
ownerDocument
instead ofdocument
(#1158) - Ensure focus trapping plays well with the
Tab
andDialog
components (#1231) - Improve syncing of
Combobox.Input
value (#1248) - Fix tree-shaking support (#1247)
- Stop propagation on the
Popover.Button
(#1263) - Fix incorrect
active
option in theListbox
andCombobox
components (#1264) - Properly merge incoming props (#1265)
- Fix incorrect closing while interacting with third party libraries in
Dialog
component (#1268) - Mimic browser select on focus when navigating the
Tab
component (#1272) - Ensure that there is always an active option in the
Combobox
(#1279, #1281) - Support classic form submissions in
RadioGroup
,Switch
andCombobox
components (#1285) - Add React 18 compatibility (#1326)
- Fix open/closed state issue in
Dialog
(#1360)
- Add classic form submission compatibility via new hidden inputs (#1214)
- Add multiple value support to
Listbox
andCombobox
components (#1243, #1355) - Add support for clearing the value of a
Combobox
(#1295) - Add
Dialog.Backdrop
andDialog.Panel
components (#1333)
1.5.0 - 2022-02-17
- Ensure correct order when conditionally rendering
Menu.Item
,Listbox.Option
andRadioGroup.Option
(#1045) - Improve controlled Tabs behaviour (#1050)
- Improve typeahead search logic (#1051)
- Improve overal codebase, use modern tech like
esbuild
and TypeScript 4! (#1055) - Improve build files (#1078)
- Ensure typeahead stays on same item if it still matches (#1098)
- Fix off-by-one frame issue causing flicker (#1111)
- Trigger scrollIntoView effect when position changes (#1113)
1.4.3 - 2022-01-14
- Ensure portal root exists in the DOM (#950)
- Ensure correct DOM node order when performing focus actions (#1038)
1.4.2 - 2021-11-08
- Stop the event from propagating in the
Popover
component (#798) - Allow clicking on elements inside a
Dialog.Overlay
(#816) - Ensure interactability with
Popover.Panel
contents when using thestatic
prop (#857) - Fix initial transition in
Transition
component (#882)
1.4.1 - 2021-08-30
- Only add
type=button
to real buttons (#709) - Fix
escape
bug not closing Dialog after clicking in Dialog (#754) - Use
console.warn
instead of throwing an error when there are no focusable elements (#775)
1.4.0 - 2021-07-29
- Add new
Tabs
component (#674, #698) - Make
Disclosure.Button
close the disclosure inside aDisclosure.Panel
(#682) - Add
aria-orientation
toListbox
, which swaps Up/Down with Left/Right keys (#683) - Expose
close
function from the render prop forDisclosure
,Disclosure.Panel
,Popover
andPopover.Panel
(#697)
1.3.0 - 2021-06-21
- Ensure that you can use
Transition.Child
when using implicit Transitions (#503) - Add new
entered
prop forTransition
andTransition.Child
components (#504)
- Add
aria-disabled
on disabledRadioGroup.Option
components (#543) - Improve
disabled
andtabindex
prop handling (#512) - Improve React peer dependency version range (#544)
- Improve types for the
open
prop in theDialog
component (#550) - Improve
aria-expanded
logic (#592) - Remove undocumented
:className
prop (#607) - Improve types for
Listbox
component (#576) - Remove explicit
:class
prop (#608) - Improve tree shaking (#602)
- Improve peer dependencies for
react-dom
, and for the future version18
(#622)
1.2.0 - 2021-05-10
- Introduce Open/Closed state, to simplify component communication (#466)
- Improve SSR for
Dialog
(#477) - Delay focus trap initialization (#477)
- Improve incorrect behaviour for nesting
Dialog
components (#560)
1.1.1 - 2021-04-28
- Fix form submission within Dialog (#460)
1.1.0 - 2021-04-26
- Improve search, make searching case insensitive (#385)
- Fix unreachable
RadioGroup
(#401) - Fix closing nested
Dialog
components when pressingEscape
(#430)
- Add
disabled
prop toRadioGroup
andRadioGroup.Option
(#401) - Add
defaultOpen
prop to theDisclosure
component (#447)
1.0.0 - 2021-04-14
- Fixed
outside click
not re-focusing theMenu.Button
(#220, #256) - Fixed
outside click
not re-focusing theListbox.Button
(#220, #256) - Force focus in
Menu.Items
andListbox.Options
from within the component itself (#261) - Stop propagating keyboard/mouse events (#261)
- Add
Disclosure
,Disclosure.Button
andDisclosure.Panel
components (#220) - Add
Dialog
,Dialog.Overlay
,Dialog.Tile
andDialog.Description
components (#220) - Add
Portal
andPortal.Group
component (#220) - Add
Switch.Description
component, which adds thearia-describedby
to the actual Switch (#220) - Add
FocusTrap
component (#220) - Add
Popover
,Popover.Button
,Popover.Overlay
,Popover.Panel
andPopover.Group
components (#220) - All components that accept a
className
, can now also receive a function with the renderProp argument (#257) - Add
RadioGroup
,RadioGroup.Option
,RadioGroup.Label
andRadioGroup.Description
components (#274)
0.3.2 - 2021-04-02
0.3.1 - 2021-02-11
0.3.0 - 2021-02-06
- Ensure that you can't use Enter to invoke the Switch
- Fix outside click refocus bug (#114)
- Prevent scrolling when refocusing items
- Ensure
Switch
hastype="button"
(#192) - Fix
useId()
hook returningundefined
on the client - Fix
disabled
not working when inside a disabled fieldset (#202) - Trigger "outside click" behaviour on mousedown (#212)
- Ensure the
active
MenuItem is scrolled into view - Ensure valid Menu accessibility tree (#228)
- Add Transition events (
beforeEnter
,afterEnter
,beforeLeave
andafterLeave
) (#57) - Add render features + render strategy (
static
andunmount={true | false}
) (#106) - Add displayName to all contexts (#175)
- Add
disabled
prop toListbox
itself, instead of theListbox.Button
(#229)
- Changes the API of the Transition component.
- We will now always render a
div
by default (unless you change this using theas={...}
prop). - The render function prop doesn't expose a
ref
anymore. - Adds
unmount
prop to theTransition
andTransition.Child
components.
- We will now always render a
0.2.0 - 2020-10-06
- Add
Listbox
component - Add
Switch
component
0.1.3 - 2020-09-29
- Fix outside click behaviour. If you had multiple menu's, when menu 1 is open, menu 2 is closed and you click on menu button 2 it will open both menu's. This is now fixed.
- Ensure when using keyboard navigation we prevent the default behaviour.
0.1.2 - 2020-09-25
- Add tests for
onClick
handling that wasn't working properly in @headlessui/vue to ensure behavior stays the same in this library
- Don't pass
disabled
prop through to children, only addaria-disabled
0.1.1 - 2020-09-24
- Everything!