108a00a98c
[![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [react-router](https://togithub.com/remix-run/react-router) | [`6.16.0` -> `6.20.0`](https://renovatebot.com/diffs/npm/react-router/6.16.0/6.20.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-router/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-router/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-router/6.16.0/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-router/6.16.0/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [react-router-dom](https://togithub.com/remix-run/react-router) | [`6.16.0` -> `6.20.0`](https://renovatebot.com/diffs/npm/react-router-dom/6.16.0/6.20.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-router-dom/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-router-dom/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-router-dom/6.16.0/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-router-dom/6.16.0/6.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>remix-run/react-router (react-router)</summary> ### [`v6.20.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router/CHANGELOG.md#6200) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router@6.19.0...react-router@6.20.0) ##### Minor Changes - Export the `PathParam` type from the public API ([#​10719](https://togithub.com/remix-run/react-router/pull/10719)) ##### Patch Changes - Fix bug with `resolveTo` in splat routes ([#​11045](https://togithub.com/remix-run/react-router/pull/11045)) - This is a follow up to [#​10983](https://togithub.com/remix-run/react-router/pull/10983) to handle the few other code paths using `getPathContributingMatches` - This removes the `UNSAFE_getPathContributingMatches` export from `@remix-run/router` since we no longer need this in the `react-router`/`react-router-dom` layers - Updated dependencies: - `@remix-run/router@1.13.0` ### [`v6.19.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router/CHANGELOG.md#6190) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router@6.18.0...react-router@6.19.0) ##### Minor Changes - Add `unstable_flushSync` option to `useNavigate`/`useSumbit`/`fetcher.load`/`fetcher.submit` to opt-out of `React.startTransition` and into `ReactDOM.flushSync` for state updates ([#​11005](https://togithub.com/remix-run/react-router/pull/11005)) - Remove the `unstable_` prefix from the [`useBlocker`](https://reactrouter.com/en/main/hooks/use-blocker) hook as it's been in use for enough time that we are confident in the API. We do not plan to remove the prefix from `unstable_usePrompt` due to differences in how browsers handle `window.confirm` that prevent React Router from guaranteeing consistent/correct behavior. ([#​10991](https://togithub.com/remix-run/react-router/pull/10991)) ##### Patch Changes - Fix `useActionData` so it returns proper contextual action data and not *any* action data in the tree ([#​11023](https://togithub.com/remix-run/react-router/pull/11023)) - Fix bug in `useResolvedPath` that would cause `useResolvedPath(".")` in a splat route to lose the splat portion of the URL path. ([#​10983](https://togithub.com/remix-run/react-router/pull/10983)) - ⚠️ This fixes a quite long-standing bug specifically for `"."` paths inside a splat route which incorrectly dropped the splat portion of the URL. If you are relative routing via `"."` inside a splat route in your application you should double check that your logic is not relying on this buggy behavior and update accordingly. - Updated dependencies: - `@remix-run/router@1.12.0` ### [`v6.18.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router/CHANGELOG.md#6180) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router@6.17.0...react-router@6.18.0) ##### Patch Changes - Fix the `future` prop on `BrowserRouter`, `HashRouter` and `MemoryRouter` so that it accepts a `Partial<FutureConfig>` instead of requiring all flags to be included. ([#​10962](https://togithub.com/remix-run/react-router/pull/10962)) - Updated dependencies: - `@remix-run/router@1.11.0` ### [`v6.17.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router/CHANGELOG.md#6170) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router@6.16.0...react-router@6.17.0) ##### Patch Changes - Fix `RouterProvider` `future` prop type to be a `Partial<FutureConfig>` so that not all flags must be specified ([#​10900](https://togithub.com/remix-run/react-router/pull/10900)) - Updated dependencies: - `@remix-run/router@1.10.0` </details> <details> <summary>remix-run/react-router (react-router-dom)</summary> ### [`v6.20.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6200) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.19.0...react-router-dom@6.20.0) ##### Minor Changes - Export the `PathParam` type from the public API ([#​10719](https://togithub.com/remix-run/react-router/pull/10719)) ##### Patch Changes - Updated dependencies: - `react-router@6.20.0` - `@remix-run/router@1.13.0` ### [`v6.19.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6190) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.18.0...react-router-dom@6.19.0) ##### Minor Changes - Add `unstable_flushSync` option to `useNavigate`/`useSumbit`/`fetcher.load`/`fetcher.submit` to opt-out of `React.startTransition` and into `ReactDOM.flushSync` for state updates ([#​11005](https://togithub.com/remix-run/react-router/pull/11005)) - Allow `unstable_usePrompt` to accept a `BlockerFunction` in addition to a `boolean` ([#​10991](https://togithub.com/remix-run/react-router/pull/10991)) ##### Patch Changes - Fix issue where a changing fetcher `key` in a `useFetcher` that remains mounted wasn't getting picked up ([#​11009](https://togithub.com/remix-run/react-router/pull/11009)) - Fix `useFormAction` which was incorrectly inheriting the `?index` query param from child route `action` submissions ([#​11025](https://togithub.com/remix-run/react-router/pull/11025)) - Fix `NavLink` `active` logic when `to` location has a trailing slash ([#​10734](https://togithub.com/remix-run/react-router/pull/10734)) - Updated dependencies: - `react-router@6.19.0` - `@remix-run/router@1.12.0` ### [`v6.18.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6180) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.17.0...react-router-dom@6.18.0) ##### Minor Changes - Add support for manual fetcher key specification via `useFetcher({ key: string })` so you can access the same fetcher instance from different components in your application without prop-drilling ([RFC](https://togithub.com/remix-run/remix/discussions/7698)) ([#​10960](https://togithub.com/remix-run/react-router/pull/10960)) - Fetcher keys are now also exposed on the fetchers returned from `useFetchers` so that they can be looked up by `key` - Add `navigate`/`fetcherKey` params/props to `useSumbit`/`Form` to support kicking off a fetcher submission under the hood with an optionally user-specified `key` ([#​10960](https://togithub.com/remix-run/react-router/pull/10960)) - Invoking a fetcher in this way is ephemeral and stateless - If you need to access the state of one of these fetchers, you will need to leverage `useFetcher({ key })` to look it up elsewhere ##### Patch Changes - Adds a fetcher context to `RouterProvider` that holds completed fetcher data, in preparation for the upcoming future flag that will change the fetcher persistence/cleanup behavior ([#​10961](https://togithub.com/remix-run/react-router/pull/10961)) - Fix the `future` prop on `BrowserRouter`, `HashRouter` and `MemoryRouter` so that it accepts a `Partial<FutureConfig>` instead of requiring all flags to be included. ([#​10962](https://togithub.com/remix-run/react-router/pull/10962)) - Updated dependencies: - `@remix-run/router@1.11.0` - `react-router@6.18.0` ### [`v6.17.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6170) [Compare Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.16.0...react-router-dom@6.17.0) ##### Minor Changes - Add experimental support for the [View Transitions API](https://developer.mozilla.org/en-US/docs/Web/API/ViewTransition) via `document.startViewTransition` to enable CSS animated transitions on SPA navigations in your application. ([#​10916](https://togithub.com/remix-run/react-router/pull/10916)) The simplest approach to enabling a View Transition in your React Router app is via the new `<Link unstable_viewTransition>` prop. This will cause the navigation DOM update to be wrapped in `document.startViewTransition` which will enable transitions for the DOM update. Without any additional CSS styles, you'll get a basic cross-fade animation for your page. If you need to apply more fine-grained styles for your animations, you can leverage the `unstable_useViewTransitionState` hook which will tell you when a transition is in progress and you can use that to apply classes or styles: ```jsx function ImageLink(to, src, alt) { let isTransitioning = unstable_useViewTransitionState(to); return ( <Link to={to} unstable_viewTransition> <img src={src} alt={alt} style={{ viewTransitionName: isTransitioning ? "image-expand" : "", }} /> </Link> ); } ``` You can also use the `<NavLink unstable_viewTransition>` shorthand which will manage the hook usage for you and automatically add a `transitioning` class to the `<a>` during the transition: ```css a.transitioning img { view-transition-name: "image-expand"; } ``` ```jsx <NavLink to={to} unstable_viewTransition> <img src={src} alt={alt} /> </NavLink> ``` For an example usage of View Transitions with React Router, check out [our fork](https://togithub.com/brophdawg11/react-router-records) of the [Astro Records](https://togithub.com/Charca/astro-records) demo. For more information on using the View Transitions API, please refer to the [Smooth and simple transitions with the View Transitions API](https://developer.chrome.com/docs/web-platform/view-transitions/) guide from the Google Chrome team. Please note, that because the `ViewTransition` API is a DOM API, we now export a specific `RouterProvider` from `react-router-dom` with this functionality. If you are importing `RouterProvider` from `react-router`, then it will not support view transitions. ([#​10928](https://togithub.com/remix-run/react-router/pull/10928) ##### Patch Changes - Log a warning and fail gracefully in `ScrollRestoration` when `sessionStorage` is unavailable ([#​10848](https://togithub.com/remix-run/react-router/pull/10848)) - Updated dependencies: - `@remix-run/router@1.10.0` - `react-router@6.17.0` </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/Unleash/unleash). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
---|---|---|
.. | ||
cypress | ||
public | ||
scripts | ||
src | ||
.editorconfig | ||
.gitignore | ||
.nvmrc | ||
cypress.config.ts | ||
cypress.d.ts | ||
index.html | ||
index.js | ||
orval.config.js | ||
package.json | ||
README.md | ||
tsconfig.json | ||
tsconfig.node.json | ||
vercel.json | ||
vite.config.ts | ||
yarn.lock |
frontend
This directory contains the Unleash Admin UI frontend app.
Run with a local instance of the unleash-api
Refer to the Contributing to Unleash guide for instructions. The frontend dev server runs (in port 3000) simultaneously with the backend dev server (in port 4242):
yarn install
yarn dev
Run with a sandbox instance of the Unleash API
Alternatively, instead of running unleash-api on localhost, you can use a remote instance:
cd ./frontend
yarn install
yarn run start:sandbox
Running end-to-end tests
We have a set of Cypress tests that run on the build before a PR can be merged so it's important that you check these yourself before submitting a PR. On the server the tests will run against the deployed Heroku app so this is what you probably want to test against:
yarn run start:sandbox
In a different shell, you can run the tests themselves:
yarn run e2e:heroku
If you need to test against patches against a local server instance, you'll need to run that, and then run the end to end tests using:
yarn run e2e
You may also need to test that a feature works against the enterprise version of unleash. Assuming the Heroku instance is still running, this can be done by:
yarn run start:enterprise
yarn run e2e
Generating the OpenAPI client
The frontend uses an OpenAPI client generated from the backend's OpenAPI spec. Whenever there are changes to the backend API, the client should be regenerated:
For now we only use generated types (src/openapi/models). We will use methods (src/openapi/apis) for new features soon.
yarn gen:api
rm -rf src/openapi/apis
clean up src/openapi/index.ts
imports, only keep first line export * from './models';
This script assumes that you have a running instance of the enterprise backend at http://localhost:4242
.
The new OpenAPI client will be generated from the runtime schema of this instance.
The target URL can be changed by setting the UNLEASH_OPENAPI_URL
env var.
Analyzing bundle size
npx vite-bundle-visualizer
in the root of the frontend directory