@dxc-technology/halstack-react 7.0.0 → 9.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.
Files changed (109) hide show
  1. package/HalstackContext.js +98 -50
  2. package/accordion/Accordion.js +7 -13
  3. package/accordion/Accordion.stories.tsx +102 -13
  4. package/alert/Alert.stories.tsx +28 -0
  5. package/box/Box.js +1 -3
  6. package/box/Box.stories.tsx +15 -0
  7. package/button/Button.js +11 -13
  8. package/button/Button.stories.tsx +150 -8
  9. package/checkbox/Checkbox.d.ts +2 -2
  10. package/checkbox/Checkbox.js +16 -15
  11. package/checkbox/Checkbox.stories.tsx +131 -59
  12. package/checkbox/types.d.ts +4 -0
  13. package/chip/Chip.js +16 -22
  14. package/chip/Chip.stories.tsx +96 -9
  15. package/common/variables.js +286 -290
  16. package/date-input/Calendar.d.ts +4 -0
  17. package/date-input/Calendar.js +258 -0
  18. package/date-input/DateInput.js +134 -237
  19. package/date-input/DateInput.stories.tsx +199 -33
  20. package/date-input/DateInput.test.js +494 -138
  21. package/date-input/DatePicker.d.ts +4 -0
  22. package/date-input/DatePicker.js +146 -0
  23. package/date-input/Icons.d.ts +6 -0
  24. package/date-input/Icons.js +75 -0
  25. package/date-input/YearPicker.d.ts +4 -0
  26. package/date-input/YearPicker.js +126 -0
  27. package/date-input/types.d.ts +51 -0
  28. package/dialog/Dialog.js +60 -73
  29. package/dialog/Dialog.stories.tsx +211 -159
  30. package/dialog/Dialog.test.js +301 -2
  31. package/dropdown/Dropdown.js +35 -35
  32. package/dropdown/Dropdown.stories.tsx +210 -84
  33. package/dropdown/Dropdown.test.js +17 -22
  34. package/dropdown/DropdownMenu.js +8 -18
  35. package/dropdown/DropdownMenuItem.js +4 -15
  36. package/file-input/FileInput.d.ts +2 -2
  37. package/file-input/FileInput.js +169 -222
  38. package/file-input/FileInput.stories.tsx +122 -11
  39. package/file-input/FileInput.test.js +12 -53
  40. package/file-input/FileItem.d.ts +4 -14
  41. package/file-input/FileItem.js +39 -63
  42. package/file-input/types.d.ts +17 -0
  43. package/footer/Footer.stories.tsx +91 -0
  44. package/header/Header.js +18 -20
  45. package/header/Header.stories.tsx +149 -6
  46. package/link/Link.js +1 -1
  47. package/link/Link.stories.tsx +60 -0
  48. package/main.d.ts +1 -1
  49. package/main.js +1 -1
  50. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  51. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  52. package/{tabs-nav → nav-tabs}/Tab.js +35 -15
  53. package/number-input/NumberInput.test.js +5 -6
  54. package/package.json +7 -12
  55. package/paginator/Icons.d.ts +5 -0
  56. package/paginator/Icons.js +16 -28
  57. package/paginator/Paginator.js +5 -11
  58. package/paginator/Paginator.stories.tsx +24 -0
  59. package/paginator/Paginator.test.js +17 -10
  60. package/progress-bar/ProgressBar.js +4 -4
  61. package/progress-bar/ProgressBar.stories.jsx +35 -2
  62. package/quick-nav/QuickNav.stories.tsx +14 -0
  63. package/radio-group/RadioGroup.stories.tsx +131 -18
  64. package/resultsetTable/Icons.d.ts +7 -0
  65. package/resultsetTable/Icons.js +51 -0
  66. package/resultsetTable/ResultsetTable.js +48 -105
  67. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  68. package/resultsetTable/ResultsetTable.test.js +40 -63
  69. package/resultsetTable/types.d.ts +2 -2
  70. package/select/Listbox.d.ts +1 -1
  71. package/select/Listbox.js +5 -34
  72. package/select/Option.js +11 -24
  73. package/select/Select.js +43 -24
  74. package/select/Select.stories.tsx +494 -150
  75. package/select/Select.test.js +17 -22
  76. package/select/types.d.ts +2 -2
  77. package/sidenav/Sidenav.js +8 -10
  78. package/sidenav/Sidenav.stories.tsx +148 -46
  79. package/slider/Slider.d.ts +2 -2
  80. package/slider/Slider.js +9 -8
  81. package/slider/Slider.stories.tsx +57 -0
  82. package/slider/types.d.ts +4 -0
  83. package/spinner/Spinner.js +2 -2
  84. package/spinner/Spinner.stories.jsx +27 -1
  85. package/switch/Switch.d.ts +3 -3
  86. package/switch/Switch.js +5 -4
  87. package/switch/Switch.stories.tsx +33 -0
  88. package/switch/types.d.ts +6 -1
  89. package/table/Table.stories.jsx +80 -1
  90. package/table/Table.test.js +1 -1
  91. package/tabs/Tab.js +3 -5
  92. package/tabs/Tabs.js +3 -3
  93. package/tabs/Tabs.stories.tsx +45 -5
  94. package/tag/Tag.stories.tsx +14 -1
  95. package/text-input/Suggestion.js +32 -5
  96. package/text-input/TextInput.js +7 -11
  97. package/text-input/TextInput.stories.tsx +92 -4
  98. package/text-input/TextInput.test.js +587 -634
  99. package/textarea/Textarea.stories.jsx +60 -1
  100. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  101. package/utils/FocusLock.d.ts +13 -0
  102. package/utils/FocusLock.js +139 -0
  103. package/wizard/Wizard.stories.tsx +20 -0
  104. package/common/RequiredComponent.js +0 -32
  105. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  106. /package/{tabs-nav → nav-tabs}/NavTabs.test.js +0 -0
  107. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  108. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
  109. /package/{tabs-nav → nav-tabs}/types.js +0 -0
