@dxc-technology/halstack-react 0.0.0-7f5e42c → 0.0.0-7ffa3f4
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 +1 -10
- package/BackgroundColorContext.js +5 -22
- package/HalstackContext.d.ts +1243 -6
- package/HalstackContext.js +125 -110
- package/README.md +47 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +37 -100
- package/accordion/Accordion.stories.tsx +101 -124
- package/accordion/Accordion.test.js +20 -35
- package/accordion/types.d.ts +5 -16
- package/accordion-group/AccordionGroup.d.ts +4 -3
- package/accordion-group/AccordionGroup.js +29 -77
- package/accordion-group/AccordionGroup.stories.tsx +78 -77
- package/accordion-group/AccordionGroup.test.js +44 -72
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +31 -0
- package/accordion-group/types.d.ts +6 -17
- package/action-icon/ActionIcon.d.ts +4 -0
- package/action-icon/ActionIcon.js +47 -0
- package/action-icon/ActionIcon.stories.tsx +41 -0
- package/action-icon/ActionIcon.test.js +64 -0
- package/action-icon/types.d.ts +26 -0
- package/alert/Alert.js +20 -59
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +29 -46
- package/alert/types.d.ts +5 -5
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +141 -43
- package/badge/Badge.stories.tsx +210 -0
- package/badge/Badge.test.js +30 -0
- package/badge/types.d.ts +52 -3
- package/bleed/Bleed.js +13 -21
- package/bleed/Bleed.stories.tsx +1 -0
- package/bleed/types.d.ts +2 -2
- package/box/Box.d.ts +1 -1
- package/box/Box.js +19 -60
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +2 -7
- package/box/types.d.ts +3 -14
- package/bulleted-list/BulletedList.js +19 -53
- package/bulleted-list/BulletedList.stories.tsx +8 -93
- package/bulleted-list/types.d.ts +32 -5
- package/button/Button.d.ts +1 -1
- package/button/Button.js +69 -105
- package/button/Button.stories.tsx +152 -91
- package/button/Button.test.js +20 -17
- package/button/types.d.ts +8 -4
- package/card/Card.d.ts +1 -1
- package/card/Card.js +48 -89
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +11 -22
- package/card/types.d.ts +6 -11
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +140 -182
- package/checkbox/Checkbox.stories.tsx +128 -94
- package/checkbox/Checkbox.test.js +160 -39
- package/checkbox/types.d.ts +11 -3
- package/chip/Chip.js +39 -79
- package/chip/Chip.stories.tsx +121 -26
- package/chip/Chip.test.js +16 -31
- package/chip/types.d.ts +4 -4
- package/common/OpenSans.css +68 -80
- package/common/coreTokens.d.ts +237 -0
- package/common/coreTokens.js +184 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +6 -12
- package/common/variables.d.ts +1395 -0
- package/common/variables.js +921 -1162
- package/container/Container.d.ts +4 -0
- package/container/Container.js +194 -0
- package/container/Container.stories.tsx +214 -0
- package/container/types.d.ts +74 -0
- package/contextual-menu/ContextualMenu.d.ts +7 -0
- package/contextual-menu/ContextualMenu.js +71 -0
- package/contextual-menu/ContextualMenu.stories.tsx +182 -0
- package/contextual-menu/ContextualMenu.test.js +71 -0
- package/contextual-menu/MenuItemAction.d.ts +4 -0
- package/contextual-menu/MenuItemAction.js +46 -0
- package/contextual-menu/types.d.ts +22 -0
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +214 -0
- package/date-input/DateInput.js +150 -299
- package/date-input/DateInput.stories.tsx +203 -56
- package/date-input/DateInput.test.js +700 -371
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +115 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +58 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +100 -0
- package/date-input/types.d.ts +72 -15
- package/dialog/Dialog.d.ts +1 -1
- package/dialog/Dialog.js +60 -118
- package/dialog/Dialog.stories.tsx +320 -166
- package/dialog/Dialog.test.js +269 -32
- package/dialog/types.d.ts +18 -25
- package/dropdown/Dropdown.js +81 -132
- package/dropdown/Dropdown.stories.tsx +210 -84
- package/dropdown/Dropdown.test.js +410 -402
- package/dropdown/DropdownMenu.js +20 -37
- package/dropdown/DropdownMenuItem.js +10 -35
- package/dropdown/types.d.ts +17 -19
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +241 -355
- package/file-input/FileInput.stories.tsx +123 -12
- package/file-input/FileInput.test.js +369 -367
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +45 -96
- package/file-input/types.d.ts +25 -8
- package/flex/Flex.d.ts +1 -1
- package/flex/Flex.js +40 -40
- package/flex/Flex.stories.tsx +35 -26
- package/flex/types.d.ts +84 -8
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +70 -117
- package/footer/Footer.stories.tsx +60 -19
- package/footer/Footer.test.js +33 -57
- package/footer/Icons.d.ts +3 -2
- package/footer/Icons.js +66 -7
- package/footer/types.d.ts +25 -26
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +76 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/grid/types.js +5 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +48 -133
- package/header/Header.stories.tsx +115 -36
- package/header/Header.test.js +13 -26
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +2 -7
- package/header/types.d.ts +5 -19
- package/heading/Heading.js +10 -32
- package/heading/Heading.test.js +71 -88
- package/heading/types.d.ts +7 -7
- package/image/Image.d.ts +4 -0
- package/image/Image.js +70 -0
- package/image/Image.stories.tsx +129 -0
- package/image/types.d.ts +72 -0
- package/image/types.js +5 -0
- package/inset/Inset.js +13 -21
- package/inset/Inset.stories.tsx +2 -1
- package/inset/types.d.ts +2 -2
- package/layout/ApplicationLayout.d.ts +5 -5
- package/layout/ApplicationLayout.js +29 -66
- package/layout/ApplicationLayout.stories.tsx +1 -1
- package/layout/Icons.d.ts +8 -5
- package/layout/Icons.js +51 -59
- package/layout/SidenavContext.d.ts +1 -1
- package/layout/SidenavContext.js +3 -9
- package/layout/types.d.ts +5 -6
- package/link/Link.js +25 -46
- package/link/Link.stories.tsx +60 -0
- package/link/Link.test.js +24 -44
- package/link/types.d.ts +14 -14
- package/main.d.ts +9 -5
- package/main.js +40 -59
- package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
- package/{tabs-nav → nav-tabs}/NavTabs.js +23 -55
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +115 -9
- package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -45
- package/nav-tabs/Tab.js +118 -0
- package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
- package/nav-tabs/types.js +5 -0
- package/number-input/NumberInput.d.ts +7 -0
- package/number-input/NumberInput.js +47 -37
- package/number-input/NumberInput.stories.tsx +42 -26
- package/number-input/NumberInput.test.js +860 -377
- package/number-input/types.d.ts +11 -5
- package/package.json +37 -40
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +21 -47
- package/paginator/Paginator.js +23 -59
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +253 -226
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.d.ts +3 -4
- package/paragraph/Paragraph.js +6 -22
- package/paragraph/Paragraph.stories.tsx +0 -17
- package/password-input/Icons.d.ts +6 -0
- package/password-input/Icons.js +35 -0
- package/password-input/PasswordInput.js +57 -126
- package/password-input/PasswordInput.stories.tsx +1 -33
- package/password-input/PasswordInput.test.js +160 -142
- package/password-input/types.d.ts +8 -7
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +23 -55
- package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
- package/progress-bar/ProgressBar.test.js +36 -53
- package/progress-bar/types.d.ts +4 -3
- package/quick-nav/QuickNav.js +15 -39
- package/quick-nav/QuickNav.stories.tsx +112 -20
- package/quick-nav/types.d.ts +10 -10
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +59 -76
- package/radio-group/RadioGroup.js +59 -105
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +518 -457
- package/radio-group/types.d.ts +10 -10
- package/resultset-table/Icons.d.ts +7 -0
- package/resultset-table/Icons.js +47 -0
- package/resultset-table/ResultsetTable.d.ts +7 -0
- package/resultset-table/ResultsetTable.js +166 -0
- package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +152 -30
- package/{resultsetTable → resultset-table}/ResultsetTable.test.js +167 -144
- package/{resultsetTable → resultset-table}/types.d.ts +13 -7
- package/resultset-table/types.js +5 -0
- package/select/Icons.d.ts +7 -7
- package/select/Icons.js +1 -5
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +17 -73
- package/select/Option.js +27 -50
- package/select/Select.js +123 -176
- package/select/Select.stories.tsx +497 -153
- package/select/Select.test.js +1970 -1775
- package/select/types.d.ts +16 -17
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +47 -0
- package/sidenav/Sidenav.d.ts +2 -2
- package/sidenav/Sidenav.js +81 -153
- package/sidenav/Sidenav.stories.tsx +165 -63
- package/sidenav/Sidenav.test.js +3 -10
- package/sidenav/types.d.ts +31 -28
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +83 -131
- package/slider/Slider.test.js +108 -104
- package/slider/types.d.ts +7 -3
- package/spinner/Spinner.js +31 -75
- package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
- package/spinner/Spinner.test.js +26 -35
- package/spinner/types.d.ts +3 -3
- package/status-light/StatusLight.d.ts +4 -0
- package/status-light/StatusLight.js +51 -0
- package/status-light/StatusLight.stories.tsx +74 -0
- package/status-light/StatusLight.test.js +25 -0
- package/status-light/types.d.ts +17 -0
- package/status-light/types.js +5 -0
- package/switch/Switch.d.ts +3 -3
- package/switch/Switch.js +113 -150
- package/switch/Switch.stories.tsx +33 -34
- package/switch/Switch.test.js +70 -102
- package/switch/types.d.ts +8 -3
- package/table/DropdownTheme.js +62 -0
- package/table/Table.d.ts +6 -2
- package/table/Table.js +87 -35
- package/table/Table.stories.tsx +658 -0
- package/table/Table.test.js +95 -8
- package/table/types.d.ts +48 -6
- package/tabs/Tab.js +26 -45
- package/tabs/Tabs.js +62 -145
- package/tabs/Tabs.stories.tsx +46 -6
- package/tabs/Tabs.test.js +66 -123
- package/tabs/types.d.ts +19 -19
- package/tag/Tag.js +29 -61
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +20 -31
- package/tag/types.d.ts +7 -7
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +56 -0
- package/text-input/Suggestion.js +40 -28
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +84 -0
- package/text-input/TextInput.js +301 -497
- package/text-input/TextInput.stories.tsx +266 -274
- package/text-input/TextInput.test.js +1419 -1375
- package/text-input/types.d.ts +43 -16
- package/textarea/Textarea.js +70 -113
- package/textarea/Textarea.stories.tsx +174 -0
- package/textarea/Textarea.test.js +152 -183
- package/textarea/types.d.ts +9 -5
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +92 -106
- package/toggle-group/ToggleGroup.stories.tsx +49 -4
- package/toggle-group/ToggleGroup.test.js +69 -88
- package/toggle-group/types.d.ts +26 -17
- package/typography/Typography.d.ts +2 -2
- package/typography/Typography.js +15 -123
- package/typography/Typography.stories.tsx +1 -1
- package/typography/types.d.ts +1 -1
- package/useTheme.d.ts +1147 -1
- package/useTheme.js +2 -9
- package/useTranslatedLabels.d.ts +84 -1
- package/useTranslatedLabels.js +1 -7
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +94 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +124 -0
- package/wizard/Wizard.js +16 -51
- package/wizard/Wizard.stories.tsx +20 -0
- package/wizard/Wizard.test.js +54 -81
- package/wizard/types.d.ts +8 -9
- package/card/ice-cream.jpg +0 -0
- package/common/RequiredComponent.js +0 -32
- package/number-input/NumberInputContext.d.ts +0 -4
- package/number-input/NumberInputContext.js +0 -19
- package/number-input/numberInputContextTypes.d.ts +0 -19
- package/resultsetTable/ResultsetTable.d.ts +0 -4
- package/resultsetTable/ResultsetTable.js +0 -254
- package/slider/Slider.stories.tsx +0 -183
- package/table/Table.stories.jsx +0 -277
- package/tabs-nav/Tab.js +0 -130
- package/textarea/Textarea.stories.jsx +0 -157
- /package/{resultsetTable → action-icon}/types.js +0 -0
- /package/{tabs-nav → container}/types.js +0 -0
- /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
package/tag/Tag.stories.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
|
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import DxcTag from "./Tag";
|
|
6
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
title: "Tag",
|
|
@@ -23,6 +24,13 @@ const largeIcon = (
|
|
|
23
24
|
</svg>
|
|
24
25
|
);
|
|
25
26
|
|
|
27
|
+
const opinionatedTheme = {
|
|
28
|
+
tag: {
|
|
29
|
+
fontColor: "#000000",
|
|
30
|
+
iconColor: "#ffffff",
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
26
34
|
export const Chromatic = () => (
|
|
27
35
|
<>
|
|
28
36
|
<ExampleContainer>
|
|
@@ -124,7 +132,12 @@ export const Chromatic = () => (
|
|
|
124
132
|
<Title title="FitContent size" theme="light" level={4} />
|
|
125
133
|
<DxcTag label="FitContent" size="fitContent" icon={icon} />
|
|
126
134
|
</ExampleContainer>
|
|
127
|
-
<
|
|
135
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
136
|
+
<ExampleContainer>
|
|
137
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
138
|
+
<DxcTag label="Tag" icon={icon} />
|
|
139
|
+
</HalstackProvider>
|
|
140
|
+
</ExampleContainer>
|
|
128
141
|
</>
|
|
129
142
|
);
|
|
130
143
|
|
package/tag/Tag.test.js
CHANGED
|
@@ -1,60 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
|
|
7
5
|
var _react2 = require("@testing-library/react");
|
|
8
|
-
|
|
9
|
-
var _Tag = _interopRequireDefault(require("./Tag"));
|
|
10
|
-
|
|
6
|
+
var _Tag = _interopRequireDefault(require("./Tag.tsx"));
|
|
11
7
|
describe("Tag component tests", function () {
|
|
12
8
|
test("Tag renders with correct label", function () {
|
|
13
9
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
label: "tag-test"
|
|
11
|
+
})),
|
|
12
|
+
getByText = _render.getByText;
|
|
18
13
|
expect(getByText("tag-test")).toBeTruthy();
|
|
19
14
|
});
|
|
20
15
|
test("Tag renders with correct label before", function () {
|
|
21
16
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
label: "tag-test",
|
|
18
|
+
labelPosition: "before"
|
|
19
|
+
})),
|
|
20
|
+
getByText = _render2.getByText;
|
|
27
21
|
expect(getByText("tag-test")).toBeTruthy();
|
|
28
22
|
});
|
|
29
23
|
test("Tag renders with correct icon", function () {
|
|
30
24
|
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
label: "tag-test",
|
|
26
|
+
icon: "/test-icon.jpg"
|
|
27
|
+
})),
|
|
28
|
+
getByRole = _render3.getByRole;
|
|
36
29
|
expect(getByRole("img").getAttribute("src")).toBe("/test-icon.jpg");
|
|
37
30
|
});
|
|
38
31
|
test("Tag renders with link href", function () {
|
|
39
32
|
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
label: "tag-test",
|
|
34
|
+
linkHref: "/test/page"
|
|
35
|
+
})),
|
|
36
|
+
getByRole = _render4.getByRole;
|
|
45
37
|
expect(getByRole("link").getAttribute("href")).toBe("/test/page");
|
|
46
38
|
});
|
|
47
39
|
test("Call correct function on click", function () {
|
|
48
40
|
var onClick = jest.fn();
|
|
49
|
-
|
|
50
41
|
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
label: "tag-test",
|
|
43
|
+
onClick: onClick
|
|
44
|
+
})),
|
|
45
|
+
getByText = _render5.getByText;
|
|
56
46
|
_react2.fireEvent.click(getByText("tag-test"));
|
|
57
|
-
|
|
58
47
|
expect(onClick).toHaveBeenCalled();
|
|
59
48
|
});
|
|
60
49
|
});
|
package/tag/types.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
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 TagCommonProps = {
|
|
11
11
|
/**
|
|
12
12
|
* If defined, the tag will be displayed as an anchor, using this prop as "href".
|
|
13
13
|
* Component will show some visual feedback on hover.
|
|
@@ -45,7 +45,7 @@ declare type TagCommonProps = {
|
|
|
45
45
|
*/
|
|
46
46
|
tabIndex?: number;
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
type TagLabelProps = TagCommonProps & {
|
|
49
49
|
/**
|
|
50
50
|
* Element or path used as the icon that will be placed next to the label.
|
|
51
51
|
*/
|
|
@@ -55,7 +55,7 @@ declare type TagLabelProps = TagCommonProps & {
|
|
|
55
55
|
*/
|
|
56
56
|
label: string;
|
|
57
57
|
};
|
|
58
|
-
|
|
58
|
+
type TagIconProps = TagCommonProps & {
|
|
59
59
|
/**
|
|
60
60
|
* Element or path used as the icon that will be placed next to the label.
|
|
61
61
|
*/
|
|
@@ -65,5 +65,5 @@ declare type TagIconProps = TagCommonProps & {
|
|
|
65
65
|
*/
|
|
66
66
|
label?: string;
|
|
67
67
|
};
|
|
68
|
-
|
|
68
|
+
type Props = TagLabelProps | TagIconProps;
|
|
69
69
|
export default Props;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var icons = {
|
|
10
|
+
error: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
11
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
12
|
+
height: "24px",
|
|
13
|
+
viewBox: "0 0 24 24",
|
|
14
|
+
width: "24px",
|
|
15
|
+
fill: "currentColor"
|
|
16
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
17
|
+
d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"
|
|
18
|
+
})),
|
|
19
|
+
clear: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
20
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
21
|
+
width: "24",
|
|
22
|
+
height: "24",
|
|
23
|
+
viewBox: "0 0 24 24",
|
|
24
|
+
fill: "currentColor"
|
|
25
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
26
|
+
d: "M0 0h24v24H0V0z",
|
|
27
|
+
fill: "none"
|
|
28
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
29
|
+
d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
|
|
30
|
+
})),
|
|
31
|
+
increment: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
32
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
33
|
+
height: "24px",
|
|
34
|
+
viewBox: "0 0 24 24",
|
|
35
|
+
width: "24px",
|
|
36
|
+
fill: "currentColor"
|
|
37
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
38
|
+
d: "M0 0h24v24H0z",
|
|
39
|
+
fill: "none"
|
|
40
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
41
|
+
d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
|
|
42
|
+
})),
|
|
43
|
+
decrement: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
44
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
45
|
+
height: "24px",
|
|
46
|
+
viewBox: "0 0 24 24",
|
|
47
|
+
width: "24px",
|
|
48
|
+
fill: "currentColor"
|
|
49
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
50
|
+
d: "M0 0h24v24H0z",
|
|
51
|
+
fill: "none"
|
|
52
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
53
|
+
d: "M19 13H5v-2h14v2z"
|
|
54
|
+
}))
|
|
55
|
+
};
|
|
56
|
+
var _default = exports["default"] = icons;
|
package/text-input/Suggestion.js
CHANGED
|
@@ -1,55 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
|
-
|
|
10
9
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
-
|
|
12
|
-
var _react = _interopRequireDefault(require("react"));
|
|
13
|
-
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
11
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
-
|
|
16
12
|
var _templateObject, _templateObject2;
|
|
17
|
-
|
|
13
|
+
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); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
|
|
15
|
+
var transformSpecialChars = function transformSpecialChars(str) {
|
|
16
|
+
var specialCharsRegex = /[\\*()\[\]{}+?/]/;
|
|
17
|
+
var value = str;
|
|
18
|
+
if (specialCharsRegex.test(value)) {
|
|
19
|
+
var regexAsString = specialCharsRegex.toString().split("");
|
|
20
|
+
var uniqueSpecialChars = regexAsString.filter(function (item, index) {
|
|
21
|
+
return regexAsString.indexOf(item) === index;
|
|
22
|
+
});
|
|
23
|
+
uniqueSpecialChars.forEach(function (specialChar) {
|
|
24
|
+
if (str.includes(specialChar)) value = value.replace(specialChar, "\\" + specialChar);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
18
29
|
var Suggestion = function Suggestion(_ref) {
|
|
19
30
|
var id = _ref.id,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
value = _ref.value,
|
|
32
|
+
_onClick = _ref.onClick,
|
|
33
|
+
suggestion = _ref.suggestion,
|
|
34
|
+
isLast = _ref.isLast,
|
|
35
|
+
visuallyFocused = _ref.visuallyFocused,
|
|
36
|
+
highlighted = _ref.highlighted;
|
|
37
|
+
var matchedSuggestion = (0, _react.useMemo)(function () {
|
|
38
|
+
var regEx = new RegExp(transformSpecialChars(value), "i");
|
|
39
|
+
return {
|
|
40
|
+
matchedWords: suggestion.match(regEx),
|
|
41
|
+
noMatchedWords: suggestion.replace(regEx, "")
|
|
42
|
+
};
|
|
43
|
+
}, [value, suggestion]);
|
|
29
44
|
return /*#__PURE__*/_react["default"].createElement(SuggestionContainer, {
|
|
30
45
|
id: id,
|
|
31
|
-
onClick: onClick
|
|
46
|
+
onClick: function onClick() {
|
|
47
|
+
_onClick(suggestion);
|
|
48
|
+
},
|
|
32
49
|
visuallyFocused: visuallyFocused,
|
|
33
50
|
role: "option",
|
|
34
|
-
"aria-selected": visuallyFocused ?
|
|
51
|
+
"aria-selected": visuallyFocused ? true : undefined
|
|
35
52
|
}, /*#__PURE__*/_react["default"].createElement(StyledSuggestion, {
|
|
36
|
-
|
|
53
|
+
isLast: isLast,
|
|
37
54
|
visuallyFocused: visuallyFocused
|
|
38
|
-
}, highlighted ?
|
|
55
|
+
}, highlighted ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("strong", null, matchedSuggestion.matchedWords), matchedSuggestion.noMatchedWords) : suggestion));
|
|
39
56
|
};
|
|
40
|
-
|
|
41
|
-
var SuggestionContainer = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0 0.5rem;\n line-height: 1.715em;\n cursor: pointer;\n\n box-shadow: inset 0 0 0 2px\n ", ";\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
|
|
57
|
+
var SuggestionContainer = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0 0.5rem;\n line-height: 1.715em;\n cursor: pointer;\n box-shadow: inset 0 0 0 2px\n ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
|
|
42
58
|
return props.visuallyFocused ? props.theme.focusListOptionBorderColor : "transparent";
|
|
43
59
|
}, function (props) {
|
|
44
60
|
return props.theme.hoverListOptionBackgroundColor;
|
|
45
61
|
}, function (props) {
|
|
46
62
|
return props.theme.activeListOptionBackgroundColor;
|
|
47
63
|
});
|
|
48
|
-
|
|
49
64
|
var StyledSuggestion = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 0.25rem 0.5rem 0.188rem 0.5rem;\n ", ";\n"])), function (props) {
|
|
50
|
-
return props.
|
|
65
|
+
return props.isLast || props.visuallyFocused ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
|
|
51
66
|
});
|
|
52
|
-
|
|
53
|
-
var _default = /*#__PURE__*/_react["default"].memo(Suggestion);
|
|
54
|
-
|
|
55
|
-
exports["default"] = _default;
|
|
67
|
+
var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Suggestion);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { SuggestionsProps } from "./types";
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ id, value, suggestions, visualFocusIndex, highlightedSuggestions, searchHasErrors, isSearching, suggestionOnClick, styles, }: SuggestionsProps) => JSX.Element>;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
12
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
13
|
+
var _Suggestion = _interopRequireDefault(require("./Suggestion"));
|
|
14
|
+
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
15
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
16
|
+
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); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
|
|
18
|
+
var Suggestions = function Suggestions(_ref) {
|
|
19
|
+
var id = _ref.id,
|
|
20
|
+
value = _ref.value,
|
|
21
|
+
suggestions = _ref.suggestions,
|
|
22
|
+
visualFocusIndex = _ref.visualFocusIndex,
|
|
23
|
+
highlightedSuggestions = _ref.highlightedSuggestions,
|
|
24
|
+
searchHasErrors = _ref.searchHasErrors,
|
|
25
|
+
isSearching = _ref.isSearching,
|
|
26
|
+
suggestionOnClick = _ref.suggestionOnClick,
|
|
27
|
+
styles = _ref.styles;
|
|
28
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
29
|
+
var listboxRef = (0, _react.useRef)(null);
|
|
30
|
+
(0, _react.useEffect)(function () {
|
|
31
|
+
var _listboxRef$current, _visualFocusedOptionE;
|
|
32
|
+
var visualFocusedOptionEl = listboxRef === null || listboxRef === void 0 ? void 0 : (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.querySelectorAll("[role='option']")[visualFocusIndex];
|
|
33
|
+
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
34
|
+
block: "nearest",
|
|
35
|
+
inline: "start"
|
|
36
|
+
});
|
|
37
|
+
}, [visualFocusIndex]);
|
|
38
|
+
return /*#__PURE__*/_react["default"].createElement(SuggestionsContainer, {
|
|
39
|
+
id: id,
|
|
40
|
+
error: searchHasErrors ? true : false,
|
|
41
|
+
onMouseDown: function onMouseDown(event) {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
},
|
|
44
|
+
ref: listboxRef,
|
|
45
|
+
role: "listbox",
|
|
46
|
+
style: styles
|
|
47
|
+
}, !isSearching && !searchHasErrors && suggestions.length > 0 && suggestions.map(function (suggestion, index) {
|
|
48
|
+
return /*#__PURE__*/_react["default"].createElement(_Suggestion["default"], {
|
|
49
|
+
key: "suggestion-".concat(index),
|
|
50
|
+
id: "suggestion-".concat(index),
|
|
51
|
+
value: value,
|
|
52
|
+
onClick: suggestionOnClick,
|
|
53
|
+
suggestion: suggestion,
|
|
54
|
+
isLast: index === suggestions.length - 1,
|
|
55
|
+
visuallyFocused: visualFocusIndex === index,
|
|
56
|
+
highlighted: highlightedSuggestions
|
|
57
|
+
});
|
|
58
|
+
}), isSearching && /*#__PURE__*/_react["default"].createElement(SuggestionsSystemMessage, null, translatedLabels.textInput.searchingMessage), searchHasErrors && /*#__PURE__*/_react["default"].createElement(SuggestionsError, null, /*#__PURE__*/_react["default"].createElement(SuggestionsErrorIcon, null, _Icons["default"].error), translatedLabels.textInput.fetchingDataErrorMessage));
|
|
59
|
+
};
|
|
60
|
+
var SuggestionsContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\n background-color: ", ";\n border: 1px solid\n ", ";\n\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
61
|
+
return props.error ? props.theme.errorListDialogBackgroundColor : props.theme.listDialogBackgroundColor;
|
|
62
|
+
}, function (props) {
|
|
63
|
+
return props.error ? props.theme.errorListDialogBorderColor : props.theme.listDialogBorderColor;
|
|
64
|
+
}, function (props) {
|
|
65
|
+
return props.theme.listOptionFontColor;
|
|
66
|
+
}, function (props) {
|
|
67
|
+
return props.theme.fontFamily;
|
|
68
|
+
}, function (props) {
|
|
69
|
+
return props.theme.listOptionFontSize;
|
|
70
|
+
}, function (props) {
|
|
71
|
+
return props.theme.listOptionFontStyle;
|
|
72
|
+
}, function (props) {
|
|
73
|
+
return props.theme.listOptionFontWeight;
|
|
74
|
+
});
|
|
75
|
+
var SuggestionsSystemMessage = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n color: ", ";\n line-height: 1.715em;\n"])), function (props) {
|
|
76
|
+
return props.theme.systemMessageFontColor;
|
|
77
|
+
});
|
|
78
|
+
var SuggestionsErrorIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n margin-right: 0.5rem;\n height: 18px;\n width: 18px;\n color: ", ";\n"])), function (props) {
|
|
79
|
+
return props.theme.errorIconColor;
|
|
80
|
+
});
|
|
81
|
+
var SuggestionsError = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n align-items: center;\n line-height: 1.715em;\n color: ", ";\n"])), function (props) {
|
|
82
|
+
return props.theme.errorListDialogFontColor;
|
|
83
|
+
});
|
|
84
|
+
var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Suggestions);
|