@dnb/eufemia 9.46.2 → 9.47.1

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 (113) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/cjs/components/input-masked/InputMasked.js +13 -1
  3. package/cjs/components/input-masked/InputMaskedHooks.js +1 -1
  4. package/cjs/components/input-masked/InputMaskedUtils.js +3 -3
  5. package/cjs/components/table/TableContainer.d.ts +3 -3
  6. package/cjs/components/table/TableContainer.js +20 -1
  7. package/cjs/components/table/TableTh.js +2 -2
  8. package/cjs/components/table/style/_table-accordion.scss +52 -8
  9. package/cjs/components/table/style/_table-container.scss +20 -2
  10. package/cjs/components/table/style/_table-td.scss +35 -67
  11. package/cjs/components/table/style/_table-th.scss +41 -34
  12. package/cjs/components/table/style/_table.scss +12 -13
  13. package/cjs/components/table/style/dnb-table-mixins.css +0 -0
  14. package/cjs/components/table/style/dnb-table-mixins.min.css +0 -0
  15. package/cjs/components/table/style/dnb-table-mixins.scss +11 -0
  16. package/cjs/components/table/style/dnb-table.css +124 -137
  17. package/cjs/components/table/style/dnb-table.min.css +8 -7
  18. package/cjs/components/table/style/themes/dnb-table-theme-ui.css +7 -3
  19. package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  20. package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +6 -12
  21. package/cjs/components/upload/Upload.js +0 -1
  22. package/cjs/components/upload/UploadFileInput.js +2 -10
  23. package/cjs/components/upload/UploadFileList.js +0 -1
  24. package/cjs/components/upload/UploadFileListCell.js +22 -23
  25. package/cjs/components/upload/UploadInfo.js +1 -9
  26. package/cjs/components/upload/UploadVerify.d.ts +3 -0
  27. package/cjs/components/upload/UploadVerify.js +27 -3
  28. package/cjs/shared/Eufemia.js +1 -1
  29. package/cjs/style/dnb-ui-components.css +124 -137
  30. package/cjs/style/dnb-ui-components.min.css +8 -7
  31. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.css +7 -3
  32. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +1 -1
  33. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +7 -3
  34. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  35. package/components/input-masked/InputMasked.js +13 -1
  36. package/components/input-masked/InputMaskedHooks.js +1 -1
  37. package/components/input-masked/InputMaskedUtils.js +3 -3
  38. package/components/table/TableContainer.d.ts +3 -3
  39. package/components/table/TableContainer.js +21 -1
  40. package/components/table/TableTh.js +2 -2
  41. package/components/table/style/_table-accordion.scss +52 -8
  42. package/components/table/style/_table-container.scss +20 -2
  43. package/components/table/style/_table-td.scss +35 -67
  44. package/components/table/style/_table-th.scss +41 -34
  45. package/components/table/style/_table.scss +12 -13
  46. package/components/table/style/dnb-table-mixins.css +0 -0
  47. package/components/table/style/dnb-table-mixins.min.css +0 -0
  48. package/components/table/style/dnb-table-mixins.scss +11 -0
  49. package/components/table/style/dnb-table.css +124 -137
  50. package/components/table/style/dnb-table.min.css +8 -7
  51. package/components/table/style/themes/dnb-table-theme-ui.css +7 -3
  52. package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  53. package/components/table/style/themes/dnb-table-theme-ui.scss +6 -12
  54. package/components/upload/Upload.js +0 -1
  55. package/components/upload/UploadFileInput.js +3 -10
  56. package/components/upload/UploadFileList.js +0 -1
  57. package/components/upload/UploadFileListCell.js +17 -19
  58. package/components/upload/UploadInfo.js +1 -9
  59. package/components/upload/UploadVerify.d.ts +3 -0
  60. package/components/upload/UploadVerify.js +18 -1
  61. package/es/components/input-masked/InputMasked.js +12 -1
  62. package/es/components/input-masked/InputMaskedHooks.js +1 -1
  63. package/es/components/input-masked/InputMaskedUtils.js +3 -3
  64. package/es/components/table/TableContainer.d.ts +3 -3
  65. package/es/components/table/TableContainer.js +21 -1
  66. package/es/components/table/TableTh.js +2 -2
  67. package/es/components/table/style/_table-accordion.scss +52 -8
  68. package/es/components/table/style/_table-container.scss +20 -2
  69. package/es/components/table/style/_table-td.scss +35 -67
  70. package/es/components/table/style/_table-th.scss +41 -34
  71. package/es/components/table/style/_table.scss +12 -13
  72. package/es/components/table/style/dnb-table-mixins.css +0 -0
  73. package/es/components/table/style/dnb-table-mixins.min.css +0 -0
  74. package/es/components/table/style/dnb-table-mixins.scss +11 -0
  75. package/es/components/table/style/dnb-table.css +124 -137
  76. package/es/components/table/style/dnb-table.min.css +8 -7
  77. package/es/components/table/style/themes/dnb-table-theme-ui.css +7 -3
  78. package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  79. package/es/components/table/style/themes/dnb-table-theme-ui.scss +6 -12
  80. package/es/components/upload/Upload.js +0 -1
  81. package/es/components/upload/UploadFileInput.js +3 -7
  82. package/es/components/upload/UploadFileList.js +0 -1
  83. package/es/components/upload/UploadFileListCell.js +14 -18
  84. package/es/components/upload/UploadInfo.js +1 -9
  85. package/es/components/upload/UploadVerify.d.ts +3 -0
  86. package/es/components/upload/UploadVerify.js +11 -1
  87. package/es/shared/Eufemia.js +1 -1
  88. package/es/style/dnb-ui-components.css +124 -137
  89. package/es/style/dnb-ui-components.min.css +8 -7
  90. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.css +7 -3
  91. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +1 -1
  92. package/es/style/themes/theme-ui/dnb-theme-ui.css +7 -3
  93. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  94. package/esm/dnb-ui-basis.min.mjs +1 -1
  95. package/esm/dnb-ui-components.min.mjs +1 -1
  96. package/esm/dnb-ui-elements.min.mjs +2 -2
  97. package/esm/dnb-ui-extensions.min.mjs +1 -1
  98. package/esm/dnb-ui-lib.min.mjs +2 -2
  99. package/esm/dnb-ui-web-components.min.mjs +2 -2
  100. package/package.json +1 -1
  101. package/shared/Eufemia.js +1 -1
  102. package/style/dnb-ui-components.css +124 -137
  103. package/style/dnb-ui-components.min.css +8 -7
  104. package/style/themes/theme-eiendom/dnb-theme-eiendom.css +7 -3
  105. package/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +1 -1
  106. package/style/themes/theme-ui/dnb-theme-ui.css +7 -3
  107. package/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  108. package/umd/dnb-ui-basis.min.js +1 -1
  109. package/umd/dnb-ui-components.min.js +1 -1
  110. package/umd/dnb-ui-elements.min.js +2 -2
  111. package/umd/dnb-ui-extensions.min.js +1 -1
  112. package/umd/dnb-ui-lib.min.js +2 -2
  113. package/umd/dnb-ui-web-components.min.js +2 -2
