@dnb/eufemia 10.41.0 → 10.42.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 (216) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/elements/img/Img.d.ts +2 -1
  3. package/cjs/elements/img/Img.js +4 -2
  4. package/cjs/elements/img/Img.js.map +1 -1
  5. package/cjs/elements/lib.d.ts +1 -1
  6. package/cjs/elements/lists/style/lists-mixins.scss +25 -12
  7. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +1 -1
  8. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +8 -7
  9. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  10. package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.d.ts +2 -0
  11. package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +27 -0
  12. package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -0
  13. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +4 -4
  14. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  15. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +3 -6
  16. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  17. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +1 -4
  18. package/cjs/extensions/forms/style/dnb-forms.css +3 -6
  19. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  20. package/cjs/shared/Eufemia.d.ts +1 -1
  21. package/cjs/shared/Eufemia.js +2 -2
  22. package/cjs/shared/Eufemia.js.map +1 -1
  23. package/cjs/style/core/scopes.scss +1 -1
  24. package/cjs/style/dnb-ui-basis.css +1 -1
  25. package/cjs/style/dnb-ui-basis.min.css +1 -1
  26. package/cjs/style/dnb-ui-body.css +1 -1
  27. package/cjs/style/dnb-ui-body.min.css +1 -1
  28. package/cjs/style/dnb-ui-components.css +3 -6
  29. package/cjs/style/dnb-ui-components.min.css +1 -1
  30. package/cjs/style/dnb-ui-core.css +1 -1
  31. package/cjs/style/dnb-ui-core.min.css +1 -1
  32. package/cjs/style/dnb-ui-elements.css +26 -12
  33. package/cjs/style/dnb-ui-elements.min.css +1 -1
  34. package/cjs/style/dnb-ui-extensions.css +3 -6
  35. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  36. package/cjs/style/dnb-ui-forms.css +3 -6
  37. package/cjs/style/dnb-ui-forms.min.css +1 -1
  38. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +26 -12
  39. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  40. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +6 -12
  41. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  42. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +26 -12
  43. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  44. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -6
  45. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  46. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -6
  47. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  48. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +26 -12
  49. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  50. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +6 -12
  51. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  52. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +26 -12
  53. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  54. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -6
  55. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  56. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -6
  57. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  58. package/cjs/style/themes/theme-ui/ui-theme-basis.css +26 -12
  59. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  60. package/cjs/style/themes/theme-ui/ui-theme-components.css +6 -12
  61. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  62. package/cjs/style/themes/theme-ui/ui-theme-elements.css +26 -12
  63. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  64. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +3 -6
  65. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  66. package/cjs/style/themes/theme-ui/ui-theme-forms.css +3 -6
  67. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  68. package/cjs/style/themes/theme-ui/ui-theme-tags.css +26 -12
  69. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  70. package/elements/img/Img.d.ts +2 -1
  71. package/elements/img/Img.js +4 -2
  72. package/elements/img/Img.js.map +1 -1
  73. package/elements/lib.d.ts +1 -1
  74. package/elements/lists/style/lists-mixins.scss +25 -12
  75. package/es/elements/img/Img.d.ts +2 -1
  76. package/es/elements/img/Img.js +4 -2
  77. package/es/elements/img/Img.js.map +1 -1
  78. package/es/elements/lib.d.ts +1 -1
  79. package/es/elements/lists/style/lists-mixins.scss +25 -12
  80. package/es/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +1 -1
  81. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +8 -7
  82. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  83. package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.d.ts +2 -0
  84. package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +20 -0
  85. package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -0
  86. package/es/extensions/forms/ValueBlock/ValueBlock.js +4 -4
  87. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  88. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +3 -6
  89. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  90. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +1 -4
  91. package/es/extensions/forms/style/dnb-forms.css +3 -6
  92. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  93. package/es/shared/Eufemia.d.ts +1 -1
  94. package/es/shared/Eufemia.js +2 -2
  95. package/es/shared/Eufemia.js.map +1 -1
  96. package/es/style/core/scopes.scss +1 -1
  97. package/es/style/dnb-ui-basis.css +1 -1
  98. package/es/style/dnb-ui-basis.min.css +1 -1
  99. package/es/style/dnb-ui-body.css +1 -1
  100. package/es/style/dnb-ui-body.min.css +1 -1
  101. package/es/style/dnb-ui-components.css +3 -6
  102. package/es/style/dnb-ui-components.min.css +1 -1
  103. package/es/style/dnb-ui-core.css +1 -1
  104. package/es/style/dnb-ui-core.min.css +1 -1
  105. package/es/style/dnb-ui-elements.css +26 -12
  106. package/es/style/dnb-ui-elements.min.css +1 -1
  107. package/es/style/dnb-ui-extensions.css +3 -6
  108. package/es/style/dnb-ui-extensions.min.css +1 -1
  109. package/es/style/dnb-ui-forms.css +3 -6
  110. package/es/style/dnb-ui-forms.min.css +1 -1
  111. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +26 -12
  112. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  113. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +6 -12
  114. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  115. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +26 -12
  116. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  117. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -6
  118. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  119. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -6
  120. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  121. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +26 -12
  122. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  123. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +6 -12
  124. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  125. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +26 -12
  126. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  127. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -6
  128. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  129. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -6
  130. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  131. package/es/style/themes/theme-ui/ui-theme-basis.css +26 -12
  132. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  133. package/es/style/themes/theme-ui/ui-theme-components.css +6 -12
  134. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  135. package/es/style/themes/theme-ui/ui-theme-elements.css +26 -12
  136. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  137. package/es/style/themes/theme-ui/ui-theme-extensions.css +3 -6
  138. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  139. package/es/style/themes/theme-ui/ui-theme-forms.css +3 -6
  140. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  141. package/es/style/themes/theme-ui/ui-theme-tags.css +26 -12
  142. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  143. package/esm/dnb-ui-basis.min.mjs +1 -1
  144. package/esm/dnb-ui-components.min.mjs +1 -1
  145. package/esm/dnb-ui-elements.min.mjs +1 -1
  146. package/esm/dnb-ui-extensions.min.mjs +3 -3
  147. package/esm/dnb-ui-lib.min.mjs +1 -1
  148. package/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +1 -1
  149. package/extensions/forms/Field/ArraySelection/ArraySelection.js +8 -7
  150. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  151. package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.d.ts +2 -0
  152. package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +20 -0
  153. package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -0
  154. package/extensions/forms/ValueBlock/ValueBlock.js +4 -4
  155. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  156. package/extensions/forms/ValueBlock/style/dnb-value-block.css +3 -6
  157. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  158. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +1 -4
  159. package/extensions/forms/style/dnb-forms.css +3 -6
  160. package/extensions/forms/style/dnb-forms.min.css +1 -1
  161. package/package.json +1 -1
  162. package/shared/Eufemia.d.ts +1 -1
  163. package/shared/Eufemia.js +2 -2
  164. package/shared/Eufemia.js.map +1 -1
  165. package/style/core/scopes.scss +1 -1
  166. package/style/dnb-ui-basis.css +1 -1
  167. package/style/dnb-ui-basis.min.css +1 -1
  168. package/style/dnb-ui-body.css +1 -1
  169. package/style/dnb-ui-body.min.css +1 -1
  170. package/style/dnb-ui-components.css +3 -6
  171. package/style/dnb-ui-components.min.css +1 -1
  172. package/style/dnb-ui-core.css +1 -1
  173. package/style/dnb-ui-core.min.css +1 -1
  174. package/style/dnb-ui-elements.css +26 -12
  175. package/style/dnb-ui-elements.min.css +1 -1
  176. package/style/dnb-ui-extensions.css +3 -6
  177. package/style/dnb-ui-extensions.min.css +1 -1
  178. package/style/dnb-ui-forms.css +3 -6
  179. package/style/dnb-ui-forms.min.css +1 -1
  180. package/style/themes/theme-eiendom/eiendom-theme-basis.css +26 -12
  181. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  182. package/style/themes/theme-eiendom/eiendom-theme-components.css +6 -12
  183. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  184. package/style/themes/theme-eiendom/eiendom-theme-elements.css +26 -12
  185. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  186. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -6
  187. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  188. package/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -6
  189. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  190. package/style/themes/theme-sbanken/sbanken-theme-basis.css +26 -12
  191. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  192. package/style/themes/theme-sbanken/sbanken-theme-components.css +6 -12
  193. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  194. package/style/themes/theme-sbanken/sbanken-theme-elements.css +26 -12
  195. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  196. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -6
  197. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  198. package/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -6
  199. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  200. package/style/themes/theme-ui/ui-theme-basis.css +26 -12
  201. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  202. package/style/themes/theme-ui/ui-theme-components.css +6 -12
  203. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  204. package/style/themes/theme-ui/ui-theme-elements.css +26 -12
  205. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  206. package/style/themes/theme-ui/ui-theme-extensions.css +3 -6
  207. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  208. package/style/themes/theme-ui/ui-theme-forms.css +3 -6
  209. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  210. package/style/themes/theme-ui/ui-theme-tags.css +26 -12
  211. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  212. package/umd/dnb-ui-basis.min.js +1 -1
  213. package/umd/dnb-ui-components.min.js +1 -1
  214. package/umd/dnb-ui-elements.min.js +1 -1
  215. package/umd/dnb-ui-extensions.min.js +2 -2
  216. package/umd/dnb-ui-lib.min.js +1 -1
