@patternfly/react-core 6.0.0-alpha.33 → 6.0.0-alpha.35

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.
Files changed (239) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/DataList/package.json +1 -1
  23. package/dist/dynamic/components/DatePicker/package.json +1 -1
  24. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  25. package/dist/dynamic/components/Divider/package.json +1 -1
  26. package/dist/dynamic/components/DragDrop/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/Text/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/Tile/package.json +1 -1
  75. package/dist/dynamic/components/TimePicker/package.json +1 -1
  76. package/dist/dynamic/components/Timestamp/package.json +1 -1
  77. package/dist/dynamic/components/Title/package.json +1 -1
  78. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  79. package/dist/dynamic/components/Toolbar/package.json +1 -1
  80. package/dist/dynamic/components/Tooltip/package.json +1 -1
  81. package/dist/dynamic/components/TreeView/package.json +1 -1
  82. package/dist/dynamic/components/Truncate/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Chip/package.json +1 -0
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/Modal/package.json +1 -1
  119. package/dist/dynamic/next/components/package.json +1 -1
  120. package/dist/dynamic/styles/package.json +1 -1
  121. package/dist/esm/components/Label/Label.d.ts.map +1 -1
  122. package/dist/esm/components/Label/Label.js +8 -1
  123. package/dist/esm/components/Label/Label.js.map +1 -1
  124. package/dist/esm/components/LoginPage/LoginMainFooterLinksItem.d.ts.map +1 -1
  125. package/dist/esm/components/LoginPage/LoginMainFooterLinksItem.js +1 -1
  126. package/dist/esm/components/LoginPage/LoginMainFooterLinksItem.js.map +1 -1
  127. package/dist/esm/components/Toolbar/ToolbarFilter.d.ts.map +1 -1
  128. package/dist/esm/components/Toolbar/ToolbarFilter.js +2 -3
  129. package/dist/esm/components/Toolbar/ToolbarFilter.js.map +1 -1
  130. package/dist/esm/components/index.d.ts +0 -1
  131. package/dist/esm/components/index.d.ts.map +1 -1
  132. package/dist/esm/components/index.js +0 -1
  133. package/dist/esm/components/index.js.map +1 -1
  134. package/dist/esm/{components → deprecated/components}/Chip/Chip.d.ts +6 -18
  135. package/dist/esm/deprecated/components/Chip/Chip.d.ts.map +1 -0
  136. package/dist/esm/deprecated/components/Chip/Chip.js +35 -0
  137. package/dist/esm/deprecated/components/Chip/Chip.js.map +1 -0
  138. package/dist/esm/{components → deprecated/components}/Chip/ChipGroup.d.ts +7 -14
  139. package/dist/esm/deprecated/components/Chip/ChipGroup.d.ts.map +1 -0
  140. package/dist/esm/deprecated/components/Chip/ChipGroup.js +29 -0
  141. package/dist/esm/deprecated/components/Chip/ChipGroup.js.map +1 -0
  142. package/dist/esm/deprecated/components/Chip/index.d.ts.map +1 -0
  143. package/dist/esm/deprecated/components/Chip/index.js.map +1 -0
  144. package/dist/esm/deprecated/components/Select/Select.d.ts +1 -1
  145. package/dist/esm/deprecated/components/Select/Select.d.ts.map +1 -1
  146. package/dist/esm/deprecated/components/Select/Select.js +2 -2
  147. package/dist/esm/deprecated/components/Select/Select.js.map +1 -1
  148. package/dist/esm/deprecated/components/index.d.ts +1 -0
  149. package/dist/esm/deprecated/components/index.d.ts.map +1 -1
  150. package/dist/esm/deprecated/components/index.js +1 -0
  151. package/dist/esm/deprecated/components/index.js.map +1 -1
  152. package/dist/js/components/Label/Label.d.ts.map +1 -1
  153. package/dist/js/components/Label/Label.js +8 -1
  154. package/dist/js/components/Label/Label.js.map +1 -1
  155. package/dist/js/components/LoginPage/LoginMainFooterLinksItem.d.ts.map +1 -1
  156. package/dist/js/components/LoginPage/LoginMainFooterLinksItem.js +1 -1
  157. package/dist/js/components/LoginPage/LoginMainFooterLinksItem.js.map +1 -1
  158. package/dist/js/components/Toolbar/ToolbarFilter.d.ts.map +1 -1
  159. package/dist/js/components/Toolbar/ToolbarFilter.js +2 -3
  160. package/dist/js/components/Toolbar/ToolbarFilter.js.map +1 -1
  161. package/dist/js/components/index.d.ts +0 -1
  162. package/dist/js/components/index.d.ts.map +1 -1
  163. package/dist/js/components/index.js +0 -1
  164. package/dist/js/components/index.js.map +1 -1
  165. package/dist/js/{components → deprecated/components}/Chip/Chip.d.ts +6 -18
  166. package/dist/js/deprecated/components/Chip/Chip.d.ts.map +1 -0
  167. package/dist/js/deprecated/components/Chip/Chip.js +38 -0
  168. package/dist/js/deprecated/components/Chip/Chip.js.map +1 -0
  169. package/dist/js/{components → deprecated/components}/Chip/ChipGroup.d.ts +7 -14
  170. package/dist/js/deprecated/components/Chip/ChipGroup.d.ts.map +1 -0
  171. package/dist/js/deprecated/components/Chip/ChipGroup.js +32 -0
  172. package/dist/js/deprecated/components/Chip/ChipGroup.js.map +1 -0
  173. package/dist/js/deprecated/components/Chip/index.d.ts.map +1 -0
  174. package/dist/js/deprecated/components/Chip/index.js.map +1 -0
  175. package/dist/js/deprecated/components/Select/Select.d.ts +1 -1
  176. package/dist/js/deprecated/components/Select/Select.d.ts.map +1 -1
  177. package/dist/js/deprecated/components/Select/Select.js +2 -2
  178. package/dist/js/deprecated/components/Select/Select.js.map +1 -1
  179. package/dist/js/deprecated/components/index.d.ts +1 -0
  180. package/dist/js/deprecated/components/index.d.ts.map +1 -1
  181. package/dist/js/deprecated/components/index.js +1 -0
  182. package/dist/js/deprecated/components/index.js.map +1 -1
  183. package/dist/styles/base-no-reset.css +152 -31
  184. package/dist/styles/base.css +152 -31
  185. package/dist/umd/react-core.min.js +2 -2
  186. package/helpers/package.json +1 -1
  187. package/layouts/package.json +1 -1
  188. package/next/package.json +1 -1
  189. package/package.json +6 -6
  190. package/src/components/Label/Label.tsx +8 -1
  191. package/src/components/LoginPage/LoginMainFooterLinksItem.tsx +1 -6
  192. package/src/components/LoginPage/__tests__/__snapshots__/LoginMainFooterLinksItem.test.tsx.snap +0 -3
  193. package/src/components/Select/examples/SelectMultiTypeahead.tsx +8 -7
  194. package/src/components/Select/examples/SelectMultiTypeaheadCreatable.tsx +8 -7
  195. package/src/components/TextInputGroup/examples/TextInputGroupFilters.tsx +12 -6
  196. package/src/components/Toolbar/ToolbarFilter.tsx +7 -8
  197. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +29 -44
  198. package/src/components/index.ts +0 -1
  199. package/src/demos/examples/TextInputGroup/AttributeValueFiltering.tsx +7 -7
  200. package/src/demos/examples/TextInputGroup/AutoCompleteSearch.tsx +7 -7
  201. package/src/deprecated/components/Chip/Chip.tsx +104 -0
  202. package/src/deprecated/components/Chip/ChipGroup.tsx +111 -0
  203. package/src/{components → deprecated/components}/Chip/__tests__/Chip.test.tsx +25 -60
  204. package/src/{components → deprecated/components}/Chip/__tests__/ChipGroup.test.tsx +11 -28
  205. package/src/{components → deprecated/components}/Chip/__tests__/__snapshots__/Chip.test.tsx.snap +11 -12
  206. package/src/{components → deprecated/components}/Chip/__tests__/__snapshots__/ChipGroup.test.tsx.snap +6 -8
  207. package/src/{components → deprecated/components}/Chip/examples/Chip.md +6 -0
  208. package/src/{components → deprecated/components}/Chip/examples/ChipDefault.tsx +2 -1
  209. package/src/{components → deprecated/components}/Chip/examples/ChipGroupInline.tsx +1 -1
  210. package/src/{components → deprecated/components}/Chip/examples/ChipGroupRemovableCategories.tsx +1 -1
  211. package/src/{components → deprecated/components}/Chip/examples/ChipGroupWithCategories.tsx +1 -1
  212. package/src/deprecated/components/Select/Select.tsx +2 -2
  213. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +25 -31
  214. package/src/deprecated/components/Select/examples/Select.md +1 -1
  215. package/src/deprecated/components/index.ts +1 -0
  216. package/dist/dynamic/components/Chip/package.json +0 -1
  217. package/dist/esm/components/Chip/Chip.d.ts.map +0 -1
  218. package/dist/esm/components/Chip/Chip.js +0 -95
  219. package/dist/esm/components/Chip/Chip.js.map +0 -1
  220. package/dist/esm/components/Chip/ChipGroup.d.ts.map +0 -1
  221. package/dist/esm/components/Chip/ChipGroup.js +0 -87
  222. package/dist/esm/components/Chip/ChipGroup.js.map +0 -1
  223. package/dist/esm/components/Chip/index.d.ts.map +0 -1
  224. package/dist/esm/components/Chip/index.js.map +0 -1
  225. package/dist/js/components/Chip/Chip.d.ts.map +0 -1
  226. package/dist/js/components/Chip/Chip.js +0 -98
  227. package/dist/js/components/Chip/Chip.js.map +0 -1
  228. package/dist/js/components/Chip/ChipGroup.d.ts.map +0 -1
  229. package/dist/js/components/Chip/ChipGroup.js +0 -90
  230. package/dist/js/components/Chip/ChipGroup.js.map +0 -1
  231. package/dist/js/components/Chip/index.d.ts.map +0 -1
  232. package/dist/js/components/Chip/index.js.map +0 -1
  233. package/src/components/Chip/Chip.tsx +0 -216
  234. package/src/components/Chip/ChipGroup.tsx +0 -214
  235. /package/dist/esm/{components → deprecated/components}/Chip/index.d.ts +0 -0
  236. /package/dist/esm/{components → deprecated/components}/Chip/index.js +0 -0
  237. /package/dist/js/{components → deprecated/components}/Chip/index.d.ts +0 -0
  238. /package/dist/js/{components → deprecated/components}/Chip/index.js +0 -0
  239. /package/src/{components → deprecated/components}/Chip/index.ts +0 -0
