Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge master 5.6.1 on next #10540

Merged
merged 74 commits into from
Feb 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
7d502fa
Fixed `useInput`'s return type
yanchesky Mar 18, 2024
0c9edba
Added event object to onBlur function parameter to the `NumberInput`
yanchesky Mar 18, 2024
447a6c2
Added event object to onBlur function parameter to the `AutocompleteI…
yanchesky Mar 18, 2024
8d050fd
Fixed `NumberInput`'s test to verify that the event object is properl…
yanchesky Mar 18, 2024
b7c59b9
Added test to verify that the event object is properly passed to the …
yanchesky Mar 18, 2024
7600dca
Rebase
yanchesky Feb 12, 2025
a757e26
Fixed formatting
yanchesky Feb 12, 2025
674ee21
Fixed `onBlur` type, fixed `AutocompleteInput` test
yanchesky Feb 12, 2025
299bb06
[no ci] add update-changelog script
slax57 Feb 14, 2025
606ec18
Check videos "Chroma Subsampling" on CI check and explain how to fix …
erwanMarmelab Feb 17, 2025
85e5c39
pushing a bad encoded video to verify that the CI will fail
erwanMarmelab Feb 17, 2025
f886a21
fix encoding for 115 files
erwanMarmelab Feb 17, 2025
fd13963
improve changelog script and add prompt at the end
slax57 Feb 18, 2025
6ae0803
Revert "fix encoding for 115 files"
erwanMarmelab Feb 18, 2025
427e0c1
Revert "pushing a bad encoded video to verify that the CI will fail"
erwanMarmelab Feb 18, 2025
9080bc9
attempt to add a prepublishOnly script
slax57 Feb 18, 2025
ef1117d
fix prepublish
slax57 Feb 18, 2025
032a4f3
finalize checkFormat script
erwanMarmelab Feb 18, 2025
5adcd77
delete all unused gif files
erwanMarmelab Feb 18, 2025
d4a5d83
[no ci] add update-milestones script
slax57 Feb 18, 2025
40402a9
add create-github-release script
slax57 Feb 18, 2025
998dc48
add post-publish script
slax57 Feb 18, 2025
6f67b35
add publish target to makefile
slax57 Feb 18, 2025
ad814ff
fix 7 mp4 videos encoding
erwanMarmelab Feb 18, 2025
cc5ba9f
improve error message
erwanMarmelab Feb 18, 2025
347298a
fix webm videos
erwanMarmelab Feb 18, 2025
d90c270
add release script
slax57 Feb 18, 2025
5f2223c
improve error message
erwanMarmelab Feb 18, 2025
1d32b4d
add RELEASE_DRY_RUN
slax57 Feb 18, 2025
34d70ff
add missing changelog commit step
slax57 Feb 18, 2025
5ec5fd1
explain why lerna is not called in dry mode
slax57 Feb 18, 2025
8e4b880
Revert "delete all unused gif files"
erwanMarmelab Feb 18, 2025
e69fba8
fix possible regex injection
slax57 Feb 18, 2025
cfcc567
don't check gifs
erwanMarmelab Feb 18, 2025
072a7c5
create a dedicated HorizontalMenu page
erwanMarmelab Feb 18, 2025
ae638d2
document HorizontalMenu
erwanMarmelab Feb 18, 2025
e7440d0
Update ArrayInput to throw an error when using outdated disabled prop
fzaninotto Feb 18, 2025
cd816a6
Fix type
fzaninotto Feb 18, 2025
4966c04
Reorganize
fzaninotto Feb 19, 2025
27bbe8a
Merge pull request #10528 from marmelab/doc/backport_HorizontalMenu_doc
fzaninotto Feb 19, 2025
7eee670
Merge pull request #10529 from marmelab/arrayinput-disabled
djhi Feb 19, 2025
0b9cac5
Fix missing `value` declaration
erwanMarmelab Feb 19, 2025
3bbc548
Merge branch 'next'
djhi Feb 19, 2025
af88a62
Update CHANGELOG for 5.6.0
djhi Feb 19, 2025
020ac2c
Update create-react-admin for 5.6.0
djhi Feb 19, 2025
91258c8
v5.6.0
djhi Feb 19, 2025
8d544ac
[themes] Fix menu icon padding
fzaninotto Feb 19, 2025
57006ae
[Doc] Promote composition with `<ListLiveUpdate>` instead of `<ListLi…
djhi Feb 19, 2025
7b980c5
Fix create-react-admin does not ignore auth-provider when specified a…
djhi Feb 20, 2025
e5350c0
Fix default package manager detection
djhi Feb 20, 2025
ff821f3
Fix create-react-admin package manager detection
djhi Feb 20, 2025
9444944
[Doc] Fix `<DatagridAGClient>` access control's doc
erwanMarmelab Feb 20, 2025
ce96320
Merge pull request #10535 from marmelab/doc/fix-datagridagclient-acce…
djhi Feb 20, 2025
6880537
[skip ci] Fix dialogs `title` doc
erwanMarmelab Feb 20, 2025
463b66c
[no ci] Fix CI jobs that run on new tag, again
slax57 Feb 20, 2025
b5b746c
Merge pull request #10537 from marmelab/fix-ci-jobs-on-tagag-grid-can…
djhi Feb 20, 2025
db94078
Merge pull request #10534 from marmelab/fix-create-react-admin-detect…
slax57 Feb 20, 2025
7b56a91
Merge pull request #10533 from marmelab/fix-create-react-admin-supaba…
slax57 Feb 20, 2025
b7086dd
Add missing imports
djhi Feb 21, 2025
ec9d754
[no ci] skip useless import
erwanMarmelab Feb 21, 2025
c873665
Merge pull request #10531 from marmelab/doc-list-live-update
slax57 Feb 21, 2025
e8c299c
Merge pull request #10536 from marmelab/doc/fix-dialogs-title-doc
slax57 Feb 21, 2025
d0d2173
[no ci] Fix dialogs doc for `warnWhenUnsavedChanges` sections
erwanMarmelab Feb 21, 2025
1c3f9bb
Merge pull request #10538 from marmelab/fix/doc_warnwhenusavedhcanges…
djhi Feb 21, 2025
fb8d47f
fix changelog prompt is hard to see
slax57 Feb 21, 2025
ccf5ca4
remove duplicate demo keyword
slax57 Feb 21, 2025
bfda854
[no ci] rewrite release script without lifecycle scripts
slax57 Feb 21, 2025
f8c103e
Merge remote-tracking branch 'origin/master' into release-tooling
slax57 Feb 21, 2025
f9a814e
Merge pull request #10516 from marmelab/release-tooling
djhi Feb 21, 2025
28ab7a8
[no ci] only check the yuv444p encoding
erwanMarmelab Feb 21, 2025
e547f7f
Merge pull request #10524 from marmelab/CI/check_videod_chromasubsamp…
slax57 Feb 21, 2025
7f8333a
Merge pull request #9730 from yanchesky/fix-onblur-function-parameter
slax57 Feb 21, 2025
471bd43
v5.6.1
slax57 Feb 21, 2025
734f7ae
Update changelog for version 5.6.1
slax57 Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
GITHUB_ACCESS_TOKEN=your_github_access_token
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ jobs:
runs-on: ubuntu-latest
name: GreenFrame
needs: [e-commerce]
if: github.event_name == 'push' && github.ref_type == 'tag' && github.ref_name == 'refs/tags/v*' && !contains('beta', github.ref_name) && !contains('alpha', github.ref_name)
if: github.event_name == 'push' && github.ref_type == 'tag' && contains(github.ref, 'refs/tags/v') && !contains('beta', github.ref) && !contains('alpha', github.ref)
steps:
# To use this repository's private action,
# you must check out the repository
Expand Down Expand Up @@ -225,7 +225,7 @@ jobs:
update-sandbox-repository:
runs-on: ubuntu-latest
# Only run on new tags that target a release (not latest nor next) and avoid alpha and beta tags
if: github.event_name == 'push' && github.ref_type == 'tag' && github.ref_name == 'refs/tags/v*' && !contains('beta', github.ref_name) && !contains('alpha', github.ref_name)
if: github.event_name == 'push' && github.ref_type == 'tag' && contains(github.ref, 'refs/tags/v') && !contains('beta', github.ref) && !contains('alpha', github.ref)
needs: [typecheck, simple-example-typecheck, unit-test, e2e-test]
steps:
- name: Checkout
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ cypress/screenshots
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.env
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog

