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.
- Add
immediate
prop toCombobox
for immediately opening the Combobox when theinput
receives focus (#2686) - Add
virtual
prop toCombobox
component (#2779)
- Cancel outside click behavior on touch devices when scrolling (#3266)
- Fix restoring focus to correct element when closing
Dialog
component (#3365) - Cleanup
process
in Combobox component when using virtualization (#3495)
1.7.22 - 2024-05-08
- Don’t cancel
touchmove
oninput
elements inside a dialog (#3166) - Ensure clicking a
ComboboxOption
after filtering the options, correctly triggers a change (#3180)
1.7.21 - 2024-04-26
- Prevent closing the
Combobox
component when clicking inside the scrollbar area (#3104) - Don’t unmount portal targets used by other portals (#3144)
1.7.20 - 2024-04-15
- Expose
disabled
state onTab
component (#2918) - Prevent default behaviour when clicking outside of a
DialogPanel
(#2919) - Don’t override explicit
disabled
prop for components insideMenuItem
(#2929) - Add
hidden
attribute to internalHidden
component when theFeatures.Hidden
feature is used (#2955) - Allow setting custom
tabIndex
on theSwitch
component (#2966) - Forward
disabled
state to hidden inputs in form-like components (#3004) - Respect
selectedIndex
for controlledTab
components (#3037)
1.7.19 - 2024-02-07
- Fix Combobox
activeOption
render prop (#2973)
1.7.18 - 2024-02-02
- Allow users customize ID generation (#2959)
1.7.17 - 2024-01-08
- Don't call
Dialog
'sonClose
twice on mobile devices (#2690) - Fix Portal SSR hydration mismatches (#2700)
- Ensure hidden
TabPanel
components are hidden from the accessibility tree (#2708) - Add support for
role="alertdialog"
toDialog
component (#2709) - Ensure blurring the
ComboboxInput
component closes theCombobox
(#2712) - Allow
button
to be in nested components inPopoverButton
(#2715) - Don't overwrite user-defined template refs when rendering (#2720)
- Fix missing
data-headlessui-state
attribute whenas="template"
(#2787) - Fix VoiceOver bug for
Listbox
component in Chrome (#2824) - Fix outside click detection when component is mounted in the Shadow DOM (6846231)
- Fix CJS types (#2880)
- Fix error when transition classes contain new lines (#2871)
1.7.16 - 2023-08-17
- Fix form elements for uncontrolled
<Listbox multiple>
and<Combobox multiple>
(#2626) - Use correct value when resetting
<Listbox multiple>
and<Combobox multiple>
(#2626) - Render
MainTreeNode
inPopoverGroup
component only (#2634) - Disable smooth scrolling when opening/closing
Dialog
components on iOS (#2635) - Don't assume
Tab
components are available when setting the next index (#2642) - Improve SSR of the
Disclosure
component (#2645) - Fix incorrectly focused
ComboboxInput
component on page load (#2654) - Improve resetting values when using the
nullable
prop on theCombobox
component (#2660) - Prevent scrolling when focusing a tab (#2674)
1.7.15 - 2023-07-27
- Ensure the caret is in a consistent position when syncing the
Combobox.Input
value (#2568) - Improve "outside click" behaviour in combination with 3rd party libraries (#2572)
- Improve performance of
Combobox
component (#2574) - Ensure IME works on Android devices (#2580)
- Calculate
aria-expanded
purely based on the open/closed state (#2610) - Submit form on
Enter
even if no submit-like button was found (#2613)
1.7.14 - 2023-06-01
- Fix memory leak in
Popover
component (#2430) - Ensure
FocusTrap
is only active when the givenenabled
value istrue
(#2456) - Ensure the exposed
activeIndex
is up to date for theCombobox
component (#2463) - Improve control over
Menu
andListbox
options while searching (#2471) - Consider clicks inside iframes to be "outside" (#2485)
- Ensure moving focus within a
Portal
component, does not close thePopover
component (#2492)
- Move
types
condition to the front (#2469)
1.7.13 - 2023-04-12
- Fix focus styles showing up when using the mouse (#2347)
- Disable
ComboboxInput
when itsCombobox
is disabled (#2375) - Add
FocusTrap
event listeners once document has loaded (#2389) - Don't scroll-lock
Dialog
when wrapping transition isn't showing (#2422) - Ensure DOM
ref
is properly handled in theRadioGroup
component (#2424) - Correctly handle IME composition in
Combobox.Input
(#2426)
- Add
form
prop to form-like components such asRadioGroup
,Switch
,Listbox
, andCombobox
(#2356)
1.7.12 - 2023-03-03
- Enable native label behavior for
Switch
where possible (#2265) - Allow root containers from the
Dialog
component in theFocusTrap
component (#2322) - Cleanup internal TypeScript types (#2329)
- Fix restore focus to buttons in Safari, when
Dialog
component closes (#2326) - Ensure hooks in the
FocusTrap
component only apply when mounted (#2331)
1.7.11 - 2023-02-24
- Ensure the main tree and parent
Dialog
components are marked asinert
(#2290) - Fix nested
Popover
components not opening (#2293) - Fix
change
event incorrectly getting called onblur
(#2296) - Fix
Dialog
cleanup when theDialog
becomes hidden (#2303)
1.7.10 - 2023-02-15
- Don’t fire
afterLeave
event more than once for a given transition (#2267) - Move
aria-multiselectable
to[role=listbox]
in theCombobox
component (#2271) - Re-focus
Combobox.Input
when aCombobox.Option
is selected (#2272) - Ensure we reset the
activeOptionIndex
if the active option is unmounted (#2274) - Start cleanup phase of the
Dialog
component when going into theClosing
state (#2264)
1.7.9 - 2023-02-03
- Don't break overflow when multiple dialogs are open at the same time (#2215)
1.7.8 - 2023-01-27
- Adjust SSR detection mechanism (#2102)
- Ensure
disabled="false"
is not incorrectly passed to the underlying DOM Node (#2138) - Fix arrow key handling in
Tab
(after DOM order changes) (#2145) - Fix
Tab
key with non focusable elements inPopover.Panel
(#2147) - Don’t overwrite classes during SSR when rendering fragments (#2173)
- Improve
Combobox
accessibility (#2153) - Fix crash when reading
headlessuiFocusGuard
ofrelatedTarget
in theFocusTrap
component (#2203) - Fix
FocusTrap
inDialog
when there is only 1 focusable element (#2172) - Improve
Tabs
wrapping around when controlling the component and overflowing theselectedIndex
(#2213) - Fix
shadow-root
bug closingDialog
containers (#2217)
- Allow setting
tabIndex
on theTab.Panel
(#2214)
1.7.7 - 2022-12-16
- Improve scroll restoration after
Dialog
closes (b20e48dd)
1.7.6 - 2022-12-15
- Fix regression where
displayValue
crashes (#2087) - Fix
displayValue
syncing whenCombobox.Input
is unmounted and re-mounted in different trees (#2090) - Fix FocusTrap escape due to strange tabindex values (#2093)
- Improve scroll locking on iOS (#2100, 28234b0e)
1.7.5 - 2022-12-08
- Reset form-like components when the parent
form
resets (#2004) - Ensure Popover doesn't crash when
focus
is going towindow
(#2019) - Ensure
shift+home
andshift+end
works as expected in theComboboxInput
component (#2024) - Improve syncing of the
ComboboxInput
value (#2042) - Fix crash when using
multiple
mode withoutvalue
prop (uncontrolled) forListbox
andCombobox
components (#2058) - Allow passing in your own
id
prop (#2060) - Add
null
as a valid type for Listbox and Combobox in Vue (#2064, #2067) - Improve SSR for Tabs in Vue (#2068)
- Ignore pointer events in Listbox, Menu, and Combobox when cursor hasn't moved (#2069)
- Allow clicks inside dialog panel when target is inside shadow root (#2079)
1.7.4 - 2022-11-03
- Expose
close
function forMenu
andMenuItem
components (#1897) - Fix
useOutsideClick
, add improvements for ShadowDOM (#1914) - Prevent default slot warning when using a component for
as
prop (#1915) - Fire
ComboboxInput
's@change
handler when changing the value internally (#1916)
1.7.3 - 2022-09-30
- Call
displayValue
with a v-model ofref(undefined)
onComboboxInput
(#1865) - Improve
Portal
detection forPopover
components (#1842) - Fix crash when
children
areundefined
(#1885) - Fix
useOutsideClick
swallowing events inside ShadowDOM (#1876) - Fix
Tab
incorrectly activating onfocus
event (#1887)
1.7.2 - 2022-09-15
- Prevent option selection in
ComboboxInput
while composing (#1850) - Ensure we handle the
static
prop inTabPanel
components correctly (#1856)
1.7.1 - 2022-09-12
- Improve iOS scroll locking (#1830)
- Ensure
Tab
order stays consistent, and the currently activeTab
stays active (#1837)
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) - Improve outside click on Safari iOS (#1712)
- Improve event handler merging (#1715)
- Fix incorrect scrolling to the bottom when opening a
Dialog
(#1716) - Don't overwrite
element.focus()
onPopoverPanel
(#1719) - Improve
Combobox
re-opening keyboard issue on mobile (#1732) - Only select the active option when using "singular" mode when pressing
tab
in theCombobox
component (#1750) - Only restore focus to the
MenuButton
if necessary when activating aMenuOption
(#1782) - Don't scroll when wrapping around in focus trap (#1789)
- Improve accessibility when announcing
ListboxOption
andComboboxOption
components (#1812) - Expose the
value
from theCombobox
andListbox
components slot (#1822) - Improve
scroll lock
on iOS (#1824)
1.6.7 - 2022-07-12
- Prevent cancelling transitions due to focus trap (#1664)
1.6.6 - 2022-07-07
- Fix getting Vue dom elements (#1610)
- Ensure
CMD
+Backspace
works in nullable mode forCombobox
component (#1617) - Properly merge incoming props with own props (#1651)
- Ensure
PopoverPanel
can be used insidetransition
(#1653)
1.6.5 - 2022-06-20
- Support
slot
children when usingas="template"
(#1548) - Improve outside click of
Dialog
component (#1546) - Detect outside clicks from within
iframe
elements (#1552) - Only render the
Dialog
on the client (#1566) - Improve Combobox input cursor position (#1574)
- Fix scrolling issue in
Tab
component when using arrow keys (#1584) - Fix missing
aria-expanded
forComboboxInput
component (#1605)
1.6.4 - 2022-05-29
- Ensure
Escape
propagates correctly inCombobox
component (#1511) - Remove leftover code in Combobox component (#1514)
1.6.3 - 2022-05-25
- Allow to override the
type
on theComboboxInput
(#1476) - Ensure the the
<PopoverPanel focus>
closes correctly (#1477) - Only render the
FocusSentinel
if required in theTabs
component (#1493)
1.6.2 - 2022-05-19
- Ensure
DialogPanel
exposes its ref (#1404) - 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
PopoverPanel
is clickable without closing thePopover
(#1443) - Improve "Scroll lock" scrollbar width for
Dialog
component (#1457) - Don't throw when SSR rendering internal portals in Vue (#1459)
1.6.1 - 2022-05-03
- Manually passthrough
attrs
forCombobox
,Listbox
andTabsGroup
component (#1372) - Fix enter transitions in Vue (#1395)
1.6.0 - 2022-04-25
- Make sure that the input syncs when the combobox closes (#1137)
- Ensure that you can close the
Combobox
initially (#1148) - Fix
Dialog
usage inTab
component (#1149) - Ensure links are triggered inside
PopoverPanel
components (#1153) - Fix
hover
scroll issue inListbox
,Combobox
andMenu
components (#1161) - Guarantee DOM sort order when performing
Listbox
,Combobox
andMenu
actions (#1168) - Improve outside click support (#1175)
- Reset
ComboboxInput
when the value gets reset (#1181) - Adjust active
item
/option
index onListbox
,Combobox
andMenu
components (#1184) - Fix re-focusing element after close (#1186)
- Fix
Dialog
cycling (#553) - Only activate the
Tab
on mouseup (#1192) - Ignore "outside click" on removed elements (#1193)
- Remove
focus()
fromListbox.Option
(#1218) - Improve some internal code (#1221)
- Don't drop initial character when searching in Combobox (#1223)
- Use
ownerDocument
instead ofdocument
(#1158) - Fix, re-expose
el
from each component (#1230) - Ensure focus trapping plays well with the
Tab
andDialog
components (#1231) - Improve syncing of
ComboboxInput
value (#1248) - Fix tree-shaking support (#1247)
- Stop propagation on the
PopoverButton
(#1263) - Fix incorrect closing while interacting with third party libraries in
Dialog
component (#1268) - Mimic browser select on focus when navigating via
Tab
(#1272) - Resolve
initialFocusRef
correctly (#1276) - Ensure that there is always an active option in the
Combobox
(#1279, #1281) - Support classic form submissions in
RadioGroup
,Switch
andCombobox
components (#1285) - Fix
nullable
prop for Vue (2b109548b1a94a30858cf58c8f525554a1c12cbb) - Prefer incoming
open
prop over OpenClosed state (#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
DialogBackdrop
andDialogPanel
components (#1333)
1.5.0 - 2022-02-17
- Ensure correct order when conditionally rendering
MenuItem
,ListboxOption
andRadioGroupOption
(#1045) - 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)
1.4.3 - 2022-01-14
- Fix missing key binding in examples (#1036, #1006)
- Fix slice => splice typo in
Tabs
component (#1037, #986) - 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
DialogOverlay
(#816) - Fix SSR crash because of
useWindowEvent
(#817) - Improve tree shaking (#859)
- Add
type="button"
toTabs
component (#912)
1.4.1 - 2021-08-30
- Only add
type=button
to real buttons (#709) - Add Vue emit types (#679, #712)
- 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
DisclosureButton
close the disclosure inside aDisclosurePanel
(#682) - Add
aria-orientation
toListbox
, which swaps Up/Down with Left/Right keys (#683) - Expose
close
function from the scoped slot forDisclosure
,DisclosurePanel
,Popover
andPopoverPanel
(#697)
1.3.0 - 2021-06-21
- Ensure that you can use
TransitionChild
when using implicit Transitions (#503) - Add new
entered
prop forTransition
andTransitionChild
components (#504)
- Add
aria-disabled
on disabledRadioGroup.Option
components (#543) - Improve
disabled
andtabindex
prop handling (#512) - Improve reactivity when destructuring from props (#512)
- Improve
aria-expanded
logic (#592)
1.2.0 - 2021-05-10
- Introduce Open/Closed state, to simplify component communication (#466)
1.1.1 - 2021-04-28
- Add
disabled
prop toRadioGroup
andRadioGroup.Option
(#401) - Add
defaultOpen
prop to theDisclosure
component (#447)
1.1.0 - 2021-04-26
- Improve search, make searching case insensitive (#385)
- Fix unreachable
RadioGroup
(#401) - Fix
RadioGroupOption
value type (#400) - Fix closing nested
Dialog
components when pressingEscape
(#430)
- Add
disabled
prop toRadioGroup
andRadioGroupOption
(#401) - Add
defaultOpen
prop to theDisclosure
component (#447)
1.0.0 - 2021-04-14
- Add
SwitchDescription
component, which adds thearia-describedby
to the actual Switch (#220) - Add
Disclosure
,DisclosureButton
,DisclosurePanel
components (#282) - Add
Dialog
,DialogOverlay
,DialogTitle
andDialogDescription
components (#282) - Add
Portal
andPortalGroup
components (#282) - Add
FocusTrap
component (#282) - Add
Popover
,PopoverButton
,PopoverOverlay
,PopoverPanel
andPopoverGroup
components (#282) - Add
RadioGroup
,RadioGroupOption
,RadioGroupLabel
andRadioGroupDescription
components (#282) - Add
TransitionRoot
andTransitionChild
components (#326)
0.3.1 - 2021-04-02
- Fix broken behaviour since Vue 3.0.5 (#279)
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) - Added
emits
property to Vue components (#199) - 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 render features + render strategy (
static
andunmount={true | false}
) (#106) - Add
disabled
prop toListbox
itself, instead of theListboxButton
(#229)
0.2.0 - 2020-10-06
- Add
Listbox
component - Add
Switch
component
0.1.3 - 2020-09-29
- Fix an issue where you couldn't click on menu items that were links.
- 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
- Fix issue where button
MenuItem
instances didn't properly fire click events - Don't pass
disabled
prop through to children, only addaria-disabled
0.1.1 - 2020-09-24
- Everything!