UNPKG

@ui5/webcomponents-react

Version:

React Wrapper for UI5 Web Components and additional components

191 lines (190 loc) 10.3 kB
import '@ui5/webcomponents/dist/MenuItem.js'; import type { ListItemAccessibilityAttributes } from '@ui5/webcomponents/dist/ListItem.js'; import type Highlight from '@ui5/webcomponents/dist/types/Highlight.js'; import type ListItemType from '@ui5/webcomponents/dist/types/ListItemType.js'; import type { ReactNode } from 'react'; import type { CommonProps, Ui5CustomEvent, Ui5DomRef, UI5WCSlotsNode } from '../../types/index.js'; interface MenuItemAttributes { /** * Defines the additional accessibility attributes that will be applied to the component. * The following fields are supported: * * - **ariaKeyShortcuts**: Indicated the availability of a keyboard shortcuts defined for the menu item. * * - **role**: Defines the role of the menu item. If not set, menu item will have default role="menuitem". * * **Note:** Available since [v2.1.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v2.1.0) of **@ui5/webcomponents**. * @default {} */ accessibilityAttributes?: ListItemAccessibilityAttributes; /** * Defines the accessible ARIA name of the component. * * **Note:** Available since [v1.7.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.7.0) of **@ui5/webcomponents**. * @default undefined */ accessibleName?: string | undefined; /** * Defines the `additionalText`, displayed in the end of the menu item. * * **Note:** The additional text will not be displayed if there are items added in `items` slot or there are * components added to `endContent` slot. * * The priority of what will be displayed at the end of the menu item is as follows: * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`. * * **Note:** Available since [v1.8.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.8.0) of **@ui5/webcomponents**. * @default undefined */ additionalText?: string | undefined; /** * Defines whether `MenuItem` is in disabled state. * * **Note:** A disabled `MenuItem` is noninteractive. * @default false */ disabled?: boolean; /** * Defines the highlight state of the list items. * Available options are: `"None"` (by default), `"Positive"`, `"Critical"`, `"Information"` and `"Negative"`. * * **Note:** Available since [v1.24](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.24) of **@ui5/webcomponents**. * @default "None" */ highlight?: Highlight | keyof typeof Highlight; /** * Defines the icon to be displayed as graphical element within the component. * The SAP-icons font provides numerous options. * * **Example:** * * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html). * @default undefined */ icon?: string | undefined; /** * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover. * * **Note:** If set to `true` a `BusyIndicator` component will be displayed into the related one to the current `MenuItem` sub-menu popover. * * **Note:** Available since [v1.13.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.13.0) of **@ui5/webcomponents**. * @default false */ loading?: boolean; /** * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover. * * **Note:** Available since [v1.13.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.13.0) of **@ui5/webcomponents**. * @default 1000 */ loadingDelay?: number; /** * The navigated state of the list item. * If set to `true`, a navigation indicator is displayed at the end of the list item. * * **Note:** Available since [v1.10.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.10.0) of **@ui5/webcomponents**. * @default false */ navigated?: boolean; /** * Defines the selected state of the component. * @default false */ selected?: boolean; /** * Defines the text of the tree item. * @default undefined */ text?: string | undefined; /** * Defines the text of the tooltip for the menu item. * * **Note:** Available since [v1.23.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.23.0) of **@ui5/webcomponents**. * @default undefined */ tooltip?: string | undefined; /** * Defines the visual indication and behavior of the list items. * Available options are `Active` (by default), `Inactive`, `Detail` and `Navigation`. * * **Note:** When set to `Active` or `Navigation`, the item will provide visual response upon press and hover, * while with type `Inactive` and `Detail` - will not. * @default "Active" */ type?: ListItemType | keyof typeof ListItemType; } interface MenuItemDomRef extends Required<MenuItemAttributes>, Ui5DomRef { } interface MenuItemPropTypes extends MenuItemAttributes, Omit<CommonProps, keyof MenuItemAttributes | 'children' | 'deleteButton' | 'endContent' | 'onDetailClick'> { /** * Defines the items of this component. * * **Note:** The slot can hold `MenuItem` and `MenuSeparator` items. * * If there are items added to this slot, an arrow will be displayed at the end * of the item in order to indicate that there are items added. In that case components added * to `endContent` slot or `additionalText` content will not be displayed. * * The priority of what will be displayed at the end of the menu item is as follows: * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`. */ children?: ReactNode | ReactNode[]; /** * Defines the delete button, displayed in "Delete" mode. * **Note:** While the slot allows custom buttons, to match * design guidelines, please use the `Button` component. * **Note:** When the slot is not present, a built-in delete button will be displayed. * * __Note:__ The content of the prop will be rendered into a [&lt;slot&gt;](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) by assigning the respective [slot](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/slot) attribute (`slot="deleteButton"`). * Since you can't change the DOM order of slots when declaring them within a prop, it might prove beneficial to manually mount them as part of the component's children, especially when facing problems with the reading order of screen readers. * * __Note:__ When passing a custom React component to this prop, you have to make sure your component reads the `slot` prop and appends it to the most outer element of your component. * Learn more about it [here](https://sap.github.io/ui5-webcomponents-react/v2/?path=/docs/knowledge-base-handling-slots--docs). * * **Note:** Available since [v1.9.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.9.0) of **@ui5/webcomponents**. */ deleteButton?: UI5WCSlotsNode; /** * Defines the components that should be displayed at the end of the menu item. * * **Note:** It is highly recommended to slot only components of type `Button`,`Link` * or `Icon` in order to preserve the intended design. If there are components added to this slot, * and there is text set in `additionalText`, it will not be displayed. If there are items added to `items` slot, * nether `additionalText` nor components added to this slot would be displayed. * * The priority of what will be displayed at the end of the menu item is as follows: * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`. * * __Note:__ The content of the prop will be rendered into a [&lt;slot&gt;](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) by assigning the respective [slot](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/slot) attribute (`slot="endContent"`). * Since you can't change the DOM order of slots when declaring them within a prop, it might prove beneficial to manually mount them as part of the component's children, especially when facing problems with the reading order of screen readers. * * __Note:__ When passing a custom React component to this prop, you have to make sure your component reads the `slot` prop and appends it to the most outer element of your component. * Learn more about it [here](https://sap.github.io/ui5-webcomponents-react/v2/?path=/docs/knowledge-base-handling-slots--docs). * * **Note:** Available since [v2.0.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v2.0.0) of **@ui5/webcomponents**. */ endContent?: UI5WCSlotsNode; /** * Fired when the user clicks on the detail button when type is `Detail`. */ onDetailClick?: (event: Ui5CustomEvent<MenuItemDomRef>) => void; } /** * `MenuItem` is the item to use inside a `Menu`. * An arbitrary hierarchy structure can be represented by recursively nesting menu items. * * ### Usage * * `MenuItem` represents a node in a `Menu`. The menu itself is rendered as a list, * and each `MenuItem` is represented by a list item in that list. Therefore, you should only use * `MenuItem` directly in your apps. The `ListItemStandard` list item is internal for the list, and not intended for public use. * * * * __Note__: This is a UI5 Web Component! [Repository](https://github.com/SAP/ui5-webcomponents) | [Documentation](https://sap.github.io/ui5-webcomponents/) * * @since [1.3.0](https://github.com/SAP/ui5-webcomponents/releases/tag/v1.3.0) of __@ui5/webcomponents__. */ declare const MenuItem: import("react").ForwardRefExoticComponent<MenuItemPropTypes & import("../../internal/withWebComponent.js").WithWebComponentPropTypes & import("react").RefAttributes<MenuItemDomRef>>; export { MenuItem }; export type { MenuItemDomRef, MenuItemPropTypes };