67f3c4d824
* add `get-text-value` helper * use `getTextValue` in `Listbox` component * use `getTextValue` in `Menu` component * update changelog * ensure we handle multiple values for `aria-labelledby` * hoist regex * drop child nodes instead of replacing its innerText This makes it a bit slower but also more correct. We can use a cache on another level to ensure that we are not creating useless work. * add `useTextValue` to improve performance of `getTextValue` This will add a cache and only if the `innerText` changes, only then will we calculate the new text value. * use better `useTextValue` hook
32 KiB
32 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 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)
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!