@@ -16,42 +16,37 @@ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
16
16
 
17
17
  // Mocking DOMRect for Radix Primitive Popover
18
18
  global.globalThis = global;
19
+ global.DOMRect = {
20
+ fromRect: function fromRect() {
21
+ return {
22
+ top: 0,
23
+ left: 0,
24
+ bottom: 0,
25
+ right: 0,
26
+ width: 0,
27
+ height: 0
28
+ };
29
+ }
30
+ };
19
31
 
20
32
  global.ResizeObserver = /*#__PURE__*/function () {
21
- function ResizeObserver(cb) {
33
+ function ResizeObserver() {
22
34
  (0, _classCallCheck2["default"])(this, ResizeObserver);
23
- this.cb = cb;
24
35
  }
25
36
 
26
37
  (0, _createClass2["default"])(ResizeObserver, [{
27
38
  key: "observe",
28
- value: function observe() {
29
- this.cb([{
30
- borderBoxSize: {
31
- inlineSize: 0,
32
- blockSize: 0
33
- }
34
- }]);
35
- }
39
+ value: function observe() {}
36
40
  }, {
37
41
  key: "unobserve",
38
42
  value: function unobserve() {}
43
+ }, {
44
+ key: "disconnect",
45
+ value: function disconnect() {}
39
46
  }]);
40
47
  return ResizeObserver;
41
48
  }();
42
49
 
43
- global.DOMRect = {
44
- fromRect: function fromRect() {
45
- return {
46
- top: 0,
47
- left: 0,
48
- bottom: 0,
49
- right: 0,
50
- width: 0,
51
- height: 0
52
- };
53
- }
54
- };
55
50
  var single_options = [{
56
51
  label: "Option 01",
57
52
  value: "1"
package/select/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
3
  declare type Margin = {
4
4
  top?: Space;
@@ -201,7 +201,7 @@ export declare type ListboxProps = {
201
201
  optionalItem: Option;
202
202
  searchable: boolean;
203
203
  handleOptionOnClick: (option: Option) => void;
204
- getSelectWidth: () => number;
204
+ styles: React.CSSProperties;
205
205
  };
206
206
  /**
207
207
  * Reference to the select component.
@@ -33,7 +33,7 @@ var _Flex = _interopRequireDefault(require("../flex/Flex"));
33
33
 
34
34
  var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
35
35
 
36
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
36
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
37
37
 
38
38
  var _excluded = ["href", "children", "newWindow", "selected", "icon", "tabIndex", "onClick"];
39
39
 
@@ -138,9 +138,9 @@ var Group = function Group(_ref4) {
138
138
  return setCollapsed(!collapsed);
139
139
  },
140
140
  selectedGroup: selectedGroup
141
- }, /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
141
+ }, /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
142
142
  src: icon
143
- }) : icon, title), collapsed ? collapsedIcon : collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
143
+ }) : icon, title), collapsed ? collapsedIcon : collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
144
144
  src: icon
145
145
  }) : icon, title), !collapsed && children);
146
146
  };
@@ -171,7 +171,7 @@ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
171
171
  ref: ref,
172
172
  tabIndex: tabIndex,
173
173
  onClick: handleClick
174
- }, otherProps), /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
174
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
175
175
  src: icon
176
176
  }) : icon, children), newWindow && externalLinkIcon);
177
177
  });
@@ -204,7 +204,7 @@ var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObj
204
204
 
205
205
  var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
206
206
 
207
- var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n box-sizing: border-box;\n width: 100%;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 18px;\n\n display: flex;\n align-items: center;\n margin: 0px;\n padding: 0.5rem 1.2rem;\n"])), function (props) {
207
+ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 18px;\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
208
208
  return props.theme.groupTitleFontFamily;
209
209
  }, function (props) {
210
210
  return props.theme.groupTitleFontStyle;
@@ -214,7 +214,7 @@ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_
214
214
  return props.theme.groupTitleFontSize;
215
215
  });
216
216
 
217
- var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n cursor: pointer;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n display: flex;\n align-items: center;\n margin: 0px;\n padding: 0.5rem 1.2rem;\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n ", "\n svg {\n width: 18px;\n height: auto;\n }\n"])), function (props) {
217
+ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n cursor: pointer;\n\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n ", "\n\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
218
218
  return props.theme.groupTitleFontFamily;
219
219
  }, function (props) {
220
220
  return props.theme.groupTitleFontStyle;
@@ -234,7 +234,7 @@ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObjec
234
234
  return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background: transparent;");
235
235
  });
236
236
 
237
- var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n letter-spacing: ", ";\n\n text-transform: ", ";\n text-decoration: ", ";\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n ", "\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n box-shadow: 0 0 0 2px transparent;\n\n padding: 0.5rem 1.2rem;\n\n cursor: pointer;\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n\n &:hover {\n ", "\n }\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n\n &:active {\n color: #ffffff;\n background: #4d4d4d;\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n"])), function (props) {
237
+ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n ", "\n\n cursor: pointer;\n\n &:hover {\n ", "\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:active {\n color: #ffffff;\n background: #4d4d4d;\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
238
238
  return props.theme.linkFontLetterSpacing;
239
239
  }, function (props) {
240
240
  return props.theme.linkFontTextTransform;
@@ -256,9 +256,7 @@ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateO
256
256
  return props.theme.linkFocusColor;
257
257
  });
258
258
 
259
- var SidenavContent = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n"])));
260
-
261
- var SidenavIcon = _styledComponents["default"].img(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n margin-right: 0.5rem;\n"])));
259
+ var SidenavContent = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])));
262
260
 
263
261
  DxcSidenav.Section = Section;
264
262
  DxcSidenav.Group = Group;
@@ -3,6 +3,7 @@ import DxcSidenav from "./Sidenav";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
5
  import { userEvent, within } from "@storybook/testing-library";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Sidenav",
@@ -10,9 +11,26 @@ export default {
10
11
  };
11
12
 
12
13
  const iconSVG = (
13
- <svg viewBox="0 0 24 24" fill="currentColor">
14
- <path d="M0 0h24v24H0z" fill="none" />
15
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
14
+ <svg
15
+ version="1.1"
16
+ id="Capa_1"
17
+ x="0px"
18
+ y="0px"
19
+ width="438.536px"
20
+ height="438.536px"
21
+ viewBox="0 0 438.536 438.536"
22
+ fill="currentColor"
23
+ >
24
+ <g>
25
+ <path
26
+ d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
27
+ C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
28
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
29
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
30
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
31
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
32
+ />
33
+ </g>
16
34
  </svg>
17
35
  );
18
36
 
@@ -20,11 +38,17 @@ const TitleComponent = () => {
20
38
  return <DxcSidenav.Title>Dxc technology</DxcSidenav.Title>;
21
39
  };
22
40
 
41
+ const opinionatedTheme = {
42
+ sidenav: {
43
+ baseColor: "#f2f2f2",
44
+ },
45
+ };
46
+
23
47
  export const Chromatic = () => (
24
48
  <>
25
49
  <ExampleContainer>
26
50
  <Title title="Default sidenav" theme="light" level={4} />
27
- <DxcSidenav title={<TitleComponent />}>
51
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
28
52
  <DxcSidenav.Section>
29
53
  <p>
30
54
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
@@ -41,12 +65,18 @@ export const Chromatic = () => (
41
65
  </DxcSidenav.Group>
42
66
  </DxcSidenav.Section>
43
67
  <DxcSidenav.Section>
44
- <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
68
+ <DxcSidenav.Group
69
+ collapsable={true}
70
+ title="Section Group"
71
+ icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
72
+ >
45
73
  <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
46
74
  <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
47
75
  </DxcSidenav.Group>
48
- <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
49
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
76
+ <DxcSidenav.Link icon="https://upload.wikimedia.org/wikipedia/commons/7/73/Flat_tick_icon.svg" newWindow>
77
+ Single Link
78
+ </DxcSidenav.Link>
79
+ <DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
50
80
  <DxcSidenav.Group collapsable={false} title="Section Group">
51
81
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
52
82
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -55,51 +85,76 @@ export const Chromatic = () => (
55
85
  </DxcSidenav.Section>
56
86
  </DxcSidenav>
57
87
  </ExampleContainer>
88
+ <ExampleContainer pseudoState="pseudo-focus">
89
+ <Title title="Focused options sidenav" theme="light" level={4} />
90
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
91
+ <DxcSidenav.Section>
92
+ <p>
93
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
94
+ vitae lacinia libero.
95
+ </p>
96
+ </DxcSidenav.Section>
97
+ <DxcSidenav.Section>
98
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
99
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
100
+ <DxcSidenav.Link icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png">Group Link</DxcSidenav.Link>
101
+ </DxcSidenav.Group>
102
+ </DxcSidenav.Section>
103
+ <DxcSidenav.Section>
104
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
105
+ <DxcSidenav.Link selected icon={iconSVG}>
106
+ Group Link
107
+ </DxcSidenav.Link>
108
+ </DxcSidenav.Group>
109
+ <DxcSidenav.Group collapsable={false} title="Section Group">
110
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
111
+ </DxcSidenav.Group>
112
+ </DxcSidenav.Section>
113
+ </DxcSidenav>
114
+ </ExampleContainer>
115
+ <Title title="Opinionated theme" theme="light" level={2} />
116
+ <ExampleContainer>
117
+ <HalstackProvider theme={opinionatedTheme}>
118
+ <DxcSidenav title={<TitleComponent />}>
119
+ <DxcSidenav.Section>
120
+ <p>
121
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
122
+ vitae lacinia libero.
123
+ </p>
124
+ </DxcSidenav.Section>
125
+ <DxcSidenav.Section>
126
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
127
+ <DxcSidenav.Group collapsable={false} title="Single Group" icon={iconSVG}>
128
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
129
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
130
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
131
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
132
+ </DxcSidenav.Group>
133
+ </DxcSidenav.Section>
134
+ <DxcSidenav.Section>
135
+ <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
136
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
137
+ <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
138
+ </DxcSidenav.Group>
139
+ <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
140
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
141
+ <DxcSidenav.Group collapsable={false} title="Section Group">
142
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
143
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
144
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
145
+ </DxcSidenav.Group>
146
+ </DxcSidenav.Section>
147
+ </DxcSidenav>
148
+ </HalstackProvider>
149
+ </ExampleContainer>
58
150
  </>
59
151
  );
60
152
 
61
- export const FocusedSidenav = () => (
62
- <ExampleContainer pseudoState="pseudo-focus">
63
- <Title title="Default sidenav" theme="light" level={4} />
64
- <DxcSidenav title={<TitleComponent />}>
65
- <DxcSidenav.Section>
66
- <p>
67
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse vitae
68
- lacinia libero.
69
- </p>
70
- </DxcSidenav.Section>
71
- <DxcSidenav.Section>
72
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
73
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
74
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
75
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
76
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
77
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
78
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
79
- </DxcSidenav.Group>
80
- </DxcSidenav.Section>
81
- <DxcSidenav.Section>
82
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
83
- <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
84
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
85
- </DxcSidenav.Group>
86
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
87
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
88
- <DxcSidenav.Group collapsable={false} title="Section Group">
89
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
90
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
91
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
92
- </DxcSidenav.Group>
93
- </DxcSidenav.Section>
94
- </DxcSidenav>
95
- </ExampleContainer>
96
- );
97
-
98
153
  const CollapsedGroup = () => (
99
154
  <>
100
155
  <ExampleContainer>
101
156
  <Title title="Default sidenav" theme="light" level={4} />
102
- <DxcSidenav title={<TitleComponent />}>
157
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
103
158
  <DxcSidenav.Section>
104
159
  <DxcSidenav.Group collapsable={true} title="Collapsable Group" icon={iconSVG}>
105
160
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -127,7 +182,7 @@ const CollapsedGroup = () => (
127
182
  const HoverSidenav = () => (
128
183
  <ExampleContainer pseudoState="pseudo-hover">
129
184
  <Title title="Default sidenav" theme="light" level={4} />
130
- <DxcSidenav title={<TitleComponent />}>
185
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
131
186
  <DxcSidenav.Section>
132
187
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
133
188
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
@@ -161,6 +216,44 @@ const HoverSidenav = () => (
161
216
  </ExampleContainer>
162
217
  );
163
218
 
219
+ const HoverSidenavOpinionated = () => (
220
+ <ExampleContainer pseudoState="pseudo-hover">
221
+ <Title title="Default sidenav" theme="light" level={4} />
222
+ <HalstackProvider theme={opinionatedTheme}>
223
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
224
+ <DxcSidenav.Section>
225
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
226
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
227
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
228
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
229
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
230
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
231
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
232
+ </DxcSidenav.Group>
233
+ </DxcSidenav.Section>
234
+ <DxcSidenav.Section>
235
+ <DxcSidenav.Group collapsable={true} title="Not Collapsed Group">
236
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
237
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
238
+ </DxcSidenav.Group>
239
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
240
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
241
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
242
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
243
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
244
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
245
+ </DxcSidenav.Group>
246
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
247
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
248
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
249
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
250
+ </DxcSidenav.Group>
251
+ </DxcSidenav.Section>
252
+ </DxcSidenav>
253
+ </HalstackProvider>
254
+ </ExampleContainer>
255
+ );
256
+
164
257
  export const CollapseGroup = CollapsedGroup.bind({});
165
258
  CollapseGroup.play = async ({ canvasElement }) => {
166
259
  const canvas = within(canvasElement);
@@ -178,3 +271,12 @@ CollapseHoverGroup.play = async ({ canvasElement }) => {
178
271
  userEvent.click(group);
179
272
  });
180
273
  };
274
+
275
+ export const CollapseHoverGroupOpinionated = HoverSidenavOpinionated.bind({});
276
+ CollapseHoverGroupOpinionated.play = async ({ canvasElement }) => {
277
+ const canvas = within(canvasElement);
278
+ const collapsableGroups = canvas.getAllByText("Collapsable Group");
279
+ collapsableGroups.forEach((group) => {
280
+ userEvent.click(group);
281
+ });
282
+ };
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import SliderPropsType from "./types";
3
- declare const DxcSlider: ({ label, name, defaultValue, value, helperText, minValue, maxValue, step, showLimitsValues, showInput, disabled, marks, onChange, onDragEnd, labelFormatCallback, margin, size, }: SliderPropsType) => JSX.Element;
3
+ declare const DxcSlider: React.ForwardRefExoticComponent<SliderPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcSlider;
package/slider/Slider.js CHANGED
@@ -37,7 +37,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
37
37
 
38
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
39
 
40
- var DxcSlider = function DxcSlider(_ref) {
40
+ var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
41
41
  var _ref$label = _ref.label,
42
42
  label = _ref$label === void 0 ? "" : _ref$label,
43
43
  _ref$name = _ref.name,
@@ -147,7 +147,8 @@ var DxcSlider = function DxcSlider(_ref) {
147
147
  theme: colorsTheme.slider
148
148
  }, /*#__PURE__*/_react["default"].createElement(Container, {
149
149
  margin: margin,
150
- size: size
150
+ size: size,
151
+ ref: ref
151
152
  }, /*#__PURE__*/_react["default"].createElement(Label, {
152
153
  id: labelId,
153
154
  disabled: disabled,
@@ -189,7 +190,7 @@ var DxcSlider = function DxcSlider(_ref) {
189
190
  onChange: handlerInputChange,
190
191
  size: "fillParent"
191
192
  })))));
192
- };
193
+ });
193
194
 