@@ -1,216 +0,0 @@
1
- import * as React from 'react';
2
- import { css } from '@patternfly/react-styles';
3
- import { Button } from '../Button';
4
- import { Tooltip, TooltipPosition } from '../Tooltip';
5
- import TimesIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';
6
- import styles from '@patternfly/react-styles/css/components/Chip/chip';
7
- import { GenerateId } from '../../helpers/GenerateId/GenerateId';
8
- import { getOUIAProps, OUIAProps, getDefaultOUIAId } from '../../helpers';
9
- import cssChipTextMaxWidth from '@patternfly/react-tokens/dist/esm/c_chip__text_MaxWidth';
10
-
11
- export interface ChipProps extends React.HTMLProps<HTMLDivElement>, OUIAProps {
12
- /** Badge to add to the chip. The badge will be rendered after the chip text. */
13
- badge?: React.ReactNode;
14
- /** Content rendered inside the chip text */
15
- children?: React.ReactNode;
16
- /** Aria Label for close button */
17
- closeBtnAriaLabel?: string;
18
- /** Additional classes added to the chip item */
19
- className?: string;
20
- /** Flag indicating if the chip is an overflow chip */
21
- isOverflowChip?: boolean;
22
- /** Flag indicating if chip is read only */
23
- isReadOnly?: boolean;
24
- /** Function that is called when clicking on the chip close button */
25
- onClick?: (event: React.MouseEvent) => void;
26
- /** Component that will be used for chip. It is recommended that <button> or <li> are used when the chip is an overflow chip. */
27
- component?: React.ReactNode;
28
- /** Position of the tooltip which is displayed if text is longer */
29
- tooltipPosition?:
30
- | TooltipPosition
31
- | 'auto'
32
- | 'top'
33
- | 'bottom'
34
- | 'left'
35
- | 'right'
36
- | 'top-start'
37
- | 'top-end'
38
- | 'bottom-start'
39
- | 'bottom-end'
40
- | 'left-start'
41
- | 'left-end'
42
- | 'right-start'
43
- | 'right-end';
44
-
45
- /** Css property expressed in percentage or any css unit that overrides the default value of the max-width of the chip's text */
46
- textMaxWidth?: string;
47
- /** Value to overwrite the randomly generated data-ouia-component-id.*/
48
- ouiaId?: number | string;
49
- }
50
-
51
- interface ChipState {
52
- isTooltipVisible: boolean;
53
- ouiaStateId: string;
54
- }
55
-
56
- class Chip extends React.Component<ChipProps, ChipState> {
57
- static displayName = 'Chip';
58
- constructor(props: ChipProps) {
59
- super(props);
60
- this.state = {
61
- isTooltipVisible: false,
62
- ouiaStateId: getDefaultOUIAId(Chip.displayName)
63
- };
64
- }
65
- span = React.createRef<HTMLSpanElement>();
66
-
67
- static defaultProps: ChipProps = {
68
- closeBtnAriaLabel: 'close',
69
- className: '',
70
- isOverflowChip: false,
71
- isReadOnly: false,
72
- tooltipPosition: 'top' as 'auto' | 'top' | 'bottom' | 'left' | 'right',
73
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
74
- onClick: (_e: React.MouseEvent) => undefined as any,
75
- component: 'div' as React.ReactNode
76
- };
77
-
78
- componentDidMount() {
79
- this.setState({
80
- isTooltipVisible: Boolean(this.span.current && this.span.current.offsetWidth < this.span.current.scrollWidth)
81
- });
82
- }
83
-
84
- componentDidUpdate(_prevProps: ChipProps, prevState: ChipState) {
85
- const nextIsTooltipVisible = Boolean(
86
- this.span.current && this.span.current.offsetWidth < this.span.current.scrollWidth
87
- );
88
- if (prevState.isTooltipVisible !== nextIsTooltipVisible) {
89
- this.setState({
90
- isTooltipVisible: nextIsTooltipVisible
91
- });
92
- }
93
- }
94
-
95
- setChipStyle = () => ({
96
- [cssChipTextMaxWidth.name]: this.props.textMaxWidth
97
- });
98
-
99
- renderOverflowChip = () => {
100
- const {
101
- badge,
102
- children,
103
- className,
104
- onClick,
105
- ouiaId,
106
- textMaxWidth,
107
- style,
108
- component,
109
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
110
- tooltipPosition,
111
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
112
- isOverflowChip,
113
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
- closeBtnAriaLabel,
115
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
116
- isReadOnly,
117
- ...props
118
- } = this.props;
119
- const Component = component as any;
120
- return (
121
- <Component
122
- onClick={onClick}
123
- {...(textMaxWidth && {
124
- style: this.setChipStyle(),
125
- ...style
126
- })}
127
- className={css(styles.chip, styles.modifiers.overflow, className)}
128
- {...(component === 'button' ? { type: 'button' } : {})}
129
- {...getOUIAProps('OverflowChip', ouiaId !== undefined ? ouiaId : this.state.ouiaStateId)}
130
- {...props}
131
- >
132
- <span className={css(styles.chipContent)}>
133
- <span className={css(styles.chipText)}>{children}</span>
134
- {badge && badge}
135
- </span>
136
- </Component>
137
- );
138
- };
139
-
140
- renderInnerChip(id: string) {
141
- const {
142
- badge,
143
- children,
144
- className,
145
- onClick,
146
- closeBtnAriaLabel,
147
- isReadOnly,
148
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
149
- isOverflowChip,
150
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
151
- tooltipPosition,
152
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
153
- id: idProp,
154
- component,
155
- ouiaId,
156
- textMaxWidth,
157
- ...props
158
- } = this.props;
159
- const Component = component as any;
160
- return (
161
- <Component
162
- {...(textMaxWidth && {
163
- style: this.setChipStyle()
164
- })}
165
- className={css(styles.chip, className)}
166
- {...(this.state.isTooltipVisible && { tabIndex: 0 })}
167
- {...getOUIAProps(Chip.displayName, ouiaId !== undefined ? ouiaId : this.state.ouiaStateId)}
168
- {...props}
169
- >
170
- <span className={css(styles.chipContent)}>
171
- <span ref={this.span} className={css(styles.chipText)} id={id}>
172
- {children}
173
- </span>
174
- {badge && badge}
175
- </span>
176
- {!isReadOnly && (
177
- <span className={css(styles.chipActions)}>
178
- <Button
179
- onClick={onClick}
180
- variant="plain"
181
- aria-label={closeBtnAriaLabel}
182
- id={`remove_${id}`}
183
- aria-labelledby={`remove_${id} ${id}`}
184
- ouiaId={ouiaId || closeBtnAriaLabel}
185
- >
186
- <TimesIcon aria-hidden="true" />
187
- </Button>
188
- </span>
189
- )}
190
- </Component>
191
- );
192
- }
193
-
194
- renderChip = (randomId: string) => {
195
- const { children, tooltipPosition } = this.props;
196
- if (this.state.isTooltipVisible) {
197
- return (
198
- <Tooltip position={tooltipPosition} content={children}>
199
- {this.renderInnerChip(randomId)}
200
- </Tooltip>
201
- );
202
- }
203
- return this.renderInnerChip(randomId);
204
- };
205
-
206
- render() {
207
- const { isOverflowChip } = this.props;
208
- return (
209
- <GenerateId>
210
- {(randomId) => (isOverflowChip ? this.renderOverflowChip() : this.renderChip(this.props.id || randomId))}
211
- </GenerateId>
212
- );
213
- }
214
- }
215
-
216
- export { Chip };
@@ -1,214 +0,0 @@
1
- import * as React from 'react';
2
- import styles from '@patternfly/react-styles/css/components/Chip/chip-group';
3
- import { css } from '@patternfly/react-styles';
4
- import { Button } from '../Button';
5
- import { Chip } from './Chip';
6
- import { Tooltip, TooltipPosition } from '../Tooltip';
7
- import TimesCircleIcon from '@patternfly/react-icons/dist/esm/icons/times-circle-icon';
8
- import { fillTemplate } from '../../helpers';
9
- import { GenerateId } from '../../helpers/GenerateId/GenerateId';
10
- import { getOUIAProps, OUIAProps } from '../../helpers';
11
-
12
- export interface ChipGroupProps extends React.HTMLProps<HTMLUListElement>, OUIAProps {
13
- /** Content rendered inside the chip group. Should be <Chip> elements. */
14
- children?: React.ReactNode;
15
- /** Additional classes added to the chip item */
16
- className?: string;
17
- /** Flag for having the chip group default to expanded */
18
- defaultIsOpen?: boolean;
19
- /** Customizable "Show Less" text string */
20
- expandedText?: string;
21
- /** Customizeable template string. Use variable "${remaining}" for the overflow chip count. */
22
- collapsedText?: string;
23
- /** Category name text for the chip group category. If this prop is supplied the chip group with have a label and category styling applied */
24
- categoryName?: string;
25
- /** Aria label for chip group that does not have a category name */
26
- 'aria-label'?: string;
27
- /** Set number of chips to show before overflow */
28
- numChips?: number;
29
- /** Flag if chip group can be closed*/
30
- isClosable?: boolean;
31
- /** Aria label for close button */
32
- closeBtnAriaLabel?: string;
33
- /** Function that is called when clicking on the chip group close button */
34
- onClick?: (event: React.MouseEvent) => void;
35
- /** Function that is called when clicking on the overflow (expand/collapse) chip button */
36
- onOverflowChipClick?: (event: React.MouseEvent) => void;
37
- /** Position of the tooltip which is displayed if the category name text is longer */
38
- tooltipPosition?:
39
- | TooltipPosition
40
- | 'auto'
41
- | 'top'
42
- | 'bottom'
43
- | 'left'
44
- | 'right'
45
- | 'top-start'
46
- | 'top-end'
47
- | 'bottom-start'
48
- | 'bottom-end'
49
- | 'left-start'
50
- | 'left-end'
51
- | 'right-start'
52
- | 'right-end';
53
- /** Value to overwrite the randomly generated data-ouia-component-id.*/
54
- ouiaId?: number | string;
55
- }
56
-
57
- interface ChipGroupState {
58
- isOpen: boolean;
59
- isTooltipVisible: boolean;
60
- }
61
-
62
- class ChipGroup extends React.Component<ChipGroupProps, ChipGroupState> {
63
- static displayName = 'ChipGroup';
64
- constructor(props: ChipGroupProps) {
65
- super(props);
66
- this.state = {
67
- isOpen: this.props.defaultIsOpen,
68
- isTooltipVisible: false
69
- };
70
- }
71
- private headingRef = React.createRef<HTMLSpanElement>();
72
-
73
- static defaultProps: ChipGroupProps = {
74
- expandedText: 'Show Less',
75
- collapsedText: '${remaining} more',
76
- categoryName: '',
77
- defaultIsOpen: false,
78
- numChips: 3,
79
- isClosable: false,
80
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
81
- onClick: (_e: React.MouseEvent) => undefined as any,
82
- onOverflowChipClick: (_e: React.MouseEvent) => undefined as any,
83
- closeBtnAriaLabel: 'Close chip group',
84
- tooltipPosition: 'top',
85
- 'aria-label': 'Chip group category'
86
- };
87
-
88
- componentDidMount() {
89
- this.setState({
90
- isTooltipVisible: Boolean(
91
- this.headingRef.current && this.headingRef.current.offsetWidth < this.headingRef.current.scrollWidth
92
- )
93
- });
94
- }
95
-
96
- toggleCollapse = () => {
97
- this.setState((prevState) => ({
98
- isOpen: !prevState.isOpen,
99
- isTooltipVisible: Boolean(
100
- this.headingRef.current && this.headingRef.current.offsetWidth < this.headingRef.current.scrollWidth
101
- )
102
- }));
103
- };
104
-
105
- renderLabel(id: string) {
106
- const { categoryName, tooltipPosition } = this.props;
107
- const { isTooltipVisible } = this.state;
108
- return isTooltipVisible ? (
109
- <Tooltip position={tooltipPosition} content={categoryName}>
110
- <span tabIndex={0} ref={this.headingRef} className={css(styles.chipGroupLabel)}>
111
- <span id={id}>{categoryName}</span>
112
- </span>
113
- </Tooltip>
114
- ) : (
115
- <span ref={this.headingRef} className={css(styles.chipGroupLabel)} id={id}>
116
- {categoryName}
117
- </span>
118
- );
119
- }
120
-
121
- render() {
122
- const {
123
- categoryName,
124
- children,
125
- className,
126
- isClosable,
127
- closeBtnAriaLabel,
128
- 'aria-label': ariaLabel,
129
- onClick,
130
- onOverflowChipClick,
131
- numChips,
132
- expandedText,
133
- collapsedText,
134
- ouiaId,
135
- /* eslint-disable @typescript-eslint/no-unused-vars */
136
- defaultIsOpen,
137
- tooltipPosition,
138
- /* eslint-enable @typescript-eslint/no-unused-vars */
139
- ...rest
140
- } = this.props;
141
- const { isOpen } = this.state;
142
- const numChildren = React.Children.count(children);
143
- const collapsedTextResult = fillTemplate(collapsedText as string, {
144
- remaining: React.Children.count(children) - numChips
145
- });
146
-
147
- const renderChipGroup = (id: string) => {
148
- const chipArray = !isOpen
149
- ? React.Children.toArray(children).slice(0, numChips)
150
- : React.Children.toArray(children);
151
-
152
- return (
153
- <div
154
- className={css(styles.chipGroup, className, categoryName && styles.modifiers.category)}
155
- role="group"
156
- {...(categoryName && { 'aria-labelledby': id })}
157
- {...(!categoryName && { 'aria-label': ariaLabel })}
158
- {...getOUIAProps(ChipGroup.displayName, ouiaId)}
159
- >
160
- <div className={css(styles.chipGroupMain)}>
161
- {categoryName && this.renderLabel(id)}
162
- <ul
163
- className={css(styles.chipGroupList)}
164
- {...(categoryName && { 'aria-labelledby': id })}
165
- {...(!categoryName && { 'aria-label': ariaLabel })}
166
- role="list"
167
- {...rest}
168
- >
169
- {chipArray.map((child, i) => (
170
- <li className={css(styles.chipGroupListItem)} key={i}>
171
- {child}
172
- </li>
173
- ))}
174
- {numChildren > numChips && (
175
- <li className={css(styles.chipGroupListItem)}>
176
- <Chip
177
- isOverflowChip
178
- onClick={(event) => {
179
- this.toggleCollapse();
180
- onOverflowChipClick(event);
181
- }}
182
- component="button"
183
- >
184
- {isOpen ? expandedText : collapsedTextResult}
185
- </Chip>
186
- </li>
187
- )}
188
- </ul>
189
- </div>
190
- {isClosable && (
191
- <div className={css(styles.chipGroupClose)}>
192
- <Button
193
- variant="plain"
194
- aria-label={closeBtnAriaLabel}
195
- onClick={onClick}
196
- id={`remove_group_${id}`}
197
- aria-labelledby={`remove_group_${id} ${id}`}
198
- ouiaId={ouiaId || closeBtnAriaLabel}
199
- >
200
- <TimesCircleIcon aria-hidden="true" />
201
- </Button>
202
- </div>
203
- )}
204
- </div>
205
- );
206
- };
207
-
208
- return numChildren === 0 ? null : (
209
- <GenerateId>{(randomId) => renderChipGroup(this.props.id || randomId)}</GenerateId>
210
- );
211
- }
212
- }
213
-
214
- export { ChipGroup };