## 5.6.1

* Fix create-react-admin package manager detection ([#10534](https://github.com/marmelab/react-admin/pull/10534)) ([djhi](https://github.com/djhi))
* Fix create-react-admin does not ignore auth-provider when specified and using supabase ([#10533](https://github.com/marmelab/react-admin/pull/10533)) ([djhi](https://github.com/djhi))
* Fix `<NumberInput>` and `<AutocompleteInput>` do not forward the event when calling `onBlur` ([#9730](https://github.com/marmelab/react-admin/pull/9730)) ([yanchesky](https://github.com/yanchesky))
* [Doc] Fix dialogs `title` doc ([#10536](https://github.com/marmelab/react-admin/pull/10536)) ([erwanMarmelab](https://github.com/erwanMarmelab))
* [Doc] Fix `<DatagridAGClient>` access control's doc ([#10535](https://github.com/marmelab/react-admin/pull/10535)) ([erwanMarmelab](https://github.com/erwanMarmelab))
* [Doc] Promote composition with `<ListLiveUpdate>` instead of `<ListLive>` ([#10531](https://github.com/marmelab/react-admin/pull/10531)) ([djhi](https://github.com/djhi))
* [Doc] Fix some videos do not play in Firefox for MacOS users ([#10524](https://github.com/marmelab/react-admin/pull/10524)) ([erwanMarmelab](https://github.com/erwanMarmelab))

## 5.6.0

* Add `<LoginWithEmail>` to facilitate login with email ([#10518](https://github.com/marmelab/react-admin/pull/10518)) ([fzaninotto](https://github.com/fzaninotto))
* Add B&W Theme ([#10523](https://github.com/marmelab/react-admin/pull/10523)) ([fzaninotto](https://github.com/fzaninotto))
* Make `create-react-admin` non interactive by default and support `ra-supabase` ([#10511](https://github.com/marmelab/react-admin/pull/10511)) ([djhi](https://github.com/djhi))
* Support `<ReferenceOneField emptyContent>` ([#10450](https://github.com/marmelab/react-admin/pull/10450)) ([erwanMarmelab](https://github.com/erwanMarmelab))
* Update `<ArrayInput>` to throw an error when using outdated `disabled` prop ([#10529](https://github.com/marmelab/react-admin/pull/10529)) ([fzaninotto](https://github.com/fzaninotto))
* [Doc] Add `HorizontalMenu` doc ([#10528](https://github.com/marmelab/react-admin/pull/10528)) ([erwanMarmelab](https://github.com/erwanMarmelab))
* [Doc] Add `<FormFillerButton>` documentation ([#10527](https://github.com/marmelab/react-admin/pull/10527)) ([djhi](https://github.com/djhi))
* [chore] Fix CI jobs that run on new tag ([#10525](https://github.com/marmelab/react-admin/pull/10525)) ([slax57](https://github.com/slax57))

## 5.5.4

* Fix `<FilerLiveForm>` does not allow to clear filters ([#10522](https://github.com/marmelab/react-admin/pull/10522)) ([djhi](https://github.com/djhi))
Expand Down
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,6 @@ update-sandbox: ## Push the local version of the simple example to the sandbox r

check-documentation-videos-format: ## Check the documentation format
./scripts/check-documentation-videos-format.sh

release: ## Start the release process and publish the packages to npm using lerna
./scripts/release.sh
26 changes: 25 additions & 1 deletion docs/ArrayInput.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Check [the `<SimpleFormIterator>` documentation](./SimpleFormIterator.md) for de

## Props

`<ArrayInput>` accepts the [common input props](./Inputs.md#common-input-props) (except `format` and `parse`).
`<ArrayInput>` accepts the [common input props](./Inputs.md#common-input-props) (except `disabled`, `readOnly`, `format` and `parse`).

## Global validation

Expand All @@ -109,3 +109,27 @@ You need to return an errors object shaped like this:
```

**Tip:** You can find a sample `validate` function that handles arrays in the [Form Validation documentation](./Validation.md#global-validation).

## Disabling The Input

`<ArrayInput>` does not support the `disabled` and `readOnly` props.

If you need to disable the input, set the `<SimpleFormIterator disabled>` prop, and make the child inputs `readOnly`:

```jsx
const OrderEdit = () => (
<Edit>
<SimpleForm>
<TextInput source="customer" />
<DateInput source="date" />
<ArrayInput source="items">
<SimpleFormIterator inline disabled>
<TextInput source="name" readOnly/>
<NumberInput source="price" readOnly />
<NumberInput source="quantity" readOnly />
</SimpleFormIterator>
</ArrayInput>
</SimpleForm>
</Edit>
);
```
11 changes: 8 additions & 3 deletions docs/ContainerLayout.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,9 @@ const MyLayout = ({ children }) => (

## `menu`

By default, `<ContainerLayout>` renders one menu item per resource in the admin. To reorder the menu, omit resources, or add custom pages, pass a custom menu element to the `menu` prop. This element should be [a `<HorizontalMenu>` component](#horizontalmenu) with `<HorizontalMenu.Item>` children. Each child should have a `value` corresponding to the [application location](https://react-admin-ee.marmelab.com/documentation/ra-navigation#concepts) of the target, and can have a `to` prop corresponding to the target location if different from the app location.
By default, `<ContainerLayout>` renders one menu item per resource in the admin. To reorder the menu, omit resources, or add custom pages, pass a custom menu element to the `menu` prop.
This element should be [a `<HorizontalMenu>` component](#horizontalmenu) with `<HorizontalMenu.DashboardItem>` or `<HorizontalMenu.Item>` children.
Each child should have a `value` corresponding to the [application location](https://react-admin-ee.marmelab.com/documentation/ra-navigation#concepts) of the target, and can have a `to` prop corresponding to the target location if different from the app location.

```jsx
import {
Expand All @@ -104,10 +106,14 @@ import {

const Menu = () => (
<HorizontalMenu>
<HorizontalMenu.Item label="Dashboard" to="/" value="" />
<HorizontalMenu.DashboardItem label="Dashboard" value="" />
<HorizontalMenu.Item label="Songs" to="/songs" value="songs" />
<HorizontalMenu.Item label="Artists" to="/artists" value="artists" />
<HorizontalMenu.Item label="Custom" to="/custom" value="custom" />
<HorizontalMenu.Item label="Business" value="business">
<HorizontalMenu.Item label="Sales" value="sales" >
<HorizontalMenu.Item label="Customers" value="customers" >
</HorizontalMenu.Item>
</HorizontalMenu>
);

Expand Down Expand Up @@ -225,7 +231,6 @@ export const MyLayout = ({ children }) => (
```
{% endraw %}

## `<HorizontalMenu>`

This component renders a horizontal menu, to be used in the AppBar of the [`<ContainerLayout>`](#containerLayout).

Expand Down
28 changes: 11 additions & 17 deletions docs/CreateDialog.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,35 +210,31 @@ Unlike the `<Create>` components, with Dialog components the title will be displ
Here is an example:

```tsx
import React from 'react';
import {
List,
ListActions,
Datagrid,
SimpleForm,
TextInput,
DateInput,
required,
} from 'react-admin';
import {
CreateDialog,
} from '@react-admin/ra-form-layout';
import { CreateDialog } from '@react-admin/ra-form-layout';

const CustomerList = () => (
<>
<List hasCreate>
<List actions={<ListActions hasCreate />}>
<Datagrid>
...
<ShowButton />
</Datagrid>
</List>
<ShowDialog title={<CustomerShowTitle />}>
<SimpleShowLayout>
<TextField source="id" />
<TextField source="first_name" />
<TextField source="last_name" />
<DateField source="date_of_birth" label="born" />
</SimpleShowLayout>
</ShowDialog>
<CreateDialog title="Create a new customer">
<SimpleForm>
<TextInput source="first_name" validate={required()} />
<TextInput source="last_name" validate={required()} />
<DateInput source="date_of_birth" />
</SimpleForm>
</CreateDialog>
</>
);
```
Expand Down Expand Up @@ -464,9 +460,7 @@ const EmployerEdit = () => (

## Warn When There Are Unsaved Changes

If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, there are two cases to consider.

In that case, you can leverage the [warnWhenUnsavedChanges](./Form.md#warnwhenunsavedchanges) feature provided by React Admin forms.
If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, you can leverage the [warnWhenUnsavedChanges](./Form.md#warnwhenunsavedchanges) feature provided by React Admin forms.

Add the `warnWhenUnsavedChanges` prop to your Form like so:

Expand Down
4 changes: 1 addition & 3 deletions docs/CreateInDialogButton.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,9 +293,7 @@ You can also hide the title by passing `null`:

## Warn When There Are Unsaved Changes

If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, there are two cases to consider.

In that case, using the `warnWhenUnsavedChanges` prop directly on the form won't work, because this feature relies on the router's location, but both components do not use routing.
If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, using the `warnWhenUnsavedChanges` prop directly on the form won't work, because this feature relies on the router's location, but both components do not use routing.

Instead, you can use the `<WarnWhenUnsavedChangesInDialog>` component provided by `ra-form-layout`.

Expand Down
2 changes: 1 addition & 1 deletion docs/DataFetchingGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ Once your data provider has enabled realtime features, you can use these hooks a
- [`useLockOnCall`](./useLockOnCall.md)
- [`useGetListLive`](./useGetListLive.md)
- [`useGetOneLive`](./useGetOneLive.md)
- [`<ListLive>`](./ListLive.md)
- [`<ListLiveUpdate>`](./ListLiveUpdate.md)
- [`<EditLive>`](./EditLive.md)
- [`<ShowLive>`](./ShowLive.md)
- [`<MenuLive>`](./MenuLive.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/DataProviderLive.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Once your data provider has enabled realtime features, you can use these hooks a
- [`useLockOnCall`](./useLockOnCall.md)
- [`useGetListLive`](./useGetListLive.md)
- [`useGetOneLive`](./useGetOneLive.md)
- [`<ListLive>`](./ListLive.md)
- [`<ListLiveUpdate>`](./ListLiveUpdate.md)
- [`<EditLive>`](./EditLive.md)
- [`<ShowLive>`](./ShowLive.md)
- [`<MenuLive>`](./MenuLive.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/DatagridAG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2851,7 +2851,7 @@ const CarList = () => {

### Access Control

`<DatagridAG>` has built-in [access control](./Permissions.me#access-control). If the `authProvider` implements the `canAccess` method, users will only be allowed to edit rows of, say, resource `'cars'` if `canAccess({ action: 'edit', resource: 'cars' })` returns `true`.
`<DatagridAGClient>` has built-in [access control](./Permissions.me#access-control). If the `authProvider` implements the `canAccess` method, users will only be allowed to edit rows of, say, resource `'cars'` if `canAccess({ action: 'edit', resource: 'cars' })` returns `true`.

**Note:** the access control check can only be done at the resource level and not at the record level.

Expand Down
9 changes: 4 additions & 5 deletions docs/EditDialog.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,9 @@ const MyEditDialog = () => (

## `title`

Unlike the `<Create>` components, with Dialog components the title will be displayed in the `<Dialog>`, not in the `<AppBar>`.
If you pass a custom title component, it will render in the same `RecordContext` as the dialog's child component. That means you can display non-editable details of the current `record` in the title component.
Unlike the `<Edit>` components, with Dialog components the title will be displayed in the `<Dialog>`, not in the `<AppBar>`.
If you pass a custom title component, it will render in the same `RecordContext` as the dialog's child component.
That means you can display non-editable details of the current `record` in the title component.
Here is an example:

```tsx
Expand Down Expand Up @@ -501,9 +502,7 @@ const EmployerEdit = () => (

## Warn When There Are Unsaved Changes

If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, there are two cases to consider.

In that case, you can leverage the [warnWhenUnsavedChanges](./Form.md#warnwhenunsavedchanges) feature provided by React Admin forms.
If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, you can leverage the [warnWhenUnsavedChanges](./Form.md#warnwhenunsavedchanges) feature provided by React Admin forms.

Add the `warnWhenUnsavedChanges` prop to your Form like so:

Expand Down
7 changes: 3 additions & 4 deletions docs/EditInDialogButton.md
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,8 @@ const EditButton = () => (
## `title`

Unlike the `<Edit>` components, with Dialog components the title will be displayed in the `<Dialog>`, not in the `<AppBar>`.
Still, for `<EditInDialogButton>`, if you pass a custom title component, it will render in the same `RecordContext` as the dialog's child component. That means you can display non-editable details of the current `record` in the title component.
If you pass a custom title component, it will render in the same `RecordContext` as the dialog's child component.
That means you can display non-editable details of the current `record` in the title component.
Here is an example:

```tsx
Expand Down Expand Up @@ -383,9 +384,7 @@ const EmployerEdit = () => (

## Warn When There Are Unsaved Changes

If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, there are two cases to consider.

In that case, using the `warnWhenUnsavedChanges` prop directly on the form won't work, because this feature relies on the router's location, but both components do not use routing.
If you'd like to trigger a warning when the user tries to close the dialog with unsaved changes, using the `warnWhenUnsavedChanges` prop directly on the form won't work, because this feature relies on the router's location, but both components do not use routing.

Instead, you can use the `<WarnWhenUnsavedChangesInDialog>` component provided by `ra-form-layout`.

Expand Down
15 changes: 7 additions & 8 deletions docs/Features.md
Original file line number Diff line number Diff line change
Expand Up @@ -1164,28 +1164,27 @@ Check the following low-level hooks for more details:

React-admin provides **live updates** via specialized hooks and components. This means that when a user edits a resource, the other users working on the same resource see the changes in real time whether they are in a list, a show view, or an edit view.

For instance, replace `<List>` with `<ListLive>` to have a list refreshing automatically when an element is added, updated, or deleted:
For instance, include a `<ListLiveUpdate>` within a `<List>` to have a list refreshing automatically when an element is added, updated, or deleted:

```diff
import {
- List,
List,
Datagrid,
TextField,
NumberField,
Datefield,
} from 'react-admin';
+import { ListLive } from '@react-admin/ra-realtime';
+import { ListLiveUpdate } from '@react-admin/ra-realtime';

const PostList = () => (
- <List>
+ <ListLive>
<List>
<Datagrid>
<TextField source="title" />
<NumberField source="views" />
<DateField source="published_at" />
</Datagrid>
- </List>
+ </ListLive>
+ <ListLiveUpdate />
</List>
);
```

Expand All @@ -1202,7 +1201,7 @@ This feature leverages the following hooks:

And the following components:

- [`<ListLive>`](./ListLive.md)
- [`<ListLiveUpdate>`](./ListLiveUpdate.md)
- [`<EditLive>`](./EditLive.md)
- [`<ShowLive>`](./ShowLive.md)

Expand Down
Loading
Loading