194
195
  var sizes = {
195
196
  medium: "360px",
@@ -251,10 +252,10 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
251
252
  return props.theme.helperTextLineHeight;
252
253
  });
253
254
 
254
- var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n z-index: 1;\n cursor: ", ";\n &::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n margin: 0px -8px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n ", "\n }\n &:hover {\n ", "\n }\n }\n &::-moz-range-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n }\n &::-moz-range-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n background: ", ";\n transform: scale(1.16667);\n }\n &:hover {\n ", "\n }\n }\n &:focus {\n outline: none;\n &::-webkit-slider-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n &::-moz-range-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n }\n"])), function (props) {
255
+ var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n cursor: ", ";\n &::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n margin: 0px -8px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n ", "\n }\n &:hover {\n ", "\n }\n }\n &::-moz-range-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n }\n &::-moz-range-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n background: ", ";\n transform: scale(1.16667);\n }\n &:hover {\n ", "\n }\n }\n &:focus {\n outline: none;\n &::-webkit-slider-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n &::-moz-range-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n }\n"])), function (props) {
255
256
  return props.theme.trackLineThickness;
256
257
  }, function (props) {
257
- return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark + "61" : props.theme.disabledTotalLineColor + "61" : props.backgroundType === "dark" ? props.theme.totalLineColorOnDark + "61" : props.theme.totalLineColor + "61";
258
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark + "61" : props.theme.disabledTotalLineColor + "61" : props.backgroundType === "dark" ? props.theme.totalLineColorOnDark + "61" : props.theme.totalLineColor;
258
259
  }, function (props) {
259
260
  return props.disabled ? props.backgroundType === "dark" ? "linear-gradient(".concat(props.theme.disabledTrackLineColorOnDark, ", ").concat(props.theme.disabledTrackLineColorOnDark, ")") : "linear-gradient(".concat(props.theme.disabledTrackLineColor, ", ").concat(props.theme.disabledTrackLineColor, ")") : props.backgroundType === "dark" ? "linear-gradient(".concat(props.theme.trackLineColorOnDark, ", ").concat(props.theme.trackLineColorOnDark, ")") : "linear-gradient(".concat(props.theme.trackLineColor, ", ").concat(props.theme.trackLineColor, ")");
260
261
  }, function (props) {
@@ -316,13 +317,13 @@ var MaxLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_
316
317
  return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
317
318
  });