@@ -109,6 +109,9 @@
109
109
  }
110
110
 
111
111
  @mixin dlStyle() {
112
+ --column-gap: 1rem;
113
+ --row-gap: 0.5rem;
114
+
112
115
  &:not([class*='dnb-space__top']) {
113
116
  margin-top: 0;
114
117
  }
@@ -121,13 +124,14 @@
121
124
  line-height: var(--line-height-basis);
122
125
 
123
126
  & dt {
124
- margin-top: 1rem;
125
-
126
127
  padding: 0;
127
128
  font-weight: var(--font-weight-medium);
128
129
  }
129
130
  & dd ~ dt {
130
- margin-top: 1.5rem;
131
+ margin-top: var(--row-gap);
132
+ }
133
+ & dt:not(:first-of-type) {
134
+ margin-top: calc(var(--row-gap) + 1rem);
131
135
  }
132
136
  & dd {
133
137
  padding: 0;
@@ -138,7 +142,7 @@
138
142
  }
139
143
  & > dd > dl,
140
144
  &:not([class*='dnb-space']) > dd > dl {
141
- margin-top: 1.5rem;
145
+ margin-top: calc(var(--row-gap) + 0.5rem);
142
146
  margin-left: 2rem;
143
147
  }
144
148
 
@@ -154,18 +158,20 @@
154
158
  max-width: 60ch; // to enhance readability
155
159
 
156
160
  & dt {
157
- margin-right: 1rem;
161
+ margin-top: 0;
162
+ margin-right: calc(var(--column-gap) - 0.5rem);
158
163
  max-width: var(--dt-max-width);
159
164
  }
160
165
 
161
166
  & dd {
162
167
  width: var(--dd-max-width);
168
+ align-self: end;
163
169
  }
164
170
 
165
- & dt,
171
+ & dt:not(:first-of-type),
166
172
  & dd,
167
- & dd ~ dt {
168
- margin-top: 0.5rem;
173
+ & dd ~ dt:not(:first-of-type) {
174
+ margin-top: var(--row-gap);
169
175
  margin-bottom: 0;
170
176
  &:first-of-type {
171
177
  margin-top: 0;
@@ -174,25 +180,32 @@
174
180
  }
175
181
 
176
182
  dd#{&}__item {
177
- display: none;
183
+ visibility: hidden;
184
+ user-select: none;
178
185
  flex-basis: 100%; // ensures we always break to a new line, no matter what the available space is
179
186
  height: 0;
180
187
  margin: 0;
181
188
  }
189
+ &:not(#{&}__layout--horizontal) dd#{&}__item {
190
+ display: none;
191
+ }
182
192
 
183
193
  &__layout--grid {
184
194
  --dt-max-width: 15ch;
185
- --dd-max-width: 30ch;
195
+ --dd-max-width: 40ch;
186
196
 
187
197
  display: grid;
188
198
  grid-template-columns: max-content 1fr;
189
- column-gap: 1rem;
190
- row-gap: 1rem;
199
+ column-gap: var(--column-gap);
200
+ row-gap: var(--row-gap);
191
201
 
192
202
  /* stylelint-disable */
193
203
  & dt {
194
204
  max-width: var(--dt-max-width);
195
205
  }
206
+ & dt:not(:first-of-type) {
207
+ margin-top: 0;
208
+ }
196
209
  & dd {
197
210
  max-width: var(--dd-max-width);
198
211
  align-self: end;
@@ -13,9 +13,10 @@ export type ImgProps = SpacingProps & React.HTMLProps<HTMLImageElement> & {
13
13
  imgClass?: string;
14
14
  element?: DynamicElement & 'figure';
15
15
  caption?: string;
16
+ loading?: 'eager' | 'lazy';
16
17
  };
17
18
  declare const Img: {
18
- ({ caption, alt, element, skeleton, imgClass, className, ...p }: ImgProps): import("react/jsx-runtime").JSX.Element;
19
+ ({ caption, alt, element, skeleton, imgClass, className, loading, ...p }: ImgProps): import("react/jsx-runtime").JSX.Element;
19
20
  _supportsSpacingProps: boolean;
20
21
  };
21
22
  export default Img;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- const _excluded = ["caption", "alt", "element", "skeleton", "imgClass", "className"];
3
+ const _excluded = ["caption", "alt", "element", "skeleton", "imgClass", "className", "loading"];
4
4
  import React from 'react';
5
5
  import E from '../Element';
6
6
  import { createSpacingClasses, removeSpaceProps } from '../../components/space/SpacingHelper';
@@ -12,7 +12,8 @@ const Img = _ref => {
12
12
  element = 'figure',
13
13
  skeleton,
14
14
  imgClass,
15
- className
15
+ className,
16
+ loading = 'eager'
16
17
  } = _ref,
17
18
  p = _objectWithoutProperties(_ref, _excluded);
18
19
  const [hasError, setError] = React.useState(false);
@@ -24,6 +25,7 @@ const Img = _ref => {
24
25
  skeletonMethod: "shape"
25
26
  }, React.createElement(E, _extends({
26
27
  as: "img",
28
+ loading: loading,
27
29
  alt: alt,
28
30
  internalClass: 'dnb-img' + (hasError ? " dnb-img--error" : ""),
29
31
  className: imgClass,
@@ -1 +1 @@
1
- {"version":3,"file":"Img.js","names":["React","E","createSpacingClasses","removeSpaceProps","classnames","Img","_ref","caption","alt","element","skeleton","imgClass","className","p","_objectWithoutProperties","_excluded","hasError","setError","useState","createElement","as","internalClass","is","skeletonMethod","_extends","onError","_supportsSpacingProps"],"sources":["../../../../src/elements/img/Img.tsx"],"sourcesContent":["/**\n * HTML Element\n *\n */\n\nimport React from 'react'\nimport E from '../Element'\nimport {\n createSpacingClasses,\n removeSpaceProps,\n} from '../../components/space/SpacingHelper'\nimport { SpacingProps } from '../../components/space/types'\nimport { SkeletonShow } from '../../components/skeleton/Skeleton'\nimport classnames from 'classnames'\nimport type { DynamicElement } from '../../shared/types'\n\nexport type ImgProps = SpacingProps &\n React.HTMLProps<HTMLImageElement> & {\n src: string\n alt: string\n skeleton?: SkeletonShow\n imgClass?: string\n element?: DynamicElement & 'figure'\n caption?: string\n }\n\nconst Img = ({\n caption,\n alt,\n element = 'figure',\n skeleton,\n imgClass,\n className,\n ...p\n}: ImgProps) => {\n const [hasError, setError] = React.useState(false)\n\n return (\n <E\n as={element}\n internalClass=\"dnb-img\"\n className={classnames(className, createSpacingClasses(p, p.is))}\n skeleton={skeleton}\n skeletonMethod=\"shape\"\n >\n <E\n as=\"img\"\n alt={alt}\n internalClass={classnames('dnb-img', hasError && 'dnb-img--error')}\n className={imgClass}\n skeleton={skeleton}\n onError={() => setError(true)}\n {...removeSpaceProps(p as Omit<ImgProps, 'ref'>)}\n />\n {caption && <figcaption>{caption}</figcaption>}\n </E>\n )\n}\n\nImg._supportsSpacingProps = true\n\nexport default Img\n"],"mappings":";;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,CAAC,MAAM,YAAY;AAC1B,SACEC,oBAAoB,EACpBC,gBAAgB,QACX,sCAAsC;AAG7C,OAAOC,UAAU,MAAM,YAAY;AAanC,MAAMC,GAAG,GAAGC,IAAA,IAQI;EAAA,IARH;MACXC,OAAO;MACPC,GAAG;MACHC,OAAO,GAAG,QAAQ;MAClBC,QAAQ;MACRC,QAAQ;MACRC;IAEQ,CAAC,GAAAN,IAAA;IADNO,CAAC,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EAEJ,MAAM,CAACC,QAAQ,EAAEC,QAAQ,CAAC,GAAGjB,KAAK,CAACkB,QAAQ,CAAC,KAAK,CAAC;EAElD,OACElB,KAAA,CAAAmB,aAAA,CAAClB,CAAC;IACAmB,EAAE,EAAEX,OAAQ;IACZY,aAAa,EAAC,SAAS;IACvBT,SAAS,EAAER,UAAU,CAACQ,SAAS,EAAEV,oBAAoB,CAACW,CAAC,EAAEA,CAAC,CAACS,EAAE,CAAC,CAAE;IAChEZ,QAAQ,EAAEA,QAAS;IACnBa,cAAc,EAAC;EAAO,GAEtBvB,KAAA,CAAAmB,aAAA,CAAClB,CAAC,EAAAuB,QAAA;IACAJ,EAAE,EAAC,KAAK;IACRZ,GAAG,EAAEA,GAAI;IACTa,aAAa,EAAa,SAAS,IAAEL,QAAQ,0BAAsB;IACnEJ,SAAS,EAAED,QAAS;IACpBD,QAAQ,EAAEA,QAAS;IACnBe,OAAO,EAAEA,CAAA,KAAMR,QAAQ,CAAC,IAAI;EAAE,GAC1Bd,gBAAgB,CAACU,CAA0B,CAAC,CACjD,CAAC,EACDN,OAAO,IAAIP,KAAA,CAAAmB,aAAA,qBAAaZ,OAAoB,CAC5C,CAAC;AAER,CAAC;AAEDF,GAAG,CAACqB,qBAAqB,GAAG,IAAI;AAEhC,eAAerB,GAAG"}
1
+ {"version":3,"file":"Img.js","names":["React","E","createSpacingClasses","removeSpaceProps","classnames","Img","_ref","caption","alt","element","skeleton","imgClass","className","loading","p","_objectWithoutProperties","_excluded","hasError","setError","useState","createElement","as","internalClass","is","skeletonMethod","_extends","onError","_supportsSpacingProps"],"sources":["../../../../src/elements/img/Img.tsx"],"sourcesContent":["/**\n * HTML Element\n *\n */\n\nimport React from 'react'\nimport E from '../Element'\nimport {\n createSpacingClasses,\n removeSpaceProps,\n} from '../../components/space/SpacingHelper'\nimport { SpacingProps } from '../../components/space/types'\nimport { SkeletonShow } from '../../components/skeleton/Skeleton'\nimport classnames from 'classnames'\nimport type { DynamicElement } from '../../shared/types'\n\nexport type ImgProps = SpacingProps &\n React.HTMLProps<HTMLImageElement> & {\n src: string\n alt: string\n skeleton?: SkeletonShow\n imgClass?: string\n element?: DynamicElement & 'figure'\n caption?: string\n loading?: 'eager' | 'lazy'\n }\n\nconst Img = ({\n caption,\n alt,\n element = 'figure',\n skeleton,\n imgClass,\n className,\n loading = 'eager',\n ...p\n}: ImgProps) => {\n const [hasError, setError] = React.useState(false)\n\n return (\n <E\n as={element}\n internalClass=\"dnb-img\"\n className={classnames(className, createSpacingClasses(p, p.is))}\n skeleton={skeleton}\n skeletonMethod=\"shape\"\n >\n <E\n as=\"img\"\n loading={loading}\n alt={alt}\n internalClass={classnames('dnb-img', hasError && 'dnb-img--error')}\n className={imgClass}\n skeleton={skeleton}\n onError={() => setError(true)}\n {...removeSpaceProps(p as Omit<ImgProps, 'ref'>)}\n />\n {caption && <figcaption>{caption}</figcaption>}\n </E>\n )\n}\n\nImg._supportsSpacingProps = true\n\nexport default Img\n"],"mappings":";;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,CAAC,MAAM,YAAY;AAC1B,SACEC,oBAAoB,EACpBC,gBAAgB,QACX,sCAAsC;AAG7C,OAAOC,UAAU,MAAM,YAAY;AAcnC,MAAMC,GAAG,GAAGC,IAAA,IASI;EAAA,IATH;MACXC,OAAO;MACPC,GAAG;MACHC,OAAO,GAAG,QAAQ;MAClBC,QAAQ;MACRC,QAAQ;MACRC,SAAS;MACTC,OAAO,GAAG;IAEF,CAAC,GAAAP,IAAA;IADNQ,CAAC,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAEJ,MAAM,CAACC,QAAQ,EAAEC,QAAQ,CAAC,GAAGlB,KAAK,CAACmB,QAAQ,CAAC,KAAK,CAAC;EAElD,OACEnB,KAAA,CAAAoB,aAAA,CAACnB,CAAC;IACAoB,EAAE,EAAEZ,OAAQ;IACZa,aAAa,EAAC,SAAS;IACvBV,SAAS,EAAER,UAAU,CAACQ,SAAS,EAAEV,oBAAoB,CAACY,CAAC,EAAEA,CAAC,CAACS,EAAE,CAAC,CAAE;IAChEb,QAAQ,EAAEA,QAAS;IACnBc,cAAc,EAAC;EAAO,GAEtBxB,KAAA,CAAAoB,aAAA,CAACnB,CAAC,EAAAwB,QAAA;IACAJ,EAAE,EAAC,KAAK;IACRR,OAAO,EAAEA,OAAQ;IACjBL,GAAG,EAAEA,GAAI;IACTc,aAAa,EAAa,SAAS,IAAEL,QAAQ,0BAAsB;IACnEL,SAAS,EAAED,QAAS;IACpBD,QAAQ,EAAEA,QAAS;IACnBgB,OAAO,EAAEA,CAAA,KAAMR,QAAQ,CAAC,IAAI;EAAE,GAC1Bf,gBAAgB,CAACW,CAA0B,CAAC,CACjD,CAAC,EACDP,OAAO,IAAIP,KAAA,CAAAoB,aAAA,qBAAab,OAAoB,CAC5C,CAAC;AAER,CAAC;AAEDF,GAAG,CAACsB,qBAAqB,GAAG,IAAI;AAEhC,eAAetB,GAAG"}
@@ -131,7 +131,7 @@ export declare const getElements: () => {
131
131
  _supportsSpacingProps: boolean;
132
132
  };
133
133
  Img: {
134
- ({ caption, alt, element, skeleton, imgClass, className, ...p }: import("./Img").ImgProps): import("react/jsx-runtime").JSX.Element;
134
+ ({ caption, alt, element, skeleton, imgClass, className, loading, ...p }: import("./Img").ImgProps): import("react/jsx-runtime").JSX.Element;
135
135
  _supportsSpacingProps: boolean;
136
136
  };
137
137
  Ingress: {
@@ -109,6 +109,9 @@
109
109
  }
110
110
 
111
111
  @mixin dlStyle() {
112
+ --column-gap: 1rem;
113
+ --row-gap: 0.5rem;
114
+
112
115
  &:not([class*='dnb-space__top']) {
113
116
  margin-top: 0;
114
117
  }
@@ -121,13 +124,14 @@
121
124
  line-height: var(--line-height-basis);
122
125
 
123
126
  & dt {
124
- margin-top: 1rem;
125
-
126
127
  padding: 0;
127
128
  font-weight: var(--font-weight-medium);
128
129
  }
129
130
  & dd ~ dt {
130
- margin-top: 1.5rem;
131
+ margin-top: var(--row-gap);
132
+ }
133
+ & dt:not(:first-of-type) {
134
+ margin-top: calc(var(--row-gap) + 1rem);
131
135
  }
132
136
  & dd {
133
137
  padding: 0;
@@ -138,7 +142,7 @@
138
142
  }
139
143
  & > dd > dl,
140
144
  &:not([class*='dnb-space']) > dd > dl {
141
- margin-top: 1.5rem;
145
+ margin-top: calc(var(--row-gap) + 0.5rem);
142
146
  margin-left: 2rem;
143
147
  }
144
148
 
@@ -154,18 +158,20 @@
154
158
  max-width: 60ch; // to enhance readability
155
159
 
156
160
  & dt {
157
- margin-right: 1rem;
161
+ margin-top: 0;
162
+ margin-right: calc(var(--column-gap) - 0.5rem);
158
163
  max-width: var(--dt-max-width);
159
164
  }
160
165
 
161
166
  & dd {
162
167
  width: var(--dd-max-width);
168
+ align-self: end;
163
169
  }
164
170
 
165
- & dt,
171
+ & dt:not(:first-of-type),
166
172
  & dd,
167
- & dd ~ dt {
168
- margin-top: 0.5rem;
173
+ & dd ~ dt:not(:first-of-type) {
174
+ margin-top: var(--row-gap);
169
175
  margin-bottom: 0;
170
176
  &:first-of-type {
171
177
  margin-top: 0;
@@ -174,25 +180,32 @@
174
180
  }
175
181
 
176
182
  dd#{&}__item {
177
- display: none;
183
+ visibility: hidden;
184
+ user-select: none;
178
185
  flex-basis: 100%; // ensures we always break to a new line, no matter what the available space is
179
186
  height: 0;
180
187
  margin: 0;
181
188
  }
189
+ &:not(#{&}__layout--horizontal) dd#{&}__item {
190
+ display: none;
191
+ }
182
192
 
183
193
  &__layout--grid {
184
194
  --dt-max-width: 15ch;
185
- --dd-max-width: 30ch;
195
+ --dd-max-width: 40ch;
186
196
 
187
197
  display: grid;
188
198
  grid-template-columns: max-content 1fr;
189
- column-gap: 1rem;
190
- row-gap: 1rem;
199
+ column-gap: var(--column-gap);
200
+ row-gap: var(--row-gap);
191
201
 
192
202
  /* stylelint-disable */
193
203
  & dt {
194
204
  max-width: var(--dt-max-width);
195
205
  }
206
+ & dt:not(:first-of-type) {
207
+ margin-top: 0;
208
+ }
196
209
  & dd {
197
210
  max-width: var(--dd-max-width);
198
211
  align-self: end;
@@ -3,7 +3,7 @@ import { ReturnAdditional } from '../../hooks/useFieldProps';
3
3
  import { FieldHelpProps, FieldProps } from '../../types';
4
4
  export type Props = FieldHelpProps & FieldProps<Array<string | number> | undefined> & {
5
5
  children?: React.ReactNode;
6
- variant?: 'checkbox' | 'button';
6
+ variant?: 'checkbox' | 'button' | 'checkbox-button';
7
7
  optionsLayout?: 'horizontal' | 'vertical';
8
8
  };
9
9
  declare function ArraySelection(props: Props): import("react/jsx-runtime").JSX.Element;
@@ -36,7 +36,7 @@ function ArraySelection(props) {
36
36
  } = useFieldProps(props);
37
37
  const fieldBlockProps = _objectSpread({
38
38
  forId: id,
39
- className: classnames(`dnb-forms-field-array-selection dnb-forms-field-array-selection--variant-${variant} dnb-forms-field-array-selection--layout-${layout} dnb-forms-field-array-selection--options-layout-${optionsLayout}`, className),
39
+ className: classnames(`dnb-forms-field-array-selection dnb-forms-field-array-selection--variant-${variant === 'checkbox' ? 'checkbox' : 'button'} dnb-forms-field-array-selection--layout-${layout} dnb-forms-field-array-selection--options-layout-${optionsLayout}`, className),
40
40
  contentClassName: 'dnb-forms-field-array-selection__options',
41
41
  help,
42
42
  info,
@@ -64,15 +64,16 @@ function ArraySelection(props) {
64
64
  hasError
65
65
  });
66
66
  switch (variant) {
67
- case 'button':
67
+ case 'checkbox':
68
+ return React.createElement(FieldBlock, fieldBlockProps, options);
69
+ default:
68
70
  return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ToggleButtonGroupContext.Provider, {
69
71
  value: {
70
72
  status: hasError ? 'error' : undefined,
71
- disabled
73
+ disabled,
74
+ variant: variant === 'checkbox-button' ? 'checkbox' : 'default'
72
75
  }
73
76
  }, options));
74
- case 'checkbox':
75
- return React.createElement(FieldBlock, fieldBlockProps, options);
76
77
  }
77
78
  }
78
79
  export function getCheckboxOrToggleOptions({
@@ -113,9 +114,9 @@ export function getCheckboxOrToggleOptions({
113
114
  return React.createElement(Component, _extends({
114
115
  id: optionsCount === 1 ? id : undefined,
115
116
  key: `option-${i}-${value}`,
116
- className: classnames(`dnb-forms-field-array-selection__${variant}`, className),
117
+ className: classnames(`dnb-forms-field-array-selection__${variant === 'checkbox' ? 'checkbox' : 'button'}`, className),
117
118
  label: variant === 'checkbox' ? label : undefined,
118
- text: variant === 'button' ? label : undefined,
119
+ text: variant !== 'checkbox' ? label : undefined,
119
120
  value: value,
120
121
  disabled: disabled,
121
122
  checked: value === null || value === void 0 ? void 0 : value.includes(selected),
@@ -1 +1 @@
1
- {"version":3,"file":"ArraySelection.js","names":["React","Checkbox","HelpButton","ToggleButton","classnames","OptionField","FieldBlock","useFieldProps","pickSpacingProps","getStatus","ToggleButtonGroupContext","ArraySelection","props","id","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","children","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","getCheckboxOrToggleOptions","Provider","status","optionsCount","Children","count","Component","createOption","i","selected","rest","_objectWithoutProperties","_excluded","suffix","handleSelect","newValue","includes","filter","length","_extends","key","text","checked","on_change","mapOptions","toArray","map","child","isValidElement","type","nestedChildren","cloneElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport OptionField from '../Option'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { FieldHelpProps, FieldProps, FormError } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<string | number> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button'\n optionsLayout?: 'horizontal' | 'vertical'\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${variant}`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = getCheckboxOrToggleOptions({\n id,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n handleChange,\n hasError,\n })\n\n switch (variant) {\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n }\n}\n\nexport function getCheckboxOrToggleOptions({\n id,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n}: {\n id: Props['id']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n}) {\n const optionsCount = React.Children.count(children)\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n const createOption = (props: OptionProps, i: number) => {\n const {\n value: selected,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n const handleSelect = () => {\n const newValue = value?.includes(selected)\n ? value.filter((value) => value !== selected)\n : [...(value ?? []), selected]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${variant}`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant === 'button' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(selected)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n const mapOptions = (children: React.ReactNode) => {\n return React.Children.toArray(children).map(\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children)\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n }\n\n return mapOptions(children)\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
1
+ {"version":3,"file":"ArraySelection.js","names":["React","Checkbox","HelpButton","ToggleButton","classnames","OptionField","FieldBlock","useFieldProps","pickSpacingProps","getStatus","ToggleButtonGroupContext","ArraySelection","props","id","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","children","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","getCheckboxOrToggleOptions","Provider","status","optionsCount","Children","count","Component","createOption","i","selected","rest","_objectWithoutProperties","_excluded","suffix","handleSelect","newValue","includes","filter","length","_extends","key","text","checked","on_change","mapOptions","toArray","map","child","isValidElement","type","nestedChildren","cloneElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport OptionField from '../Option'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { FieldHelpProps, FieldProps, FormError } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<string | number> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = getCheckboxOrToggleOptions({\n id,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n handleChange,\n hasError,\n })\n\n switch (variant) {\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n default:\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n variant:\n variant === 'checkbox-button' ? 'checkbox' : 'default',\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function getCheckboxOrToggleOptions({\n id,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n}: {\n id: Props['id']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n}) {\n const optionsCount = React.Children.count(children)\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n const createOption = (props: OptionProps, i: number) => {\n const {\n value: selected,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n const handleSelect = () => {\n const newValue = value?.includes(selected)\n ? value.filter((value) => value !== selected)\n : [...(value ?? []), selected]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(selected)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n }\n\n const mapOptions = (children: React.ReactNode) => {\n return React.Children.toArray(children).map(\n (child: React.ReactElement<OptionProps>, i) => {\n if (React.isValidElement(child)) {\n if (child.type === OptionField) {\n return createOption(child.props, i)\n }\n\n if (child.props.children) {\n const nestedChildren = mapOptions(child.props.children)\n return React.cloneElement(child, child.props, nestedChildren)\n }\n }\n\n return child\n }\n )\n }\n\n return mapOptions(children)\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const arraySelectionProperties: PropertiesTableProps;
@@ -0,0 +1,20 @@
1
+ export const arraySelectionProperties = {
2
+ variant: {
3
+ doc: 'Choice of UI feature.',
4
+ type: [`'checkbox'`, `'button'`, `'checkbox-button'`],
5
+ defaultValue: `'checkbox'`,
6
+ status: 'optional'
7
+ },
8
+ optionsLayout: {
9
+ doc: 'Layout for the list of options.',
10
+ type: [`'horizontal'`, `'vertical'`],
11
+ defaultValue: `'vertical'`,
12
+ status: 'optional'
13
+ },
14
+ children: {
15
+ doc: 'For providing `<Field.Option>` components.',
16
+ type: 'React.Node',
17
+ status: 'optional'
18
+ }
19
+ };
20
+ //# sourceMappingURL=ArraySelectionDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArraySelectionDocs.js","names":["arraySelectionProperties","variant","doc","type","defaultValue","status","optionsLayout","children"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelectionDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const arraySelectionProperties: PropertiesTableProps = {\n variant: {\n doc: 'Choice of UI feature.',\n type: [`'checkbox'`, `'button'`, `'checkbox-button'`],\n defaultValue: `'checkbox'`,\n status: 'optional',\n },\n optionsLayout: {\n doc: 'Layout for the list of options.',\n type: [`'horizontal'`, `'vertical'`],\n defaultValue: `'vertical'`,\n status: 'optional',\n },\n children: {\n doc: 'For providing `<Field.Option>` components.',\n type: 'React.Node',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,wBAA8C,GAAG;EAC5DC,OAAO,EAAE;IACPC,GAAG,EAAE,uBAAuB;IAC5BC,IAAI,EAAE,CAAE,YAAW,EAAG,UAAS,EAAG,mBAAkB,CAAC;IACrDC,YAAY,EAAG,YAAW;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbJ,GAAG,EAAE,iCAAiC;IACtCC,IAAI,EAAE,CAAE,cAAa,EAAG,YAAW,CAAC;IACpCC,YAAY,EAAG,YAAW;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDE,QAAQ,EAAE;IACRL,GAAG,EAAE,4CAA4C;IACjDC,IAAI,EAAE,YAAY;IAClBE,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -51,7 +51,7 @@ function ValueBlock(props) {
51
51
  let content = null;
52
52
  const compositionClass = composition && `dnb-forms-value-block__composition--${composition === true ? 'horizontal' : composition}`;
53
53
  if (summaryListContext) {
54
- const Element = summaryListContext.isNested ? Dl : summaryListContext.layout === 'horizontal' ? Dl.Item : Fragment;
54
+ const Item = summaryListContext.isNested ? Dl : summaryListContext.layout === 'horizontal' ? Dl.Item : Fragment;
55
55
  if (!label && valueBlockContext !== null && valueBlockContext !== void 0 && valueBlockContext.composition) {
56
56
  var _span;
57
57
  content = (_span = React.createElement("span", {
@@ -60,13 +60,13 @@ function ValueBlock(props) {
60
60
  className: "dnb-forms-value-block__placeholder"
61
61
  }, placeholder);
62
62
  } else {
63
- content = React.createElement(Element, null, React.createElement(SummaryListContext.Provider, {
63
+ content = React.createElement(SummaryListContext.Provider, {
64
64
  value: _objectSpread(_objectSpread({}, summaryListContext), {}, {
65
65
  isNested: true
66
66
  })
67
- }, label && React.createElement(Dt, {
67
+ }, React.createElement(Item, null, React.createElement(Dt, {
68
68
  className: "dnb-forms-value-block__label"
69
- }, React.createElement("strong", null, label)), React.createElement(Dd, {
69
+ }, label && React.createElement("strong", null, label)), React.createElement(Dd, {
70
70
  className: classnames(compositionClass, summaryListContext.layout !== 'grid' && !summaryListContext.isNested && maxWidth && `dnb-forms-value-block--max-width-${maxWidth}`)
71
71
  }, children ? React.createElement("span", {
72
72
  className: 'dnb-forms-value-block__content' + (gap ? ` dnb-forms-value-block__content--gap-${gap}` : "")
@@ -1 +1 @@
1
- {"version":3,"file":"ValueBlock.js","names":["React","Fragment","useContext","useEffect","useMemo","useRef","classnames","warn","Dd","Dl","Dt","Span","FormLabel","SummaryListContext","ValueBlockContext","DataContext","pickSpacingProps","IterateElementContext","convertJsxToString","ValueBlock","props","summaryListContext","valueBlockContext","dataContext","iterateElementContext","index","iterateIndex","className","label","labelProp","inline","maxWidth","composition","placeholder","showEmpty","children","gap","undefined","replace","String","ref","useNotInSummaryList","prerenderFieldProps","content","compositionClass","Element","isNested","layout","Item","_span","createElement","Provider","value","_objectSpread","_extends","element","labelDirection","current","sibling","previousElementSibling","classList","contains","closest","apply","filter","Boolean","error","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/ValueBlock/ValueBlock.tsx"],"sourcesContent":["import React, {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport classnames from 'classnames'\nimport { warn } from '../../../shared/helpers'\nimport { Dd, Dl, Dt, Span } from '../../../elements'\nimport { FormLabel } from '../../../components'\nimport SummaryListContext from '../Value/SummaryList/SummaryListContext'\nimport ValueBlockContext from './ValueBlockContext'\nimport DataContext from '../DataContext/Context'\nimport { ValueProps } from '../types'\nimport { pickSpacingProps } from '../../../components/flex/utils'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport { convertJsxToString } from '../../../shared/component-helper'\n\n/**\n * Props are documented in ValueDocs.ts\n */\nexport type Props = Omit<ValueProps<unknown>, 'value'> & {\n children?: React.ReactNode\n\n /**\n * Used internally by the Composition component\n */\n composition?: boolean\n\n /**\n * Used internally by the Composition component\n */\n gap?: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | false\n}\n\nfunction ValueBlock(props: Props) {\n const summaryListContext = useContext(SummaryListContext)\n const valueBlockContext = useContext(ValueBlockContext)\n const dataContext = useContext(DataContext)\n const iterateElementContext = useContext(IterateElementContext)\n const { index: iterateIndex } = iterateElementContext ?? {}\n\n const {\n className,\n label: labelProp,\n inline,\n maxWidth = props.composition ? props.maxWidth : 'large',\n placeholder,\n showEmpty,\n children,\n composition,\n gap = 'xx-small',\n } = props\n\n const label = useMemo(() => {\n if (inline) {\n return null\n }\n if (iterateIndex !== undefined) {\n return convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n return labelProp\n }, [inline, iterateIndex, labelProp])\n\n const ref = useRef<HTMLElement>(null)\n useNotInSummaryList(valueBlockContext?.composition ? null : ref, label)\n\n if (\n ((children === undefined || children === null || children === false) &&\n !showEmpty &&\n !placeholder) ||\n dataContext?.prerenderFieldProps\n ) {\n return null\n }\n\n let content = null\n\n const compositionClass =\n composition &&\n classnames(\n `dnb-forms-value-block__composition--${\n composition === true ? 'horizontal' : composition\n }`\n )\n\n if (summaryListContext) {\n const Element = summaryListContext.isNested\n ? Dl\n : summaryListContext.layout === 'horizontal'\n ? Dl.Item\n : Fragment\n\n if (!label && valueBlockContext?.composition) {\n content = (\n <span\n className={classnames(\n 'dnb-forms-value-block__content',\n gap && `dnb-forms-value-block__content--gap-${gap}`\n )}\n >\n {children}\n </span>\n ) ?? (\n <span className=\"dnb-forms-value-block__placeholder\">\n {placeholder}\n </span>\n )\n } else {\n content = (\n <Element>\n <SummaryListContext.Provider\n value={{ ...summaryListContext, isNested: true }}\n >\n {label && (\n <Dt className=\"dnb-forms-value-block__label\">\n <strong>{label}</strong>\n </Dt>\n )}\n <Dd\n className={classnames(\n summaryListContext.layout !== 'grid' &&\n !summaryListContext.isNested &&\n maxWidth &&\n `dnb-forms-value-block--max-width-${maxWidth}`,\n compositionClass\n )}\n >\n {children ? (\n <span\n className={classnames(\n 'dnb-forms-value-block__content',\n gap && `dnb-forms-value-block__content--gap-${gap}`\n )}\n >\n {children}\n </span>\n ) : (\n <span className=\"dnb-forms-value-block__placeholder\">\n {placeholder}\n </span>\n )}\n </Dd>\n </SummaryListContext.Provider>\n </Element>\n )\n }\n } else {\n content = (\n <Span\n ref={ref}\n className={classnames(\n 'dnb-forms-value-block',\n inline && 'dnb-forms-value-block--inline',\n maxWidth && `dnb-forms-value-block--max-width-${maxWidth}`,\n compositionClass,\n className\n )}\n {...pickSpacingProps(props)}\n >\n {label && (\n <FormLabel\n element=\"strong\" // enhance a11y: https://www.w3.org/WAI/WCAG21/Techniques/html/H49\n className=\"dnb-forms-value-block__label\"\n labelDirection={inline ? 'horizontal' : 'vertical'}\n >\n {label}\n </FormLabel>\n )}\n {children ? (\n <span\n className={classnames(\n 'dnb-forms-value-block__content',\n gap && `dnb-forms-value-block__content--gap-${gap}`\n )}\n >\n {children}\n </span>\n ) : (\n <span className=\"dnb-forms-value-block__placeholder\">\n {placeholder}\n </span>\n )}\n </Span>\n )\n }\n\n return (\n <ValueBlockContext.Provider value={props}>\n {content}\n </ValueBlockContext.Provider>\n )\n}\n\nfunction useNotInSummaryList(\n ref: React.RefObject<HTMLElement>,\n label?: React.ReactNode\n) {\n useEffect(() => {\n if (ref?.current) {\n try {\n const sibling = ref.current.previousElementSibling\n\n if (\n sibling?.classList.contains('dnb-forms-value-block') &&\n !ref.current.closest('.dnb-forms-summary-list')\n ) {\n warn.apply(\n warn,\n [\n 'Value components as siblings should be wrapped inside a Value.SummaryList!',\n label,\n ].filter(Boolean)\n )\n }\n } catch (error) {\n //\n }\n }\n }, [label, ref])\n}\n\nValueBlock._supportsSpacingProps = true\nexport default ValueBlock\n"],"mappings":"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"}
1
+ {"version":3,"file":"ValueBlock.js","names":["React","Fragment","useContext","useEffect","useMemo","useRef","classnames","warn","Dd","Dl","Dt","Span","FormLabel","SummaryListContext","ValueBlockContext","DataContext","pickSpacingProps","IterateElementContext","convertJsxToString","ValueBlock","props","summaryListContext","valueBlockContext","dataContext","iterateElementContext","index","iterateIndex","className","label","labelProp","inline","maxWidth","composition","placeholder","showEmpty","children","gap","undefined","replace","String","ref","useNotInSummaryList","prerenderFieldProps","content","compositionClass","Item","isNested","layout","_span","createElement","Provider","value","_objectSpread","_extends","element","labelDirection","current","sibling","previousElementSibling","classList","contains","closest","apply","filter","Boolean","error","_supportsSpacingProps"],"sources":["../../../../../src/extensions/forms/ValueBlock/ValueBlock.tsx"],"sourcesContent":["import React, {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport classnames from 'classnames'\nimport { warn } from '../../../shared/helpers'\nimport { Dd, Dl, Dt, Span } from '../../../elements'\nimport { FormLabel } from '../../../components'\nimport SummaryListContext from '../Value/SummaryList/SummaryListContext'\nimport ValueBlockContext from './ValueBlockContext'\nimport DataContext from '../DataContext/Context'\nimport { ValueProps } from '../types'\nimport { pickSpacingProps } from '../../../components/flex/utils'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport { convertJsxToString } from '../../../shared/component-helper'\n\n/**\n * Props are documented in ValueDocs.ts\n */\nexport type Props = Omit<ValueProps<unknown>, 'value'> & {\n children?: React.ReactNode\n\n /**\n * Used internally by the Composition component\n */\n composition?: boolean\n\n /**\n * Used internally by the Composition component\n */\n gap?: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | false\n}\n\nfunction ValueBlock(props: Props) {\n const summaryListContext = useContext(SummaryListContext)\n const valueBlockContext = useContext(ValueBlockContext)\n const dataContext = useContext(DataContext)\n const iterateElementContext = useContext(IterateElementContext)\n const { index: iterateIndex } = iterateElementContext ?? {}\n\n const {\n className,\n label: labelProp,\n inline,\n maxWidth = props.composition ? props.maxWidth : 'large',\n placeholder,\n showEmpty,\n children,\n composition,\n gap = 'xx-small',\n } = props\n\n const label = useMemo(() => {\n if (inline) {\n return null\n }\n if (iterateIndex !== undefined) {\n return convertJsxToString(labelProp).replace(\n '{itemNr}',\n String(iterateIndex + 1)\n )\n }\n return labelProp\n }, [inline, iterateIndex, labelProp])\n\n const ref = useRef<HTMLElement>(null)\n useNotInSummaryList(valueBlockContext?.composition ? null : ref, label)\n\n if (\n ((children === undefined || children === null || children === false) &&\n !showEmpty &&\n !placeholder) ||\n dataContext?.prerenderFieldProps\n ) {\n return null\n }\n\n let content = null\n\n const compositionClass =\n composition &&\n classnames(\n `dnb-forms-value-block__composition--${\n composition === true ? 'horizontal' : composition\n }`\n )\n\n if (summaryListContext) {\n const Item = summaryListContext.isNested\n ? Dl\n : summaryListContext.layout === 'horizontal'\n ? Dl.Item\n : Fragment\n\n if (!label && valueBlockContext?.composition) {\n content = (\n <span\n className={classnames(\n 'dnb-forms-value-block__content',\n gap && `dnb-forms-value-block__content--gap-${gap}`\n )}\n >\n {children}\n </span>\n ) ?? (\n <span className=\"dnb-forms-value-block__placeholder\">\n {placeholder}\n </span>\n )\n } else {\n content = (\n <SummaryListContext.Provider\n value={{ ...summaryListContext, isNested: true }}\n >\n <Item>\n <Dt className=\"dnb-forms-value-block__label\">\n {label && <strong>{label}</strong>}\n </Dt>\n <Dd\n className={classnames(\n summaryListContext.layout !== 'grid' &&\n !summaryListContext.isNested &&\n maxWidth &&\n `dnb-forms-value-block--max-width-${maxWidth}`,\n compositionClass\n )}\n >\n {children ? (\n <span\n className={classnames(\n 'dnb-forms-value-block__content',\n gap && `dnb-forms-value-block__content--gap-${gap}`\n )}\n >\n {children}\n </span>\n ) : (\n <span className=\"dnb-forms-value-block__placeholder\">\n {placeholder}\n </span>\n )}\n </Dd>\n </Item>\n </SummaryListContext.Provider>\n )\n }\n } else {\n content = (\n <Span\n ref={ref}\n className={classnames(\n 'dnb-forms-value-block',\n inline && 'dnb-forms-value-block--inline',\n maxWidth && `dnb-forms-value-block--max-width-${maxWidth}`,\n compositionClass,\n className\n )}\n {...pickSpacingProps(props)}\n >\n {label && (\n <FormLabel\n element=\"strong\" // enhance a11y: https://www.w3.org/WAI/WCAG21/Techniques/html/H49\n className=\"dnb-forms-value-block__label\"\n labelDirection={inline ? 'horizontal' : 'vertical'}\n >\n {label}\n </FormLabel>\n )}\n {children ? (\n <span\n className={classnames(\n 'dnb-forms-value-block__content',\n gap && `dnb-forms-value-block__content--gap-${gap}`\n )}\n >\n {children}\n </span>\n ) : (\n <span className=\"dnb-forms-value-block__placeholder\">\n {placeholder}\n </span>\n )}\n </Span>\n )\n }\n\n return (\n <ValueBlockContext.Provider value={props}>\n {content}\n </ValueBlockContext.Provider>\n )\n}\n\nfunction useNotInSummaryList(\n ref: React.RefObject<HTMLElement>,\n label?: React.ReactNode\n) {\n useEffect(() => {\n if (ref?.current) {\n try {\n const sibling = ref.current.previousElementSibling\n\n if (\n sibling?.classList.contains('dnb-forms-value-block') &&\n !ref.current.closest('.dnb-forms-summary-list')\n ) {\n warn.apply(\n warn,\n [\n 'Value components as siblings should be wrapped inside a Value.SummaryList!',\n label,\n ].filter(Boolean)\n )\n }\n } catch (error) {\n //\n }\n }\n }, [label, ref])\n}\n\nValueBlock._supportsSpacingProps = true\nexport default ValueBlock\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IACVC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,QACD,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,IAAI,QAAQ,yBAAyB;AAC9C,SAASC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,IAAI,QAAQ,mBAAmB;AACpD,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,OAAOC,kBAAkB,MAAM,yCAAyC;AACxE,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,OAAOC,WAAW,MAAM,wBAAwB;AAEhD,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,OAAOC,qBAAqB,MAAM,kCAAkC;AACpE,SAASC,kBAAkB,QAAQ,kCAAkC;AAmBrE,SAASC,UAAUA,CAACC,KAAY,EAAE;EAChC,MAAMC,kBAAkB,GAAGnB,UAAU,CAACW,kBAAkB,CAAC;EACzD,MAAMS,iBAAiB,GAAGpB,UAAU,CAACY,iBAAiB,CAAC;EACvD,MAAMS,WAAW,GAAGrB,UAAU,CAACa,WAAW,CAAC;EAC3C,MAAMS,qBAAqB,GAAGtB,UAAU,CAACe,qBAAqB,CAAC;EAC/D,MAAM;IAAEQ,KAAK,EAAEC;EAAa,CAAC,GAAGF,qBAAqB,aAArBA,qBAAqB,cAArBA,qBAAqB,GAAI,CAAC,CAAC;EAE3D,MAAM;IACJG,SAAS;IACTC,KAAK,EAAEC,SAAS;IAChBC,MAAM;IACNC,QAAQ,GAAGX,KAAK,CAACY,WAAW,GAAGZ,KAAK,CAACW,QAAQ,GAAG,OAAO;IACvDE,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRH,WAAW;IACXI,GAAG,GAAG;EACR,CAAC,GAAGhB,KAAK;EAET,MAAMQ,KAAK,GAAGxB,OAAO,CAAC,MAAM;IAC1B,IAAI0B,MAAM,EAAE;MACV,OAAO,IAAI;IACb;IACA,IAAIJ,YAAY,KAAKW,SAAS,EAAE;MAC9B,OAAOnB,kBAAkB,CAACW,SAAS,CAAC,CAACS,OAAO,CAC1C,UAAU,EACVC,MAAM,CAACb,YAAY,GAAG,CAAC,CACzB,CAAC;IACH;IACA,OAAOG,SAAS;EAClB,CAAC,EAAE,CAACC,MAAM,EAAEJ,YAAY,EAAEG,SAAS,CAAC,CAAC;EAErC,MAAMW,GAAG,GAAGnC,MAAM,CAAc,IAAI,CAAC;EACrCoC,mBAAmB,CAACnB,iBAAiB,aAAjBA,iBAAiB,eAAjBA,iBAAiB,CAAEU,WAAW,GAAG,IAAI,GAAGQ,GAAG,EAAEZ,KAAK,CAAC;EAEvE,IACG,CAACO,QAAQ,KAAKE,SAAS,IAAIF,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,KACjE,CAACD,SAAS,IACV,CAACD,WAAW,IACdV,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEmB,mBAAmB,EAChC;IACA,OAAO,IAAI;EACb;EAEA,IAAIC,OAAO,GAAG,IAAI;EAElB,MAAMC,gBAAgB,GACpBZ,WAAW,IAER,uCACCA,WAAW,KAAK,IAAI,GAAG,YAAY,GAAGA,WACvC,EACF;EAEH,IAAIX,kBAAkB,EAAE;IACtB,MAAMwB,IAAI,GAAGxB,kBAAkB,CAACyB,QAAQ,GACpCrC,EAAE,GACFY,kBAAkB,CAAC0B,MAAM,KAAK,YAAY,GAC1CtC,EAAE,CAACoC,IAAI,GACP5C,QAAQ;IAEZ,IAAI,CAAC2B,KAAK,IAAIN,iBAAiB,aAAjBA,iBAAiB,eAAjBA,iBAAiB,CAAEU,WAAW,EAAE;MAAA,IAAAgB,KAAA;MAC5CL,OAAO,IAAAK,KAAA,GACLhD,KAAA,CAAAiD,aAAA;QACEtB,SAAS,EACP,gCAAgC,IAChCS,GAAG,2CAA2CA,GAAI;MAClD,GAEDD,QACG,CAAC,cAAAa,KAAA,cAAAA,KAAA,GAEPhD,KAAA,CAAAiD,aAAA;QAAMtB,SAAS,EAAC;MAAoC,GACjDM,WACG,CACP;IACH,CAAC,MAAM;MACLU,OAAO,GACL3C,KAAA,CAAAiD,aAAA,CAACpC,kBAAkB,CAACqC,QAAQ;QAC1BC,KAAK,EAAAC,aAAA,CAAAA,aAAA,KAAO/B,kBAAkB;UAAEyB,QAAQ,EAAE;QAAI;MAAG,GAEjD9C,KAAA,CAAAiD,aAAA,CAACJ,IAAI,QACH7C,KAAA,CAAAiD,aAAA,CAACvC,EAAE;QAACiB,SAAS,EAAC;MAA8B,GACzCC,KAAK,IAAI5B,KAAA,CAAAiD,aAAA,iBAASrB,KAAc,CAC/B,CAAC,EACL5B,KAAA,CAAAiD,aAAA,CAACzC,EAAE;QACDmB,SAAS,EAAErB,UAAU,CAKnBsC,gBAAgB,EAJhBvB,kBAAkB,CAAC0B,MAAM,KAAK,MAAM,IAClC,CAAC1B,kBAAkB,CAACyB,QAAQ,IAC5Bf,QAAQ,IACP,oCAAmCA,QAAS,EAEjD;MAAE,GAEDI,QAAQ,GACPnC,KAAA,CAAAiD,aAAA;QACEtB,SAAS,EACP,gCAAgC,IAChCS,GAAG,2CAA2CA,GAAI;MAClD,GAEDD,QACG,CAAC,GAEPnC,KAAA,CAAAiD,aAAA;QAAMtB,SAAS,EAAC;MAAoC,GACjDM,WACG,CAEN,CACA,CACqB,CAC9B;IACH;EACF,CAAC,MAAM;IACLU,OAAO,GACL3C,KAAA,CAAAiD,aAAA,CAACtC,IAAI,EAAA0C,QAAA;MACHb,GAAG,EAAEA,GAAI;MACTb,SAAS,EAAErB,UAAU,CACnB,uBAAuB,EAGvBsC,gBAAgB,EAChBjB,SAAS,EAHTG,MAAM,IAAI,+BAA+B,EACzCC,QAAQ,IAAK,oCAAmCA,QAAS,EAG3D;IAAE,GACEf,gBAAgB,CAACI,KAAK,CAAC,GAE1BQ,KAAK,IACJ5B,KAAA,CAAAiD,aAAA,CAACrC,SAAS;MACR0C,OAAO,EAAC,QAAQ;MAChB3B,SAAS,EAAC,8BAA8B;MACxC4B,cAAc,EAAEzB,MAAM,GAAG,YAAY,GAAG;IAAW,GAElDF,KACQ,CACZ,EACAO,QAAQ,GACPnC,KAAA,CAAAiD,aAAA;MACEtB,SAAS,EACP,gCAAgC,IAChCS,GAAG,2CAA2CA,GAAI;IAClD,GAEDD,QACG,CAAC,GAEPnC,KAAA,CAAAiD,aAAA;MAAMtB,SAAS,EAAC;IAAoC,GACjDM,WACG,CAEJ,CACP;EACH;EAEA,OACEjC,KAAA,CAAAiD,aAAA,CAACnC,iBAAiB,CAACoC,QAAQ;IAACC,KAAK,EAAE/B;EAAM,GACtCuB,OACyB,CAAC;AAEjC;AAEA,SAASF,mBAAmBA,CAC1BD,GAAiC,EACjCZ,KAAuB,EACvB;EACAzB,SAAS,CAAC,MAAM;IACd,IAAIqC,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEgB,OAAO,EAAE;MAChB,IAAI;QACF,MAAMC,OAAO,GAAGjB,GAAG,CAACgB,OAAO,CAACE,sBAAsB;QAElD,IACED,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,SAAS,CAACC,QAAQ,CAAC,uBAAuB,CAAC,IACpD,CAACpB,GAAG,CAACgB,OAAO,CAACK,OAAO,CAAC,yBAAyB,CAAC,EAC/C;UACAtD,IAAI,CAACuD,KAAK,CACRvD,IAAI,EACJ,CACE,4EAA4E,EAC5EqB,KAAK,CACN,CAACmC,MAAM,CAACC,OAAO,CAClB,CAAC;QACH;MACF,CAAC,CAAC,OAAOC,KAAK,EAAE,CAEhB;IACF;EACF,CAAC,EAAE,CAACrC,KAAK,EAAEY,GAAG,CAAC,CAAC;AAClB;AAEArB,UAAU,CAAC+C,qBAAqB,GAAG,IAAI;AACvC,eAAe/C,UAAU"}
@@ -2,18 +2,15 @@
2
2
  /*
3
3
  * Utilities
4
4
  */
5
- .dnb-forms-summary-list.dnb-dl .dnb-dt, .dnb-forms-summary-list.dnb-dl > .dnb-dd > .dnb-dl, .dnb-forms-summary-list.dnb-dl:not([class*=dnb-space]) > .dnb-dd > .dnb-dl {
5
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal) .dnb-dt, .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal) > .dnb-dd > .dnb-dl, .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not([class*=dnb-space]) > .dnb-dd > .dnb-dl {
6
6
  margin: 0;
7
7
  }
8
- .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--grid) > .dnb-dd {
8
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not(.dnb-dl__layout--grid) > .dnb-dd {
9
9
  margin-bottom: var(--spacing-medium);
10
10
  }
11
- .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--grid) > .dnb-dd:last-of-type {
11
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not(.dnb-dl__layout--grid) > .dnb-dd:last-of-type {
12
12
  margin-bottom: 0;
13
13
  }
14
- .dnb-forms-summary-list.dnb-dl.dnb-dl__layout--grid {
15
- row-gap: var(--spacing-medium);
16
- }
17
14
 
18
15
  .dnb-forms-value-block {
19
16
  display: block;
@@ -1 +1 @@
1
- @charset "UTF-8";.dnb-forms-summary-list.dnb-dl .dnb-dt,.dnb-forms-summary-list.dnb-dl:not([class*=dnb-space])>.dnb-dd>.dnb-dl,.dnb-forms-summary-list.dnb-dl>.dnb-dd>.dnb-dl{margin:0}.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--grid)>.dnb-dd{margin-bottom:var(--spacing-medium)}.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--grid)>.dnb-dd:last-of-type{margin-bottom:0}.dnb-forms-summary-list.dnb-dl.dnb-dl__layout--grid{row-gap:var(--spacing-medium)}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline:not([class*=__composition]){display:inline-block;font-size:inherit}.dnb-forms-value-block--inline:not([class*=__composition]):after,.dnb-forms-value-block--inline:not([class*=__composition]):before{content:" "}.dnb-forms-value-block+.dnb-forms-value-block--inline:not([class*=__composition]):before{content:none}.dnb-forms-value-block__label,.dnb-forms-value-block__label strong{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:var(--color-black-80)}.dnb-forms-value-block--max-width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-value-block--max-width-small{max-width:var(--forms-field-width--small)}.dnb-forms-value-block--max-width-medium{max-width:var(--forms-field-width--medium)}.dnb-forms-value-block--max-width-large{max-width:var(--forms-field-width--large)}}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content{-moz-column-gap:var(--column-gap,0);column-gap:var(--column-gap,0);display:flex;flex-flow:row;row-gap:var(--row-gap,var(--spacing-medium))}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-xx-small{--column-gap:var(--spacing-xx-small)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-x-small{--column-gap:var(--spacing-x-small)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-small{--column-gap:var(--spacing-small)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-medium{--column-gap:var(--spacing-medium)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-large{--column-gap:var(--spacing-large)}@media screen and (min-width:25em){.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content{align-items:flex-start}}@media screen and (max-width:25em){.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content{flex-flow:column}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content:not(:has(.dnb-forms-value-block__label)){--row-gap:var(--spacing-x-small)}}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content:not([class*=dnb-space])>.dnb-dl,.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dd,.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dl,.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dt{margin:0}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dl>.dnb-dd{margin-bottom:0}
1
+ @charset "UTF-8";.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal) .dnb-dt,.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not([class*=dnb-space])>.dnb-dd>.dnb-dl,.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal)>.dnb-dd>.dnb-dl{margin:0}.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not(.dnb-dl__layout--grid)>.dnb-dd{margin-bottom:var(--spacing-medium)}.dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not(.dnb-dl__layout--grid)>.dnb-dd:last-of-type{margin-bottom:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline:not([class*=__composition]){display:inline-block;font-size:inherit}.dnb-forms-value-block--inline:not([class*=__composition]):after,.dnb-forms-value-block--inline:not([class*=__composition]):before{content:" "}.dnb-forms-value-block+.dnb-forms-value-block--inline:not([class*=__composition]):before{content:none}.dnb-forms-value-block__label,.dnb-forms-value-block__label strong{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:var(--color-black-80)}.dnb-forms-value-block--max-width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-value-block--max-width-small{max-width:var(--forms-field-width--small)}.dnb-forms-value-block--max-width-medium{max-width:var(--forms-field-width--medium)}.dnb-forms-value-block--max-width-large{max-width:var(--forms-field-width--large)}}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content{-moz-column-gap:var(--column-gap,0);column-gap:var(--column-gap,0);display:flex;flex-flow:row;row-gap:var(--row-gap,var(--spacing-medium))}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-xx-small{--column-gap:var(--spacing-xx-small)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-x-small{--column-gap:var(--spacing-x-small)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-small{--column-gap:var(--spacing-small)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-medium{--column-gap:var(--spacing-medium)}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content--gap-large{--column-gap:var(--spacing-large)}@media screen and (min-width:25em){.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content{align-items:flex-start}}@media screen and (max-width:25em){.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content{flex-flow:column}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content:not(:has(.dnb-forms-value-block__label)){--row-gap:var(--spacing-x-small)}}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content:not([class*=dnb-space])>.dnb-dl,.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dd,.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dl,.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dt{margin:0}.dnb-forms-value-block__composition--horizontal .dnb-forms-value-block__content>.dnb-dl>.dnb-dd{margin-bottom:0}
@@ -1,6 +1,6 @@
1
1
  @import '../../../../style/core/utilities.scss';
2
2
 
3
- .dnb-forms-summary-list.dnb-dl {
3
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal) {
4
4
  & .dnb-dt,
5
5
  & > .dnb-dd > .dnb-dl,
6
6
  &:not([class*='dnb-space']) > .dnb-dd > .dnb-dl {
@@ -13,9 +13,6 @@
13
13
  margin-bottom: 0;
14
14
  }
15
15
  }
16
- &.dnb-dl__layout--grid {
17
- row-gap: var(--spacing-medium);
18
- }
19
16
  }
20
17
 
21
18
  .dnb-forms-value-block {
@@ -573,18 +573,15 @@ html[data-visual-test] .dnb-forms-submit-indicator__content b {
573
573
  /*
574
574
  * Utilities
575
575
  */
576
- .dnb-forms-summary-list.dnb-dl .dnb-dt, .dnb-forms-summary-list.dnb-dl > .dnb-dd > .dnb-dl, .dnb-forms-summary-list.dnb-dl:not([class*=dnb-space]) > .dnb-dd > .dnb-dl {
576
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal) .dnb-dt, .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal) > .dnb-dd > .dnb-dl, .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not([class*=dnb-space]) > .dnb-dd > .dnb-dl {
577
577
  margin: 0;
578
578
  }
579
- .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--grid) > .dnb-dd {
579
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not(.dnb-dl__layout--grid) > .dnb-dd {
580
580
  margin-bottom: var(--spacing-medium);
581
581
  }
582
- .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--grid) > .dnb-dd:last-of-type {
582
+ .dnb-forms-summary-list.dnb-dl:not(.dnb-dl__layout--horizontal):not(.dnb-dl__layout--grid) > .dnb-dd:last-of-type {
583
583
  margin-bottom: 0;
584
584
  }
585
- .dnb-forms-summary-list.dnb-dl.dnb-dl__layout--grid {
586
- row-gap: var(--spacing-medium);
587
- }
588
585
 
589
586
  .dnb-forms-value-block {
590
587
  display: block;