Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.

Related tags

Vue.js headlessui
Overview

Headless UI

A set of completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.

Packages

Name Version Downloads
@headlessui/react npm version npm downloads
@headlessui/vue npm version npm downloads
Comments
  • [Bug]: Uncaught RangeError: Maximum call stack size exceeded. focusElement of Modal

    [Bug]: Uncaught RangeError: Maximum call stack size exceeded. focusElement of Modal

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    1.4.1

    What browser are you using?

    chrome

    Reproduction repository

    Not now.

    Describe your issue

    while we create Modal multiple (2+) it will throw me

    focus-management.esm.js?d1e3:99 Uncaught RangeError: Maximum call stack size exceeded.
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
        at handler (use-window-event.esm.js?b5e3:8)
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
        at handler (use-window-event.esm.js?b5e3:8)
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
        at handler (use-window-event.esm.js?b5e3:8)
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
        at handler (use-window-event.esm.js?b5e3:8)
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
        at handler (use-window-event.esm.js?b5e3:8)
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
        at handler (use-window-event.esm.js?b5e3:8)
        at focusElement (focus-management.esm.js?d1e3:99)
        at eval (use-focus-trap.esm.js?25af:110)
    

    Screenshot here

    BTW, can Modal need to provider flag props to disabled focusElement feature, in most case we don't need this, i think.

    opened by tianyingchun 33
  • Multi-Listbox

    Multi-Listbox

    Hey there,

    Just a first attempt/POC for a multi-select Listbox (see #181).

    React-only at this stage.

    https://user-images.githubusercontent.com/690667/123712986-af5edb00-d873-11eb-8085-10dbf11b9fc5.mov

    It involves a few changes, mostly:

    • Tracking the value in theListbox state, to be able to detect selected options while the Listbox is open
    • Checking here and there if value is an array
    • Focus handling

    All in all, it seems to work ok, the only thing I can't get around is that when you use clickable items within Listbox.button (ex: badges with a remove action), the button gain focus on click, and it kind of messes things up.

    I've added a basic test case - just a start.

    Let me know if you'd like me to explore / improve this further, or if you prefer to handle this yourself :)

    opened by pvanliefland 33
  • HeadlessUI is not working with Nuxt 3

    HeadlessUI is not working with Nuxt 3

    What package within Headless UI are you using?

    @headlessui/vue

    What version of that package are you using?

    "devDependencies": {
        "autoprefixer": "^10.4.0",
        "nuxt3": "latest",
        "postcss": "^8.4.4",
        "tailwindcss": "^2.2.19"
      },
      "dependencies": {
        "@headlessui/vue": "^1.4.2",
        "@heroicons/vue": "^1.0.5",
        "@tailwindcss/forms": "^0.3.4"
      }
    

    Describe your issue

    It works fine with development but when I build nuxt (nuxi build) and start (yarn start) it gives error. I've tried to import headless ui component from @headlessui/vue/dist/index.js instead of @headlessui/vue but its still same.

    TypeError: Cannot read property 'buttonRef' of undefined
        at setup (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@headlessui\vue\dist\headlessui.cjs.development.js:2622:15)
        at callWithErrorHandling (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:7158:22)
        at setupStatefulComponent (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:6874:29)
        at setupComponent (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:6855:11)
        at renderComponentVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9757:17)
        at renderVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9863:22)
        at renderVNodeChildren (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9878:9)
        at renderElementVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9929:17)
        at renderVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9860:17)
        at renderVNodeChildren (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9878:9)
    [Vue warn]: inject() can only be used inside setup() or functional components.
    TypeError: Cannot read property 'menuState' of undefined
        at Proxy.render$1 (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@headlessui\vue\dist\headlessui.cjs.development.js:2522:17)
        at renderComponentRoot (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:2015:44)
        at renderComponentSubTree (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9828:51)
        at renderComponentVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9773:16)
        at renderVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9863:22)
        at renderVNodeChildren (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9878:9)
        at renderElementVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9929:17)
        at renderVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9860:17)
        at renderVNodeChildren (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9878:9)
        at renderElementVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9929:17)
    [Vue warn]: inject() can only be used inside setup() or functional components.
    [Vue warn]: Unhandled error during execution of watcher callback
    TypeError: Cannot read property 'itemsRef' of undefined
        at ReactiveEffect.fn (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@headlessui\vue\dist\headlessui.cjs.development.js:2685:24)
        at ReactiveEffect.run (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\reactivity\dist\reactivity.cjs.js:164:29)
        at ComputedRefImpl.get value [as value] (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\reactivity\dist\reactivity.cjs.js:1075:39)
        at D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@headlessui\vue\dist\headlessui.cjs.development.js:2336:26
        at callWithErrorHandling (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\runtime-core\dist\runtime-core.cjs.js:6615:22)
        at callWithAsyncErrorHandling (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\runtime-core\dist\runtime-core.cjs.js:6624:21)
        at ReactiveEffect.getter [as fn] (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\runtime-core\dist\runtime-core.cjs.js:6970:24)
        at ReactiveEffect.run (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\reactivity\dist\reactivity.cjs.js:164:29)
        at doWatch (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\runtime-core\dist\runtime-core.cjs.js:7078:16)
        at Object.watchEffect (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@vue\runtime-core\dist\runtime-core.cjs.js:6890:12)
    [Vue warn]: inject() can only be used inside setup() or functional components.
    TypeError: Cannot read property 'menuState' of undefined
        at Proxy.render$1 (D:\projects\headless-test\nuxt3-app\.output\server\node_modules\@headlessui\vue\dist\headlessui.cjs.development.js:2656:17)
        at renderComponentRoot (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:2015:44)
        at renderComponentSubTree (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9828:51)
        at renderComponentVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9773:16)
        at renderVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9863:22)
        at renderComponentSubTree (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9828:13)
        at renderComponentVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9773:16)
        at renderVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9863:22)
        at renderComponentSubTree (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9780:9)
        at renderComponentVNode (file:///D:/projects/headless-test/nuxt3-app/.output/server/chunks/index.mjs:9773:16)
    
    
    opened by bayramorhan 31
  • [Bug]: Dialog: There are no focusable elements inside the <FocusTrap />

    [Bug]: Dialog: There are no focusable elements inside the

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    1.0.0

    What browser are you using?

    Chrome

    Reproduction repository

    https://codesandbox.io/s/gallant-butterfly-wnxjb

    Description

    When there is no focusable element inside modal, it fails with error There are no focusable elements inside the <FocusTrap />. I don't know if it's a feature or a bug, but there isn't said in the documentation that Dialog must include at least one focusable element and I totally see a use-case when there are modals without any focusable element. I think it at least should fail with warning instead of fatal error.

    Anyways I would like to thank you for the great job you all are doing with the tailwind ecosystem, we really appreciate your work!

    opened by Krystofee 29
  • [Bug]: Interacting with third-party components that use portals inside a Dialog closes the Dialog

    [Bug]: Interacting with third-party components that use portals inside a Dialog closes the Dialog

    What package within Headless UI are you using?

    @headlessui/vue

    What version of that package are you using?

    1.0.0

    What browser are you using?

    Firefox

    Reproduction repository

    https://codesandbox.io/s/pensive-fast-yxokp?file=/src/App.vue

    Describe your issue

    When any component inside a Dialog renders itself elsewhere in the DOM using a Portal/Teleport, clicking in it closes the entire Dialog. The example above uses vue-flatpickr-component to create a date picker inside a modal, but because it renders the actual flatpickr instance somewhere else in the DOM, clicking any date closes the entire modal.

    The docs on this say:

    When a Dialog is rendered, clicking the DialogOverlay will close the Dialog.

    But that isn't exactly the case—it's not clicking the DialogOverlay specifically that closes the Dialog, but clicking anything that is not a child of the Dialog in the DOM.

    I believe the relevant part of the code is here: https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-vue/src/components/dialog/dialog.ts#L174-L184

    What do you think about adding a way to disable that global mousedown handler, or adding an option to actually only close the Dialog based on clicks directly on the DialogOverlay component?

    opened by bakerkretzmar 28
  • Transition not working in NextJs

    Transition not working in NextJs

    It appears like Transition classes are not there initially on any div(<Transition>) Btw I'm using ( tailwindcss(^1.8.4) , styled-components & twin-macro)

    Sample code I'm trying to test on my NextJs WebApp image

    bug 
    opened by puneetverma05 28
  • Regression: No transitions on open dialog [v1.6.5]

    Regression: No transitions on open dialog [v1.6.5]

    What package within Headless UI are you using?

    @headlessui/vue

    What version of that package are you using?

    1.6.5

    What browser are you using?

    Chrome

    Reproduction URL

    https://headlessui.dev/vue/dialog

    Describe your issue

    No transitions take place when dialog initially appears or after closing/opening it again. Transition on close seems to work though. It used to work in v1.6.4.

    Transition 
    opened by biesbjerg 27
  • [Bug]: Performance issues with Select Custom Dropdown on big lists

    [Bug]: Performance issues with Select Custom Dropdown on big lists

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    v1.1.1

    What browser are you using?

    Firefox

    Reproduction repository

    https://github.com/khuang7/headlessui-listbox-issue (yarn install then yarn start)

    Describe your issue

    I am trying to populate a pretty big list (500 elements) into the Simple Custom component found in TailwindUI for my project. The hover behavior when trying to select an option becomes quite slow when you try to move the mouse around on all the options. Also generating the list can sometimes be slow as well.

    My workaround this problem is to replace Listbox.Options and Listbox.Option to ul and li html elements so that I can just call 'hover:' on the li elements which improves performance significantly. But I would prefer to keep using the HeadlessUI instead of HTML because I would lose a lot of the ARIA accessibility features.

    I was wondering if there is a way to deal with the performance issues in the HeadlessUI. I could only pinpoint the issue being related to ListboxOptions and ListboxOption.

    opened by khuang7 27
  • Feature: close popover manually

    Feature: close popover manually

    What package within Headless UI are you using?

    @headlessui/vue

    What version of that package are you using?

    v1.0.0

    What browser are you using?

    Chrome

    Reproduction repository

    Describe your issue

    At the moment it is not possible to manually close the popover. Let's say I want to build an editable table. The editable content should be shown in the popover. When I hit the save button it should also close the popover. This is not possible, because the slots does not expose the function togglePopover.

    Needs more info 
    opened by psychonetic 26
  • Dialog throws error if there are no focusable elements

    Dialog throws error if there are no focusable elements

    I get the following error if I create a Dialog with no interactive components (just text): Error: There are no focusable elements inside the <FocusTrap />

    Needs more info 
    opened by pradyuman 26
  • Control whether Menu closes on Menu.Item click

    Control whether Menu closes on Menu.Item click

    Hi there! I have a use case for the Menu component where I don't necessarily want the Menu to close when I click on a Menu.Item. Or, in other words, I would like to be able to control when the menu closes in some way.

    Needs more info 
    opened by employee451 24
  • Vue: MenuItem adds `disabled=

    Vue: MenuItem adds `disabled="false"` by default, triggering `disabled` CSS styles

    Details

    Package: @headlessui/vue v1.7.7 Browser: Chrome Reproduction URL: https://github.com/Kagigz/repro-tailwind-ui

    Issue

    I'm using sample code from Tailwind UI to add a Menu Button with Menu Items appearing in a dropdown when clicking it (cf image)

    image

    This is the sample code I'm using:

    <Menu as="div" class="relative ml-5 flex-shrink-0">
        <div>
          <MenuButton class="flex rounded-full bg-white focus:outline-none focus:ring-2 focus:ring-redorange-500 focus:ring-offset-2">
            <span class="sr-only">Open user menu</span>
            <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="">
          </MenuButton>
        </div>
        <transition enter-active-class="transition ease-out duration-100" enter-from-class="transform opacity-0 scale-95" enter-to-class="transform opacity-100 scale-100" leave-active-class="transition ease-in duration-75" leave-from-class="transform opacity-100 scale-100" leave-to-class="transform opacity-0 scale-95">
          <MenuItems class="absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
            <MenuItem v-for="item in userNavigation" :key="item.name" v-slot="{ active }">
              <a :href="item.href" class="block py-2 px-4 text-sm text-gray-700" :class="[active ? 'bg-gray-100' : '']">{{ item.name }}</a>
            </MenuItem>
          </MenuItems>
        </transition>
    </Menu>
    

    I don't understand why, but all the items appear as disabled.

    Reproduction steps

    1. Clone the reproduction repo
    2. Install dependencies with pnpm i
    3. Run the app: pnpm dev
    4. The code related to the header specifically is in src/components/layout-ui/HeaderMenu

    Note: I'm using Tailwind via UnoCSS, the config is in unocss.config.ts

    opened by Kagigz 2
  • Incorrect tab selectedIndex after reordering existing tabs

    Incorrect tab selectedIndex after reordering existing tabs

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    v1.7.7

    What browser are you using?

    Chrome

    Reproduction URL

    https://codesandbox.io/s/headless-ui-tabs-order-issue-g9p9i2?file=/src/App.js

    1. See all tabs looks great and have correct indexes (tab0 - 0, tab1 - 1, tab2 - 2)
    2. Reorder tabs, for example, reverse tabs array
    3. Look at tabs indexes, they are still the same as the first time (tab2 - 2, tab1 - 1, tab0 - 0) but should be another (tab2 - 0, tab1 - 1, tab2 - 2)

    Describe your issue

    When dynamically reorder tabs in tab list internal lib logic uses initial indexes for tabs. Looks like it is not correct.

    opened by livwvil 0
  • VoiceOver doesn't read the Combobox.Option (single value selection)

    VoiceOver doesn't read the Combobox.Option (single value selection)

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    v1.7.1

    What browser are you using?

    Safari and VoiceOver (macOS)

    Reproduction URL

    Demo page https://headlessui.com/react/combobox or run the playground and go to http://localhost:3000/combobox/combobox-with-pure-tailwind

    Describe your issue

    Hello. Thank you for making headlessui components as accessible as possible, much appreciated.

    I read some related issues / PRs and it seems to me there's a bit of misunderstanding about the usage of aria-selected on the combobox listbox. See for example https://github.com/tailwindlabs/headlessui/pull/1812, https://github.com/tailwindlabs/headlessui/issues/1599, and https://github.com/tailwindlabs/headlessui/pull/1243.

    Safari and VoiceOver (macOS) don't read the Combobox.Option because the aria-selected usage in a combobox listbox is supposed to be a bit different from the one in a standard listbox. It's a subtle difference but in all the comboboxes I've helped to build in the past it always turned out that other screen readers (NVDA, JAWS) are happy with aria-activedescendant and do not care much about aria-selected. Instead, VoiceOver refuses to read the options if aria-selected is omitted or used incorrectly.

    In the ARIA authoring practices, the example that is closest to the headlessui Combobox (single selection) is the Editable Combobox with List Autocomplete.

    Quoting from the Listbox Popup Role, Property, State section of the W3C combobox example:

    • [aria-selected="true"] Specified on an option in the listbox when it is visually highlighted as selected.
    • [aria-selected="true"] Occurs only when an option in the list is referenced by aria-activedescendant.

    That is: in this pattern, aria-selected needs to be only set on the currently 'highlighted' option. It doesn't have anything to do with the 'selection' state, which is a concept that is extraneous to the W3C combobox pattern.

    This is also mentioned in the main page of the Combobox pattern: https://www.w3.org/WAI/ARIA/apg/patterns/combobox/#wai-aria-roles-states-and-properties-6

    For a combobox that controls a listbox, grid, or tree popup, when a suggested value is visually indicated as the currently selected value, the option, gridcell, row, or treeitem containing that value has aria-selected set to true.

    This is different from the (stand alone) Listbox pattern, where aria-selected is indeed used for the selection state.

    In short: in the Combobox Listbox, aria-selected should be based on the active prop rather than the selected prop. Of course, the multiselectable pattern needs to be handled differently as well as the stand-alone Listbox.

    Note: in https://github.com/tailwindlabs/headlessui/issues/1599#issuecomment-1235421018 it is mentioned that this woudl make VoiceOver announce every active option as selected. While slightly annoying, this is up to the screen reader implementation and it's in a way the expected behavior. Other screen readers opted to not announce selected, for example NVDA doesn't, but again this is a vendor's choice. Regardless, aria-selected=true needs to be set only on the highlighted option referenced by aria-activedescendant.

    To reproduce the bug:

    • Go to the Combobox demo page https://headlessui.com/react/combobox or run the playground and go to http://localhost:3000/combobox/combobox-with-pure-tailwind
    • Use Safari and VoiceOver (macOS).
    • Note: to make sure VoiceOver runs with default preferences:
      • Open VoiceOver Utility.
      • In the macOS menu bar, select File > Reset All VoiceOver Preferences... then press Reset in the confirmation dialog.
    • Focus the combobox input field.
    • Press the Down Arrow key to open the listbox.
    • Press the Down Arrow key to navigate through the options.
    • Observe that VoiceOver doesn't read out the options.
    • Clear the current value and type 'co'.
    • Press the Down Arrow key to navigate through the options.
    • Observe that VoiceOver doesn't read out the options.
    • Clear the current value and enter another string, delete some characters, add new ones, etc..
    • Press the Down Arrow key to navigate through the options.
    • Observe that VoiceOver doesn't read out the options.

    W3C example:

    • Go to the W3C example at https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-autocomplete-list.html
    • Focus the combobox input field.
    • Type 'ne'.
      • Note: the W3C example is a bit buggy, you may need to delete 'ne' and type it again while the listbox is open.
    • Press the Down Arrow key to navigate through the options.
    • Observe that VoiceOver does read out the options.
    opened by afercia 6
  • TypeError of `Dialog` and `Dialog.Title` from the official example

    TypeError of `Dialog` and `Dialog.Title` from the official example

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    v1.7.7

    What browser are you using?

    Chrome v108

    Reproduction URL

    https://headlessui.com/react/dialog 's main example

    My screenshots below used totally the same copy-pasted code without any modification

    Describe your issue

    TypeScript version: ^4.9.4, Vite: ^4.0.2, All packages' versions are the latest

    className throwing TypeError if as has been set (it works if as is not defined) image image

    tsc --noEmit result image

    opened by xsjcTony 1
  • Error with Popovers – Failed to execute 'contains' on 'Node': parameter 1 is not of type 'Node'.

    Error with Popovers – Failed to execute 'contains' on 'Node': parameter 1 is not of type 'Node'.

    Hey there, I'm using latest tailwindcss & headlessui. I've just implemented the first responsive header example of TailwindUI (https://tailwindui.com/components/marketing/elements/headers). It also works just fine, but whenever I open the responsive mobile menu popover and then enlarge the screen (so that it gets hidden), it throws the following error:

    TypeError: Failed to execute 'contains' on 'Node': parameter 1 is not of type 'Node'.
    
    Screenshot 2022-12-21 at 08 09 04
    opened by wottpal 0
  • headlessui-portal-root doesn't delete on modal close when using a Transition that doesn't fade

    headlessui-portal-root doesn't delete on modal close when using a Transition that doesn't fade

    A minimal codesandbox that reproduces the bug described in https://github.com/tailwindlabs/headlessui/issues/1391 and https://github.com/tailwindlabs/headlessui/issues/1417, as requested by @adamwathan and @RobinMalfait.

    What package within Headless UI are you using?

    @headlessui/react

    What version of that package are you using?

    v1.7.7

    What browser are you using?

    Chrome

    Reproduction URL

    https://codesandbox.io/s/headlessui-dialog-bug-704xe7?file=/src/App.js

    I copied and pasted the first Dialog example and changed the Transition of the backdrop.

    Describe your issue

    It appears that when using a backdrop with a Transition that doesn't fade from opacity-100 to opacity-0, the dialog still is somewhat present in the DOM. Since the backdrop is still in the DOM, the whole app is unusable.

    In the codesandbox, after the dialog is closed, we can no longer click on the button that open's it since the backdrop is still there.

    Hope it helps!

    opened by grenierdev 1
Releases(@headlessui/[email protected])
  • @headlessui/[email protected](Dec 16, 2022)

  • @headlessui/[email protected](Dec 16, 2022)

  • @headlessui/[email protected](Dec 15, 2022)

  • @headlessui/[email protected](Dec 15, 2022)

  • @headlessui/[email protected](Dec 8, 2022)

    Fixed

    • Reset form-like components when the parent <form> resets (#2004)
    • Ensure Popover doesn't crash when focus is going to window (#2019)
    • Ensure shift+home and shift+end works as expected in the ComboboxInput component (#2024)
    • Improve syncing of the ComboboxInput value (#2042)
    • Fix crash when using multiple mode without value prop (uncontrolled) for Listbox and Combobox 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)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Dec 8, 2022)

    Fixed

    • 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 to window (#2019)
    • Ensure shift+home and shift+end works as expected in the Combobox.Input component (#2024)
    • Improve syncing of the Combobox.Input value (#2042)
    • Fix crash when using multiple mode without value prop (uncontrolled) for Listbox and Combobox components (#2058)
    • Apply enter and enterFrom classes in SSR for Transition component (#2059)
    • Allow passing in your own id prop (#2060)
    • Fix Dialog unmounting problem due to incorrect transitioncancel event in the Transition component on Android (#2071)
    • 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)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Dec 6, 2022)

  • @headlessui/[email protected](Nov 3, 2022)

    Fixed

    • Expose close function for Menu and MenuItem 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)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Nov 3, 2022)

    Fixed

    • Fix <Popover.Button as={Fragment} /> crash (#1889)
    • Expose close function for Menu and Menu.Item components (#1897)
    • Fix useOutsideClick, add improvements for ShadowDOM (#1914)
    • Fire <Combobox.Input>'s onChange handler when changing the value internally (#1916)
    • Add client-only to mark everything as client components (#1981)

    Added

    • Warn when changing components between controlled and uncontrolled (#1878)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Sep 30, 2022)

    Fixed

    • Call displayValue with a v-model of ref(undefined) on ComboboxInput (#1865)
    • Improve Portal detection for Popover components (#1842)
    • Fix crash when children are undefined (#1885)
    • Fix useOutsideClick swallowing events inside ShadowDOM (#1876)
    • Fix Tab incorrectly activating on focus event (#1887)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Sep 30, 2022)

  • @headlessui/[email protected](Sep 15, 2022)

  • @headlessui/[email protected](Sep 15, 2022)

  • @headlessui/[email protected](Sep 12, 2022)

  • @headlessui/[email protected](Sep 12, 2022)

    Fixed

    • Improve iOS scroll locking (#1830)
    • Add <fieldset disabled> check to radio group options in React (#1835)
    • Ensure Tab order stays consistent, and the currently active Tab stays active (#1837)
    • Ensure Combobox.Label is properly linked when rendered after Combobox.Button and Combobox.Input components (#1838)
    • Remove forceRerender from Tab component (#1846)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Sep 6, 2022)

    Added

    • Add by prop for Listbox, Combobox and RadioGroup (#1482, #1717, #1814, #1815)
    • Make form components uncontrollable (#1683)
    • Add @headlessui/tailwindcss plugin (#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 Menu component when using tab 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() on <PopoverPanel> (#1719)
    • Improve Combobox re-opening keyboard issue on mobile (#1732)
    • Only select the active option when using "singular" mode when pressing <tab> in the Combobox component (#1750)
    • Only restore focus to the MenuButton if necessary when activating a MenuOption (#1782)
    • Don't scroll when wrapping around in focus trap (#1789)
    • Improve accessibility when announcing ListboxOption and ComboboxOption components (#1812)
    • Expose the value from the Combobox and Listbox components slot (#1822)
    • Improve scroll lock on iOS (#1824)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Sep 6, 2022)

  • @headlessui/[email protected](Sep 6, 2022)

    Added

    • Add by prop for Listbox, Combobox and RadioGroup (#1482, #1717, #1814, #1815)
    • Make form components uncontrollable (#1683)
    • Add @headlessui/tailwindcss plugin (#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 Menu component when using tab 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 to onClick 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 the Combobox component (#1750)
    • Improve the types of the Combobox component (#1761)
    • Only restore focus to the Menu.Button if necessary when activating a Menu.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 and Combobox.Option components (#1812)
    • Fix ref stealing from children (#1820)
    • Expose the value from the Combobox and Listbox components render prop (#1822)
    • Improve scroll lock on iOS (#1824)
    • Fix maximum call stack size exceeded error on Tab component when using as={Fragment} (#1826)
    • Fix "blank" screen on initial load of Transition component (#1823)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Jul 12, 2022)

  • @headlessui/[email protected](Jul 7, 2022)

  • @headlessui/[email protected](Jul 7, 2022)

  • @headlessui/[email protected](Jun 20, 2022)

    Fixed

    • Support <slot> children when using as="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 for ComboboxInput component (#1605)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](Jun 20, 2022)

    Fixed

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](May 29, 2022)

  • @headlessui/[email protected](May 29, 2022)

  • @headlessui/[email protected](May 25, 2022)

  • @headlessui/[email protected](May 25, 2022)

    Fixed

    • Allow to override the type on the Combobox.Input (#1476)
    • Ensure the the <Popover.Panel focus> closes correctly (#1477)
    • Only render the FocusSentinel if required in the Tabs component (#1493)
    • Ensure the Transition stops once DOM Nodes are hidden (#1500)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](May 24, 2022)

  • @headlessui/[email protected](May 19, 2022)

    Fixed

    • Ensure DialogPanel exposes its ref (#1404)
    • Ignore Escape when event got prevented in Dialog 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 the Popover (#1443)
    • Improve "Scroll lock" scrollbar width for Dialog component (#1457)
    • Don’t throw when SSR rendering internal portals in Vue (#1459)
    Source code(tar.gz)
    Source code(zip)
  • @headlessui/[email protected](May 19, 2022)

    Fixed

    • Fix closing of Popover.Panel in React 18 (#1409)
    • Ignore Escape when event got prevented in Dialog 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 the Popover (#1443)
    • Improve "Scroll lock" scrollbar width for Dialog component (#1457)
    • Make the ref optional in the Popover component (#1465)
    • Ensure the ref is forwarded on the Transition.Child component (#1473)
    Source code(tar.gz)
    Source code(zip)
Owner
Tailwind Labs
Creators of Tailwind CSS, Tailwind UI, and Refactoring UI.
Tailwind Labs
This repo contains a fully configured nuxt 3 instance supporting TypeScript and several considered as useful libraries, fully configured and ready to use in real world projects!

Nuxt 3 Starter This repo contains a fully configured nuxt 3 instance supporting TypeScript and several considered as useful libraries, fully configure

Ali Soueidan 26 Dec 27, 2022
Clarity is a scalable, accessible, customizable, open-source design system built with web components.

Clarity is an open source design system that brings together UX guidelines, design resources, and coding implementations with Web Components

VMware Clarity 90 Dec 30, 2022
Integrate Tauri in a Vite project to build cross-platform apps.

vite-plugin-tauri Integrate Tauri in a Vite project to build cross-platform apps Install Make sure to setup your environment for Tauri development. Th

Amr Bashir 95 Dec 15, 2022
Integrate Vite and Electron

vite-plugin-electron Integrate Vite and Electron Example ?? vite-plugin-electron-quick-start Usage vite.config.ts import electron from 'vite-plugin-el

null 217 Jan 2, 2023
Mobile UI Components, based on Vue.js and ionic CSS

Mobile UI Components, based on Vue.js and ionic CSS

王大虎 3.4k Dec 23, 2022
The first truly composable CSS animation library. Built for Vue, React, SCSS, and CSS, AnimXYZ will bring your website to life.

AnimXYZ animxyz.com AnimXYZ helps you create, customize, and compose animations for your website. Powered by CSS variables to allow a nearly limitless

Ingram Projects 2.1k Jan 2, 2023
📓 The UI component explorer. Develop, document, & test React, Vue, Angular, Web Components, Ember, Svelte & more!

Build bulletproof UI components faster Storybook is a development environment for UI components. It allows you to browse a component library, view the

Storybook 75.9k Jan 9, 2023
Mobile UI Components based on Vue & WeUI

Be Cool with Vue@^2.3.0 and WeUI. Live Demo >> Sponsors 我们的产品 Requirements 暂未适配 [email protected],请注意。 vue@^2.3.0(for .sync modifier) webpack@^2.0 node@^7.6

Airyland 17.6k Dec 28, 2022
Lightweight Mobile UI Components built on Vue

Vant Mobile UI Components built on Vue ?? 文档网站(国内) ?? 文档网站(GitHub) ???? 中文版介绍 Features 65+ Reusable components 1kb Component average size (min+gzip) 9

有赞 20.7k Dec 31, 2022
🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜

Ant Design Vue An enterprise-class UI components based on Ant Design and Vue. English | 简体中文 Features An enterprise-class UI design system for desktop

vueComponent 17.6k Jan 9, 2023
Lightweight UI components for Vue.js based on Bulma

Buefy is a lightweight library of responsive UI components for Vue.js based on Bulma framework and design. Features Keep your current Bulma theme / va

Buefy 9.4k Jan 8, 2023
Mobile app development framework and SDK using HTML5 and JavaScript. Create beautiful and performant cross-platform mobile apps. Based on Web Components, and provides bindings for Angular 1, 2, React and Vue.js.

Onsen UI - Cross-Platform Hybrid App and PWA Framework Onsen UI is an open source framework that makes it easy to create native-feeling Progressive We

null 8.7k Jan 4, 2023
New Framework Components for Vue.js 2

Supporting through Patreon Vuesax is an open source MIT project if you want to contribute to keep improving, If you are interested in supporting this

Lusaxweb 5.5k Dec 30, 2022
Manage HTML metadata in Vue.js components with SSR support

✌️ ?? Check the next branch for Vue3 support Manage HTML metadata in Vue.js components with SSR support <template> ... </template> <script> expor

Nuxt 4k Jan 1, 2023
Created from react styleguidist for Vue Components with a living style guide

Isolated Vue component development environment with a living style guide Start documenting now on codesandbox.io Sponsors A big thank you to our spons

Vue Styleguidist 2.3k Dec 28, 2022
Matteo Bruni 4.7k Jan 4, 2023
Automatically detect and import components or modules

vite-plugin-autoimport Automatically detect and import components or modules. Motivation It's very common to have many components in one file as the p

Yuan Chuan 146 Dec 23, 2022
Carpatin is a React JS Admin Dashboard Template that focuses on the management flows of a back-office application. We leverage the Material-UI power of stylizing the components in a way that feels more professional.

Carpatin Dashboard Free Carpatin is a React Js Admin Dashboard Template that focuses on the management flows of a back-office application. We leverage

Devias 64 Dec 12, 2022
🏝 Opinionated Web Components Starter template to help kick-start development of a cross-framework component library.

Web Component Library Starter Kit "Why create components for a specific framework when it can be written to be understood by all — including browsers?

Open Web Labs 14 Dec 24, 2022