@patternfly/react-core 5.0.0-alpha.108 → 5.0.0-alpha.109
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/dist/esm/components/AboutModal/package.json +1 -1
- package/dist/esm/components/Accordion/package.json +1 -1
- package/dist/esm/components/ActionList/package.json +1 -1
- package/dist/esm/components/Alert/package.json +1 -1
- package/dist/esm/components/Avatar/package.json +1 -1
- package/dist/esm/components/BackToTop/package.json +1 -1
- package/dist/esm/components/Backdrop/package.json +1 -1
- package/dist/esm/components/BackgroundImage/package.json +1 -1
- package/dist/esm/components/Badge/package.json +1 -1
- package/dist/esm/components/Banner/package.json +1 -1
- package/dist/esm/components/Brand/package.json +1 -1
- package/dist/esm/components/Breadcrumb/package.json +1 -1
- package/dist/esm/components/Button/package.json +1 -1
- package/dist/esm/components/CalendarMonth/package.json +1 -1
- package/dist/esm/components/Card/Card.d.ts +12 -5
- package/dist/esm/components/Card/Card.d.ts.map +1 -1
- package/dist/esm/components/Card/Card.js +17 -5
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Card/CardHeader.d.ts +30 -0
- package/dist/esm/components/Card/CardHeader.d.ts.map +1 -1
- package/dist/esm/components/Card/CardHeader.js +40 -5
- package/dist/esm/components/Card/CardHeader.js.map +1 -1
- package/dist/esm/components/Card/CardSelectableActions.d.ts +9 -0
- package/dist/esm/components/Card/CardSelectableActions.d.ts.map +1 -0
- package/dist/esm/components/Card/CardSelectableActions.js +10 -0
- package/dist/esm/components/Card/CardSelectableActions.js.map +1 -0
- package/dist/esm/components/Card/package.json +1 -1
- package/dist/esm/components/Checkbox/Checkbox.d.ts +2 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +2 -2
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Checkbox/package.json +1 -1
- package/dist/esm/components/Chip/package.json +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +4 -4
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/esm/components/ClipboardCopy/package.json +1 -1
- package/dist/esm/components/CodeBlock/package.json +1 -1
- package/dist/esm/components/DataList/package.json +1 -1
- package/dist/esm/components/DatePicker/package.json +1 -1
- package/dist/esm/components/DescriptionList/package.json +1 -1
- package/dist/esm/components/Divider/package.json +1 -1
- package/dist/esm/components/DragDrop/package.json +1 -1
- package/dist/esm/components/Drawer/package.json +1 -1
- package/dist/esm/components/Dropdown/package.json +1 -1
- package/dist/esm/components/DualListSelector/package.json +1 -1
- package/dist/esm/components/EmptyState/package.json +1 -1
- package/dist/esm/components/ExpandableSection/package.json +1 -1
- package/dist/esm/components/FileUpload/FileUploadField.js +2 -2
- package/dist/esm/components/FileUpload/FileUploadField.js.map +1 -1
- package/dist/esm/components/FileUpload/package.json +1 -1
- package/dist/esm/components/Form/package.json +1 -1
- package/dist/esm/components/FormControl/FormControlIcon.d.ts +16 -0
- package/dist/esm/components/FormControl/FormControlIcon.d.ts.map +1 -0
- package/dist/esm/components/FormControl/FormControlIcon.js +18 -0
- package/dist/esm/components/FormControl/FormControlIcon.js.map +1 -0
- package/dist/esm/components/FormSelect/FormSelect.d.ts +0 -2
- package/dist/esm/components/FormSelect/FormSelect.d.ts.map +1 -1
- package/dist/esm/components/FormSelect/FormSelect.js +9 -3
- package/dist/esm/components/FormSelect/FormSelect.js.map +1 -1
- package/dist/esm/components/FormSelect/package.json +1 -1
- package/dist/esm/components/HelperText/package.json +1 -1
- package/dist/esm/components/Hint/package.json +1 -1
- package/dist/esm/components/Icon/package.json +1 -1
- package/dist/esm/components/InputGroup/package.json +1 -1
- package/dist/esm/components/JumpLinks/package.json +1 -1
- package/dist/esm/components/Label/package.json +1 -1
- package/dist/esm/components/List/package.json +1 -1
- package/dist/esm/components/LoginPage/package.json +1 -1
- package/dist/esm/components/Masthead/package.json +1 -1
- package/dist/esm/components/Menu/package.json +1 -1
- package/dist/esm/components/MenuToggle/package.json +1 -1
- package/dist/esm/components/Modal/package.json +1 -1
- package/dist/esm/components/MultipleFileUpload/package.json +1 -1
- package/dist/esm/components/Nav/package.json +1 -1
- package/dist/esm/components/NotificationBadge/package.json +1 -1
- package/dist/esm/components/NotificationDrawer/package.json +1 -1
- package/dist/esm/components/NumberInput/package.json +1 -1
- package/dist/esm/components/OverflowMenu/package.json +1 -1
- package/dist/esm/components/Page/package.json +1 -1
- package/dist/esm/components/Pagination/package.json +1 -1
- package/dist/esm/components/Panel/package.json +1 -1
- package/dist/esm/components/Popover/package.json +1 -1
- package/dist/esm/components/Progress/package.json +1 -1
- package/dist/esm/components/ProgressStepper/package.json +1 -1
- package/dist/esm/components/Radio/Radio.d.ts +5 -1
- package/dist/esm/components/Radio/Radio.d.ts.map +1 -1
- package/dist/esm/components/Radio/Radio.js +3 -3
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Radio/package.json +1 -1
- package/dist/esm/components/SearchInput/package.json +1 -1
- package/dist/esm/components/Select/package.json +1 -1
- package/dist/esm/components/Sidebar/package.json +1 -1
- package/dist/esm/components/SimpleList/package.json +1 -1
- package/dist/esm/components/Skeleton/package.json +1 -1
- package/dist/esm/components/SkipToContent/package.json +1 -1
- package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
- package/dist/esm/components/Slider/Slider.js +1 -1
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Slider/package.json +1 -1
- package/dist/esm/components/Spinner/package.json +1 -1
- package/dist/esm/components/Switch/package.json +1 -1
- package/dist/esm/components/Tabs/package.json +1 -1
- package/dist/esm/components/Text/package.json +1 -1
- package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
- package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js +11 -7
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/TextArea/package.json +1 -1
- package/dist/esm/components/TextInput/TextInput.d.ts +8 -11
- package/dist/esm/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/esm/components/TextInput/TextInput.js +10 -13
- package/dist/esm/components/TextInput/TextInput.js.map +1 -1
- package/dist/esm/components/TextInput/package.json +1 -1
- package/dist/esm/components/TextInputGroup/package.json +1 -1
- package/dist/esm/components/Tile/package.json +1 -1
- package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/esm/components/TimePicker/TimePicker.js +2 -2
- package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/esm/components/TimePicker/package.json +1 -1
- package/dist/esm/components/Timestamp/package.json +1 -1
- package/dist/esm/components/Title/package.json +1 -1
- package/dist/esm/components/ToggleGroup/package.json +1 -1
- package/dist/esm/components/Toolbar/package.json +1 -1
- package/dist/esm/components/Tooltip/package.json +1 -1
- package/dist/esm/components/TreeView/TreeViewSearch.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewSearch.js +6 -1
- package/dist/esm/components/TreeView/TreeViewSearch.js.map +1 -1
- package/dist/esm/components/TreeView/package.json +1 -1
- package/dist/esm/components/Truncate/package.json +1 -1
- package/dist/esm/components/Wizard/hooks/package.json +1 -1
- package/dist/esm/components/Wizard/package.json +1 -1
- package/dist/esm/components/package.json +1 -1
- package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
- package/dist/esm/deprecated/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Select/Select.js +16 -18
- package/dist/esm/deprecated/components/Select/Select.js.map +1 -1
- package/dist/esm/deprecated/components/Select/package.json +1 -1
- package/dist/esm/deprecated/components/Wizard/package.json +1 -1
- package/dist/esm/deprecated/components/package.json +1 -1
- package/dist/esm/deprecated/package.json +1 -1
- package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/esm/helpers/package.json +1 -1
- package/dist/esm/layouts/Bullseye/package.json +1 -1
- package/dist/esm/layouts/Flex/package.json +1 -1
- package/dist/esm/layouts/Gallery/package.json +1 -1
- package/dist/esm/layouts/Grid/package.json +1 -1
- package/dist/esm/layouts/Level/package.json +1 -1
- package/dist/esm/layouts/Split/package.json +1 -1
- package/dist/esm/layouts/Stack/package.json +1 -1
- package/dist/esm/layouts/package.json +1 -1
- package/dist/esm/next/components/package.json +1 -1
- package/dist/esm/next/package.json +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/js/components/AboutModal/package.json +1 -1
- package/dist/js/components/Accordion/package.json +1 -1
- package/dist/js/components/ActionList/package.json +1 -1
- package/dist/js/components/Alert/package.json +1 -1
- package/dist/js/components/Avatar/package.json +1 -1
- package/dist/js/components/BackToTop/package.json +1 -1
- package/dist/js/components/Backdrop/package.json +1 -1
- package/dist/js/components/BackgroundImage/package.json +1 -1
- package/dist/js/components/Badge/package.json +1 -1
- package/dist/js/components/Banner/package.json +1 -1
- package/dist/js/components/Brand/package.json +1 -1
- package/dist/js/components/Breadcrumb/package.json +1 -1
- package/dist/js/components/Button/package.json +1 -1
- package/dist/js/components/CalendarMonth/package.json +1 -1
- package/dist/js/components/Card/Card.d.ts +12 -5
- package/dist/js/components/Card/Card.d.ts.map +1 -1
- package/dist/js/components/Card/Card.js +17 -5
- package/dist/js/components/Card/Card.js.map +1 -1
- package/dist/js/components/Card/CardHeader.d.ts +30 -0
- package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
- package/dist/js/components/Card/CardHeader.js +40 -5
- package/dist/js/components/Card/CardHeader.js.map +1 -1
- package/dist/js/components/Card/CardSelectableActions.d.ts +9 -0
- package/dist/js/components/Card/CardSelectableActions.d.ts.map +1 -0
- package/dist/js/components/Card/CardSelectableActions.js +14 -0
- package/dist/js/components/Card/CardSelectableActions.js.map +1 -0
- package/dist/js/components/Card/package.json +1 -1
- package/dist/js/components/Checkbox/Checkbox.d.ts +2 -0
- package/dist/js/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/js/components/Checkbox/Checkbox.js +2 -2
- package/dist/js/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/js/components/Checkbox/package.json +1 -1
- package/dist/js/components/Chip/package.json +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js +4 -4
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/js/components/ClipboardCopy/package.json +1 -1
- package/dist/js/components/CodeBlock/package.json +1 -1
- package/dist/js/components/DataList/package.json +1 -1
- package/dist/js/components/DatePicker/package.json +1 -1
- package/dist/js/components/DescriptionList/package.json +1 -1
- package/dist/js/components/Divider/package.json +1 -1
- package/dist/js/components/DragDrop/package.json +1 -1
- package/dist/js/components/Drawer/package.json +1 -1
- package/dist/js/components/Dropdown/package.json +1 -1
- package/dist/js/components/DualListSelector/package.json +1 -1
- package/dist/js/components/EmptyState/package.json +1 -1
- package/dist/js/components/ExpandableSection/package.json +1 -1
- package/dist/js/components/FileUpload/FileUploadField.js +2 -2
- package/dist/js/components/FileUpload/FileUploadField.js.map +1 -1
- package/dist/js/components/FileUpload/package.json +1 -1
- package/dist/js/components/Form/package.json +1 -1
- package/dist/js/components/FormControl/FormControlIcon.d.ts +16 -0
- package/dist/js/components/FormControl/FormControlIcon.d.ts.map +1 -0
- package/dist/js/components/FormControl/FormControlIcon.js +22 -0
- package/dist/js/components/FormControl/FormControlIcon.js.map +1 -0
- package/dist/js/components/FormSelect/FormSelect.d.ts +0 -2
- package/dist/js/components/FormSelect/FormSelect.d.ts.map +1 -1
- package/dist/js/components/FormSelect/FormSelect.js +9 -3
- package/dist/js/components/FormSelect/FormSelect.js.map +1 -1
- package/dist/js/components/FormSelect/package.json +1 -1
- package/dist/js/components/HelperText/package.json +1 -1
- package/dist/js/components/Hint/package.json +1 -1
- package/dist/js/components/Icon/package.json +1 -1
- package/dist/js/components/InputGroup/package.json +1 -1
- package/dist/js/components/JumpLinks/package.json +1 -1
- package/dist/js/components/Label/package.json +1 -1
- package/dist/js/components/List/package.json +1 -1
- package/dist/js/components/LoginPage/package.json +1 -1
- package/dist/js/components/Masthead/package.json +1 -1
- package/dist/js/components/Menu/package.json +1 -1
- package/dist/js/components/MenuToggle/package.json +1 -1
- package/dist/js/components/Modal/package.json +1 -1
- package/dist/js/components/MultipleFileUpload/package.json +1 -1
- package/dist/js/components/Nav/package.json +1 -1
- package/dist/js/components/NotificationBadge/package.json +1 -1
- package/dist/js/components/NotificationDrawer/package.json +1 -1
- package/dist/js/components/NumberInput/package.json +1 -1
- package/dist/js/components/OverflowMenu/package.json +1 -1
- package/dist/js/components/Page/package.json +1 -1
- package/dist/js/components/Pagination/package.json +1 -1
- package/dist/js/components/Panel/package.json +1 -1
- package/dist/js/components/Popover/package.json +1 -1
- package/dist/js/components/Progress/package.json +1 -1
- package/dist/js/components/ProgressStepper/package.json +1 -1
- package/dist/js/components/Radio/Radio.d.ts +5 -1
- package/dist/js/components/Radio/Radio.d.ts.map +1 -1
- package/dist/js/components/Radio/Radio.js +3 -3
- package/dist/js/components/Radio/Radio.js.map +1 -1
- package/dist/js/components/Radio/package.json +1 -1
- package/dist/js/components/SearchInput/package.json +1 -1
- package/dist/js/components/Select/package.json +1 -1
- package/dist/js/components/Sidebar/package.json +1 -1
- package/dist/js/components/SimpleList/package.json +1 -1
- package/dist/js/components/Skeleton/package.json +1 -1
- package/dist/js/components/SkipToContent/package.json +1 -1
- package/dist/js/components/Slider/Slider.d.ts.map +1 -1
- package/dist/js/components/Slider/Slider.js +1 -1
- package/dist/js/components/Slider/Slider.js.map +1 -1
- package/dist/js/components/Slider/package.json +1 -1
- package/dist/js/components/Spinner/package.json +1 -1
- package/dist/js/components/Switch/package.json +1 -1
- package/dist/js/components/Tabs/package.json +1 -1
- package/dist/js/components/Text/package.json +1 -1
- package/dist/js/components/TextArea/TextArea.d.ts +0 -4
- package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/js/components/TextArea/TextArea.js +11 -7
- package/dist/js/components/TextArea/TextArea.js.map +1 -1
- package/dist/js/components/TextArea/package.json +1 -1
- package/dist/js/components/TextInput/TextInput.d.ts +8 -11
- package/dist/js/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/js/components/TextInput/TextInput.js +10 -13
- package/dist/js/components/TextInput/TextInput.js.map +1 -1
- package/dist/js/components/TextInput/package.json +1 -1
- package/dist/js/components/TextInputGroup/package.json +1 -1
- package/dist/js/components/Tile/package.json +1 -1
- package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/js/components/TimePicker/TimePicker.js +2 -2
- package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/js/components/TimePicker/package.json +1 -1
- package/dist/js/components/Timestamp/package.json +1 -1
- package/dist/js/components/Title/package.json +1 -1
- package/dist/js/components/ToggleGroup/package.json +1 -1
- package/dist/js/components/Toolbar/package.json +1 -1
- package/dist/js/components/Tooltip/package.json +1 -1
- package/dist/js/components/TreeView/TreeViewSearch.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewSearch.js +6 -1
- package/dist/js/components/TreeView/TreeViewSearch.js.map +1 -1
- package/dist/js/components/TreeView/package.json +1 -1
- package/dist/js/components/Truncate/package.json +1 -1
- package/dist/js/components/Wizard/hooks/package.json +1 -1
- package/dist/js/components/Wizard/package.json +1 -1
- package/dist/js/components/package.json +1 -1
- package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/js/deprecated/components/Dropdown/package.json +1 -1
- package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/js/deprecated/components/PageHeader/package.json +1 -1
- package/dist/js/deprecated/components/Select/Select.d.ts.map +1 -1
- package/dist/js/deprecated/components/Select/Select.js +16 -18
- package/dist/js/deprecated/components/Select/Select.js.map +1 -1
- package/dist/js/deprecated/components/Select/package.json +1 -1
- package/dist/js/deprecated/components/Wizard/package.json +1 -1
- package/dist/js/deprecated/components/package.json +1 -1
- package/dist/js/deprecated/package.json +1 -1
- package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/js/helpers/package.json +1 -1
- package/dist/js/layouts/Bullseye/package.json +1 -1
- package/dist/js/layouts/Flex/package.json +1 -1
- package/dist/js/layouts/Gallery/package.json +1 -1
- package/dist/js/layouts/Grid/package.json +1 -1
- package/dist/js/layouts/Level/package.json +1 -1
- package/dist/js/layouts/Split/package.json +1 -1
- package/dist/js/layouts/Stack/package.json +1 -1
- package/dist/js/layouts/package.json +1 -1
- package/dist/js/next/components/package.json +1 -1
- package/dist/js/next/package.json +1 -1
- package/dist/js/package.json +1 -1
- package/dist/umd/react-core.min.js +3 -3
- package/package.json +6 -6
- package/src/components/Card/Card.tsx +34 -9
- package/src/components/Card/CardHeader.tsx +94 -2
- package/src/components/Card/CardSelectableActions.tsx +21 -0
- package/src/components/Card/__tests__/Card.test.tsx +11 -7
- package/src/components/Card/__tests__/__snapshots__/CardHeader.test.tsx.snap +1 -3
- package/src/components/Card/examples/Card.md +59 -16
- package/src/components/Card/examples/CardClickable.tsx +54 -0
- package/src/components/Card/examples/CardClickableSelectable.tsx +94 -0
- package/src/components/Card/examples/{CardLegacySelectable.tsx → CardDeprecatedSelectable.tsx} +2 -0
- package/src/components/Card/examples/{CardSelectableA11yHighlight.tsx → CardDeprecatedSelectableA11yHighlight.tsx} +1 -1
- package/src/components/Card/examples/CardSelectable.tsx +60 -115
- package/src/components/Card/examples/CardSingleSelectable.tsx +52 -0
- package/src/components/Checkbox/Checkbox.tsx +5 -2
- package/src/components/ClipboardCopy/ClipboardCopy.tsx +4 -4
- package/src/components/ClipboardCopy/__tests__/Generated/__snapshots__/ClipboardCopy.test.tsx.snap +13 -10
- package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +40 -31
- package/src/components/FileUpload/FileUploadField.tsx +1 -1
- package/src/components/FileUpload/__tests__/__snapshots__/FileUpload.test.tsx.snap +28 -22
- package/src/components/FileUpload/__tests__/__snapshots__/FileUploadField.test.tsx.snap +28 -22
- package/src/components/FormControl/FormControlIcon.tsx +31 -0
- package/src/components/FormSelect/FormSelect.tsx +26 -20
- package/src/components/FormSelect/__tests__/FormSelect.test.tsx +2 -2
- package/src/components/FormSelect/__tests__/__snapshots__/FormSelect.test.tsx.snap +421 -178
- package/src/components/FormSelect/examples/FormSelect.md +7 -6
- package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +84 -66
- package/src/components/NumberInput/__tests__/__snapshots__/NumberInput.test.tsx.snap +217 -133
- package/src/components/Radio/Radio.tsx +7 -2
- package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +36 -27
- package/src/components/Slider/Slider.tsx +0 -1
- package/src/components/Slider/_tests_/__snapshots__/Slider.test.tsx.snap +52 -40
- package/src/components/TextArea/TextArea.tsx +33 -26
- package/src/components/TextArea/__tests__/TextArea.test.tsx +6 -6
- package/src/components/TextArea/__tests__/__snapshots__/TextArea.test.tsx.snap +11 -8
- package/src/components/TextArea/examples/TextArea.md +8 -6
- package/src/components/TextInput/TextInput.tsx +43 -47
- package/src/components/TextInput/__tests__/TextInput.test.tsx +2 -2
- package/src/components/TextInput/__tests__/__snapshots__/TextInput.test.tsx.snap +130 -72
- package/src/components/TextInput/examples/TextInput.md +14 -5
- package/src/components/TextInput/examples/TextInputCustomIcon.tsx +30 -0
- package/src/components/TextInput/examples/TextInputCustomIconInvalid.tsx +20 -0
- package/src/components/TimePicker/TimePicker.tsx +2 -4
- package/src/components/TreeView/TreeViewSearch.tsx +9 -9
- package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +29 -7
- package/src/demos/examples/DateTimePicker/DateTimePicker.tsx +1 -1
- package/src/deprecated/components/Select/Select.tsx +21 -25
- package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +1 -2
- package/src/components/FormSelect/examples/FormSelectIconSpriteVariant.tsx +0 -63
- package/src/components/TextArea/examples/TextAreaIconSprite.tsx +0 -41
- package/src/components/TextInput/examples/TextInputIcon.tsx +0 -39
- package/src/components/TextInput/examples/TextInputIconSprite.tsx +0 -63
|
@@ -56,16 +56,19 @@ exports[`slider renders continuous slider 1`] = `
|
|
|
56
56
|
<div
|
|
57
57
|
class="pf-v5-c-slider__value"
|
|
58
58
|
>
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
<div
|
|
60
|
+
class="pf-v5-c-form-control"
|
|
61
|
+
>
|
|
62
|
+
<input
|
|
63
|
+
aria-invalid="false"
|
|
64
|
+
aria-label="Slider value input"
|
|
65
|
+
data-ouia-component-id="OUIA-Generated-TextInputBase-1"
|
|
66
|
+
data-ouia-component-type="PF4/TextInput"
|
|
67
|
+
data-ouia-safe="true"
|
|
68
|
+
type="number"
|
|
69
|
+
value="50"
|
|
70
|
+
/>
|
|
71
|
+
</div>
|
|
69
72
|
</div>
|
|
70
73
|
</div>
|
|
71
74
|
</DocumentFragment>
|
|
@@ -247,16 +250,19 @@ exports[`slider renders discrete slider 1`] = `
|
|
|
247
250
|
<div
|
|
248
251
|
class="pf-v5-c-slider__value"
|
|
249
252
|
>
|
|
250
|
-
<
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
253
|
+
<div
|
|
254
|
+
class="pf-v5-c-form-control"
|
|
255
|
+
>
|
|
256
|
+
<input
|
|
257
|
+
aria-invalid="false"
|
|
258
|
+
aria-label="Slider value input"
|
|
259
|
+
data-ouia-component-id="OUIA-Generated-TextInputBase-2"
|
|
260
|
+
data-ouia-component-type="PF4/TextInput"
|
|
261
|
+
data-ouia-safe="true"
|
|
262
|
+
type="number"
|
|
263
|
+
value="50"
|
|
264
|
+
/>
|
|
265
|
+
</div>
|
|
260
266
|
</div>
|
|
261
267
|
</div>
|
|
262
268
|
</DocumentFragment>
|
|
@@ -416,16 +422,19 @@ exports[`slider renders slider with input 1`] = `
|
|
|
416
422
|
<div
|
|
417
423
|
class="pf-v5-c-input-group__item pf-m-fill"
|
|
418
424
|
>
|
|
419
|
-
<
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
425
|
+
<div
|
|
426
|
+
class="pf-v5-c-form-control"
|
|
427
|
+
>
|
|
428
|
+
<input
|
|
429
|
+
aria-invalid="false"
|
|
430
|
+
aria-label="Slider value input"
|
|
431
|
+
data-ouia-component-id="OUIA-Generated-TextInputBase-3"
|
|
432
|
+
data-ouia-component-type="PF4/TextInput"
|
|
433
|
+
data-ouia-safe="true"
|
|
434
|
+
type="number"
|
|
435
|
+
value="50"
|
|
436
|
+
/>
|
|
437
|
+
</div>
|
|
429
438
|
</div>
|
|
430
439
|
<div
|
|
431
440
|
class="pf-v5-c-input-group__item pf-m-box"
|
|
@@ -492,16 +501,19 @@ exports[`slider renders slider with input above thumb 1`] = `
|
|
|
492
501
|
<div
|
|
493
502
|
class="pf-v5-c-input-group__item pf-m-fill"
|
|
494
503
|
>
|
|
495
|
-
<
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
504
|
+
<div
|
|
505
|
+
class="pf-v5-c-form-control"
|
|
506
|
+
>
|
|
507
|
+
<input
|
|
508
|
+
aria-invalid="false"
|
|
509
|
+
aria-label="Slider value input"
|
|
510
|
+
data-ouia-component-id="OUIA-Generated-TextInputBase-4"
|
|
511
|
+
data-ouia-component-type="PF4/TextInput"
|
|
512
|
+
data-ouia-safe="true"
|
|
513
|
+
type="number"
|
|
514
|
+
value="50"
|
|
515
|
+
/>
|
|
516
|
+
</div>
|
|
505
517
|
</div>
|
|
506
518
|
<div
|
|
507
519
|
class="pf-v5-c-input-group__item pf-m-box"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { HTMLProps } from 'react';
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/FormControl/form-control';
|
|
4
|
-
import heightToken from '@patternfly/react-tokens/dist/esm/c_form_control_textarea_Height';
|
|
5
4
|
import { css } from '@patternfly/react-styles';
|
|
6
5
|
import { capitalize, ValidatedOptions, canUseDOM } from '../../helpers';
|
|
6
|
+
import { FormControlIcon } from '../FormControl/FormControlIcon';
|
|
7
7
|
|
|
8
8
|
export enum TextAreResizeOrientation {
|
|
9
9
|
horizontal = 'horizontal',
|
|
@@ -23,12 +23,8 @@ export interface TextAreaProps extends Omit<HTMLProps<HTMLTextAreaElement>, 'onC
|
|
|
23
23
|
isRequired?: boolean;
|
|
24
24
|
/** Flag to show if the text area is disabled. */
|
|
25
25
|
isDisabled?: boolean;
|
|
26
|
-
/** @deprecated Use readOnlyVariant instead. Flag to show if the text area is read only. */
|
|
27
|
-
isReadOnly?: boolean;
|
|
28
26
|
/** Read only variant. */
|
|
29
27
|
readOnlyVariant?: 'default' | 'plain';
|
|
30
|
-
/** Use the external file instead of a data URI */
|
|
31
|
-
isIconSprite?: boolean;
|
|
32
28
|
/** Flag to modify height based on contents. */
|
|
33
29
|
autoResize?: boolean;
|
|
34
30
|
/** Value to indicate if the text area is modified to show that validation state.
|
|
@@ -55,7 +51,6 @@ export class TextAreaBase extends React.Component<TextAreaProps> {
|
|
|
55
51
|
className: '',
|
|
56
52
|
isRequired: false,
|
|
57
53
|
isDisabled: false,
|
|
58
|
-
isIconSprite: false,
|
|
59
54
|
validated: 'default',
|
|
60
55
|
resizeOrientation: 'both',
|
|
61
56
|
'aria-label': null as string
|
|
@@ -64,7 +59,8 @@ export class TextAreaBase extends React.Component<TextAreaProps> {
|
|
|
64
59
|
inputRef = React.createRef<HTMLTextAreaElement>();
|
|
65
60
|
|
|
66
61
|
private setAutoHeight = (field: HTMLTextAreaElement) => {
|
|
67
|
-
field.
|
|
62
|
+
const parent = field.parentElement;
|
|
63
|
+
parent.style.setProperty('height', 'inherit');
|
|
68
64
|
const computed = window.getComputedStyle(field);
|
|
69
65
|
// Calculate the height
|
|
70
66
|
const height =
|
|
@@ -73,7 +69,7 @@ export class TextAreaBase extends React.Component<TextAreaProps> {
|
|
|
73
69
|
field.scrollHeight +
|
|
74
70
|
parseInt(computed.getPropertyValue('padding-bottom')) +
|
|
75
71
|
parseInt(computed.getPropertyValue('border-bottom-width'));
|
|
76
|
-
|
|
72
|
+
parent.style.setProperty('height', `${height}px`);
|
|
77
73
|
};
|
|
78
74
|
|
|
79
75
|
constructor(props: TextAreaProps) {
|
|
@@ -110,8 +106,6 @@ export class TextAreaBase extends React.Component<TextAreaProps> {
|
|
|
110
106
|
validated,
|
|
111
107
|
isRequired,
|
|
112
108
|
isDisabled,
|
|
113
|
-
isIconSprite,
|
|
114
|
-
isReadOnly,
|
|
115
109
|
readOnlyVariant,
|
|
116
110
|
resizeOrientation,
|
|
117
111
|
innerRef,
|
|
@@ -122,27 +116,40 @@ export class TextAreaBase extends React.Component<TextAreaProps> {
|
|
|
122
116
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
123
117
|
...props
|
|
124
118
|
} = this.props;
|
|
125
|
-
const orientation = `resize${capitalize(resizeOrientation)}` as
|
|
119
|
+
const orientation = `resize${capitalize(resizeOrientation)}` as
|
|
120
|
+
| 'resizeVertical'
|
|
121
|
+
| 'resizeHorizontal'
|
|
122
|
+
| 'resizeBoth';
|
|
123
|
+
const hasStatusIcon = ['success', 'error', 'warning'].includes(validated);
|
|
124
|
+
|
|
126
125
|
return (
|
|
127
|
-
<
|
|
126
|
+
<div
|
|
128
127
|
className={css(
|
|
129
128
|
styles.formControl,
|
|
130
|
-
|
|
129
|
+
readOnlyVariant && styles.modifiers.readonly,
|
|
131
130
|
readOnlyVariant === 'plain' && styles.modifiers.plain,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
131
|
+
resizeOrientation && styles.modifiers[orientation],
|
|
132
|
+
isDisabled && styles.modifiers.disabled,
|
|
133
|
+
hasStatusIcon && styles.modifiers[validated as 'success' | 'warning' | 'error'],
|
|
134
|
+
className
|
|
135
|
+
)}
|
|
136
|
+
>
|
|
137
|
+
<textarea
|
|
138
|
+
onChange={this.handleChange}
|
|
139
|
+
{...(typeof this.props.defaultValue !== 'string' && { value })}
|
|
140
|
+
aria-invalid={validated === ValidatedOptions.error}
|
|
141
|
+
required={isRequired}
|
|
142
|
+
disabled={isDisabled || disabled}
|
|
143
|
+
readOnly={!!readOnlyVariant}
|
|
144
|
+
ref={innerRef || this.inputRef}
|
|
145
|
+
{...props}
|
|
146
|
+
/>
|
|
147
|
+
{hasStatusIcon && (
|
|
148
|
+
<div className={css(styles.formControlUtilities)}>
|
|
149
|
+
<FormControlIcon status={validated as 'success' | 'error' | 'warning'} />
|
|
150
|
+
</div>
|
|
136
151
|
)}
|
|
137
|
-
|
|
138
|
-
{...(typeof this.props.defaultValue !== 'string' && { value })}
|
|
139
|
-
aria-invalid={validated === ValidatedOptions.error}
|
|
140
|
-
required={isRequired}
|
|
141
|
-
disabled={isDisabled || disabled}
|
|
142
|
-
readOnly={!!readOnlyVariant || isReadOnly}
|
|
143
|
-
ref={innerRef || this.inputRef}
|
|
144
|
-
{...props}
|
|
145
|
-
/>
|
|
152
|
+
</div>
|
|
146
153
|
);
|
|
147
154
|
}
|
|
148
155
|
}
|
|
@@ -32,7 +32,7 @@ test('Renders simple text input', () => {
|
|
|
32
32
|
test('Renders with custom class passed', () => {
|
|
33
33
|
render(<TextArea aria-label="custom class textarea" className="test-class" />);
|
|
34
34
|
|
|
35
|
-
expect(screen.getByRole('textbox')).toHaveClass('test-class');
|
|
35
|
+
expect(screen.getByRole('textbox').parentElement).toHaveClass('test-class');
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
test('Renders text area with required attribute using isRequired', () => {
|
|
@@ -69,17 +69,17 @@ test('Text area is not read only by default', () => {
|
|
|
69
69
|
|
|
70
70
|
test('Renders text area with default class name only', () => {
|
|
71
71
|
render(<TextArea aria-label="validated textarea" />);
|
|
72
|
-
expect(screen.getByRole('textbox')).toHaveClass('pf-v5-c-form-control'
|
|
72
|
+
expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-v5-c-form-control');
|
|
73
73
|
});
|
|
74
74
|
|
|
75
75
|
test('Renders validated text area with success className', () => {
|
|
76
76
|
render(<TextArea aria-label="validated textarea" validated={ValidatedOptions.success} />);
|
|
77
|
-
expect(screen.getByRole('textbox')).toHaveClass('pf-m-success');
|
|
77
|
+
expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-success');
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
test('Renders validated text area with warning className', () => {
|
|
81
81
|
render(<TextArea aria-label="validated textarea" validated={ValidatedOptions.warning} />);
|
|
82
|
-
expect(screen.getByRole('textbox')).toHaveClass('pf-m-warning');
|
|
82
|
+
expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-warning');
|
|
83
83
|
});
|
|
84
84
|
|
|
85
85
|
test('Renders invalid text area', () => {
|
|
@@ -94,12 +94,12 @@ test('Text area is not invalid by default', () => {
|
|
|
94
94
|
|
|
95
95
|
test('Renders vertically resizable text area', () => {
|
|
96
96
|
render(<TextArea aria-label="vertical resize textarea" resizeOrientation="vertical" />);
|
|
97
|
-
expect(screen.getByRole('textbox')).toHaveClass('pf-m-resize-vertical');
|
|
97
|
+
expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-resize-vertical');
|
|
98
98
|
});
|
|
99
99
|
|
|
100
100
|
test('Renders horizontally resizable text area', () => {
|
|
101
101
|
render(<TextArea aria-label="horizontal resize textarea" resizeOrientation="horizontal" />);
|
|
102
|
-
expect(screen.getByRole('textbox')).toHaveClass('pf-m-resize-horizontal');
|
|
102
|
+
expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-resize-horizontal');
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
test('Throws console error when no aria-label or id is given', () => {
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Matches the snapshot 1`] = `
|
|
4
4
|
<DocumentFragment>
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
<div
|
|
6
|
+
class="pf-v5-c-form-control pf-m-resize-both pf-m-disabled custom class"
|
|
7
|
+
style="height: 6px;"
|
|
8
|
+
>
|
|
9
|
+
<textarea
|
|
10
|
+
aria-invalid="false"
|
|
11
|
+
aria-label="test textarea"
|
|
12
|
+
disabled=""
|
|
13
|
+
required=""
|
|
14
|
+
/>
|
|
15
|
+
</div>
|
|
13
16
|
</DocumentFragment>
|
|
14
17
|
`;
|
|
@@ -11,51 +11,53 @@ propComponents: ['TextArea']
|
|
|
11
11
|
### Basic
|
|
12
12
|
|
|
13
13
|
```ts file="./TextAreaBasic.tsx"
|
|
14
|
+
|
|
14
15
|
```
|
|
15
16
|
|
|
16
17
|
### Invalid
|
|
17
18
|
|
|
18
19
|
```ts file="./TextAreaInvalid.tsx"
|
|
20
|
+
|
|
19
21
|
```
|
|
20
22
|
|
|
21
23
|
### Validated
|
|
22
24
|
|
|
23
25
|
```ts file="./TextAreaValidated.tsx"
|
|
26
|
+
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
### Vertically resizable
|
|
27
30
|
|
|
28
31
|
```ts file="./TextAreaVerticallyResizable.tsx"
|
|
32
|
+
|
|
29
33
|
```
|
|
30
34
|
|
|
31
35
|
### Horizontally resizable
|
|
32
36
|
|
|
33
37
|
```ts file="./TextAreaHorizontallyResizable.tsx"
|
|
38
|
+
|
|
34
39
|
```
|
|
35
40
|
|
|
36
41
|
### Uncontrolled
|
|
37
42
|
|
|
38
43
|
```ts file="./TextAreaUncontrolled.tsx"
|
|
44
|
+
|
|
39
45
|
```
|
|
40
46
|
|
|
41
47
|
### Disabled
|
|
42
48
|
|
|
43
49
|
```ts file="./TextAreaDisabled.tsx"
|
|
50
|
+
|
|
44
51
|
```
|
|
45
52
|
|
|
46
53
|
### Read only
|
|
47
54
|
|
|
48
55
|
```ts file="./TextAreaReadOnly.tsx"
|
|
56
|
+
|
|
49
57
|
```
|
|
50
58
|
|
|
51
59
|
### Auto resizing
|
|
52
60
|
|
|
53
61
|
```ts file="./TextAreaAutoResizing.tsx"
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Icon sprite variants
|
|
57
|
-
|
|
58
|
-
**Note:** The icons for the success, invalid, calendar, etc. variations in form control elements are applied as background images to the form element. By default, the image URLs for these icons are data URIs. However, there may be cases where data URIs are not ideal, such as in an application with a content security policy that disallows data URIs for security reasons. The `isIconSprite` variation changes the icon source to an external SVG file that serves as a sprite for all of the supported icons.
|
|
59
62
|
|
|
60
|
-
```ts file="./TextAreaIconSprite.tsx"
|
|
61
63
|
```
|
|
@@ -5,6 +5,7 @@ import { ValidatedOptions } from '../../helpers/constants';
|
|
|
5
5
|
import { trimLeft } from '../../helpers/util';
|
|
6
6
|
import { getDefaultOUIAId, getOUIAProps, OUIAProps } from '../../helpers';
|
|
7
7
|
import { getResizeObserver } from '../../helpers/resizeObserver';
|
|
8
|
+
import { FormControlIcon } from '../FormControl/FormControlIcon';
|
|
8
9
|
|
|
9
10
|
export enum TextInputTypes {
|
|
10
11
|
text = 'text',
|
|
@@ -25,7 +26,6 @@ export enum TextInputReadOnlyVariant {
|
|
|
25
26
|
plain = 'plain'
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
|
|
29
29
|
export interface TextInputProps
|
|
30
30
|
extends Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'onFocus' | 'onBlur' | 'disabled' | 'ref'>,
|
|
31
31
|
OUIAProps {
|
|
@@ -33,10 +33,11 @@ export interface TextInputProps
|
|
|
33
33
|
className?: string;
|
|
34
34
|
/** Flag to show if the text input is disabled. */
|
|
35
35
|
isDisabled?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
/**
|
|
36
|
+
/** Flag to apply expanded styling */
|
|
37
|
+
isExpanded?: boolean;
|
|
38
|
+
/** Sets the input as readonly and determines the readonly styling. */
|
|
39
39
|
readOnlyVariant?: 'plain' | 'default';
|
|
40
|
+
/** Flag indicating whether the input is required */
|
|
40
41
|
isRequired?: boolean;
|
|
41
42
|
/** Value to indicate if the text input is modified to show that validation state.
|
|
42
43
|
* If set to success, text input will be modified to indicate valid state.
|
|
@@ -60,6 +61,8 @@ export interface TextInputProps
|
|
|
60
61
|
| 'url';
|
|
61
62
|
/** Value of the text input. */
|
|
62
63
|
value?: string | number;
|
|
64
|
+
/** Placeholder of the text input when there is no value */
|
|
65
|
+
placeholder?: string;
|
|
63
66
|
/** Aria-label. The text input requires an associated id or aria-label. */
|
|
64
67
|
'aria-label'?: string;
|
|
65
68
|
/** @hide A reference object to attach to the text input box. */
|
|
@@ -70,14 +73,8 @@ export interface TextInputProps
|
|
|
70
73
|
onFocus?: (event?: any) => void;
|
|
71
74
|
/** Callback function when text input is blurred (focus leaves) */
|
|
72
75
|
onBlur?: (event?: any) => void;
|
|
73
|
-
/** icon
|
|
74
|
-
|
|
75
|
-
/** Use the external file instead of a data URI */
|
|
76
|
-
isIconSprite?: boolean;
|
|
77
|
-
/** Custom icon url to set as the text input's background-image */
|
|
78
|
-
customIconUrl?: string;
|
|
79
|
-
/** Dimensions for the custom icon set as the text input's background-size */
|
|
80
|
-
customIconDimensions?: string;
|
|
76
|
+
/** Custom icon to render. If the validated prop is also passed, this will render an icon in addition to a validated icon. */
|
|
77
|
+
customIcon?: React.ReactNode;
|
|
81
78
|
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
82
79
|
ouiaId?: number | string;
|
|
83
80
|
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
@@ -92,12 +89,10 @@ export class TextInputBase extends React.Component<TextInputProps, TextInputStat
|
|
|
92
89
|
static displayName = 'TextInputBase';
|
|
93
90
|
static defaultProps: TextInputProps = {
|
|
94
91
|
'aria-label': null,
|
|
95
|
-
className: '',
|
|
96
92
|
isRequired: false,
|
|
97
93
|
validated: 'default' as 'success' | 'warning' | 'error' | 'default',
|
|
98
94
|
isDisabled: false,
|
|
99
|
-
|
|
100
|
-
isIconSprite: false,
|
|
95
|
+
isExpanded: false,
|
|
101
96
|
type: TextInputTypes.text,
|
|
102
97
|
isLeftTruncated: false,
|
|
103
98
|
onChange: (): any => undefined,
|
|
@@ -174,60 +169,61 @@ export class TextInputBase extends React.Component<TextInputProps, TextInputStat
|
|
|
174
169
|
className,
|
|
175
170
|
type,
|
|
176
171
|
value,
|
|
172
|
+
placeholder,
|
|
177
173
|
validated,
|
|
178
174
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
179
175
|
onChange,
|
|
180
176
|
onFocus,
|
|
181
177
|
onBlur,
|
|
182
178
|
isLeftTruncated,
|
|
183
|
-
|
|
179
|
+
isExpanded,
|
|
184
180
|
readOnly,
|
|
185
181
|
readOnlyVariant,
|
|
186
182
|
isRequired,
|
|
187
183
|
isDisabled,
|
|
188
|
-
|
|
189
|
-
iconVariant,
|
|
190
|
-
customIconUrl,
|
|
191
|
-
customIconDimensions,
|
|
184
|
+
customIcon,
|
|
192
185
|
ouiaId,
|
|
193
186
|
ouiaSafe,
|
|
194
187
|
...props
|
|
195
188
|
} = this.props;
|
|
196
189
|
|
|
197
|
-
const
|
|
198
|
-
if (customIconUrl) {
|
|
199
|
-
customIconStyle.backgroundImage = `url('${customIconUrl}')`;
|
|
200
|
-
}
|
|
201
|
-
if (customIconDimensions) {
|
|
202
|
-
customIconStyle.backgroundSize = customIconDimensions;
|
|
203
|
-
}
|
|
190
|
+
const hasStatusIcon = ['success', 'error', 'warning'].includes(validated);
|
|
204
191
|
|
|
205
192
|
return (
|
|
206
|
-
<
|
|
207
|
-
{...props}
|
|
208
|
-
onFocus={this.onFocus}
|
|
209
|
-
onBlur={this.onBlur}
|
|
193
|
+
<div
|
|
210
194
|
className={css(
|
|
211
195
|
styles.formControl,
|
|
212
|
-
|
|
196
|
+
readOnlyVariant && styles.modifiers.readonly,
|
|
213
197
|
readOnlyVariant === 'plain' && styles.modifiers.plain,
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
198
|
+
isDisabled && styles.modifiers.disabled,
|
|
199
|
+
isExpanded && styles.modifiers.expanded,
|
|
200
|
+
customIcon && styles.modifiers.icon,
|
|
201
|
+
hasStatusIcon && styles.modifiers[validated as 'success' | 'warning' | 'error'],
|
|
218
202
|
className
|
|
219
203
|
)}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
204
|
+
>
|
|
205
|
+
<input
|
|
206
|
+
{...props}
|
|
207
|
+
onFocus={this.onFocus}
|
|
208
|
+
onBlur={this.onBlur}
|
|
209
|
+
onChange={this.handleChange}
|
|
210
|
+
type={type}
|
|
211
|
+
value={this.sanitizeInputValue(value)}
|
|
212
|
+
aria-invalid={props['aria-invalid'] ? props['aria-invalid'] : validated === ValidatedOptions.error}
|
|
213
|
+
required={isRequired}
|
|
214
|
+
disabled={isDisabled}
|
|
215
|
+
readOnly={!!readOnlyVariant || readOnly}
|
|
216
|
+
ref={innerRef || this.inputRef}
|
|
217
|
+
placeholder={placeholder}
|
|
218
|
+
{...getOUIAProps(TextInput.displayName, ouiaId !== undefined ? ouiaId : this.state.ouiaStateId, ouiaSafe)}
|
|
219
|
+
/>
|
|
220
|
+
{(customIcon || hasStatusIcon) && (
|
|
221
|
+
<div className={css(styles.formControlUtilities)}>
|
|
222
|
+
{customIcon && <FormControlIcon customIcon={customIcon} />}
|
|
223
|
+
{hasStatusIcon && <FormControlIcon status={validated as 'success' | 'error' | 'warning'} />}
|
|
224
|
+
</div>
|
|
225
|
+
)}
|
|
226
|
+
</div>
|
|
231
227
|
);
|
|
232
228
|
}
|
|
233
229
|
|
|
@@ -59,12 +59,12 @@ describe('TextInput', () => {
|
|
|
59
59
|
|
|
60
60
|
test('validated text input success', () => {
|
|
61
61
|
render(<TextInput {...props} required validated={ValidatedOptions.success} aria-label="validated text input" />);
|
|
62
|
-
expect(screen.getByLabelText('validated text input')).toHaveClass('pf-m-success');
|
|
62
|
+
expect(screen.getByLabelText('validated text input').parentElement).toHaveClass('pf-m-success');
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
test('validated text input warning', () => {
|
|
66
66
|
render(<TextInput {...props} required validated={ValidatedOptions.warning} aria-label="validated text input" />);
|
|
67
|
-
expect(screen.getByLabelText('validated text input')).toHaveClass('pf-m-warning');
|
|
67
|
+
expect(screen.getByLabelText('validated text input').parentElement).toHaveClass('pf-m-warning');
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
test('validated text input error', () => {
|