@dxc-technology/halstack-react 10.1.0 → 11.0.0
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/BackgroundColorContext.d.ts +2 -2
- package/BackgroundColorContext.js +5 -17
- package/HalstackContext.d.ts +18 -6
- package/HalstackContext.js +9 -34
- package/accordion/Accordion.js +21 -58
- package/accordion/Accordion.stories.tsx +1 -15
- package/accordion/Accordion.test.js +18 -33
- package/accordion/types.d.ts +5 -5
- package/accordion-group/AccordionGroup.js +15 -42
- package/accordion-group/AccordionGroup.stories.tsx +1 -1
- package/accordion-group/AccordionGroup.test.js +42 -60
- package/accordion-group/AccordionGroupAccordion.js +9 -21
- package/accordion-group/types.d.ts +6 -6
- package/alert/Alert.js +14 -46
- package/alert/Alert.test.js +28 -45
- package/alert/types.d.ts +5 -5
- package/badge/Badge.js +4 -17
- package/badge/types.d.ts +1 -1
- package/bleed/Bleed.js +13 -21
- package/bleed/types.d.ts +2 -2
- package/box/Box.js +10 -29
- package/box/Box.test.js +1 -6
- package/box/types.d.ts +3 -3
- package/bulleted-list/BulletedList.js +7 -33
- package/bulleted-list/BulletedList.stories.tsx +1 -91
- package/bulleted-list/types.d.ts +5 -5
- package/button/Button.js +23 -46
- package/button/Button.stories.tsx +5 -86
- package/button/Button.test.js +11 -21
- package/button/types.d.ts +4 -4
- package/card/Card.js +21 -44
- package/card/Card.test.js +10 -21
- package/card/types.d.ts +5 -5
- package/checkbox/Checkbox.js +81 -111
- package/checkbox/Checkbox.stories.tsx +16 -54
- package/checkbox/Checkbox.test.js +107 -63
- package/checkbox/types.d.ts +8 -4
- package/chip/Chip.js +12 -31
- package/chip/Chip.test.js +15 -28
- package/chip/types.d.ts +4 -4
- package/common/coreTokens.js +1 -2
- package/common/utils.js +2 -8
- package/common/variables.d.ts +15 -6
- package/common/variables.js +17 -15
- package/date-input/Calendar.js +13 -57
- package/date-input/DateInput.js +50 -96
- package/date-input/DateInput.stories.tsx +11 -30
- package/date-input/DateInput.test.js +674 -701
- package/date-input/DatePicker.js +11 -42
- package/date-input/Icons.d.ts +6 -6
- package/date-input/Icons.js +6 -23
- package/date-input/YearPicker.js +8 -34
- package/date-input/types.d.ts +27 -21
- package/dialog/Dialog.js +11 -35
- package/dialog/Dialog.test.js +125 -187
- package/dialog/types.d.ts +18 -13
- package/dropdown/Dropdown.js +39 -93
- package/dropdown/Dropdown.test.js +391 -378
- package/dropdown/DropdownMenu.js +8 -19
- package/dropdown/DropdownMenuItem.js +5 -17
- package/dropdown/types.d.ts +17 -19
- package/file-input/FileInput.js +131 -220
- package/file-input/FileInput.stories.tsx +1 -1
- package/file-input/FileInput.test.js +293 -342
- package/file-input/FileItem.js +12 -39
- package/file-input/types.d.ts +9 -9
- package/flex/Flex.js +25 -39
- package/flex/types.d.ts +6 -6
- package/footer/Footer.js +9 -39
- package/footer/Footer.test.js +18 -32
- package/footer/Icons.d.ts +2 -2
- package/footer/Icons.js +2 -7
- package/footer/types.d.ts +13 -13
- package/grid/Grid.js +1 -16
- package/grid/types.d.ts +10 -10
- package/header/Header.d.ts +1 -1
- package/header/Header.js +19 -64
- package/header/Header.test.js +12 -25
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +2 -7
- package/header/types.d.ts +5 -7
- package/heading/Heading.js +9 -31
- package/heading/Heading.test.js +70 -87
- package/heading/types.d.ts +7 -7
- package/image/Image.d.ts +2 -2
- package/image/Image.js +17 -32
- package/image/types.d.ts +2 -2
- package/inset/Inset.js +13 -21
- package/inset/types.d.ts +2 -2
- package/layout/ApplicationLayout.d.ts +1 -1
- package/layout/ApplicationLayout.js +14 -54
- package/layout/Icons.d.ts +5 -5
- package/layout/Icons.js +1 -5
- package/layout/SidenavContext.d.ts +1 -1
- package/layout/SidenavContext.js +3 -9
- package/layout/types.d.ts +3 -3
- package/link/Link.js +21 -42
- package/link/Link.test.js +23 -41
- package/link/types.d.ts +14 -14
- package/main.d.ts +1 -1
- package/main.js +3 -52
- package/nav-tabs/NavTabs.js +11 -43
- package/nav-tabs/NavTabs.stories.tsx +1 -1
- package/nav-tabs/NavTabs.test.js +36 -43
- package/nav-tabs/Tab.js +16 -45
- package/nav-tabs/types.d.ts +9 -9
- package/number-input/NumberInput.d.ts +1 -1
- package/number-input/NumberInput.js +24 -35
- package/number-input/NumberInput.stories.tsx +42 -26
- package/number-input/NumberInput.test.js +682 -577
- package/number-input/types.d.ts +11 -5
- package/package.json +27 -25
- package/paginator/Icons.d.ts +5 -5
- package/paginator/Icons.js +5 -19
- package/paginator/Paginator.js +14 -39
- package/paginator/Paginator.test.js +224 -207
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.js +3 -14
- package/paragraph/Paragraph.stories.tsx +0 -17
- package/password-input/Icons.d.ts +3 -3
- package/password-input/Icons.js +1 -5
- package/password-input/PasswordInput.js +26 -48
- package/password-input/PasswordInput.stories.tsx +1 -33
- package/password-input/PasswordInput.test.js +153 -129
- package/password-input/types.d.ts +8 -7
- package/progress-bar/ProgressBar.js +16 -42
- package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
- package/progress-bar/ProgressBar.test.js +35 -52
- package/progress-bar/types.d.ts +3 -3
- package/quick-nav/QuickNav.js +4 -27
- package/quick-nav/QuickNav.stories.tsx +1 -1
- package/quick-nav/types.d.ts +10 -10
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +22 -54
- package/radio-group/RadioGroup.js +37 -83
- package/radio-group/RadioGroup.stories.tsx +10 -10
- package/radio-group/RadioGroup.test.js +504 -470
- package/radio-group/types.d.ts +8 -8
- package/resultset-table/Icons.d.ts +7 -0
- package/{resultsetTable → resultset-table}/Icons.js +1 -5
- package/{resultsetTable → resultset-table}/ResultsetTable.js +22 -58
- package/{resultsetTable → resultset-table}/ResultsetTable.test.js +72 -92
- package/{resultsetTable → resultset-table}/types.d.ts +7 -7
- package/select/Icons.d.ts +7 -7
- package/select/Icons.js +1 -5
- package/select/Listbox.js +13 -39
- package/select/Option.js +9 -26
- package/select/Select.js +54 -138
- package/select/Select.test.js +1902 -1796
- package/select/types.d.ts +14 -15
- package/sidenav/Icons.d.ts +4 -4
- package/sidenav/Icons.js +1 -5
- package/sidenav/Sidenav.js +24 -63
- package/sidenav/Sidenav.test.js +3 -10
- package/sidenav/types.d.ts +18 -18
- package/slider/Slider.js +38 -86
- package/slider/Slider.test.js +107 -103
- package/slider/types.d.ts +4 -4
- package/spinner/Spinner.js +10 -40
- package/spinner/Spinner.test.js +25 -34
- package/spinner/types.d.ts +3 -3
- package/switch/Switch.js +26 -69
- package/switch/Switch.stories.tsx +0 -34
- package/switch/Switch.test.js +51 -96
- package/switch/types.d.ts +4 -4
- package/table/Table.js +4 -23
- package/table/Table.test.js +1 -6
- package/table/types.d.ts +8 -8
- package/tabs/Tab.js +10 -29
- package/tabs/Tabs.js +48 -124
- package/tabs/Tabs.test.js +62 -118
- package/tabs/types.d.ts +19 -19
- package/tag/Tag.js +21 -51
- package/tag/Tag.test.js +19 -30
- package/tag/types.d.ts +7 -7
- package/text-input/Icons.d.ts +5 -5
- package/text-input/Icons.js +1 -5
- package/text-input/Suggestion.js +9 -26
- package/text-input/Suggestions.d.ts +1 -1
- package/text-input/Suggestions.js +12 -57
- package/text-input/TextInput.js +128 -193
- package/text-input/TextInput.stories.tsx +48 -152
- package/text-input/TextInput.test.js +1210 -1194
- package/text-input/types.d.ts +25 -17
- package/textarea/Textarea.js +60 -96
- package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -99
- package/textarea/Textarea.test.js +150 -179
- package/textarea/types.d.ts +9 -5
- package/toggle-group/ToggleGroup.js +20 -57
- package/toggle-group/ToggleGroup.stories.tsx +1 -1
- package/toggle-group/ToggleGroup.test.js +48 -81
- package/toggle-group/types.d.ts +10 -10
- package/typography/Typography.js +4 -13
- package/typography/types.d.ts +1 -1
- package/useTheme.d.ts +12 -3
- package/useTheme.js +1 -8
- package/useTranslatedLabels.js +1 -7
- package/utils/BaseTypography.d.ts +2 -2
- package/utils/BaseTypography.js +16 -30
- package/utils/FocusLock.js +12 -36
- package/wizard/Wizard.js +14 -49
- package/wizard/Wizard.test.js +53 -80
- package/wizard/types.d.ts +6 -6
- package/resultsetTable/Icons.d.ts +0 -7
- package/slider/Slider.stories.tsx +0 -240
- /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
- /package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +0 -0
- /package/{resultsetTable → resultset-table}/types.js +0 -0
- /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
- /package/table/{Table.stories.jsx → Table.stories.tsx} +0 -0
package/text-input/types.d.ts
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
3
|
+
type Margin = {
|
|
4
4
|
top?: Space;
|
|
5
5
|
bottom?: Space;
|
|
6
6
|
left?: Space;
|
|
7
7
|
right?: Space;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
|
|
10
|
+
type Action = {
|
|
11
11
|
/**
|
|
12
12
|
* This function will be called when the user clicks the action.
|
|
13
13
|
*/
|
|
14
14
|
onClick: () => void;
|
|
15
15
|
/**
|
|
16
|
-
* Icon to be
|
|
16
|
+
* Icon to be placed in the action..
|
|
17
17
|
*/
|
|
18
18
|
icon: string | SVG;
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Text representing advisory information related
|
|
21
|
+
* to the button's action. Under the hood, this prop also serves
|
|
22
|
+
* as an accessible label for the component.
|
|
21
23
|
*/
|
|
22
24
|
title?: string;
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
type Props = {
|
|
25
27
|
/**
|
|
26
28
|
* Text to be placed above the input. This label will be used as the aria-label attribute of the list of suggestions.
|
|
27
29
|
*/
|
|
@@ -47,8 +49,7 @@ declare type Props = {
|
|
|
47
49
|
*/
|
|
48
50
|
placeholder?: string;
|
|
49
51
|
/**
|
|
50
|
-
* Action to be shown in the input.
|
|
51
|
-
* being the latter either an inline svg or a URL to the image.
|
|
52
|
+
* Action to be shown in the input.
|
|
52
53
|
*/
|
|
53
54
|
action?: Action;
|
|
54
55
|
/**
|
|
@@ -59,6 +60,12 @@ declare type Props = {
|
|
|
59
60
|
* If true, the component will be disabled.
|
|
60
61
|
*/
|
|
61
62
|
disabled?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* If true, the component will not be mutable, meaning the user can not edit the control.
|
|
65
|
+
* In addition, the clear action will not be displayed even if the flag is set to true
|
|
66
|
+
* and the custom action will not execute its onClick event.
|
|
67
|
+
*/
|
|
68
|
+
readOnly?: boolean;
|
|
62
69
|
/**
|
|
63
70
|
* If true, the input will be optional, showing '(Optional)'
|
|
64
71
|
* next to the label. Otherwise, the field will be considered required and an error will be
|
|
@@ -106,8 +113,9 @@ declare type Props = {
|
|
|
106
113
|
/**
|
|
107
114
|
* These are the options to be displayed as suggestions. It can be either an array or a function:
|
|
108
115
|
* - Array: Array of options that will be filtered by the component.
|
|
109
|
-
* - Function: This function will be called when the user changes the value
|
|
110
|
-
*
|
|
116
|
+
* - Function: This function will be called when the user changes the value.
|
|
117
|
+
* It will receive the new value as a parameter and should return a promise
|
|
118
|
+
* that resolves to an array with the filtered options.
|
|
111
119
|
*/
|
|
112
120
|
suggestions?: string[] | ((value: string) => Promise<string[]>);
|
|
113
121
|
/**
|
|
@@ -121,7 +129,7 @@ declare type Props = {
|
|
|
121
129
|
*/
|
|
122
130
|
pattern?: string;
|
|
123
131
|
/**
|
|
124
|
-
* Specifies the
|
|
132
|
+
* Specifies the minimum length allowed by the input.
|
|
125
133
|
* This will be checked both when the input element loses the
|
|
126
134
|
* focus and while typing within it. If the string entered does not
|
|
127
135
|
* comply the minimum length, the onBlur and onChange functions will be called
|
|
@@ -162,7 +170,7 @@ declare type Props = {
|
|
|
162
170
|
/**
|
|
163
171
|
* List of suggestions of an Text Input component.
|
|
164
172
|
*/
|
|
165
|
-
export
|
|
173
|
+
export type SuggestionsProps = {
|
|
166
174
|
id: string;
|
|
167
175
|
value: string;
|
|
168
176
|
suggestions: string[];
|
|
@@ -171,16 +179,16 @@ export declare type SuggestionsProps = {
|
|
|
171
179
|
searchHasErrors: boolean;
|
|
172
180
|
isSearching: boolean;
|
|
173
181
|
suggestionOnClick: (suggestion: string) => void;
|
|
174
|
-
|
|
182
|
+
styles: React.CSSProperties;
|
|
175
183
|
};
|
|
176
184
|
/**
|
|
177
185
|
* Reference to the component.
|
|
178
186
|
*/
|
|
179
|
-
export
|
|
187
|
+
export type RefType = HTMLDivElement;
|
|
180
188
|
/**
|
|
181
189
|
* Single suggestion of an Text Input component.
|
|
182
190
|
*/
|
|
183
|
-
export
|
|
191
|
+
export type SuggestionProps = {
|
|
184
192
|
id: string;
|
|
185
193
|
value: string;
|
|
186
194
|
onClick: (suggestion: string) => void;
|
|
@@ -189,7 +197,7 @@ export declare type SuggestionProps = {
|
|
|
189
197
|
visuallyFocused: boolean;
|
|
190
198
|
highlighted: boolean;
|
|
191
199
|
};
|
|
192
|
-
export
|
|
200
|
+
export type AutosuggestWrapperProps = {
|
|
193
201
|
condition: boolean;
|
|
194
202
|
wrapper: (children: React.ReactNode) => JSX.Element;
|
|
195
203
|
children: React.ReactNode;
|
package/textarea/Textarea.js
CHANGED
|
@@ -1,101 +1,79 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports["default"] = void 0;
|
|
11
|
-
|
|
12
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
|
|
14
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
-
|
|
16
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
-
|
|
18
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
13
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
|
-
|
|
22
14
|
var _utils = require("../common/utils");
|
|
23
|
-
|
|
24
15
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
|
-
|
|
26
16
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
27
|
-
|
|
28
17
|
var _variables = require("../common/variables");
|
|
29
|
-
|
|
30
18
|
var _uuid = require("uuid");
|
|
31
|
-
|
|
32
19
|
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
33
|
-
|
|
34
20
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
35
|
-
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
|
-
|
|
21
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
22
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
40
23
|
var patternMatch = function patternMatch(pattern, value) {
|
|
41
24
|
return new RegExp(pattern).test(value);
|
|
42
25
|
};
|
|
43
|
-
|
|
44
26
|
var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
45
27
|
var label = _ref.label,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
28
|
+
_ref$name = _ref.name,
|
|
29
|
+
name = _ref$name === void 0 ? "" : _ref$name,
|
|
30
|
+
_ref$defaultValue = _ref.defaultValue,
|
|
31
|
+
defaultValue = _ref$defaultValue === void 0 ? "" : _ref$defaultValue,
|
|
32
|
+
value = _ref.value,
|
|
33
|
+
helperText = _ref.helperText,
|
|
34
|
+
_ref$placeholder = _ref.placeholder,
|
|
35
|
+
placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
|
|
36
|
+
_ref$disabled = _ref.disabled,
|
|
37
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
38
|
+
_ref$readOnly = _ref.readOnly,
|
|
39
|
+
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
40
|
+
_ref$optional = _ref.optional,
|
|
41
|
+
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
42
|
+
_ref$verticalGrow = _ref.verticalGrow,
|
|
43
|
+
verticalGrow = _ref$verticalGrow === void 0 ? "auto" : _ref$verticalGrow,
|
|
44
|
+
_ref$rows = _ref.rows,
|
|
45
|
+
rows = _ref$rows === void 0 ? 4 : _ref$rows,
|
|
46
|
+
onChange = _ref.onChange,
|
|
47
|
+
onBlur = _ref.onBlur,
|
|
48
|
+
error = _ref.error,
|
|
49
|
+
pattern = _ref.pattern,
|
|
50
|
+
minLength = _ref.minLength,
|
|
51
|
+
maxLength = _ref.maxLength,
|
|
52
|
+
_ref$autocomplete = _ref.autocomplete,
|
|
53
|
+
autocomplete = _ref$autocomplete === void 0 ? "off" : _ref$autocomplete,
|
|
54
|
+
margin = _ref.margin,
|
|
55
|
+
_ref$size = _ref.size,
|
|
56
|
+
size = _ref$size === void 0 ? "medium" : _ref$size,
|
|
57
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
58
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
76
59
|
var _useState = (0, _react.useState)(defaultValue),
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
60
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
61
|
+
innerValue = _useState2[0],
|
|
62
|
+
setInnerValue = _useState2[1];
|
|
81
63
|
var _useState3 = (0, _react.useState)("textarea-".concat((0, _uuid.v4)())),
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
64
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
|
|
65
|
+
textareaId = _useState4[0];
|
|
85
66
|
var colorsTheme = (0, _useTheme["default"])();
|
|
86
67
|
var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
|
|
87
68
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
88
69
|
var textareaRef = (0, _react.useRef)(null);
|
|
89
70
|
var errorId = "error-".concat(textareaId);
|
|
90
|
-
|
|
91
71
|
var isNotOptional = function isNotOptional(value) {
|
|
92
72
|
return value === "" && !optional;
|
|
93
73
|
};
|
|
94
|
-
|
|
95
74
|
var isLengthIncorrect = function isLengthIncorrect(value) {
|
|
96
75
|
return value !== "" && minLength && maxLength && (value.length < minLength || value.length > maxLength);
|
|
97
76
|
};
|
|
98
|
-
|
|
99
77
|
var changeValue = function changeValue(newValue) {
|
|
100
78
|
value !== null && value !== void 0 ? value : setInnerValue(newValue);
|
|
101
79
|
if (isNotOptional(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
@@ -111,8 +89,14 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
|
|
|
111
89
|
value: newValue
|
|
112
90
|
});
|
|
113
91
|
};
|
|
114
|
-
|
|
115
|
-
|
|
92
|
+
var autoVerticalGrow = function autoVerticalGrow() {
|
|
93
|
+
var textareaLineHeight = parseInt(window.getComputedStyle(textareaRef.current)["line-height"]);
|
|
94
|
+
var textareaPaddingTopBottom = parseInt(window.getComputedStyle(textareaRef.current)["padding-top"]) * 2;
|
|
95
|
+
textareaRef.current.style.height = "".concat(textareaLineHeight * rows, "px");
|
|
96
|
+
var newHeight = textareaRef.current.scrollHeight - textareaPaddingTopBottom;
|
|
97
|
+
textareaRef.current.style.height = "".concat(newHeight, "px");
|
|
98
|
+
};
|
|
99
|
+
var handleOnBlur = function handleOnBlur(event) {
|
|
116
100
|
if (isNotOptional(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
|
|
117
101
|
value: event.target.value,
|
|
118
102
|
error: translatedLabels.formFields.requiredValueErrorMessage
|
|
@@ -126,20 +110,10 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
|
|
|
126
110
|
value: event.target.value
|
|
127
111
|
});
|
|
128
112
|
};
|
|
129
|
-
|
|
130
|
-
var handleTOnChange = function handleTOnChange(event) {
|
|
113
|
+
var handleOnChange = function handleOnChange(event) {
|
|
131
114
|
changeValue(event.target.value);
|
|
115
|
+
verticalGrow === "auto" && autoVerticalGrow();
|
|
132
116
|
};
|
|
133
|
-
|
|
134
|
-
(0, _react.useLayoutEffect)(function () {
|
|
135
|
-
if (verticalGrow === "auto") {
|
|
136
|
-
var textareaLineHeight = parseInt(window.getComputedStyle(textareaRef.current)["line-height"]);
|
|
137
|
-
var textareaPaddingTopBottom = parseInt(window.getComputedStyle(textareaRef.current)["padding-top"]) * 2;
|
|
138
|
-
textareaRef.current.style.height = "".concat(textareaLineHeight * rows, "px");
|
|
139
|
-
var newHeight = textareaRef.current.scrollHeight - textareaPaddingTopBottom;
|
|
140
|
-
textareaRef.current.style.height = "".concat(newHeight, "px");
|
|
141
|
-
}
|
|
142
|
-
}, [value, verticalGrow, rows, innerValue]);
|
|
143
117
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
144
118
|
theme: colorsTheme.textarea
|
|
145
119
|
}, /*#__PURE__*/_react["default"].createElement(TextareaContainer, {
|
|
@@ -161,9 +135,10 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
|
|
|
161
135
|
placeholder: placeholder,
|
|
162
136
|
verticalGrow: verticalGrow,
|
|
163
137
|
rows: rows,
|
|
164
|
-
onChange:
|
|
165
|
-
onBlur:
|
|
138
|
+
onChange: handleOnChange,
|
|
139
|
+
onBlur: handleOnBlur,
|
|
166
140
|
disabled: disabled,
|
|
141
|
+
readOnly: readOnly,
|
|
167
142
|
error: error,
|
|
168
143
|
minLength: minLength,
|
|
169
144
|
maxLength: maxLength,
|
|
@@ -171,27 +146,24 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
|
|
|
171
146
|
backgroundType: backgroundType,
|
|
172
147
|
ref: textareaRef,
|
|
173
148
|
tabIndex: tabIndex,
|
|
174
|
-
"aria-invalid": error ?
|
|
149
|
+
"aria-invalid": error ? true : false,
|
|
175
150
|
"aria-errormessage": error ? errorId : undefined,
|
|
176
|
-
"aria-required":
|
|
151
|
+
"aria-required": !disabled && !optional
|
|
177
152
|
}), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
|
|
178
153
|
id: errorId,
|
|
179
154
|
backgroundType: backgroundType,
|
|
180
155
|
"aria-live": error ? "assertive" : "off"
|
|
181
156
|
}, error)));
|
|
182
157
|
});
|
|
183
|
-
|
|
184
158
|
var sizes = {
|
|
185
159
|
small: "240px",
|
|
186
160
|
medium: "360px",
|
|
187
161
|
large: "480px",
|
|
188
162
|
fillParent: "100%"
|
|
189
163
|
};
|
|
190
|
-
|
|
191
164
|
var calculateWidth = function calculateWidth(margin, size) {
|
|
192
165
|
return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
|
|
193
166
|
};
|
|
194
|
-
|
|
195
167
|
var TextareaContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
|
|
196
168
|
return calculateWidth(props.margin, props.size);
|
|
197
169
|
}, function (props) {
|
|
@@ -205,7 +177,6 @@ var TextareaContainer = _styledComponents["default"].div(_templateObject || (_te
|
|
|
205
177
|
}, function (props) {
|
|
206
178
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
207
179
|
});
|
|
208
|
-
|
|
209
180
|
var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
|
|
210
181
|
return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
|
|
211
182
|
}, function (props) {
|
|
@@ -221,11 +192,9 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
|
|
|
221
192
|
}, function (props) {
|
|
222
193
|
return !props.helperText && "margin-bottom: 0.25rem";
|
|
223
194
|
});
|
|
224
|
-
|
|
225
195
|
var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
|
|
226
196
|
return props.theme.optionalLabelFontWeight;
|
|
227
197
|
});
|
|
228
|
-
|
|
229
198
|
var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: 0.25rem;\n"])), function (props) {
|
|
230
199
|
return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
|
|
231
200
|
}, function (props) {
|
|
@@ -239,19 +208,17 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
|
|
|
239
208
|
}, function (props) {
|
|
240
209
|
return props.theme.helperTextLineHeight;
|
|
241
210
|
});
|
|
242
|
-
|
|
243
|
-
var
|
|
244
|
-
if (
|
|
211
|
+
var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n\n ", "\n\n padding: 0.5rem 1rem;\n box-shadow: 0 0 0 2px transparent;\n border-radius: 0.25rem;\n border: 1px solid\n ", ";\n\n ", "\n\n ", ";\n\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n\n ::placeholder {\n color: ", ";\n }\n"])), function (_ref2) {
|
|
212
|
+
var verticalGrow = _ref2.verticalGrow;
|
|
213
|
+
if (verticalGrow === "none") return "resize: none;";else if (verticalGrow === "auto") return "resize: none; overflow: hidden;";else if (verticalGrow === "manual") return "resize: vertical;";else return "resize: none;";
|
|
245
214
|
}, function (props) {
|
|
246
215
|
if (props.disabled) return props.backgroundType === "dark" ? "background-color: ".concat(props.theme.disabledContainerFillColorOnDark, ";") : "background-color: ".concat(props.theme.disabledContainerFillColor, ";");else return "background-color: transparent;";
|
|
247
216
|
}, function (props) {
|
|
248
|
-
if (props.disabled) return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;else return props.backgroundType === "dark" ? props.theme.enabledBorderColorOnDark : props.theme.enabledBorderColor;
|
|
249
|
-
}, function (props) {
|
|
250
|
-
return props.error && !props.disabled && "border-color: transparent;\n box-shadow: 0 0 0 2px ".concat(props.backgroundType === "dark" ? props.theme.errorBorderColorOnDark : props.theme.errorBorderColor, ";\n ");
|
|
217
|
+
if (props.disabled) return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;else if (props.error) return "transparent";else if (props.readOnly) return props.theme.readOnlyBorderColor;else return props.backgroundType === "dark" ? props.theme.enabledBorderColorOnDark : props.theme.enabledBorderColor;
|
|
251
218
|
}, function (props) {
|
|
252
|
-
return props.disabled && "
|
|
219
|
+
return props.error && !props.disabled && "box-shadow: 0 0 0 2px ".concat(props.backgroundType === "dark" ? props.theme.errorBorderColorOnDark : props.theme.errorBorderColor, ";\n ");
|
|
253
220
|
}, function (props) {
|
|
254
|
-
return !props.disabled
|
|
221
|
+
return !props.disabled ? "&:hover {\n border-color: ".concat(props.error ? "transparent" : props.readOnly ? props.theme.hoverReadOnlyBorderColor : props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor, ";\n ").concat(props.error && "box-shadow: 0 0 0 2px ".concat(props.backgroundType === "dark" ? props.theme.hoverErrorBorderColorOnDark : props.theme.hoverErrorBorderColor, ";"), "\n }\n &:focus, &:focus-within {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor, ";\n }") : "cursor: not-allowed;";
|
|
255
222
|
}, function (props) {
|
|
256
223
|
return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledValueFontColorOnDark : props.theme.disabledValueFontColor : props.backgroundType === "dark" ? props.theme.valueFontColorOnDark : props.theme.valueFontColor;
|
|
257
224
|
}, function (props) {
|
|
@@ -265,12 +232,9 @@ var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templ
|
|
|
265
232
|
}, function (props) {
|
|
266
233
|
return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledPlaceholderFontColorOnDark : props.theme.disabledPlaceholderFontColor : props.backgroundType === "dark" ? props.theme.placeholderFontColorOnDark : props.theme.placeholderFontColor;
|
|
267
234
|
});
|
|
268
|
-
|
|
269
235
|
var Error = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n min-height: 1.5em;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
|
|
270
236
|
return props.backgroundType === "dark" ? props.theme.errorMessageColorOnDark : props.theme.errorMessageColor;
|
|
271
237
|
}, function (props) {
|
|
272
238
|
return props.theme.fontFamily;
|
|
273
239
|
});
|
|
274
|
-
|
|
275
|
-
var _default = DxcTextarea;
|
|
276
|
-
exports["default"] = _default;
|
|
240
|
+
var _default = exports["default"] = DxcTextarea;
|
|
@@ -3,7 +3,6 @@ import DxcTextarea from "./Textarea";
|
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import { BackgroundColorProvider } from "../BackgroundColorContext";
|
|
6
|
-
import DarkContainer from "../../.storybook/components/DarkSection";
|
|
7
6
|
import { HalstackProvider } from "../HalstackContext";
|
|
8
7
|
|
|
9
8
|
export default {
|
|
@@ -20,104 +19,64 @@ const opinionatedTheme = {
|
|
|
20
19
|
|
|
21
20
|
export const Chromatic = () => (
|
|
22
21
|
<>
|
|
23
|
-
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<BackgroundColorProvider color="#333333">
|
|
82
|
-
<DarkContainer>
|
|
83
|
-
<ExampleContainer>
|
|
84
|
-
<Title title="Helper text and optional with value" theme="dark" level={4} />
|
|
85
|
-
<DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
|
|
86
|
-
</ExampleContainer>
|
|
87
|
-
<ExampleContainer>
|
|
88
|
-
<Title title="Disabled" theme="dark" level={4} />
|
|
89
|
-
<DxcTextarea
|
|
90
|
-
label="Disabled"
|
|
91
|
-
optional
|
|
92
|
-
helperText="Sample text"
|
|
93
|
-
placeholder="Enter your text here..."
|
|
94
|
-
disabled
|
|
95
|
-
/>
|
|
96
|
-
</ExampleContainer>
|
|
97
|
-
<ExampleContainer>
|
|
98
|
-
<Title title="Disabled with value" theme="dark" level={4} />
|
|
99
|
-
<DxcTextarea label="Disabled" defaultValue="Example text" disabled />
|
|
100
|
-
</ExampleContainer>
|
|
101
|
-
<ExampleContainer>
|
|
102
|
-
<Title title="With error" theme="dark" level={4} />
|
|
103
|
-
<DxcTextarea
|
|
104
|
-
label="Textarea with error"
|
|
105
|
-
helperText="Helper text"
|
|
106
|
-
placeholder="Enter your text here..."
|
|
107
|
-
error="Error message."
|
|
108
|
-
/>
|
|
109
|
-
</ExampleContainer>
|
|
110
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
111
|
-
<Title title="Hovered with error" theme="dark" level={4} />
|
|
112
|
-
<DxcTextarea
|
|
113
|
-
label="Hovered textarea with error"
|
|
114
|
-
helperText="Helper text"
|
|
115
|
-
placeholder="Enter your text here..."
|
|
116
|
-
error="Error message."
|
|
117
|
-
/>
|
|
118
|
-
</ExampleContainer>
|
|
119
|
-
</DarkContainer>
|
|
120
|
-
</BackgroundColorProvider>
|
|
22
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
23
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
24
|
+
<DxcTextarea label="Hovered" />
|
|
25
|
+
</ExampleContainer>
|
|
26
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
27
|
+
<Title title="Focused" theme="light" level={4} />
|
|
28
|
+
<DxcTextarea label="Focused" />
|
|
29
|
+
</ExampleContainer>
|
|
30
|
+
<ExampleContainer>
|
|
31
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
32
|
+
<DxcTextarea label="Disabled" optional helperText="Sample text" placeholder="Enter your text here..." disabled />
|
|
33
|
+
</ExampleContainer>
|
|
34
|
+
<ExampleContainer>
|
|
35
|
+
<Title title="Disabled with value" theme="light" level={4} />
|
|
36
|
+
<DxcTextarea label="Disabled" defaultValue="Example text" disabled />
|
|
37
|
+
</ExampleContainer>
|
|
38
|
+
<ExampleContainer>
|
|
39
|
+
<Title title="Read only" theme="light" level={4} />
|
|
40
|
+
<DxcTextarea label="Label" readOnly defaultValue="Example text" verticalGrow="manual" />
|
|
41
|
+
</ExampleContainer>
|
|
42
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
43
|
+
<Title title="Hovered read only" theme="light" level={4} />
|
|
44
|
+
<DxcTextarea label="Label" readOnly defaultValue="Example text" verticalGrow="manual" />
|
|
45
|
+
</ExampleContainer>
|
|
46
|
+
<ExampleContainer>
|
|
47
|
+
<Title title="With error" theme="light" level={4} />
|
|
48
|
+
<DxcTextarea
|
|
49
|
+
label="Textarea with error"
|
|
50
|
+
helperText="Helper text"
|
|
51
|
+
placeholder="Enter your text here..."
|
|
52
|
+
error="Error message."
|
|
53
|
+
/>
|
|
54
|
+
</ExampleContainer>
|
|
55
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
56
|
+
<Title title="Hovered with error" theme="light" level={4} />
|
|
57
|
+
<DxcTextarea
|
|
58
|
+
label="Hovered textarea with error"
|
|
59
|
+
helperText="Helper text"
|
|
60
|
+
placeholder="Enter your text here..."
|
|
61
|
+
error="Error message."
|
|
62
|
+
/>
|
|
63
|
+
</ExampleContainer>
|
|
64
|
+
<ExampleContainer>
|
|
65
|
+
<Title title="Helper text and optional with value" theme="light" level={4} />
|
|
66
|
+
<DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
|
|
67
|
+
</ExampleContainer>
|
|
68
|
+
<ExampleContainer>
|
|
69
|
+
<Title title="Resizable" theme="light" level={4} />
|
|
70
|
+
<DxcTextarea label="With resizer" helperText="Helper text" verticalGrow="manual" />
|
|
71
|
+
</ExampleContainer>
|
|
72
|
+
<ExampleContainer>
|
|
73
|
+
<Title title="Grow manual" theme="light" level={4} />
|
|
74
|
+
<DxcTextarea
|
|
75
|
+
label="Manual vertical grow"
|
|
76
|
+
verticalGrow="manual"
|
|
77
|
+
defaultValue="Long textttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"
|
|
78
|
+
/>
|
|
79
|
+
</ExampleContainer>
|
|
121
80
|
<Title title="Sizes" theme="light" level={2} />
|
|
122
81
|
<ExampleContainer>
|
|
123
82
|
<DxcTextarea label="Small" size="small" />
|