@dxc-technology/halstack-react 6.2.2 → 8.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/HalstackContext.js +7 -8
- package/accordion/types.d.ts +1 -0
- package/accordion-group/types.d.ts +1 -0
- package/box/types.d.ts +1 -0
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +16 -15
- package/checkbox/Checkbox.stories.tsx +79 -59
- package/checkbox/types.d.ts +4 -0
- package/common/variables.js +19 -15
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +258 -0
- package/date-input/DateInput.js +77 -222
- package/date-input/DateInput.stories.tsx +30 -17
- package/date-input/DateInput.test.js +411 -138
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +160 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +115 -0
- package/date-input/types.d.ts +53 -0
- package/dialog/types.d.ts +1 -0
- package/dropdown/Dropdown.js +35 -31
- package/dropdown/Dropdown.test.js +18 -24
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +177 -219
- package/file-input/FileInput.stories.tsx +38 -10
- package/file-input/FileInput.test.js +53 -12
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +38 -63
- package/file-input/types.d.ts +17 -0
- package/flex/Flex.d.ts +1 -1
- package/flex/Flex.js +31 -19
- package/flex/types.d.ts +14 -3
- package/footer/types.d.ts +1 -0
- package/header/types.d.ts +1 -0
- package/link/Link.js +1 -1
- package/number-input/NumberInput.test.js +43 -7
- package/package.json +7 -12
- package/paginator/Paginator.js +2 -2
- package/paginator/Paginator.test.js +1 -1
- package/password-input/PasswordInput.test.js +13 -12
- package/quick-nav/QuickNav.js +11 -12
- package/quick-nav/QuickNav.stories.tsx +97 -19
- package/radio-group/RadioGroup.js +9 -5
- package/radio-group/RadioGroup.test.js +116 -59
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +48 -107
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +23 -41
- package/resultsetTable/types.d.ts +2 -2
- package/select/Select.js +3 -1
- package/select/Select.stories.tsx +2 -5
- package/select/Select.test.js +267 -209
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +5 -4
- package/slider/types.d.ts +4 -0
- package/switch/Switch.d.ts +3 -3
- package/switch/Switch.js +4 -3
- package/switch/types.d.ts +6 -1
- package/table/Table.js +1 -1
- package/table/Table.test.js +1 -1
- package/text-input/TextInput.js +165 -151
- package/text-input/TextInput.test.js +560 -649
- package/text-input/types.d.ts +5 -0
- package/common/RequiredComponent.js +0 -32
|
@@ -2,14 +2,14 @@ import React from "react";
|
|
|
2
2
|
import DxcFileInput from "./FileInput";
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
|
+
import FileItem from "./FileItem";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
7
8
|
title: "File input",
|
|
8
9
|
component: DxcFileInput,
|
|
9
10
|
};
|
|
10
11
|
|
|
11
|
-
const picPreview =
|
|
12
|
-
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAEDklEQVRogdXaXaxcUxQH8J/etloajVT1I9qgCbdIUB8PXPeKBJHgsV5ExAuVivBUgtSDxgNBVMVHxEeRUhIhkpJ40BYhoTShaQglQtA2VR+ttjMe1j45c6cztzNnzszc+09Ocs/Za+39/++zzt5rr7l0D1diA35P14b0bMJgAE+g2uR6FpP7xq4NZCL2YjlOSNdt6VkVj/eNXYu4VhD9G+c3aL8gtVWS7bjEsfhRCFk2ht2yZPNT8hl3WCUIfoZJY9gdhY+T7QM94NUWFmEfDuHCFuyXJNv9OL2LvNrGO2KGn2rD55nks6ErjAog+8B3YXYbfrPwR/Lt+4d/NLYLMrcW8F+efL/DtBJ5tY17EpEvxEbYLgawJfVxXxObRZhbiF2LWCjfE4Y66OeS1Mc/OLnm+Uw8ggP4oYP+j4hHxUy+VEJfL6e+3hTL8/X4RZ7W/FvCGE1xOdZp7wNvhvny9CULtSo+1QMhZWImPpQL+A03YbouCpkqXn8ZqA+jg1iD41P7NF0QMiAy2N0ipDrFWUa/hU9wXp1N6UIuEktsNug3HfY3gD2pr4rYTxrlZ6UJmY3n0mBZ7JYhhDi3ZP1+i6sb2HQsZBJuEEfUqljjV+Ic5QkhzifZylTF+xisae9IyBIRr1nnb+PU1DaoXCHkk5blXfvxGGYoKGQWnhbpdZb/XFNn0w0hGebgBXm4fY/rtClkOn6Wz8j96Vk9uikkw5DRm2JLQrKV4hB2pr+niJznuPI5toRN4rx/u1jZiLfUMqZiBf4Ss7Bb7Bu1WW0v3kgt5mA17i7iPB8vymN1Cy5Obb0W0jFm4Fd5jFbEfjJsggl5UBDeiLvk4bZP/4RcJj76W1p1OE2sXAfFBkgcotYrL0UpghF5BfOkVhzeTQ5rGrRdIXbiVWWxaxNvCG6vHckwq4jsFPXa8YYF8gPYVc2MaisiN/eGVyGsEBy3C86H4d5k8LliFZFeYSq+FlwP218WiJWpIpbY8Y5heeXllNqGdcqriPQKrwrO67MHZwh1ezGvT6SKIKu8VLCYWGareKgPZEZECrS5oP/Dgvtq2Jpuzi6FWmuYh7XyfK5asJ9zk++X5EWARuePsjEZd9SM+afOhBwjz9TtSDeDY3mUgBH526/gFRHnnQhZLD9NejLdvG7sn8yKoj6MtuLSmvaiQibJ8781RNl+V3rwEZaKpGxKQeIZ6sNoD+5s0G87QqYkbksT1yydWpQZDMl/kS16bawb9AN5GK3VfGnvZMwd0qEv+w+ETTgTN4rEcRAninSgVdTP6oE2fFvFf6JIuA1v4XmRkXQVk+UFhGoacKXDJ6eTj72nmGt0DWCbONdkmDBCMgzjK6MrmAtNQCGUvyH2HfXhNmGFZBgRNYD3Ou3ofwlpcfptqgzTAAAAAElFTkSuQmCC";
|
|
12
|
+
const picPreview = "https://cdn.mos.cms.futurecdn.net/CAZ6JXi6huSuN4QGE627NR.jpg"
|
|
13
13
|
|
|
14
14
|
const file1 = new File(["file1"], "file.pdf", { type: "text/plain" });
|
|
15
15
|
const file2 = new File(["file2"], "file2.mp3", {
|
|
@@ -21,7 +21,7 @@ const file3 = new File(["file3"], "file3.png", {
|
|
|
21
21
|
const file4 = new File(["file4"], "file4file4file4file4file4file4file4file4file4.mp4", {
|
|
22
22
|
type: "video",
|
|
23
23
|
});
|
|
24
|
-
const file5 = new File(["
|
|
24
|
+
const file5 = new File(["file5"], "file5file5file5file5file5file5file5file5file5.mp4", {
|
|
25
25
|
type: "video",
|
|
26
26
|
});
|
|
27
27
|
|
|
@@ -53,7 +53,7 @@ const filesExamples = [
|
|
|
53
53
|
file: file4,
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
|
-
error: "
|
|
56
|
+
error: "This error message is a multiline paragraph for testing.",
|
|
57
57
|
file: file5,
|
|
58
58
|
},
|
|
59
59
|
{
|
|
@@ -65,17 +65,45 @@ const filesExamples = [
|
|
|
65
65
|
|
|
66
66
|
export const Chromatic = () => (
|
|
67
67
|
<>
|
|
68
|
+
<Title title="File item states" theme="light" level={2} />
|
|
68
69
|
<ExampleContainer pseudoState="pseudo-hover">
|
|
69
|
-
<Title title="
|
|
70
|
-
<
|
|
70
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
71
|
+
<FileItem
|
|
72
|
+
fileName="file"
|
|
73
|
+
error=""
|
|
74
|
+
singleFileMode={false}
|
|
75
|
+
showPreview={false}
|
|
76
|
+
preview={picPreview}
|
|
77
|
+
type="image/png"
|
|
78
|
+
onDelete={() => {}}
|
|
79
|
+
tabIndex={0}
|
|
80
|
+
/>
|
|
71
81
|
</ExampleContainer>
|
|
72
82
|
<ExampleContainer pseudoState="pseudo-focus">
|
|
73
|
-
<Title title="
|
|
74
|
-
<
|
|
83
|
+
<Title title="Focused" theme="light" level={4} />
|
|
84
|
+
<FileItem
|
|
85
|
+
fileName="file"
|
|
86
|
+
error=""
|
|
87
|
+
singleFileMode={false}
|
|
88
|
+
showPreview={false}
|
|
89
|
+
preview={picPreview}
|
|
90
|
+
type="image/png"
|
|
91
|
+
onDelete={() => {}}
|
|
92
|
+
tabIndex={0}
|
|
93
|
+
/>
|
|
75
94
|
</ExampleContainer>
|
|
76
95
|
<ExampleContainer pseudoState="pseudo-active">
|
|
77
|
-
<Title title="
|
|
78
|
-
<
|
|
96
|
+
<Title title="Actived" theme="light" level={4} />
|
|
97
|
+
<FileItem
|
|
98
|
+
fileName="file"
|
|
99
|
+
error=""
|
|
100
|
+
singleFileMode={false}
|
|
101
|
+
showPreview={false}
|
|
102
|
+
preview={picPreview}
|
|
103
|
+
type="image/png"
|
|
104
|
+
onDelete={() => {}}
|
|
105
|
+
tabIndex={0}
|
|
106
|
+
/>
|
|
79
107
|
</ExampleContainer>
|
|
80
108
|
<Title title="File" theme="light" level={2} />
|
|
81
109
|
<ExampleContainer>
|
|
@@ -14,19 +14,19 @@ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
|
14
14
|
|
|
15
15
|
var _FileInput = _interopRequireDefault(require("./FileInput"));
|
|
16
16
|
|
|
17
|
+
var file1 = new File(["file1"], "file1.png", {
|
|
18
|
+
type: "image/png"
|
|
19
|
+
});
|
|
20
|
+
var file2 = new File(["file2"], "file2.txt", {
|
|
21
|
+
type: "text/plain"
|
|
22
|
+
});
|
|
23
|
+
var allFiles = [{
|
|
24
|
+
file: file1
|
|
25
|
+
}, {
|
|
26
|
+
error: "Error message",
|
|
27
|
+
file: file2
|
|
28
|
+
}];
|
|
17
29
|
describe("FileInput component tests", function () {
|
|
18
|
-
var file1 = new File(["file1"], "file1.png", {
|
|
19
|
-
type: "image/png"
|
|
20
|
-
});
|
|
21
|
-
var file2 = new File(["file2"], "file2.txt", {
|
|
22
|
-
type: "text/plain"
|
|
23
|
-
});
|
|
24
|
-
var allFiles = [{
|
|
25
|
-
file: file1
|
|
26
|
-
}, {
|
|
27
|
-
error: "Error message",
|
|
28
|
-
file: file2
|
|
29
|
-
}];
|
|
30
30
|
test("Renders with correct labels and helper text in file mode", function () {
|
|
31
31
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_FileInput["default"], {
|
|
32
32
|
label: "File input label",
|
|
@@ -454,4 +454,45 @@ describe("FileInput component tests", function () {
|
|
|
454
454
|
}
|
|
455
455
|
}, _callee6);
|
|
456
456
|
})));
|
|
457
|
+
test("File input sends value when submitted in a form", function () {
|
|
458
|
+
var newFile = new File(["newFile"], "newFile.pdf", {
|
|
459
|
+
type: "pdf"
|
|
460
|
+
});
|
|
461
|
+
var handlerOnSubmit = jest.fn(function (e) {
|
|
462
|
+
e.preventDefault();
|
|
463
|
+
var formData = new FormData(e.target);
|
|
464
|
+
var formProps = Object.fromEntries(formData);
|
|
465
|
+
expect(formProps).toStrictEqual({
|
|
466
|
+
file: newFile
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
|
|
471
|
+
onSubmit: handlerOnSubmit
|
|
472
|
+
}, /*#__PURE__*/_react["default"].createElement(_FileInput["default"], {
|
|
473
|
+
label: "File input label",
|
|
474
|
+
name: "file",
|
|
475
|
+
helperText: "File input helper text",
|
|
476
|
+
mode: "filedrop",
|
|
477
|
+
buttonLabel: "Choose",
|
|
478
|
+
dropAreaLabel: "(or drop the files)"
|
|
479
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
480
|
+
type: "submit"
|
|
481
|
+
}, "Submit"))),
|
|
482
|
+
getByText = _render17.getByText,
|
|
483
|
+
getByLabelText = _render17.getByLabelText;
|
|
484
|
+
|
|
485
|
+
var inputFile = getByLabelText("File input label", {
|
|
486
|
+
hidden: true
|
|
487
|
+
});
|
|
488
|
+
var submit = getByText("Submit");
|
|
489
|
+
|
|
490
|
+
_react2.fireEvent.change(inputFile, {
|
|
491
|
+
target: {
|
|
492
|
+
files: [newFile]
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
|
|
496
|
+
_userEvent["default"].click(submit);
|
|
497
|
+
});
|
|
457
498
|
});
|
package/file-input/FileItem.d.ts
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
name?: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
showPreview: any;
|
|
8
|
-
preview: any;
|
|
9
|
-
type: any;
|
|
10
|
-
numFiles: any;
|
|
11
|
-
onDelete: any;
|
|
12
|
-
tabIndex: any;
|
|
13
|
-
}) => JSX.Element;
|
|
14
|
-
export default FileItem;
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { FileItemProps } from "./types";
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ fileName, error, singleFileMode, showPreview, preview, type, onDelete, tabIndex, }: FileItemProps) => JSX.Element>;
|
|
4
|
+
export default _default;
|
package/file-input/FileItem.js
CHANGED
|
@@ -15,9 +15,13 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
15
15
|
|
|
16
16
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
17
17
|
|
|
18
|
+
var _main = require("../main");
|
|
19
|
+
|
|
18
20
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
19
21
|
|
|
20
|
-
var
|
|
22
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
23
|
+
|
|
24
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
21
25
|
|
|
22
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
27
|
|
|
@@ -47,103 +51,75 @@ var errorIcon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
|
47
51
|
}));
|
|
48
52
|
|
|
49
53
|
var FileItem = function FileItem(_ref) {
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
_ref$name = _ref.name,
|
|
53
|
-
name = _ref$name === void 0 ? "" : _ref$name,
|
|
54
|
+
var _ref$fileName = _ref.fileName,
|
|
55
|
+
fileName = _ref$fileName === void 0 ? "" : _ref$fileName,
|
|
54
56
|
_ref$error = _ref.error,
|
|
55
57
|
error = _ref$error === void 0 ? "" : _ref$error,
|
|
58
|
+
singleFileMode = _ref.singleFileMode,
|
|
56
59
|
showPreview = _ref.showPreview,
|
|
57
60
|
preview = _ref.preview,
|
|
58
61
|
type = _ref.type,
|
|
59
|
-
numFiles = _ref.numFiles,
|
|
60
62
|
onDelete = _ref.onDelete,
|
|
61
63
|
tabIndex = _ref.tabIndex;
|
|
62
64
|
var colorsTheme = (0, _useTheme["default"])();
|
|
63
|
-
var
|
|
65
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
64
66
|
|
|
65
67
|
var getIconAriaLabel = function getIconAriaLabel() {
|
|
66
|
-
if (type.includes("video"))
|
|
67
|
-
return "video";
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (type.includes("audio")) {
|
|
71
|
-
return "audio";
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return "file";
|
|
68
|
+
if (type.includes("video")) return "video";else if (type.includes("audio")) return "audio";else return "file";
|
|
75
69
|
};
|
|
76
70
|
|
|
77
71
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
78
72
|
theme: colorsTheme.fileInput
|
|
79
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
80
|
-
mode: mode,
|
|
81
|
-
multiple: multiple,
|
|
73
|
+
}, /*#__PURE__*/_react["default"].createElement(MainContainer, {
|
|
82
74
|
error: error,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}, showPreview && (
|
|
75
|
+
singleFileMode: singleFileMode,
|
|
76
|
+
showPreview: showPreview
|
|
77
|
+
}, showPreview && (type.includes("image") ? /*#__PURE__*/_react["default"].createElement(ImagePreview, {
|
|
86
78
|
src: preview,
|
|
87
|
-
alt:
|
|
88
|
-
}) : /*#__PURE__*/_react["default"].createElement(
|
|
79
|
+
alt: fileName
|
|
80
|
+
}) : /*#__PURE__*/_react["default"].createElement(IconPreview, {
|
|
89
81
|
error: error,
|
|
90
82
|
"aria-label": getIconAriaLabel()
|
|
91
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
mode: mode,
|
|
95
|
-
multiple: multiple,
|
|
96
|
-
error: error,
|
|
97
|
-
showPreview: showPreview,
|
|
98
|
-
numFiles: numFiles
|
|
99
|
-
}, name), error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, {
|
|
100
|
-
"aria-label": "Error"
|
|
101
|
-
}, errorIcon), /*#__PURE__*/_react["default"].createElement(DeleteIcon, {
|
|
102
|
-
error: error,
|
|
83
|
+
}, preview)), /*#__PURE__*/_react["default"].createElement(FileItemContent, null, /*#__PURE__*/_react["default"].createElement(FileName, null, fileName), /*#__PURE__*/_react["default"].createElement(_main.DxcFlex, {
|
|
84
|
+
gap: "0.25rem"
|
|
85
|
+
}, error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, errorIcon), /*#__PURE__*/_react["default"].createElement(DeleteFileAction, {
|
|
103
86
|
onClick: function onClick() {
|
|
104
|
-
|
|
87
|
+
onDelete(fileName);
|
|
105
88
|
},
|
|
106
|
-
|
|
89
|
+
title: translatedLabels.fileInput.deleteFileActionTitle,
|
|
90
|
+
"aria-label": translatedLabels.fileInput.deleteFileActionTitle,
|
|
107
91
|
tabIndex: tabIndex
|
|
108
|
-
}, deleteIcon)), error &&
|
|
92
|
+
}, deleteIcon)), error && !singleFileMode && /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, error))));
|
|
109
93
|
};
|
|
110
94
|
|
|
111
|
-
var
|
|
112
|
-
return props.
|
|
113
|
-
}, function (props) {
|
|
114
|
-
return props.error && props.theme.errorFileItemBackgroundColor;
|
|
115
|
-
}, function (props) {
|
|
116
|
-
return props.theme.fileItemBorderRadius;
|
|
95
|
+
var MainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n gap: 0.75rem;\n width: ", ";\n padding: ", ";\n ", ";\n border-color: ", ";\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n"])), function (props) {
|
|
96
|
+
return props.singleFileMode ? "230px" : "320px";
|
|
117
97
|
}, function (props) {
|
|
118
|
-
return props.
|
|
98
|
+
return props.showPreview ? "calc(8px - ".concat(props.theme.fileItemBorderThickness, ")") : "calc(8px - ".concat(props.theme.fileItemBorderThickness, ") calc(8px - ").concat(props.theme.fileItemBorderThickness, ") calc(8px - ").concat(props.theme.fileItemBorderThickness, ") 16px");
|
|
119
99
|
}, function (props) {
|
|
120
|
-
return props.
|
|
100
|
+
return props.error ? "background-color: ".concat(props.theme.errorFileItemBackgroundColor, ";") : "";
|
|
121
101
|
}, function (props) {
|
|
122
102
|
return props.error ? props.theme.errorFileItemBorderColor : props.theme.fileItemBorderColor;
|
|
123
103
|
}, function (props) {
|
|
124
104
|
return props.theme.fileItemBorderThickness;
|
|
125
105
|
}, function (props) {
|
|
126
106
|
return props.theme.fileItemBorderStyle;
|
|
107
|
+
}, function (props) {
|
|
108
|
+
return props.theme.fileItemBorderRadius;
|
|
127
109
|
});
|
|
128
110
|
|
|
129
|
-
var
|
|
130
|
-
|
|
131
|
-
var FileItemContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: center;\n"])));
|
|
132
|
-
|
|
133
|
-
var ImagePreview = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n height: 48px;\n object-fit: contain;\n margin-right: 12px;\n border-radius: 2px;\n"])));
|
|
111
|
+
var ImagePreview = _styledComponents["default"].img(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n height: 48px;\n border-radius: 2px;\n object-fit: contain;\n"])));
|
|
134
112
|
|
|
135
|
-
var
|
|
113
|
+
var IconPreview = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n width: 48px;\n height: 48px;\n padding: 15px;\n border-radius: 2px;\n color: ", ";\n\n svg {\n height: 18px;\n width: 18px;\n }\n"])), function (props) {
|
|
136
114
|
return props.error ? props.theme.errorFilePreviewBackgroundColor : props.theme.filePreviewBackgroundColor;
|
|
137
115
|
}, function (props) {
|
|
138
116
|
return props.error ? props.theme.errorFilePreviewIconColor : props.theme.filePreviewIconColor;
|
|
139
117
|
});
|
|
140
118
|
|
|
141
|
-
var
|
|
119
|
+
var FileItemContent = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 1;\n display: grid;\n grid-template-columns: auto min-content;\n grid-template-rows: min-content auto;\n column-gap: 0.25rem;\n"])));
|
|
142
120
|
|
|
143
|
-
var FileName = _styledComponents["default"].span(
|
|
121
|
+
var FileName = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n align-self: center;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])), function (props) {
|
|
144
122
|
return props.theme.fileNameFontColor;
|
|
145
|
-
}, function (props) {
|
|
146
|
-
return props.mode === "file" && !props.multiple && props.error && props.numFiles === 1 ? "calc(230px - 76px)" : props.mode === "file" && !props.multiple && !props.error && props.numFiles === 1 ? "calc(230px - 50px)" : !props.showPreview && !props.error ? "calc(320px - 52px)" : !props.showPreview && props.error ? "calc(320px - 76px)" : props.showPreview && props.error ? "calc(320px - 128px)" : props.showPreview && !props.error && "calc(320px - 102px)";
|
|
147
123
|
}, function (props) {
|
|
148
124
|
return props.theme.fileItemFontFamily;
|
|
149
125
|
}, function (props) {
|
|
@@ -154,9 +130,9 @@ var FileName = _styledComponents["default"].span(_templateObject7 || (_templateO
|
|
|
154
130
|
return props.theme.fileItemLineHeight;
|
|
155
131
|
});
|
|
156
132
|
|
|
157
|
-
var ErrorIcon = _styledComponents["default"].span(
|
|
133
|
+
var ErrorIcon = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n color: #d0011b;\n"])));
|
|
158
134
|
|
|
159
|
-
var
|
|
135
|
+
var DeleteFileAction = _styledComponents["default"].button(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n cursor: pointer;\n color: ", ";\n\n svg {\n line-height: 18px;\n }\n &:hover {\n background-color: ", ";\n }\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
|
|
160
136
|
return props.theme.fontFamily;
|
|
161
137
|
}, function (props) {
|
|
162
138
|
return props.theme.deleteFileItemColor;
|
|
@@ -164,13 +140,11 @@ var DeleteIcon = _styledComponents["default"].button(_templateObject9 || (_templ
|
|
|
164
140
|
return props.theme.hoverDeleteFileItemBackgroundColor;
|
|
165
141
|
}, function (props) {
|
|
166
142
|
return props.theme.focusDeleteFileItemBorderColor;
|
|
167
|
-
}, function (props) {
|
|
168
|
-
return props.theme.focusDeleteFileItemBorderColor;
|
|
169
143
|
}, function (props) {
|
|
170
144
|
return props.theme.activeDeleteFileItemBackgroundColor;
|
|
171
145
|
});
|
|
172
146
|
|
|
173
|
-
var ErrorMessage = _styledComponents["default"].span(
|
|
147
|
+
var ErrorMessage = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
|
|
174
148
|
return props.theme.errorMessageFontColor;
|
|
175
149
|
}, function (props) {
|
|
176
150
|
return props.theme.errorMessageFontFamily;
|
|
@@ -182,5 +156,6 @@ var ErrorMessage = _styledComponents["default"].span(_templateObject10 || (_temp
|
|
|
182
156
|
return props.theme.errorMessageLineHeight;
|
|
183
157
|
});
|
|
184
158
|
|
|
185
|
-
var _default = FileItem;
|
|
159
|
+
var _default = /*#__PURE__*/_react["default"].memo(FileItem);
|
|
160
|
+
|
|
186
161
|
exports["default"] = _default;
|
package/file-input/types.d.ts
CHANGED
|
@@ -108,5 +108,22 @@ declare type FileModeProps = CommonProps & {
|
|
|
108
108
|
*/
|
|
109
109
|
dropAreaLabel?: never;
|
|
110
110
|
};
|
|
111
|
+
/**
|
|
112
|
+
* Reference to the component.
|
|
113
|
+
*/
|
|
114
|
+
export declare type RefType = HTMLDivElement;
|
|
111
115
|
declare type Props = DropModeProps | FileModeProps;
|
|
116
|
+
/**
|
|
117
|
+
* Single file item preview.
|
|
118
|
+
*/
|
|
119
|
+
export declare type FileItemProps = {
|
|
120
|
+
fileName?: string;
|
|
121
|
+
error?: string;
|
|
122
|
+
showPreview: boolean;
|
|
123
|
+
singleFileMode: boolean;
|
|
124
|
+
preview: string;
|
|
125
|
+
type: string;
|
|
126
|
+
onDelete: (fileName: string) => void;
|
|
127
|
+
tabIndex: number;
|
|
128
|
+
};
|
|
112
129
|
export default Props;
|
package/flex/Flex.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import FlexPropsType from "./types";
|
|
3
|
-
declare const DxcFlex: ({ children, ...props }: FlexPropsType) => JSX.Element;
|
|
3
|
+
declare const DxcFlex: ({ direction, wrap, gap, order, grow, shrink, basis, children, ...props }: FlexPropsType) => JSX.Element;
|
|
4
4
|
export default DxcFlex;
|
package/flex/Flex.js
CHANGED
|
@@ -11,6 +11,8 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
11
11
|
|
|
12
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
13
|
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
+
|
|
14
16
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
17
|
|
|
16
18
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -19,20 +21,39 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
19
21
|
|
|
20
22
|
var _templateObject;
|
|
21
23
|
|
|
22
|
-
var _excluded = ["children"]
|
|
24
|
+
var _excluded = ["direction", "wrap", "gap", "order", "grow", "shrink", "basis", "children"],
|
|
25
|
+
_excluded2 = ["justifyContent", "alignItems", "alignContent", "alignSelf"];
|
|
23
26
|
|
|
24
27
|
var DxcFlex = function DxcFlex(_ref) {
|
|
25
|
-
var
|
|
28
|
+
var _ref$direction = _ref.direction,
|
|
29
|
+
direction = _ref$direction === void 0 ? "row" : _ref$direction,
|
|
30
|
+
_ref$wrap = _ref.wrap,
|
|
31
|
+
wrap = _ref$wrap === void 0 ? "nowrap" : _ref$wrap,
|
|
32
|
+
_ref$gap = _ref.gap,
|
|
33
|
+
gap = _ref$gap === void 0 ? "0" : _ref$gap,
|
|
34
|
+
_ref$order = _ref.order,
|
|
35
|
+
order = _ref$order === void 0 ? 0 : _ref$order,
|
|
36
|
+
_ref$grow = _ref.grow,
|
|
37
|
+
grow = _ref$grow === void 0 ? 0 : _ref$grow,
|
|
38
|
+
_ref$shrink = _ref.shrink,
|
|
39
|
+
shrink = _ref$shrink === void 0 ? 1 : _ref$shrink,
|
|
40
|
+
_ref$basis = _ref.basis,
|
|
41
|
+
basis = _ref$basis === void 0 ? "auto" : _ref$basis,
|
|
42
|
+
children = _ref.children,
|
|
26
43
|
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
27
|
-
return /*#__PURE__*/_react["default"].createElement(Flex,
|
|
44
|
+
return /*#__PURE__*/_react["default"].createElement(Flex, (0, _extends2["default"])({
|
|
45
|
+
$direction: direction,
|
|
46
|
+
$wrap: wrap,
|
|
47
|
+
$order: order,
|
|
48
|
+
$grow: grow,
|
|
49
|
+
$shrink: shrink,
|
|
50
|
+
$basis: basis,
|
|
51
|
+
$gap: gap
|
|
52
|
+
}, props), children);
|
|
28
53
|
};
|
|
29
54
|
|
|
30
55
|
var Flex = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n"])), function (_ref2) {
|
|
31
|
-
var _ref2$
|
|
32
|
-
direction = _ref2$direction === void 0 ? "row" : _ref2$direction,
|
|
33
|
-
_ref2$wrap = _ref2.wrap,
|
|
34
|
-
wrap = _ref2$wrap === void 0 ? "nowrap" : _ref2$wrap,
|
|
35
|
-
_ref2$justifyContent = _ref2.justifyContent,
|
|
56
|
+
var _ref2$justifyContent = _ref2.justifyContent,
|
|
36
57
|
justifyContent = _ref2$justifyContent === void 0 ? "flex-start" : _ref2$justifyContent,
|
|
37
58
|
_ref2$alignItems = _ref2.alignItems,
|
|
38
59
|
alignItems = _ref2$alignItems === void 0 ? "stretch" : _ref2$alignItems,
|
|
@@ -40,17 +61,8 @@ var Flex = _styledComponents["default"].div(_templateObject || (_templateObject
|
|
|
40
61
|
alignContent = _ref2$alignContent === void 0 ? "normal" : _ref2$alignContent,
|
|
41
62
|
_ref2$alignSelf = _ref2.alignSelf,
|
|
42
63
|
alignSelf = _ref2$alignSelf === void 0 ? "auto" : _ref2$alignSelf,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
_ref2$order = _ref2.order,
|
|
46
|
-
order = _ref2$order === void 0 ? 0 : _ref2$order,
|
|
47
|
-
_ref2$grow = _ref2.grow,
|
|
48
|
-
grow = _ref2$grow === void 0 ? 0 : _ref2$grow,
|
|
49
|
-
_ref2$shrink = _ref2.shrink,
|
|
50
|
-
shrink = _ref2$shrink === void 0 ? 1 : _ref2$shrink,
|
|
51
|
-
_ref2$basis = _ref2.basis,
|
|
52
|
-
basis = _ref2$basis === void 0 ? "auto" : _ref2$basis;
|
|
53
|
-
return "\n flex-direction: ".concat(direction, "; \n flex-wrap: ").concat(wrap, "; \n justify-content: ").concat(justifyContent, "; \n align-items: ").concat(alignItems, ";\n align-content: ").concat(alignContent, ";\n align-self: ").concat(alignSelf, ";\n gap: ").concat((0, _typeof2["default"])(gap) === "object" ? "".concat(gap.rowGap, " ").concat(gap.columnGap) : gap, ";\n order: ").concat(order, ";\n flex-grow: ").concat(grow, ";\n flex-shrink: ").concat(shrink, ";\n flex-basis: ").concat(basis, ";\n ");
|
|
64
|
+
props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
|
|
65
|
+
return "\n flex-direction: ".concat(props.$direction, "; \n flex-wrap: ").concat(props.$wrap, "; \n justify-content: ").concat(justifyContent, "; \n align-items: ").concat(alignItems, ";\n align-content: ").concat(alignContent, ";\n align-self: ").concat(alignSelf, ";\n gap: ").concat((0, _typeof2["default"])(props.$gap) === "object" ? "".concat(props.$gap.rowGap, " ").concat(props.$gap.columnGap) : props.$gap, ";\n order: ").concat(props.$order, ";\n flex-grow: ").concat(props.$grow, ";\n flex-shrink: ").concat(props.$shrink, ";\n flex-basis: ").concat(props.$basis, ";\n ");
|
|
54
66
|
});
|
|
55
67
|
|
|
56
68
|
var _default = DxcFlex;
|
package/flex/types.d.ts
CHANGED
|
@@ -3,13 +3,15 @@ declare type Gap = {
|
|
|
3
3
|
rowGap: string;
|
|
4
4
|
columnGap: string;
|
|
5
5
|
};
|
|
6
|
-
declare type
|
|
7
|
-
direction?: "row" | "row-reverse" | "column" | "column-reverse";
|
|
8
|
-
wrap?: "nowrap" | "wrap" | "wrap-reverse";
|
|
6
|
+
declare type CommonProps = {
|
|
9
7
|
justifyContent?: "flex-start" | "flex-end" | "start" | "end" | "left" | "right" | "center" | "space-between" | "space-around" | "space-evenly";
|
|
10
8
|
alignItems?: "stretch" | "flex-start" | "flex-end" | "start" | "end" | "self-start" | "self-end" | "center" | "baseline";
|
|
11
9
|
alignContent?: "normal" | "flex-start" | "flex-end" | "start" | "end" | "center" | "space-between" | "space-around" | "space-evenly" | "stretch";
|
|
12
10
|
alignSelf?: "auto" | "flex-start" | "flex-end" | "center" | "baseline" | "stretch";
|
|
11
|
+
};
|
|
12
|
+
declare type Props = CommonProps & {
|
|
13
|
+
direction?: "row" | "row-reverse" | "column" | "column-reverse";
|
|
14
|
+
wrap?: "nowrap" | "wrap" | "wrap-reverse";
|
|
13
15
|
gap?: string | Gap;
|
|
14
16
|
order?: number;
|
|
15
17
|
grow?: number;
|
|
@@ -18,4 +20,13 @@ declare type Props = {
|
|
|
18
20
|
as?: keyof HTMLElementTagNameMap;
|
|
19
21
|
children: React.ReactNode;
|
|
20
22
|
};
|
|
23
|
+
export declare type StyledProps = CommonProps & {
|
|
24
|
+
$direction?: "row" | "row-reverse" | "column" | "column-reverse";
|
|
25
|
+
$wrap?: "nowrap" | "wrap" | "wrap-reverse";
|
|
26
|
+
$gap?: string | Gap;
|
|
27
|
+
$order?: number;
|
|
28
|
+
$grow?: number;
|
|
29
|
+
$shrink?: number;
|
|
30
|
+
$basis?: string;
|
|
31
|
+
};
|
|
21
32
|
export default Props;
|
package/footer/types.d.ts
CHANGED
|
@@ -57,6 +57,7 @@ declare type FooterPropsType = {
|
|
|
57
57
|
*/
|
|
58
58
|
margin?: Space | Size;
|
|
59
59
|
/**
|
|
60
|
+
* @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
|
|
60
61
|
* Size of the padding to be applied to the custom area of the component.
|
|
61
62
|
* You can pass an object with properties in order to specify different padding sizes.
|
|
62
63
|
*/
|
package/header/types.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ declare type Props = {
|
|
|
32
32
|
*/
|
|
33
33
|
margin?: Space;
|
|
34
34
|
/**
|
|
35
|
+
* @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
|
|
35
36
|
* Size of the padding to be applied to the custom area of the component
|
|
36
37
|
* ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
|
|
37
38
|
* You can pass an object with 'top', 'bottom', 'left' and 'right' properties in
|
package/link/Link.js
CHANGED
|
@@ -68,7 +68,7 @@ var DxcLink = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
|
|
|
68
68
|
}, /*#__PURE__*/_react["default"].createElement(StyledLink, (0, _extends2["default"])({
|
|
69
69
|
as: href ? "a" : "button",
|
|
70
70
|
tabIndex: tabIndex,
|
|
71
|
-
onClick: !disabled
|
|
71
|
+
onClick: !disabled ? onClick : undefined,
|
|
72
72
|
href: !disabled && href ? href : undefined,
|
|
73
73
|
target: href ? newWindow ? "_blank" : "_self" : undefined,
|
|
74
74
|
disabled: disabled,
|
|
@@ -83,7 +83,7 @@ describe("Number input component tests", function () {
|
|
|
83
83
|
})),
|
|
84
84
|
getByRole = _render8.getByRole;
|
|
85
85
|
|
|
86
|
-
var input = getByRole("
|
|
86
|
+
var input = getByRole("spinbutton");
|
|
87
87
|
|
|
88
88
|
_userEvent["default"].type(input, "1");
|
|
89
89
|
|
|
@@ -366,12 +366,7 @@ describe("Number input component tests", function () {
|
|
|
366
366
|
expect(number.value).toBe("10");
|
|
367
367
|
});
|
|
368
368
|
test("Increment and decrement the value with min, max and step", function () {
|
|
369
|
-
var onBlur = jest.fn(
|
|
370
|
-
var value = _ref3.value,
|
|
371
|
-
error = _ref3.error;
|
|
372
|
-
expect(value).toBe("1");
|
|
373
|
-
expect(error).toBe("Value must be greater than or equal to 5.");
|
|
374
|
-
});
|
|
369
|
+
var onBlur = jest.fn();
|
|
375
370
|
|
|
376
371
|
var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
|
|
377
372
|
label: "Number input label",
|
|
@@ -389,6 +384,10 @@ describe("Number input component tests", function () {
|
|
|
389
384
|
|
|
390
385
|
_react2.fireEvent.blur(number);
|
|
391
386
|
|
|
387
|
+
expect(onBlur).toHaveBeenCalledWith({
|
|
388
|
+
value: "1",
|
|
389
|
+
error: "Value must be greater than or equal to 5."
|
|
390
|
+
});
|
|
392
391
|
var increment = getAllByRole("button")[1];
|
|
393
392
|
|
|
394
393
|
_userEvent["default"].click(increment);
|
|
@@ -503,4 +502,41 @@ describe("Number input component tests", function () {
|
|
|
503
502
|
var increment = getAllByRole("button")[1];
|
|
504
503
|
expect(increment.getAttribute("aria-label")).toBe("Increment value");
|
|
505
504
|
});
|
|
505
|
+
test("Number input submits correct values in a form", function () {
|
|
506
|
+
var handlerOnSubmit = jest.fn(function (e) {
|
|
507
|
+
e.preventDefault();
|
|
508
|
+
var formData = new FormData(e.target);
|
|
509
|
+
var formProps = Object.fromEntries(formData);
|
|
510
|
+
expect(formProps).toStrictEqual({
|
|
511
|
+
data: "0"
|
|
512
|
+
});
|
|
513
|
+
});
|
|
514
|
+
|
|
515
|
+
var _render23 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement("form", {
|
|
516
|
+
onSubmit: handlerOnSubmit
|
|
517
|
+
}, /*#__PURE__*/_react["default"].createElement(_NumberInput["default"], {
|
|
518
|
+
label: "Number input label",
|
|
519
|
+
name: "data"
|
|
520
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
521
|
+
type: "submit"
|
|
522
|
+
}, "Submit"))),
|
|
523
|
+
getByText = _render23.getByText,
|
|
524
|
+
getAllByRole = _render23.getAllByRole;
|
|
525
|
+
|
|
526
|
+
var less = getAllByRole("button")[0];
|
|
527
|
+
var more = getAllByRole("button")[1];
|
|
528
|
+
var submit = getByText("Submit");
|
|
529
|
+
|
|
530
|
+
_userEvent["default"].click(more);
|
|
531
|
+
|
|
532
|
+
expect(handlerOnSubmit).not.toHaveBeenCalled();
|
|
533
|
+
|
|
534
|
+
_userEvent["default"].click(less);
|
|
535
|
+
|
|
536
|
+
expect(handlerOnSubmit).not.toHaveBeenCalled();
|
|
537
|
+
|
|
538
|
+
_userEvent["default"].click(submit);
|
|
539
|
+
|
|
540
|
+
expect(handlerOnSubmit).toHaveBeenCalled();
|
|
541
|
+
});
|
|
506
542
|
});
|