@dnb/eufemia 9.34.3 → 9.35.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 (142) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +6 -0
  3. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  4. package/cjs/components/global-status/style/dnb-global-status.css +6 -0
  5. package/cjs/components/global-status/style/dnb-global-status.min.css +1 -1
  6. package/cjs/components/section/Section.d.ts +2 -2
  7. package/cjs/components/section/style/_section.scss +8 -0
  8. package/cjs/components/section/style/dnb-section.css +6 -0
  9. package/cjs/components/section/style/dnb-section.min.css +1 -1
  10. package/cjs/components/space/Space.d.ts +0 -2
  11. package/cjs/components/space/Space.js +16 -10
  12. package/cjs/components/tabs/Tabs.d.ts +2 -2
  13. package/cjs/components/tabs/Tabs.js +6 -11
  14. package/cjs/components/tabs/TabsContentWrapper.d.ts +1 -1
  15. package/cjs/components/tabs/TabsContentWrapper.js +6 -4
  16. package/cjs/components/tabs/style/_tabs.scss +15 -2
  17. package/cjs/components/tabs/style/dnb-tabs.css +14 -2
  18. package/cjs/components/tabs/style/dnb-tabs.min.css +1 -1
  19. package/cjs/components/tabs/style/themes/dnb-tabs-theme-eiendom.css +3 -3
  20. package/cjs/components/tabs/style/themes/dnb-tabs-theme-eiendom.min.css +1 -1
  21. package/cjs/components/tabs/style/themes/dnb-tabs-theme-ui.css +3 -3
  22. package/cjs/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  23. package/cjs/components/tabs/style/themes/dnb-tabs-theme-ui.scss +4 -1
  24. package/cjs/components/upload/Upload.js +14 -17
  25. package/cjs/components/upload/UploadFileInput.js +17 -22
  26. package/cjs/components/upload/UploadFileList.js +1 -0
  27. package/cjs/components/upload/UploadFileListCell.d.ts +2 -1
  28. package/cjs/components/upload/UploadFileListCell.js +65 -7
  29. package/cjs/components/upload/UploadVerify.d.ts +4 -1
  30. package/cjs/components/upload/UploadVerify.js +67 -1
  31. package/cjs/components/upload/style/themes/dnb-upload-theme-ui.css +16 -3
  32. package/cjs/components/upload/style/themes/dnb-upload-theme-ui.min.css +1 -1
  33. package/cjs/components/upload/style/themes/dnb-upload-theme-ui.scss +9 -0
  34. package/cjs/components/upload/types.d.ts +3 -1
  35. package/cjs/components/upload/useUpload.d.ts +1 -2
  36. package/cjs/components/upload/useUpload.js +19 -3
  37. package/cjs/shared/Eufemia.js +1 -1
  38. package/cjs/style/dnb-ui-components.css +20 -2
  39. package/cjs/style/dnb-ui-components.min.css +2 -2
  40. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.css +22 -9
  41. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  42. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +19 -6
  43. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  44. package/components/breadcrumb/style/dnb-breadcrumb.css +6 -0
  45. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  46. package/components/global-status/style/dnb-global-status.css +6 -0
  47. package/components/global-status/style/dnb-global-status.min.css +1 -1
  48. package/components/section/Section.d.ts +2 -2
  49. package/components/section/style/_section.scss +8 -0
  50. package/components/section/style/dnb-section.css +6 -0
  51. package/components/section/style/dnb-section.min.css +1 -1
  52. package/components/space/Space.d.ts +0 -2
  53. package/components/space/Space.js +15 -9
  54. package/components/tabs/Tabs.d.ts +2 -2
  55. package/components/tabs/Tabs.js +6 -11
  56. package/components/tabs/TabsContentWrapper.d.ts +1 -1
  57. package/components/tabs/TabsContentWrapper.js +5 -4
  58. package/components/tabs/style/_tabs.scss +15 -2
  59. package/components/tabs/style/dnb-tabs.css +14 -2
  60. package/components/tabs/style/dnb-tabs.min.css +1 -1
  61. package/components/tabs/style/themes/dnb-tabs-theme-eiendom.css +3 -3
  62. package/components/tabs/style/themes/dnb-tabs-theme-eiendom.min.css +1 -1
  63. package/components/tabs/style/themes/dnb-tabs-theme-ui.css +3 -3
  64. package/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  65. package/components/tabs/style/themes/dnb-tabs-theme-ui.scss +4 -1
  66. package/components/upload/Upload.js +11 -15
  67. package/components/upload/UploadFileInput.js +16 -21
  68. package/components/upload/UploadFileList.js +1 -0
  69. package/components/upload/UploadFileListCell.d.ts +2 -1
  70. package/components/upload/UploadFileListCell.js +44 -3
  71. package/components/upload/UploadVerify.d.ts +4 -1
  72. package/components/upload/UploadVerify.js +27 -1
  73. package/components/upload/style/themes/dnb-upload-theme-ui.css +16 -3
  74. package/components/upload/style/themes/dnb-upload-theme-ui.min.css +1 -1
  75. package/components/upload/style/themes/dnb-upload-theme-ui.scss +9 -0
  76. package/components/upload/types.d.ts +3 -1
  77. package/components/upload/useUpload.d.ts +1 -2
  78. package/components/upload/useUpload.js +17 -3
  79. package/es/components/breadcrumb/style/dnb-breadcrumb.css +6 -0
  80. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  81. package/es/components/global-status/style/dnb-global-status.css +6 -0
  82. package/es/components/global-status/style/dnb-global-status.min.css +1 -1
  83. package/es/components/section/Section.d.ts +2 -2
  84. package/es/components/section/style/_section.scss +8 -0
  85. package/es/components/section/style/dnb-section.css +6 -0
  86. package/es/components/section/style/dnb-section.min.css +1 -1
  87. package/es/components/space/Space.d.ts +0 -2
  88. package/es/components/space/Space.js +15 -9
  89. package/es/components/tabs/Tabs.d.ts +2 -2
  90. package/es/components/tabs/Tabs.js +6 -11
  91. package/es/components/tabs/TabsContentWrapper.d.ts +1 -1
  92. package/es/components/tabs/TabsContentWrapper.js +5 -4
  93. package/es/components/tabs/style/_tabs.scss +15 -2
  94. package/es/components/tabs/style/dnb-tabs.css +14 -2
  95. package/es/components/tabs/style/dnb-tabs.min.css +1 -1
  96. package/es/components/tabs/style/themes/dnb-tabs-theme-eiendom.css +3 -3
  97. package/es/components/tabs/style/themes/dnb-tabs-theme-eiendom.min.css +1 -1
  98. package/es/components/tabs/style/themes/dnb-tabs-theme-ui.css +3 -3
  99. package/es/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  100. package/es/components/tabs/style/themes/dnb-tabs-theme-ui.scss +4 -1
  101. package/es/components/upload/Upload.js +11 -13
  102. package/es/components/upload/UploadFileInput.js +13 -17
  103. package/es/components/upload/UploadFileList.js +1 -0
  104. package/es/components/upload/UploadFileListCell.d.ts +2 -1
  105. package/es/components/upload/UploadFileListCell.js +36 -2
  106. package/es/components/upload/UploadVerify.d.ts +4 -1
  107. package/es/components/upload/UploadVerify.js +12 -1
  108. package/es/components/upload/style/themes/dnb-upload-theme-ui.css +16 -3
  109. package/es/components/upload/style/themes/dnb-upload-theme-ui.min.css +1 -1
  110. package/es/components/upload/style/themes/dnb-upload-theme-ui.scss +9 -0
  111. package/es/components/upload/types.d.ts +3 -1
  112. package/es/components/upload/useUpload.d.ts +1 -2
  113. package/es/components/upload/useUpload.js +15 -3
  114. package/es/shared/Eufemia.js +1 -1
  115. package/es/style/dnb-ui-components.css +20 -2
  116. package/es/style/dnb-ui-components.min.css +2 -2
  117. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.css +22 -9
  118. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  119. package/es/style/themes/theme-ui/dnb-theme-ui.css +19 -6
  120. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  121. package/esm/dnb-ui-lib.min.mjs +2 -2
  122. package/package.json +1 -1
  123. package/shared/Eufemia.js +1 -1
  124. package/style/dnb-ui-components.css +20 -2
  125. package/style/dnb-ui-components.min.css +2 -2
  126. package/style/themes/theme-eiendom/dnb-theme-eiendom.css +22 -9
  127. package/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  128. package/style/themes/theme-ui/dnb-theme-ui.css +19 -6
  129. package/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  130. package/umd/dnb-ui-lib.min.js +3 -3
  131. package/esm/dnb-ui-basis.min.mjs +0 -5
  132. package/esm/dnb-ui-components.min.mjs +0 -17
  133. package/esm/dnb-ui-elements.min.mjs +0 -16
  134. package/esm/dnb-ui-extensions.min.mjs +0 -17
  135. package/esm/dnb-ui-icons.min.mjs +0 -1
  136. package/esm/dnb-ui-web-components.min.mjs +0 -17
  137. package/umd/dnb-ui-basis.min.js +0 -12
  138. package/umd/dnb-ui-components.min.js +0 -24
  139. package/umd/dnb-ui-elements.min.js +0 -23
  140. package/umd/dnb-ui-extensions.min.js +0 -24
  141. package/umd/dnb-ui-icons.min.js +0 -1
  142. package/umd/dnb-ui-web-components.min.js +0 -24
