0162c57d88
* bump dev dependencies to React 18 * setup Jest to include `IS_REACT_ACT_ENVIRONMENT` * prefer `useId` from React 18 if it exists In React 16 & 17, where `useId` doesn't exist, we will fallback to our implementation we have been using up until now. The `useId` exposed by React 18, ensures stable references even in SSR environments. * update expected events React 18 now uses the proper events: - `blur` -> `focusout` - `focus` -> `focusin` * ensure to wait a bit longer This is a bit unfortunate, but since React 18 now does an extra unmount/remount in `StrictMode` to ensure that your code is ConcurrentMode ready, it takes a bit longer to settle what the DOM sees. That said, this is a temporary "hack". We are going to experiment with using tools like Puppeteer/Playwright to run our tests in an actual browser instead to eliminate all the weird details that we have to keep in mind. * prefer `.focus()` over `fireEvent.focus(el)` * abstract `microTask` polyfill code * prefer our `focus(el)` function over `el.focus()` Internally we would still use `el.focus()`, but this allows us to have more control over that `focus` function. * add React 18 to the React Playground * improve hooks for React 18 - Improving the cleanup of useEffect hooks - useIsoMorphicEffect instead of normal useEffect, so that we can use useLayoutEffect to be a bit quicker. * improve disposables - This allows us to add event listeners on a node, and get automatic cleanup once `dispose` gets called. - We also return all the `d.add` calls, so that we can cleanup specific parts only instead of everything or nothing. * reimplement the Transition component to be React 18 ready * wait an additional frame for everything to settle * update playground examples * suppressConsoleLogs for RadioGroup components * update changelog * keep the `to` classes for a smoother transition In the next transition we will remove _all_ classes provided and re-add the once we need. --- Some extra special thanks: - Thanks @silvenon for your initial work on the `transition` events in #926 - Thanks @thecrypticace for doing late-night debugging sessions Co-authored-by: =?UTF-8?q?Matija=20Marohni=C4=87?= <matija.marohnic@gmail.com> Co-authored-by: Jordan Pittman <jordan@cryptica.me>
57 lines
1.5 KiB
JSON
57 lines
1.5 KiB
JSON
{
|
|
"name": "headlessui",
|
|
"version": "0.0.0",
|
|
"description": "Headless UI components for various libraries like React and Vue",
|
|
"main": "index.js",
|
|
"repository": "https://github.com/tailwindlabs/headlessui",
|
|
"license": "MIT",
|
|
"private": true,
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"scripts": {
|
|
"react": "yarn workspace @headlessui/react",
|
|
"react-playground": "yarn workspace playground-react dev",
|
|
"playground-react": "yarn workspace playground-react dev",
|
|
"vue": "yarn workspace @headlessui/vue",
|
|
"playground-vue": "yarn workspace playground-vue dev",
|
|
"vue-playground": "yarn workspace playground-vue dev",
|
|
"clean": "yarn workspaces run clean",
|
|
"build": "npm-run-all -p 'react build' 'vue build'",
|
|
"test": "./scripts/test.sh",
|
|
"lint": "./scripts/lint.sh",
|
|
"lint-check": "CI=true ./scripts/lint.sh"
|
|
},
|
|
"husky": {
|
|
"hooks": {
|
|
"pre-commit": "lint-staged"
|
|
}
|
|
},
|
|
"lint-staged": {
|
|
"*": "yarn lint"
|
|
},
|
|
"prettier": {
|
|
"printWidth": 100,
|
|
"semi": false,
|
|
"singleQuote": true,
|
|
"trailingComma": "es5"
|
|
},
|
|
"devDependencies": {
|
|
"@swc/core": "^1.2.131",
|
|
"@swc/jest": "^0.2.17",
|
|
"@testing-library/jest-dom": "^5.16.4",
|
|
"@types/node": "^14.14.22",
|
|
"esbuild": "^0.14.11",
|
|
"fast-glob": "^3.2.11",
|
|
"husky": "^4.3.8",
|
|
"jest": "26",
|
|
"lint-staged": "^12.2.1",
|
|
"npm-run-all": "^4.1.5",
|
|
"prettier": "^2.5.1",
|
|
"prettier-plugin-tailwindcss": "^0.1.4",
|
|
"rimraf": "^3.0.2",
|
|
"tslib": "^2.3.1",
|
|
"typescript": "^4.5.4"
|
|
}
|
|
}
|