From a844c0aa12ef6f223fe412e166fc783b0204ab63 Mon Sep 17 00:00:00 2001 From: luvi Date: Sun, 12 Feb 2023 19:03:57 +0000 Subject: [PATCH] [ADD] web: add SelectMenu documentation This commit adds the documentation for the SelectMenu component, introduced in saas-16.1. This documentation gives some example of its usage. An image is also added, to better illustrate the grouping functionality. closes odoo/documentation#3575 X-original-commit: 4a220d61fe0f78b670d8c116e7a4a697ec6efb19 Signed-off-by: Antoine Vandevenne (anv) Signed-off-by: Luca Vitali --- .../reference/frontend/owl_components.rst | 139 ++++++++++++++++++ .../frontend/owl_components/select_menu.png | Bin 0 -> 18789 bytes 2 files changed, 139 insertions(+) create mode 100644 content/developer/reference/frontend/owl_components/select_menu.png diff --git a/content/developer/reference/frontend/owl_components.rst b/content/developer/reference/frontend/owl_components.rst index 17353e6db..2cefb6adf 100644 --- a/content/developer/reference/frontend/owl_components.rst +++ b/content/developer/reference/frontend/owl_components.rst @@ -158,6 +158,8 @@ checkboxes or datepickers. This page explains how to use these generic component - full-featured dropdown * - :ref:`Pager ` - a small component to handle pagination + * - :ref:`SelectMenu ` + - a dropdown component to choose between different options .. _frontend/owl/actionswiper: @@ -655,3 +657,140 @@ Props * - `withAccessKey` - `boolean` - Binds access key `p` on the previous page button and `n` on the next page one (`true` by default). + +.. _frontend/select_menu: + +SelectMenu +---------- + +Location +~~~~~~~~ + +`@web/core/select_menu/select_menu` + +Description +~~~~~~~~~~~ + +This component can be used when you want to do more than using the native `select` element. You can define your own option template, allowing to search +between your options, or group them in subsections. + +.. note:: + Prefer the native HTML `select` element, as it provides by default accessibility features, and has a better user interface on mobile devices. + This component is designed to be used for more complex use cases, to overcome limitations of the native element. + +Props +~~~~~ + +.. list-table:: + :widths: 20 20 60 + :header-rows: 1 + + * - Name + - Type + - Description + * - `choices` + - `array` + - optional. List of `choice`'s to display in the dropdown. + * - `class` + - `string` + - optional. Classname set on the root of the SelectMenu component. + * - `groups` + - `array` + - optional. List of `group`'s, containing `choices` to display in the dropdown. + * - `togglerClass` + - `string` + - optional. classname set on the toggler button. + * - `searchPlaceholder` + - `string` + - optional. Text displayed as the search box placeholder. + * - `value` + - `any` + - optional. Current selected value. It can be from any kind of type. + * - `onSelect` + - `function` + - optional. Callback executed when an option is chosen. + +The shape of a `choice` is the following: + + - `value` is actual value of the choice. It is usually a technical string, but can be from `any` type. + - `label` is the displayed text associated with the option. This one is usually a more friendly and translated `string`. + +The shape of a `group` is the following: + + - `choices` is the list of `choice`'s to display for this group. + - `label` is the displayed text associated with the group. This is a `string` displayed at the top of the group. + +.. example:: + + In the following example, the SelectMenu will display four choices. One of them is displayed on top of the options, + since no groups are associated with it, but the other ones are separated by the label of their group. + + .. code-block:: javascript + + import { SelectMenu } from "@web/core/select_menu/select_menu"; + + class MyComponent extends owl.Component { + get choices() { + return [ + { + value: "value_1", + label: "First value" + } + ] + } + get groups() { + return [ + { + label: "Group A", + choices: [ + { + value: "value_2", + label: "Second value" + }, + { + value: "value_3", + label: "Third value" + } + ] + }, + { + label: "Group B", + choices: [ + { + value: "value_4", + label: "Fourth value" + } + ] + } + ] + } + } + MyComponent.template = owl.tags.xml` + + `; + + You can also customize the appearance of the toggler and set a custom template for the choices, using the appropriate component `slot`'s. + + .. code-block:: javascript + + MyComponent.template = owl.tags.xml` + + Make a choice! + + + + + `; + + .. image:: owl_components/select_menu.png + :width: 400 px + :alt: Example of SelectMenu usage and customization + :align: center diff --git a/content/developer/reference/frontend/owl_components/select_menu.png b/content/developer/reference/frontend/owl_components/select_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9e9dbfdbe9ae67d36652b4b35ba0b0403ae9ab GIT binary patch literal 18789 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