88b068cff1
* move `nullable` handling to `onChange` of `Combobox.Input` itself We were specifically handling backspace/delete keys to verify if the `Combobox.Input` becomes empty then we can clear the value if we are in single value and in nullable mode. However, this doesn't capture other ways of clearing the `Combobox.Input`, for example when use `cmd+x` or `ctrl+y` in the input. Moving the logic, gives us some of these cases for free. * ensure pressing `escape` also clears the input in nullable, single value mode without an active value * adjust test to ensure we don't have a selected option instead of an active option We still will have an active option (because we default to the first option if nothing is active while the combobox is open). But since we cleared the value when using the `nullable` prop, then it means the `selected` option should be cleared. * ensure `input` event is fired when firing keydown events * ensure `defaultToFirstOption` is always set when going to an option We recently made a Vue improvement that delayed the going to an option, but this also included a bug where the `defaultToFirstOption` was not set at the right time anymore. * update changelog * fix `than` / `then` typo
34 KiB
34 KiB
Changelog
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.
Unreleased
Fixed
- Fix form elements for uncontrolled
<Listbox multiple>and<Combobox multiple>(#2626) - Use correct value when resetting
<Listbox multiple>and<Combobox multiple>(#2626) - Render
<MainTreeNode />inPopoverGroupcomponent only (#2634) - Disable smooth scrolling when opening/closing
Dialogcomponents on iOS (#2635) - Don't assume
<Tab />components are available when setting the next index (#2642) - Improve SSR of the
Disclosurecomponent (#2645) - Fix incorrectly focused
ComboboxInputcomponent on page load (#2654) - Improve resetting values when using the
nullableprop on theComboboxcomponent (#2660)
1.7.15 - 2023-07-27
Fixed
- Ensure the caret is in a consistent position when syncing the
Combobox.Inputvalue (#2568) - Improve "outside click" behaviour in combination with 3rd party libraries (#2572)
- Improve performance of
Comboboxcomponent (#2574) - Ensure IME works on Android devices (#2580)
- Calculate
aria-expandedpurely based on the open/closed state (#2610) - Submit form on
Entereven if no submit-like button was found (#2613)
1.7.14 - 2023-06-01
Fixed
- Fix memory leak in
Popovercomponent (#2430) - Ensure
FocusTrapis only active when the givenenabledvalue istrue(#2456) - Ensure the exposed
activeIndexis up to date for theComboboxcomponent (#2463) - Improve control over
MenuandListboxoptions while searching (#2471) - Consider clicks inside iframes to be "outside" (#2485)
- Ensure moving focus within a
Portalcomponent, does not close thePopovercomponent (#2492)
Changed
- Move
typescondition to the front (#2469)
1.7.13 - 2023-04-12
Fixed
- Fix focus styles showing up when using the mouse (#2347)
- Disable
ComboboxInputwhen itsComboboxis disabled (#2375) - Add
FocusTrapevent listeners once document has loaded (#2389) - Don't scroll-lock
<Dialog>when wrapping transition isn't showing (#2422) - Ensure DOM
refis properly handled in theRadioGroupcomponent (#2424) - Correctly handle IME composition in
<Combobox.Input>(#2426)
Added
- Add
formprop to form-like components such asRadioGroup,Switch,Listbox, andCombobox(#2356)
1.7.12 - 2023-03-03
Fixed
- Enable native label behavior for
<Switch>where possible (#2265) - Allow root containers from the
Dialogcomponent in theFocusTrapcomponent (#2322) - Cleanup internal TypeScript types (#2329)
- Fix restore focus to buttons in Safari, when
Dialogcomponent closes (#2326) - Ensure hooks in the
FocusTrapcomponent only apply when mounted (#2331)
1.7.11 - 2023-02-24
Fixed
- Ensure the main tree and parent
Dialogcomponents are marked asinert(#2290) - Fix nested
Popovercomponents not opening (#2293) - Fix
changeevent incorrectly getting called onblur(#2296) - Fix
Dialogcleanup when theDialogbecomes hidden (#2303)
1.7.10 - 2023-02-15
Fixed
- Don’t fire
afterLeaveevent more than once for a given transition (#2267) - Move
aria-multiselectableto[role=listbox]in theComboboxcomponent (#2271) - Re-focus
Combobox.Inputwhen aCombobox.Optionis selected (#2272) - Ensure we reset the
activeOptionIndexif the active option is unmounted (#2274) - Start cleanup phase of the
Dialogcomponent when going into theClosingstate (#2264)
1.7.9 - 2023-02-03
Fixed
- Don't break overflow when multiple dialogs are open at the same time (#2215)
1.7.8 - 2023-01-27
Changed
- Adjust SSR detection mechanism (#2102)
Fixed
- 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
Tabkey with non focusable elements inPopover.Panel(#2147) - Don’t overwrite classes during SSR when rendering fragments (#2173)
- Improve
Comboboxaccessibility (#2153) - Fix crash when reading
headlessuiFocusGuardofrelatedTargetin theFocusTrapcomponent (#2203) - Fix
FocusTrapinDialogwhen there is only 1 focusable element (#2172) - Improve
Tabswrapping around when controlling the component and overflowing theselectedIndex(#2213) - Fix
shadow-rootbug closingDialogcontainers (#2217)
Added
- Allow setting
tabIndexon theTab.Panel(#2214)
1.7.7 - 2022-12-16
Fixed
- Improve scroll restoration after
Dialogcloses (b20e48dd)
1.7.6 - 2022-12-15
Fixed
- Fix regression where
displayValuecrashes (#2087) - Fix
displayValuesyncing whenCombobox.Inputis 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
Fixed
- Reset form-like components when the parent
<form>resets (#2004) - Ensure Popover doesn't crash when
focusis going towindow(#2019) - Ensure
shift+homeandshift+endworks as expected in theComboboxInputcomponent (#2024) - Improve syncing of the
ComboboxInputvalue (#2042) - Fix crash when using
multiplemode withoutvalueprop (uncontrolled) forListboxandComboboxcomponents (#2058) - Allow passing in your own
idprop (#2060) - Add
nullas 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
Fixed
- Expose
closefunction forMenuandMenuItemcomponents (#1897) - Fix
useOutsideClick, add improvements for ShadowDOM (#1914) - Prevent default slot warning when using a component for
asprop (#1915) - Fire
<ComboboxInput>'s@changehandler when changing the value internally (#1916)
1.7.3 - 2022-09-30
Fixed
- Call
displayValuewith a v-model ofref(undefined)onComboboxInput(#1865) - Improve
Portaldetection forPopovercomponents (#1842) - Fix crash when
childrenareundefined(#1885) - Fix
useOutsideClickswallowing events inside ShadowDOM (#1876) - Fix
Tabincorrectly activating onfocusevent (#1887)
1.7.2 - 2022-09-15
Fixed
- Prevent option selection in
ComboboxInputwhile composing (#1850) - Ensure we handle the
staticprop inTabPanelcomponents correctly (#1856)
1.7.1 - 2022-09-12
Fixed
- Improve iOS scroll locking (#1830)
- Ensure
Taborder stays consistent, and the currently activeTabstays active (#1837)
1.7.0 - 2022-09-06
Added
- Add
byprop forListbox,ComboboxandRadioGroup(#1482, #1717, #1814, #1815) - Make form components uncontrollable (#1683)
- Add
@headlessui/tailwindcssplugin (#1487)
Fixed
- 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
Menucomponent when usingtabkey (#1673) - Resync input when display value changes (#1679, #1755)
- Ensure controlled
Tabsdon'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()on<PopoverPanel>(#1719) - Improve
Comboboxre-opening keyboard issue on mobile (#1732) - Only select the active option when using "singular" mode when pressing
<tab>in theComboboxcomponent (#1750) - Only restore focus to the
MenuButtonif necessary when activating aMenuOption(#1782) - Don't scroll when wrapping around in focus trap (#1789)
- Improve accessibility when announcing
ListboxOptionandComboboxOptioncomponents (#1812) - Expose the
valuefrom theComboboxandListboxcomponents slot (#1822) - Improve
scroll lockon iOS (#1824)
1.6.7 - 2022-07-12
Fixed
- Prevent cancelling transitions due to focus trap (#1664)
1.6.6 - 2022-07-07
Fixed
- Fix getting Vue dom elements (#1610)
- Ensure
CMD+Backspaceworks in nullable mode forComboboxcomponent (#1617) - Properly merge incoming props with own props (#1651)
- Ensure
PopoverPanelcan be used inside<transition>(#1653)
1.6.5 - 2022-06-20
Fixed
- Support
<slot>children when usingas="template"(#1548) - Improve outside click of
Dialogcomponent (#1546) - Detect outside clicks from within
<iframe>elements (#1552) - Only render the
Dialogon the client (#1566) - Improve Combobox input cursor position (#1574)
- Fix scrolling issue in
Tabcomponent when using arrow keys (#1584) - Fix missing
aria-expandedforComboboxInputcomponent (#1605)
1.6.4 - 2022-05-29
Fixed
- Ensure
Escapepropagates correctly inComboboxcomponent (#1511) - Remove leftover code in Combobox component (#1514)
1.6.3 - 2022-05-25
Fixed
- Allow to override the
typeon theComboboxInput(#1476) - Ensure the the
<PopoverPanel focus>closes correctly (#1477) - Only render the
FocusSentinelif required in theTabscomponent (#1493)
1.6.2 - 2022-05-19
Fixed
- Ensure
DialogPanelexposes its ref (#1404) - Ignore
Escapewhen event got prevented inDialogcomponent (#1424) - Improve
FocusTrapbehaviour (#1432) - Simplify
PopoverTab logic by using sentinel nodes instead of keydown event interception (#1440) - Ensure the
PopoverPanelis clickable without closing thePopover(#1443) - Improve "Scroll lock" scrollbar width for
Dialogcomponent (#1457) - Don't throw when SSR rendering internal portals in Vue (#1459)
1.6.1 - 2022-05-03
Fixed
- Manually passthrough
attrsforCombobox,ListboxandTabsGroupcomponent (#1372) - Fix enter transitions in Vue (#1395)
1.6.0 - 2022-04-25
Fixed
- Make sure that the input syncs when the combobox closes (#1137)
- Ensure that you can close the
Comboboxinitially (#1148) - Fix
Dialogusage inTabcomponent (#1149) - Ensure links are triggered inside
PopoverPanelcomponents (#1153) - Fix
hoverscroll issue inListbox,ComboboxandMenucomponents (#1161) - Guarantee DOM sort order when performing
Listbox,ComboboxandMenuactions (#1168) - Improve outside click support (#1175)
- Reset
ComboboxInputwhen the value gets reset (#1181) - Adjust active
item/optionindex onListbox,ComboboxandMenucomponents (#1184) - Fix re-focusing element after close (#1186)
- Fix
Dialogcycling (#553) - Only activate the
Tabon 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
ownerDocumentinstead ofdocument(#1158) - Fix, re-expose
elfrom each component (#1230) - Ensure focus trapping plays well with the
TabandDialogcomponents (#1231) - Improve syncing of
ComboboxInputvalue (#1248) - Fix tree-shaking support (#1247)
- Stop propagation on the
PopoverButton(#1263) - Fix incorrect closing while interacting with third party libraries in
Dialogcomponent (#1268) - Mimic browser select on focus when navigating via
Tab(#1272) - Resolve
initialFocusRefcorrectly (#1276) - Ensure that there is always an active option in the
Combobox(#1279, #1281) - Support classic form submissions in
RadioGroup,SwitchandComboboxcomponents (#1285) - Fix
nullableprop for Vue (2b109548b1a94a30858cf58c8f525554a1c12cbb) - Prefer incoming
openprop over OpenClosed state (#1360)
Added
- Add classic form submission compatibility via new hidden inputs (#1214)
- Add multiple value support to
ListboxandComboboxcomponents (#1243, #1355) - Add support for clearing the value of a
Combobox(#1295) - Add
DialogBackdropandDialogPanelcomponents (#1333)
1.5.0 - 2022-02-17
Fixed
- Ensure correct order when conditionally rendering
MenuItem,ListboxOptionandRadioGroupOption(#1045) - Improve typeahead search logic (#1051)
- Improve overal codebase, use modern tech like
esbuildand TypeScript 4! (#1055) - Improve build files (#1078)
- Ensure typeahead stays on same item if it still matches (#1098)
Added
1.4.3 - 2022-01-14
Fixes
- Fix missing key binding in examples (#1036, #1006)
- Fix slice => splice typo in
Tabscomponent (#1037, #986) - Ensure correct DOM node order when performing focus actions (#1038)
Added
1.4.2 - 2021-11-08
Fixes
- Stop the event from propagating in the
Popovercomponent (#798) - Allow clicking on elements inside a
DialogOverlay(#816) - Fix SSR crash because of
useWindowEvent(#817) - Improve tree shaking (#859)
- Add
type="button"toTabscomponent (#912)
1.4.1 - 2021-08-30
Fixes
- Only add
type=buttonto real buttons (#709) - Add Vue emit types (#679, #712)
- Fix
escapebug not closing Dialog after clicking in Dialog (#754) - Use
console.warninstead of throwing an error when there are no focusable elements (#775)
1.4.0 - 2021-07-29
Added
- Add new
Tabscomponent (#674, #698) - Make
DisclosureButtonclose the disclosure inside aDisclosurePanel(#682) - Add
aria-orientationtoListbox, which swaps Up/Down with Left/Right keys (#683) - Expose
closefunction from the scoped slot forDisclosure,DisclosurePanel,PopoverandPopoverPanel(#697)
1.3.0 - 2021-06-21
Added
- Ensure that you can use
TransitionChildwhen using implicit Transitions (#503) - Add new
enteredprop forTransitionandTransitionChildcomponents (#504)
Fixes
- Add
aria-disabledon disabledRadioGroup.Optioncomponents (#543) - Improve
disabledandtabindexprop handling (#512) - Improve reactivity when destructuring from props (#512)
- Improve
aria-expandedlogic (#592)
1.2.0 - 2021-05-10
Added
- Introduce Open/Closed state, to simplify component communication (#466)
1.1.1 - 2021-04-28
Fixes
Added
- Add
disabledprop toRadioGroupandRadioGroup.Option(#401) - Add
defaultOpenprop to theDisclosurecomponent (#447)
1.1.0 - 2021-04-26
Fixes
- Improve search, make searching case insensitive (#385)
- Fix unreachable
RadioGroup(#401) - Fix
RadioGroupOptionvalue type (#400) - Fix closing nested
Dialogcomponents when pressingEscape(#430)
Added
- Add
disabledprop toRadioGroupandRadioGroupOption(#401) - Add
defaultOpenprop to theDisclosurecomponent (#447)
1.0.0 - 2021-04-14
Fixes
Added
- Add
SwitchDescriptioncomponent, which adds thearia-describedbyto the actual Switch (#220) - Add
Disclosure,DisclosureButton,DisclosurePanelcomponents (#282) - Add
Dialog,DialogOverlay,DialogTitleandDialogDescriptioncomponents (#282) - Add
PortalandPortalGroupcomponents (#282) - Add
FocusTrapcomponent (#282) - Add
Popover,PopoverButton,PopoverOverlay,PopoverPanelandPopoverGroupcomponents (#282) - Add
RadioGroup,RadioGroupOption,RadioGroupLabelandRadioGroupDescriptioncomponents (#282) - Add
TransitionRootandTransitionChildcomponents (#326)
0.3.1 - 2021-04-02
Fixes
- Fix broken behaviour since Vue 3.0.5 (#279)
0.3.0 - 2021-02-06
Fixes
- Ensure that you can't use Enter to invoke the Switch
- Fix outside click refocus bug (#114)
- Prevent scrolling when refocusing items
- Ensure
Switchhastype="button"(#192) - Added
emitsproperty to Vue components (#199) - Fix
disablednot working when inside a disabled fieldset (#202) - Trigger "outside click" behaviour on mousedown (#212)
- Ensure the
activeMenuItem is scrolled into view - Ensure valid Menu accessibility tree (#228)
Added
- Add render features + render strategy (
staticandunmount={true | false}) (#106) - Add
disabledprop toListboxitself, instead of theListboxButton(#229)
0.2.0 - 2020-10-06
Added
- Add
Listboxcomponent - Add
Switchcomponent
0.1.3 - 2020-09-29
Fixes
- 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
Fixes
- Fix issue where button
MenuIteminstances didn't properly fire click events - Don't pass
disabledprop through to children, only addaria-disabled
0.1.1 - 2020-09-24
Added
- Everything!