@@ -23,8 +23,6 @@ Object.defineProperty(exports, "__esModule", {
23
23
  });
24
24
  exports.default = void 0;
25
25
 
26
- require("core-js/modules/es.array.join.js");
27
-
28
26
  require("core-js/modules/es.array.map.js");
29
27
 
30
28
  require("core-js/modules/es.array.from.js");
@@ -71,15 +69,10 @@ var UploadFileInput = function UploadFileInput() {
71
69
  };
72
70
 
73
71
  var sharedId = id || (0, _componentHelper.makeUniqueId)();
74
- var accept = (0, _UploadVerify.extendWithAbbreviation)(acceptedFileTypes).map(function (type) {
75
- return ".".concat(type);
76
- }).join(',');
77
- return _react.default.createElement("div", {
78
- "data-testid": "upload-file-input"
79
- }, _react.default.createElement(_Button.default, {
72
+ var accept = (0, _UploadVerify.getAcceptedFileTypes)(acceptedFileTypes);
73
+ return _react.default.createElement("div", null, _react.default.createElement(_Button.default, {
80
74
  top: "medium",
81
75
  id: "".concat(sharedId, "-input"),
82
- "data-testid": "upload-file-input-button",
83
76
  className: "dnb-upload__file-input-button",
84
77
  icon: _icons.folder,
85
78
  icon_position: "left",
@@ -88,7 +81,6 @@ var UploadFileInput = function UploadFileInput() {
88
81
  onClick: openFileDialog
89
82
  }, buttonText), _UploadStatus || (_UploadStatus = _react.default.createElement(_UploadStatus2.default, null)), _react.default.createElement("input", {
90
83
  "aria-labelledby": "".concat(sharedId, "-input"),
91
- "data-testid": "upload-file-input-input",
92
84
  ref: fileInput,
93
85
  accept: accept,
94
86
  className: "dnb-upload__file-input",
@@ -41,7 +41,6 @@ function UploadFileList() {
41
41
  }
42
42
 
43
43
  return _react.default.createElement("ul", {
44
- "data-testid": "upload-file-list",
45
44
  className: "dnb-upload__file-list",
46
45
  "aria-label": fileListAriaLabel
47
46
  }, files.map(function (uploadFile, index) {
@@ -21,12 +21,6 @@ Object.defineProperty(exports, "__esModule", {
21
21
  });
22
22
  exports.default = void 0;
23
23
 
24
- require("core-js/modules/es.function.name.js");
25
-
26
- require("core-js/modules/es.regexp.exec.js");
27
-
28
- require("core-js/modules/es.string.split.js");
29
-
30
24
  require("core-js/modules/es.array.iterator.js");
31
25
 
32
26
  require("core-js/modules/es.object.to-string.js");
@@ -39,6 +33,12 @@ require("core-js/modules/web.url.js");
39
33
 
40
34
  require("core-js/modules/web.url-search-params.js");
41
35
 
36
+ require("core-js/modules/es.regexp.exec.js");
37
+
38
+ require("core-js/modules/es.string.split.js");
39
+
40
+ require("core-js/modules/es.function.name.js");
41
+
42
42
  var _react = _interopRequireWildcard(require("react"));
43
43
 
44
44
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -51,7 +51,7 @@ var _FormStatus2 = _interopRequireDefault(require("../../components/FormStatus")
51
51
 
52
52
  var _progressIndicator = _interopRequireDefault(require("../../components/progress-indicator"));
53
53
 
54
- var _P = _interopRequireDefault(require("../../elements/P"));
54
+ var _P2 = _interopRequireDefault(require("../../elements/P"));
55
55
 
56
56
  var _icons = require("../../icons");
57
57
 
@@ -59,6 +59,8 @@ var _componentHelper = require("../../shared/component-helper");
59
59
 
60
60
  var _useUpload2 = _interopRequireDefault(require("./useUpload"));
61
61
 
62
+ var _UploadVerify = require("./UploadVerify");
63
+
62
64
  var _ProgressIndicator, _Icon;
63
65
 
64
66
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -90,7 +92,7 @@ var images = {
90
92
  };
91
93
 
92
94
  var UploadFileListCell = function UploadFileListCell(_ref) {
93
- var _div, _a, _FormStatus;
95
+ var _div, _P, _FormStatus;
94
96
 
95
97
  var id = _ref.id,
96
98
  uploadFile = _ref.uploadFile,
@@ -100,10 +102,9 @@ var UploadFileListCell = function UploadFileListCell(_ref) {
100
102
  var file = uploadFile.file,
101
103
  errorMessage = uploadFile.errorMessage,
102
104
  isLoading = uploadFile.isLoading;
103
- var name = file.name,
104
- type = file.type;
105
- var fileType = type.split('/')[1] || '';
106
105
  var hasWarning = errorMessage != null;
106
+ var fileType = (0, _UploadVerify.getFileTypeFromExtension)(file);
107
+ var humanFileType = fileType.toUpperCase();
107
108
  var imageUrl = URL.createObjectURL(file);
108
109
  var cellRef = (0, _react.useRef)();
109
110
  var exists = useExistsHighlight(id, file);
@@ -124,7 +125,6 @@ var UploadFileListCell = function UploadFileListCell(_ref) {
124
125
  };
125
126
 
126
127
  return _react.default.createElement("li", {
127
- "data-testid": "upload-file-list-cell",
128
128
  className: (0, _classnames.default)('dnb-upload__file-cell', hasWarning && 'dnb-upload__file-cell--warning', exists && 'dnb-upload__file-cell--highlight'),
129
129
  ref: cellRef
130
130
  }, _react.default.createElement("div", {
@@ -132,7 +132,6 @@ var UploadFileListCell = function UploadFileListCell(_ref) {
132
132
  }, _react.default.createElement("div", {
133
133
  className: "dnb-upload__file-cell__content__left"
134
134
  }, getIcon(), getTitle()), _react.default.createElement("div", null, _react.default.createElement(_Button.default, {
135
- "data-testid": "upload-delete-button",
136
135
  icon: _icons.trash,
137
136
  variant: "tertiary",
138
137
  onClick: onDeleteHandler,
@@ -141,9 +140,7 @@ var UploadFileListCell = function UploadFileListCell(_ref) {
141
140
 
142
141
  function getIcon() {
143
142
  if (isLoading) {
144
- return _ProgressIndicator || (_ProgressIndicator = _react.default.createElement(_progressIndicator.default, {
145
- "data-testid": "upload-progress-indicator"
146
- }));
143
+ return _ProgressIndicator || (_ProgressIndicator = _react.default.createElement(_progressIndicator.default, null));
147
144
  }
148
145
 
149
146
  if (hasWarning) return _Icon || (_Icon = _react.default.createElement(_Icon2.default, {
@@ -151,7 +148,12 @@ var UploadFileListCell = function UploadFileListCell(_ref) {
151
148
  }));
152
149
  var iconFileType = fileType;
153
150
 
154
- if (!Object.prototype.hasOwnProperty.call(images, fileType)) {
151
+ if (!iconFileType) {
152
+ var mimeParts = file.type.split('/');
153
+ iconFileType = images[mimeParts[0]] || images[mimeParts[1]];
154
+ }
155
+
156
+ if (!Object.prototype.hasOwnProperty.call(images, iconFileType)) {
155
157
  iconFileType = 'file';
156
158
  }
157
159
 
@@ -165,23 +167,20 @@ var UploadFileListCell = function UploadFileListCell(_ref) {
165
167
  className: "dnb-upload__file-cell__text-container dnb-upload__file-cell__text-container--loading"
166
168
  }, loadingText)) : _react.default.createElement("div", {
167
169
  className: "dnb-upload__file-cell__text-container"
168
- }, _a || (_a = _react.default.createElement("a", {
169
- "data-testid": "upload-file-anchor",
170
+ }, _react.default.createElement("a", {
170
171
  target: "_blank",
171
172
  href: imageUrl,
172
173
  className: "dnb-anchor dnb-upload__file-cell__title",
173
174
  rel: "noopener noreferrer"
174
- }, name)), _react.default.createElement(_P.default, {
175
- "data-testid": "upload-subtitle",
175
+ }, file.name), _P || (_P = _react.default.createElement(_P2.default, {
176
176
  className: "dnb-upload__file-cell__subtitle",
177
177
  size: "x-small",
178
178
  top: "xx-small"
179
- }, fileType.toUpperCase()));
179
+ }, humanFileType)));
180
180
  }
181
181
 
182
182
  function getWarning() {
183
183
  return hasWarning ? _FormStatus || (_FormStatus = _react.default.createElement(_FormStatus2.default, {
184
- "data-testid": "upload-warning",
185
184
  top: "small",
186
185
  text: errorMessage,
187
186
  stretch: true
@@ -47,10 +47,8 @@ var UploadInfo = function UploadInfo() {
47
47
  fileMaxSize = context.fileMaxSize;
48
48
  var prettyfiedAcceptedFileFormats = acceptedFileTypes.join(', ').toUpperCase();
49
49
  return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_Lead.default, {
50
- "data-testid": "upload-title",
51
50
  space: "0"
52
51
  }, title), _react.default.createElement(_P.default, {
53
- "data-testid": "upload-text",
54
52
  top: "xx-small",
55
53
  className: "dnb-upload__text"
56
54
  }, text), _react.default.createElement(_Dl.default, {
@@ -58,13 +56,7 @@ var UploadInfo = function UploadInfo() {
58
56
  bottom: 0,
59
57
  direction: "horizontal",
60
58
  className: "dnb-upload__condition-list"
61
- }, _react.default.createElement(_Dl.default.Item, null, _react.default.createElement(_Dt.default, {
62
- "data-testid": "upload-accepted-formats"
63
- }, fileTypeDescription), _react.default.createElement(_Dd.default, null, prettyfiedAcceptedFileFormats)), _react.default.createElement(_Dl.default.Item, null, _react.default.createElement(_Dt.default, {
64
- "data-testid": "upload-file-size"
65
- }, fileSizeDescription), _react.default.createElement(_Dd.default, null, String(fileSizeContent).replace('%size', (0, _NumberUtils.format)(fileMaxSize).toString()))), filesAmountLimit < _UploadContext.defaultProps.filesAmountLimit && _react.default.createElement(_Dl.default.Item, null, _react.default.createElement(_Dt.default, {
66
- "data-testid": "upload-file-amount-limit"
67
- }, fileAmountDescription), _react.default.createElement(_Dd.default, null, filesAmountLimit))));
59
+ }, prettyfiedAcceptedFileFormats && _react.default.createElement(_Dl.default.Item, null, _react.default.createElement(_Dt.default, null, fileTypeDescription), _react.default.createElement(_Dd.default, null, prettyfiedAcceptedFileFormats)), _react.default.createElement(_Dl.default.Item, null, _react.default.createElement(_Dt.default, null, fileSizeDescription), _react.default.createElement(_Dd.default, null, String(fileSizeContent).replace('%size', (0, _NumberUtils.format)(fileMaxSize).toString()))), filesAmountLimit < _UploadContext.defaultProps.filesAmountLimit && _react.default.createElement(_Dl.default.Item, null, _react.default.createElement(_Dt.default, null, fileAmountDescription), _react.default.createElement(_Dd.default, null, filesAmountLimit))));
68
60
  };
69
61
 
70
62
  var _default = UploadInfo;
@@ -1,5 +1,8 @@
1
1
  import { UploadFile, UploadContextProps, UploadAcceptedFileTypes } from './types';
2
2
  export declare function verifyFiles(files: UploadFile[], context: Pick<UploadContextProps, 'errorUnsupportedFile' | 'errorLargeFile' | 'acceptedFileTypes' | 'fileMaxSize'>): UploadFile[];
3
+ export declare function getFileTypeFromExtension(file: File): string;
4
+ export declare function getAcceptedFileTypes(acceptedFileTypes: UploadAcceptedFileTypes): string;
5
+ export declare function hasPreferredMimeType(acceptedFileTypes: UploadAcceptedFileTypes, file: File): boolean;
3
6
  export declare function extendWithAbbreviation(acceptedFileTypes: UploadAcceptedFileTypes, abbreviations?: {
4
7
  jpg: string;
5
8
  }): string[];
@@ -16,12 +16,13 @@ require("core-js/modules/es.array.from.js");
16
16
 
17
17
  require("core-js/modules/es.array.slice.js");
18
18
 
19
- require("core-js/modules/es.function.name.js");
20
-
21
19
  Object.defineProperty(exports, "__esModule", {
22
20
  value: true
23
21
  });
24
22
  exports.extendWithAbbreviation = extendWithAbbreviation;
23
+ exports.getAcceptedFileTypes = getAcceptedFileTypes;
24
+ exports.getFileTypeFromExtension = getFileTypeFromExtension;
25
+ exports.hasPreferredMimeType = hasPreferredMimeType;
25
26
  exports.verifyFiles = verifyFiles;
26
27
 
27
28
  require("core-js/modules/es.regexp.exec.js");
@@ -38,6 +39,12 @@ require("core-js/modules/es.string.includes.js");
38
39
 
39
40
  require("core-js/modules/es.array.map.js");
40
41
 
42
+ require("core-js/modules/es.function.name.js");
43
+
44
+ require("core-js/modules/es.array.join.js");
45
+
46
+ require("core-js/modules/es.string.split.js");
47
+
41
48
  require("core-js/modules/web.dom-collections.for-each.js");
42
49
 
43
50
  require("core-js/modules/es.object.entries.js");
@@ -81,8 +88,9 @@ function verifyFiles(files, context) {
81
88
  return false;
82
89
  }
83
90
 
91
+ var fileType = hasPreferredMimeType(acceptedFileTypes, file) ? file.type : getFileTypeFromExtension(file) || file.type;
84
92
  var foundType = extendWithAbbreviation(acceptedFileTypes).some(function (type) {
85
- return file.type.includes(type);
93
+ return fileType.includes(type);
86
94
  });
87
95
  return !foundType ? errorUnsupportedFile : null;
88
96
  };
@@ -100,6 +108,22 @@ function verifyFiles(files, context) {
100
108
  return cleanedFiles;
101
109
  }
102
110
 
111
+ function getFileTypeFromExtension(file) {
112
+ return file.name.includes('.') && file.name.replace(/.*\.([^.]+)$/, '$1') || null;
113
+ }
114
+
115
+ function getAcceptedFileTypes(acceptedFileTypes) {
116
+ return extendWithAbbreviation(acceptedFileTypes).map(function (type) {
117
+ return type.includes('/') ? type : ".".concat(type);
118
+ }).join(',');
119
+ }
120
+
121
+ function hasPreferredMimeType(acceptedFileTypes, file) {
122
+ return file.type.split('/')[1] && (!(acceptedFileTypes !== null && acceptedFileTypes !== void 0 && acceptedFileTypes.length) || (acceptedFileTypes === null || acceptedFileTypes === void 0 ? void 0 : acceptedFileTypes.some(function (type) {
123
+ return type.toLowerCase() === file.type.toLowerCase();
124
+ })));
125
+ }
126
+
103
127
  function extendWithAbbreviation(acceptedFileTypes) {
104
128
  var abbreviations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
105
129
  jpg: 'jpeg'
@@ -21,7 +21,7 @@ function init() {
21
21
  _createClass(Eufemia, [{
22
22
  key: "version",
23
23
  get: function get() {
24
- return '9.46.2';
24
+ return '9.47.1';
25
25
  }
26
26
  }]);
27
27
 
@@ -7302,9 +7302,25 @@ span.dnb-space--no-collapse > span {
7302
7302
  white-space: nowrap; }
7303
7303
  .dnb-table > caption {
7304
7304
  caption-side: bottom;
7305
- margin-top: 0.5rem;
7305
+ padding: 0.5rem 0 0.5rem 1rem;
7306
7306
  font-size: 1.125rem;
7307
- font-size: var(--font-size-basis); }
7307
+ font-size: var(--font-size-basis);
7308
+ background-color: #fff;
7309
+ background-color: var(--color-white);
7310
+ text-align: left; }
7311
+ .dnb-table--border > caption:not(.dnb-sr-only) {
7312
+ position: relative; }
7313
+ .dnb-table--border > caption:not(.dnb-sr-only)::after {
7314
+ content: '';
7315
+ position: absolute;
7316
+ top: 0;
7317
+ left: 0;
7318
+ right: 0;
7319
+ bottom: 0;
7320
+ z-index: 1;
7321
+ pointer-events: none;
7322
+ top: -0.0625rem;
7323
+ border-top: var(--border); }
7308
7324
  .dnb-table.dnb-skeleton > * {
7309
7325
  -webkit-text-fill-color: #ebebeb;
7310
7326
  -webkit-text-fill-color: var(--skeleton-color); }
@@ -7600,41 +7616,7 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
7600
7616
  -ms-flex-align: end;
7601
7617
  align-items: flex-end; }
7602
7618
 
7603
- .dnb-table--outline thead .dnb-table__th::after {
7604
- content: '';
7605
- position: absolute;
7606
- top: 0;
7607
- left: 0;
7608
- right: 0;
7609
- bottom: 0;
7610
- z-index: 1;
7611
- pointer-events: none;
7612
- border-top: var(--outline); }
7613
-
7614
- .dnb-table--outline thead .dnb-table__th:first-of-type::after {
7615
- border-left: var(--outline); }
7616
-
7617
- .dnb-table--outline thead .dnb-table__th:last-of-type::after {
7618
- border-right: var(--outline); }
7619
-
7620
- .dnb-table--outline thead .dnb-table__th:first-of-type, .dnb-table--outline thead .dnb-table__th:first-of-type::after {
7621
- border-radius: 0.5rem 0 0 0; }
7622
-
7623
- .dnb-table--outline thead .dnb-table__th:last-of-type, .dnb-table--outline thead .dnb-table__th:last-of-type::after {
7624
- border-radius: 0 0.5rem 0 0; }
7625
-
7626
- .dnb-table--outline tbody .dnb-table__th:first-of-type::after {
7627
- content: '';
7628
- position: absolute;
7629
- top: 0;
7630
- left: 0;
7631
- right: 0;
7632
- bottom: 0;
7633
- z-index: 1;
7634
- pointer-events: none;
7635
- border-left: var(--outline); }
7636
-
7637
- .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th::after {
7619
+ .dnb-table--border tbody .dnb-table__th::after {
7638
7620
  content: '';
7639
7621
  position: absolute;
7640
7622
  top: 0;
@@ -7643,37 +7625,16 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
7643
7625
  bottom: 0;
7644
7626
  z-index: 1;
7645
7627
  pointer-events: none;
7646
- border-bottom: var(--outline); }
7647
-
7648
- .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th:first-of-type::after {
7649
- border-radius: 0 0 0 0.5rem; }
7628
+ border-top: var(--border); }
7650
7629
 
7651
7630
  /*
7652
7631
  * Table component
7653
7632
  *
7654
7633
  */
7655
- .dnb-table--border tbody .dnb-table__td::after {
7656
- content: '';
7657
- position: absolute;
7658
- top: 0;
7659
- left: 0;
7660
- right: 0;
7661
- bottom: 0;
7662
- z-index: 1;
7663
- pointer-events: none;
7664
- border: var(--border);
7665
- border-right: none;
7666
- border-bottom: none; }
7667
-
7668
- .dnb-table:not(.dnb-table--outline) tbody .dnb-table__tr:last-of-type .dnb-table__td::after,
7669
- .dnb-table:not(.dnb-table--outline) tbody .dnb-table__tr .dnb-table__td[rowspan]::after {
7670
- bottom: -0.0625rem;
7671
- border-bottom: var(--border); }
7672
-
7673
- .dnb-table--outline tbody .dnb-table__td {
7634
+ .dnb-table {
7674
7635
  /* stylelint-disable */
7675
7636
  /* stylelint-enable */ }
7676
- .dnb-table--outline tbody .dnb-table__td:first-of-type::after, .dnb-table--outline tbody .dnb-table__td:last-of-type::after {
7637
+ .dnb-table--border tbody .dnb-table__td::after {
7677
7638
  content: '';
7678
7639
  position: absolute;
7679
7640
  top: 0;
@@ -7681,72 +7642,55 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
7681
7642
  right: 0;
7682
7643
  bottom: 0;
7683
7644
  z-index: 1;
7684
- pointer-events: none; }
7685
- .dnb-table--outline tbody .dnb-table__td:first-of-type::after {
7686
- border-left: var(--outline); }
7687
- .dnb-table--outline tbody .dnb-table__td:last-of-type::after {
7688
- border-right: var(--outline); }
7689
- .dnb-table--outline tbody .dnb-table__td, .dnb-table--outline tbody .dnb-table__td::before, .dnb-table--outline tbody .dnb-table__td::after {
7690
- -webkit-transition: border-radius 400ms cubic-bezier(0.42, 0, 0, 1);
7691
- transition: border-radius 400ms cubic-bezier(0.42, 0, 0, 1);
7692
- -webkit-transition: border-radius 400ms var(--easing-default);
7693
- transition: border-radius 400ms var(--easing-default); }
7694
-
7695
- .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td::after {
7696
- content: '';
7697
- position: absolute;
7698
- top: 0;
7699
- left: 0;
7700
- right: 0;
7701
- bottom: 0;
7702
- z-index: 1;
7703
- pointer-events: none;
7704
- border-bottom: var(--outline); }
7705
-
7706
- .dnb-table--outline thead .dnb-table__th:first-of-type, .dnb-table--outline thead .dnb-table__th:first-of-type::after {
7707
- border-radius: 0.5rem 0 0 0; }
7708
-
7709
- .dnb-table--outline thead .dnb-table__th:last-of-type, .dnb-table--outline thead .dnb-table__th:last-of-type::after {
7710
- border-radius: 0 0.5rem 0 0; }
7711
-
7712
- .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:first-of-type, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:first-of-type::before, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:first-of-type::after,
7713
- .dnb-table--outline tbody
7714
- .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:first-of-type,
7715
- .dnb-table--outline tbody
7716
- .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:first-of-type::before,
7717
- .dnb-table--outline tbody
7718
- .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:first-of-type::after {
7719
- border-radius: 0 0 0 0.5rem; }
7720
-
7721
- .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:last-of-type, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:last-of-type::before, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:last-of-type::after,
7722
- .dnb-table--outline tbody
7723
- .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:last-of-type,
7724
- .dnb-table--outline tbody
7725
- .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:last-of-type::before,
7726
- .dnb-table--outline tbody
7727
- .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:last-of-type::after {
7728
- border-radius: 0 0 0.5rem 0; }
7729
-
7730
- .dnb-table--outline tbody .dnb-table__tr.dnb-table__tr__accordion_content:last-of-type .dnb-table__td, .dnb-table--outline tbody .dnb-table__tr.dnb-table__tr__accordion_content:last-of-type .dnb-table__td::before, .dnb-table--outline tbody .dnb-table__tr.dnb-table__tr__accordion_content:last-of-type .dnb-table__td::after {
7731
- border-radius: 0 0 0.5rem 0.5rem; }
7732
-
7733
- .dnb-table--outline tbody .dnb-table__tr .dnb-table__th ~ .dnb-table__td:first-of-type:first-of-type::after {
7734
- border-left: none; }
7735
-
7736
- .dnb-table--border tbody .dnb-table__tr .dnb-table__th ~ .dnb-table__td:first-of-type:first-of-type::after {
7737
- border-left: var(--border); }
7738
-
7739
- .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th ~ .dnb-table__td:first-of-type, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th ~ .dnb-table__td:first-of-type::before, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th ~ .dnb-table__td:first-of-type::after {
7740
- border-radius: 0 0 0 0; }
7741
-
7742
- .dnb-table__td--no-spacing,
7743
- .dnb-table td.dnb-table__td--no-spacing {
7744
- padding: 0; }
7745
-
7746
- .dnb-table__td--spacing-horizontal,
7747
- .dnb-table td.dnb-table__td--spacing-horizontal {
7748
- padding-top: 0;
7749
- padding-bottom: 0; }
7645
+ pointer-events: none;
7646
+ border: var(--border);
7647
+ border-right: none;
7648
+ border-bottom: none; }
7649
+ .dnb-table--outline {
7650
+ position: relative; }
7651
+ .dnb-table--outline, .dnb-table--outline::after {
7652
+ border-radius: 0.5rem; }
7653
+ .dnb-table--outline::after {
7654
+ content: '';
7655
+ position: absolute;
7656
+ top: 0;
7657
+ left: 0;
7658
+ right: 0;
7659
+ bottom: 0;
7660
+ z-index: 1;
7661
+ pointer-events: none;
7662
+ z-index: 3;
7663
+ border: var(--outline); }
7664
+ .dnb-table--outline tbody .dnb-table__tr .dnb-table__th ~ .dnb-table__td:first-of-type:first-of-type::after {
7665
+ border-left: none; }
7666
+ .dnb-table--border tbody .dnb-table__tr .dnb-table__th ~ .dnb-table__td:first-of-type:first-of-type::after {
7667
+ border-left: var(--border); }
7668
+ .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th ~ .dnb-table__td:first-of-type, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th ~ .dnb-table__td:first-of-type::before, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__th ~ .dnb-table__td:first-of-type::after {
7669
+ border-radius: 0 0 0 0; }
7670
+ .dnb-table--outline tbody:first-child .dnb-table__tr:first-of-type .dnb-table__th::after,
7671
+ .dnb-table--outline > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__th::after {
7672
+ border-top: var(--outline); }
7673
+ .dnb-table--outline tbody:first-child .dnb-table__tr:first-of-type .dnb-table__th:first-of-type, .dnb-table--outline tbody:first-child .dnb-table__tr:first-of-type .dnb-table__th:first-of-type::after,
7674
+ .dnb-table--outline > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__th:first-of-type,
7675
+ .dnb-table--outline > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__th:first-of-type::after {
7676
+ border-radius: 0.5rem 0 0 0; }
7677
+ .dnb-table--outline > tbody:first-child .dnb-table__tr:first-of-type .dnb-table__td::after,
7678
+ .dnb-table--outline > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__td::after {
7679
+ border-top: var(--outline); }
7680
+ .dnb-table--outline > tbody:first-child .dnb-table__tr:first-of-type .dnb-table__td:last-of-type, .dnb-table--outline > tbody:first-child .dnb-table__tr:first-of-type .dnb-table__td:last-of-type::after,
7681
+ .dnb-table--outline > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__td:last-of-type,
7682
+ .dnb-table--outline > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__td:last-of-type::after {
7683
+ border-radius: 0 0.5rem 0 0; }
7684
+ .dnb-table:not(.dnb-table--outline).dnb-table--border > tbody:first-child .dnb-table__td:last-of-type::after,
7685
+ .dnb-table:not(.dnb-table--outline).dnb-table--border > :not(thead) + tbody .dnb-table__td:last-of-type::after {
7686
+ border-right: var(--border); }
7687
+ .dnb-table__td--no-spacing,
7688
+ .dnb-table td.dnb-table__td--no-spacing {
7689
+ padding: 0; }
7690
+ .dnb-table__td--spacing-horizontal,
7691
+ .dnb-table td.dnb-table__td--spacing-horizontal {
7692
+ padding-top: 0;
7693
+ padding-bottom: 0; }
7750
7694
 
7751
7695
  /*
7752
7696
  * Table component
@@ -7851,21 +7795,42 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
7851
7795
  -webkit-box-direction: normal;
7852
7796
  -ms-flex-direction: column;
7853
7797
  flex-direction: column; }
7854
- .dnb-table__container__body .dnb-table:not([class*='space__bottom']) {
7855
- margin-bottom: 0; }
7856
- .dnb-table__container__body .dnb-table__size--large .dnb-table__th {
7857
- padding-top: 1.5rem; }
7798
+ .dnb-table__container__body .dnb-table {
7799
+ position: relative;
7800
+ /* stylelint-disable */
7801
+ /* stylelint-enable */ }
7802
+ .dnb-table__container__body .dnb-table:not([class*='space__bottom']) {
7803
+ margin-bottom: 0; }
7804
+ .dnb-table__container__body .dnb-table__size--large .dnb-table__th {
7805
+ padding-top: 1.5rem; }
7806
+ .dnb-table__container__body .dnb-table::after {
7807
+ content: '';
7808
+ position: absolute;
7809
+ top: 0;
7810
+ left: 0;
7811
+ right: 0;
7812
+ bottom: 0;
7813
+ z-index: 1;
7814
+ pointer-events: none;
7815
+ border-bottom: var(--border); }
7816
+ .dnb-table__container__body .dnb-table tbody:first-child .dnb-table__tr:first-of-type .dnb-table__th::after,
7817
+ .dnb-table__container__body .dnb-table tbody:first-child .dnb-table__tr:first-of-type .dnb-table__td::after,
7818
+ .dnb-table__container__body .dnb-table > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__th::after,
7819
+ .dnb-table__container__body .dnb-table > :not(thead) + tbody .dnb-table__tr:first-of-type .dnb-table__td::after {
7820
+ border-top: none; }
7858
7821
  .dnb-table__container__head {
7859
7822
  padding: 2rem 1rem 0; }
7860
7823
  .dnb-table__container__head--empty {
7861
- padding: 0.5rem 0 0; }
7824
+ padding: 0;
7825
+ min-height: 1.5rem; }
7862
7826
  .dnb-spacing .dnb-table__container__head .dnb-h--large:not([class*='space__top']) {
7863
7827
  margin: 0; }
7864
7828
  .dnb-table__container__foot {
7865
7829
  padding: 1rem;
7866
7830
  padding-bottom: 1.25rem; }
7867
7831
  .dnb-table__container__foot--empty {
7868
- padding-bottom: 1.5rem; }
7832
+ padding: 0;
7833
+ min-height: 1rem; }
7869
7834
  .dnb-table__container .dnb-table__scroll-view {
7870
7835
  -webkit-clip-path: inset(0 round 0 0 0.5rem 0.5rem);
7871
7836
  clip-path: inset(0 round 0 0 0.5rem 0.5rem); }
@@ -7981,8 +7946,11 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
7981
7946
  .dnb-table__tr--has-accordion-content, .dnb-table__tr__accordion_content {
7982
7947
  position: relative;
7983
7948
  z-index: 2; }
7984
- .dnb-table__tr--has-accordion-content:hover, .dnb-table__tr--has-accordion-content:active, .dnb-table__tr--has-accordion-content:focus, .dnb-table__tr--has-accordion-content.dnb-table__tr--expanded, .dnb-table__tr__accordion_content {
7949
+ .dnb-table__tr--has-accordion-content.dnb-table__tr--expanded, .dnb-table__tr__accordion_content {
7985
7950
  z-index: 3; }
7951
+ .dnb-table__tr--has-accordion-content:hover, .dnb-table__tr--has-accordion-content:active,
7952
+ html[data-whatinput='keyboard'] .dnb-table__tr--has-accordion-content:focus {
7953
+ z-index: 5; }
7986
7954
  .dnb-table__tr--has-accordion-content.dnb-table__tr--expanded .dnb-table__toggle-button .dnb-icon {
7987
7955
  -webkit-transform: rotate(180deg);
7988
7956
  transform: rotate(180deg); }
@@ -8015,6 +7983,9 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
8015
7983
  html:not([data-whatintent='touch']) .dnb-table__tr--has-accordion-content.dnb-table__tr:not(.dnb-table__tr--disabled):hover:not([disabled]) .dnb-table__td__accordion-icon .dnb-icon {
8016
7984
  color: #14555a;
8017
7985
  color: var(--color-emerald-green); }
7986
+ .dnb-table--outline tbody
7987
+ .dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):not(:nth-last-child(2)) .dnb-table__td::before {
7988
+ bottom: -0.0625rem; }
8018
7989
  .dnb-table__tr--has-accordion-content.dnb-table__tr--expanded:not(.dnb-table__tr--disabled):hover .dnb-table__td {
8019
7990
  background-color: #fff;
8020
7991
  background-color: var(--color-white); }
@@ -8054,11 +8025,12 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
8054
8025
  @supports (-webkit-appearance: none) and (stroke-color: transparent) and (not (-webkit-touch-callout: none)) {
8055
8026
  .dnb-table__tr__accordion_content[hidden] {
8056
8027
  /**
8057
- * By reverting the display from "none" to "block",
8058
- * we trick VoiceOver to not make this row as the end of the table. We still need "hidden" to get the correct number of rows (childCount).
8059
- */
8028
+ * By reverting the display from "none" to "block",
8029
+ * we trick VoiceOver to not make this row as the end of the table. We still need "hidden" to get the correct number of rows (childCount).
8030
+ */
8060
8031
  display: block; } }
8061
8032
  .dnb-table__tr__accordion_content td {
8033
+ padding: 0 !important;
8062
8034
  width: calc(100% - 3.5rem); }
8063
8035
  .dnb-table__size--medium .dnb-table__tr__accordion_content td {
8064
8036
  width: calc(100% - 3rem); }
@@ -8119,6 +8091,21 @@ thead > tr > th.dnb-table--active .dnb-table__sort-button.dnb-button:hover:focus
8119
8091
  * But we do not need baseline in this tr > td, so we reset it.
8120
8092
  */
8121
8093
  vertical-align: top; }
8094
+ .dnb-table--outline tbody
8095
+ .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:first-of-type, .dnb-table--outline tbody
8096
+ .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:first-of-type::before, .dnb-table--outline tbody
8097
+ .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:first-of-type::after {
8098
+ border-radius: 0 0 0 0.5rem; }
8099
+ .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:last-of-type, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:last-of-type::before, .dnb-table--outline tbody .dnb-table__tr:last-of-type .dnb-table__td:last-of-type::after,
8100
+ .dnb-table--outline tbody
8101
+ .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:last-of-type,
8102
+ .dnb-table--outline tbody
8103
+ .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:last-of-type::before,
8104
+ .dnb-table--outline tbody
8105
+ .dnb-table__tr.dnb-table__tr--has-accordion-content:not(.dnb-table__tr--expanded):nth-last-child(2) .dnb-table__td:last-of-type::after {
8106
+ border-radius: 0 0 0.5rem 0; }
8107
+ .dnb-table--outline tbody .dnb-table__tr.dnb-table__tr__accordion_content:last-of-type .dnb-table__td, .dnb-table--outline tbody .dnb-table__tr.dnb-table__tr__accordion_content:last-of-type .dnb-table__td::before, .dnb-table--outline tbody .dnb-table__tr.dnb-table__tr__accordion_content:last-of-type .dnb-table__td::after {
8108
+ border-radius: 0 0 0.5rem 0.5rem; }
8122
8109
  .dnb-table__tr--has-accordion-content:not(.dnb-table__tr--disabled) {
8123
8110
  cursor: pointer; }
8124
8111
  .dnb-table__td-wrapper {