@@ -63,6 +63,14 @@
63
63
  padding: var(--spacing-medium) 0;
64
64
  }
65
65
 
66
+ &--spacing-x-large {
67
+ padding: var(--spacing-x-large) 0;
68
+ }
69
+
70
+ &--spacing-xx-large {
71
+ padding: var(--spacing-xx-large) 0;
72
+ }
73
+
66
74
  &--spacing,
67
75
  &--spacing-large {
68
76
  padding: var(--spacing-large) 0;
@@ -113,6 +113,12 @@
113
113
  .dnb-section--spacing-medium {
114
114
  padding: 1.5rem 0;
115
115
  padding: var(--spacing-medium) 0; }
116
+ .dnb-section--spacing-x-large {
117
+ padding: 3rem 0;
118
+ padding: var(--spacing-x-large) 0; }
119
+ .dnb-section--spacing-xx-large {
120
+ padding: 3.5rem 0;
121
+ padding: var(--spacing-xx-large) 0; }
116
122
  .dnb-section--spacing, .dnb-section--spacing-large {
117
123
  padding: 2rem 0;
118
124
  padding: var(--spacing-large) 0; }
@@ -1 +1 @@
1
- .dnb-section{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-section *,.dnb-section :after,.dnb-section :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-section :after,.dnb-section :before{text-decoration:inherit;vertical-align:inherit}.dnb-section{display:flow-root;position:relative}.dnb-section:after{background-color:currentColor;-webkit-box-shadow:99vw 0 0 0 currentColor,198vw 0 0 0 currentColor,297vw 0 0 0 currentColor,396vw 0 0 0 currentColor;box-shadow:99vw 0 0 0 currentColor,198vw 0 0 0 currentColor,297vw 0 0 0 currentColor,396vw 0 0 0 currentColor;color:#f4fbf9;color:var(--color-mint-green-12);content:"";height:100%;left:-100vw;position:absolute;top:0;width:100vw;z-index:-15}.dnb-section .dnb-section:after{z-index:-14}.dnb-section .dnb-section .dnb-section:after{z-index:-13}.dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-12}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-11}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-10}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-9}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-8}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-7}.dnb-section--spacing-x-small{padding:.5rem 0;padding:var(--spacing-x-small) 0}.dnb-section--spacing-small{padding:1rem 0;padding:var(--spacing-small) 0}.dnb-section--spacing-medium{padding:1.5rem 0;padding:var(--spacing-medium) 0}.dnb-section--spacing,.dnb-section--spacing-large{padding:2rem 0;padding:var(--spacing-large) 0}
1
+ .dnb-section{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-section *,.dnb-section :after,.dnb-section :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-section :after,.dnb-section :before{text-decoration:inherit;vertical-align:inherit}.dnb-section{display:flow-root;position:relative}.dnb-section:after{background-color:currentColor;-webkit-box-shadow:99vw 0 0 0 currentColor,198vw 0 0 0 currentColor,297vw 0 0 0 currentColor,396vw 0 0 0 currentColor;box-shadow:99vw 0 0 0 currentColor,198vw 0 0 0 currentColor,297vw 0 0 0 currentColor,396vw 0 0 0 currentColor;color:#f4fbf9;color:var(--color-mint-green-12);content:"";height:100%;left:-100vw;position:absolute;top:0;width:100vw;z-index:-15}.dnb-section .dnb-section:after{z-index:-14}.dnb-section .dnb-section .dnb-section:after{z-index:-13}.dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-12}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-11}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-10}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-9}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-8}.dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section .dnb-section:after{z-index:-7}.dnb-section--spacing-x-small{padding:.5rem 0;padding:var(--spacing-x-small) 0}.dnb-section--spacing-small{padding:1rem 0;padding:var(--spacing-small) 0}.dnb-section--spacing-medium{padding:1.5rem 0;padding:var(--spacing-medium) 0}.dnb-section--spacing-x-large{padding:3rem 0;padding:var(--spacing-x-large) 0}.dnb-section--spacing-xx-large{padding:3.5rem 0;padding:var(--spacing-xx-large) 0}.dnb-section--spacing,.dnb-section--spacing-large{padding:2rem 0;padding:var(--spacing-large) 0}
@@ -59,7 +59,6 @@ export default class Space extends React.PureComponent<SpaceAllProps | React.HTM
59
59
  right: PropTypes.Requireable<string | number | boolean>;
60
60
  bottom: PropTypes.Requireable<string | number | boolean>;
61
61
  left: PropTypes.Requireable<string | number | boolean>;
62
- id: PropTypes.Requireable<string>;
63
62
  element: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
63
  inline: PropTypes.Requireable<string | boolean>;
65
64
  no_collapse: PropTypes.Requireable<string | boolean>;
@@ -75,7 +74,6 @@ export default class Space extends React.PureComponent<SpaceAllProps | React.HTM
75
74
  right: any;
76
75
  bottom: any;
77
76
  left: any;
78
- id: any;
79
77
  element: string;
80
78
  inline: any;
81
79
  no_collapse: any;
@@ -15,7 +15,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
15
15
  import _extends from "@babel/runtime/helpers/esm/extends";
16
16
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
17
17
  var _excluded = ["element", "no_collapse", "children", "innerRef"],
18
- _excluded2 = ["element", "inline", "no_collapse", "top", "right", "bottom", "left", "space", "stretch", "skeleton", "innerRef", "id", "className"];
18
+ _excluded2 = ["element", "inline", "no_collapse", "top", "right", "bottom", "left", "space", "stretch", "skeleton", "innerRef", "className"];
19
19
 
20
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
21
 
@@ -33,6 +33,7 @@ import Context from '../../shared/Context';
33
33
  import { spacingPropTypes } from './SpacingHelper';
34
34
  import { createSpacingClasses, isInline, spacingDefaultProps } from './SpacingUtils';
35
35
  import { skeletonDOMAttributes, createSkeletonClass } from '../skeleton/SkeletonHelper';
36
+ import Section from '../section/Section';
36
37
  export { spacingPropTypes };
37
38
 
38
39
  function Element(_ref) {
@@ -43,9 +44,18 @@ function Element(_ref) {
43
44
  props = _objectWithoutProperties(_ref, _excluded);
44
45
 
45
46
  var E = element;
46
- var component = React.createElement(E, _extends({}, props, {
47
- ref: innerRef
48
- }), children);
47
+ var component = null;
48
+
49
+ if (E === Section) {
50
+ component = React.createElement(E, _extends({}, props, {
51
+ inner_ref: innerRef
52
+ }), children);
53
+ } else {
54
+ validateDOMAttributes({}, props);
55
+ component = React.createElement(E, _extends({}, props, {
56
+ ref: innerRef
57
+ }), children);
58
+ }
49
59
 
50
60
  if (isTrue(no_collapse)) {
51
61
  var R = E === 'span' || isInline(Element) ? 'span' : 'div';
@@ -89,7 +99,6 @@ var Space = function (_React$PureComponent) {
89
99
  stretch = _ref2.stretch,
90
100
  skeleton = _ref2.skeleton,
91
101
  innerRef = _ref2.innerRef,
92
- _id = _ref2.id,
93
102
  className = _ref2.className,
94
103
  attributes = _objectWithoutProperties(_ref2, _excluded2);
95
104
 
@@ -106,7 +115,6 @@ var Space = function (_React$PureComponent) {
106
115
  }, attributes);
107
116
 
108
117
  skeletonDOMAttributes(params, skeleton);
109
- validateDOMAttributes(this.props, params);
110
118
  return React.createElement(Element, _extends({
111
119
  element: element,
112
120
  no_collapse: no_collapse,
@@ -133,7 +141,6 @@ _defineProperty(Space, "tagName", 'dnb-space');
133
141
  _defineProperty(Space, "contextType", Context);
134
142
 
135
143
  _defineProperty(Space, "defaultProps", _objectSpread(_objectSpread({
136
- id: null,
137
144
  element: 'div',
138
145
  inline: null,
139
146
  no_collapse: null
@@ -147,8 +154,7 @@ _defineProperty(Space, "defaultProps", _objectSpread(_objectSpread({
147
154
 
148
155
  export { Space as default };
149
156
  process.env.NODE_ENV !== "production" ? Space.propTypes = _objectSpread(_objectSpread({
150
- id: PropTypes.string,
151
- element: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
157
+ element: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.node]),
152
158
  inline: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
153
159
  no_collapse: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])
154
160
  }, spacingPropTypes), {}, {
@@ -83,7 +83,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
83
83
  content_style?: string;
84
84
 
85
85
  /**
86
- * To modify the `spacing` onto the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `true`.
86
+ * To modify the `spacing` onto the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `large`.
87
87
  */
88
88
  content_spacing?: TabsContentSpacing;
89
89
  label?: string;
@@ -109,7 +109,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
109
109
  tabs_style?: string;
110
110
 
111
111
  /**
112
- * To modify the `spacing` inside the tab list. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `false`.
112
+ * To modify the `spacing` inside the tab list. Defaults to `null`.
113
113
  */
114
114
  tabs_spacing?: TabsTabsSpacing;
115
115
 
@@ -450,7 +450,7 @@ var Tabs = function (_React$PureComponent) {
450
450
  nav_button_edge = _this$props3.nav_button_edge;
451
451
  var hasScrollbar = _this.state.hasScrollbar;
452
452
  return React.createElement("div", _extends({
453
- className: classnames('dnb-tabs__tabs', className, align && "dnb-tabs__tabs--".concat(align), tabs_style && "dnb-section dnb-section--".concat(tabs_style), tabs_spacing && "dnb-section--spacing-".concat(isTrue(tabs_spacing) ? 'default' : tabs_spacing), hasScrollbar && 'dnb-tabs--has-scrollbar', nav_button_edge && 'dnb-tabs--at-edge', no_border && 'dnb-tabs__tabs--no-border'),
453
+ className: classnames('dnb-tabs__tabs', className, align && "dnb-tabs__tabs--".concat(align), tabs_style && "dnb-section dnb-section--".concat(tabs_style), tabs_spacing && "dnb-section--spacing-".concat(isTrue(tabs_spacing) ? 'large' : tabs_spacing), hasScrollbar && 'dnb-tabs--has-scrollbar', nav_button_edge && 'dnb-tabs--at-edge', no_border && 'dnb-tabs__tabs--no-border'),
454
454
  ref: _this._tabsRef
455
455
  }, rest), React.createElement(ScrollNavButton, {
456
456
  onMouseDown: _this.openPrevTab,
@@ -895,17 +895,12 @@ var Tabs = function (_React$PureComponent) {
895
895
  key = _ref15[0],
896
896
  content = _ref15[1].content;
897
897
 
898
- var params = {};
899
-
900
- if (key !== String(selected_key)) {
901
- params.hidden = true;
902
- params['aria-hidden'] = true;
903
- }
904
-
905
- return React.createElement("div", _extends({
898
+ var hide = key !== String(selected_key);
899
+ return React.createElement("div", {
906
900
  key: key,
907
- className: "dnb-tabs__cached"
908
- }, params), content);
901
+ "aria-hidden": hide ? true : undefined,
902
+ className: 'dnb-tabs__cached' + (hide ? " dnb-tabs__cached--hidden" : "")
903
+ }, content);
909
904
  });
910
905
  return cachedContent;
911
906
  }
@@ -22,7 +22,7 @@ export interface ContentWrapperProps extends React.HTMLProps<HTMLElement> {
22
22
  content_style?: string;
23
23
 
24
24
  /**
25
- * To modify the `spacing` onto the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `true`.
25
+ * To modify the `spacing` onto the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `large`.
26
26
  */
27
27
  content_spacing?: ContentWrapperContentSpacing;
28
28
 
@@ -23,6 +23,7 @@ import { validateDOMAttributes, isTrue, combineLabelledBy } from '../../shared/c
23
23
  import { createSpacingClasses } from '../space/SpacingHelper';
24
24
  import Section from '../section/Section';
25
25
  import EventEmitter from '../../shared/helpers/EventEmitter';
26
+ import HeightAnimation from '../height-animation/HeightAnimation';
26
27
 
27
28
  var ContentWrapper = function (_React$PureComponent) {
28
29
  _inherits(ContentWrapper, _React$PureComponent);
@@ -92,21 +93,21 @@ var ContentWrapper = function (_React$PureComponent) {
92
93
  }
93
94
 
94
95
  validateDOMAttributes(this.props, params);
95
- var Element = content_style ? Section : 'div';
96
96
  var content = children;
97
97
 
98
98
  if (typeof children === 'function') {
99
99
  content = children(this.state);
100
100
  }
101
101
 
102
- return React.createElement(Element, _extends({
102
+ return React.createElement(HeightAnimation, _extends({
103
+ showOverflow: true,
103
104
  role: "tabpanel",
104
105
  tabIndex: "-1",
105
106
  id: "".concat(id, "-content"),
106
107
  spacing: content_style ? false : undefined,
107
108
  style_type: content_style ? content_style : undefined,
108
- element: content_style ? 'div' : undefined,
109
- className: classnames('dnb-tabs__content dnb-no-focus', createSpacingClasses(rest), isTrue(content_spacing) && 'dnb-tabs__content--spacing')
109
+ element: content_style ? Section : 'div',
110
+ className: classnames("dnb-tabs__content dnb-no-focus", createSpacingClasses(rest), content_spacing && "dnb-section--spacing-".concat(isTrue(content_spacing) ? 'large' : content_spacing))
110
111
  }, params), content);
111
112
  }
112
113
  }]);
@@ -179,7 +179,20 @@
179
179
  }
180
180
  }
181
181
 
182
+ &__cached {
183
+ opacity: 1;
184
+ transition: opacity 1s var(--easing-default);
185
+ }
186
+ &__cached--hidden {
187
+ opacity: 0;
188
+ visibility: hidden;
189
+
190
+ height: 0 !important;
191
+ overflow: hidden;
192
+ }
193
+
182
194
  /* stylelint-disable */
195
+ html[data-visual-test] & &__cached,
183
196
  html[data-visual-test] & &__button,
184
197
  html[data-visual-test] & &__button__snap,
185
198
  html[data-visual-test] & &__scroll-nav-button {
@@ -187,7 +200,7 @@
187
200
  }
188
201
  /* stylelint-enable */
189
202
 
190
- &__content--spacing {
191
- padding-top: 2rem;
203
+ &__content {
204
+ padding-bottom: 0;
192
205
  }
193
206
  }
@@ -251,10 +251,22 @@
251
251
  /* stylelint-enable */ }
252
252
  html[data-whatinput='keyboard'] .dnb-tabs__button__snap:last-of-type.focus .dnb-tabs__button:focus {
253
253
  margin-right: 0.5rem; }
254
+ .dnb-tabs__cached {
255
+ opacity: 1;
256
+ -webkit-transition: opacity 1s cubic-bezier(0.42, 0, 0, 1);
257
+ transition: opacity 1s cubic-bezier(0.42, 0, 0, 1);
258
+ -webkit-transition: opacity 1s var(--easing-default);
259
+ transition: opacity 1s var(--easing-default); }
260
+ .dnb-tabs__cached--hidden {
261
+ opacity: 0;
262
+ visibility: hidden;
263
+ height: 0 !important;
264
+ overflow: hidden; }
265
+ html[data-visual-test] .dnb-tabs .dnb-tabs__cached,
254
266
  html[data-visual-test] .dnb-tabs .dnb-tabs__button,
255
267
  html[data-visual-test] .dnb-tabs .dnb-tabs__button__snap,
256
268
  html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button {
257
269
  -webkit-transition: none !important;
258
270
  transition: none !important; }
259
- .dnb-tabs__content--spacing {
260
- padding-top: 2rem; }
271
+ .dnb-tabs__content {
272
+ padding-bottom: 0; }
@@ -1 +1 @@
1
- .dnb-tabs{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-tabs *,.dnb-tabs :after,.dnb-tabs :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-tabs :after,.dnb-tabs :before{text-decoration:inherit;vertical-align:inherit}.dnb-tabs__tabs{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;z-index:1}.dnb-tabs__tabs,.dnb-tabs__tabs.dnb-section--spacing{padding-bottom:0}.dnb-tabs__tabs__tablist{-webkit-box-flex:0;-ms-scroll-chaining:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;-ms-overflow-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex:0 1 auto;flex:0 1 auto;overflow-x:auto;overscroll-behavior:contain;scrollbar-color:#14555a transparent;scrollbar-color:var(--color-emerald-green) transparent;scrollbar-width:thin;scrollbar-width:none}.dnb-tabs__tabs__tablist:focus{outline:none}html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}html:not([data-visual-test]) .dnb-tabs__tabs__tablist{scroll-behavior:smooth}html[data-visual-test] .dnb-tabs__tabs__tablist{scroll-behavior:auto!important}.dnb-tabs__tabs__tablist::-webkit-scrollbar{display:none}.dnb-tabs__tabs--left .dnb-tabs__tabs__tablist{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.dnb-tabs__tabs--right .dnb-tabs__tabs__tablist{-webkit-box-flex:1;-webkit-box-pack:end;-ms-flex-pack:end;-ms-flex:1;flex:1;justify-content:flex-end}.dnb-tabs__tabs--center .dnb-tabs__tabs__tablist{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.dnb-tabs__tabs:before{bottom:0;content:"";height:1px;left:-100vw;position:absolute;width:100vw;z-index:-1}.dnb-tabs__tabs--no-border:before{content:none}.dnb-tabs__scroll-nav-button{display:none;opacity:0;pointer-events:none;position:absolute;right:-2px;-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out;z-index:2}.dnb-tabs__scroll-nav-button:first-of-type{left:-2px;right:auto}.dnb-tabs__scroll-nav-button--visible{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1;pointer-events:auto}.dnb-tabs__scroll-nav-button--hide{opacity:0!important;pointer-events:none}.dnb-core-style .dnb-tabs .dnb-tabs__button,.dnb-tabs__button{background-color:transparent;border:none;cursor:pointer;font-size:1.125rem;font-size:var(--font-size-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;outline:none;padding:0 .125rem;position:relative;text-decoration:none;-webkit-transition:margin .4s ease-out;transition:margin .4s ease-out;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none;white-space:nowrap;z-index:1}.dnb-core-style .dnb-tabs .dnb-tabs__button__title .dnb-icon,.dnb-tabs__button__title .dnb-icon{font-size:1rem;font-size:var(--font-size-small);-webkit-transform:translateY(-.125rem);transform:translateY(-.125rem)}.dnb-core-style .dnb-tabs .dnb-tabs__button .dnb-dummy,.dnb-tabs__button .dnb-dummy{-webkit-box-orient:vertical;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:0;margin-top:.25rem;overflow:hidden;visibility:hidden}.dnb-core-style .dnb-tabs .dnb-tabs__button:after,.dnb-tabs__button:after{bottom:0;content:"";height:1px;left:0;position:absolute;right:0;width:100%;z-index:-1}.dnb-tabs__button__snap{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 1rem 0 1.5rem;-webkit-transition:padding 1s cubic-bezier(.42,0,0,1);transition:padding 1s cubic-bezier(.42,0,0,1);-webkit-transition:padding 1s var(--easing-default);transition:padding 1s var(--easing-default);will-change:padding}@media screen and (max-width:40em){.dnb-tabs__button__snap{padding:0 1rem}}.dnb-tabs__button__snap:first-of-type{padding-left:0}.dnb-tabs__button__snap:last-of-type{padding-right:.5rem}html[data-whatinput=keyboard] .dnb-tabs__button__snap:first-of-type.focus .dnb-tabs__button:focus{margin-left:.5rem}html[data-whatinput=keyboard] .dnb-tabs__button__snap:last-of-type.focus .dnb-tabs__button:focus{margin-right:.5rem}html[data-visual-test] .dnb-tabs .dnb-tabs__button,html[data-visual-test] .dnb-tabs .dnb-tabs__button__snap,html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button{-webkit-transition:none!important;transition:none!important}.dnb-tabs__content--spacing{padding-top:2rem}
1
+ .dnb-tabs{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-tabs *,.dnb-tabs :after,.dnb-tabs :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-tabs :after,.dnb-tabs :before{text-decoration:inherit;vertical-align:inherit}.dnb-tabs__tabs{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;z-index:1}.dnb-tabs__tabs,.dnb-tabs__tabs.dnb-section--spacing{padding-bottom:0}.dnb-tabs__tabs__tablist{-webkit-box-flex:0;-ms-scroll-chaining:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;-ms-overflow-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex:0 1 auto;flex:0 1 auto;overflow-x:auto;overscroll-behavior:contain;scrollbar-color:#14555a transparent;scrollbar-color:var(--color-emerald-green) transparent;scrollbar-width:thin;scrollbar-width:none}.dnb-tabs__tabs__tablist:focus{outline:none}html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}html:not([data-visual-test]) .dnb-tabs__tabs__tablist{scroll-behavior:smooth}html[data-visual-test] .dnb-tabs__tabs__tablist{scroll-behavior:auto!important}.dnb-tabs__tabs__tablist::-webkit-scrollbar{display:none}.dnb-tabs__tabs--left .dnb-tabs__tabs__tablist{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.dnb-tabs__tabs--right .dnb-tabs__tabs__tablist{-webkit-box-flex:1;-webkit-box-pack:end;-ms-flex-pack:end;-ms-flex:1;flex:1;justify-content:flex-end}.dnb-tabs__tabs--center .dnb-tabs__tabs__tablist{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.dnb-tabs__tabs:before{bottom:0;content:"";height:1px;left:-100vw;position:absolute;width:100vw;z-index:-1}.dnb-tabs__tabs--no-border:before{content:none}.dnb-tabs__scroll-nav-button{display:none;opacity:0;pointer-events:none;position:absolute;right:-2px;-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out;z-index:2}.dnb-tabs__scroll-nav-button:first-of-type{left:-2px;right:auto}.dnb-tabs__scroll-nav-button--visible{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1;pointer-events:auto}.dnb-tabs__scroll-nav-button--hide{opacity:0!important;pointer-events:none}.dnb-core-style .dnb-tabs .dnb-tabs__button,.dnb-tabs__button{background-color:transparent;border:none;cursor:pointer;font-size:1.125rem;font-size:var(--font-size-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;outline:none;padding:0 .125rem;position:relative;text-decoration:none;-webkit-transition:margin .4s ease-out;transition:margin .4s ease-out;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none;white-space:nowrap;z-index:1}.dnb-core-style .dnb-tabs .dnb-tabs__button__title .dnb-icon,.dnb-tabs__button__title .dnb-icon{font-size:1rem;font-size:var(--font-size-small);-webkit-transform:translateY(-.125rem);transform:translateY(-.125rem)}.dnb-core-style .dnb-tabs .dnb-tabs__button .dnb-dummy,.dnb-tabs__button .dnb-dummy{-webkit-box-orient:vertical;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:0;margin-top:.25rem;overflow:hidden;visibility:hidden}.dnb-core-style .dnb-tabs .dnb-tabs__button:after,.dnb-tabs__button:after{bottom:0;content:"";height:1px;left:0;position:absolute;right:0;width:100%;z-index:-1}.dnb-tabs__button__snap{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 1rem 0 1.5rem;-webkit-transition:padding 1s cubic-bezier(.42,0,0,1);transition:padding 1s cubic-bezier(.42,0,0,1);-webkit-transition:padding 1s var(--easing-default);transition:padding 1s var(--easing-default);will-change:padding}@media screen and (max-width:40em){.dnb-tabs__button__snap{padding:0 1rem}}.dnb-tabs__button__snap:first-of-type{padding-left:0}.dnb-tabs__button__snap:last-of-type{padding-right:.5rem}html[data-whatinput=keyboard] .dnb-tabs__button__snap:first-of-type.focus .dnb-tabs__button:focus{margin-left:.5rem}html[data-whatinput=keyboard] .dnb-tabs__button__snap:last-of-type.focus .dnb-tabs__button:focus{margin-right:.5rem}.dnb-tabs__cached{opacity:1;-webkit-transition:opacity 1s cubic-bezier(.42,0,0,1);transition:opacity 1s cubic-bezier(.42,0,0,1);-webkit-transition:opacity 1s var(--easing-default);transition:opacity 1s var(--easing-default)}.dnb-tabs__cached--hidden{height:0!important;opacity:0;overflow:hidden;visibility:hidden}html[data-visual-test] .dnb-tabs .dnb-tabs__button,html[data-visual-test] .dnb-tabs .dnb-tabs__button__snap,html[data-visual-test] .dnb-tabs .dnb-tabs__cached,html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button{-webkit-transition:none!important;transition:none!important}.dnb-tabs__content{padding-bottom:0}
@@ -40,7 +40,7 @@
40
40
 
41
41
  .dnb-tabs__content:focus {
42
42
  position: relative; }
43
- .dnb-tabs__content:focus::after {
43
+ .dnb-tabs__content:focus::before {
44
44
  content: '';
45
45
  position: absolute;
46
46
  z-index: -1;
@@ -51,13 +51,13 @@
51
51
  max-width: 100vw;
52
52
  border-radius: 0.5rem;
53
53
  outline: none; }
54
- html[data-whatinput='keyboard'] .dnb-tabs__content:focus::after {
54
+ html[data-whatinput='keyboard'] .dnb-tabs__content:focus::before {
55
55
  --border-color: var(--color-emerald-green);
56
56
  -webkit-box-shadow: 0 0 0 0.125rem var(--border-color);
57
57
  box-shadow: 0 0 0 0.125rem var(--border-color);
58
58
  border-color: transparent; }
59
59
  @media screen and (-ms-high-contrast: none) {
60
- html[data-whatinput='keyboard'] .dnb-tabs__content:focus::after {
60
+ html[data-whatinput='keyboard'] .dnb-tabs__content:focus::before {
61
61
  -webkit-box-shadow: 0 0 0 0.125rem #14555a;
62
62
  box-shadow: 0 0 0 0.125rem #14555a;
63
63
  -webkit-box-shadow: 0 0 0 0.125rem var(--color-emerald-green);
@@ -1 +1 @@
1
- .dnb-tabs__tabs:not(.dnb-section):before{background-color:#ebebeb;background-color:var(--color-black-8);-webkit-box-shadow:100vw 0 0 0 #ebebeb;box-shadow:100vw 0 0 0 #ebebeb;-webkit-box-shadow:100vw 0 0 0 var(--color-black-8);box-shadow:100vw 0 0 0 var(--color-black-8)}.dnb-tabs__tabs__tablist:focus{border-radius:.5rem}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{border-radius:0 50% 50% 0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{border-radius:50% 0 0 50%}.dnb-tabs--at-edge .dnb-tabs__tabs__tablist:focus{border-radius:0}.dnb-tabs__content:focus{position:relative}.dnb-tabs__content:focus:after{border-radius:.5rem;bottom:-.5rem;content:"";left:-.5rem;max-width:100vw;outline:none;position:absolute;right:-.5rem;top:.125rem;z-index:-1}html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button__title{color:#007272;color:var(--color-sea-green);display:block;font-size:1.125rem;font-size:var(--font-size-basis);font-weight:400;font-weight:var(--font-weight-regular);padding:.5rem 0 .25rem;text-align:center}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#d2f0e9;background-color:var(--color-mint-green-50)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]):after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:focus{overflow:visible}.dnb-tabs__button:focus:before{border-radius:inherit;bottom:0;content:"";height:inherit;left:-.5rem;outline:none;position:absolute;right:-.5rem;top:0;z-index:1}html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button:focus:before{border-radius:1.5rem;bottom:.5rem;left:-.375rem;right:-.375rem;top:.5rem}.dnb-tabs__button[disabled] .dnb-tabs__button__title{color:#b3dada;color:var(--color-sea-green-30)}.dnb-tabs__button:not([disabled]).selected:after,.dnb-tabs__button:not([disabled]):active:after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button:not([disabled]):active .dnb-tabs__button__title{color:#14555a;color:var(--color-emerald-green)}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button span[hidden]{font-weight:500;font-weight:var(--font-weight-medium)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#f2f4ec;background-color:var(--color-pistachio)}
1
+ .dnb-tabs__tabs:not(.dnb-section):before{background-color:#ebebeb;background-color:var(--color-black-8);-webkit-box-shadow:100vw 0 0 0 #ebebeb;box-shadow:100vw 0 0 0 #ebebeb;-webkit-box-shadow:100vw 0 0 0 var(--color-black-8);box-shadow:100vw 0 0 0 var(--color-black-8)}.dnb-tabs__tabs__tablist:focus{border-radius:.5rem}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{border-radius:0 50% 50% 0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{border-radius:50% 0 0 50%}.dnb-tabs--at-edge .dnb-tabs__tabs__tablist:focus{border-radius:0}.dnb-tabs__content:focus{position:relative}.dnb-tabs__content:focus:before{border-radius:.5rem;bottom:-.5rem;content:"";left:-.5rem;max-width:100vw;outline:none;position:absolute;right:-.5rem;top:.125rem;z-index:-1}html[data-whatinput=keyboard] .dnb-tabs__content:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__content:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button__title{color:#007272;color:var(--color-sea-green);display:block;font-size:1.125rem;font-size:var(--font-size-basis);font-weight:400;font-weight:var(--font-weight-regular);padding:.5rem 0 .25rem;text-align:center}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#d2f0e9;background-color:var(--color-mint-green-50)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]):after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:focus{overflow:visible}.dnb-tabs__button:focus:before{border-radius:inherit;bottom:0;content:"";height:inherit;left:-.5rem;outline:none;position:absolute;right:-.5rem;top:0;z-index:1}html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button:focus:before{border-radius:1.5rem;bottom:.5rem;left:-.375rem;right:-.375rem;top:.5rem}.dnb-tabs__button[disabled] .dnb-tabs__button__title{color:#b3dada;color:var(--color-sea-green-30)}.dnb-tabs__button:not([disabled]).selected:after,.dnb-tabs__button:not([disabled]):active:after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button:not([disabled]):active .dnb-tabs__button__title{color:#14555a;color:var(--color-emerald-green)}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button span[hidden]{font-weight:500;font-weight:var(--font-weight-medium)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#f2f4ec;background-color:var(--color-pistachio)}
@@ -36,7 +36,7 @@
36
36
 
37
37
  .dnb-tabs__content:focus {
38
38
  position: relative; }
39
- .dnb-tabs__content:focus::after {
39
+ .dnb-tabs__content:focus::before {
40
40
  content: '';
41
41
  position: absolute;
42
42
  z-index: -1;
@@ -47,13 +47,13 @@
47
47
  max-width: 100vw;
48
48
  border-radius: 0.5rem;
49
49
  outline: none; }
50
- html[data-whatinput='keyboard'] .dnb-tabs__content:focus::after {
50
+ html[data-whatinput='keyboard'] .dnb-tabs__content:focus::before {
51
51
  --border-color: var(--color-emerald-green);
52
52
  -webkit-box-shadow: 0 0 0 0.125rem var(--border-color);
53
53
  box-shadow: 0 0 0 0.125rem var(--border-color);
54
54
  border-color: transparent; }
55
55
  @media screen and (-ms-high-contrast: none) {
56
- html[data-whatinput='keyboard'] .dnb-tabs__content:focus::after {
56
+ html[data-whatinput='keyboard'] .dnb-tabs__content:focus::before {
57
57
  -webkit-box-shadow: 0 0 0 0.125rem #14555a;
58
58
  box-shadow: 0 0 0 0.125rem #14555a;
59
59
  -webkit-box-shadow: 0 0 0 0.125rem var(--color-emerald-green);
@@ -1 +1 @@
1
- .dnb-tabs__tabs:not(.dnb-section):before{background-color:#ebebeb;background-color:var(--color-black-8);-webkit-box-shadow:100vw 0 0 0 #ebebeb;box-shadow:100vw 0 0 0 #ebebeb;-webkit-box-shadow:100vw 0 0 0 var(--color-black-8);box-shadow:100vw 0 0 0 var(--color-black-8)}.dnb-tabs__tabs__tablist:focus{border-radius:.5rem}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{border-radius:0 50% 50% 0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{border-radius:50% 0 0 50%}.dnb-tabs--at-edge .dnb-tabs__tabs__tablist:focus{border-radius:0}.dnb-tabs__content:focus{position:relative}.dnb-tabs__content:focus:after{border-radius:.5rem;bottom:-.5rem;content:"";left:-.5rem;max-width:100vw;outline:none;position:absolute;right:-.5rem;top:.125rem;z-index:-1}html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button__title{color:#007272;color:var(--color-sea-green);display:block;font-size:1.125rem;font-size:var(--font-size-basis);font-weight:400;font-weight:var(--font-weight-regular);padding:.5rem 0 .25rem;text-align:center}html:not([data-whatintent=touch]) .dnb-tabs__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#d2f0e9;background-color:var(--color-mint-green-50)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]):after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:focus{overflow:visible}.dnb-tabs__button:focus:before{border-radius:inherit;bottom:0;content:"";height:inherit;left:-.5rem;outline:none;position:absolute;right:-.5rem;top:0;z-index:1}html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button:focus:before{border-radius:1.5rem;bottom:.5rem;left:-.375rem;right:-.375rem;top:.5rem}.dnb-tabs__button[disabled] .dnb-tabs__button__title{color:#b3dada;color:var(--color-sea-green-30)}.dnb-tabs__button:not([disabled]).selected:after,.dnb-tabs__button:not([disabled]):active:after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button:not([disabled]):active .dnb-tabs__button__title{color:#14555a;color:var(--color-emerald-green)}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button span[hidden]{font-weight:500;font-weight:var(--font-weight-medium)}
1
+ .dnb-tabs__tabs:not(.dnb-section):before{background-color:#ebebeb;background-color:var(--color-black-8);-webkit-box-shadow:100vw 0 0 0 #ebebeb;box-shadow:100vw 0 0 0 #ebebeb;-webkit-box-shadow:100vw 0 0 0 var(--color-black-8);box-shadow:100vw 0 0 0 var(--color-black-8)}.dnb-tabs__tabs__tablist:focus{border-radius:.5rem}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{border-radius:0 50% 50% 0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{border-radius:50% 0 0 50%}.dnb-tabs--at-edge .dnb-tabs__tabs__tablist:focus{border-radius:0}.dnb-tabs__content:focus{position:relative}.dnb-tabs__content:focus:before{border-radius:.5rem;bottom:-.5rem;content:"";left:-.5rem;max-width:100vw;outline:none;position:absolute;right:-.5rem;top:.125rem;z-index:-1}html[data-whatinput=keyboard] .dnb-tabs__content:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__content:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button__title{color:#007272;color:var(--color-sea-green);display:block;font-size:1.125rem;font-size:var(--font-size-basis);font-weight:400;font-weight:var(--font-weight-regular);padding:.5rem 0 .25rem;text-align:center}html:not([data-whatintent=touch]) .dnb-tabs__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#d2f0e9;background-color:var(--color-mint-green-50)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]):after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:focus{overflow:visible}.dnb-tabs__button:focus:before{border-radius:inherit;bottom:0;content:"";height:inherit;left:-.5rem;outline:none;position:absolute;right:-.5rem;top:0;z-index:1}html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button:focus:before{border-radius:1.5rem;bottom:.5rem;left:-.375rem;right:-.375rem;top:.5rem}.dnb-tabs__button[disabled] .dnb-tabs__button__title{color:#b3dada;color:var(--color-sea-green-30)}.dnb-tabs__button:not([disabled]).selected:after,.dnb-tabs__button:not([disabled]):active:after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button:not([disabled]):active .dnb-tabs__button__title{color:#14555a;color:var(--color-emerald-green)}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button span[hidden]{font-weight:500;font-weight:var(--font-weight-medium)}
@@ -36,9 +36,12 @@
36
36
  border-radius: 0;
37
37
  }
38
38
 
39
+ // Make focus ring when keyboard is used to navigate
39
40
  &__content:focus {
40
41
  position: relative;
41
- &::after {
42
+
43
+ // Use "before" (instead of after) in order to not collide with Section styles
44
+ &::before {
42
45
  content: '';
43
46
  position: absolute;
44
47
  z-index: -1;
@@ -11,11 +11,10 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
11
11
  var _UploadInfo, _UploadFileInput, _UploadFileList;
12
12
 
13
13
  var _excluded = ["id", "skeleton", "className", "acceptedFileTypes", "filesAmountLimit", "fileMaxSize", "onChange", "onFileDelete", "title", "text", "fileTypeDescription", "fileSizeDescription", "fileAmountDescription", "fileSizeContent", "buttonText", "loadingText", "errorLargeFile", "errorUnsupportedFile", "errorAmountLimit", "deleteButton", "fileListAriaLabel"];
14
- import "core-js/modules/es.object.to-string.js";
15
- import "core-js/modules/es.function.name.js";
16
14
  import "core-js/modules/es.array.concat.js";
17
15
  import "core-js/modules/es.array.map.js";
18
16
  import "core-js/modules/es.array.filter.js";
17
+ import "core-js/modules/es.object.to-string.js";
19
18
  import "core-js/modules/es.array.slice.js";
20
19
 
21
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -71,7 +70,8 @@ var Upload = function Upload(localProps) {
71
70
  var _useUpload = useUpload(id),
72
71
  files = _useUpload.files,
73
72
  setFiles = _useUpload.setFiles,
74
- setInternalFiles = _useUpload.setInternalFiles;
73
+ setInternalFiles = _useUpload.setInternalFiles,
74
+ existsInFiles = _useUpload.existsInFiles;
75
75
 
76
76
  return React.createElement(UploadContext.Provider, {
77
77
  value: _objectSpread(_objectSpread({}, extendedProps), {}, {
@@ -86,24 +86,20 @@ var Upload = function Upload(localProps) {
86
86
  }, props), _UploadInfo || (_UploadInfo = React.createElement(UploadInfo, null)), _UploadFileInput || (_UploadFileInput = React.createElement(UploadFileInput, null)), _UploadFileList || (_UploadFileList = React.createElement(UploadFileList, null)))));
87
87
 
88
88
  function onInputUpload(newFiles) {
89
- var existsInFiles = function existsInFiles(file) {
90
- return files.some(function (_ref) {
91
- var f = _ref.file;
92
- return f.name === file.name && f.size === file.size && f.lastModified === file.lastModified;
93
- });
94
- };
89
+ var mergedFiles = [].concat(_toConsumableArray(files), _toConsumableArray(newFiles.map(function (fileItem) {
90
+ var file = fileItem.file;
95
91
 
96
- var uniqueFiles = [].concat(_toConsumableArray(files), _toConsumableArray(newFiles.filter(function (_ref2) {
97
- var file = _ref2.file;
98
- return !existsInFiles(file);
99
- }).map(function (fileItem) {
100
92
  if (!fileItem.id) {
101
93
  fileItem.id = makeUniqueId();
102
94
  }
103
95
 
96
+ fileItem.exists = existsInFiles(file, files);
104
97
  return fileItem;
105
98
  })));
106
- var verifiedFiles = verifyFiles(uniqueFiles, {
99
+ var verifiedFiles = verifyFiles(mergedFiles.filter(function (_ref) {
100
+ var exists = _ref.exists;
101
+ return !exists;
102
+ }), {
107
103
  fileMaxSize: fileMaxSize,
108
104
  acceptedFileTypes: acceptedFileTypes,
109
105
  errorUnsupportedFile: errorUnsupportedFile,
@@ -113,7 +109,7 @@ var Upload = function Upload(localProps) {
113
109
  var validFiles = _toConsumableArray(verifiedFiles).slice(0, filesAmountLimit);
114
110
 
115
111
  setFiles(validFiles);
116
- setInternalFiles(verifiedFiles);
112
+ setInternalFiles(mergedFiles);
117
113
 
118
114
  if (typeof onChange === 'function') {
119
115
  onChange({
@@ -1,18 +1,16 @@
1
1
  var _UploadStatus;
2
2
 
3
- import "core-js/modules/es.array.reduce.js";
4
- import "core-js/modules/es.object.to-string.js";
5
- import "core-js/modules/es.array.concat.js";
3
+ import "core-js/modules/es.array.join.js";
6
4
  import "core-js/modules/es.array.map.js";
7
5
  import "core-js/modules/es.array.from.js";
8
6
  import "core-js/modules/es.string.iterator.js";
9
- import React, { useEffect, useRef } from 'react';
7
+ import React, { useRef } from 'react';
10
8
  import Button from '../button/Button';
11
9
  import { folder as FolderIcon } from '../../icons';
12
10
  import { makeUniqueId } from '../../shared/component-helper';
13
11
  import { UploadContext } from './UploadContext';
14
12
  import UploadStatus from './UploadStatus';
15
- import useUpload from './useUpload';
13
+ import { extendWithAbbreviation } from './UploadVerify';
16
14
 
17
15
  var UploadFileInput = function UploadFileInput() {
18
16
  var fileInput = useRef(null);
@@ -23,18 +21,6 @@ var UploadFileInput = function UploadFileInput() {
23
21
  onInputUpload = context.onInputUpload,
24
22
  filesAmountLimit = context.filesAmountLimit;
25
23
 
26
- var _useUpload = useUpload(id),
27
- internalFiles = _useUpload.internalFiles;
28
-
29
- var accept = acceptedFileTypes.reduce(function (accept, format, index) {
30
- var previus = index === 0 ? '' : "".concat(accept, ",");
31
- return "".concat(previus, " .").concat(format);
32
- }, '');
33
- useEffect(function () {
34
- fileInput.current.value = null;
35
- fileInput.current.accept = accept;
36
- }, []);
37
-
38
24
  var openFileDialog = function openFileDialog() {
39
25
  var _fileInput$current;
40
26
 
@@ -42,6 +28,9 @@ var UploadFileInput = function UploadFileInput() {
42
28
  };
43
29
 
44
30
  var sharedId = id || makeUniqueId();
31
+ var accept = extendWithAbbreviation(acceptedFileTypes).map(function (type) {
32
+ return ".".concat(type);
33
+ }).join(',');
45
34
  return React.createElement("div", {
46
35
  "data-testid": "upload-file-input"
47
36
  }, React.createElement(Button, {
@@ -53,19 +42,20 @@ var UploadFileInput = function UploadFileInput() {
53
42
  icon_position: "left",
54
43
  variant: "secondary",
55
44
  wrap: true,
56
- onClick: openFileDialog,
57
- disabled: internalFiles.length > filesAmountLimit
45
+ onClick: openFileDialog
58
46
  }, buttonText), _UploadStatus || (_UploadStatus = React.createElement(UploadStatus, null)), React.createElement("input", {
59
47
  "aria-labelledby": "".concat(sharedId, "-input"),
60
48
  "data-testid": "upload-file-input-input",
61
49
  ref: fileInput,
50
+ accept: accept,
62
51
  className: "dnb-upload__file-input",
63
52
  type: "file",
64
- onChange: handleFileInput,
53
+ onChange: onChangeHandler,
54
+ onClick: onClickHandler,
65
55
  multiple: filesAmountLimit > 1
66
56
  }));
67
57
 
68
- function handleFileInput(event) {
58
+ function onChangeHandler(event) {
69
59
  var target = event.target;
70
60
  var files = target.files;
71
61
  onInputUpload(Array.from(files).map(function (file) {
@@ -74,6 +64,11 @@ var UploadFileInput = function UploadFileInput() {
74
64
  };
75
65
  }));
76
66
  }
67
+
68
+ function onClickHandler(event) {
69
+ var target = event.target;
70
+ target.value = null;
71
+ }
77
72
  };
78
73
 
79
74
  export default UploadFileInput;
@@ -51,6 +51,7 @@ function UploadFileList() {
51
51
 
52
52
  return React.createElement(UploadFileListCell, {
53
53
  key: index,
54
+ id: id,
54
55
  uploadFile: uploadFile,
55
56
  onDelete: onDeleteHandler,
56
57
  deleteButtonText: deleteButton,
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { UploadFile } from './types';
3
3
  export declare type UploadFileListCellProps = {
4
+ id: string;
4
5
  /**
5
6
  * Uploaded file
6
7
  */
@@ -15,5 +16,5 @@ export declare type UploadFileListCellProps = {
15
16
  loadingText: React.ReactNode;
16
17
  deleteButtonText: React.ReactNode;
17
18
  };
18
- declare const UploadFileListCell: ({ uploadFile, onDelete, loadingText, deleteButtonText, }: UploadFileListCellProps) => JSX.Element;
19
+ declare const UploadFileListCell: ({ id, uploadFile, onDelete, loadingText, deleteButtonText, }: UploadFileListCellProps) => JSX.Element;
19
20
  export default UploadFileListCell;