318
319
 
319
- var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n"])));
320
+ var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n z-index: 0;\n"])));
320
321
 
321
322
  var MarksContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n position: absolute;\n pointer-events: none;\n height: 100%;\n display: flex;\n align-items: center;\n"])), function (props) {
322
323
  return props.isFirefox ? getFireFoxStyles() : getChromeStyles();
323
324
  });
324
325
 
325
- var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n ", ";\n"])), function (props) {
326
+ var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n z-index: ", ";\n"])), function (props) {
326
327
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor : props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
327
328
  }, function (props) {
328
329
  return props.theme.tickHeight;
@@ -331,7 +332,7 @@ var TickMark = _styledComponents["default"].span(_templateObject11 || (_template
331
332
  }, function (props) {
332
333
  return "calc(".concat(props.stepPosition, " * 100%)");
333
334
  }, function (props) {
334
- return !props.disabled ? "z-index: ".concat(props.stepPosition <= props.stepValue ? "0" : "1") : "";
335
+ return "".concat(props.stepPosition <= props.stepValue ? "-1" : "0");
335
336
  });
336
337
 
337
338
  var StyledTextInput = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n max-width: 70px;\n"])), function (props) {
@@ -4,6 +4,7 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
+ import { HalstackProvider } from "../HalstackContext";
7
8
 
8
9
  export default {
9
10
  title: "Slider",
@@ -12,6 +13,14 @@ export default {
12
13
 
13
14
  const labelFormat = (value) => `${value}E100000000000000000000000`;
14
15
 
16
+ const opinionatedTheme = {
17
+ slider: {
18
+ baseColor: "#0067b3",
19
+ fontColor: "#000000",
20
+ totalLineColor: "#e6e6e6",
21
+ },
22
+ };
23
+
15
24
  export const Chromatic = () => (
16
25
  <>
17
26
  <Title title="States" theme="light" level={2} />
@@ -179,5 +188,53 @@ export const Chromatic = () => (
179
188
  size="large"
180
189
  />
181
190
  </ExampleContainer>
191
+ <Title title="Opinionated theme" theme="light" level={2} />
192
+ <ExampleContainer pseudoState="pseudo-hover">
193
+ <Title title="Hovered" theme="light" level={4} />
194
+ <HalstackProvider theme={opinionatedTheme}>
195
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
196
+ </HalstackProvider>
197
+ </ExampleContainer>
198
+ <ExampleContainer pseudoState="pseudo-active">
199
+ <Title title="Active" theme="light" level={4} />
200
+ <HalstackProvider theme={opinionatedTheme}>
201
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
202
+ </HalstackProvider>
203
+ </ExampleContainer>
204
+ <ExampleContainer pseudoState="pseudo-focus">
205
+ <Title title="Focused" theme="light" level={4} />
206
+ <HalstackProvider theme={opinionatedTheme}>
207
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
208
+ </HalstackProvider>
209
+ </ExampleContainer>
210
+ <ExampleContainer>
211
+ <Title title="Disabled discrete slider with input" theme="light" level={4} />{" "}
212
+ <HalstackProvider theme={opinionatedTheme}>
213
+ <DxcSlider
214
+ label="Slider"
215
+ helperText="Help message"
216
+ disabled
217
+ defaultValue={40}
218
+ minValue={0}
219
+ maxValue={50}
220
+ showLimitsValues
221
+ showInput
222
+ marks
223
+ step={10}
224
+ />
225
+ </HalstackProvider>
226
+ </ExampleContainer>
227
+ <ExampleContainer>
228
+ <Title title="Continuous slider" theme="light" level={4} />
229
+ <HalstackProvider theme={opinionatedTheme}>
230
+ <DxcSlider defaultValue={65} label="Slider" helperText="Help message" showLimitsValues />
231
+ </HalstackProvider>
232
+ </ExampleContainer>
233
+ <ExampleContainer>
234
+ <Title title="Discrete slider" theme="light" level={4} />
235
+ <HalstackProvider theme={opinionatedTheme}>
236
+ <DxcSlider defaultValue={20} label="Slider" helperText="Help message" showLimitsValues marks step={5} />
237
+ </HalstackProvider>
238
+ </ExampleContainer>
182
239
  </>
183
240
  );
package/slider/types.d.ts CHANGED
@@ -79,4 +79,8 @@ declare type Props = {
79
79
  */
80
80
  size?: "medium" | "large" | "fillParent";
81
81
  };
82
+ /**
83
+ * Reference to the component.
84
+ */
85
+ export declare type RefType = HTMLDivElement;
82
86
  export default Props;
@@ -178,7 +178,7 @@ var BackOverlay = _styledComponents["default"].div(_templateObject3 || (_templat
178
178
  return "".concat(props.theme.overlayOpacity);
179
179
  });
180
180
 
181
- var BackgroundSpinner = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: absolute;\n z-index: 1;\n"])));
181
+ var BackgroundSpinner = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: absolute;\n"])));
182
182
 
183
183
  var SVGBackground = _styledComponents["default"].svg(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n"])));
184
184
 
@@ -190,7 +190,7 @@ var CircleBackground = _styledComponents["default"].circle(_templateObject6 || (
190
190
  return props.mode !== "small" ? "8.5px" : "2px";
191
191
  });
192
192
 
193
- var Spinner = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: relative;\n z-index: 2;\n"])));
193
+ var Spinner = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n position: relative;\n"])));
194
194
 
195
195
  var SVGSpinner = _styledComponents["default"].svg(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n height: inherit;\n width: inherit;\n transform: rotate(-90deg);\n top: 0;\n left: 0;\n transform-origin: center;\n overflow: visible;\n animation: ", ";\n"])), function (props) {
196
196
  return !props.isDeterminated ? "1.4s linear infinite both spinner-svg" : "";
@@ -2,12 +2,23 @@ import React from "react";
2
2
  import DxcSpinner from "./Spinner";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { HalstackProvider } from "../HalstackContext";
5
6
 
6
7
  export default {
7
8
  title: "Spinner",
8
9
  component: DxcSpinner,
9
10
  };
10
11
 
12
+ const opinionatedTheme = {
13
+ spinner: {
14
+ accentColor: "#5f249f",
15
+ baseColor: "#ffffff",
16
+ fontColor: "#000000",
17
+ overlayColor: "#a46ede",
18
+ overlayFontColor: "#ffffff",
19
+ },
20
+ };
21
+
11
22
  export const Chromatic = () => (
12
23
  <>
13
24
  <ExampleContainer>
@@ -62,7 +73,13 @@ export const Chromatic = () => (
62
73
  <DxcSpinner margin="xlarge" mode="small" value="75"></DxcSpinner>
63
74
  <Title title="Xxlarge margin" theme="light" level={4} />
64
75
  <DxcSpinner margin="xxlarge" mode="small" value="75"></DxcSpinner>
65
- <hr />
76
+ </ExampleContainer>
77
+ <Title title="Opinionated theme" theme="light" level={2} />
78
+ <ExampleContainer>
79
+ <Title title="With label and value label" theme="light" level={4} />
80
+ <HalstackProvider theme={opinionatedTheme}>
81
+ <DxcSpinner label="Label" value="50" showValue></DxcSpinner>
82
+ </HalstackProvider>
66
83
  </ExampleContainer>
67
84
  </>
68
85
  );
@@ -101,3 +118,12 @@ export const SpinnerOverlayWithValueAndLabel = () => (
101
118
  <DxcSpinner mode="overlay" label="Label" value="50" showValue></DxcSpinner>
102
119
  </ExampleContainer>
103
120
  );
121
+
122
+ export const SpinnerOverlayWithValueAndLabelOpinionated = () => (
123
+ <ExampleContainer>
124
+ <HalstackProvider theme={opinionatedTheme}>
125
+ <Title title="Mode overlay" theme="light" level={4} />
126
+ <DxcSpinner mode="overlay" label="Label" value="50" showValue></DxcSpinner>
127
+ </HalstackProvider>
128
+ </ExampleContainer>
129
+ );