@patternfly/react-docs 7.6.0-prerelease.8 → 7.6.0-prerelease.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/LICENSE +21 -0
- package/package.json +12 -11
- package/patternfly-docs/generated/components/about-modal/react.js +0 -149
- package/patternfly-docs/generated/components/accordion/react.js +0 -262
- package/patternfly-docs/generated/components/action-list/react.js +0 -144
- package/patternfly-docs/generated/components/alert/react-demos.js +0 -56
- package/patternfly-docs/generated/components/alert/react.js +0 -1433
- package/patternfly-docs/generated/components/avatar/react.js +0 -166
- package/patternfly-docs/generated/components/back-to-top/react-demos.js +0 -60
- package/patternfly-docs/generated/components/back-to-top/react.js +0 -77
- package/patternfly-docs/generated/components/backdrop/react.js +0 -64
- package/patternfly-docs/generated/components/background-image/react.js +0 -62
- package/patternfly-docs/generated/components/badge/react.js +0 -97
- package/patternfly-docs/generated/components/banner/react-demos.js +0 -57
- package/patternfly-docs/generated/components/banner/react.js +0 -148
- package/patternfly-docs/generated/components/brand/react.js +0 -142
- package/patternfly-docs/generated/components/breadcrumb/react.js +0 -206
- package/patternfly-docs/generated/components/button/react-demos.js +0 -57
- package/patternfly-docs/generated/components/button/react.js +0 -826
- package/patternfly-docs/generated/components/card/react-demos.js +0 -201
- package/patternfly-docs/generated/components/card/react.js +0 -1015
- package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +0 -1350
- package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +0 -1334
- package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +0 -1282
- package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +0 -848
- package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +0 -192
- package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +0 -426
- package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +0 -804
- package/patternfly-docs/generated/components/charts/legends/-Victory.js +0 -3230
- package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +0 -1178
- package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +0 -525
- package/patternfly-docs/generated/components/charts/patterns/-Victory.js +0 -3382
- package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +0 -377
- package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +0 -2475
- package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +0 -538
- package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +0 -1551
- package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +0 -4115
- package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +0 -955
- package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +0 -1173
- package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +0 -1166
- package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +0 -413
- package/patternfly-docs/generated/components/chip/react-deprecated.js +0 -323
- package/patternfly-docs/generated/components/clipboard-copy/react.js +0 -373
- package/patternfly-docs/generated/components/code-block/react.js +0 -148
- package/patternfly-docs/generated/components/code-editor/react.js +0 -659
- package/patternfly-docs/generated/components/compass/react-demos.js +0 -147
- package/patternfly-docs/generated/components/compass/react.js +0 -440
- package/patternfly-docs/generated/components/content/react.js +0 -248
- package/patternfly-docs/generated/components/data-list/react-demos.js +0 -90
- package/patternfly-docs/generated/components/data-list/react.js +0 -709
- package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +0 -283
- package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +0 -64
- package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +0 -83
- package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +0 -395
- package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +0 -241
- package/patternfly-docs/generated/components/description-list/react-demos.js +0 -58
- package/patternfly-docs/generated/components/description-list/react.js +0 -743
- package/patternfly-docs/generated/components/divider/react.js +0 -126
- package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +0 -351
- package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +0 -184
- package/patternfly-docs/generated/components/drag-and-drop/react.js +0 -137
- package/patternfly-docs/generated/components/drawer/react.js +0 -598
- package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +0 -772
- package/patternfly-docs/generated/components/dual-list-selector/react.js +0 -594
- package/patternfly-docs/generated/components/empty-state/react.js +0 -199
- package/patternfly-docs/generated/components/expandable-section/react-demos.js +0 -65
- package/patternfly-docs/generated/components/expandable-section/react.js +0 -408
- package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +0 -52
- package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +0 -398
- package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +0 -749
- package/patternfly-docs/generated/components/forms/checkbox/react.js +0 -222
- package/patternfly-docs/generated/components/forms/form/react.js +0 -1106
- package/patternfly-docs/generated/components/forms/form-select/react.js +0 -208
- package/patternfly-docs/generated/components/forms/radio/react.js +0 -212
- package/patternfly-docs/generated/components/forms/text-area/react.js +0 -160
- package/patternfly-docs/generated/components/forms/text-input/react.js +0 -216
- package/patternfly-docs/generated/components/helper-text/react-demos.js +0 -180
- package/patternfly-docs/generated/components/helper-text/react.js +0 -164
- package/patternfly-docs/generated/components/hero/react.js +0 -88
- package/patternfly-docs/generated/components/hint/react.js +0 -169
- package/patternfly-docs/generated/components/icon/react.js +0 -215
- package/patternfly-docs/generated/components/input-group/react.js +0 -182
- package/patternfly-docs/generated/components/jump-links/react-demos.js +0 -154
- package/patternfly-docs/generated/components/jump-links/react.js +0 -212
- package/patternfly-docs/generated/components/label/react-demos.js +0 -57
- package/patternfly-docs/generated/components/label/react.js +0 -417
- package/patternfly-docs/generated/components/list/react.js +0 -175
- package/patternfly-docs/generated/components/login-page/react.js +0 -587
- package/patternfly-docs/generated/components/masthead/react-demos.js +0 -79
- package/patternfly-docs/generated/components/masthead/react.js +0 -291
- package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +0 -769
- package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +0 -665
- package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +0 -187
- package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +0 -163
- package/patternfly-docs/generated/components/menus/dropdown/react.js +0 -998
- package/patternfly-docs/generated/components/menus/menu/react.js +0 -1540
- package/patternfly-docs/generated/components/menus/menu-toggle/react.js +0 -747
- package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +0 -508
- package/patternfly-docs/generated/components/menus/select/react-templates.js +0 -257
- package/patternfly-docs/generated/components/menus/select/react.js +0 -998
- package/patternfly-docs/generated/components/modal/react-deprecated.js +0 -554
- package/patternfly-docs/generated/components/modal/react.js +0 -597
- package/patternfly-docs/generated/components/navigation/react-demos.js +0 -356
- package/patternfly-docs/generated/components/navigation/react.js +0 -409
- package/patternfly-docs/generated/components/notification-badge/react.js +0 -196
- package/patternfly-docs/generated/components/notification-drawer/react-demos.js +0 -107
- package/patternfly-docs/generated/components/notification-drawer/react.js +0 -394
- package/patternfly-docs/generated/components/number-input/react.js +0 -210
- package/patternfly-docs/generated/components/overflow-menu/react.js +0 -274
- package/patternfly-docs/generated/components/page/react-demos.js +0 -149
- package/patternfly-docs/generated/components/page/react.js +0 -1352
- package/patternfly-docs/generated/components/pagination/react.js +0 -492
- package/patternfly-docs/generated/components/panel/react.js +0 -236
- package/patternfly-docs/generated/components/popover/react.js +0 -390
- package/patternfly-docs/generated/components/progress/react-demos.js +0 -59
- package/patternfly-docs/generated/components/progress/react.js +0 -283
- package/patternfly-docs/generated/components/progress-stepper/react-demos.js +0 -45
- package/patternfly-docs/generated/components/progress-stepper/react.js +0 -219
- package/patternfly-docs/generated/components/search-input/react-demos.js +0 -113
- package/patternfly-docs/generated/components/search-input/react.js +0 -263
- package/patternfly-docs/generated/components/sidebar/react.js +0 -236
- package/patternfly-docs/generated/components/simple-list/react.js +0 -200
- package/patternfly-docs/generated/components/skeleton/react-demos.js +0 -44
- package/patternfly-docs/generated/components/skeleton/react.js +0 -122
- package/patternfly-docs/generated/components/skip-to-content/react.js +0 -73
- package/patternfly-docs/generated/components/slider/react.js +0 -309
- package/patternfly-docs/generated/components/spinner/react.js +0 -111
- package/patternfly-docs/generated/components/switch/react.js +0 -163
- package/patternfly-docs/generated/components/table/react-demos.js +0 -355
- package/patternfly-docs/generated/components/table/react-deprecated.js +0 -1350
- package/patternfly-docs/generated/components/table/react.js +0 -3241
- package/patternfly-docs/generated/components/tabs/react-demos.js +0 -108
- package/patternfly-docs/generated/components/tabs/react.js +0 -1359
- package/patternfly-docs/generated/components/text-input-group/react-demos.js +0 -152
- package/patternfly-docs/generated/components/text-input-group/react.js +0 -278
- package/patternfly-docs/generated/components/tile/react-deprecated.js +0 -242
- package/patternfly-docs/generated/components/timestamp/react.js +0 -283
- package/patternfly-docs/generated/components/title/react.js +0 -94
- package/patternfly-docs/generated/components/toggle-group/react.js +0 -299
- package/patternfly-docs/generated/components/toolbar/react-demos.js +0 -66
- package/patternfly-docs/generated/components/toolbar/react.js +0 -932
- package/patternfly-docs/generated/components/tooltip/react.js +0 -241
- package/patternfly-docs/generated/components/tree-view/react.js +0 -429
- package/patternfly-docs/generated/components/truncate/react.js +0 -211
- package/patternfly-docs/generated/components/wizard/react-demos.js +0 -87
- package/patternfly-docs/generated/components/wizard/react-deprecated.js +0 -788
- package/patternfly-docs/generated/components/wizard/react.js +0 -986
- package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +0 -285
- package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +0 -70
- package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +0 -506
- package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +0 -94
- package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +0 -272
- package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +0 -87
- package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +0 -124
- package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +0 -112
- package/patternfly-docs/generated/index.js +0 -1769
- package/patternfly-docs/generated/patterns/card-view/react-demos.js +0 -78
- package/patternfly-docs/generated/patterns/filters/react-demos.js +0 -141
- package/patternfly-docs/generated/patterns/password-generator/react-demos.js +0 -51
- package/patternfly-docs/generated/patterns/password-strength/react-demos.js +0 -61
- package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +0 -124
- package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +0 -81
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
|
|
3
|
-
import { Fragment, useEffect, useRef, useState } from 'react';
|
|
4
|
-
import { Modal as ModalDeprecated, ModalVariant as ModalVariantDeprecated } from '@patternfly/react-core/deprecated';
|
|
5
|
-
import RhUiInformationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-information-fill-icon';
|
|
6
|
-
const pageData = {
|
|
7
|
-
"id": "Label",
|
|
8
|
-
"section": "components",
|
|
9
|
-
"subsection": "",
|
|
10
|
-
"deprecated": false,
|
|
11
|
-
"template": false,
|
|
12
|
-
"beta": false,
|
|
13
|
-
"demo": false,
|
|
14
|
-
"newImplementationLink": false,
|
|
15
|
-
"source": "react-demos",
|
|
16
|
-
"tabName": null,
|
|
17
|
-
"slug": "/components/label/react-demos",
|
|
18
|
-
"sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/demos/LabelGroupDemos.md",
|
|
19
|
-
"relPath": "packages/react-core/src/demos/LabelGroupDemos.md",
|
|
20
|
-
"examples": [
|
|
21
|
-
"Editable labels with add dropdown",
|
|
22
|
-
"Editable labels with add modal"
|
|
23
|
-
]
|
|
24
|
-
};
|
|
25
|
-
pageData.liveContext = {
|
|
26
|
-
Fragment,
|
|
27
|
-
useEffect,
|
|
28
|
-
useRef,
|
|
29
|
-
useState,
|
|
30
|
-
ModalDeprecated,
|
|
31
|
-
ModalVariantDeprecated,
|
|
32
|
-
RhUiInformationFillIcon
|
|
33
|
-
};
|
|
34
|
-
pageData.examples = {
|
|
35
|
-
'Editable labels with add dropdown': props =>
|
|
36
|
-
<Example {...pageData} {...props} {...{"code":"import { useEffect, useRef, useState } from 'react';\nimport { LabelGroup, Label, LabelColor, Menu, MenuContent, MenuList, MenuItem, Popper } from '@patternfly/react-core';\n\nexport const LabelGroupEditableAddDropdown: React.FunctionComponent = () => {\n const toggleRef = useRef<HTMLDivElement>(undefined);\n const menuRef = useRef<HTMLDivElement>(undefined);\n const containerRef = useRef<HTMLDivElement>(undefined);\n\n const [idIndex, setIdIndex] = useState<number>(3);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [labels, setLabels] = useState<any>([\n { name: 'Label 1', id: 0 },\n { name: 'Label 2', id: 1 },\n {\n name: 'Label 3',\n props: {\n isEditable: true,\n editableProps: {\n 'aria-label': 'Editable label with text Label 3'\n }\n },\n id: 2\n }\n ]);\n\n const onClose = (labelId: string) => {\n setLabels(labels.filter((l: any) => l.id !== labelId));\n };\n\n const onEdit = (nextText: string, index: number) => {\n const copy = [...labels];\n const updatedProps = {\n ...labels[index].props,\n editableProps: { 'aria-label': `Editable label with text ${nextText}` }\n };\n\n copy[index] = { name: nextText, props: updatedProps, id: labels[index].id };\n setLabels(copy);\n };\n\n const onAdd = (labelText: string) => {\n setLabels([\n {\n name: labelText,\n id: idIndex\n },\n ...labels\n ]);\n setIdIndex(idIndex + 1);\n setIsOpen(!isOpen);\n };\n\n const handleMenuKeys = (event: KeyboardEvent) => {\n if (isOpen && menuRef.current.contains(event.target as Node)) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n setIsOpen(!isOpen);\n toggleRef.current.focus();\n }\n }\n };\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n isOpen &&\n !(menuRef.current.contains(event.target as Node) || toggleRef.current.contains(event.target as Node))\n ) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', handleMenuKeys);\n window.addEventListener('click', handleClickOutside);\n return () => {\n window.removeEventListener('keydown', handleMenuKeys);\n window.removeEventListener('click', handleClickOutside);\n };\n }, [isOpen, menuRef]);\n\n const onToggleClick = () => {\n setTimeout(() => {\n if (menuRef.current) {\n const firstElement = menuRef.current.querySelector('li > button:not(:disabled)');\n firstElement && (firstElement as HTMLElement).focus();\n }\n }, 0);\n setIsOpen(!isOpen);\n };\n\n const menu = (\n <Menu ref={menuRef} onSelect={(_ev, itemId) => onAdd(itemId.toString())}>\n <MenuContent>\n <MenuList>\n <MenuItem itemId=\"Label text 1\">Label text 1</MenuItem>\n <MenuItem itemId=\"Label text 2\">Label text 2</MenuItem>\n <MenuItem itemId=\"Label text 3\">Label text 3</MenuItem>\n <MenuItem itemId=\"Label text 4\">Label text 4</MenuItem>\n </MenuList>\n </MenuContent>\n </Menu>\n );\n\n const toggle = (\n <div ref={toggleRef}>\n <Label variant=\"overflow\" onClick={onToggleClick}>\n Add label\n </Label>\n </div>\n );\n\n return (\n <div ref={containerRef}>\n <LabelGroup\n categoryName=\"Label group 1\"\n numLabels={5}\n isEditable\n addLabelControl={\n <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />\n }\n >\n {labels.map((label, index) => (\n <Label\n key={label.id}\n id={label.id}\n color={LabelColor.blue}\n onClose={() => onClose(label.id)}\n onEditCancel={(_event, prevText) => onEdit(prevText, index)}\n onEditComplete={(_event, newText) => onEdit(newText, index)}\n {...label.props}\n >\n {label.name}\n </Label>\n ))}\n </LabelGroup>\n </div>\n );\n};\n","title":"Editable labels with add dropdown","lang":"ts","className":""}}>
|
|
37
|
-
|
|
38
|
-
</Example>,
|
|
39
|
-
'Editable labels with add modal': props =>
|
|
40
|
-
<Example {...pageData} {...props} {...{"code":"import { useEffect, useRef, useState } from 'react';\nimport {\n LabelGroup,\n Label,\n LabelColor,\n Button,\n Form,\n FormGroup,\n TextInput,\n Menu,\n MenuContent,\n MenuList,\n MenuItem,\n MenuToggle,\n Radio,\n Popper\n} from '@patternfly/react-core';\nimport { Modal as ModalDeprecated, ModalVariant as ModalVariantDeprecated } from '@patternfly/react-core/deprecated';\nimport RhUiInformationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-information-fill-icon';\n\nexport const LabelGroupEditableAddModal: React.FunctionComponent = () => {\n const [isModalOpen, setModalOpen] = useState<boolean>(false);\n const [idIndex, setIdIndex] = useState<number>(7);\n const [labelText, setLabelText] = useState<string>('');\n const [color, setColor] = useState<string>();\n const [icon, setIcon] = useState<any>();\n const [labelType, setLabelType] = useState<string>('filled');\n const [isClosable, setIsCloseable] = useState<boolean>(false);\n const [isEditable, setIsEditable] = useState<boolean>(false);\n const labelInputRef = useRef(null);\n\n const [isColorOpen, setIsColorOpen] = useState<boolean>(false);\n const colorMenuRef = useRef<HTMLDivElement>(null);\n const colorContainerRef = useRef<HTMLDivElement>(null);\n const colorToggleRef = useRef<HTMLButtonElement>(null);\n\n const [isIconOpen, setIsIconOpen] = useState<boolean>(false);\n const iconMenuRef = useRef<HTMLDivElement>(null);\n const iconContainerRef = useRef<HTMLDivElement>(null);\n const iconToggleRef = useRef<HTMLButtonElement>(null);\n\n const [labels, setLabels] = useState<any>([\n { name: 'Label 1', id: 4 },\n { name: 'Label 2', id: 5 },\n {\n name: 'Label 3',\n props: {\n isEditable: true,\n editableProps: {\n 'aria-label': 'Editable label with text Label 3'\n }\n },\n id: 6\n }\n ]);\n\n const onClose = (labelId: string) => {\n setLabels(labels.filter((l: any) => l.id !== labelId));\n };\n\n const onEdit = (nextText: string, index: number) => {\n const copy = [...labels];\n const updatedProps = {\n ...labels[index].props,\n editableProps: { 'aria-label': `Editable label with text ${nextText}` }\n };\n\n copy[index] = { name: nextText, props: updatedProps, id: labels[index].id };\n setLabels(copy);\n };\n\n const onAdd = () => {\n let labelIcon: any;\n if (icon === 'Info circle icon') {\n labelIcon = <RhUiInformationFillIcon />;\n }\n\n setLabels([\n {\n name: labelText || 'New Label',\n props: {\n color: color ? color.toLowerCase() : 'gray',\n icon: labelIcon,\n variant: labelType || 'filled',\n ...(!isClosable && isClosable !== undefined && { onClose: null }),\n isEditable: isEditable !== undefined ? isEditable : true,\n ...(isEditable && {\n editableProps: {\n 'aria-label': `Editable label with text ${labelText || 'New Label'}`\n }\n })\n },\n id: idIndex\n },\n ...labels\n ]);\n setModalOpen(!isModalOpen);\n setIdIndex(idIndex + 1);\n setLabelText('');\n setColor('');\n setIcon(null);\n setLabelType('filled');\n setIsCloseable(false);\n setIsEditable(false);\n };\n\n const handleModalToggle = (_event: KeyboardEvent | React.MouseEvent) => {\n setModalOpen(!isModalOpen);\n };\n\n useEffect(() => {\n if (isModalOpen && labelInputRef && labelInputRef.current) {\n (labelInputRef.current as HTMLInputElement).focus();\n }\n }, [isModalOpen]);\n\n const handleMenuKeys = (event: KeyboardEvent) => {\n if (isColorOpen && colorMenuRef?.current?.contains(event.target as Node)) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n setIsColorOpen(!isColorOpen);\n colorToggleRef?.current?.focus();\n }\n }\n if (isIconOpen && iconMenuRef?.current?.contains(event.target as Node)) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n setIsIconOpen(!isIconOpen);\n iconToggleRef?.current?.focus();\n }\n }\n };\n\n const handleClickOutside = (event: MouseEvent) => {\n if (isColorOpen && !colorMenuRef?.current?.contains(event.target as Node)) {\n setIsColorOpen(false);\n }\n if (isIconOpen && !iconMenuRef?.current?.contains(event.target as Node)) {\n setIsIconOpen(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', handleMenuKeys);\n window.addEventListener('click', handleClickOutside);\n return () => {\n window.removeEventListener('keydown', handleMenuKeys);\n window.removeEventListener('click', handleClickOutside);\n };\n }, [isColorOpen, isIconOpen, colorMenuRef, iconMenuRef]);\n\n const onColorToggleClick = (ev: React.MouseEvent) => {\n ev.stopPropagation(); // Stop handleClickOutside from handling\n setTimeout(() => {\n if (colorMenuRef.current) {\n const firstElement = colorMenuRef.current.querySelector('li > button:not(:disabled)');\n firstElement && (firstElement as HTMLElement).focus();\n }\n }, 0);\n setIsColorOpen(!isColorOpen);\n };\n\n const colorToggle = (\n <MenuToggle ref={colorToggleRef} onClick={onColorToggleClick} isExpanded={isColorOpen}>\n {color || 'Select'}\n </MenuToggle>\n );\n\n const colorMenu = (\n <Menu\n ref={colorMenuRef}\n activeItemId={color}\n onSelect={(_ev, itemId) => {\n setColor(itemId?.toString());\n colorToggleRef?.current?.focus();\n setIsColorOpen(false);\n }}\n selected={color}\n >\n <MenuContent>\n <MenuList>\n <MenuItem itemId=\"Gray\">Gray</MenuItem>\n <MenuItem itemId=\"Blue\">Blue</MenuItem>\n <MenuItem itemId=\"Green\">Green</MenuItem>\n <MenuItem itemId=\"Orange\">Orange</MenuItem>\n <MenuItem itemId=\"Red\">Red</MenuItem>\n <MenuItem itemId=\"Purple\">Purple</MenuItem>\n <MenuItem itemId=\"Teal\">Teal</MenuItem>\n </MenuList>\n </MenuContent>\n </Menu>\n );\n\n const onIconToggleClick = (ev: React.MouseEvent) => {\n ev.stopPropagation(); // Stop handleClickOutside from handling\n setTimeout(() => {\n if (iconMenuRef.current) {\n const firstElement = iconMenuRef.current.querySelector('li > button:not(:disabled)');\n firstElement && (firstElement as HTMLElement).focus();\n }\n }, 0);\n setIsIconOpen(!isIconOpen);\n };\n\n const iconToggle = (\n <MenuToggle ref={iconToggleRef} onClick={onIconToggleClick} isExpanded={isIconOpen} icon={icon}>\n {icon ? '' : 'Select'}\n </MenuToggle>\n );\n\n const iconMenu = (\n <Menu\n ref={iconMenuRef}\n activeItemId={icon}\n onSelect={(_ev, itemId) => {\n setIcon(itemId?.toString());\n iconToggleRef?.current?.focus();\n setIsIconOpen(false);\n }}\n selected={icon}\n >\n <MenuContent>\n <MenuList>\n <MenuItem itemId=\"No icon\">No icon</MenuItem>\n <MenuItem itemId=\"Info circle icon\">\n <RhUiInformationFillIcon />\n Info circle icon\n </MenuItem>\n </MenuList>\n </MenuContent>\n </Menu>\n );\n\n return (\n <div>\n <LabelGroup\n categoryName=\"Label group 1\"\n numLabels={5}\n isEditable\n addLabelControl={\n <Label variant=\"overflow\" onClick={handleModalToggle}>\n Add label\n </Label>\n }\n >\n {labels.map((label: { name: string; id: string; props: any }, index: number) => (\n <Label\n key={label.id}\n id={label.id}\n color={LabelColor.blue}\n onClose={() => onClose(label.id)}\n onEditCancel={(_event, prevText) => onEdit(prevText, index)}\n onEditComplete={(_event, newText) => onEdit(newText, index)}\n {...label.props}\n >\n {label.name}\n </Label>\n ))}\n </LabelGroup>\n <ModalDeprecated\n variant={ModalVariantDeprecated.small}\n title=\"Add Label\"\n isOpen={isModalOpen}\n onClose={handleModalToggle}\n actions={[\n <Button key=\"create\" variant=\"primary\" form=\"create-label-form\" onClick={onAdd}>\n Save\n </Button>,\n <Button key=\"cancel\" variant=\"link\" onClick={handleModalToggle}>\n Cancel\n </Button>\n ]}\n >\n <Form id=\"create-label-form\">\n <FormGroup label=\"Label text\" fieldId=\"create-label-form-label-text\">\n <TextInput\n type=\"text\"\n id=\"create-label-form-label-text\"\n name=\"create-label-form-label-text\"\n value={labelText}\n onChange={(_event: React.FormEvent<HTMLInputElement>, value: string) => setLabelText(value)}\n ref={labelInputRef}\n />\n </FormGroup>\n <FormGroup label=\"Color\" fieldId=\"create-label-form-color\">\n <div ref={colorContainerRef}>\n <Popper\n trigger={colorToggle}\n triggerRef={colorToggleRef}\n popper={colorMenu}\n popperRef={colorMenuRef}\n appendTo={colorContainerRef.current as HTMLElement}\n isVisible={isColorOpen}\n />\n </div>\n </FormGroup>\n <FormGroup label=\"Icon\" fieldId=\"create-label-form-icon\">\n <div ref={iconContainerRef}>\n <Popper\n trigger={iconToggle}\n triggerRef={iconToggleRef}\n popper={iconMenu}\n popperRef={iconMenuRef}\n appendTo={iconContainerRef.current as HTMLElement}\n isVisible={isIconOpen}\n />\n </div>\n </FormGroup>\n <FormGroup label=\"Label type\" fieldId=\"create-label-form-label-type\">\n <Radio\n isChecked={labelType === 'filled'}\n name=\"filled-label\"\n onChange={() => setLabelType('filled')}\n label=\"Filled\"\n id=\"radio-filled\"\n value=\"check1\"\n />\n <Radio\n isChecked={labelType === 'outline'}\n name=\"outline-label\"\n onChange={() => setLabelType('outline')}\n label=\"Outlined\"\n id=\"radio-outline\"\n value=\"check2\"\n />\n </FormGroup>\n <FormGroup label=\"Dismissable\" fieldId=\"create-label-form-dismissable\">\n <Radio\n isChecked={isClosable === true}\n name=\"closeable-label\"\n onChange={() => setIsCloseable(true)}\n label=\"Yes\"\n id=\"radio-closable\"\n value=\"check1\"\n />\n <Radio\n isChecked={isClosable === false}\n name=\"not-closeable-label\"\n onChange={() => setIsCloseable(false)}\n label=\"No\"\n id=\"radio-not-closable\"\n value=\"check2\"\n />\n </FormGroup>\n <FormGroup label=\"Editable\" fieldId=\"create-label-form-editable\">\n <Radio\n isChecked={isEditable === true}\n name=\"editable-label\"\n onChange={() => setIsEditable(true)}\n label=\"Yes\"\n id=\"radio-editable\"\n value=\"check3\"\n />\n <Radio\n isChecked={isEditable === false}\n name=\"not-editable-label\"\n onChange={() => setIsEditable(false)}\n label=\"No\"\n id=\"radio-not-editable\"\n value=\"check4\"\n />\n </FormGroup>\n </Form>\n </ModalDeprecated>\n </div>\n );\n};\n","title":"Editable labels with add modal","lang":"ts","className":""}}>
|
|
41
|
-
|
|
42
|
-
</Example>
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const Component = () => (
|
|
46
|
-
<React.Fragment>
|
|
47
|
-
<AutoLinkHeader {...{"id":"demos","headingLevel":"h2","className":"ws-title ws-h2"}}>
|
|
48
|
-
{`Demos`}
|
|
49
|
-
</AutoLinkHeader>
|
|
50
|
-
{React.createElement(pageData.examples["Editable labels with add dropdown"])}
|
|
51
|
-
{React.createElement(pageData.examples["Editable labels with add modal"])}
|
|
52
|
-
</React.Fragment>
|
|
53
|
-
);
|
|
54
|
-
Component.displayName = 'ComponentsLabelReactDemosDocs';
|
|
55
|
-
Component.pageData = pageData;
|
|
56
|
-
|
|
57
|
-
export default Component;
|