@dnb/eufemia 9.19.0 → 9.20.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.
- package/CHANGELOG.md +20 -198
- package/cjs/components/avatar/Avatar.js +14 -12
- package/cjs/components/avatar/AvatarGroup.js +11 -11
- package/cjs/components/avatar/style/_avatar.scss +2 -0
- package/cjs/components/avatar/style/dnb-avatar.css +4 -1
- package/cjs/components/avatar/style/dnb-avatar.min.css +1 -1
- package/cjs/components/breadcrumb/Breadcrumb.js +27 -52
- package/cjs/components/breadcrumb/BreadcrumbItem.js +15 -29
- package/cjs/components/button/Button.d.ts +11 -7
- package/cjs/components/icon-primary/IconPrimary.d.ts +2 -1
- package/cjs/components/info-card/InfoCard.js +22 -22
- package/cjs/components/pagination/Pagination.d.ts +6 -6
- package/cjs/components/pagination/Pagination.js +2 -2
- package/cjs/components/skeleton/Skeleton.d.ts +1 -1
- package/cjs/components/skeleton/SkeletonHelper.d.ts +2 -1
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
- package/cjs/components/tag/Tag.js +17 -29
- package/cjs/components/tag/TagGroup.js +10 -24
- package/cjs/components/timeline/Timeline.js +24 -64
- package/cjs/components/timeline/TimelineItem.js +16 -29
- package/cjs/elements/Div.d.ts +1 -1
- package/cjs/elements/P.d.ts +2 -1
- package/cjs/shared/AnimateHeight.js +19 -13
- package/cjs/shared/helpers.js +16 -4
- package/cjs/shared/hooks/index.js +13 -0
- package/cjs/shared/hooks/usePropsWithContext.js +92 -0
- package/cjs/style/dnb-ui-components.css +4 -1
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/dnb-ui-elements.css +1 -3
- package/cjs/style/dnb-ui-elements.min.css +1 -1
- package/cjs/style/dnb-ui-tags.css +2 -6
- package/cjs/style/dnb-ui-tags.min.css +2 -2
- package/cjs/style/elements/code.scss +1 -3
- package/cjs/style/stylis.d.ts +38 -0
- package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
- package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
- package/cjs/style/themes/theme-ui/dnb-theme-ui.css +1 -3
- package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
- package/components/avatar/Avatar.js +14 -13
- package/components/avatar/Avatar.tsx +8 -9
- package/components/avatar/AvatarGroup.js +20 -20
- package/components/avatar/AvatarGroup.tsx +4 -8
- package/components/avatar/style/_avatar.scss +2 -0
- package/components/avatar/style/dnb-avatar.css +4 -1
- package/components/avatar/style/dnb-avatar.min.css +1 -1
- package/components/breadcrumb/Breadcrumb.js +22 -35
- package/components/breadcrumb/Breadcrumb.tsx +10 -10
- package/components/breadcrumb/BreadcrumbItem.js +14 -25
- package/components/breadcrumb/BreadcrumbItem.tsx +8 -11
- package/components/button/Button.d.ts +11 -7
- package/components/icon-primary/IconPrimary.d.ts +2 -1
- package/components/info-card/InfoCard.js +22 -22
- package/components/info-card/InfoCard.tsx +13 -12
- package/components/modal/Modal.tsx +1 -1
- package/components/modal/ModalContent.tsx +6 -2
- package/components/modal/components/ModalHeader.tsx +2 -2
- package/components/modal/types.ts +2 -2
- package/components/pagination/Pagination.d.ts +6 -6
- package/components/pagination/Pagination.js +2 -2
- package/components/skeleton/SkeletonHelper.d.ts +2 -1
- package/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
- package/components/tag/Tag.js +17 -27
- package/components/tag/Tag.tsx +15 -13
- package/components/tag/TagGroup.js +9 -22
- package/components/tag/TagGroup.tsx +6 -10
- package/components/timeline/Timeline.js +23 -27
- package/components/timeline/Timeline.tsx +24 -20
- package/components/timeline/TimelineItem.js +15 -25
- package/components/timeline/TimelineItem.tsx +8 -10
- package/elements/P.d.ts +2 -1
- package/es/components/avatar/Avatar.js +7 -6
- package/es/components/avatar/Avatar.tsx +8 -9
- package/es/components/avatar/AvatarGroup.js +6 -6
- package/es/components/avatar/AvatarGroup.tsx +4 -8
- package/es/components/avatar/style/_avatar.scss +2 -0
- package/es/components/avatar/style/dnb-avatar.css +4 -1
- package/es/components/avatar/style/dnb-avatar.min.css +1 -1
- package/es/components/breadcrumb/Breadcrumb.js +8 -14
- package/es/components/breadcrumb/Breadcrumb.tsx +10 -10
- package/es/components/breadcrumb/BreadcrumbItem.js +9 -13
- package/es/components/breadcrumb/BreadcrumbItem.tsx +8 -11
- package/es/components/button/Button.d.ts +11 -7
- package/es/components/icon-primary/IconPrimary.d.ts +2 -1
- package/es/components/info-card/InfoCard.js +8 -8
- package/es/components/info-card/InfoCard.tsx +13 -12
- package/es/components/modal/Modal.tsx +1 -1
- package/es/components/modal/ModalContent.tsx +6 -2
- package/es/components/modal/components/ModalHeader.tsx +2 -2
- package/es/components/modal/types.ts +2 -2
- package/es/components/pagination/Pagination.d.ts +6 -6
- package/es/components/pagination/Pagination.js +2 -2
- package/es/components/skeleton/Skeleton.d.ts +1 -1
- package/es/components/skeleton/SkeletonHelper.d.ts +2 -1
- package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
- package/es/components/tag/Tag.js +11 -14
- package/es/components/tag/Tag.tsx +15 -13
- package/es/components/tag/TagGroup.js +7 -13
- package/es/components/tag/TagGroup.tsx +6 -10
- package/es/components/timeline/Timeline.js +21 -17
- package/es/components/timeline/Timeline.tsx +24 -20
- package/es/components/timeline/TimelineItem.js +9 -12
- package/es/components/timeline/TimelineItem.tsx +8 -10
- package/es/elements/Div.d.ts +1 -1
- package/es/elements/P.d.ts +2 -1
- package/es/shared/AnimateHeight.js +15 -13
- package/es/shared/helpers.js +9 -2
- package/es/shared/hooks/index.js +1 -0
- package/es/shared/hooks/index.ts +1 -0
- package/es/shared/hooks/usePropsWithContext.js +26 -0
- package/es/shared/hooks/usePropsWithContext.ts +45 -0
- package/es/shared/interfaces.tsx +0 -2
- package/es/style/dnb-ui-components.css +4 -1
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/dnb-ui-elements.css +1 -3
- package/es/style/dnb-ui-elements.min.css +1 -1
- package/es/style/dnb-ui-tags.css +2 -6
- package/es/style/dnb-ui-tags.min.css +2 -2
- package/es/style/elements/code.scss +1 -3
- package/es/style/stylis.d.ts +38 -0
- package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
- package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
- package/es/style/themes/theme-ui/dnb-theme-ui.css +1 -3
- package/es/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
- package/esm/components/avatar/Avatar.js +14 -13
- package/esm/components/avatar/Avatar.tsx +8 -9
- package/esm/components/avatar/AvatarGroup.js +20 -20
- package/esm/components/avatar/AvatarGroup.tsx +4 -8
- package/esm/components/avatar/style/_avatar.scss +2 -0
- package/esm/components/avatar/style/dnb-avatar.css +4 -1
- package/esm/components/avatar/style/dnb-avatar.min.css +1 -1
- package/esm/components/breadcrumb/Breadcrumb.js +22 -35
- package/esm/components/breadcrumb/Breadcrumb.tsx +10 -10
- package/esm/components/breadcrumb/BreadcrumbItem.js +14 -25
- package/esm/components/breadcrumb/BreadcrumbItem.tsx +8 -11
- package/esm/components/button/Button.d.ts +11 -7
- package/esm/components/icon-primary/IconPrimary.d.ts +2 -1
- package/esm/components/info-card/InfoCard.js +22 -22
- package/esm/components/info-card/InfoCard.tsx +13 -12
- package/esm/components/modal/Modal.tsx +1 -1
- package/esm/components/modal/ModalContent.tsx +6 -2
- package/esm/components/modal/components/ModalHeader.tsx +2 -2
- package/esm/components/modal/types.ts +2 -2
- package/esm/components/pagination/Pagination.d.ts +6 -6
- package/esm/components/pagination/Pagination.js +2 -2
- package/esm/components/skeleton/SkeletonHelper.d.ts +2 -1
- package/esm/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
- package/esm/components/tag/Tag.js +17 -27
- package/esm/components/tag/Tag.tsx +15 -13
- package/esm/components/tag/TagGroup.js +9 -22
- package/esm/components/tag/TagGroup.tsx +6 -10
- package/esm/components/timeline/Timeline.js +23 -27
- package/esm/components/timeline/Timeline.tsx +24 -20
- package/esm/components/timeline/TimelineItem.js +15 -25
- package/esm/components/timeline/TimelineItem.tsx +8 -10
- package/esm/dnb-ui-components.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +3 -3
- package/esm/dnb-ui-web-components.min.mjs +4 -4
- package/esm/elements/P.d.ts +2 -1
- package/esm/shared/AnimateHeight.js +19 -13
- package/esm/shared/helpers.js +15 -4
- package/esm/shared/hooks/index.js +1 -0
- package/esm/shared/hooks/index.ts +1 -0
- package/esm/shared/hooks/usePropsWithContext.js +47 -0
- package/esm/shared/hooks/usePropsWithContext.ts +45 -0
- package/esm/shared/interfaces.tsx +0 -2
- package/esm/style/dnb-ui-components.css +4 -1
- package/esm/style/dnb-ui-components.min.css +1 -1
- package/esm/style/dnb-ui-elements.css +1 -3
- package/esm/style/dnb-ui-elements.min.css +1 -1
- package/esm/style/dnb-ui-tags.css +2 -6
- package/esm/style/dnb-ui-tags.min.css +2 -2
- package/esm/style/elements/code.scss +1 -3
- package/esm/style/stylis.d.ts +38 -0
- package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
- package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
- package/esm/style/themes/theme-ui/dnb-theme-ui.css +1 -3
- package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
- package/package.json +1 -1
- package/shared/AnimateHeight.js +19 -13
- package/shared/helpers.js +15 -4
- package/shared/hooks/index.js +1 -0
- package/shared/hooks/index.ts +1 -0
- package/shared/hooks/usePropsWithContext.js +47 -0
- package/shared/hooks/usePropsWithContext.ts +45 -0
- package/shared/interfaces.tsx +0 -2
- package/style/dnb-ui-components.css +4 -1
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-elements.css +1 -3
- package/style/dnb-ui-elements.min.css +1 -1
- package/style/dnb-ui-tags.css +2 -6
- package/style/dnb-ui-tags.min.css +2 -2
- package/style/elements/code.scss +1 -3
- package/style/stylis.d.ts +38 -0
- package/style/themes/theme-open-banking/dnb-theme-open-banking.css +1 -3
- package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
- package/style/themes/theme-ui/dnb-theme-ui.css +1 -3
- package/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
- package/umd/dnb-ui-components.min.js +3 -3
- package/umd/dnb-ui-lib.min.js +4 -4
- package/umd/dnb-ui-web-components.min.js +3 -3
|
@@ -8,14 +8,14 @@ import { AvatarSizes, AvatarVariants } from './Avatar'
|
|
|
8
8
|
// Shared
|
|
9
9
|
import Context from '../../shared/Context'
|
|
10
10
|
import { ISpacingProps } from '../../shared/interfaces'
|
|
11
|
-
import {
|
|
11
|
+
import { usePropsWithContext } from '../../shared/hooks'
|
|
12
12
|
|
|
13
13
|
export interface AvatarGroupProps {
|
|
14
14
|
/**
|
|
15
15
|
* Label to describe the avatar group
|
|
16
16
|
* Default: null
|
|
17
17
|
*/
|
|
18
|
-
label:
|
|
18
|
+
label: React.ReactNode
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Custom className on the component root
|
|
@@ -59,7 +59,7 @@ export const defaultProps = {
|
|
|
59
59
|
|
|
60
60
|
export const AvatarGroupContext = React.createContext(null)
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
const AvatarGroup = (localProps: AvatarGroupProps & ISpacingProps) => {
|
|
63
63
|
// Every component should have a context
|
|
64
64
|
const context = React.useContext(Context)
|
|
65
65
|
// Extract additional props from global context
|
|
@@ -71,11 +71,7 @@ function AvatarGroup(localProps: AvatarGroupProps & ISpacingProps) {
|
|
|
71
71
|
maxElements: maxElementsProp,
|
|
72
72
|
variant,
|
|
73
73
|
...props
|
|
74
|
-
} =
|
|
75
|
-
{ ...defaultProps, ...localProps },
|
|
76
|
-
defaultProps,
|
|
77
|
-
context?.AvatarGroup
|
|
78
|
-
)
|
|
74
|
+
} = usePropsWithContext(localProps, defaultProps, context?.AvatarGroup)
|
|
79
75
|
|
|
80
76
|
const maxElements =
|
|
81
77
|
maxElementsProp && maxElementsProp > 0 ? maxElementsProp : 4
|
|
@@ -112,6 +112,7 @@
|
|
|
112
112
|
|
|
113
113
|
&:nth-of-type(2) {
|
|
114
114
|
margin-left: 0;
|
|
115
|
+
border-left: none;
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
|
|
@@ -119,6 +120,7 @@
|
|
|
119
120
|
display: inline-flex;
|
|
120
121
|
align-items: center;
|
|
121
122
|
justify-content: center;
|
|
123
|
+
flex-shrink: 0;
|
|
122
124
|
color: var(--color-black-55);
|
|
123
125
|
|
|
124
126
|
&--size-small {
|
|
@@ -185,7 +185,8 @@
|
|
|
185
185
|
.dnb-avatar__group .dnb-avatar--size-x-large {
|
|
186
186
|
margin-left: -1.5rem; }
|
|
187
187
|
.dnb-avatar__group .dnb-avatar:nth-of-type(2) {
|
|
188
|
-
margin-left: 0;
|
|
188
|
+
margin-left: 0;
|
|
189
|
+
border-left: none; }
|
|
189
190
|
.dnb-avatar__group--elements-left {
|
|
190
191
|
display: -webkit-inline-box;
|
|
191
192
|
display: -ms-inline-flexbox;
|
|
@@ -196,6 +197,8 @@
|
|
|
196
197
|
-webkit-box-pack: center;
|
|
197
198
|
-ms-flex-pack: center;
|
|
198
199
|
justify-content: center;
|
|
200
|
+
-ms-flex-negative: 0;
|
|
201
|
+
flex-shrink: 0;
|
|
199
202
|
color: #737373;
|
|
200
203
|
color: var(--color-black-55); }
|
|
201
204
|
.dnb-avatar__group--elements-left--size-small {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dnb-avatar{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-avatar *,.dnb-avatar :after,.dnb-avatar :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-avatar :after,.dnb-avatar :before{text-decoration:inherit;vertical-align:inherit}:root{--avatar-font-size--small:var(--font-size-x-small);--avatar-font-size--medium:var(--font-size-basis);--avatar-font-size--large:var(--font-size-x-large);--avatar-font-size--x-large:var(--font-size-x-large);--avatar-line-height--small:var(--line-height-x-small);--avatar-line-height--medium:var(--line-height-basis);--avatar-line-height--large:var(--line-height-large);--avatar-line-height--x-large:var(--line-height-large);--avatar-width--small:1.5rem;--avatar-height--small:1.5rem;--avatar-width--medium:2rem;--avatar-height--medium:2rem;--avatar-width--large:4rem;--avatar-height--large:4rem;--avatar-width--x-large:5rem;--avatar-height--x-large:5rem}.dnb-avatar{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-negative:0;align-items:center;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;flex-shrink:0;font-weight:500;font-weight:var(--font-weight-medium);justify-content:center;line-height:1;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dnb-avatar,.dnb-core-style .dnb-avatar{line-height:2.5rem;line-height:var(--button-height)}.dnb-avatar--size-small{font-size:.875rem;font-size:var(--avatar-font-size--small);height:1.5rem;height:var(--avatar-height--small);width:1.5rem;width:var(--avatar-width--small)}.dnb-avatar--size-small,.dnb-core-style .dnb-avatar--size-small{line-height:1.125rem;line-height:var(--avatar-line-height--small)}.dnb-avatar--size-medium{font-size:1.125rem;font-size:var(--avatar-font-size--medium);height:2rem;height:var(--avatar-height--medium);width:2rem;width:var(--avatar-width--medium)}.dnb-avatar--size-medium,.dnb-core-style .dnb-avatar--size-medium{line-height:1.5rem;line-height:var(--avatar-line-height--medium)}.dnb-avatar--size-large{font-size:2.125rem;font-size:var(--avatar-font-size--large);height:4rem;height:var(--avatar-height--large);width:4rem;width:var(--avatar-width--large)}.dnb-avatar--size-large,.dnb-core-style .dnb-avatar--size-large{line-height:2.5rem;line-height:var(--avatar-line-height--large)}.dnb-avatar--size-x-large{font-size:2.125rem;font-size:var(--avatar-font-size--x-large);height:5rem;height:var(--avatar-height--x-large);width:5rem;width:var(--avatar-width--x-large)}.dnb-avatar--size-x-large,.dnb-core-style .dnb-avatar--size-x-large{line-height:2.5rem;line-height:var(--avatar-line-height--x-large)}.dnb-avatar__group{-webkit-box-pack:flex;-ms-flex-pack:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;justify-content:flex}.dnb-avatar__group .dnb-avatar{border:.125rem solid #f8f8f8;border:.125rem solid var(--color-black-3);-webkit-box-sizing:content-box;box-sizing:content-box}.dnb-avatar__group .dnb-avatar--size-small{margin-left:-.5rem}.dnb-avatar__group .dnb-avatar--size-medium{margin-left:-.75rem}.dnb-avatar__group .dnb-avatar--size-large{margin-left:-1rem}.dnb-avatar__group .dnb-avatar--size-x-large{margin-left:-1.5rem}.dnb-avatar__group .dnb-avatar:nth-of-type(2){margin-left:0}.dnb-avatar__group--elements-left{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;color:#737373;color:var(--color-black-55);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;justify-content:center}.dnb-avatar__group--elements-left--size-small{font-size:.875rem;font-size:var(--font-size-x-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-medium{font-size:1rem;font-size:var(--font-size-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-large,.dnb-avatar__group--elements-left--size-x-large{font-size:1.625rem;font-size:var(--font-size-large);margin-left:.25rem;margin-left:var(--spacing-xx-small)}
|
|
1
|
+
.dnb-avatar{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-avatar *,.dnb-avatar :after,.dnb-avatar :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-avatar :after,.dnb-avatar :before{text-decoration:inherit;vertical-align:inherit}:root{--avatar-font-size--small:var(--font-size-x-small);--avatar-font-size--medium:var(--font-size-basis);--avatar-font-size--large:var(--font-size-x-large);--avatar-font-size--x-large:var(--font-size-x-large);--avatar-line-height--small:var(--line-height-x-small);--avatar-line-height--medium:var(--line-height-basis);--avatar-line-height--large:var(--line-height-large);--avatar-line-height--x-large:var(--line-height-large);--avatar-width--small:1.5rem;--avatar-height--small:1.5rem;--avatar-width--medium:2rem;--avatar-height--medium:2rem;--avatar-width--large:4rem;--avatar-height--large:4rem;--avatar-width--x-large:5rem;--avatar-height--x-large:5rem}.dnb-avatar{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-negative:0;align-items:center;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;flex-shrink:0;font-weight:500;font-weight:var(--font-weight-medium);justify-content:center;line-height:1;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dnb-avatar,.dnb-core-style .dnb-avatar{line-height:2.5rem;line-height:var(--button-height)}.dnb-avatar--size-small{font-size:.875rem;font-size:var(--avatar-font-size--small);height:1.5rem;height:var(--avatar-height--small);width:1.5rem;width:var(--avatar-width--small)}.dnb-avatar--size-small,.dnb-core-style .dnb-avatar--size-small{line-height:1.125rem;line-height:var(--avatar-line-height--small)}.dnb-avatar--size-medium{font-size:1.125rem;font-size:var(--avatar-font-size--medium);height:2rem;height:var(--avatar-height--medium);width:2rem;width:var(--avatar-width--medium)}.dnb-avatar--size-medium,.dnb-core-style .dnb-avatar--size-medium{line-height:1.5rem;line-height:var(--avatar-line-height--medium)}.dnb-avatar--size-large{font-size:2.125rem;font-size:var(--avatar-font-size--large);height:4rem;height:var(--avatar-height--large);width:4rem;width:var(--avatar-width--large)}.dnb-avatar--size-large,.dnb-core-style .dnb-avatar--size-large{line-height:2.5rem;line-height:var(--avatar-line-height--large)}.dnb-avatar--size-x-large{font-size:2.125rem;font-size:var(--avatar-font-size--x-large);height:5rem;height:var(--avatar-height--x-large);width:5rem;width:var(--avatar-width--x-large)}.dnb-avatar--size-x-large,.dnb-core-style .dnb-avatar--size-x-large{line-height:2.5rem;line-height:var(--avatar-line-height--x-large)}.dnb-avatar__group{-webkit-box-pack:flex;-ms-flex-pack:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;justify-content:flex}.dnb-avatar__group .dnb-avatar{border:.125rem solid #f8f8f8;border:.125rem solid var(--color-black-3);-webkit-box-sizing:content-box;box-sizing:content-box}.dnb-avatar__group .dnb-avatar--size-small{margin-left:-.5rem}.dnb-avatar__group .dnb-avatar--size-medium{margin-left:-.75rem}.dnb-avatar__group .dnb-avatar--size-large{margin-left:-1rem}.dnb-avatar__group .dnb-avatar--size-x-large{margin-left:-1.5rem}.dnb-avatar__group .dnb-avatar:nth-of-type(2){border-left:none;margin-left:0}.dnb-avatar__group--elements-left{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-ms-flex-negative:0;align-items:center;color:#737373;color:var(--color-black-55);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;flex-shrink:0;justify-content:center}.dnb-avatar__group--elements-left--size-small{font-size:.875rem;font-size:var(--font-size-x-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-medium{font-size:1rem;font-size:var(--font-size-small);margin-left:.125rem}.dnb-avatar__group--elements-left--size-large,.dnb-avatar__group--elements-left--size-x-large{font-size:1.625rem;font-size:var(--font-size-large);margin-left:.25rem;margin-left:var(--spacing-xx-small)}
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
import "core-js/modules/es.object.keys.js";
|
|
2
|
-
import "core-js/modules/es.symbol.js";
|
|
3
|
-
import "core-js/modules/es.array.filter.js";
|
|
4
|
-
import "core-js/modules/es.object.to-string.js";
|
|
5
|
-
import "core-js/modules/es.object.get-own-property-descriptor.js";
|
|
6
|
-
import "core-js/modules/web.dom-collections.for-each.js";
|
|
7
|
-
import "core-js/modules/es.object.get-own-property-descriptors.js";
|
|
8
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
9
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
10
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
11
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
12
4
|
var _excluded = ["className", "skeleton", "children", "variant", "onClick", "navText", "goBackText", "homeText", "backToText", "styleType", "collapsedStyleType", "isCollapsed", "spacing", "data", "href"];
|
|
13
5
|
import "core-js/modules/es.array.map.js";
|
|
14
|
-
|
|
15
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
-
|
|
17
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
18
|
-
|
|
19
6
|
import React, { useEffect, useState } from 'react';
|
|
20
7
|
import classnames from 'classnames';
|
|
21
8
|
import { createSkeletonClass } from '../skeleton/SkeletonHelper';
|
|
@@ -24,9 +11,9 @@ import Section from '../section/Section';
|
|
|
24
11
|
import Button from '../button/Button';
|
|
25
12
|
import { useMediaQuery } from '../../shared';
|
|
26
13
|
import Context from '../../shared/Context';
|
|
27
|
-
import {
|
|
14
|
+
import { usePropsWithContext } from '../../shared/hooks';
|
|
28
15
|
import BreadcrumbItem from './BreadcrumbItem';
|
|
29
|
-
|
|
16
|
+
import { convertJsxToString } from '../../shared/component-helper';
|
|
30
17
|
export var defaultProps = {
|
|
31
18
|
className: null,
|
|
32
19
|
skeleton: false,
|
|
@@ -45,28 +32,28 @@ export var defaultProps = {
|
|
|
45
32
|
spacing: false
|
|
46
33
|
};
|
|
47
34
|
|
|
48
|
-
function Breadcrumb(localProps) {
|
|
35
|
+
var Breadcrumb = function Breadcrumb(localProps) {
|
|
49
36
|
var _context$translation;
|
|
50
37
|
|
|
51
38
|
var context = React.useContext(Context);
|
|
52
39
|
|
|
53
|
-
var
|
|
54
|
-
className =
|
|
55
|
-
skeleton =
|
|
56
|
-
childrenItems =
|
|
57
|
-
variant =
|
|
58
|
-
onClick =
|
|
59
|
-
navText =
|
|
60
|
-
goBackText =
|
|
61
|
-
homeText =
|
|
62
|
-
backToText =
|
|
63
|
-
styleType =
|
|
64
|
-
collapsedStyleType =
|
|
65
|
-
overrideIsCollapsed =
|
|
66
|
-
spacing =
|
|
67
|
-
data =
|
|
68
|
-
href =
|
|
69
|
-
props = _objectWithoutProperties(
|
|
40
|
+
var _usePropsWithContext = usePropsWithContext(localProps, defaultProps, context === null || context === void 0 ? void 0 : (_context$translation = context.translation) === null || _context$translation === void 0 ? void 0 : _context$translation.Breadcrumb, context === null || context === void 0 ? void 0 : context.Breadcrumb),
|
|
41
|
+
className = _usePropsWithContext.className,
|
|
42
|
+
skeleton = _usePropsWithContext.skeleton,
|
|
43
|
+
childrenItems = _usePropsWithContext.children,
|
|
44
|
+
variant = _usePropsWithContext.variant,
|
|
45
|
+
onClick = _usePropsWithContext.onClick,
|
|
46
|
+
navText = _usePropsWithContext.navText,
|
|
47
|
+
goBackText = _usePropsWithContext.goBackText,
|
|
48
|
+
homeText = _usePropsWithContext.homeText,
|
|
49
|
+
backToText = _usePropsWithContext.backToText,
|
|
50
|
+
styleType = _usePropsWithContext.styleType,
|
|
51
|
+
collapsedStyleType = _usePropsWithContext.collapsedStyleType,
|
|
52
|
+
overrideIsCollapsed = _usePropsWithContext.isCollapsed,
|
|
53
|
+
spacing = _usePropsWithContext.spacing,
|
|
54
|
+
data = _usePropsWithContext.data,
|
|
55
|
+
href = _usePropsWithContext.href,
|
|
56
|
+
props = _objectWithoutProperties(_usePropsWithContext, _excluded);
|
|
70
57
|
|
|
71
58
|
var skeletonClasses = createSkeletonClass('font', skeleton, context);
|
|
72
59
|
var spacingClasses = createSpacingClasses(props);
|
|
@@ -108,7 +95,7 @@ function Breadcrumb(localProps) {
|
|
|
108
95
|
};
|
|
109
96
|
|
|
110
97
|
return React.createElement("nav", _extends({
|
|
111
|
-
"aria-label": navText,
|
|
98
|
+
"aria-label": convertJsxToString(navText),
|
|
112
99
|
className: classnames('dnb-breadcrumb', skeletonClasses, spacingClasses, className, spacing && 'dnb-breadcrumb--spacing'),
|
|
113
100
|
"data-testid": "breadcrumb-nav"
|
|
114
101
|
}, props), React.createElement(Section, {
|
|
@@ -135,7 +122,7 @@ function Breadcrumb(localProps) {
|
|
|
135
122
|
className: "dnb-breadcrumb__collapse",
|
|
136
123
|
"data-testid": "breadcrumb-collapse"
|
|
137
124
|
}, React.createElement(MultipleCrumbs, null)));
|
|
138
|
-
}
|
|
125
|
+
};
|
|
139
126
|
|
|
140
127
|
Breadcrumb.Item = BreadcrumbItem;
|
|
141
128
|
export { BreadcrumbItem };
|
|
@@ -10,13 +10,13 @@ import Button from '../button/Button'
|
|
|
10
10
|
// Shared
|
|
11
11
|
import { useMediaQuery } from '../../shared'
|
|
12
12
|
import Context from '../../shared/Context'
|
|
13
|
-
import { ISpacingProps
|
|
14
|
-
import {
|
|
13
|
+
import { ISpacingProps } from '../../shared/interfaces'
|
|
14
|
+
import { SkeletonShow } from '../skeleton/Skeleton'
|
|
15
|
+
import { usePropsWithContext } from '../../shared/hooks'
|
|
15
16
|
|
|
16
17
|
// Internal
|
|
17
18
|
import BreadcrumbItem, { BreadcrumbItemProps } from './BreadcrumbItem'
|
|
18
|
-
|
|
19
|
-
export * from './BreadcrumbItem'
|
|
19
|
+
import { convertJsxToString } from '../../shared/component-helper'
|
|
20
20
|
|
|
21
21
|
export interface BreadcrumbProps {
|
|
22
22
|
/**
|
|
@@ -29,7 +29,7 @@ export interface BreadcrumbProps {
|
|
|
29
29
|
* Skeleton should be applied when loading content
|
|
30
30
|
* Default: null
|
|
31
31
|
*/
|
|
32
|
-
skeleton?:
|
|
32
|
+
skeleton?: SkeletonShow
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Pass in a list of your pages as objects of breadcrumbitem to render them as breadcrumbitems.
|
|
@@ -89,7 +89,7 @@ export interface BreadcrumbProps {
|
|
|
89
89
|
* If variant='collapse', you can override isCollapsed for the collapsed content by updating this value.
|
|
90
90
|
* Default: null
|
|
91
91
|
*/
|
|
92
|
-
isCollapsed?: boolean
|
|
92
|
+
isCollapsed?: boolean
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
95
|
* Use one of the Section component style types (style_type)
|
|
@@ -128,7 +128,7 @@ export const defaultProps = {
|
|
|
128
128
|
spacing: false,
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
const Breadcrumb = (localProps: BreadcrumbProps & ISpacingProps) => {
|
|
132
132
|
// Every component should have a context
|
|
133
133
|
const context = React.useContext(Context)
|
|
134
134
|
// Extract additional props from global context
|
|
@@ -149,8 +149,8 @@ function Breadcrumb(localProps: BreadcrumbProps & ISpacingProps) {
|
|
|
149
149
|
data,
|
|
150
150
|
href,
|
|
151
151
|
...props
|
|
152
|
-
} =
|
|
153
|
-
|
|
152
|
+
} = usePropsWithContext(
|
|
153
|
+
localProps,
|
|
154
154
|
defaultProps,
|
|
155
155
|
context?.translation?.Breadcrumb,
|
|
156
156
|
context?.Breadcrumb
|
|
@@ -197,7 +197,7 @@ function Breadcrumb(localProps: BreadcrumbProps & ISpacingProps) {
|
|
|
197
197
|
|
|
198
198
|
return (
|
|
199
199
|
<nav
|
|
200
|
-
aria-label={navText}
|
|
200
|
+
aria-label={convertJsxToString(navText)}
|
|
201
201
|
className={classnames(
|
|
202
202
|
'dnb-breadcrumb',
|
|
203
203
|
skeletonClasses,
|
|
@@ -1,26 +1,13 @@
|
|
|
1
|
-
import "core-js/modules/es.object.keys.js";
|
|
2
|
-
import "core-js/modules/es.symbol.js";
|
|
3
|
-
import "core-js/modules/es.array.filter.js";
|
|
4
|
-
import "core-js/modules/es.object.to-string.js";
|
|
5
|
-
import "core-js/modules/es.object.get-own-property-descriptor.js";
|
|
6
|
-
import "core-js/modules/web.dom-collections.for-each.js";
|
|
7
|
-
import "core-js/modules/es.object.get-own-property-descriptors.js";
|
|
8
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
9
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
10
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
11
3
|
var _excluded = ["text", "href", "icon", "onClick", "variant", "skeleton"];
|
|
12
|
-
|
|
13
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
14
|
-
|
|
15
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
16
|
-
|
|
17
4
|
import React from 'react';
|
|
18
5
|
import Button from '../button/Button';
|
|
19
6
|
import IconPrimary from '../icon-primary/IconPrimary';
|
|
20
7
|
import P from '../../elements/P';
|
|
21
8
|
import homeIcon from '../../icons/home';
|
|
22
9
|
import Context from '../../shared/Context';
|
|
23
|
-
import {
|
|
10
|
+
import { usePropsWithContext } from '../../shared/hooks';
|
|
24
11
|
var defaultProps = {
|
|
25
12
|
text: null,
|
|
26
13
|
href: null,
|
|
@@ -29,18 +16,19 @@ var defaultProps = {
|
|
|
29
16
|
variant: null,
|
|
30
17
|
skeleton: null
|
|
31
18
|
};
|
|
32
|
-
|
|
19
|
+
|
|
20
|
+
var BreadcrumbItem = function BreadcrumbItem(localProps) {
|
|
33
21
|
var context = React.useContext(Context);
|
|
34
22
|
var homeText = context.translation.Breadcrumb.homeText;
|
|
35
23
|
|
|
36
|
-
var
|
|
37
|
-
text =
|
|
38
|
-
href =
|
|
39
|
-
icon =
|
|
40
|
-
onClick =
|
|
41
|
-
variant =
|
|
42
|
-
skeleton =
|
|
43
|
-
props = _objectWithoutProperties(
|
|
24
|
+
var _usePropsWithContext = usePropsWithContext(localProps, defaultProps, context === null || context === void 0 ? void 0 : context.BreadcrumbItem),
|
|
25
|
+
text = _usePropsWithContext.text,
|
|
26
|
+
href = _usePropsWithContext.href,
|
|
27
|
+
icon = _usePropsWithContext.icon,
|
|
28
|
+
onClick = _usePropsWithContext.onClick,
|
|
29
|
+
variant = _usePropsWithContext.variant,
|
|
30
|
+
skeleton = _usePropsWithContext.skeleton,
|
|
31
|
+
props = _objectWithoutProperties(_usePropsWithContext, _excluded);
|
|
44
32
|
|
|
45
33
|
var currentIcon = icon || variant === 'home' && homeIcon || 'chevron_left';
|
|
46
34
|
var currentText = text || variant === 'home' && homeText || '';
|
|
@@ -54,7 +42,6 @@ export default function BreadcrumbItem(localProps) {
|
|
|
54
42
|
href: href,
|
|
55
43
|
icon: currentIcon,
|
|
56
44
|
icon_position: "left",
|
|
57
|
-
icon_: currentIcon,
|
|
58
45
|
on_click: onClick,
|
|
59
46
|
text: currentText,
|
|
60
47
|
skeleton: skeleton
|
|
@@ -67,4 +54,6 @@ export default function BreadcrumbItem(localProps) {
|
|
|
67
54
|
left: "0",
|
|
68
55
|
"data-testid": "breadcrumb-item-text"
|
|
69
56
|
}, currentText)));
|
|
70
|
-
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default BreadcrumbItem;
|
|
@@ -12,8 +12,8 @@ import homeIcon from '../../icons/home'
|
|
|
12
12
|
|
|
13
13
|
// Shared
|
|
14
14
|
import Context from '../../shared/Context'
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
15
|
+
import { SkeletonShow } from '../skeleton/Skeleton'
|
|
16
|
+
import { usePropsWithContext } from '../../shared/hooks'
|
|
17
17
|
|
|
18
18
|
export interface BreadcrumbItemProps {
|
|
19
19
|
/**
|
|
@@ -50,7 +50,7 @@ export interface BreadcrumbItemProps {
|
|
|
50
50
|
* Skeleton should be applied when loading content
|
|
51
51
|
* Default: null
|
|
52
52
|
*/
|
|
53
|
-
skeleton?:
|
|
53
|
+
skeleton?: SkeletonShow
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
const defaultProps = {
|
|
@@ -62,7 +62,7 @@ const defaultProps = {
|
|
|
62
62
|
skeleton: null,
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
const BreadcrumbItem = (localProps: BreadcrumbItemProps) => {
|
|
66
66
|
// Every component should have a context
|
|
67
67
|
const context = React.useContext(Context)
|
|
68
68
|
const {
|
|
@@ -73,13 +73,9 @@ export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
|
|
|
73
73
|
|
|
74
74
|
// Extract additional props from global context
|
|
75
75
|
const { text, href, icon, onClick, variant, skeleton, ...props } =
|
|
76
|
-
|
|
77
|
-
{ ...defaultProps, ...localProps },
|
|
78
|
-
defaultProps,
|
|
79
|
-
context?.BreadcrumbItem
|
|
80
|
-
)
|
|
76
|
+
usePropsWithContext(localProps, defaultProps, context?.BreadcrumbItem)
|
|
81
77
|
|
|
82
|
-
const currentIcon =
|
|
78
|
+
const currentIcon: IconPrimaryIcon =
|
|
83
79
|
icon || (variant === 'home' && homeIcon) || 'chevron_left'
|
|
84
80
|
const currentText = text || (variant === 'home' && homeText) || ''
|
|
85
81
|
const isInteractive = (href || onClick) && variant !== 'current'
|
|
@@ -96,7 +92,6 @@ export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
|
|
|
96
92
|
href={href}
|
|
97
93
|
icon={currentIcon}
|
|
98
94
|
icon_position="left"
|
|
99
|
-
icon_={currentIcon} // what does this do?
|
|
100
95
|
on_click={onClick}
|
|
101
96
|
text={currentText}
|
|
102
97
|
skeleton={skeleton}
|
|
@@ -116,3 +111,5 @@ export default function BreadcrumbItem(localProps: BreadcrumbItemProps) {
|
|
|
116
111
|
</li>
|
|
117
112
|
)
|
|
118
113
|
}
|
|
114
|
+
|
|
115
|
+
export default BreadcrumbItem
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { SkeletonShow } from '../skeleton/Skeleton';
|
|
3
|
+
import { IconPrimaryIcon } from '../icon-primary/IconPrimary';
|
|
2
4
|
export type ButtonText = string | React.ReactNode;
|
|
3
5
|
export type ButtonVariant =
|
|
4
6
|
| 'primary'
|
|
5
7
|
| 'secondary'
|
|
6
8
|
| 'tertiary'
|
|
7
|
-
| 'signal'
|
|
9
|
+
| 'signal'
|
|
10
|
+
| 'unstyled';
|
|
8
11
|
export type ButtonSize = 'default' | 'small' | 'medium' | 'large';
|
|
9
|
-
export type ButtonIcon =
|
|
10
|
-
| string
|
|
11
|
-
| React.ReactNode
|
|
12
|
-
| ((...args: any[]) => any);
|
|
12
|
+
export type ButtonIcon = IconPrimaryIcon;
|
|
13
13
|
export type ButtonIconPosition = 'left' | 'right' | 'top';
|
|
14
14
|
export type ButtonIconSize = string | number;
|
|
15
15
|
export type ButtonTooltip =
|
|
@@ -26,7 +26,7 @@ export type ButtonTo = string | any | ((...args: any[]) => any);
|
|
|
26
26
|
export type ButtonWrap = string | boolean;
|
|
27
27
|
export type ButtonBounding = string | boolean;
|
|
28
28
|
export type ButtonStretch = string | boolean;
|
|
29
|
-
export type ButtonSkeleton =
|
|
29
|
+
export type ButtonSkeleton = SkeletonShow;
|
|
30
30
|
export type ButtonDisabled = string | boolean;
|
|
31
31
|
export type ButtonChildren =
|
|
32
32
|
| string
|
|
@@ -70,7 +70,11 @@ export type ButtonOnClick = string | ((...args: any[]) => any);
|
|
|
70
70
|
/**
|
|
71
71
|
* NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
|
|
72
72
|
*/
|
|
73
|
-
export interface ButtonProps
|
|
73
|
+
export interface ButtonProps
|
|
74
|
+
extends Omit<
|
|
75
|
+
React.HTMLProps<HTMLElement>,
|
|
76
|
+
'disabled' | 'size' | 'title' | 'wrap'
|
|
77
|
+
> {
|
|
74
78
|
/**
|
|
75
79
|
* The content of the button can be a string or a React Element.
|
|
76
80
|
*/
|
|
@@ -53,7 +53,8 @@ export type IconPrimaryChildren =
|
|
|
53
53
|
/**
|
|
54
54
|
* NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
|
|
55
55
|
*/
|
|
56
|
-
export interface IconPrimaryProps
|
|
56
|
+
export interface IconPrimaryProps
|
|
57
|
+
extends Omit<React.HTMLProps<HTMLElement>, 'size'> {
|
|
57
58
|
/**
|
|
58
59
|
* A React SVG Component or the icon name (in case we use `IconPrimary` or `dnb-icon-primary`).
|
|
59
60
|
*/
|
|
@@ -26,7 +26,7 @@ import { lightbulb_medium as LightbulbIcon } from '../../icons';
|
|
|
26
26
|
import { createSpacingClasses } from '../space/SpacingHelper';
|
|
27
27
|
import { createSkeletonClass } from '../skeleton/SkeletonHelper';
|
|
28
28
|
import Context from '../../shared/Context';
|
|
29
|
-
import {
|
|
29
|
+
import { usePropsWithContext } from '../../shared/hooks';
|
|
30
30
|
export var defaultProps = {
|
|
31
31
|
alt: null,
|
|
32
32
|
centered: false,
|
|
@@ -44,28 +44,28 @@ export var defaultProps = {
|
|
|
44
44
|
acceptButtonAttributes: null
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
function InfoCard(localProps) {
|
|
47
|
+
var InfoCard = function InfoCard(localProps) {
|
|
48
48
|
var _IconPrimary;
|
|
49
49
|
|
|
50
50
|
var context = React.useContext(Context);
|
|
51
51
|
|
|
52
|
-
var
|
|
53
|
-
alt =
|
|
54
|
-
centered =
|
|
55
|
-
title =
|
|
56
|
-
skeleton =
|
|
57
|
-
className =
|
|
58
|
-
icon =
|
|
59
|
-
src =
|
|
60
|
-
imgProps =
|
|
61
|
-
text =
|
|
62
|
-
onClose =
|
|
63
|
-
onAccept =
|
|
64
|
-
closeButtonText =
|
|
65
|
-
acceptButtonText =
|
|
66
|
-
closeButtonAttributes =
|
|
67
|
-
acceptButtonAttributes =
|
|
68
|
-
props = _objectWithoutProperties(
|
|
52
|
+
var _usePropsWithContext = usePropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps)),
|
|
53
|
+
alt = _usePropsWithContext.alt,
|
|
54
|
+
centered = _usePropsWithContext.centered,
|
|
55
|
+
title = _usePropsWithContext.title,
|
|
56
|
+
skeleton = _usePropsWithContext.skeleton,
|
|
57
|
+
className = _usePropsWithContext.className,
|
|
58
|
+
icon = _usePropsWithContext.icon,
|
|
59
|
+
src = _usePropsWithContext.src,
|
|
60
|
+
imgProps = _usePropsWithContext.imgProps,
|
|
61
|
+
text = _usePropsWithContext.text,
|
|
62
|
+
onClose = _usePropsWithContext.onClose,
|
|
63
|
+
onAccept = _usePropsWithContext.onAccept,
|
|
64
|
+
closeButtonText = _usePropsWithContext.closeButtonText,
|
|
65
|
+
acceptButtonText = _usePropsWithContext.acceptButtonText,
|
|
66
|
+
closeButtonAttributes = _usePropsWithContext.closeButtonAttributes,
|
|
67
|
+
acceptButtonAttributes = _usePropsWithContext.acceptButtonAttributes,
|
|
68
|
+
props = _objectWithoutProperties(_usePropsWithContext, _excluded);
|
|
69
69
|
|
|
70
70
|
var skeletonClasses = createSkeletonClass('shape', skeleton, context);
|
|
71
71
|
var spacingClasses = createSpacingClasses(props);
|
|
@@ -98,14 +98,14 @@ function InfoCard(localProps) {
|
|
|
98
98
|
className: 'dnb-info-card--buttons' + (centered ? " dnb-info-card--buttons-centered" : "")
|
|
99
99
|
}, !acceptButtonIsHidden && React.createElement(Button, _extends({
|
|
100
100
|
type: "button",
|
|
101
|
-
"data-testid": "
|
|
101
|
+
"data-testid": "info-card-accept-button",
|
|
102
102
|
variant: "secondary",
|
|
103
103
|
right: !centered && 'small',
|
|
104
104
|
on_click: onAccept,
|
|
105
105
|
text: acceptButtonText
|
|
106
106
|
}, acceptButtonAttributes)), !closeButtonIsHidden && React.createElement(Button, _extends({
|
|
107
107
|
type: "button",
|
|
108
|
-
"data-testid": "
|
|
108
|
+
"data-testid": "info-card-close-button",
|
|
109
109
|
variant: "tertiary",
|
|
110
110
|
top: centered && 'small',
|
|
111
111
|
on_click: onClose,
|
|
@@ -135,6 +135,6 @@ function InfoCard(localProps) {
|
|
|
135
135
|
"data-testid": "info-card-icon"
|
|
136
136
|
}));
|
|
137
137
|
}
|
|
138
|
-
}
|
|
138
|
+
};
|
|
139
139
|
|
|
140
140
|
export default InfoCard;
|
|
@@ -15,16 +15,17 @@ import { lightbulb_medium as LightbulbIcon } from '../../icons'
|
|
|
15
15
|
// Shared
|
|
16
16
|
import { createSpacingClasses } from '../space/SpacingHelper'
|
|
17
17
|
import { createSkeletonClass } from '../skeleton/SkeletonHelper'
|
|
18
|
+
import { SkeletonShow } from '../skeleton/Skeleton'
|
|
18
19
|
import Context from '../../shared/Context'
|
|
19
|
-
import { ISpacingProps
|
|
20
|
-
import {
|
|
20
|
+
import { ISpacingProps } from '../../shared/interfaces'
|
|
21
|
+
import { usePropsWithContext } from '../../shared/hooks'
|
|
21
22
|
|
|
22
23
|
export interface InfoCardProps {
|
|
23
24
|
/**
|
|
24
25
|
* Used in combination with `src` to provide an alt attribute for the `img` element.
|
|
25
26
|
* Default: null
|
|
26
27
|
*/
|
|
27
|
-
alt?:
|
|
28
|
+
alt?: React.ReactNode
|
|
28
29
|
/**
|
|
29
30
|
* Aligns the content to center, rather than left
|
|
30
31
|
* Default: false
|
|
@@ -49,7 +50,7 @@ export interface InfoCardProps {
|
|
|
49
50
|
* Skeleton should be applied when loading content
|
|
50
51
|
* Default: null
|
|
51
52
|
*/
|
|
52
|
-
skeleton?:
|
|
53
|
+
skeleton?: SkeletonShow
|
|
53
54
|
/**
|
|
54
55
|
* Specifies the path to the image
|
|
55
56
|
* Default: null
|
|
@@ -59,12 +60,12 @@ export interface InfoCardProps {
|
|
|
59
60
|
* Image src, will replace the 'icon' with the image
|
|
60
61
|
* Default: null
|
|
61
62
|
*/
|
|
62
|
-
text:
|
|
63
|
+
text: React.ReactNode
|
|
63
64
|
/**
|
|
64
65
|
* Component title
|
|
65
66
|
* Default: null
|
|
66
67
|
*/
|
|
67
|
-
title?:
|
|
68
|
+
title?: React.ReactNode
|
|
68
69
|
/**
|
|
69
70
|
* Is called when the close button is clicked
|
|
70
71
|
* Default: null
|
|
@@ -74,7 +75,7 @@ export interface InfoCardProps {
|
|
|
74
75
|
* The text of the close button.
|
|
75
76
|
* Default: null
|
|
76
77
|
*/
|
|
77
|
-
closeButtonText?:
|
|
78
|
+
closeButtonText?: React.ReactNode
|
|
78
79
|
/**
|
|
79
80
|
* Is called when the accept button is clicked
|
|
80
81
|
* Default: null
|
|
@@ -84,7 +85,7 @@ export interface InfoCardProps {
|
|
|
84
85
|
* The text of the accept button.
|
|
85
86
|
* Default: null
|
|
86
87
|
*/
|
|
87
|
-
acceptButtonText?:
|
|
88
|
+
acceptButtonText?: React.ReactNode
|
|
88
89
|
/**
|
|
89
90
|
* Additional attributes for the close button.
|
|
90
91
|
* Default: null
|
|
@@ -114,7 +115,7 @@ export const defaultProps = {
|
|
|
114
115
|
acceptButtonAttributes: null,
|
|
115
116
|
}
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
const InfoCard = (localProps: InfoCardProps & ISpacingProps) => {
|
|
118
119
|
// Every component should have a context
|
|
119
120
|
const context = React.useContext(Context)
|
|
120
121
|
// Extract additional props from global context
|
|
@@ -135,7 +136,7 @@ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
|
|
|
135
136
|
closeButtonAttributes,
|
|
136
137
|
acceptButtonAttributes,
|
|
137
138
|
...props
|
|
138
|
-
} =
|
|
139
|
+
} = usePropsWithContext({
|
|
139
140
|
...defaultProps,
|
|
140
141
|
...localProps,
|
|
141
142
|
})
|
|
@@ -199,7 +200,7 @@ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
|
|
|
199
200
|
{!acceptButtonIsHidden && (
|
|
200
201
|
<Button
|
|
201
202
|
type="button"
|
|
202
|
-
data-testid="
|
|
203
|
+
data-testid="info-card-accept-button"
|
|
203
204
|
variant="secondary"
|
|
204
205
|
right={!centered && 'small'}
|
|
205
206
|
on_click={onAccept}
|
|
@@ -210,7 +211,7 @@ function InfoCard(localProps: InfoCardProps & ISpacingProps) {
|
|
|
210
211
|
{!closeButtonIsHidden && (
|
|
211
212
|
<Button
|
|
212
213
|
type="button"
|
|
213
|
-
data-testid="
|
|
214
|
+
data-testid="info-card-close-button"
|
|
214
215
|
variant="tertiary"
|
|
215
216
|
top={centered && 'small'}
|
|
216
217
|
on_click={onClose}
|
|
@@ -25,7 +25,7 @@ import ModalHeader from './components/ModalHeader'
|
|
|
25
25
|
import ModalHeaderBar from './components/ModalHeaderBar'
|
|
26
26
|
import CloseButton from './components/CloseButton'
|
|
27
27
|
import ModalRoot from './ModalRoot'
|
|
28
|
-
import { ISpacingProps } from '
|
|
28
|
+
import { ISpacingProps } from '../../shared/interfaces'
|
|
29
29
|
|
|
30
30
|
export const ANIMATION_DURATION = 300
|
|
31
31
|
|