[IMP] developer: add doc for pager and usePager
closes odoo/documentation#1238 Signed-off-by: Michaël Mattiello <mcm@odoo.com>
This commit is contained in:
parent
992fbc6ece
commit
3af790ba8e
@ -20,6 +20,8 @@ documents the list of hooks provided by the Odoo web framework.
|
|||||||
- Short Description
|
- Short Description
|
||||||
* - :ref:`useBus <frontend/hooks/usebus>`
|
* - :ref:`useBus <frontend/hooks/usebus>`
|
||||||
- subscribe and unsubscribe to a bus
|
- subscribe and unsubscribe to a bus
|
||||||
|
* - :ref:`usePager <frontend/hooks/usepager>`
|
||||||
|
- Display the pager of the control panel of a view.
|
||||||
* - :ref:`usePosition <frontend/hooks/useposition>`
|
* - :ref:`usePosition <frontend/hooks/useposition>`
|
||||||
- position an element relative to a target
|
- position an element relative to a target
|
||||||
|
|
||||||
@ -60,6 +62,52 @@ API
|
|||||||
:param string eventName: the name of the event that we want to listen to
|
:param string eventName: the name of the event that we want to listen to
|
||||||
:param function callback: listener callback
|
:param function callback: listener callback
|
||||||
|
|
||||||
|
.. _frontend/hooks/usepager:
|
||||||
|
|
||||||
|
usePager
|
||||||
|
========
|
||||||
|
|
||||||
|
Location
|
||||||
|
--------
|
||||||
|
|
||||||
|
`@web/search/pager_hook`
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Display the :ref:`Pager <frontend/pager>` of the control panel of a view. This hooks correctly sets `env.config` to provide the props to the pager.
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
import { usePager } from "@web/search/pager_hook";
|
||||||
|
|
||||||
|
class CustomView {
|
||||||
|
setup() {
|
||||||
|
const state = owl.hooks.useState({
|
||||||
|
offset: 0,
|
||||||
|
limit: 80,
|
||||||
|
total: 50,
|
||||||
|
});
|
||||||
|
usePager(() => {
|
||||||
|
return {
|
||||||
|
offset: this.state.offset,
|
||||||
|
limit: this.state.limit,
|
||||||
|
total: this.state.total,
|
||||||
|
onUpdate: (newState) => {
|
||||||
|
Object.assign(this.state, newState);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
API
|
||||||
|
---
|
||||||
|
|
||||||
|
.. js:function:: usePager(getPagerProps)
|
||||||
|
|
||||||
|
:param function getPagerProps: function that returns the pager props.
|
||||||
|
|
||||||
.. _frontend/hooks/useposition:
|
.. _frontend/hooks/useposition:
|
||||||
|
|
||||||
usePosition
|
usePosition
|
||||||
|
@ -153,6 +153,8 @@ checkboxes or datepickers. This page explains how to use these generic component
|
|||||||
- a simple checkbox component with a label next to it
|
- a simple checkbox component with a label next to it
|
||||||
* - :ref:`Dropdown <frontend/dropdown>`
|
* - :ref:`Dropdown <frontend/dropdown>`
|
||||||
- full-featured dropdown
|
- full-featured dropdown
|
||||||
|
* - :ref:`Pager <frontend/pager>`
|
||||||
|
- a small component to handle pagination
|
||||||
|
|
||||||
.. _frontend/checkbox:
|
.. _frontend/checkbox:
|
||||||
|
|
||||||
@ -466,3 +468,54 @@ In this example, we recursively call a template to display a tree-like structure
|
|||||||
</t>
|
</t>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
|
.. _frontend/pager:
|
||||||
|
|
||||||
|
Pager
|
||||||
|
-----
|
||||||
|
|
||||||
|
Location
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
`@web/core/pager/pager`
|
||||||
|
|
||||||
|
Description
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
The Pager is a small component to handle pagination. A page is defined by an `offset` and a `limit` (the size of the page). It displays the current page and the `total` number of elements, for instance, "9-12 / 20". In the previous example, `offset` is 8, `limit` is 4 and `total` is 20. It has two buttons ("Previous" and "Next") to navigate between pages.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The pager can be used anywhere but its main use is in the control panel. See the :ref:`usePager <frontend/hooks/usepager>` hook in order to manipulate the pager of the control panel.
|
||||||
|
|
||||||
|
.. code-block:: xml
|
||||||
|
|
||||||
|
<Pager offset="0" limit="80" total="50" onUpdate="doSomething" />
|
||||||
|
|
||||||
|
Props
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 20 20 60
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Name
|
||||||
|
- Type
|
||||||
|
- Description
|
||||||
|
* - `offset`
|
||||||
|
- `number`
|
||||||
|
- Index of the first element of the page. It starts with 0 but the pager displays `offset + 1`.
|
||||||
|
* - `limit`
|
||||||
|
- `number`
|
||||||
|
- Size of the page. The sum of `offset` and `limit` corresponds to the index of the last element of the page.
|
||||||
|
* - `total`
|
||||||
|
- `number`
|
||||||
|
- Total number of elements the page can reach.
|
||||||
|
* - `onUpdate`
|
||||||
|
- `function`
|
||||||
|
- Function that is called when page is modified by the pager. This function can be async, the pager cannot be edited while this function is executing.
|
||||||
|
* - `isEditable`
|
||||||
|
- `boolean`
|
||||||
|
- Allows to click on the current page to edit it (`true` by default).
|
||||||
|
* - `withAccessKey`
|
||||||
|
- `boolean`
|
||||||
|
- Binds access key `p` on the previous page button and `n` on the next page one (`true` by default).
|
||||||
|
Loading…
Reference in New Issue
Block a user